Brawlbox Resources & History

Started by BlackJax96, December 14, 2010, 03:39:11 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

hey...
I just had a thought...

has anyone tried patching a GCN game with Riivo??

also...
if the main.dol can be patched,
then could you also basically replace the game??

for example...
I lost one of my fav games "TimeSplitters Future Perfect",
but I ripped the game before I lost it...

now if this goes as I think it would then I'd have to patch all of Brawl's files with dummy data,
and add TS3's files to the SD
(thus replacing main.dol)

anyone think that'll work??

[spoiler]Quote: Friedslick6
you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
But the coolest part was that you didn't stop working on it despite that.

Quote: Internet Explorer
you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

quote: Greg
You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

@ the File change thing: If you don't have a custom menu (even music), I would just goto the main menu, eject the sd card, change what I want, then go back to char select and do my test.
Kit's Youtube of Combos and Randomness
Also featuring a Deviantart page full of random images I make
Official FaceBook Page to get a hold of me, catch up with what I'm doing, or just like me!



Quote from: Tcll on January 06, 2012, 12:45:26 AM
hey...
I just had a thought...

has anyone tried patching a GCN game with Riivo??
The SD slot doesn't work in GCN mode.

Quote from: SuperrSonic on January 06, 2012, 01:19:49 AM
The SD slot doesn't work in GCN mode.
hmm... I see...
so I guess I'd have to go with my 2nd idea and use Brawl to patch Melee >_>

[spoiler]Quote: Friedslick6
you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
But the coolest part was that you didn't stop working on it despite that.

Quote: Internet Explorer
you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

quote: Greg
You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

Quote from: Nymph on January 05, 2012, 08:12:46 PM
just stopping by to say that i have figured out the SRT0 heading.. quote from my last post on last page:

