Skirmish — evidence index
Binary
Entry and SIGS
| Symbol |
Address |
Role |
FUN_004b7a9a |
0x004b7a9a |
SIGS init, GameType → DAT_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
- High-score persistence — trace writes to
DAT_0051fbc0 / registry / file.
testgame.sav helpers — FUN_00408deb / FUN_00408e4d in GoG export have
no callers; dev-only or stripped path?
- Menu row → skirmish — exact widget table values that set
turn_phase 5 /
DAT_0055302c=3 (table data not exported as symbols).
- TROOPS*.ENG format — validate parser against real asset files from game CD.
- Map row semantics — confirm meaning of
param_08..param_1c (time limits,
player counts, etc.) via playtesting.
- GoG ↔ retail opcode parity — ASIGS payload vs DirectPlay framing differences.
Changelog
- Initial evidence pass from GoG
Lords2-gog.exe.c export (2026-05).