Thursday, February 1. 2007

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.

I don't use any NES assembler at all since I don't develop my own NES games. All I can do is to refer you to http://nesdev.parodius.com/ . Maybe you can find something there. Check out their forum too.

Hi,
I've been looking for something to help me create GameGenie codes and FCEUXD SP is by far the best tool I've come across.

My goal is to make a code that prevents the Gun value in Blaster Master from depleting when you take damage. The tools provided have helped me narrow down the memory address of the Gun value, but I'm stuck. I'm so close I can taste it, but I don't know what to do next.

Hi. I really enjoy the cheat features on this, as it's helped me in numerous games, but I was wondering how the RAM dump works? For release 1.05 it is mentioned it is in the "File" menu but I cannot see it on my windows XP. It seems like it would be handier than the save state, which does not extract what looks to be a map of the current area in the game when I view the hex editor.

Am I missing something very silly? Thanks for all previous and any future help!

Thank you VERY much! Now that you mention it, I think I saw it once before but figured I did not need it.

I guess I got so used to the pull down menu I never used, I just started ignoring it. (shakes head at self a bit and grins sheepishly.) There are some other neat options there too. So, thanks in advance for those, too.

hello, I've been part of the team developing FCE Ultra. We have successfully integrated the FCEUXDSP1.07 and FCEU TASing branches into FCE Ultra. The problem is that none of use are good with debugging tools so much of this code is going untested (previous bugs and possible new ones introduced in conversion). So if anyone is interested in testing, bug fixing, or adding features, email me. Thanks.

Just coming to say thank you for this wonderful piece of emulator and debugging tool. I've been using it in Windows in 2008 and 2009 for ROM Translations, and it never let me down. I've never used RAM Filter as I didn't knew how. But today I went here on your page and, what a surprise. Wonderful tool, I must admit. I was stuck with the Cheat Console of NesTen, and that was giving me headaches.

Not begging for you to continue the development of this emulator, no, don't take me wrong. I just came here because I felt you would like some recognition, at least for someone that is being able of seeing all his favorite NES titles in his native language mostly due to you. Thanks a lot.

Oh, I see. I used FCEUX 2.2.1 to record some videos in AVI output. The gameplay almost didn't suffered while I was recording, and the quality was perfect. I just didn't noticed that all the features present in FCEUXD SP were also present there.

I was hoping to get some good codec recommendations at FCEUX page, but there isn't boards or something like that there, so, if you could help me ....

When recording in Windows, I use the "Helix YV12 Codec", but in Linux, I don't either have this codec, nor have one that works. Any recommendations?

Amazing job with the debugger/cheat enhancements. Is there any way to add hot key support to the cheat console's cheat list? I have found this feature lacking from many emulators, and with the absence of a joker type code for these older systems, hot keys would be a wonderful addition.

Ive been wanting to make the codes seen on the blaster master RAM MAPs for unlimited GUN. health and such and creat game genie codes for the real nintendo?

when i first used this emulator

(FCEUXDSP 1.7) in the hex editor under nes ram if u right clicked it came up with a menu and had an option to make the address and bit into a game genie code say for blaster master: Inf power at offset 0x040D : FF but i didnt know you could make a gg code this way until i read the emu readme but now when i try to do this by clicking on the bit FF for hex 0x040D it only comes up with 4-5 options and the option to make the game genie code at the selected address doesnt show up any more? How can i get that GameGenie code option back, iv tried deleting everything re running nothing will bring back the GG Code Option ? please help!

and when i use the game genie code encrypter/decripter through the emu i enter 040d and value FF for inf energy and puts the code in the cheats menu in the emu but its value changes from 040d FF to 840D : FF and it doesnt work??? on real nes game genie and the emu

I found your conditional breakpoints highly useful, but when I tried bitwise logic operations, I got an error message. are they not implemented? might they be included in a future release? okokok I know you've closed the door on this project, I just wish I could get bitwise conditionals! how tough would it be for a C++ noob to write them into the source?

thank you for your comment. Unfortunately I have not looked at the source in years. I would recommend asking the maintainers of http://fceux.com/web/home.html which is to my knowledge the latest FCEU version.