Decomp more script variable functions

This commit is contained in:
slaw-22
2025-11-26 21:19:55 +00:00
parent fdcfbc4baa
commit f3ca27a51d
4 changed files with 25 additions and 43 deletions

View File

@@ -3,48 +3,6 @@
.text
arm_func_start DumpScriptVariableValues
DumpScriptVariableValues: ; 0x0204C408
stmdb sp!, {r4, lr}
mov r4, r0
bl EventFlagBackup
ldr r1, _0204C42C ; =SCRIPT_VARS_VALUES
mov r0, r4
mov r2, #0x400
bl MemcpySimple
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_0204C42C: .word SCRIPT_VARS_VALUES
arm_func_end DumpScriptVariableValues
arm_func_start RestoreScriptVariableValues
RestoreScriptVariableValues: ; 0x0204C430
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r1, #0
mov r4, r0
add r0, sp, #0
mov r2, r1
bl LoadScriptVariableRaw
ldr r0, _0204C484 ; =SCRIPT_VARS_VALUES
mov r1, r4
mov r2, #0x400
bl MemcpySimple
ldr r1, [sp]
ldr r0, [sp, #4]
ldrsh r1, [r1, #0xa]
ldr r0, [r0]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0204C484: .word SCRIPT_VARS_VALUES
arm_func_end RestoreScriptVariableValues
arm_func_start InitScenarioScriptVars
InitScenarioScriptVars: ; 0x0204C488
stmdb sp!, {r4, r5, r6, r7, r8, lr}

View File

@@ -51,5 +51,7 @@ s32 CompareScriptVarWithParam(union script_var_value sv_local[], enum script_var
s32 LoadAndCompareScriptVars(union script_var_value sv_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2, enum compare_operation op);
void EventFlagResume();
void EventFlagBackup();
s32 DumpScriptVariableValues(u8* target);
u8 RestoreScriptVariableValues(u8* dest);
#endif //PMDSKY_SCRIPTING_H

View File

@@ -82,7 +82,7 @@ Static main
Object asm/main_0204B018.o
Object src/script_variable.o
Object asm/main_rodata_0209CECC.o
Object asm/main_0204C408.o
Object asm/main_0204C488.o
Object src/main_0204C938.o
Object asm/main_0204C94C.o
Object src/dungeon_recruitment_3.o

View File

@@ -25,6 +25,7 @@ extern s32 SetNotifyNote(s32 arg0);
extern s32 sub_0204C928(s32 arg0);
void sub_0204CBE8();
void ScenarioFlagBackup();
void MemcpySimple(u8* dest, u8* src, s32 n);
extern u8 EVENT_FLAG_EXPANSION_ERROR;
extern u8 EVENT_FLAG_RULE_ERROR;
@@ -550,3 +551,24 @@ void EventFlagBackup() {
ScenarioFlagBackup();
}
s32 DumpScriptVariableValues(u8* target)
{
EventFlagBackup();
MemcpySimple(target, &SCRIPT_VARS_VALUES[0], 0x400);
return 1;
}
u8 RestoreScriptVariableValues(u8* dest) {
struct script_var_raw sv_raw;
u8 ret_val;
LoadScriptVariableRaw(&sv_raw, 0, VAR_VERSION);
MemcpySimple(&SCRIPT_VARS_VALUES[0], dest, 0x400);
if (sv_raw.def->default_val == sv_raw.value->u32) {
ret_val = 1;
} else {
ret_val = 0;
}
return ret_val;
}