From 852ad2c5dadf26e86b742a3864534428a5297bfb Mon Sep 17 00:00:00 2001 From: slaw-22 Date: Sat, 20 Dec 2025 17:21:37 +0000 Subject: [PATCH] Decomp options funcs --- asm/include/main_0203C774.inc | 1 + asm/include/main_0204AF98.inc | 2 + asm/include/overlay_29_022E37DC.inc | 2 +- asm/include/overlay_29_022F05B4.inc | 6 +- asm/include/overlay_29_02308FE0.inc | 2 +- asm/include/overlay_29_0233861C.inc | 2 +- asm/include/overlay_29_0234DDF4.inc | 2 +- asm/main_0203C774.s | 88 ----------------------------- asm/main_0204AF98.s | 24 ++++++++ asm/overlay_29_022E37DC.s | 2 +- asm/overlay_29_022F05B4.s | 14 ++--- asm/overlay_29_02308FE0.s | 4 +- asm/overlay_29_0233861C.s | 2 +- asm/overlay_29_0234DDF4.s | 10 ++-- include/enums.h | 14 +++++ include/options.h | 27 +++++++++ main.lsf | 2 + src/options.c | 40 +++++++++++++ 18 files changed, 133 insertions(+), 111 deletions(-) create mode 100644 asm/include/main_0204AF98.inc create mode 100644 asm/main_0204AF98.s create mode 100644 include/options.h create mode 100644 src/options.c diff --git a/asm/include/main_0203C774.inc b/asm/include/main_0203C774.inc index 3fc3ab83..3db75319 100644 --- a/asm/include/main_0203C774.inc +++ b/asm/include/main_0203C774.inc @@ -465,6 +465,7 @@ .public sub_0203931C .public DebugPrintEventFlagSize .public SetSpecialEpisodeOpenOld +.public sub_0204AF98 .public sub_0204CDB8 .public sub_0204E154 .public sub_0204E19C diff --git a/asm/include/main_0204AF98.inc b/asm/include/main_0204AF98.inc new file mode 100644 index 00000000..7cb7222e --- /dev/null +++ b/asm/include/main_0204AF98.inc @@ -0,0 +1,2 @@ +#pragma once +.public _022AB0A0 diff --git a/asm/include/overlay_29_022E37DC.inc b/asm/include/overlay_29_022E37DC.inc index 10af5a37..4c59cd3a 100644 --- a/asm/include/overlay_29_022E37DC.inc +++ b/asm/include/overlay_29_022E37DC.inc @@ -156,7 +156,7 @@ .public sub_020483D8 .public sub_02048400 .public sub_0204AEA0 -.public sub_0204AF58 +.public IsTeamStatsOnTopScreen .public SubstitutePlaceholderStringTags .public TOP_SCREEN_STATUS_PTR .public UnloadFile diff --git a/asm/include/overlay_29_022F05B4.inc b/asm/include/overlay_29_022F05B4.inc index e882796e..869d64cb 100644 --- a/asm/include/overlay_29_022F05B4.inc +++ b/asm/include/overlay_29_022F05B4.inc @@ -189,9 +189,9 @@ .public sub_0204AEA0 .public sub_0204AEB0 .public sub_0204AEC0 -.public sub_0204AF10 -.public sub_0204AF20 -.public sub_0204AF78 +.public GetDPadAttackOption +.public GetCheckDirectionOption +.public IsTextLogOnTopScreen .public SubstitutePlaceholderStringTags .public TryAddMonsterToActiveTeam .public TryLeaderItemPickUp diff --git a/asm/include/overlay_29_02308FE0.inc b/asm/include/overlay_29_02308FE0.inc index eaebeea7..65f0e7dc 100644 --- a/asm/include/overlay_29_02308FE0.inc +++ b/asm/include/overlay_29_02308FE0.inc @@ -106,7 +106,7 @@ .public SetPokemonBattled .public ShouldDisplayEntityWrapper .public SpawnDroppedItemWrapper -.public sub_0204AF00 +.public GetDamageTurnOption .public SubInitMonster .public SubstitutePlaceholderStringTags .public TryEndPetrifiedOrSleepStatus diff --git a/asm/include/overlay_29_0233861C.inc b/asm/include/overlay_29_0233861C.inc index b5fee41d..cf6f806d 100644 --- a/asm/include/overlay_29_0233861C.inc +++ b/asm/include/overlay_29_0233861C.inc @@ -90,7 +90,7 @@ .public sub_0201F2A0 .public sub_0204AEA0 .public sub_0204AEC0 -.public sub_0204AF30 +.public IsMapShownOnEitherScreen .public TeamMemberHasExclusiveItemEffectActive .public TILESET_PROPERTIES .public UnloadFile diff --git a/asm/include/overlay_29_0234DDF4.inc b/asm/include/overlay_29_0234DDF4.inc index 6f5c70c9..a40f742c 100644 --- a/asm/include/overlay_29_0234DDF4.inc +++ b/asm/include/overlay_29_0234DDF4.inc @@ -62,7 +62,7 @@ .public sub_0200B3D4 .public sub_020282F4 .public sub_0202AAE8 -.public sub_0204AF20 +.public GetCheckDirectionOption .public TeamMenu .public TryPointCameraToMonster .public UnloadOverlay diff --git a/asm/main_0203C774.s b/asm/main_0203C774.s index 7eb1c640..4b2d09f7 100644 --- a/asm/main_0203C774.s +++ b/asm/main_0203C774.s @@ -17970,91 +17970,3 @@ sub_0204AEF0: ; 0x0204AEF0 .align 2, 0 _0204AEFC: .word _022AB0A0 arm_func_end sub_0204AEF0 - - arm_func_start sub_0204AF00 -sub_0204AF00: ; 0x0204AF00 - ldr r0, _0204AF0C ; =_022AB0A0 - ldrb r0, [r0, #6] - bx lr - .align 2, 0 -_0204AF0C: .word _022AB0A0 - arm_func_end sub_0204AF00 - - arm_func_start sub_0204AF10 -sub_0204AF10: ; 0x0204AF10 - ldr r0, _0204AF1C ; =_022AB0A0 - ldrb r0, [r0, #7] - bx lr - .align 2, 0 -_0204AF1C: .word _022AB0A0 - arm_func_end sub_0204AF10 - - arm_func_start sub_0204AF20 -sub_0204AF20: ; 0x0204AF20 - ldr r0, _0204AF2C ; =_022AB0A0 - ldrb r0, [r0, #8] - bx lr - .align 2, 0 -_0204AF2C: .word _022AB0A0 - arm_func_end sub_0204AF20 - - arm_func_start sub_0204AF30 -sub_0204AF30: ; 0x0204AF30 - ldr r0, _0204AF54 ; =_022AB0A0 - ldrb r1, [r0, #1] - cmp r1, #1 - cmpne r1, #2 - ldrneb r0, [r0, #2] - cmpne r0, #3 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_0204AF54: .word _022AB0A0 - arm_func_end sub_0204AF30 - - arm_func_start sub_0204AF58 -sub_0204AF58: ; 0x0204AF58 - ldr r0, _0204AF74 ; =_022AB0A0 - ldrb r0, [r0, #2] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0204AF74: .word _022AB0A0 - arm_func_end sub_0204AF58 - - arm_func_start sub_0204AF78 -sub_0204AF78: ; 0x0204AF78 - ldr r0, _0204AF94 ; =_022AB0A0 - ldrb r0, [r0, #2] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0204AF94: .word _022AB0A0 - arm_func_end sub_0204AF78 - - arm_func_start sub_0204AF98 -sub_0204AF98: ; 0x0204AF98 - ldr r1, _0204AFA8 ; =_022AB0A0 - ldrb r1, [r1, #9] - strb r1, [r0] - bx lr - .align 2, 0 -_0204AFA8: .word _022AB0A0 - arm_func_end sub_0204AF98 - - arm_func_start sub_0204AFAC -sub_0204AFAC: ; 0x0204AFAC - ldrb r1, [r0] - ldr r0, _0204AFBC ; =_022AB0A0 - strb r1, [r0, #9] - bx lr - .align 2, 0 -_0204AFBC: .word _022AB0A0 - arm_func_end sub_0204AFAC diff --git a/asm/main_0204AF98.s b/asm/main_0204AF98.s new file mode 100644 index 00000000..0ef3e657 --- /dev/null +++ b/asm/main_0204AF98.s @@ -0,0 +1,24 @@ + .include "asm/macros.inc" + .include "main_0204AF98.inc" + + .text + + arm_func_start sub_0204AF98 +sub_0204AF98: ; 0x0204AF98 + ldr r1, _0204AFA8 ; =_022AB0A0 + ldrb r1, [r1, #9] + strb r1, [r0] + bx lr + .align 2, 0 +_0204AFA8: .word _022AB0A0 + arm_func_end sub_0204AF98 + + arm_func_start sub_0204AFAC +sub_0204AFAC: ; 0x0204AFAC + ldrb r1, [r0] + ldr r0, _0204AFBC ; =_022AB0A0 + strb r1, [r0, #9] + bx lr + .align 2, 0 +_0204AFBC: .word _022AB0A0 + arm_func_end sub_0204AFAC diff --git a/asm/overlay_29_022E37DC.s b/asm/overlay_29_022E37DC.s index 7dd5af3c..5ae88714 100644 --- a/asm/overlay_29_022E37DC.s +++ b/asm/overlay_29_022E37DC.s @@ -6068,7 +6068,7 @@ FreeTeamStatsWrapper: ; 0x022E81E8 arm_func_start ov29_022E81F8 ov29_022E81F8: ; 0x022E81F8 stmdb sp!, {r3, lr} - bl sub_0204AF58 + bl IsTeamStatsOnTopScreen cmp r0, #0 bne _022E8210 bl ov29_022E8104 diff --git a/asm/overlay_29_022F05B4.s b/asm/overlay_29_022F05B4.s index 38cf2c4a..35452462 100644 --- a/asm/overlay_29_022F05B4.s +++ b/asm/overlay_29_022F05B4.s @@ -1311,7 +1311,7 @@ _022F16A4: mov r2, #4 bl ChangeMonsterAnimation _022F16F4: - bl sub_0204AF10 + bl GetDPadAttackOption cmp r0, #0 moveq r1, #0 beq _022F17E0 @@ -1618,7 +1618,7 @@ _022F1B5C: _022F1B64: cmp r3, #4 bne _022F1B9C - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _022F1B8C mov r0, r6 @@ -1663,7 +1663,7 @@ _022F1BE0: bl sub_02006B70 b _022F2970 _022F1C04: - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _022F1C28 add r1, sb, #0x124 + SET_LEADER_ACTION_OFFSET @@ -1825,13 +1825,13 @@ _022F1E3C: ldrh r0, [r0, #2] tst r0, #2 beq _022F1E90 - bl sub_0204AF78 + bl IsTextLogOnTopScreen mov r0, #4 bl PlaySeVolumeWrapper mov r0, #0 mov r1, #1 bl OpenMessageLog - bl sub_0204AF78 + bl IsTextLogOnTopScreen cmp r0, #0 beq _022F1E88 bl ov29_0234BB38 @@ -2026,7 +2026,7 @@ _022F2118: movs fp, r0 bmi _022F2180 mov r8, #1 - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _022F2150 mov r0, r6 @@ -3904,7 +3904,7 @@ ov29_022F3B98: ; 0x022F3B98 mov r8, r2 mov fp, r4 str r4, [sp] - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 moveq r0, r4 beq _022F3E88 diff --git a/asm/overlay_29_02308FE0.s b/asm/overlay_29_02308FE0.s index 836cd713..ec9c6b63 100644 --- a/asm/overlay_29_02308FE0.s +++ b/asm/overlay_29_02308FE0.s @@ -604,7 +604,7 @@ _0230A24C: mov r6, #0 cmp r0, #0 beq _0230A2CC - bl sub_0204AF00 + bl GetDamageTurnOption cmp r0, #0 beq _0230A2CC mov r0, sb @@ -1708,7 +1708,7 @@ _02309820: mov sl, #0 cmp r0, #0 beq _023098A0 - bl sub_0204AF00 + bl GetDamageTurnOption cmp r0, #0 beq _023098A0 mov r0, r7 diff --git a/asm/overlay_29_0233861C.s b/asm/overlay_29_0233861C.s index 428c3755..014a8ef6 100644 --- a/asm/overlay_29_0233861C.s +++ b/asm/overlay_29_0233861C.s @@ -1133,7 +1133,7 @@ _02339318: streq r8, [sp, #0x14] moveq r8, #1 _02339344: - bl sub_0204AF30 + bl IsMapShownOnEitherScreen cmp r0, #0 ldreq r0, _023398CC ; =ov29_0235376C ldreqb r1, [r0, #1] diff --git a/asm/overlay_29_0234DDF4.s b/asm/overlay_29_0234DDF4.s index 79d15a94..3a12abbc 100644 --- a/asm/overlay_29_0234DDF4.s +++ b/asm/overlay_29_0234DDF4.s @@ -206,7 +206,7 @@ _0234E0B8: cmpne r0, #0x27 cmpne r0, #0x41 bne _0234E0EC - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _0234E140 bl GetLeaderAction @@ -218,7 +218,7 @@ _0234E0B8: _0234E0EC: cmp r0, #0x31 bne _0234E140 - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _0234E140 bl GetLeaderAction @@ -479,7 +479,7 @@ _0234E45C: cmp r0, #0x15 bne _0234E4CC _0234E48C: - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _0234E4CC bl GetLeaderAction @@ -625,7 +625,7 @@ _0234E698: cmpne r0, #0x27 cmpne r0, #0x41 bne _0234E6CC - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _0234E720 bl GetLeaderAction @@ -637,7 +637,7 @@ _0234E698: _0234E6CC: cmp r0, #0x31 bne _0234E720 - bl sub_0204AF20 + bl GetCheckDirectionOption cmp r0, #0 beq _0234E720 bl GetLeaderAction diff --git a/include/enums.h b/include/enums.h index f9fbf464..6d12bdf9 100644 --- a/include/enums.h +++ b/include/enums.h @@ -3481,4 +3481,18 @@ enum compare_operation { // Taken from pmd-red's FlagJudgeOperation CMP_BIT_SET, }; +enum top_screen_options { + TOP_SCREEN_CONTROLS = 0, + TOP_SCREEN_TEAM_STATS = 1, + TOP_SCREEN_TEXT_LOG = 2, + TOP_SCREEN_MAP_AND_TEAM = 3, + TOP_SCREEN_JOB = 4 +}; + +enum bottom_screen_option { + BOTTOM_SCREEN_NO_MAP = 0, + BOTTOM_SCREEN_CLEAR_MAP = 1, + BOTTOM_SCREEN_SHADED_MAP = 2 +}; + #endif //PMDSKY_ENUMS_H diff --git a/include/options.h b/include/options.h new file mode 100644 index 00000000..f3108f5b --- /dev/null +++ b/include/options.h @@ -0,0 +1,27 @@ +#ifndef PMDSKY_OPTIONS +#define PMDSKY_OPTIONS + +#include "util.h" + +// See enums for values +struct options { + u8 touch_screen; + u8 bottom_screen; + u8 top_screen; + u8 unk0; + u8 speed; + u8 far_off_pals; + u8 damage_turn; + u8 d_pad_attack; + u8 check_direction; + u8 unk1; +}; + +u8 GetDamageTurnOption(); +u8 GetDPadAttackOption(); +u8 GetCheckDirectionOption(); +bool8 IsMapShownOnEitherScreen(); +bool8 IsTeamStatsOnTopScreen(); +bool8 IsTextLogOnTopScreen(); + +#endif //PMDSKY_OPTIONS diff --git a/main.lsf b/main.lsf index 63bb902a..7cc12747 100644 --- a/main.lsf +++ b/main.lsf @@ -78,6 +78,8 @@ Static main Object asm/main_02034974.o Object src/main_0203C760.o Object asm/main_0203C774.o + Object src/options.o + Object asm/main_0204AF98.o Object src/game_mode.o Object src/script_variable.o Object asm/main_rodata_0209CECC.o diff --git a/src/options.c b/src/options.c new file mode 100644 index 00000000..6febafe4 --- /dev/null +++ b/src/options.c @@ -0,0 +1,40 @@ +#include "enums.h" +#include "options.h" + +extern struct options _022AB0A0; + +u8 GetDamageTurnOption() { + return _022AB0A0.damage_turn; +} + +u8 GetDPadAttackOption() { + return _022AB0A0.d_pad_attack; +} + +u8 GetCheckDirectionOption() { + return _022AB0A0.check_direction; +} + +bool8 IsMapShownOnEitherScreen() { + if (_022AB0A0.bottom_screen == BOTTOM_SCREEN_CLEAR_MAP || + _022AB0A0.bottom_screen == BOTTOM_SCREEN_SHADED_MAP || + _022AB0A0.top_screen == TOP_SCREEN_MAP_AND_TEAM) { + return TRUE; + } + return FALSE; +} + +bool8 IsTeamStatsOnTopScreen() { + if (_022AB0A0.top_screen == TOP_SCREEN_TEAM_STATS) { + return TRUE; + } + return FALSE; +} + +bool8 IsTextLogOnTopScreen() { + if (_022AB0A0.top_screen == TOP_SCREEN_TEXT_LOG) { + return TRUE; + } else { + return FALSE; + } +}