diff --git a/asm/main_0204CDB8.s b/asm/main_0204CDB8.s index d01c6edf..9236e257 100644 --- a/asm/main_0204CDB8.s +++ b/asm/main_0204CDB8.s @@ -3,139 +3,6 @@ .text - arm_func_start sub_0204CDB8 -sub_0204CDB8: ; 0x0204CDB8 - ldr ip, _0204CDC8 ; =ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x56 - bx ip - .align 2, 0 -_0204CDC8: .word ZeroInitScriptVariable - arm_func_end sub_0204CDB8 - - arm_func_start sub_0204CDCC -sub_0204CDCC: ; 0x0204CDCC - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x57 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} - arm_func_end sub_0204CDCC - - arm_func_start sub_0204CDE8 -sub_0204CDE8: ; 0x0204CDE8 - ldr ip, _0204CDFC ; =SaveScriptVariableValue - mov r2, r0 - mov r0, #0 - mov r1, #0x57 - bx ip - .align 2, 0 -_0204CDFC: .word SaveScriptVariableValue - arm_func_end sub_0204CDE8 - - arm_func_start sub_0204CE00 -sub_0204CE00: ; 0x0204CE00 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetGameMode - cmp r0, #3 - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - bne _0204CE2C - mov r1, #0x56 - bl LoadScriptVariableValueAtIndex - b _0204CE34 -_0204CE2C: - mov r1, #0x55 - bl LoadScriptVariableValueAtIndex -_0204CE34: - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end sub_0204CE00 - - arm_func_start sub_0204CE48 -sub_0204CE48: ; 0x0204CE48 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetGameMode - cmp r0, #3 - mov r0, r5, lsl #0x10 - mov r3, r4 - bne _0204CE7C - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x56 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r3, r4, r5, pc} -_0204CE7C: - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x55 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204CE48 - - arm_func_start InitDungeonListScriptVars -InitDungeonListScriptVars: ; 0x0204CE90 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x4f - bl ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x54 - bl ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x50 - bl ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x51 - bl ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x52 - bl ZeroInitScriptVariable - mov r0, #0 - mov r1, #0x53 - bl ZeroInitScriptVariable - ldmia sp!, {r3, pc} - arm_func_end InitDungeonListScriptVars - - arm_func_start sub_0204CEE0 -sub_0204CEE0: ; 0x0204CEE0 - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x50 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204CEE0 - - arm_func_start sub_0204CF0C -sub_0204CF0C: ; 0x0204CF0C - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x52 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204CF0C - arm_func_start SetDungeonConquest SetDungeonConquest: ; 0x0204CF38 stmdb sp!, {r3, r4, r5, r6, r7, lr} diff --git a/include/script_variable_2.h b/include/script_variable_2.h index 5d9ec46a..c3afe7ea 100644 --- a/include/script_variable_2.h +++ b/include/script_variable_2.h @@ -2,5 +2,13 @@ #define PMDSKY_SCRIPT_VARIABLE_2_H void InitWorldMapScriptVars(); +void sub_0204CDB8(void); +s8 sub_0204CDCC(void); +void sub_0204CDE8(s32 value); +bool8 sub_0204CE00(u32 idx); +void sub_0204CE48(u32 idx, s32 value); +void InitDungeonListScriptVars(void); +bool8 sub_0204CEE0(u32 idx); +bool8 sub_0204CF0C(u32 idx); #endif PMDSKY_SCRIPT_VARIABLE_2_H diff --git a/src/script_variable_2.c b/src/script_variable_2.c index 03498e61..076d2fcc 100644 --- a/src/script_variable_2.c +++ b/src/script_variable_2.c @@ -1,9 +1,60 @@ #include "script_variable.h" #include "script_variable_2.h" #include "enums.h" +#include "game_mode.h" void InitWorldMapScriptVars() { ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_NORMAL); ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_SPECIAL); SaveScriptVariableValue(0, VAR_WORLD_MAP_LEVEL, 1); } + +void sub_0204CDB8(void) { + ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_SPECIAL); +} + +s8 sub_0204CDCC(void) { + return LoadScriptVariableValue(0, VAR_WORLD_MAP_LEVEL); +} + +void sub_0204CDE8(s32 value) { + SaveScriptVariableValue(0, VAR_WORLD_MAP_LEVEL, value); +} + +bool8 sub_0204CE00(u32 idx) { + s32 var; + + if (GetGameMode() == GAME_MODE_SPECIAL_EPISODE) { + var = LoadScriptVariableValueAtIndex(0,VAR_WORLD_MAP_MARK_LIST_SPECIAL, idx); + } else { + var = LoadScriptVariableValueAtIndex(0,VAR_WORLD_MAP_MARK_LIST_NORMAL, idx); + } + return (var != 0); +} + +void sub_0204CE48(u32 idx, s32 value) { + if (GetGameMode() == GAME_MODE_SPECIAL_EPISODE) { + SaveScriptVariableValueAtIndex(0,VAR_WORLD_MAP_MARK_LIST_SPECIAL, idx, value); + } else { + SaveScriptVariableValueAtIndex(0,VAR_WORLD_MAP_MARK_LIST_NORMAL, idx, value); + } +} + +void InitDungeonListScriptVars(void) { + ZeroInitScriptVariable(0, VAR_DUNGEON_OPEN_LIST); + ZeroInitScriptVariable(0, VAR_DUNGEON_REQUEST_LIST); + ZeroInitScriptVariable(0, VAR_DUNGEON_ENTER_LIST); + ZeroInitScriptVariable(0, VAR_DUNGEON_ARRIVE_LIST); + ZeroInitScriptVariable(0, VAR_DUNGEON_CONQUEST_LIST); + ZeroInitScriptVariable(0, VAR_DUNGEON_PRESENT_LIST); +} + +bool8 sub_0204CEE0(u32 idx) { + return LoadScriptVariableValueAtIndex(0,VAR_DUNGEON_ENTER_LIST, idx) != 0; +} + +bool8 sub_0204CF0C(u32 idx) { + return LoadScriptVariableValueAtIndex(0,VAR_DUNGEON_CONQUEST_LIST, idx) != 0; +} + +