Files
goldeneye-pc-port/docs/dev/CUT-CONTENT-BACKLOG.md
T
James Dansereau de6c875bb8 docs: cut-content research — article bodies recovered, claims verified vs decomp
All six TCRF article bodies were extracted (backlog/cut-content/articles/,
gitignored) and cross-referenced against src/ + assets/obseg/. Full verified
findings with file:line refs land in backlog/cut-content/RESEARCH.md.

Verified 1:1: the 11 unused cheats (CHEAT_ID enum vs cheat.c grant table),
music track index (MUSIC_TRACKS enum vs Notes-page GS index), MP character
table (~40 entries, 1.0446 eye height), all unused text strings (LmiscE/LgunE/
LpropobjE/LtitleE), build dates (compiletime.c), Spectrum emulator plumbing
(front.c MENU_SPECTRUM_EMU — only the transition is missing).

Corrections to TCRF/first pass: bg_dest is shipped Frigate geometry (not an
early version); cryp/dish are shipped Egypt/Temple; Library/Stack share
Basement's bg_ame; 28 of 29 unused items exist in the object table.

Tracked doc updated to point at the research file; backlog/ gitignored.
2026-09-14 01:02:07 -04:00

18 KiB
Raw Blame History

CUT-CONTENT-BACKLOG — TCRF "cutting room floor" findings vs decomp/port

Research branch: research/cut-content-backlog. Source of truth: the local TCRF export at scratchpad/backlog-scrape/restore-cut-content-mod/ (gitignored).

Superseded by the verified cross-reference. All six article bodies were recovered and every major claim was checked against the decomp source and asset tables. The full verified findings (with file:line references, corrections to TCRF, and updated mod tiers) live in backlog/cut-content/RESEARCH.md (gitignored; article markdowns in backlog/cut-content/articles/). This doc is the first pass (image-filename based) — read it for the per-item imagery index, but trust RESEARCH.md where they disagree. Key corrections: (1) "dest" is the shipped Frigate geometry, not an early version (bg.c levelinfotable); cryp/dish are shipped Egypt/Temple; (2) Library/Stack share Basement's bg file — they have geometry; (3) all 29 "unused items" exist in the ROM object table as pickup+prop pairs except heroine; (4) TCRF's 11 unused cheats, music track index, MP character table and build dates all verify 1:1 against bondconstants.h/cheat.c/front.c/compiletime.c.

1. Findings

A. Debug menu & dev tools — fully in the ROM, fully compiled into the PC build

TCRF main page images: GEDebugMenu, GECheatOptions, GoldenEye-displayspeed, GoldenEye-moveview, GoldenEye-LineMode, GoldenEye-testingmanpos, GoldenEye-gunwatchpos.

All of these exist in decompiled code:

  • Debug menu — src/game/debugmenu_handler.c (1202 lines). Opened by holding U + D C-buttons (debug_menu_processor, ~line 451; wired into boss.c:551 and the main game loop). Full option list at lines 116–185: move view, stan view, bond view, level / region / scale (level switching), play title, bond die, select anim, gun pos, flash colour, hit colour, music, sfx, invincible, visible, collisions, all guns, max ammo, display speed, background, props, stan hit / stan region / stan problems, print man pos, port close / port inf / port approx, pr room loads, show mem use / show mem bars, grab rgb / grab jpeg / grab task (screenshots), rnd walk, record ramrom / replay ramrom / save ramrom / load ramrom (input recording/replay!), auto y aim, auto x aim, agent / all / fast (unlock flags), objectives, marg top/bot/left/right/reset, screen size, screen pos, show patrols, intro / intro edit / intro pos, world pos, gun key pos, vis cvg.
  • Free camera — src/game/debug_camera.c (the "move view" option).
  • Load-all-models tool — src/game/deb_loadallmodels.c (used by initguards.c; dumps every model — how the TCRF screenshots of unused models were likely made).
  • Line mode — CHEAT_LINEMODE in src/game/cheat.c:685 (wireframe toggle, cheat-menu unlockable; front.c:1017).
  • Screenshot options (grab rgb/grab jpeg) call indyGrabRgb32bit() / indyGrabJpg32bit() — N64 VI grabs; on PC these are the natural hook for the port's existing screenshot QoL (see feat/qol-mute-screenshot lineage).

