# GoldenEye 007 (USA) route and assistance provenance

Prepared October 30, 2026. This is source research and a manual guide; no gameplay, save/reload or browser behavior testing was performed.

## Cartridge identity

The supplied original is `L:/Game Preserevation/GoldenEye (USA)/007 - GoldenEye (USA).n64`, 12,582,912 bytes. Its original 16-bit byte-swapped SHA256 is `33d4609661bd207d22146463e64edbcc5cc9a21668f4f8e450642d2a2f6d2de8`; SHA1 is `7dd376e996d77d108316ac7ced087125c5674fa4`. The `.n64` extension does not describe its actual byte order; header bytes are `37 80 40 12`.

Pair-swapping a copy in memory produces the standard big-endian header `80 37 12 40`, title `GOLDENEYE`, cartridge ID `NGEE`, USA country code `45`, revision `00`, CRC `DCBC50D1 / 09FD1AA3`. Big-endian SHA256 is `2cdcec8a9f0cb6e36337f3ee39d8ad105dc8afa6ba1c02d466e8f5b771f9a162`; SHA1 is `abe01e4aeb033b6c0836819f549c791b26cfde83`, exactly matching the [USA decompilation checksum](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/ge007.u.sha1). The original file was not changed.

## Mission route

`route.json` contains 20 missions in campaign order, including Aztec and Egyptian, with 80 stable objective IDs. Each objective includes `minimumDifficulty`, explicit `difficulties` and `tracking: manual`. Applicable totals are Agent 46, Secret Agent 69 and 00 Agent 80. The source tables are the game’s own recovered briefing data and English text at [n64decomp/007 commit c4356466796c697dfd298010b9bed261f9ed8c6a](https://github.com/n64decomp/007/tree/c4356466796c697dfd298010b9bed261f9ed8c6a); per-mission links are embedded in the JSON. The preparation script rejects no objectives by guesswork; it removes C comments, reads the active briefing declarations, follows their text indexes and difficulty constants, and ignores the commented-out Caverns “Pursue Trevelyan” entry.

The route uses the game’s task titles and newly written summaries/tips. Tips summarize the briefings; they are not a verified movement walkthrough. Mission selection and checklist completion are manual. Selecting a mission here does not unlock or select it inside the cartridge game. Completing a checklist does not certify that the watch objectives succeeded. A Journey view may group the same records by their `chapter` values without creating another completion store.

Every objective now has two individual `directions` actions in `route.json`, maintained in `objective-directions.json`. These paraphrase the relevant objective, briefing, equipment use and mission messages; they avoid invented coordinates or turn-by-turn movements. In particular the Egyptian golden-gun floor puzzle is explicitly unresolved rather than supplied with an unverified tile sequence. Existing mission and objective IDs remain unchanged.

`secrets-guide.json` records source-derived bonus access, completion rewards and all twenty timed-cheat targets. The native [progression function](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/file2.c#L648) initially locks Aztec on Agent and Egyptian below 00 Agent even though their briefing objective definitions start at Agent internally. The guide therefore distinguishes objective thresholds from normal initial mission availability. It also identifies the native requirement for 007 difficulty: all twenty missions complete on 00 Agent. The [mission-end code](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/file.c#L38) and [target table](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/front.c#L760) supply timed-unlock behavior. These records are reference information and do not claim tested unlocks or that external browser assistance counts as an unassisted native run.

## Assistance

`cheat-reference.json` transcribes the built-in controller sequences from the [game’s recovered cheat implementation](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/cheat.c). Each sequence distinguishes the in-mission command from the Cheat Options menu unlock. These sequences are reference information, not a claim that a browser button successfully injected them.

The primary [libretro cheat database](https://github.com/libretro/libretro-database/blob/67504aaadaa3bdaf291f27ad2dfc7b8dc2803bad/cht/Nintendo%20-%20Nintendo%2064/GoldenEye%20007%20(USA).cht) supplies these global GameShark candidates:

| Assistance | Database entry | Code |
|---|---|---|
| Invincibility | 2683, Invincible [All Stages] | `800364B4 0001` |
| Infinite ammunition | 2682, Infinite Ammo (All Levels) | `80079E3B 0001` |

The recovered [bondview.c](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/bondview.c#L298) identifies a 32-bit boolean `g_PlayerInvincible` at `0x800364B4`, so a canonical full-word on write is `810364B4 0000+810364B6 0001` and full-word off is `810364B4 0000+810364B6 0000`. This avoids assuming which byte a native cheat previously set. The catalog’s 8-bit on code still makes the boolean nonzero. The ammunition candidate writes a byte and its zero counterpart is `80079E3B 0000`. Stopping a continuously applied cheat does not necessarily reverse a previous memory write; independent off controls must handle that explicitly. All wrapper options should default off and be labelled untested until runtime verification occurs.

The database also contains level-dependent raw health, armor, and ammunition addresses and code-injection patches. Those are not suitable as a universal armor checkbox without verifying level/address handling. Prefer global invincibility for the requested unlimited-HP assistance. Invincibility protects Bond, not Natalya, civilians, scientists, hostages, mission computers or objective objects.

## Observer research, intentionally not integrated

The recovered [objective status source](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/game/objective_status.c#L14) places ten objective pointers at `0x80075D30`, immediately followed by ten 32-bit objective statuses; this implies candidate status address `0x80075D58`. The enum in [bondconstants.h](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/src/bondconstants.h) has incomplete=0, complete=1, failed=2. These are source-derived candidate locations, not validated memory observations. Mission identity, loading/menu guards, emulator RAM byte ordering, state rewind and stale memory all require validation before automatic checklist completion is safe. Keep this release manual.

## Media extraction research

The pinned [file list](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/scripts/filelist.u.csv) identifies the game’s sample and sequence banks in the big-endian USA cartridge:

| Data | ROM offset | Length |
|---|---:|---:|
| Sound-effects control bank | 3,063,264 | 23,488 |
| Sound-effects sample bank | 3,086,752 | 797,360 |
| Music instrument control bank | 3,884,112 | 17,312 |
| Music instrument sample bank | 3,901,424 | 397,216 |
| Music sequence bank | 4,298,640 | 126,667 |

The same list names individual compressed native sequences. These banks are not browser audio files; slicing them does not by itself produce a music player. [SubDrag’s N64 tools](https://github.com/jombo23/N64-Tools) are the primary tool project for GoldenEye sequence/sample extraction. Its older [announcement by SubDrag](https://www.therwp.com/forums/archive/index.php/t-41720.html) explicitly documents GoldenEye MIDI support and an instrument lookup. [jsdf/n64soundtools](https://github.com/jsdf/n64soundtools) provides a command-line bank decompiler from CTL/TBL to instrument definitions and AIFF/AIFC. Actual waveform rendering, loop points, effects names and instrument matching remain separate work and must not be presented as completed extraction.

For graphics, the pinned [image offset list](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/imagelist.u.csv) and [image definitions](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/assets/images.def) provide 2,698 original texture records. The decomp project’s [pd-tex converter](https://github.com/n64decomp/007/blob/c4356466796c697dfd298010b9bed261f9ed8c6a/tools/mktex/README.md) converts extracted native textures to PNG, including available levels of detail; it needs libpng and make. These are original cartridge resources, not newly generated artwork. No extraction or audio rendering is claimed in this research handoff.

Private source downloads are under `../research-reference/`; do not include that entire research directory in the public player payload. Publish only selected intended content. There are no user save files in the supplied GoldenEye source folder.
