[8/1/14] The New File Research Thread | New video series on SSE files!

Started by Sammi Husky, March 19, 2014, 01:24:13 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hello all, In the past there have been a few Threads about unknown Brawl files,  but most of them are long forgotten and died out before things could really be finished. Alot of information was discovered in those threads, but sadly there isn't one central point to keep this information, or to continue research. So, that's where this thread comes in. While most of brawl's files have been parsed and are now editable, i feel there is still potential in the files that remain mostly un-touched.One of the mostly untouched areas in Brawl modding is SSE. Some files have been partially decoded as of now, but with full knowledge over the files, we may be able to write a completely new SSE. From that, someone would be able to write a tool to edit the files. That's just one possibility of uncovering the unknown files, just think of the other files that are still unknown.

This thread is going to serve as a place for people to help with parsing Brawl files and figuring out exactly what they do. I'll post some of the information from the previous threads here as well to try and keep everything centralized. Hence why this post will borrow almost copy paste from previous threads. Thank you to all who helped uncover these files and wrote these out.



Tutorials
Sorry but you are not allowed to view spoiler contents.


Now you should have a basic animation file, 1 frame without any animation data. Right-Click and export the NEWCHR animation (CHR0) so it can be hexed. Open up the animation CHR0 in your hex editor, any hex editor will work, I'll be using Notepad++ but the results will be the same. Assuming you didn't rename the CHR0, it should look more or less like this, depending on your view settings:
Sorry but you are not allowed to view spoiler contents.


So you might be thinking "i could never read what these random numbers mean!" but let's get into that right now. Since there aren't any animations in this file, it's pretty much empty. Open the animation in Brawlbox and change the Translation X keyframe value to 1, export the CHR0 and open it in hex again.
Sorry but you are not allowed to view spoiler contents.


You can see some changes here and there, but how do we find out what they mean? Thanks to Brawlbox, we know that this animation file has a single keyframe with a value of 1. That number (keyframe value, not amount of keyframes) was translated into a 8-digit value called a Float value, which can be translated with this webpage. Tools like these are a hexer's best friend.

Using that webpage, you can see that 1.0 in hexidecimal is 3F 80 00 00. You should be able to find that number in your hex editor: if not, then It's highlighted in the previous image. Any single number, even 99999 or 3.14, will be displayed as an 8-digit float value. If you change the keyframe value in Brawlbox, then the only difference will be that float value: everything else remains the same.

Now let's do something cool with your hex editor: Click on the beginning of the float value and type 44 a7 20 00, save and open in Brawlbox. You just hexed the keyframe value from 1 to 1337. Pretty neat, right?

This is what Brawl hackers do to change simple number values that aren't editable in Brawlbox, as well as hacking computer files in general. Try using your new knowledge of float values and hexing to change numbers in other Brawl files, or add more keyframes with numbers and see where each number ends up.

In the meantime, I'll set up the next tutorial about identifying file structures.



Videos *Update
Sorry but you are not allowed to view spoiler contents.


Download links:
HXD, a commonly-used hex editor.
Notepad++, a handy program based off of Notepad with a Hex Plugin.
Hexidecimal Number Converter (website, not a download)

File Structures:

General / stage related:

   BLOC
Varies. commonly found in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   ADSJ
Adventure_Common under 'jump'
Sorry but you are not allowed to view spoiler contents.

   GDOR
In BLOC files, most often miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GNDV
Inside BLOC files
Sorry but you are not allowed to view spoiler contents.

   SCLA
Miscdata[30] in *most* stages
Sorry but you are not allowed to view spoiler contents.

   GSND
Miscdata[8] in some single room battle stages
Sorry but you are not allowed to view spoiler contents.

   BGMG
Adventure_Common labeled miscdata[4]
Sorry but you are not allowed to view spoiler contents.


Music ID list:
Sorry but you are not allowed to view spoiler contents.


   GMTA*Updated
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GMWA*NEW
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GMOT
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GMOV
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GBLK
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GFPR*NEW
Inside BLOC files, most often in miscdata[5]
Sorry but you are not allowed to view spoiler contents.

   GEFF*NEW
Inside BLOC files, most often in miscdata[8]
Sorry but you are not allowed to view spoiler contents.


Enemy Files:

   GEG1*Updated
Inside BLOC files, most often in miscdata[7]
Sorry but you are not allowed to view spoiler contents.

 
Files that need parsing:
-EPSP [enemy AI]
-GLAD [Ladders]
-GIB2 [Item Blocks]
-GMTA [Stage Hitboxes!]
-GMWA [Buttons]
-GLOK
-GFSR
-GMOT
-GFT2
-GENC
-GEPT
-GNDV
-GITM
-GASD
-GET1

Turns out GEG1 and the EPSP files are directly related and control the enemy spawns and AI behavior respectively. will update the OP with new information accordingly. Currently, i can almost 100% rebuild the files that spawn enemies. i can spawn any type of enemy from prims to spaak, as well as when and where they are spawned.

(BTW im taking this post in case i run out of room in the OP)


