- Introduced new binary files for user data and database. - Updated project state to include new paths for Spanish executable. - Added detailed notes on Spanish cheat/debug differences in a new document. - Revised mid-project plan to reflect findings from localized build comparison.
177 lines
No EOL
8.7 KiB
Markdown
177 lines
No EOL
8.7 KiB
Markdown
# Spanish `CRUSADER.EXE` Cheat / Debug Differences
|
|
|
|
This note records a focused live-Ghidra pass over the Spanish executable opened from `/es/CRUSADER.EXE` and compares the known English cheat/debug control areas against the Spanish build.
|
|
|
|
## Scope
|
|
|
|
- Target analyzed in Ghidra MCP: `/es/CRUSADER.EXE`
|
|
- Comparison baseline: live English `CRUSADER.EXE` findings already recorded in [docs/ne-segment1.md](docs/ne-segment1.md)
|
|
- Goal: determine whether the Spanish executable changes the known `-laurie`, cheat-gate, F10, `Ctrl+Q`, Hack Mover, and secret-sequence lanes enough to support claims about different cheat behavior
|
|
|
|
## Summary
|
|
|
|
Current best read: the Spanish executable does **not** show a materially different cheat/debug framework in the known control areas.
|
|
|
|
What changed is mostly address placement, not behavior:
|
|
|
|
- the broad cheat/debug gate, gameplay-input gate, and low-level keyboard-cheat latch all still exist
|
|
- the same hidden/debug event lanes are still present behind the broad gate
|
|
- the `-laurie` parser still exists and still uses English-facing text
|
|
- the Laurie hint string and multiple cheat/debug status strings are still English in the Spanish build
|
|
- the `Ctrl+Q` lane is still the CD transfer display toggle, not the immortality toggle
|
|
- the Hack Mover toggle lane is still present
|
|
|
|
What is **not** yet proven from this pass is the exact secret scan-code matcher table. No replacement secret sequence was recovered in the known cheat areas, but the secret-sequence table itself was not directly pinned down in this Spanish session.
|
|
|
|
## Verified Spanish Mapping
|
|
|
|
### Master Cheat / Debug Gate
|
|
|
|
- `1478:0910` is the Spanish build's broad cheat/debug master gate.
|
|
- It is written by the `-laurie` parser at `1050:0985`.
|
|
- It is read by the same large hidden/debug event handler family inside `World_HandleKeyboardInput` at `13e8:14b4`.
|
|
|
|
Recovered gated case sites include:
|
|
|
|
- `13e8:19da`
|
|
- `13e8:1a0a`
|
|
- `13e8:1a36`
|
|
- `13e8:2211`
|
|
- `13e8:243c`
|
|
- `13e8:24a5`
|
|
|
|
This matches the English-side model where one broad master gate enables several hidden/debug event handlers.
|
|
|
|
### Gameplay Input / Option-Key Gate
|
|
|
|
- `1478:0927` is the gameplay-input / option-key gate in the Spanish build.
|
|
- It is set during `Game_Start` at `1028:0127`.
|
|
- It is cleared in `ComputerGump_CreateGump` at `13a0:01f5`.
|
|
- It is restored at `13a0:0233` during the paired computer-gump teardown path.
|
|
|
|
This is the same structural role already established in the English build: broader gameplay-input eligibility, not a separate cheat-state bit.
|
|
|
|
### Low-Level Keyboard Cheat Latch
|
|
|
|
- `1478:5fb3` is the Spanish build's low-level keyboard-cheat latch.
|
|
- It is read repeatedly from `13e8:14b4` in the same family of keyboard/debug checks.
|
|
- Helper setters at `13e8:0071` and `13e8:0077` write `1` and `0` respectively, and are called from the Laurie-hint/computer-gump-side helper `13e8:0e31` setup path.
|
|
|
|
This is the strongest live evidence that the Spanish build still preserves the same broad split between a master cheat/debug gate and a narrower keyboard-latch state.
|
|
|
|
## Verified Hidden / Debug Event Lanes
|
|
|
|
### CD Transfer Display (`Ctrl+Q` Family)
|
|
|
|
The Spanish build still preserves the English-side `Ctrl+Q` conclusion:
|
|
|
|
- `13e8:2211` is the `0x410` event lane under the broad gate at `1478:0910`
|
|
- it toggles byte `1478:5fb7`
|
|
- it posts the same English strings:
|
|
- `1478:6022` = `CD TRANSFER DISPLAY ACTIVE.`
|
|
- `1478:603e` = `CD TRANSFER DISPLAY INACTIVE.`
|
|
|
|
That is consistent with the English analysis: this lane is still CD transfer display state, not immortality.
|
|
|
|
### Hack Mover
|
|
|
|
The Spanish build still preserves the Hack Mover toggle lane:
|
|
|
|
- `13e8:249b` first requires `1478:8ad6 != 0`
|
|
- `13e8:24a5` toggles byte `1478:5fb2`
|
|
- it posts:
|
|
- `1478:605c` = `HACK MOVER ON`
|
|
- `1478:606a` = `HACK MOVER OFF`
|
|
|
|
So Hack Mover remains present and still uses English-facing status strings in this localized executable.
|
|
|
|
That extra `1478:8ad6` pre-check matters. In the English build, Hack Mover was already strongest as a two-latch feature: it wanted the broader Laurie/debug gate plus a second post-sequence latch. The Spanish build still shows that same two-stage shape at the branch level, even though the exact sequence writer has not yet been re-identified.
|
|
|
|
### Overlay / Hidden Debug Toggles
|
|
|
|
The Spanish build keeps the same broad gated overlay/debug cases:
|
|
|
|
- `13e8:19da` toggles byte `1478:0f40`
|
|
- `13e8:1a0a` toggles byte `1478:2be7`
|
|
- `13e8:1a36` toggles byte `1478:2be8`
|
|
|
|
These are the same structural hidden/debug lanes already identified in the English build.
|
|
|
|
## Laurie Path
|
|
|
|
The Laurie hint path is still present and still English-texted:
|
|
|
|
- `13e8:0e31` is the Laurie-hint computer-gump path in the Spanish build
|
|
- `1478:5fc6` still contains `FART ...TRY... -laurie (Have fun, Jely)`
|
|
|
|
The startup-side cheat text also remains English:
|
|
|
|
- `1478:0b45` = `Cheats are active.`
|
|
|
|
This is strong evidence against any broad localization-driven rewrite of the cheat/debug feature family.
|
|
|
|
## F10 / Option-Key Side
|
|
|
|
The Spanish executable's option-key handler moved relative to the English live notes:
|
|
|
|
- the relevant function object lives at `1138:0896` in this build, not the English-side `1130:0896`
|
|
|
|
But the structure is still familiar:
|
|
|
|
- it checks gameplay-input state through `1478:0927`
|
|
- it reads surrounding controller/current-NPC state from the same neighborhood used by the English build
|
|
- the wider controller family around `1138:0896` / `1138:0b2d` / `1138:0d34` still looks like the same option-key and movement/control subsystem, just relocated
|
|
|
|
This pass did **not** fully re-close the Spanish F10 immortality leaf the way the English build is already documented, but there is no recovered evidence here that the Spanish build replaced the F10 cheat/control family with a different system.
|
|
|
|
## Secret Sequence Status
|
|
|
|
This pass now closes part of the Spanish-side uncertainty more tightly: the live Spanish build does **not** preserve the English `jassica16` scan-code table as a static data object in the obvious old locations.
|
|
|
|
Direct live byte-scan results against `/es/CRUSADER.EXE`:
|
|
|
|
- the exact English table `24 1e 1f 1f 17 2e 1e 02 07 00` was **not** found anywhere in initialized data `1478:0000-8c3f`
|
|
- the same exact table was **not** found in BSS / secondary data `1480:0000-1fff`
|
|
- even the shorter `jassica` scan-code prefix `24 1e 1f 1f 17 2e 1e` was absent from both of those Spanish data segments
|
|
- the old English-side matcher slot at `1478:2833` no longer contains the sequence bytes at all; it now reads as pointer-like words beginning `14 e8 11 3d 14 e8 11 02 05 28 10 ...`
|
|
|
|
What can be said safely:
|
|
|
|
- no alternate replacement secret sequence was recovered yet
|
|
- the English `jassica16` static data table is not present in the live Spanish data map where the English build keeps it
|
|
- the same surrounding cheat/debug framework remains intact
|
|
- the same `-laurie` parser, Laurie hint path, CD-transfer-display lane, Hack Mover lane, and broad hidden/debug gated event family all survive in recognizably the same form
|
|
- Hack Mover still has a second hidden precondition via `1478:8ad6` in addition to the broad gate at `1478:0910`, which is consistent with the Spanish build still retaining some post-sequence-style latch
|
|
|
|
So the live evidence now splits cleanly into two layers:
|
|
|
|
- the **framework** still matches the English cheat/debug family
|
|
- the **exact English `jassica16` data table** does not survive as the same static table in this Spanish target
|
|
|
|
Current best read:
|
|
|
|
- the online claim that the Spanish build still uses the exact same static `jassica16` table is **not** supported by the live Spanish data-segment bytes
|
|
- this pass still does not prove a replacement code
|
|
- the remaining possibilities are narrower: the Spanish build either moved the matcher into code, rebuilds it dynamically, or uses a different hidden sequence while preserving the same surrounding cheat/debug framework
|
|
|
|
## Comparison Outcome
|
|
|
|
The Spanish build differs from the documented English build mainly by address relocation, not by cheat/debug behavior.
|
|
|
|
Confirmed same-family behaviors:
|
|
|
|
- broad `-laurie` / hidden-debug gate still present
|
|
- gameplay-input suppression gate still present
|
|
- separate low-level keyboard-cheat latch still present
|
|
- `Ctrl+Q` still maps to CD transfer display, not immortality
|
|
- Hack Mover lane still present
|
|
- Laurie hint path still present
|
|
- English cheat/debug strings still embedded in the Spanish executable
|
|
|
|
Unclosed item:
|
|
|
|
- direct proof of the Spanish secret scan-code matcher routine and the exact writer of the secondary latch at `1478:8ad6`
|
|
|
|
## Recommended Follow-Up
|
|
|
|
If the Spanish question is revisited, the next focused step should be a direct recovery of the Spanish secret-sequence matcher routine and the writer for `1478:8ad6`, rather than another sweep of the already-stable broad cheat/debug event lanes. |