Two days ago I was sure that I would never release another version of FCEUXD SP (everybody’s favourite NES emulator for hacking NES games). Today there’s a new version because I was unhappy with the Cheat Console. Weird things happen sometimes.
Version 1.07 is another small update. It adds the so called RAM Filter. With this tool you set up rules to specify how you expect RAM values to change. After you set up the rules, RAM Filter eliminates all bytes in memory that changed differently. This makes finding data in NES games very easy. How is that different from the Cheat Console? The RAM Filter offers more options, it’s easier to use, you get more information about value changes, and you can easily go back to earlier rules without having to restart everything.
Let me give you two examples.
In the first example we want to find out where the game Faxanadu stores the player’s health points in RAM. Check this screenshot to see how I used the RAM Filter tool.
At first I started a game and used the “Any” rule. This rule tells the RAM Filter that I don’t have any information about the value I want to find. Right after that I walked to another screen. There I set up two “Equal to last value” rules because the health points didn’t change since the first rule. These two rules eliminated lots of potential memory locations that had nothing to do with the health points. Then I went to the next room and walked into a monster. This obviously changed the number of health points and I set up a “Not equal to last value” rule accordingly. Then I went to a store and set up two more “Equal to last value” rules to eliminate more potential memory locations. Afterwards I bought some health points from the vendor. Once again this changes the number of health points so I set up another “Not equal to last value” rule.
After all this, the RAM Filter tool found that only 2 memory locations changed according to the rules I set up: 0x399 and 0x431. A quick test reveals that the health points are stored in 0x431.
Here’s another example. Suppose we want to find out where the number of player lives left are stored in Super Mario Bros. Check this screenshot to see the results
I started the game and once again I set up an “Any” rule at first because I didn’t know what to look for. Immediately after I set up the first rule I added two “Equal to last value” rules because the number of lifes left didn’t change. This helped to eliminate lots of memory locations already. Then I walked into the first Goomba to lose a life. I expected the number of lifes to decrease therefore I set up a “Less than last value” rule. After the game was restarted I set up another “Equal to last value” rule.
RAM Filter worked even better this time. Only one memory location was left. Now we know that the number of lives left is stored in 0x75A.
Both of these examples took less than one minute to figure out. That’s pretty neat in my opinion.
>> Get it HERE.