Luckily after looking the module for adventure stages, it seems that almost all of SSE is dictated through files. Which is good, because that means we really can have complete control. Incidentally, if you look through the module's objects section (section[5]) you'll find a list of all SSE files. I actually have a hunch that ADPM files dictate what mode the stage is. (e.g boss battle, melee battle) though this is just suspicions :P

Deviating from SSE files a little bit SCLA seems to control nitty gritty details about stage collisions. Such as step sound, landing sound, whether dash gfx are played, and global ground friction. And that's only one of the sections in SCLA out of 30. Though I don't think all stages use ALL the parameters, or even most. AND depending on the collision data (miscdata[2]) it seems that the data locations within the file are shifted, or maybe just use different sections....I haven't quite figured that file out yet.

Can enemies only be spawned within the SSE? Or would it be possible to spawn them outside of it by, say, a character, or on a stage? Just a thought, I know nothing of this stuff.

Wish I could help, but for now I'll be cheering here on the sidelines, hoping you find something juicy that could help with stage making. :1

I haven't experimented with the Spawning the enemies in a normal stage, that would be interesting! it's a good idea, i'll have to give it a shot sometime. I do have my suspicions that it wont work, but i'll give it a go either way.

The SCLA file isn't mapped much yet, but it in particular seems to be the juicy stuff inside normal stages. Like traction / step sound and landing sounds. Hopefully i can find some really nice stuff in there after i map it! :)

Nice work here! Always a fan of modifying the SSE. I'm with Grav here in that I really want to help, but it seems kinda out of my expertise.

Is there any way we can help out? If you can tutorialize the process of mapping into a replicable general workflow, crowdsourcing might be of use to you!

Among other things, I'm fairly sure that SSE enemies have a PSA-like component to them as well. Maybe checking the Brawlbox Source (or PSA, if the source is around) might give some leads into cracking it? I'll try looking into it, too, but I'm no professional.

In any case, good luck! Cheering for you!


the enemy data is awesome!

but using that data in stage is harder than it looks, it needs to be loaded in the module aswell :/
Stupid Tinypic :C

Subbed to thread. I worked on SSE files a long time ago, and had some data on the different types. Sadly, I think most of it is gone, due to my PC breaking some time ago.
I posted some information in the SSE collab thread, if you want to add it to the OP.
3DS FC: 5370-0958-4818
Wii U NNID: Doraleus

Sweet! i'll go nab that

Quote from: pikazz on March 24, 2014, 11:50:28 AM
but using that data in stage is harder than it looks, it needs to be loaded in the module aswell :/

Yea using it in anything but an adventure stage won't work, because the module  sora_adv_stage is programmed to load these files and act a certain way, while sora_melee is not. What makes SSE so customizable, is that it uses a single generic module to govern ALL adventure stages. That means that anything thats different between skyworld and halberd or any other stage, is completely controlled by these files and not the module. :P

Quote from: Sammi Husky on March 24, 2014, 07:56:41 PM
Sweet! i'll go nab that
Yea using it in anything but an adventure stage won't work, because the module  sora_adv_stage is programmed to load these files and act a certain way, while sora_melee is not. What makes SSE so customizable, is that it uses a single generic module to govern ALL adventure stages. That means that anything thats different between skyworld and halberd or any other stage, is completely controlled by these files and not the module. :P
I know that, together that the enemy module data is inside Sora_Enemy, which controlls the "PSA" of the enemies just like Ft_Char does to a character. so to add a enemy to a regular VS stage, the Stage module need the Sora_Enemy "enemy" part together with the part of Sora_Adv_Stage to have it work
Stupid Tinypic :C

Well, it seems my suspicions about ADPM were correct, it controls the game mode of the level, whether it be a boss battle, normal battle, or what have you. I haven't documented the file itself yet, but soon. I have succeeded in changing the first level (where you fight kirby) from fighting a char, to fighting in an arena full of enemies. However, the enemies don't spawn, and the match instantly ends as it starts since no enemies were spawned. I hope i can find the file that's responsible for this..hmm..

But hey progress is progress and im one step closer to being able to rebuild a single level into something completely different

March 28, 2014, 10:53:42 AM #12 Last Edit: March 28, 2014, 11:12:30 AM by pikazz
something I am really curious about is how to change the stages, example changing the first kirby/Mario match to another stage, making the stage seceltion load another stage or make the Masterhand Boss in Classic mode being another boss

also, do you know that the filetypes is nickname for what actually doing?
BGMG can be Background Music Generator
GSND can be Generate Sound
GMOV can be Generate Movie
GITM can be Generate Item
GEG1 can be Generate Enemy Generator 1
Stupid Tinypic :C

Of course :P i know the filtype is an acronym for what the file does, however i felt i would just leave figuring out the acronym to others, and focus on what the files actually do instead ;)

incidentally, it seems that anything that MOVES uses GMOV.
Take a look at the BLOC archive in 280202a, there are a few helpful filetypes there. It's a fairly simple room with only a few notable things within it. Such as the door and the falling block. The falling block is what im really interested in, as it has hitboxes attached to it.

the sad thing we cant use that into to the fighter or the Brawl stage themself D;
imaging how easy it would be if we could use that moving block in 280202a to a stage example final destination!
Stupid Tinypic :C