it's been known for a while. >.>
    unsafe struct SRT0
    {
        public const uint Tag = 0x30545253;
        public const int Size = 0x28;

        public BRESCommonHeader _header;
        public bint _dataOffset;
        public bint _stringOffset;
        public bint _unk1;
        public bshort _numFrames;
        public bshort _numEntries;
        public bint _unk2;
        public bint _loop;

I told you, I just didn't change the actual display yet. I'm still working on parsing the data correctly.

Quote from: Tcll on January 06, 2012, 12:45:26 AM
hey...
I just had a thought...

has anyone tried patching a GCN game with Riivo??

also...
if the main.dol can be patched,
then could you also basically replace the game??

for example...
I lost one of my fav games "TimeSplitters Future Perfect",
but I ripped the game before I lost it...

now if this goes as I think it would then I'd have to patch all of Brawl's files with dummy data,
and add TS3's files to the SD
(thus replacing main.dol)

anyone think that'll work??

I highly doubt that would work at all.

Quote from: Xiggah on January 05, 2012, 06:40:44 AM
Hexidecimal parsing, eh.... I need to learn that. It always seemed too overwhelming for me to pick up on my own :>.>palm: But an undo button can be done easy enough, the key is to make sure it doesn't lag or screw up.

Reading hexadecimal files is easy. XD
How you interpret the values you read is the hard part. (Whether it's an offset, data size, or count and what it's referencing, or actual data and how to get to it)

Here's an explanation, or at least how I do it.
Sorry but you are not allowed to view spoiler contents.


I can tell that this is a 4x3 matrix of float values because there's 3F 80 00 00 (1 in float) for scale values in a 4x3 matrix.

The questions that I ask myself though, are how do I get to this matrix and what does it do?

Basically you want to follow offsets first to get a general map of the file. Then you start to parse the file based on your notes and refine it based on the errors it throws (if there are any). After you've fully parsed the file and have a bunch of unknown values, that's when you start to edit those unk values and see what happens.

When you first start to parse an unknown file, read the bytes in groups of 4. (00 00 00 00) This is the maximum size of a value, unless there happens to be a 64bit long value in the file (which there usually isn't...)

Float values are generally easy to spot because they *usually* start with 3 or 4 in the first half of a byte on the first byte of four, like this:
Sorry but you are not allowed to view spoiler contents.


int values are easy to spot too, because they usually look something like this: 00 00 01 25. They start out with 0s and end with actual values, which is pretty much the opposite of what float values look like.

Whether to read as byte/short or signed/unsigned instead is where it gets a bit tricky.

Generally if you see something like this: 03 00 01 25
Then you probably have a
byte (03),
byte (00), and
short (01 25) value.

Then again, the short could be two seperate byte values.

I work out whether they're signed or unsigned once I've parsed the file.
Data sizes should never be negative, but offsets can be negative sometimes (like the MLD0/BRRES offsets)

The first step to parsing an unknown file type would be to find the first major differences between different files of the same file type.


That would be awesome if you could work out the bugs with the undo/redo buttons. There's probably a better way than using a modulated list of save objects, but I dunno. XD

hey...
can someone post the text of the brawl XML template, with a patched file (any file) plz :)

I just want to delve right into riivo and learn it at my own pace...

but I can't do that if I can't see what the templates look like :srs:
SCREW YOU OPERA! >:O

[spoiler]Quote: Friedslick6
you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
But the coolest part was that you didn't stop working on it despite that.

Quote: Internet Explorer
you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

quote: Greg
You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.

Tell me more about exploring specific unknown files please. I wanna look up an animation format and a model format sometime.

Quote from: ds22 on January 05, 2012, 04:00:21 PMIn order to change Jiggz result name, open up main.dol in a hex editor and search for 'Jigglypuff', which should take you to a section with most of the result names (be aware that the size of the name has to stay the same size, so Jigglypuff, being 10 characters, being replaced with a 10 character name or less with spaces to fill the remaining spots). And I think G&W's Z-axis is 0 due to the fact that sometimes, when you throw his and he faces the screen with his mouth open, you will be able to look through him through that part. And like Tcll mentioned, his Z-axis is forced to be 2D through the stages Z-axis rather then his own Z-axis (as that would have him flip like when Mario would turn around in Paper Mario).

i did it.

How would we write this to be patched for riivolution considering its on the root of brawl files and not in a folder? :(
I DONT TAKE REQUESTS.


Here's my current riivo xml patch:

<patch id="customone">
      <memory valuefile="/brawlmods/custom1/RSBE01.gct" offset="0x00570000" />
      <file external="/brawlmods/custom1/main.dol" disc="main.dol" />
      <folder external="/brawlmods/custom1/fighter" disc="/fighter/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/stage" disc="/stage/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/info" disc="/info/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/info2" disc="/info2/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/menu" disc="/menu/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/menu2" disc="/menu2/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/module" disc="/module/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/item" disc="/item/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/minigame" disc="/minigame/" recursive="true" resize="true" />
      <folder external="/brawlmods/custom1/toy" disc="/toy/" recursive="true" resize="true" />
      <file external="/brawlmods/custom1/system/common3.pac" disc="/system/common3_en.pac" />
      <file external="/brawlmods/custom1/system/common4.pac" disc="/system/common4_en.pac" />
      <file external="/brawlmods/custom1/system/common5.pac" disc="/system/common5_en.pac" />
   </patch>

Quote from: Eternal Yoshi on January 06, 2012, 01:47:09 AM
Tell me more about exploring specific unknown files please. I wanna look up an animation format and a model format sometime.

What more do you want to know?

Quote from: BlackJax96 on January 06, 2012, 01:52:49 AMHere's my current riivo xml patch: <patch id="customone"> <memory valuefile="/brawlmods/custom1/RSBE01.gct" offset="0x00570000" /> <file external="/brawlmods/custom1/main.dol" disc="main.dol" /> <folder external="/brawlmods/custom1/fighter" disc="/fighter/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/stage" disc="/stage/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/info" disc="/info/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/info2" disc="/info2/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/menu" disc="/menu/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/menu2" disc="/menu2/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/module" disc="/module/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/item" disc="/item/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/minigame" disc="/minigame/" recursive="true" resize="true" /> <folder external="/brawlmods/custom1/toy" disc="/toy/" recursive="true" resize="true" /> <file external="/brawlmods/custom1/system/common3.pac" disc="/system/common3_en.pac" /> <file external="/brawlmods/custom1/system/common4.pac" disc="/system/common4_en.pac" /> <file external="/brawlmods/custom1/system/common5.pac" disc="/system/common5_en.pac" /> </patch> What more do you want to know?

heh, easier than i though. Thanks BlackJax.
I DONT TAKE REQUESTS.


didn't know short was the name for 2 bytes D: that's something :3

question time!

how can you see if something is linked to an offset? example to a string offset or do you have to knew how the format/type of file is build from the start? :srs:

will you fuse rel editing into brawlbox? :3

if you died and return into this world as a other object, what would it be? :srs:
Stupid Tinypic :C

SRT0 parsing party :D

Quote from: BlackJax96 on January 06, 2012, 01:30:51 AM
Long-But-Useful-Advice

That would be awesome if you could work out the bugs with the undo/redo buttons. There's probably a better way than using a modulated list of save objects, but I dunno. XD

Thanks for the advice. I can read hex very well and I need to practice file parsing, perhaps parsing files that are already defined can serve as a guide for me to learn.
As for undoing, the first important thing is to determine what should be undoable and what shouldn't be: Asides from single Translation/Rotation/Scale changes, there's also insert/delete frames and whole transformation changes. And how far the undo button should go, once, three times, ten times... details like these. Any suggestions, dear valued users of Brawlbox?

Quote from: pikazz on January 06, 2012, 02:03:08 AM
didn't know short was the name for 2 bytes D: that's something :3

question time!

how can you see if something is linked to an offset? example to a string offset or do you have to knew how the format/type of file is build from the start? :srs:

will you fuse rel editing into brawlbox? :3

if you died and return into this world as a other object, what would it be? :srs:

You have to try going to the offset using different logical guesses for what its base is (The offset you add the offset to) and see what's there.
And I have no idea. :srs:

Hey BJ, I have spliced up Krystal's legs into two separate polygons.(Or rather, the entire thigh/lower hip and her legs cut from the torso and cut in half down the middle) And they're fully rigged and all that jazz.

I was thinking of doing the step where you fix the materials since they're individual polygons. You know, fix the materials as I complete the rigging of the different polygons so I don't have to do it all at once. Is this a bad or good idea?

Quote from: pikazz on January 06, 2012, 02:03:08 AM
didn't know short was the name for 2 bytes D: that's something :3

question time!

how can you see if something is linked to an offset? example to a string offset or do you have to knew how the format/type of file is build from the start? :srs:

will you fuse rel editing into brawlbox? :3

if you died and return into this world as a other object, what would it be? :srs:
this is how I do it:
8bit - BYTE - '00'
16bit - SHORT - '00 00'
24bit - _NO-DEF - '00 00 00'
32bit - LONG - '00 00 00 00'
64bit - DOUBLE - '00 00 00 00 00 00 00 00'

these are used in Python's struct module as:
'B'
'H'
NO-DEF
'L'
'D'

there's a ton of others...
I'd have to look at them again >_>

Quote from: BlackJax96 on January 06, 2012, 01:52:49 AM
Here&#039;s my current riivo xml patch:

&lt;patch id=&quot;customone&quot;&gt;
      &lt;memory valuefile=&quot;/brawlmods/custom1/RSBE01.gct&quot; offset=&quot;0x00570000&quot; /&gt;
      &lt;file external=&quot;/brawlmods/custom1/main.dol&quot; disc=&quot;main.dol&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/fighter&quot; disc=&quot;/fighter/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/stage&quot; disc=&quot;/stage/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/info&quot; disc=&quot;/info/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/info2&quot; disc=&quot;/info2/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/menu&quot; disc=&quot;/menu/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/menu2&quot; disc=&quot;/menu2/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/module&quot; disc=&quot;/module/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/item&quot; disc=&quot;/item/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/minigame&quot; disc=&quot;/minigame/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;folder external=&quot;/brawlmods/custom1/toy&quot; disc=&quot;/toy/&quot; recursive=&quot;true&quot; resize=&quot;true&quot; /&gt;
      &lt;file external=&quot;/brawlmods/custom1/system/common3.pac&quot; disc=&quot;/system/common3_en.pac&quot; /&gt;
      &lt;file external=&quot;/brawlmods/custom1/system/common4.pac&quot; disc=&quot;/system/common4_en.pac&quot; /&gt;
      &lt;file external=&quot;/brawlmods/custom1/system/common5.pac&quot; disc=&quot;/system/common5_en.pac&quot; /&gt;
   &lt;/patch&gt;

What more do you want to know?
thanx BJ :)

so how exactly is this set up??
'SD:/riivolution/config' is all I have so far :/

[spoiler]Quote: Friedslick6
you have been through a lot of hassle. I've watched every topic you posted on this, and most of them seemed to disintegrate gradually.
But the coolest part was that you didn't stop working on it despite that.

Quote: Internet Explorer
you're doing more with your life right now than probably most other people around you. You're a valuable asset to the Smash community. So yeah, you should be proud.

quote: Greg
You do have a gift which I've seen many developers use to their advantage. You can become a great coder, and with all of those ideas I think you can really build something great.