RAM/ROM Record Demo
Image Unavailable

Author: Zoinkity

Date: February 19, 2010

Category: GE Misc


Ramrom Record and Playback Patches
version 1.0 Feb. 17th 2010

Ramrom files are used to play the demos at the beginning of the game. The in-game debug menu listed options to record, replay, and save these files but without the original development hardware this will not work. In addition, it wasn't possible to play back or record a multiplayer demo. These patches circumvent both problems.

The playback patch allows any game to replay multiplayer ramrom demo files. The record patch also allows replaying MP matches, but in addition allows recording your own demos. Both patches work on console and emulators, although recording requires extrqa hardware or software to capture the data.


Important note! Version 1.0 recording patch has not been thoroughly tested and may cause unforseen problems. It is advised to only apply it to a copy of a ROM, not to your original. Any captured ramrom files can be saved and transfered to a final ROM without issue. The playback patch is stable and should not cause issues.

Only apply the correct region patch to an unbyteswapped ROM. You will need to recalculate the ROM checksum, which can be done with the GoldenEye Setup Editor as well as other tools. Do not apply this to an NSNA patched ROM!
NGEE-ramrom-record.ips recording+playback North America
NGEE-ramrom-MPreplay.ips multiplayer playback North America


Using Record Tools:
In order to record ramrom, you must activate the in-game debug menu. You may use GameShark codes or patches to do this, but it must be activated to begin recording.

NGEE Codes: press c-up + c-down to open the menu
81036F6C 0000
81036F6E 0002
D0064F31 000C
80024303 0001

You will also need an 8MB expansion pak in console or force 8MB mode in emulators. The demo is recorded to unused memory at 80400000.

There are a few important things to know before recording demo files. Firstly, it reads the number of controllers plugged into the console and records input on all of them. To reduce filesizes, it is advised you only plug in as many as you need, and you should not unplug them when grabbing demos. Unplugging them may cause severe errors.

Secondly, you must end a video properly. You may either press c-up + c-down or simply end the stage normally. This doesn't just stop recording, but also fills in the filesize and sets a few final values.

Allow about 1-2 seconds of extra time at the beginning and end of your demo to account for the fades at opening and close. The last second is usually too dark to see on playback.

It is important you do not use the in-game "save ramrom" feature. This only communicates with the original development tools and can cause a loop when attempting to retrieve a filename from PC. "Load ramrom", although it does not lock the game, defaults to reloading the recorded ramrom file to memory, serving no real purpose. "Replay ramrom" will replay the currently recorded demo, but it is highly advised this only be done from the title screen or menus.

Very quickly a note about starting points and equipment. Within stage setups are intro blocks which set player starting locations and initial equipment. These may be labelled with a set number, which the recorder uses to determine where to start the player(s). Normal starting locations are always set 0, but you may also make starts for sets 1, 2, and 3 if you wish. Some stages already have done this, such as Facility, Runway, and Bunker I. You may view all setup information for a stage using the GoldenEye Setup Editor.

How to capture video, step by step:
1) Start the game and navigate either to the MP options page or solo stage briefings, depending on which mode you wish to record. Set whatever settings you wish, but keep in mind cheat settings will not appear in replay.
2) Open the debug menu. In the upper-right column are the options "record ramrom", "record 1", "record 2", and "record 3". Each one will trigger recording the next loaded stage using a certain set number. "Record ramrom" starts you at the normal start location for that stage, and will always work. If the stage already has other start sets, you may select the record # corresponding to the set you want to use. Highlight but do not select the option from the list.
3) After highlighting a record option, press start to close the menu and start the stage. Press it quickly and with great determination, so it doesn't accidentally open the start menu at the beginning of the stage and flub the demo.
4) Play for any length of time. The longer you play the larger the file, but there appears to be no limit on playback time. To stop recording, either end the game normally or press c-up + c-down.
5) Retrieve the final ramrom file from memory with the appropriate method below.

Retrieval Methods:
Retrieving the ramrom file from memory is done differently depending on how you are playing the game. However, in every case, you copy the size of the file from 80400080, then pull the ramrom starting at 80400000 from ram.

Console: by far the easiest method. Use a GameShark with 25pin cable or similiar setup to upload the ramrom file to PC. Read the size from 80400000, then upload from 80400000 to 80400000+size.

