Skip to content

Commit a43a285

Browse files
committed
Enable multi-side support for loading side-specific MIX files for DTA
1 parent 3f40b75 commit a43a285

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/dta_hacks.asm

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,29 @@ sstring str_BriefingPCX, "BRIEFING.PCX"
101101
@SET 0x00601093, push str_SettingsINI
102102
@SET 0x00687E07, push str_SettingsINI
103103

104+
; Set global variable byte containing side ID to load files for
105+
; (enabled until spawner has been reimplemented through Vinifera)
106+
@SET 0x004E2CFA, {mov byte [0x7E2500], al}
107+
@SET 0x004E2CFF, nop
108+
@SET 0x004E2D00, {add esp, 4}
109+
@SJMP 0x004E2D03, 0x004E2D13 ; jmp short
110+
@SET 0x004E2D05, nop
111+
112+
; Load sidebar MIX files for new sides properly
113+
; (enabled until spawner has been reimplemented through Vinifera)
114+
@SET 0x005DD798, {mov cl, byte [0x007E2500]}
115+
@CLEAR 0x005DD79E, 0x90, 0x005DD7A2
116+
117+
; Load speech MIX files for new sides properly
118+
; Defaults SpeechSide to our hijacked player side value
119+
; (enabled until spawner has been reimplemented through Vinifera)
120+
hack 0x005DD75B
121+
mov eax, [Scen]
122+
xor ecx, ecx
123+
mov cl, byte [0x007E2500] ; PlayerSide (was Session.IsGDI)
124+
mov [eax+0x1E44], ecx ; set SpeechSide
125+
jmp 0x005DD784 ; go back to game code for initializing side
126+
104127
;
105128
; The following patches will not be included in Vinifera compatible builds.
106129
;
@@ -216,33 +239,13 @@ sstring str_TemperatPAL, "TEMPERAT.PAL"
216239
; Remove framework mode mmt/mms loading
217240
@LJMP 0x004F5182, 0x004F528C ; jmp loc_4F528C
218241

219-
; Set global variable byte containing side ID to load files for
220-
@SET 0x004E2CFA, {mov byte [0x7E2500], al}
221-
@SET 0x004E2CFF, nop
222-
@SET 0x004E2D00, {add esp, 4}
223-
@SJMP 0x004E2D03, 0x004E2D13 ; jmp short
224-
@SET 0x004E2D05, nop
225-
226242
; Load sidebar MIX files for new sides properly (for saved games)
227243
@SET 0x005D6C4F, {mov cl, [eax+1D91h]}
228244
@CLEAR 0x005D6C55, 0x90, 0x005D6C58
229245

230-
; Load sidebar MIX files for new sides properly
231-
@SET 0x005DD798, {mov cl, byte [0x007E2500]}
232-
@CLEAR 0x005DD79E, 0x90, 0x005DD7A2
233-
234246
; Load speech MIX files for new sides properly (for saved games)
235247
@SET 0x005D6DCE, {xor ecx, ecx}
236248
@SET 0x005D6DD0, {mov cl, [eax+1D91h]}
237249
@CLEAR 0x005D6DD6, 0x90, 0x005D6DDB
238250

239-
; Load speech MIX files for new sides properly
240-
; Defaults SpeechSide to our hijacked player side value
241-
hack 0x005DD75B
242-
mov eax, [Scen]
243-
xor ecx, ecx
244-
mov cl, byte [0x007E2500] ; PlayerSide (was Session.IsGDI)
245-
mov [eax+0x1E44], ecx ; set SpeechSide
246-
jmp 0x005DD784 ; go back to game code for initializing side
247-
248251
%endif

0 commit comments

Comments
 (0)