Gimmick! Special Edition

Gimmick! Special Edition

Not enough ratings
Extracting the ROM
By infinest
This guide will explain how you can extract the raw Gimmick! ROM file from the game for play on other emulators or on real hardware via a flash cartridge like the Everdrive
Explanation of the processes
As i previously did not know how the ROM file was stored in the game files, this guide in it's first version explained how to extract the ROM from RAM while the game was running. For posterity's sake i will leave the explanation on how to do this in the guide.
However extracting the ROM directly from the game files is definitely recommended as it is the simplest and fastest way to get the ROM.

Prerequisites for extracting the ROM from the game files
Extraction process from the game files
  1. Put Gimmick_ROM_extractor.exe and config.json into the same directory as AR_win32.mdf, which is the resource file that contains the ROM in an encrypted format. For a default steam installation the path should look something like this:
    C:\Program Files (x86)\Steam\steamapps\common\Gimmick! Special Edition\TRICK\
  2. Open Gimmick_ROM_extractor.exe and you should be prompted if you want to extract the ROM from AR_win32.mdf. Hit y and after a second or so the ROM should be written to
    C:\Program Files (x86)\Steam\steamapps\common\Gimmick! Special Edition\TRICK\RealGimmick.nes
  3. You are done. You can now proceed to play the ROM in any emulator of your choosing.

Prerequisites for extracting the ROM from RAM
  • Python has to be installed
  • This Python script: (I urge you to not just blindly download the script. Please inspect the code yourself to ensure it is not malicious)
Extraction process from RAM
  1. Boot up the game and press Start in the main menu. The actual ROM itself needs to be running in the game.
  2. Press Ctrl + Alt + Delete and open up the Task-Manager
  3. In the list of Processes search for "Gimmick! Special Edition". Right click it and select "Create dump file"
  4. The window that opens will tell you to wait a bit. Once the dump has been completed it should show you where the dump has been saved. The file should be called TRICK.DMP
  5. Move both TRICK.DMP and the Python script into the same directory
  6. Open a command line, navigate to the directory where the dump and the Python script are located and execute the script by writing "Python" (Without the quotation marks)
  7. The script will search for the ROM inside the memory dump and, if done correctly, should output a file called TRICK.nes in the same directory. This is the raw game ROM
  8. You can now test the extracted TRICK.nes ROM file in the emulator of your choice
  9. Proceed to delete TRICK.DMP and the Python script as well if you want
mrnorbert1994 Nov 23, 2023 @ 3:10pm 
I did a chekup in the NES2.0 XML datasheet (it's on NesDev), and the extracted ROM from is 100% same with the ROMs in GoodNES and other ROMsets.
infinest  [author] Aug 12, 2023 @ 7:07pm 
In essence, the ROMs dumped by my tools are 100% correct and you can compare them with the ROM that is widely available online. They match exactly.
If you want the ROM to have the exact same MD5 hash as the one listed on No-Intro all you have to do is to replace the header at the beginning of the file.

Replace these bytes:
4E 45 53 1A 10 10 50 40 00 00 00 00 00 00 00 00

With these bytes:
4E 45 53 1A 10 10 50 48 00 00 00 00 00 00 00 01

If you want to read more about the iNES and "NES 2.0" header formats you can do so here:
infinest  [author] Aug 12, 2023 @ 7:05pm 
This header format is called iNES and has existed for ages now and normally all ROMs you will find distributed will have this headers. However some years ago a new header format called "NES 2.0" hit the scene which is able to store some additional data about games that previously wasn't taken into account. The dumps that the guys over at No-Intro have are all ROMs with that new header format.

I kind of blame No-Intro here. Even their dump of the ROM from this Steam release has a modified header with the new format. This is weird since the actual ROM stored in the Steam release has the old header format. Additionally all ROMs of the game available online have the old header format.
infinest  [author] Aug 12, 2023 @ 7:05pm 
Hey there and good question.

First of all, let me answer why the checksums did not match up between the ROMs you dumped via my tools. The Python tool had a bug where the ROM was an overdump. Basically my tool wrote 400 additional bytes at the end of the file. That isn't really an issue for the functionality of the ROM but it is definitely a bug. I've went ahead and fixed that bug. The link in the guide already links to the updated Python code so you can go ahead and try it again. The ROMs should match now.

Second, the answer for why the No-Intro DB lists a different MD5. NES ROMs usually contain a 16 byte long header at the beginning of the file. This header contains information about what hardware the ROM requires so that emulators know how to emulate the game.
Odjn Ryu Aug 12, 2023 @ 2:59pm 
MD5 checksum is C9D41739DE68B004F136623AFC4822E2 which doesn't match the No-Intro dump, which is 5ff815533e1044d2c1035a65be37f8f1.

Likewise, via the RAM steps, the result is AD0D8625249774C6C819238F71A86C29. Why are all of these checksums different?
🅾️rder💲 Jul 23, 2023 @ 8:28am 
infinest  [author] Jul 17, 2023 @ 8:08am 
You're welcome and yeah i noticed that. I'd have posted about my findings in there if they hadn't.
Anyways, even if they take this guide down the Github repository for the extraction tool should stay up. :steamthumbsup:
ricktheone1 Jul 16, 2023 @ 12:20pm 
Thank you so much for this! Hopefully this guide stays up because my thread asking about this got shutdown and locked.