19 KiB
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.EXEfindings already recorded in 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
-laurieparser 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+Qlane 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:0910is the Spanish build's broad cheat/debug master gate.- It is written by the
-laurieparser at1050:0985. - It is read by the same large hidden/debug event handler family inside
World_HandleKeyboardInputat13e8:14b4.
Recovered gated case sites include:
13e8:19da13e8:1a0a13e8:1a3613e8:221113e8:243c13e8:24a5
This matches the English-side model where one broad master gate enables several hidden/debug event handlers.
Gameplay Input / Option-Key Gate
1478:0927is the gameplay-input / option-key gate in the Spanish build.- It is set during
Game_Startat1028:0127. - It is cleared in
ComputerGump_CreateGumpat13a0:01f5. - It is restored at
13a0:0233during 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:5fb3is the Spanish build's low-level keyboard-cheat latch.- It is read repeatedly from
13e8:14b4in the same family of keyboard/debug checks. - Helper setters at
13e8:0071and13e8:0077write1and0respectively, and are called from the Laurie-hint/computer-gump-side helper13e8:0e31setup path.
This no longer supports the older English-side -laurie plus ~ model by itself. The current Spanish pass found repeated reads of 1478:5fb3, but still no recovered runtime writer inside the normal keyboard handler family. The only recovered writes remain the tiny 13e8:0071/0077 helpers, and 13e8:0e31 calls them back-to-back inside the Laurie hint path.
Current safest read is therefore narrower: 1478:5fb3 is still a real gate byte in the Spanish keyboard/debug family, but the live Spanish session does not currently show the English-style runtime ~ toggle path that would make -laurie plus tilde a proven bootstrap for the broader keyboard-cheat state.
Verified Hidden / Debug Event Lanes
CD Transfer Display (Ctrl+Q Family)
The Spanish build still preserves the English-side Ctrl+Q conclusion:
13e8:2211is the0x410event lane under the broad gate at1478: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:249bfirst requires1478:8ad6 != 013e8:24a5toggles byte1478:5fb2- it posts:
1478:605c=HACK MOVER ON1478:606a=HACK MOVER OFF
The compiled runtime chain is now tighter too:
1478:5fb2is the actual Hack Mover on/off toggle, not the unresolved unlock byte13e8:0ef9and13e8:0f77both clear1478:5fb2, so normal modal/setup helpers can forcibly shut the feature back off13e8:282fis the adjacent runtime helper that watches1478:5fb2, uses temp/state byte1478:8ad9, and can transition into the active move setup at13e8:2f0e13e8:2f0ecaptures cursor-to-object offsets into1478:8acc/1478:8aceand sets1478:8ac0 = 113e8:3009is the paired cleanup path that clears1478:8ac0
So the live compiled split is now:
1478:8ad6= unresolved precondition / unlock gate1478:0910= broad-lauriegate1478:5fb2= Hack Mover active toggle1478:8ac0,1478:8acc,1478:8ace,1478:8ad9= downstream runtime state after Hack Mover is already on
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:19datoggles byte1478:0f4013e8:1a0atoggles byte1478:2be713e8:1a36toggles byte1478: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:0e31is the Laurie-hint computer-gump path in the Spanish build1478:5fc6still containsFART ...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.
The command-line side is also tighter now:
CommandLineArg_HandleLaurieat1050:093dis the only recovered live writer of1478:0910- no second non-
-lauriewriter of the broad gate was recovered in this Spanish pass
So -laurie still clearly enables the broad Spanish debug/event framework, but current live evidence does not show a second hidden input path that also raises that gate the way the English jassica16 matcher does.
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:0896in this build, not the English-side1130: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:0d34still 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.
Follow-up tightening on that question now makes the old English comparison weaker rather than stronger:
- the old English immortality-string slots at
1478:2850/1478:2866are not strings in/es/CRUSADER.EXE; live bytes there are now pointer-like words, not"Immortality disabled."/"Immortality enabled." - MCP data-use queries on those two Spanish addresses returned no code uses at all
- no explicit scan-code
0x44F10 comparison was recovered in the currently identified Spanish gameplay-input handlers during this pass
Current safest Spanish-side answer is therefore narrower than the English build:
- the Spanish executable still preserves the broad Laurie/debug family
- but this pass still did not recover a direct Spanish equivalent of the English
F10restore/refill branch or the modifier-gated immortality leaf - so the old English
F10health-replenish folklore should currently be treated as unproven in/es/CRUSADER.EXE, not as a still-confirmed surviving cheat path
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 00was not found anywhere in initialized data1478:0000-8c3f - the same exact table was not found in BSS / secondary data
1480:0000-1fff - even the shorter
jassicascan-code prefix24 1e 1f 1f 17 2e 1ewas absent from both of those Spanish data segments - the old English-side matcher slot at
1478:2833no longer contains the sequence bytes at all; it now reads as pointer-like words beginning14 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
jassica16static 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
-laurieparser, 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:8ad6in addition to the broad gate at1478:0910, which is consistent with the Spanish build still retaining some post-sequence-style latch
Additional live xref evidence from the current Spanish-only pass narrows that further:
1478:0910currently has only one recovered write in the live Spanish database: the-laurieparser at1050:0985. All other recovered uses are reads in the normal cheat/debug handler family.1478:5fb3currently has only two recovered writes:13e8:0071and13e8:0077, and both helpers are only called from the Laurie-hint/computer-gump helper13e8:0e31.1478:8ad6currently has only one recovered direct use: the Hack Mover pre-check at13e8:249b. No direct writer was recovered through MCP xrefs, data-use scans, or operand scans in this session.- the nearby state cluster does not currently explain that byte either:
1478:8ad7and1478:8ad8are written by the gameplay-input modal helpers13e8:0e7d/13e8:0ef9, and1478:8ad9is the live temp/state slot used by the Hack-Mover-adjacent runtime helper13e8:282f; but none of those neighboring compiled writes touch1478:8ad6 - One explicit multi-key helper still exists in the Spanish build,
11d0:024b, but decompilation shows it is only a varargis current key in this list?helper. Its only recovered caller in this session is the movement/control cluster at1138:1b13, not a cheat-toggle lane. - Full decompilation of
World_HandleKeyboardInput(13e8:14b4) did not recover any translated~/0x7eruntime toggle branch. The visible cheat/debug lanes still cover the broad1478:0910-gated overlay/CD/Hack-Mover family, but no Spanish equivalent of the Englishevent_0x7e_cheat_latch_runtime_togglewas recovered.
That matters because it removes one easy false positive: the Spanish build still has generic key-list helpers, but the current live evidence does not tie any of them to a replacement jassica16-style cheat matcher.
So the live evidence now splits cleanly into two layers:
- the framework still matches the English cheat/debug family
- the exact English
jassica16data 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
jassica16table is not supported by the live Spanish data-segment bytes - this pass still does not prove a replacement code
- but the live xref picture is now narrower than before: no recovered Spanish writer currently toggles the broad gate
1478:0910, the keyboard-cheat latch1478:5fb3, or the Hack Mover pre-latch1478:8ad6in a way that looks like a hidden input-sequence success path - current best working hypothesis is therefore no longer "same framework, unknown moved matcher" by default; it is now
same surrounding cheat/debug framework, but no recovered compiled Spanish replacement for the English jassica16 byte matcher - the same correction now applies to the practical
-laurieplus tilde folklore too: current live Spanish evidence does not support a surviving translated~cheat-latch toggle, so the old English-side-laurieplus~bootstrap should currently be treated as unproven and likely absent in/es/CRUSADER.EXE - the same caution now applies to the English
F10replenish / immortality folklore too: the broad gameplay-input controller family is still present, but the old English immortality-string slots are repurposed in Spanish and no direct Spanish F10 cheat branch has been recovered in this pass - the remaining possibilities are now: the Spanish build removed the hidden sequence entirely, moved it into an analysis-dark path MCP has not surfaced yet, or preserves only a dead/unused remnant such as the unresolved
1478:8ad6gate
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
1478:5fb3gate byte still present and widely read in the keyboard handler family Ctrl+Qstill 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
Current practical read for cheat use:
-lauriestill appears to enable the broad debug/event family in the Spanish executable- current live Spanish evidence does not show the English-side
~runtime latch toggle - so the usual English
-laurieplus~route to the broader keyboard-cheat state is not currently supported by the Spanish static analysis - current live Spanish evidence also does not yet prove that the English
F10restore/refill or modifier-gated immortality path still survives in compiled form
Definitive Enable Model
Current strongest Spanish-side answer to "how are the cheats enabled" is now much simpler than the older folklore:
- the only recovered positive enabler is still
-laurie CommandLineArg_HandleLaurieat1050:093dwrites1478:0910 = 1- every broad hidden/debug branch recovered in
World_HandleKeyboardInputthat still behaves like the English Laurie/debug family checks that same1478:0910gate
The supposed runtime latch at 1478:5fb3 no longer looks like an enabler in the Spanish build:
- all recovered keyboard-handler branches that consult
1478:5fb3require it to be zero, not one - the only recovered writes are still
13e8:0071(set 1) and13e8:0077(set 0) Game_ShowLaurieHintComputerGumpcalls those two helpers back-to-back, so the Laurie-hint path pulses the byte and leaves it cleared
Current safest read is therefore:
1478:0910is the only proven positive Spanish cheat/debug enable gate1478:5fb3is not a recovered "cheats on" latch in this build; it behaves more like a transient suppression/guard byte, and possibly a vestigial leftover from the English-side keyboard-latch design1478:8ad6is the only still-plausible unresolved secondary latch, because Hack Mover checks it directly before checking1478:0910
That gives a more definitive practical answer than the earlier passes: the compiled Spanish build still contains cheat/debug hotkeys, but the only proven way to enable the broad gated family is -laurie. No second runtime input path that raises the gate or a full keyboard-cheat latch has been recovered.
Keyboard Hotkey Split
The main Spanish keyboard handler still contains a sizeable hotkey table, but it now splits into two different groups.
Proven -laurie-Gated Debug Lanes
These branches all require 1478:0910 != 0, so they are the clearest surviving Spanish cheat/debug hotkeys:
0x410: still toggles CD transfer display (1478:5fb7) and postsCD TRANSFER DISPLAY ACTIVE/INACTIVE0x141,0x241,0x441: still toggle the same hidden overlay/debug bytes as the English buildH/h: still toggles Hack Mover, but only if1478:8ad6 != 0as well as1478:0910 != 0F: still toggles byte1478:2d14afterNPC_SetAvatarInStasis(0)T: still has a direct1478:0910gate and acts on the current controlled NPC through10a8:2667
Player-Only Selection / Debug Utilities
These branches do not prove a separate cheat-enable path. They mostly require the local local_3 player/controlled-NPC condition and also require 1478:5fb3 == 0, which is exactly the state left behind by the Laurie-hint helper pulse:
R/r: toggles the targeting reticle byte1478:28a5and posts the Spanish active/inactive stringsQ/q: cycles one1..5selector family backward through13e8:0c07W/w: cycles that same1..5selector family forward through13e8:0c72I/i: cycles one0x0b..0x19selector family backward through13e8:0d5fO/o: cycles that same0x0b..0x19selector family forward through13e8:0dc0C/candS/s: enter the13e8:3094browsing/selection helper with mode1or0, which also sets1478:5fafwhile activeE/e,M, andU/u: object/selection-manipulation helpers that also require the local player-controlled condition and1478:5fb3 == 0
So the keyboard evidence no longer supports a Spanish equivalent of the English layered model master gate + tilde keyboard latch. It supports a narrower model instead:
-laurieenables the broad Spanish debug/event hotkeys through1478:0910- several additional letter-key utilities still exist in the same handler, but they do not currently prove any second cheat-enable latch
- Hack Mover is the one conspicuous remaining exception because it still demands the unrecovered
1478:8ad6latch as well
Unclosed item:
- direct proof of any live Spanish secret scan-code matcher routine at all, direct proof of a surviving Spanish
F10cheat lane if one still exists, plus the exact writer of the secondary latch at1478:8ad6
Recommended Follow-Up
If the Spanish question is revisited, the next focused step should be a direct recovery of the writer for 1478:8ad6 and any non--laurie writer of 1478:0910, rather than another sweep of the already-stable broad cheat/debug event lanes. At the moment, those two missing writers are the strongest remaining path to proving whether the Spanish executable still has any hidden cheat-trigger sequence at all.