GoldenEye romhack index

Build your own splits practice rom

Video detailed explanation and tutorial: https://www.youtube.com/watch?v=k5r-XYgHBnU.


Current xdelta patch: patch-NTSC-0.9b.xdelta

Should be applied against NTSC .z64 with SHA1 ABE01E4AEB033B6C0836819F549C791B26CFDE83


The goal is to provide a test environment on console that you can configure from within the game itself. Contrast this with any other (so far) available romhack that requires using the PerfectGold setup editor to tune parameters, change starting position, etc.

The guiding principle for this project is flexibility. Instead of practicing a particular strategy a particular way, you should be able to setup your own practice session using your own parameters.

Scope & Limitations

Flexibility comes at a cost. I have intentionally limited what kinds of split targets are available (or rather, intentionally chosen not to implement alternatives). One of the practical reasons for doing so is that anything more advanced is going to make the UI even harder to use, and IMO probably better to work with PerfectGold at that point. So think of this project as something vast in breadth, widely applicable to many situations, but not surgically precise. If you need a very focused practice ROM, like knowing when a guard is loaded, then refer to WhiteTed's Splits rom.

Also note that none of the watch menu settings are saved / none are used as part of splits definitions. The only thing that can be specified as part of splits are spawn point, split row target type, and split row target time.

If you encounter any bugs, let me know. If one of the assumptions I make below is wrong, let me know. Anything related to location / spawn point should be considered experimental.

This romhack has been tested on Everdrive64 x7.

Features Overview

Here is a bullet point summary of features, explained in more detail following.

Performance Considerations

I have made quite large changes to the game, in the sense that I deleted multiplayer and spectrum emulation, which is some 10's of k of code. But almost all my changes are limited to the user interface, in the folder menus and the watch menu. Where I did make changes, the code changed is targeted and precise. For example, intercepting the Flight Recorder spawn is contained within a single AI switch statement, and that code is rarely run.

I split "Run mode" and "edit mode" to further partition performance impacts. Drawing the HUD should be the most expensive part of the main update, the cost to performance should still be sub 1ms with room to spare. You can disable the entire HUD if you want, but if you are that concerned about performance then maybe just stick with the retail version.

Feature Details

"Run" mode screen:

The above image shows the previous split was room target 15, achieved at absolute time 15.82, player was 1.12 too slow. Row 2 shows the next target is objective A, at absolute time 43.38, and player is currently 24.60 seconds ahead. Last row is mission timer.



Show split name at top. Shows default level spawn was used. Illegible "Take Best" button is disabled because this is ROM splits. This shows the first six splits for the level. Player died or quit after objective A and before splits row 4.


Difficulty select:

Available splits are listed in the blue box. Only default "RAM" split is available for this stage. Button to clear ram splits "X RAM" is enabled. Button to copy ROM splits to RAM "To RAM" is disabled. Currently in "Run Mode" with option to toggle over to "Edit Mode" because RAM splits are selected.


"Edit" mode, after opening menu

Lists 4 split rows on the left. In order: room target 7, room target 8, objective A, end of level (automatic). Below that it shows the current room Bond is in. On the right is help text to explain how to use edit mode. If the "A" button were pressed, it would execute the action "inc. rm bef." This means it would add a split row before the highlighted row, using Bond's current room as the target; in this case it would insert a duplicate room 8 target.


Watch menu 6 - Romhack UI

This is hopefully self explanatory, the only thing I will note is that the "BG" option can scroll left to "none" (transparent).


Watch menu 7 - Bond

The +Invisibility also disables security cameras and drone guns, but allows important NPC's (val, etc) to see Bond. Start weapon sets the inventory item Bond is actively holding at the start of the level. Available options:

throwing knife kf7 soviet zmg (9mm) d5k d5k (silenced) phantom ar33 sniper rifle golden gun laser watch laser grenade launcher rocket launcher grenade timed mine remote mine taser watch magnet plastique key analyzer goldeney key guidance data door decoder detonator datathief camera bug

Choosing either "key analyzer" or "goldeney key" adds the other to your inventory.


Watch Menu 8 - Not Bond

Intro cinema can scroll left to "disable" or right to specify 1-6. If there are fewer intros available than selected, it will take the highest value.


Watch Menu 9 - Frigate

Available target pads: 0x8f, 0x91, 0x93, 0x94, 0xa8, 0xa9. This is experimental. I think this only sets the target once. If you notice something odd, let me know.


Watch menu 10 - Group1

Flight Recorder pads: 0xcd, 0xd6, 0xd0, 0xc8, 0xcb, 0xc4, 0xd5, 0xc2, 0xc0 Doak spawn pad: 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4

Controller shortcuts

These shortcuts work in solo game mode, regardless of the current control style.

Exit to title:

controller 1: Z + DPAD Down + all C buttons + R trigger


controller 1: Z + DPAD Down
controller 2: Z + DPAD Down

Restart stage:

controller 1: Z + DPAD Down + Start


controller 1: Z + DPAD Down
controller 2: Z + Start


How to set spawn:

There will probably be some camera glitches as your zoom into Bond. Let me know if you get any game crashes.