Skip to content

Skirmish — evidence index#

Binary#

Item Value
Primary export src/Lords2-gog.exe.c
Binary gog/Lords2.exe
Image base 0x00400000
Retail src/LORDS2.EXE.cno skirmish

Entry and SIGS#

Symbol Address Role
FUN_004b7a9a 0x004b7a9a SIGS init, GameTypeDAT_0057cb38
s_Skirmish_004e2c48 0x004e2c48 "Skirmish" launcher string
s_GameType_004e2c3c 0x004e2c3c Config key name
FUN_00432cc8 0x00432cc8 Wizard menu dispatch
FUN_00433155 0x00433155 Skirmish vs campaign MP branch
FUN_00432b05 0x00432b05 MP lobby from menu
FUN_004b7250 0x004b7250 Start MP session
FUN_004b743b 0x004b743b Abort MP → SP

Wizard and setup#

Symbol Address Role
lotr2_game_wizard_load_step_assets 0x0042634c skirmish.pl8 / skircust.pl8
FUN_0042051c 0x0042051c Draw SP setup (step 0xc)
FUN_00420630 0x00420630 Draw MP setup (step 0xb)
FUN_0043dc1d 0x0043dc1d Battle type select
FUN_0043d9cd 0x0043d9cd Scenario scroll
FUN_0043da9e 0x0043da9e Custom map toggle
FUN_0043daf3 0x0043daf3 Army tier adjust
FUN_0043dd83 0x0043dd83 Swap attacker
FUN_004329ec 0x004329ec Start battle
FUN_004463d9 0x004463d9 MP setup pack

Battle lifecycle#

Symbol Address Role
FUN_0042b919 0x0042b919 Reset skirmish params
FUN_0042b7f7 0x0042b7f7 Set DAT_0057a0f0, battle view
FUN_0042b780 0x0042b780 Rematch entry
FUN_0042ac0c 0x0042ac0c Parse TROOPS*.ENG
FUN_0042ba40 0x0042ba40 NPC + army ownership
FUN_0042bf46 0x0042bf46 Apply preset counts
lotr2_combat_init_battle_ui 0x00499e5d Map row load
lotr2_game_ui_on_battle_end_return 0x0043be65 Skirmish vs campaign fork
lotr2_game_sim_tick 0x00497a34 Skirmish shortcut path
lotr2_game_begin_new_campaign (SP start) Called from FUN_004329ec

Scoring#

Symbol Address Role
FUN_00421707 0x00421707 Score screen 1
FUN_00421d09 0x00421d09 Score screen 2 + high scores
FUN_0042c64f Interim 0x2e prep
lotr2_combat_enter_mp_lobby_from_battle 0x00497879 Gateway return

Embedded data (GoG VA)#

Table Address Size / format
Preset bases 0x004D49B8 4 × int32
NPC culture_row 0x004D4BC8 55 × int32
Faction pairs 0x004D4CA8 5 × 8 bytes
Siege map ids 0x004D4B58 15 × int32
Map preset 0x004D8E18 8 × 0x20
Map custom 0x004D8F58 8 × 0x20

Dump: python3 tools/ghidra/dump_skirmish_tables.py gog/Lords2.exe


Assets#

File Use
skirmish.256 / skirmish.pl8 Setup wizard background
skircust.pl8 Custom map setup variant
score1.256 / score1.pl8 Casualty score page 1
score2.256 / score2.pl8 High score page 2
gateway.pl8 Post-skirmish menu
battles.eng Scenario names
troops.eng MP unit presets
troops2.eng / troops3.eng SP unit presets
sgeplans.pl8 Siege report panel

L2.ENG groups (UI)#

Group Decimal Use
0xb 11 Gateway menu, setup labels
0x25 37 Score column headers
0x26 38 High score rank titles
0x53 83 Siege report strings

Parser: tools/parse_l2_eng.py



Open questions#

  1. High-score persistence — trace writes to DAT_0051fbc0 / registry / file.
  2. testgame.sav helpersFUN_00408deb / FUN_00408e4d in GoG export have no callers; dev-only or stripped path?
  3. Menu row → skirmish — exact widget table values that set turn_phase 5 / DAT_0055302c=3 (table data not exported as symbols).
  4. TROOPS*.ENG format — validate parser against real asset files from game CD.
  5. Map row semantics — confirm meaning of param_08..param_1c (time limits, player counts, etc.) via playtesting.
  6. GoG ↔ retail opcode parity — ASIGS payload vs DirectPlay framing differences.

Changelog#

  • Initial evidence pass from GoG Lords2-gog.exe.c export (2026-05).