diff --git a/asm/include/main_0204B018.inc b/asm/include/main_0204B018.inc index cf9a4392..a31ca5a8 100644 --- a/asm/include/main_0204B018.inc +++ b/asm/include/main_0204B018.inc @@ -11,4 +11,5 @@ .public SCRIPT_VARS .public SCRIPT_VARS_LOCALS .public SCRIPT_VARS_VALUES -.public ZinitScriptVariable +.public ZeroInitScriptVariable +.public DefaultInitScriptVariable diff --git a/asm/include/main_0204CDB8.inc b/asm/include/main_0204CDB8.inc index fd0dff01..f1b5191f 100644 --- a/asm/include/main_0204CDB8.inc +++ b/asm/include/main_0204CDB8.inc @@ -33,4 +33,4 @@ .public sub_02050990 .public sub_020509BC .public VERSION_EXCLUSIVE_MONSTERS -.public ZinitScriptVariable +.public ZeroInitScriptVariable diff --git a/asm/include/main_02058F24.inc b/asm/include/main_02058F24.inc index c461db26..de0e6e13 100644 --- a/asm/include/main_02058F24.inc +++ b/asm/include/main_02058F24.inc @@ -550,4 +550,4 @@ .public vsprintf .public WAN_TABLE .public ZINC_BAND_STAT_BOOST -.public ZinitScriptVariable +.public ZeroInitScriptVariable diff --git a/asm/include/overlay_11.inc b/asm/include/overlay_11.inc index 0a947c79..e77c5950 100644 --- a/asm/include/overlay_11.inc +++ b/asm/include/overlay_11.inc @@ -639,7 +639,7 @@ .public sub_0204AE60 .public sub_0204AE80 .public sub_0204AEE0 -.public sub_0204B3D0 +.public DefaultInitScriptVariable .public SetResolvedPerformanceProgressFlag .public sub_0204CDE8 .public sub_0204CE48 @@ -718,4 +718,4 @@ .public UpdateTeamStats .public WorldMapSetCamera .public WorldMapSetMode -.public ZinitScriptVariable +.public ZeroInitScriptVariable diff --git a/asm/main_0204B018.s b/asm/main_0204B018.s index 9af6580e..98723787 100644 --- a/asm/main_0204B018.s +++ b/asm/main_0204B018.s @@ -74,7 +74,7 @@ _0204B0C4: bl SaveScriptVariableValue mov r0, #0 mov r1, #1 - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl InitEventFlagScriptVars mov sl, #0 #ifdef JAPAN @@ -212,13 +212,13 @@ _0204B118: bl SaveScriptVariableValue mov r0, #0 mov r1, #0x4b - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x4c - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x4d - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl InitScenarioProgressScriptVars bl InitWorldMapScriptVars bl InitDungeonListScriptVars @@ -304,36 +304,3 @@ _0204B3CC: .word 0x00000143 _0204B3CC: .word 0x00000137 #endif arm_func_end InitEventFlagScriptVars - - arm_func_start sub_0204B3D0 -sub_0204B3D0: ; 0x0204B3D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - cmp r4, #0x400 - mov r5, r0 - ldrlt r0, _0204B42C ; =SCRIPT_VARS - ldrge r1, _0204B430 ; =SCRIPT_VARS_LOCALS - addlt r7, r0, r4, lsl #4 - subge r0, r4, #0x400 - addge r7, r1, r0, lsl #4 - mov r6, #0 - b _0204B41C -_0204B3FC: - ldrsh r3, [r7, #0xa] - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl SaveScriptVariableValueAtIndex - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 -_0204B41C: - ldrsh r0, [r7, #8] - cmp r6, r0 - blt _0204B3FC - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0204B42C: .word SCRIPT_VARS -_0204B430: .word SCRIPT_VARS_LOCALS - arm_func_end sub_0204B3D0 - \ No newline at end of file diff --git a/asm/main_0204CDB8.s b/asm/main_0204CDB8.s index d3ceccd4..d01c6edf 100644 --- a/asm/main_0204CDB8.s +++ b/asm/main_0204CDB8.s @@ -5,12 +5,12 @@ arm_func_start sub_0204CDB8 sub_0204CDB8: ; 0x0204CDB8 - ldr ip, _0204CDC8 ; =ZinitScriptVariable + ldr ip, _0204CDC8 ; =ZeroInitScriptVariable mov r0, #0 mov r1, #0x56 bx ip .align 2, 0 -_0204CDC8: .word ZinitScriptVariable +_0204CDC8: .word ZeroInitScriptVariable arm_func_end sub_0204CDB8 arm_func_start sub_0204CDCC @@ -87,22 +87,22 @@ InitDungeonListScriptVars: ; 0x0204CE90 stmdb sp!, {r3, lr} mov r0, #0 mov r1, #0x4f - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x54 - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x50 - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x51 - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x52 - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0 mov r1, #0x53 - bl ZinitScriptVariable + bl ZeroInitScriptVariable ldmia sp!, {r3, pc} arm_func_end InitDungeonListScriptVars diff --git a/asm/main_02058F24.s b/asm/main_02058F24.s index 5aa0783b..d3662cbc 100644 --- a/asm/main_02058F24.s +++ b/asm/main_02058F24.s @@ -15926,7 +15926,7 @@ _02065E54: bl UnloadOverlay mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #2 bl LoadOverlay mov r0, #0xd diff --git a/asm/overlay_11.s b/asm/overlay_11.s index 3e06f85f..b85b2933 100644 --- a/asm/overlay_11.s +++ b/asm/overlay_11.s @@ -3160,7 +3160,7 @@ _022DED60: ; 0x022DED60 mov r1, r0, lsl #0x10 add r0, r4, #0x6c mov r1, r1, asr #0x10 - bl sub_0204B3D0 + bl DefaultInitScriptVariable b _022E2474 _022DED7C: ; 0x022DED7C ldrh r0, [r6] @@ -3168,7 +3168,7 @@ _022DED7C: ; 0x022DED7C mov r1, r0, lsl #0x10 add r0, r4, #0x6c mov r1, r1, asr #0x10 - bl ZinitScriptVariable + bl ZeroInitScriptVariable b _022E2474 _022DED98: ; 0x022DED98 ldrh r0, [r6] @@ -12555,7 +12555,7 @@ ov11_022E6EE8: ; 0x022E6EE8 bl SaveScriptVariableValue mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable cmp r4, #4 bne _022E6F80 bl sub_020573A0 @@ -14116,7 +14116,7 @@ _022E82F0: bne _022E832C mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable mov r0, #0x12 bl GroundMainLoop mov r4, r0 @@ -14642,7 +14642,7 @@ _022E89FC: bl Debug_Print0 mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl GroundMainNextDay ldr r0, _022E91E8 ; =ov11_02324FA0 mov r1, #1 @@ -14706,7 +14706,7 @@ _022E8AE4: bl Debug_Print0 mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl GroundMainNextDay mov r0, #0 mov r1, #0x2a @@ -14786,7 +14786,7 @@ _022E8C20: bl Debug_Print0 mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl GroundMainNextDay ldr r1, _022E91E8 ; =ov11_02324FA0 mov r0, #0 @@ -15358,7 +15358,7 @@ GroundMainReturnDungeon: ; 0x022E9414 bl Debug_Print0 mov r0, #0 mov r1, #0x5c - bl ZinitScriptVariable + bl ZeroInitScriptVariable bl GroundMainNextDay ldmia sp!, {r3, pc} .align 2, 0 diff --git a/include/script_variable.h b/include/script_variable.h index b3a01250..daabc3ea 100644 --- a/include/script_variable.h +++ b/include/script_variable.h @@ -29,7 +29,8 @@ struct script_var_raw { union script_var_value *value; }; -void ZinitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id); +void DefaultInitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id); +void ZeroInitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id); void LoadScriptVariableRaw(struct script_var_raw* sv_raw, union script_var_value sv_val_local[], const enum script_var_id sv_id); s32 LoadScriptVariableValue(union script_var_value sv_local[], enum script_var_id sv_id); s32 LoadScriptVariableValueAtIndex(union script_var_value sv_local[], enum script_var_id id, u16 idx); diff --git a/include/script_variable_2.h b/include/script_variable_2.h index 364417c9..5d9ec46a 100644 --- a/include/script_variable_2.h +++ b/include/script_variable_2.h @@ -3,4 +3,4 @@ void InitWorldMapScriptVars(); -#endif PMDSKY_SCRIPT_VARIABLE_2_H \ No newline at end of file +#endif PMDSKY_SCRIPT_VARIABLE_2_H diff --git a/src/script_variable.c b/src/script_variable.c index 31688bf8..e4025712 100644 --- a/src/script_variable.c +++ b/src/script_variable.c @@ -40,7 +40,21 @@ extern s32 SetMoneyCarried(s32 arg0); extern s32 SetMoneyStored(s32 arg0); extern s32 SetNotifyNote(s32 arg0); -void ZinitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id) { +void DefaultInitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id) { + struct script_var_def* def; + + if (sv_id < LOCAL_SCRIPT_VAR_OFFSET) { + def = &SCRIPT_VARS[sv_id]; + } else { + def = &SCRIPT_VARS_LOCALS[sv_id - LOCAL_SCRIPT_VAR_OFFSET]; + } + + for(u16 idx = 0; idx < def->n_values; idx++) { + SaveScriptVariableValueAtIndex(sv_locals, sv_id, idx, def->default_val); + } +} + +void ZeroInitScriptVariable(union script_var_value sv_locals[], enum script_var_id sv_id) { struct script_var_def* def; if (sv_id < LOCAL_SCRIPT_VAR_OFFSET) { @@ -607,8 +621,8 @@ void InitScenarioProgressScriptVars() SetScenarioProgressScriptVar(VAR_SCENARIO_SUB6, 0, 0); SetScenarioProgressScriptVar(VAR_SCENARIO_SUB7, 0, 0); SetScenarioProgressScriptVar(VAR_SCENARIO_SUB8, 0, 0); - ZinitScriptVariable(0, VAR_SCENARIO_MAIN_BIT_FLAG); - ZinitScriptVariable(0, VAR_SCENARIO_MAIN_BIT_FLAG_BACKUP); + ZeroInitScriptVariable(0, VAR_SCENARIO_MAIN_BIT_FLAG); + ZeroInitScriptVariable(0, VAR_SCENARIO_MAIN_BIT_FLAG_BACKUP); s32 idx = 0; do { SaveScriptVariableValueAtIndex(0, VAR_SCENARIO_SELECT_BACKUP, idx, 0); diff --git a/src/script_variable_2.c b/src/script_variable_2.c index dc2576e1..03498e61 100644 --- a/src/script_variable_2.c +++ b/src/script_variable_2.c @@ -3,7 +3,7 @@ #include "enums.h" void InitWorldMapScriptVars() { - ZinitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_NORMAL); - ZinitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_SPECIAL); + ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_NORMAL); + ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_SPECIAL); SaveScriptVariableValue(0, VAR_WORLD_MAP_LEVEL, 1); }