Merge pull request #233 from slaw-22/Options5

Decomp SetOptions, GetOptions and InitOptions
This commit is contained in:
AnonymousRandomPerson 2025-12-28 11:46:50 -05:00 committed by GitHub
commit fddbd26924
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 71 additions and 72 deletions

View File

@ -225,8 +225,8 @@
.public sub_0203C9A0
.public sub_02048078
.public sub_0204964C
.public sub_0204AB78
.public sub_0204AB98
.public GetOptions
.public SetOptions
.public CopyFrameTypeOption
.public SetFrameTypeOption
.public sub_0204DA1C

View File

@ -467,6 +467,7 @@
.public DebugPrintEventFlagSize
.public SetSpecialEpisodeOpenOld
.public CopyFrameTypeOption
.public InitOptions
.public sub_0204CDB8
.public sub_0204E154
.public sub_0204E19C

View File

@ -480,7 +480,7 @@
.public sub_02048C3C
.public sub_0204A198
.public sub_0204A1A4
.public sub_0204AB18
.public InitOptionsVeneer
.public CopyFrameTypeOption
.public SetGameMode
.public sub_0204D018

View File

@ -995,7 +995,7 @@ sub_02035640: ; 0x02035640
ldr r0, _02035764 ; =_020AFDD0
ldr r0, [r0, #4]
add r0, r0, #0xa4
bl sub_0204AB78
bl GetOptions
ldr r1, _02035764 ; =_020AFDD0
mov r0, #0
ldr r3, [r1, #4]
@ -1401,7 +1401,7 @@ _02035BC0:
strb r0, [r1, #0xac]
ldr r0, [r2, #4]
add r0, r0, #0xa4
bl sub_0204AB98
bl SetOptions
_02035C4C:
ldr r0, _02035CCC ; =_020AFDD0
ldr r2, [r0, #4]

View File

@ -15124,7 +15124,7 @@ _02048B40:
arm_func_start sub_02048B48
sub_02048B48: ; 0x02048B48
stmdb sp!, {r3, lr}
bl sub_0204AB24
bl InitOptions
bl InitScriptVariableValues
bl sub_02052C74
bl sub_0200CABC
@ -17649,64 +17649,3 @@ _0204AB10:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0204A9C8
arm_func_start sub_0204AB18
sub_0204AB18: ; 0x0204AB18
ldr ip, _0204AB20 ; =sub_0204AB24
bx ip
.align 2, 0
_0204AB20: .word sub_0204AB24
arm_func_end sub_0204AB18
arm_func_start sub_0204AB24
sub_0204AB24: ; 0x0204AB24
stmdb sp!, {r3}
sub sp, sp, #4
ldr r0, _0204AB74 ; =OPTIONS
mov r1, #2
mov r2, #0
strb r1, [r0]
strb r2, [r0, #2]
mov r1, #1
strb r1, [r0, #1]
strb r1, [r0, #3]
strb r2, [r0, #4]
strb r1, [r0, #5]
strb r1, [r0, #6]
strb r2, [r0, #7]
strb r2, [r0, #8]
strb r2, [sp]
strb r2, [r0, #9]
add sp, sp, #4
ldmia sp!, {r3}
bx lr
.align 2, 0
_0204AB74: .word OPTIONS
arm_func_end sub_0204AB24
arm_func_start sub_0204AB78
sub_0204AB78: ; 0x0204AB78
ldr r3, _0204AB94 ; =OPTIONS
mov r2, #0xa
_0204AB80:
ldrb r1, [r3], #1
subs r2, r2, #1
strb r1, [r0], #1
bne _0204AB80
bx lr
.align 2, 0
_0204AB94: .word OPTIONS
arm_func_end sub_0204AB78
arm_func_start sub_0204AB98
sub_0204AB98: ; 0x0204AB98
ldr r3, _0204ABB4 ; =OPTIONS
mov r2, #0xa
_0204ABA0:
ldrb r1, [r0], #1
subs r2, r2, #1
strb r1, [r3], #1
bne _0204ABA0
bx lr
.align 2, 0
_0204ABB4: .word OPTIONS
arm_func_end sub_0204AB98

View File

@ -15832,7 +15832,7 @@ MainLoop: ; 0x02065D1C
bl InitWanTable
bl sub_0201F208
bl DirectoryFileMngr_ExtractAllDirectoryFiles
bl sub_0204AB18
bl InitOptionsVeneer
bl InitKaomadoStream
bl sub_02025AD8
bl sub_02026E78

View File

@ -3501,4 +3501,14 @@ enum touch_screen_option {
TOUCH_SCREEN_USE_ANYWHERE = 2
};
enum speed_option {
SPEED_REGULAR = 0,
SPEED_FAST = 1
};
enum far_off_pals_option {
FAR_OFF_PALS_SELF = 0,
FAR_OFF_PALS_LOOK = 1
};
#endif //PMDSKY_ENUMS_H

View File

@ -9,14 +9,18 @@ struct options {
u8 bottom_screen;
u8 top_screen;
bool8 grids;
bool8 speed;
bool8 far_off_pals;
u8 speed;
u8 far_off_pals;
bool8 damage_turn;
bool8 d_pad_attack;
bool8 check_direction;
u8 frame_type;
};
void InitOptionsVeneer();
void InitOptions();
void GetOptions(u8* dest_opts_ptr);
void SetOptions(u8* src_options_ptr);
void SaveOptionsToCtx(u8* ctx);
void LoadOptionsFromCtx(u8* ctx);
bool8 IsTouchScreenNotOff();

View File

@ -8,6 +8,51 @@ extern u8 _0209CE89;
struct options OPTIONS = {};
void InitOptionsVeneer() {
InitOptions();
}
void InitOptions() {
struct options *o = &OPTIONS;
volatile u8 unused;
o->touch_screen = TOUCH_SCREEN_USE_ANYWHERE;
o->top_screen = TOP_SCREEN_CONTROLS;
o->bottom_screen = BOTTOM_SCREEN_CLEAR_MAP;
o->grids = 1;
o->speed = SPEED_REGULAR;
o->far_off_pals = FAR_OFF_PALS_LOOK;
o->damage_turn = TRUE;
o->d_pad_attack = FALSE;
o->check_direction = FALSE;
unused = 0;
o->frame_type = 0;
}
void GetOptions(u8* dest_opts_ptr) {
u32 idx = 0xA;
u8* src_opts_ptr = (u8*)&OPTIONS;
do {
*dest_opts_ptr = *src_opts_ptr;
src_opts_ptr += 1;
idx -= 1;
dest_opts_ptr += 1;
} while (idx != 0);
}
void SetOptions(u8* src_options_ptr) {
u32 idx = 0xA;
u8* dest_opts_ptr = (u8*)&OPTIONS;
do {
*dest_opts_ptr = *src_options_ptr;
src_options_ptr += 1;
dest_opts_ptr += 1;
idx -= 1;
} while (idx != 0);
}
void SaveOptionsToCtx(u8* ctx) {
CopyBitsTo(ctx, &OPTIONS.touch_screen, 2);
CopyBitsTo(ctx, &OPTIONS.top_screen, 3);
@ -21,14 +66,14 @@ void SaveOptionsToCtx(u8* ctx) {
}
CopyBitsTo(ctx, src, 1);
if (OPTIONS.speed) {
if (OPTIONS.speed != SPEED_REGULAR) {
src = &_0209CE88;
} else {
src = &_0209CE89;
}
CopyBitsTo(ctx, src, 1);
if (OPTIONS.far_off_pals) {
if (OPTIONS.far_off_pals != FAR_OFF_PALS_SELF) {
src = &_0209CE88;
} else {
src = &_0209CE89;