News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Hacking research + general tools development

Started by Aruki, July 02, 2015, 01:33:29 PM

Previous topic - Next topic

Aruki

Retro Modding Wiki - File format documentation

Starting this thread for general discussion on formats research + general tools development. We've been doing this on metroid2002 for the last year or so, but I'd like to start posting updates here as well. The Retro Modding Wiki contains mostly up-to-date info on what's currently known - the main exceptions are SCLY (script object data) and collision, both of which are known but have yet to be documented. (There's maybe a couple other things like that.) Donkey Kong Country Returns hacking research is also a thing because it's internally very similar to Metroid Prime 3.

If anyone's interested in joining in, the wiki has a few "research needed" categories that indicate which formats haven't been cracked yet. You should also check the game pages for each game, because some uncracked formats don't even have pages yet.

As far as tools go, I'm still working on my Prime series editor, Prime World Editor, and I believe Antidote is still working on his viewer, RetroView... we might end up making some more separate threads to cover development on those particular tools.

Antidote

Yep, mostly working on a bunch of core libs that will help us (Jackoalan and I) do a bunch of cool things with the data, once we get more progress we'll definitely be showing it off :3

Aruki

So I spent today reverse engineering the pause menu in MP2. This is a crappy little program I wrote to view it:



The pause menu tree is controlled by 95b61279.DUMB in LogBook.pak. I'm not totally sure where this goes on the wiki, so for now this is the gist of how it works:

* The first value is the "TREE" magic, the second value is the root node instance ID, and the third is the node count.
* The TREE file works by embedding script objects. It is the same format as SCLY.
* There are a few common parameters. For some reason every object has EditorProperties (position/rotation/scale, instance name, "active" flag), even though none of that is really applicable to the pause menu stuff. Every object also has a STRG ID for the file that contains the node name, and the name of the node name string.
* There's five object/node types:
- SCND: Category - No extra parameters, and sends an Attach message to all of its child nodes.
- SCSN: Scan - Used for logbook scan entries. It has a SCAN file ID.
- SCIN: Inventory - Used for inventory item entries. It also has a SCAN file ID that contains the item description and it also contains a pickup type flag, which is used so the game knows when to enable this node in the pause menu.
- SCSL: Slider - This is a slider widget used for changing settings in the options menu. It has an extra integer parameter; I didn't look into what it is, but my guess is it's an enum for which option it modifies.
- SCMN: Menu - This is a menu dialog for the options menu. It's mostly used for "Restore Defaults" yes/no menus. It's also used for changing the sound mode (Mono/Stereo/Surround). It seems to support up to four options per menu.
* I tried changing the root node to the Sandbat scan and it was pretty goofy - it made pausing the game on a new file instantly unlock every scan in the game :P

I don't think I'm really gonna go much further with this program for now since I mostly just wanted to see how the pause menu works, and I'm relatively satisfied now. I don't think writing an editor for it would be all that hard, though!


Mon732


Quietus

It's all baby steps, but it hints at Prime's massive hacking potential. :^_^:

Antidote

Copy pasta from M2k2 https://m2k2.taigaforum.com/post/metroid_prime_hacking_research_1523.html
Quote
Testers Wanted!!!

This is the first public prototype of a tool to extract models and animated characters from MP1/2, with MP3 support underway.

It's steadily gaining new functionality, so we're going to put out prototype releases as major new features are added. Area extract is in the works too!!

Please understand that this project is fairly new and needs lots of testing to discover bugs and data issues.

https://github.com/RetroView/PathShagged/releases

Extra thanks to bearborg, our resident Guinea Pig for several grueling rounds of testing.

Antidote

Quote from: Quietus on August 10, 2015, 06:32:03 PM
It's all baby steps, but it hints at Prime's massive hacking potential. :^_^:

You could darn near change everything in the game, retro hard coded very little in terms of how events play out. They're pretty much entirely controlled by the areas and memory relays within them.

Zero One

Managed to successfully extract the beta Ripper and shove it into UE4! So far, tool works flawlessly. It's great to see this stuff happening now!