fs2port/port/PORT_64K_AUDIT.md

44 lines
2.4 KiB
Markdown

# 64K Feature Audit
Every entry of chunk5's `PatchTable` (`Apply64KPatchTable`) redirects a
48K stub into a chunk3 routine when the game finds a language card. The
port never executes the patch table; `chunk5Boot` sets `patched64K` and
each patched call site chooses the chunk3 translation on that flag
(`Has64K` at `$08C6` is forced to 1, mirroring the oracle's boot).
Updated 2026-09-06.
| Patch hook | Port |
|---|---|
| `LookupADFStation` (`$05` record) | `chunk3LookupADFStation` |
| `ApplyWind` | `chunk2ApplyWind` |
| `ComputeWindComponents` | `chunk2ComputeWindComponents` |
| `ComputeDayPhase` | `chunk3ComputeDayPhase` |
| `HandleCrashOrSplash` | `chunk3HandleCrashOrSplash` |
| `RealityModeHook` | `chunk3RealityModeHook` |
| `DrawSlewOverlays` | `chunk3DrawSlewOverlays` |
| `CoursePlottingSystem` | `chunk2CoursePlottingMenu` |
| `UpdateCoursePlotter` | `chunk2UpdateCoursePlotter` |
| `DemoMode64K` | `chunk2DemoMode64K` |
| `UpdateAltimeter10K` | `chunk2UpdateAltimeter10K` |
| `ADFKeyboardHook` | `chunk3ADFKeyboardHook` |
| `RequestADFStationLookup` | `chunk3RequestADFStationLookup` |
| `UpdateADFIndicator` | `chunk3UpdateADFIndicator` |
| `DrawViewOverlays` | `chunk3DrawViewOverlays` |
| `UpdateInstrumentLights` | `chunk3UpdateInstrumentLights` |
| `UpdateEngineWithMagneto` | `chunk3UpdateEngineWithMagneto` |
| `DrawMagnetoStateHook` | `chunk3DrawMagnetoStateHook` |
| `SetMagnetoFromA` | `chunk3SetMagnetoFromA` |
| `SelectRadarViewPatch` / `Select3DViewPatch` | `chunk3SelectRadarViewPatch` / `chunk3Select3DViewPatch` |
| `HideOrShowInstruments` | `chunk3HideOrShowInstruments` |
| `DrawATISMessage` | `chunk3DrawATISMessage` |
| `UpdateCOMMessageChunks` | `chunk3UpdateCOMMessageChunks` |
| `KeyDecreasePatch` / `KeyIncreasePatch` | `chunk3KeyDecreasePatch` / `chunk3KeyIncreasePatch` |
| `SceneryLoaderEntry1..7` | `chunk3SceneryLoaderEntry` (entries 5 and 7 hold no code in this build) |
| `ShowWarReport` | `chunk3ShowWarReport` (called by the WW1 overlay) |
| `SceneryRotatedTransform` (`$03` opcode) | `chunk3SceneryRotatedTransform` |
| `SceneryOp64KCallback` (`$0E` opcode) | `sceneryVm.c`: jump to the absolute address in the stream |
The regression scripts in `port/tools/verify/regress.sh` run with
64K mode on, so every hook above is exercised against the oracle
wherever a key script reaches it (ADF, reality mode, night lights,
crash, course plotter, demo, WW1 and the war report included).