mirror of
https://github.com/pret/pmd-sky.git
synced 2026-10-01 14:48:14 -05:00
Decomp more script variable functions
This commit is contained in:
@@ -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}
|
||||
@@ -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
|
||||
|
||||
2
main.lsf
2
main.lsf
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user