Files
goldeneye-pc-port/docs/dev/LEVEL-PLAYTEST.md
T
James Dansereau 811e9a62cf Bug-fix pass for reported issues #114-#119 (D424-D434)
Recoil byte order, crouch-tank interactions, auto-fire cadence in ticks,
hipfire turret tracking, light-fixture Gfx index parsing, hit-type byte
reads. Rule-2 sign-offs recorded for D424 and D427. Documentation re-triaged
onto a single tracker (docs/ROADMAP.md).

Refs: D424 D425 D426 D427 D428 D430 D431 D432 D434 #114 #115 #116 #117 #118 #119
2026-10-06 18:35:38 -04:00

3.9 KiB
Raw Blame History

LEVEL-PLAYTEST — WS6 human completion-validation checklist

Historical record — do not act on status claims in this file. This checklist predates the v0.4.0 input model (D332–D337) and the campaign sign-off; use it as a template only. Current open work and status: docs/ROADMAP.md (2026-09-29).

Run after docs/dev/LEVEL-STATUS.md is all-21 load+render PASS. This is the part that needs real input — a human plays each level start to finish and confirms it matches retail. Findings feed a WS5-style triage round (log each as a crash-class row or a new Dxx candidate).

How to run one level

export PATH="/c/msys64/mingw64/bin:$PATH" && ./build-pc.sh ntsc-final
./build-pc/ge007.x86_64.exe -level_XX          # bare — pools auto-injected (D121)

Controls: port/src/input.c — keyboard+mouse or SDL gamepad. Mouse-look is mode-aware since M-24 (hold RMB = analog aim). M-24 input/QoL changes + what to verify while playing: docs/M-24-QOL-REVIEW.md. Tune feel in data/ge007.ini [Input] (MouseAimSpeed 50, MouseTurnSpeed 100, MouseInvertY 0) with the game closed. Known residual (do not re-log): D118a — hipfire pitch is digital vs analog yaw. F12 = screenshot to ppm/shot_NNN.ppm. Mouse wheel = cycle weapon. Alt-Enter = fullscreen. Alt-tab away frees the cursor (re-grabs on focus). Title bar shows FPS. Difficulty for a bare -level_XX boot defaults to Agent; use the menu path (mission select → difficulty) to test 00/007.

Objective status: src/game/objective_status.c (get_status_of_objective() :161); objective propDefs are PROPDEF_OBJECTIVE_* (bondconstants.h:4332).

Per-level checklist (copy this block per level)

### <Level> (-level_XX)   difficulty tested: [ ] Agent  [ ] Secret Agent  [ ] 00 Agent

- [ ] Spawn point + start orientation match retail
- [ ] Geometry / textures / lighting recognisable, no missing rooms
- [ ] Guards spawn, path, react, take/deal damage, die correctly
- [ ] Doors / lifts / switches / destructibles work
- [ ] Pickups (ammo, armour, key items, gadgets) present and collectable
- [ ] Each difficulty-gated objective reachable AND registers COMPLETE
      (objective_status)
- [ ] Alarms / reinforcements / scripted events fire
- [ ] Level exit trigger fires → MISSION COMPLETE (not a hang / wrong screen)
- [ ] Auto-advance to next briefing works
- [ ] Frame rate + timing acceptable
- Notes / defects:

The 20 solo missions (+ ending sequence; mission order — numbers = -level_XX)

# Level -level Briefing asset
1 Dam 33 UbriefdamZ
2 Facility 34 UbriefarkZ
3 Runway 35 UbriefrunZ
4 Surface 1 36 UbriefsevxZ
5 Bunker 1 09 UbriefsevbunkerZ
6 Silo 20 UbriefsiloZ
7 Frigate 26 UbriefdestZ
8 Surface 2 43 UbriefsevxbZ
9 Bunker 2 27 UbriefsevbZ
10 Statue 22 UbriefstatueZ
11 Archives 24 UbriefarchZ
12 Streets 29 UbriefpeteZ
13 Depot 30 UbriefdepoZ
14 Train 25 UbrieftraZ
15 Jungle 37 UbriefjunZ
16 Control 23 UbriefcontrolZ
17 Caverns 39 UbriefcaveZ
18 Cradle 41 UbriefcradZ
19 Aztec 28 UbriefaztZ
20 Egypt 32 UbriefcrypZ
— Ending sequence ("Cuba") 54 not a playable mission — cast/credits stage (D129)

(Mission table: front.c, mission_folder_setup_entries — exactly 20 playable missions; the game's own enum says it, SP_LEVEL_MAX // 20 in bondconstants.h). "Cuba" (-level_54, LEVELID_CUBA) is not a selectable mission: after the final mission the front end jumps straight to it for the extended cast display + credits scroll (front.c selected_stage = LEVELID_CUBA → do_extended_cast_display(TRUE); bondviewRenderCredits, D129). Older docs and sweep logs count it as a 21st "level" — the campaign is 20 missions; "21/21" sweep results mean 21 stage boots, of which 20 are missions.)