Once you understand it you can change it (in your case move it to a larger area of what was free space in the ROM to have it instead see your table. Your job is then to understand the routine that led to the read from that location. It might be that it is just a single instruction wanting to read it but more likely you will have a small routine to build the number it needs to read from the location.
When something reads it your emulator will halt everything and say "this command is reading from this location and this is where the command is found".įrom here you get to work backwards.
Still set a breakpoint for a read from that location plus however much the rest of the table needs. This may or may not be often as it could read it once and not have to read that location until the next level/a new character joins the party. So anyway the game will at some point refer to that location or something after it for the level value. I am not going to cover it as it is done far more extensively elsewhere. I am not sure if you have learned tracing yet but it is a basic assembly hacking technique, though a truly powerful one. This is best accomplished by tracing I would imagine. Your job is then to find the thing in the game that tells it to look in that location. *it is possible to leave it all and algorithmically sort it from there but I would avoid that for a first pass.īack on topic though what I imagine the game will be doing is something like reading that location (or more likely that location plus character level multiplied by some number depending upon how big the numbers are and if that table also includes stat or spell progressions - not wishing to confuse you too much but in normally programming such a thing happens as the result of "pointer arithmetic" though the pointers there are not quite the same as you are dealing with here) to get the value for level ups.
However if you want to expand the scope of the levelling system you will probably* want to have more space hence the "move it to another location" part. If you were doing a minor rebalancing hack you would have probably just been told to edit that area.
Odd as I would have thought it would have been somewhat algorithmic but I have certainly been surprised in the past and that would make fine tuning a bit easier.Īlternatively that is actually a section of assembly code for levelling but that does not seem as likely if that was the information you were given/path you were sent down. Going by what has been said that area in the ROM contains a hardcoded lookup table for level progression or something along those lines. What you say may well be true and what you have been told to do may well be a way to do it (until I can argue otherwise I will have to assume it is) but it seems kind of odd. I can not say I have ever hacked Super Mario RPG and do not have any great desire to start now (likewise if we were discussing the least hacked non educational mario games it would be among the forerunners) but in the meantime I will try to get you heading in the right direction.