Jump to content

Ocarina of Time Value Editor


Airikita
 Share

Recommended Posts

I was looking into the AI in Zelda OoT from hex (and disassembler) and I've been working on a little value editor for hex values:

 

UPDATE: the tool is complete. It may still need some work, but for now it works... you may need to find out what values you're editing before you start changing them.

 

Here is a hex-to-float converter tool for float values: http://gregstoll.dyn...oll/floattohex/

 

This makes value-hunting a lot quicker, so I may just keep it as-is until I can figure out what else can be done with it. This tool will generate 100 different values available for changing within the rom. It stores the location per value, and saves directly to the appropriate locations.

 

You can even use the display to record where your value is being edited (which includes the entire 8-digit hex code found).

 

I also added a feature to either save over the file you have open, or save to a completely new file... after creating a new file, saving works by saving over your newly created file.

 

EDIT: I also eliminated any 8080+ values from appearing... editing any of THOSE values will/can cause a BLACK SCREEN OF DEATH during AI operations, whatever that might be.

 

*A new JAL search has been added... may need to be researched on a bit more, I may even split the 2 different JAL searches, but for now I'll leave it as-is.

 

Update (changes):

  • Cleaner display (boxes blanked out with no values)
  • Undo/redo will now work if any mistakes are made (ctrl+z or ctrl+y).
  • Custom value search entry is now available to narrow searching.
  • Searching for floating-point values is now more refined.
This will work for both Ocarina of Time and Majora's Mask.

 

Posted Image

 

Download: http://www.the-gcn.c...a-value-editor/ (Windows/Linux compatible)

Alternate download: http://www.filehosting.org/file/details/391383/OcarinaValueEditor.zip

 

*** More details in the description on the download page ***

 

NOTE: This is actually a good learning tool for those interested in ROM hacking, and learning about a few ASM hex values and commands. Comparing the values in this tool to the ones in ROM that you edit will help you understand a bit more about how things are set up.

 

This is mainly for those who can understand a bit more about ASM and their values, for the trickier hacking, but messing around is a good learning curve for anyone willing to take it up. If it takes a while to understand, feel free to ask questions and I'll help out as much as I can!

Edited by Airikita
  • Like 1
Link to comment
Share on other sites

This is actually really useful! I don't know if people will really understand what it's for, so I'd like to jump in and explain a little.

 

Actor files are partially made up R4300i MIPS instructions, one of them being ADDIU. It's an instruction that adds a constant value to a register. What does that mean? It means looking at these instructions give you the hard coded values in the actor. For example, how long a bomb takes before exploding is set intially with an ADDIU instruction if I remember correctly, and Airikita's program here would have it show up. It's hard to figure out what these values are without the context of the instructions that use them, but this does allow editing those values without any knowledge of assembly. Nice work!

 

As for what could be done next with the tool, the best thing I can think of is relocating the file to 0 to find those values as well.

 

Edit:

I just also wanted to say, the reason that your "80A?" (it's anything from 8080000 upwards) values crash, is because those aren't actually offsets that exist in RAM. Those are offsets relative to where the file ends up in memory, and that's what I meant when I was talking about relocating. The last thing in an actor file besides the header pointer is relocation data, and you can use it to get these values as well. I can get you documentation if you'd like, this would give you the values that are in the .data and .rodata sections which are usually really interesting to edit.

Link to comment
Share on other sites

Certainly... I can add more functions to the program that way.

I will make note of it for I'm still working on the float values, but I will certainly add it in to the program when I have time.

I can make a separate search for values 8080 and up so they don't get mixed with the floating-point values.

 

UPDATE: more bug fixes, and a complete change of how the tool displays the data, and extra functionality has been added. I pumped this tool with everything I got to make it work better. Download v1.21 as v1.2 has/had an issue with the undo/redo which has been fixed.

Link to comment
Share on other sites

At first I didn't look at this very thoroughly and I thought it was some oddly glorified hex editor. But as sakura said, it is a very useful, interesting tool for tuning the values within actors, in the case that you just want to "tune" an actor rather than disassemble and then reassemble.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.