diff --git a/asm/include/main_0204BECC.inc b/asm/include/main_0204BFC0.inc similarity index 88% rename from asm/include/main_0204BECC.inc rename to asm/include/main_0204BFC0.inc index 06e0012b..012d9de8 100644 --- a/asm/include/main_0204BECC.inc +++ b/asm/include/main_0204BFC0.inc @@ -1,5 +1,4 @@ #pragma once -.public CalcScriptVariables .public DEBUG_SPECIAL_EPISODE_NUMBER .public Debug_Print .public Debug_Print0 @@ -16,5 +15,4 @@ .public _0209CF64 .public _0209CF84 .public _0209DFA0 -.public CompareScriptVariables .public sub_0204CBE8 diff --git a/asm/include/overlay_11.inc b/asm/include/overlay_11.inc index b605605f..a3f94043 100644 --- a/asm/include/overlay_11.inc +++ b/asm/include/overlay_11.inc @@ -626,12 +626,12 @@ .public sub_0204AE80 .public sub_0204AEE0 .public sub_0204B3D0 -.public sub_0204BECC -.public sub_0204BED8 -.public sub_0204BF10 -.public sub_0204BF5C -.public sub_0204BF68 -.public sub_0204BF88 +.public CalcScriptVariablesVeneer +.public UpdateScriptVarWithParam +.public UpdateScriptVarWithVar +.public CompareScriptVariablesVeneer +.public CompareScriptVarWithParam +.public LoadAndCompareScriptVars .public sub_0204C5DC .public sub_0204C6C8 .public sub_0204C734 diff --git a/asm/main_0204BECC.s b/asm/main_0204BFC0.s similarity index 88% rename from asm/main_0204BECC.s rename to asm/main_0204BFC0.s index 653c0d33..dd118846 100644 --- a/asm/main_0204BECC.s +++ b/asm/main_0204BFC0.s @@ -1,95 +1,8 @@ .include "asm/macros.inc" - .include "main_0204BECC.inc" + .include "main_0204BFC0.inc" .text - arm_func_start sub_0204BECC -sub_0204BECC: ; 0x0204BECC - ldr ip, _0204BED4 ; =CalcScriptVariables - bx ip - .align 2, 0 -_0204BED4: .word CalcScriptVariables - arm_func_end sub_0204BECC - - arm_func_start sub_0204BED8 -sub_0204BED8: ; 0x0204BED8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r4, r3 - mov r7, r0 - mov r6, r1 - bl LoadScriptVariableValue - mov r1, r5 - mov r2, r4 - bl CalcScriptVariables - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl SaveScriptVariableValue - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204BED8 - - arm_func_start sub_0204BF10 -sub_0204BF10: ; 0x0204BF10 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r6, r2 - mov r7, r1 - mov r5, r3 - bl LoadScriptVariableValue - mov r4, r0 - mov r0, r8 - mov r1, r6 - bl LoadScriptVariableValue - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl CalcScriptVariables - mov r2, r0 - mov r0, r8 - mov r1, r7 - bl SaveScriptVariableValue - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_0204BF10 - - arm_func_start sub_0204BF5C -sub_0204BF5C: ; 0x0204BF5C - ldr ip, _0204BF64 ; =CompareScriptVariables - bx ip - .align 2, 0 -_0204BF64: .word CompareScriptVariables - arm_func_end sub_0204BF5C - - arm_func_start sub_0204BF68 -sub_0204BF68: ; 0x0204BF68 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - mov r4, r3 - bl LoadScriptVariableValue - mov r1, r5 - mov r2, r4 - bl CompareScriptVariables - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204BF68 - - arm_func_start sub_0204BF88 -sub_0204BF88: ; 0x0204BF88 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r2 - mov r5, r3 - bl LoadScriptVariableValue - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl LoadScriptVariableValue - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl CompareScriptVariables - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204BF88 - arm_func_start EventFlagResume EventFlagResume: ; 0x0204BFC0 stmdb sp!, {r4, lr} diff --git a/asm/overlay_11.s b/asm/overlay_11.s index eff1fa24..5bee6850 100644 --- a/asm/overlay_11.s +++ b/asm/overlay_11.s @@ -3196,7 +3196,7 @@ _022DEDC4: ; 0x022DEDC4 mov r3, r5 mov r2, r0 add r0, r4, #0x6c - bl sub_0204BED8 + bl UpdateScriptVarWithParam b _022E2474 _022DEE00: ; 0x022DEE00 ldrh r0, [r6] @@ -3214,7 +3214,7 @@ _022DEE00: ; 0x022DEE00 add r0, r4, #0x6c mov r2, r2, lsl #0x10 mov r2, r2, asr #0x10 - bl sub_0204BF10 + bl UpdateScriptVarWithVar b _022E2474 _022DEE44: ; 0x022DEE44 ldrh r0, [r6] @@ -3335,7 +3335,7 @@ _022DEFD0: add r0, r4, #0x6c mov r1, r1, asr #0x10 mov r3, #2 - bl sub_0204BF68 + bl CompareScriptVarWithParam cmp r0, #0 ldrneh r0, [r6, #4] ldrne r1, [r4, #0x14] @@ -3356,7 +3356,7 @@ _022DF014: mov r1, r1, asr #0x10 mov r3, r5 add r0, r4, #0x6c - bl sub_0204BF68 + bl CompareScriptVarWithParam cmp r0, #0 ldrneh r0, [r6, #6] ldrne r1, [r4, #0x14] @@ -3378,7 +3378,7 @@ _022DF064: mov r1, r1, asr #0x10 mov r3, r5 add r0, r4, #0x6c - bl sub_0204BF88 + bl LoadAndCompareScriptVars cmp r0, #0 ldrneh r0, [r6, #6] ldrne r1, [r4, #0x14] @@ -3419,7 +3419,7 @@ _022DF0FC: bl LoadScriptVariableValueSum mov r1, r5 mov r2, r7 - bl sub_0204BF5C + bl CompareScriptVariablesVeneer cmp r0, #0 ldrneh r0, [r6, #6] ldrne r1, [r4, #0x14] @@ -3616,7 +3616,7 @@ _022DF3DC: bl LoadScriptVariableValue mov r1, r5 mov r2, r7 - bl sub_0204BECC + bl CalcScriptVariablesVeneer mov r7, r0 b _022DF6FC _022DF424: @@ -3641,7 +3641,7 @@ _022DF424: mov r2, r7 mov r1, r0 mov r0, r5 - bl sub_0204BECC + bl CalcScriptVariablesVeneer mov r7, r0 b _022DF6FC _022DF484: @@ -9304,7 +9304,7 @@ _022E4448: mov r1, sb mov r0, r7 mov r2, fp - bl sub_0204BF5C + bl CompareScriptVariablesVeneer cmp r0, #0 beq _022E44A0 ldrh r3, [r5, #4] @@ -9332,7 +9332,7 @@ _022E44AC: ldrh r2, [r5, #2] mov r1, sb mov r0, r7 - bl sub_0204BF5C + bl CompareScriptVariablesVeneer cmp r0, #0 beq _022E4508 ldrh r3, [r5, #6] @@ -9364,7 +9364,7 @@ _022E4514: mov r1, r0 ldrh r2, [r5, #2] mov r0, r7 - bl sub_0204BF5C + bl CompareScriptVariablesVeneer cmp r0, #0 beq _022E4580 ldrh r3, [r5, #6] @@ -14712,7 +14712,7 @@ _022E8AE4: mov r1, #0x2a mov r2, #1 mov r3, #2 - bl sub_0204BED8 + bl UpdateScriptVarWithParam bl sub_0204F034 mov r4, r0 bl sub_0204F050 diff --git a/include/scripting.h b/include/script_variable.h similarity index 73% rename from include/scripting.h rename to include/script_variable.h index bd8c6237..c7dafb34 100644 --- a/include/scripting.h +++ b/include/script_variable.h @@ -43,5 +43,11 @@ void SaveScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s3 s32 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2); s32 CalcScriptVariables(s32 param_1, s32 param_2, enum script_calc_operation operation); bool8 CompareScriptVariables(s32 param_1, s32 param_2, enum compare_operation operation); +s32 CalcScriptVariablesVeneer(s32 param_1, s32 param_2, enum script_calc_operation operation); +void UpdateScriptVarWithParam(union script_var_value sv_local[], const enum script_var_id script_var_id, s32 param, enum script_calc_operation operation); +void UpdateScriptVarWithVar(union script_var_value sv_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2, enum script_calc_operation operation); +bool8 CompareScriptVariablesVeneer(s32 param_1, s32 param_2, enum compare_operation operation); +s32 CompareScriptVarWithParam(union script_var_value sv_local[], enum script_var_id sv_id, s32 param, enum compare_operation op); +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); #endif //PMDSKY_SCRIPTING_H diff --git a/main.lsf b/main.lsf index bf376e3a..ad9175c6 100644 --- a/main.lsf +++ b/main.lsf @@ -80,9 +80,9 @@ Static main Object asm/main_0203C774.o Object src/main_0204AFF8.o Object asm/main_0204B018.o - Object src/scripting.o + Object src/script_variable.o Object asm/main_rodata_0209CECC.o - Object asm/main_0204BECC.o + Object asm/main_0204BFC0.o Object src/main_0204C938.o Object asm/main_0204C94C.o Object src/dungeon_recruitment_3.o diff --git a/src/dungeon_recruitment_3.c b/src/dungeon_recruitment_3.c index 0716b6fc..11d56961 100644 --- a/src/dungeon_recruitment_3.c +++ b/src/dungeon_recruitment_3.c @@ -1,6 +1,6 @@ #include "dungeon_recruitment_3.h" #include "enums.h" -#include "scripting.h" +#include "script_variable.h" #include "util.h" bool8 HasPlayedOldGame() diff --git a/src/main_0200EDC0.c b/src/main_0200EDC0.c index a6de5d09..5ec83308 100644 --- a/src/main_0200EDC0.c +++ b/src/main_0200EDC0.c @@ -3,7 +3,7 @@ #include "main_0204C938.h" #include "main_0204CB94.h" #include "main_020517D4.h" -#include "scripting.h" +#include "script_variable.h" extern struct bag_items *BAG_ITEMS_PTR_MIRROR; diff --git a/src/main_0204C938.c b/src/main_0204C938.c index a8a50349..bdf61b16 100644 --- a/src/main_0204C938.c +++ b/src/main_0204C938.c @@ -1,5 +1,5 @@ #include "main_0204C938.h" -#include "scripting.h" +#include "script_variable.h" s32 GetExecuteSpecialEpisodeType() { diff --git a/src/main_0204CB94.c b/src/main_0204CB94.c index 3680f099..31185870 100644 --- a/src/main_0204CB94.c +++ b/src/main_0204CB94.c @@ -1,5 +1,5 @@ #include "main_0204CB94.h" -#include "scripting.h" +#include "script_variable.h" u8 GetScenarioBalance() { diff --git a/src/scripting.c b/src/script_variable.c similarity index 89% rename from src/scripting.c rename to src/script_variable.c index 5df7c7f8..9c5e8866 100644 --- a/src/scripting.c +++ b/src/script_variable.c @@ -1,7 +1,7 @@ #include "debug.h" #include "enums.h" #include "main_0200224C.h" -#include "scripting.h" +#include "script_variable.h" // Global script variable definitions extern struct script_var_def SCRIPT_VARS[]; @@ -441,3 +441,41 @@ bool8 CompareScriptVariables(s32 param_1, s32 param_2, enum compare_operation op Debug_FatalError(&ppi, &EVENT_FLAG_RULE_ERROR, operation); } } + +s32 CalcScriptVariablesVeneer(s32 param_1, s32 param_2, enum script_calc_operation operation) +{ + return CalcScriptVariables(param_1, param_2, operation); +} + +void UpdateScriptVarWithParam(union script_var_value sv_local[], const enum script_var_id script_var_id, s32 param, enum script_calc_operation operation) +{ + s32 value = LoadScriptVariableValue(sv_local, script_var_id); + s32 result = CalcScriptVariables(value, param, operation); + SaveScriptVariableValue(sv_local, script_var_id, result); +} + +void UpdateScriptVarWithVar(union script_var_value sv_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2, enum script_calc_operation op) +{ + s32 value_1 = LoadScriptVariableValue(sv_local, sv_id_1); + s32 value_2 = LoadScriptVariableValue(sv_local, sv_id_2); + s32 result = CalcScriptVariables(value_1, value_2, op); + SaveScriptVariableValue(sv_local, sv_id_1, result); +} + +bool8 CompareScriptVariablesVeneer(s32 param_1, s32 param_2, enum compare_operation op) +{ + return CompareScriptVariables(param_1, param_2, op); +} + +s32 CompareScriptVarWithParam(union script_var_value sv_local[], enum script_var_id sv_id, s32 param, enum compare_operation op) +{ + s32 value = LoadScriptVariableValue(sv_local, sv_id); + return CompareScriptVariables(value, param, op); +} + +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) +{ + s32 value_1 = LoadScriptVariableValue(sv_local, sv_id_1); + s32 value_2 = LoadScriptVariableValue(sv_local, sv_id_2); + return CompareScriptVariables(value_1, value_2, op); +}