more decomp of script variable funcs

This commit is contained in:
Seth Barberee
2026-04-05 12:17:23 -07:00
parent 60aa4e56a4
commit 8a24ee8fa6
3 changed files with 59 additions and 133 deletions

View File

@@ -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}

View File

@@ -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

View File

@@ -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;
}