|
|
 |
« Reply #4335 on: September 27, 2011, 11:47:24 AM » |
|
As for me, there's one last hope for my homebrew model, as I've sent it to Pikazz so he could try rigging Snake's bones to the model and make it work in BrawlBox, as I always get that stupid error message when I try uploading it in BB. My 3ds Max doesn't even import Brawl Models but crashes the whole laptop instead, and I never found any SSBB models with their bones still attached on them, so...
I only have Pika on my forum...
the only thing he doesn't have is accurate materials... but everything else is perfect...
it's a blend file though as I've included the textures in it... (didn't want to go through the work of creating a zip, and dragging everything to it...) ^I R lazy, yes I R  /stupid comment
EDIT: added comment deleted by crappy forum host and forgotton. *angerface*
|
|
|
|
« Last Edit: September 27, 2011, 11:58:13 AM by Tcll »
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4336 on: September 27, 2011, 01:08:37 PM » |
|
All one MDL0.  I can even post it here if anyone wants it. I even removed the crown from the MDL0 completely. Why you ask? Because I can  Scratch that. Apparently it needs more work. Now we can give characters swords and tails! How come Pikazz' Sandbag was able to get a Mario Hat without replacing anything?
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4337 on: September 27, 2011, 01:10:24 PM » |
|
Now we can give characters swords and tails! How come Pikazz' Sandbag was able to get a Mario Hat without replacing anything?
He didn't replace the crown. He deleted it and then added the hat. So, for the Sandbag, that hat was added.
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4338 on: September 27, 2011, 01:20:47 PM » |
|
Ok, that sounds great then. 
|
|
|
|
|
Logged
|
|
|
|
|
|
|
|
|
 |
« Reply #4340 on: September 27, 2011, 02:33:04 PM » |
|
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4341 on: September 27, 2011, 02:39:50 PM » |
|
*sigh* you know... if people would answer my Q's when I ask them... I'd have both formats figured out already >:O /rage
You're asking us? We're not studying the model format 
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4342 on: September 27, 2011, 04:01:26 PM » |
|
I was wondering if the new BrawlBox will be soon released to the public here. I'm so exited about having brand new characters in Brawl! Though I can't seem to make my homebrew model compatible with the current BrawlBox...
|
|
|
|
« Last Edit: September 27, 2011, 04:04:53 PM by TokoyamiTheDark »
|
Logged
|
I lost EVERYTHING from my DropBox storage due to the server crashing, so I no longer have my hacks on the Vault... Sorry! 
|
|
|
|
|
|
 |
« Reply #4343 on: September 27, 2011, 04:08:07 PM » |
|
lol honestly TCLL... i dont think any1 here knows except for BJ, RTB, and maybe pikazz
yeh... maybe Pikazz
but you never know >_> Justin712 came out of nowhere... O.o
You're asking us? We're not studying the model format  mmhmm... now read the rest of it
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4344 on: September 27, 2011, 04:52:34 PM » |
|
hey BJ 
does that mean you entirely understand the relocation table??
oh btw... I'm going to the library again to fix my linux system... can you post a DL to the SDK >_> (I think I UL'd it to MFFH..., meaning it doesn't exist now)
public unsafe struct ResourceEntry { public const uint Size = 0x10;
public bushort _id; public bshort _pad; public bushort _leftIndex; public bushort _rightIndex; public bint _stringOffset; public bint _dataOffset;
public int CharIndex { get { return _id >> 3; } set { _id = (ushort)((value << 3) | (_id & 0x7)); } } public int CharShift { get { return _id & 0x7; } set { _id = (ushort)((value & 0x7) | (_id & 0xFFF8)); } }
public ResourceEntry(int id, int left, int right) : this(id, left, right, 0, 0) { }
public ResourceEntry(int id, int left, int right, int dataOffset) : this(id, left, right, dataOffset, 0){ }
public ResourceEntry(int id, int left, int right, int dataOffset, int stringOffset) { _id = (ushort)id; _pad = 0; _leftIndex = (ushort)left; _rightIndex = (ushort)right; _stringOffset = stringOffset; _dataOffset = dataOffset; }
private ResourceEntry* Address { get { fixed (ResourceEntry* ptr = &this)return ptr; } }
public VoidPtr DataAddress { get { return (VoidPtr)Parent + _dataOffset; } } public VoidPtr StringAddress { get { return (VoidPtr)Parent + _stringOffset; } set { _stringOffset = (int)value - (int)Parent; } }
public string GetName() { return new String((sbyte*)StringAddress); }
public static void Build(ResourceGroup* group, int index, VoidPtr dataAddress, BRESString* pString) { ResourceEntry* list = &group->_first; ResourceEntry* entry = &list[index]; ResourceEntry* prev = &list[0]; ResourceEntry* current = &list[prev->_leftIndex]; ushort currentIndex = prev->_leftIndex; bool isRight = false;
int strLen = pString->_length; byte* pChar = (byte*)pString + 4, sChar;
int eIndex = strLen - 1, eBits = pChar[eIndex].CompareBits(0), val; *entry = new ResourceEntry((eIndex << 3) | eBits, index, index, (int)dataAddress - (int)group, (int)pChar - (int)group);
//Continue while the previous id is greater than the current. Loop backs will stop the processing. //Continue while the entry id is less than or equal the current id. Being higher than the current id means we've found a place to insert. while ((entry->_id <= current->_id) && (prev->_id > current->_id)) { if (entry->_id == current->_id) { sChar = (byte*)group + current->_stringOffset;
//Rebuild new id relative to current entry for (eIndex = strLen; (eIndex-- > 0) && (pChar[eIndex] == sChar[eIndex]); ) ; eBits = pChar[eIndex].CompareBits(sChar[eIndex]);
entry->_id = (ushort)((eIndex << 3) | eBits);
if (((sChar[eIndex] >> eBits) & 1) != 0) { entry->_leftIndex = (ushort)index; entry->_rightIndex = currentIndex; } else { entry->_leftIndex = currentIndex; entry->_rightIndex = (ushort)index; } }
//Is entry to the right or left of current? isRight = ((val = current->_id >> 3) < strLen) && (((pChar[val] >> (current->_id & 7)) & 1) != 0);
prev = current; current = &list[currentIndex = (isRight) ? current->_rightIndex : current->_leftIndex]; }
sChar = (current->_stringOffset == 0) ? null : (byte*)group + current->_stringOffset; val = sChar == null ? 0 : (int)(*(bint*)(sChar - 4));
if ((val == strLen) && (((sChar[eIndex] >> eBits) & 1) != 0)) entry->_rightIndex = currentIndex; else entry->_leftIndex = currentIndex;
if (isRight) prev->_rightIndex = (ushort)index; else prev->_leftIndex = (ushort)index; }
public ResourceGroup* Parent { get { ResourceEntry* entry = Address; while (entry->_id != 0xFFFF) entry--; return (ResourceGroup*)((uint)entry - 8); } } } Btw for the SDK, just Google "Wii sdk 3.2 patch 3 lakitu" and look for the one that links to 3 DL sites. All of the torrents don't work... It doesn't have much more info on the MDL0 than 2.1 does, though. :/
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4345 on: September 27, 2011, 05:33:00 PM » |
|
public unsafe struct ResourceEntry { public const uint Size = 0x10;
public bushort _id; public bshort _pad; public bushort _leftIndex; public bushort _rightIndex; public bint _stringOffset; public bint _dataOffset;
public int CharIndex { get { return _id >> 3; } set { _id = (ushort)((value << 3) | (_id & 0x7)); } } public int CharShift { get { return _id & 0x7; } set { _id = (ushort)((value & 0x7) | (_id & 0xFFF8)); } }
public ResourceEntry(int id, int left, int right) : this(id, left, right, 0, 0) { }
public ResourceEntry(int id, int left, int right, int dataOffset) : this(id, left, right, dataOffset, 0){ }
public ResourceEntry(int id, int left, int right, int dataOffset, int stringOffset) { _id = (ushort)id; _pad = 0; _leftIndex = (ushort)left; _rightIndex = (ushort)right; _stringOffset = stringOffset; _dataOffset = dataOffset; }
private ResourceEntry* Address { get { fixed (ResourceEntry* ptr = &this)return ptr; } }
public VoidPtr DataAddress { get { return (VoidPtr)Parent + _dataOffset; } } public VoidPtr StringAddress { get { return (VoidPtr)Parent + _stringOffset; } set { _stringOffset = (int)value - (int)Parent; } }
public string GetName() { return new String((sbyte*)StringAddress); }
public static void Build(ResourceGroup* group, int index, VoidPtr dataAddress, BRESString* pString) { ResourceEntry* list = &group->_first; ResourceEntry* entry = &list[index]; ResourceEntry* prev = &list[0]; ResourceEntry* current = &list[prev->_leftIndex]; ushort currentIndex = prev->_leftIndex; bool isRight = false;
int strLen = pString->_length; byte* pChar = (byte*)pString + 4, sChar;
int eIndex = strLen - 1, eBits = pChar[eIndex].CompareBits(0), val; *entry = new ResourceEntry((eIndex << 3) | eBits, index, index, (int)dataAddress - (int)group, (int)pChar - (int)group);
//Continue while the previous id is greater than the current. Loop backs will stop the processing. //Continue while the entry id is less than or equal the current id. Being higher than the current id means we've found a place to insert. while ((entry->_id <= current->_id) && (prev->_id > current->_id)) { if (entry->_id == current->_id) { sChar = (byte*)group + current->_stringOffset;
//Rebuild new id relative to current entry for (eIndex = strLen; (eIndex-- > 0) && (pChar[eIndex] == sChar[eIndex]); ) ; eBits = pChar[eIndex].CompareBits(sChar[eIndex]);
entry->_id = (ushort)((eIndex << 3) | eBits);
if (((sChar[eIndex] >> eBits) & 1) != 0) { entry->_leftIndex = (ushort)index; entry->_rightIndex = currentIndex; } else { entry->_leftIndex = currentIndex; entry->_rightIndex = (ushort)index; } }
//Is entry to the right or left of current? isRight = ((val = current->_id >> 3) < strLen) && (((pChar[val] >> (current->_id & 7)) & 1) != 0);
prev = current; current = &list[currentIndex = (isRight) ? current->_rightIndex : current->_leftIndex]; }
sChar = (current->_stringOffset == 0) ? null : (byte*)group + current->_stringOffset; val = sChar == null ? 0 : (int)(*(bint*)(sChar - 4));
if ((val == strLen) && (((sChar[eIndex] >> eBits) & 1) != 0)) entry->_rightIndex = currentIndex; else entry->_leftIndex = currentIndex;
if (isRight) prev->_rightIndex = (ushort)index; else prev->_leftIndex = (ushort)index; }
public ResourceGroup* Parent { get { ResourceEntry* entry = Address; while (entry->_id != 0xFFFF) entry--; return (ResourceGroup*)((uint)entry - 8); } } } Btw for the SDK, just Google "Wii sdk 3.2 patch 3 lakitu" and look for the one that links to 3 DL sites. All of the torrents don't work... It doesn't have much more info on the MDL0 than 2.1 does, though. :/ that's alot of help  I already know that...
so what do the first 4 values do so I can write my own MDL0 files??
btw, the 2nd value's not a pad as I've seen it's value as 1 in a japanese MDL0 (not sure what game it's from as it was given to me by I think roo)
as for the SDK... I don't have that kind of time to search for it at a library.
besides... I asked for a link to the DL. not 'go search for it yourself'
geeze you're like my bro D:
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4346 on: September 27, 2011, 05:41:51 PM » |
|
*sigh* you know... if people would answer my Q's when I ask them... I'd have both formats figured out already >:O /rage
what is the ENTIRE format of the relocation groups?? how do the first 4 values work in the offsets??
I'm expecting someone above a normal hacker to answer this. :| no offence Pikazz 
either BJ or RTB. or some unknown person that knows their stuff >_>
hey...  can someone do me a favor and ask this Q to the MKW community. 
you can continue to add more and more, save it and brawlbox will automatic update it right :3 no offence Pikazz  ;_; *feeling dumb*
|
|
|
|
|
Logged
|
Stupid Tinypic :C
|
|
|
|
|
|
 |