Nemu64: this emulator has a built-in memory dump feature in the tools menu. Before playing the game, you must set the default memory size to 8MB (expansion pak). The down-side is that negative elevations and ramps cause severe, unplayable graphics errors. However, to rip the ramrom file, simply use memory editor to see the size saved at 80400080. Then use the memory dump feature, starting at 80400000 and ending at 80400000+size.

Other Emulators: ripping ramrom can be problematic. You will need to use another PC program that can hook into it to strip the ramrom. Some hex editors allow this, and there are hacking tools that will do the same. Renegade64 can hook into most emulators if you know where in memory they reside. When hooked, the process is the same. Read the size from 80400080, then rip from 80400000 to 80400000+size.

Savestates: somewhat easier is stripping the recorded ramrom from a savestate. Savestates tend to have much more information than just the current ram, and each emulator uses a different format. Either way, you will need to use a hex editor and decompress the savestate if it is compressed. Depending on the format, the data may need to be byteswapped.
PJ64/1964: select the option to output decompressed savestates. You will need to 32bit byteswap the file. Using a hex editor, go to 0x400BDC. This indicates the ramrom size. Copy that many bytes of data starting at 0x400B5C into a new file.
Mupen64: Mupen .st files are compressed using gzip. Decompress them, and then 32bit byteswap the file. Using a hex editor, go to 0x400630. This indicates the ramrom size. Copy that many bytes starting at 0x4005B0 to a new file.


Inserting Ramrom Demos:

Important note: PAL demos are incompatible with NTSC demos. So, you can not record something with either NGEE or NGEJ and insert it in NGEP. However, demos in either NTSC game are compatible.

Inserting demos can be done several ways. The easiest of these is to simply replace an existing file, which is made slightly easier with the IPSer. In actuality the files can be placed anywhere in ROM, but if they aren't at the usual locations you'll need to hack the entries in the 21990 compressed file.

Method 1: Overwriting
The easiest by far, you can replace an existing ramrom file with a new one its size or smaller. To make this easier, in the "tools" folder is a program called IPSer.exe.
Drag-and-drop the ramrom file onto the program, and it will tell you if any files can be replaced. Select the demo you wish to replace, and it automatically generates an ips patch file to replace the demo with. For more detailed instructions, see its readme or type "-?" or "-h" at the command line.

Otherwise, you can manually replace files with a hex editor. Simply copy the file to the appropriate location. Below is a table of the default locations and their sizes.
offset size stage
2BF2D0 5200 Dam
2C44D0 1FD0 Dam
2C64A0 1AB0 Facility
2C7F50 23E0 Facility
2CA330 1C70 Facility
2CBFA0 2750 Runway
2CE6F0 2910 Runway
2D1000 3390 Bunker I
2D4390 5280 Bunker I
2D9610 2190 Silo
2DB7A0 1FD0 Silo
2DD770 19B0 Frigate
2DF120 34E0 Frigate
2E2600 3DF0 Train

Method 2: Replacement
If your file is too large you can manually replace an existing entry with a new address in the 21990 manually. The table of entries starts at offset 0x27660. Each entry follows the following format.
offset size description
0x0 4 ROM address of ramrom file
0x4 4 lock

The lock is 0 normally, but can be set to 1 to inhibit this and following entries from appearing until after Egypt has been completed.

Ramrom files may be placed anywhere in ROM where there is room. Use a hex editor and place it where you deem fit.
Then, extract and decompress the compressed file at 0x21990 in ROM. This can be done with the GoldenEye setup editor or standalone tools. From there, open the file in a hex editor and go to offset 0x27660. Replace an existing entry with the ROM address of your new file. Afterward, recompress the file, reinsert it at 0x21990, and recalculate the checksum on the ROM.

More, easier insertion methods may be developed in time.


As mentioned before, the recording patch is preliminary and likely will cause errors. Bug reports can be sent to either my email or placed on the shootersforever forum, PMed to Zoinkity.



File nameFile typeSize
image.jpgJPEG image data20.91 kBInfo
ramrom[zoinkity].zipZip archive data58.46 kBInfo


Feel free to edit this with navigation and backlinks
Go back to Goldeneye Levels
Diddy Kong Racing Levels
Mickey's Speedway USA Levels
Super Smash Bros Levels

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License