Status: Tier 0. Everything compiles into the PC build (CMakeLists.txt GLOB_RECURSE src/game/*.c). The debug menu should already work in the PC port if U+D C-buttons can be produced by port/src/input.c. Verify in-game (open menu, toggle display speed, use free cam). Mod value: document it; consider a config/keybind that synthesizes the U+D c-button hold, and mapping grab rgb to the port's screenshot path.

B. Cut weapons — fully functional in the ROM, grantable via existing cheat codes

TCRF images (main + prerelease pages): GoldenEye-Taser[PR], GoldenEye-KF7[PR] (+KF7Watch), GoldenEye-GrenadeLauncher[PR], GoldenEye-RocketLauncher[PR] (+RocketLauncherWatch), GoldenEye-RifleLauncher (+RifleLauncherCheat), GE64_Shotgun1, watch variants MagnumWatchPR, PP7WatchPR, KlobbWatchPR, TaserWatch.

Evidence in code/assets:

  • Model + stat files exist for every cut gun under assets/obseg/gun/: taser/, rocketlaunch/, grenadelaunch/, fnp90/, spectre/, autoshot/, ak47/, m16/, skorpion/ … each with gunWeaponStat.inc.c + ModelFileHeader.inc.c.
  • assets/obseg/gun/gunWeaponStats.inc.c: complete WeaponStats for taser_stats (line ~365), rocketlaunch_stats (~305), grenadelaunch_stats (~295), plus watchlaser_stats, tank_stats, bombcase_stats, etc. These are data-driven — the weapon engine (src/game/gun.c, gunfire.c) will run them.
  • First-person view cases exist: src/game/bondview_r.c:38 handles ITEM_GRENADELAUNCH, :41 ITEM_ROCKETLAUNCH.
  • Cheat codes grant them: src/game/cheat.c — CHEAT_2X_ROCKET_LAUNCHER (line 711), CHEAT_2X_GRENADE_LAUNCHER (712), CHEAT_2X_RCP90 (713), plus unlock sequences (CHEAT_UNLOCK_2XGL/2XRL/2XFNP0, lines ~695–734) and the grant logic at lines 1277–1310: bondinvAddInvItem(ITEM_ROCKETLAUNCH) / give_cur_player_ammo(AMMO_ROCKETS, …) etc. Note the #if defined(BUGFIX_R1) guards — check which region macros the PC build defines (non-negotiable #3).
  • Taser SFX exist: GUN_TASER_SFX / GUN_TASER_LOOP_SFX (src/bondconstants.h:2271).
  • ITEM_TASER is in the item enum and used as an inventory bound in bondinv.c:854 (JP-text-trigger branch) — the taser was closest to shipping.

Status: Tier 0/1. Rocket launcher, grenade launcher and FN P90 are playable today via the game's own cheat codes (single-player). Taser/Spectre/ AutoShot have no cheat path but everything needed is in the binary; a port-layer toggle calling the same bondinvAddInvItem + give_cur_player_ammo pair the cheats use would be a clean mod (no game-logic change — it replicates an existing code path). Watch-mounted variants (KF7/Magnum/PP7/Taser watch) are not in the item enum — likely cut before data landed; unverified whether any model exists beyond what TCRF shows.

C. "Unused items" page (intact imagery) — objects with full logic, never placed

The 20 intact images correspond exactly to ROM object entries (assets/obseg/file_resource_table.inc.c, 781 entries):

Image Resource ID Notes
GE007-AudioTape AUDIOTAPE / CHRAUDIOTAPE (lines 125, 265) pickup + prop variants
GE007-BombCase BOMBCASE (129) has full bombcase_stats (throwable explosive)
GE007-Controller N64 controller model (joypad/ dir in gun table) desk prop
GE007-WatchMagnetRepel ITEM_WATCHMAGNETREPEL (bondconstants.h:4190) watch function, use-logic present
GEMicroCamera MICROCAMERA (176) + AMMO_MICRO_CAMERA
GoldenEye-Weapon_Case ITEM_WEAPONCASE (gunfire.c:3066 use-case)
GE007-PolarizedGlasses POLARIZEDGLASSES (185) + ITEM_POLARIZEDGLASSES darkglasses/ also present
GoldenEye-Plans PLANS (183) blueprints/ variant too
GoldenEye-Watch_Identifier WATCHIDENTIFIER (208) + ITEM_WATCHIDENTIFIER (gunfire.c:3076) 4th watch function with use-anim, never spawned
GoldenEye-Safecracker SAFECRACKERCASE (190)
GoldenEye-Watch_Communicator / Watch_Geiger_Counter ITEM_WATCHCOMMUNICATOR / ITEM_WATCHGEIGERCOUNTER (bondconstants.h:4188-89) shown for contrast — these are used (Aztec)
GEGasKeyring GASKEYRING (157) + ITEM_GASKEYRING

All have GUN_ANIM_STATE_USE_ITEM handling in gunfire.c:3060-3084 — i.e. the game can use them; level data just never places them.

Status: Tier 1/2. Granting any of these to Bond is a port-layer item-spawn (same mechanism as §B). Actually placing them in levels requires ROM/level-data editing (a level editor or hand-patched object tables) — Tier 2, out of scope for this repo but viable as a data mod.

D. Cut multiplayer maps — 8 commented-out menu entries with dev notes

src/game/front.c:556-573 multi_stage_setups[]: the shipped MP list is Random/Temple/Complex/Caves/Library/Basement/Stack (default) + Facility/Bunker2/ Archives/Caverns/Egypt (progression-unlocked). Immediately below, commented out with in-source dev annotations:

  //{... LEVELID_CITADEL ...}, //Citadel (old format setup)
  //{... LEVELID_FRIGATE ...}, //dest (has xbla setup)
  //{... LEVELID_STATUE ...},  //stat (works)
  //{... LEVELID_CRADLE ...},  //crad (works)
  //{... LEVELID_AZTEC ...},   //azt (needs setup)
  //{... LEVELID_RUNWAY ...},  //runway (xbla setup)
  //{... LEVELID_DAM ...},     //dam (xbla setup)
  //{... LEVELID_DEPOT ...},   //depot (xbla setup)

TCRF imagery matches: GECitadel* (5 screenshots, main page), GEStatueMulti, GECradleMulti, the whole Depot image set (DepotCrateStack, DepotRockets, DepotSafeTable, DepotSiloPipe[Ed], DepotTrailers, DepotPhoto), and GoldenEye-FrigateMap.

The port already boots every one of these standalone (-level_XX; see docs/dev/LEVEL-STATUS.md — Statue -level_22, Train -level_25, etc. all PASS). So the geometry, AI setup and briefings (assets/obseg/brief/UbriefdepoZ.c, UbrieftraZ.c, …) are intact; only the MP menu entry was removed.

Status: Tier 3 (mod fork). Re-enabling = editing a game data table in src/game/front.c — that's a game-logic change, disallowed in this repo (non-negotiable #2). Viable as a separate mod branch/fork ("8 more MP maps"), or as a documented cheat-menu route (the debug menu's level/region options may already jump to any level ID — verify).

E. Per-level unused props & geometry ("Unused stuff by level" page)

~150 intact screenshots, grouped by level. Cross-referenced against the object table and level IDs:

  • Streets (campaign stage 12; LEVELID_STREETS): an entire prop kit was never placed — StreetsCars, StreetsLamp[Base/Big], StreetsSign[2/3], StreetsTrafficLight, StreetsShovel, StreetsCrossing, plus two cut set pieces GE64-StreetsArea1/2 and Ourumov's car driving/crashing (StreetsOuruGo, StreetsOuruCrash, GEOurumovsCar). Suggests a cut street-chase scene.
  • Silo: SiloVentShaft, SiloLadder, SiloLaunchDoors, SiloWalkway2Door/Guard, SiloMissingHandrail (a bug/oddity screenshot), GoldenEye_UnusedStartingPoint, and prerelease-only PRSiloElevator, PRSiloLamps, SiloCutWalkway, ThirdSiloEditor (editor view of a third silo that didn't ship).
  • Facility: PR-vs-final wall sets (FacilityWalls[Final], PRFacilityWalls, ArchivesWalls), plus cut rooms: FacilityBathroom, FacilityConveyor, FacilityGasTanks, FacilityLabTanks, FacilityWalkway, FacilityArmedScientistPR, FacilitySatBoxTex, GoldenEye007-FacilityPhoto.
  • Archives: ArchivesOverview, ArchivesLamp[Scan], ArchivesPhoto, PRArchivesNoWalls (wall-less build view).
  • Bunker: BunkerExtraMons[Side] (extra monster/guard spawns), BunkerPIP, PR BunkerLamp.
  • Caverns: CavernsPursueObj (a cut "pursue" objective marker), PR CavernsWalkway.
  • Dam: DamIsland, DamPlatform, DamDockDoors, DamEndDuct, DamTruckDoor; region-diff shots DamCompUS/EU.
  • Frigate: FrigateHarpoonScan (scan of a harpoon model), PRTrainTargetGlass, Pdest_harpoonZ[2], Ptorpedo_rack, FrigateMoneypennyPR (a Moneypenny model in the Frigate PR build!), region-diff FrigateIntroUS/JP.
  • Aztec/Temple: AztecConsolePads1-4, GE-AztScreen2781/2789, AztExtraMainframe, AztDronePadsLabel, unused-Aztec-Path (a whole unplaced path), EgyptianRed/WhiteClouds (two skybox variants), TempleSkySolo/Multi, PR: AztBlueSuitPR (cut enemy suit), AztHeavyFogPR, AztTableScreensPR.
  • Surface: SurfaceBookCrate, SurfaceObsPad, SurfaceTower, SurfaceJerryCan, SurfaceHutTable, SurfacePropHut, PR SurfaceOverviewPR, SurfaceVent[PR], SurfaceDish[PR].
  • Train (campaign stage 14): GE007-TrainSecretRoom (a hidden room), TrainTargetGlass.
  • Misc props/vehicles: GEMotorbike, GERedTruck, GESovietBoat, GEHelicopterPilot, GEBiker, GoldenEye-moonfemale (moonfemale/ chr model exists), OurumovKey/Briefcase, GEDeskMat, GoldenEye-Crypt (confirmed orphaned map — see note below), GE64-BridgeRooms, GEJunglePicture, Runwaypicture, Controlicon, Cactus.
  • Orphaned level geometry — assets/obseg/bg/ holds per-level dirs for ame arch arec ark azt cat cave crad cryp dam depo dest dish len oat ref run sev sevb sevx silo stat tra. Notable: cryp (Crypt) has full geometry + briefing (UbriefcrypZ.c) but no LEVELID_CRYPT entry in bondconstants.h — fully orphaned. len (Lenin statue area, cf. StatueLeninPR) and dish/cat/oat/arec/ame/ark/ref are further level dirs beyond the shipped set. No citadel dir — its geometry was either removed or shared (TCRF's 5 Citadel screenshots show a finished map, so it existed in some build).

Status: Tier 2. All models are in the ROM's object table (spot-checked: PchrtesttubeZ, Pdest_harpoonZ, Pdoor_roller1-4Z, PhatfurryZ, Pletter_tray1Z, Pmissile_rackZ, PsilencerZ, Psteel_door2[ b]Z, Ptorpedo_rack). Placing them needs level-data editing (object spawn tables) — a data-mod / level-editor project, not a port change. The PR-vs-final texture pairs (*PR__1vt.jpg) are interesting for a "pre-release textures" cosmetic mod via the tools_pc asset pipeline — but the PR ROM itself isn't available here, so source assets would have to come from TCRF's screenshots (low-res) or a donated PR dump.

F. Unused characters & faces

TCRF main-page imagery: UnusedFace1/2/3 (each with F/S1/S2 views), GE64-FemHead1-4, KenFaceUnused/Used, Rosika[Compare], SciCompare, FemaleSci, GEBonds, Terrorists, TerroristBiker, StPetersburgGuard, Bond-suit sets named after actors: Connery*, Dalton*, Moore* (each with HeadFront/Back/Left/Right + Jacket pieces), GEArmor[our].

Cross-reference:

  • The MP character table (front.c:601+ mp_chr_setup[]) is huge — ~40 named entries beyond the 8 selectable, including ROSIKA, KARL, MARTIN, MARK, DAVE, DUNCAN, … TERRORIST, BIKER, STPETERSBURGGUARD, HELICOPTERPILOT — Brosnan-body + swapped-head combos. The "unused faces" are almost certainly extra head models in this pool that no body/entry uses.
  • Head model dirs exist under assets/obseg/chr/: headken (the Ken face), headbrosnan* (4 costume variants), moonfemale, plus ~30 named heads. The actor-named suits (Connery/Dalton/Moore) do not appear as chr dirs — likely cut before model export, or embedded in a shared body file. Unverified which exact models the TCRF face shots show.

Status: Tier 2/3. Cosmetic mod (extra MP faces) = asset-level work if the models are in the ROM; verify by dumping assets/obseg/chr/*/Model.c headers.

G. Prerelease / dev-build evidence

Prerelease page (body blocked; filenames + embeds only):

  • PR-vs-final comparison pairs: Taser, KF7, GrenadeLauncher, RocketLauncher (+watch versions), SurfaceVent/Dish, StatueLeninPR, Facility walls/rooms (§E), ArchivesWalls, CavernsWalkway, SiloCutWalkway, ThirdSiloEditor, PRSiloElevator, BunkerLamp, OutletConsoles. Pattern: the PR build had more weapons (watch-mounted guns!) and different Facility/Silo/Aztec geometry.
  • Dev-build videos (YouTube embeds captured in the export):
    • "Goldeneye 007 - Shoshinkai/Space World 1996"
    • "Nintendo of America E3 1996 Take Away Video (VHS Rip)"
    • "Goldeneye Beta WalMart Video"
    • "Goldeneye 007 Promotional Trailer 1996"
    • "N64 vous n'en reviendrez pas (VHS RIP 1997)"
    • "64History - N64 B-Roll (1995)"
    • "Escape (Banjo-Kazooie, GoldenEye 007)" — engine sibling footage. Useful for dating PR features; not actionable in-repo.

H. Misc oddities (main page, unverified)

  • GoldenEye007MickeyMouse (by-level page, 2 KB image) — no "mickey" object in the resource table; likely a texture/model easter egg spotted in a level.
  • Unused_bond_walk.gif — an unused Bond walk animation (check assets/animationtable_entries.c for orphaned anim IDs).
  • GoldenEye007-MovieLogoUnused / -MovieNoLogoUnused — alternate intro logo frames (title sequence data; src/game/brief*? verify).
  • GE_UnusedAlarm, GoldenEye-BloodImpact / BoxBlood / PR OpaqueBlood — blood-effect variants (cf. src/game/blood_animation.c).
  • GoldenEye007-BarrelUnused / -SmallBarrelUnused — barrel props never placed.
  • GoldenEye-OddDay, Sight[Alt], MountainTex, background, Pbin1Z, PchrtesttubeZ[Explode], PitonGunBungee, Psev_door[3_wind]Z — props in the table, placement unverified.
  • Bugs & Notes articles: nothing recoverable from this export — re-scrape.

2. Feasibility summary

Tier Item Effort Where it lands
0 — already works Debug menu (U+D C-hold), free cam, line mode, ramrom record/replay, cheat-grantable rocket/grenade/P90 verify in-game; document keybinds docs + maybe input.c keybind for U+D c-buttons
1 — port-layer hook Grant taser/spectre/autoshot + unused items (watch identifier, bomb case, …) via config toggle replicating the cheat grant path (bondinvAddInvItem + give_cur_player_ammo) small; follow F10-toggles pattern (feat/f10-game-toggles) port/src/ only
2 — data/asset mod Place unused props per level; extra MP faces; PR texture swap needs level-editor or object-table patching; separate project data mod, not this repo's code
3 — game-logic change (mod fork) Re-enable 8 cut MP maps (front.c table), campaign reordering one-line-per-map table edits + setup fixes ("xbla setup" = unknown editor flag) separate mod branch/fork only

3. Next steps

  1. In-game verification pass (PC build): open debug menu; confirm free cam, display speed, level switch; enter the 2X rocket/grenade/P90 cheat codes; screenshot via grab rgb. Record results here + findings.md if anything new breaks (Dxx).
  2. Confirm which region macros the PC build defines vs the BUGFIX_R1 guards in the weapon-grant cheats (non-negotiable #3) — the grants may be dead code in our build.
  3. Dump assets/obseg/chr/ model headers to identify the UnusedFace1-3 / FemHead1-4 models concretely.
  4. Re-scrape TCRF article bodies — done; all six bodies recovered into backlog/cut-content/articles/ and cross-referenced (see RESEARCH.md §0).
  5. If Tier-1 item granting is wanted: spec it as an F10 toggle set, port-layer only, each entry citing the cheat-code precedent in cheat.c.