« Reply #4347 on: September 27, 2011, 05:44:43 PM » |
|
I only read this thread when Pikazz posts, because 9/10 times its something epic
|
|
|
|
|
Logged
|
Quotes: Not all people have the luxury of being able to buy things whenever they want.
Some people are barely scraping by in the economy.
Modding has made you guys so spoiled.
|
|
|
|
|
|
 |
« Reply #4348 on: September 27, 2011, 05:47:37 PM » |
|
you can continue to add more and more, save it and brawlbox will automatic update it right :3 ;_; *feeling dumb*
dude... there's a reason I referenced you rather than say... roo you at least know most of the stuff you're doing 
but I don't think you know Brbx's code, let alone all of the MDL0 standards...
if you do, then suprize me >:3
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #4349 on: September 27, 2011, 05:48:19 PM » |
|
that's alot of help  I already know that...
so what do the first 4 values do so I can write my own MDL0 files??
btw, the 2nd value's not a pad as I've seen it's value as 1 in a japanese MDL0 (not sure what game it's from as it was given to me by I think roo)
as for the SDK... I don't have that kind of time to search for it at a library.
besides... I asked for a link to the DL. not 'go search for it yourself'
geeze you're like my bro D:
Read the code, it tells you exactly what to do. And trying to get me warned for posting a link to a flipping confidential wii software development kit, are you?  I only read this thread when Pikazz posts, because 9/10 times its something epic
What about me? 
|
|
|
|
|
Logged
|
|
|
|
|
|