From 2472ad54f7448cbb12b5ebfefcc131d9f9db1b7e Mon Sep 17 00:00:00 2001 From: cecilarmitais Date: Mon, 17 Aug 2026 01:49:58 -0700 Subject: [PATCH] Decomp four allocation, keyboard and area-name accessors Decompile from asm: AllocUnkBagStruct 0x02042B98 FreeUnkBagStruct 0x02042BBC SetAreaNameBoxState3 0x0202FD3C GetKeyboardStringResult 0x0203755C AllocUnkBagStruct and FreeUnkBagStruct manage the pointer at offset 8 of UNK_STORAGE_STRUCT_0XC, the field the selection accessors in the previous commit read. The allocation is 0xC8 bytes, which is 0x32 words -- the same count ClearBagSelectedItemTable zeroes and the same inventory size the bag walkers use. MemAlloc is still asm and has no owning header, so its prototype is provisional and declared beside the caller, matching the signature overlay_31_02382820.c already uses. That is now a second declaration of it; both should collapse into one header when MemAlloc lands. SetAreaNameBoxState3 writes a word at 0xA0 of the window contents, so the filler before 0x198 in struct unk_0202AAA8 is split to expose it. Nothing after it moves. GetKeyboardStringResult reads through the unnamed pointer _020AFDF0, which keeps its placeholder name, into a word at 0xF8 of whatever it points at. GetWindow was looked at and deliberately left in asm. It indexes WINDOW_LIST with a stride of 0xE0, so its argument is an index, but overlay_31_02382820.c declares it as taking a struct Window * and passes one. Landing it correctly means retyping that caller, and struct Window there describes only its first 7 bytes, so the two disagree about more than this function. No comments are added to any pmd-sky file. Authored by Claude (Opus 5) under human direction. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. Co-Authored-By: Claude Opus 5 --- asm/include/main_0202F190.inc | 19 +- asm/include/main_0202FD50.inc | 32 + asm/include/main_02034974.inc | 264 +- asm/include/main_02037570.inc | 173 + .../{main_02042B98.inc => main_02042BE0.inc} | 1 - asm/main_0202F190.s | 785 -- asm/main_0202FD50.s | 780 ++ asm/main_02034974.s | 6648 ----------------- asm/main_02037570.s | 6642 ++++++++++++++++ asm/{main_02042B98.s => main_02042BE0.s} | 30 +- include/main_0202AAA8.h | 4 +- include/main_0202FD3C.h | 6 + include/main_0203755C.h | 6 + include/main_02042B84.h | 2 + main.lsf | 6 +- src/main_0202FD3C.c | 9 + src/main_0203755C.c | 13 + src/main_02042B84.c | 15 + 18 files changed, 7760 insertions(+), 7675 deletions(-) create mode 100644 asm/include/main_0202FD50.inc create mode 100644 asm/include/main_02037570.inc rename asm/include/{main_02042B98.inc => main_02042BE0.inc} (97%) create mode 100644 asm/main_0202FD50.s create mode 100644 asm/main_02037570.s rename asm/{main_02042B98.s => main_02042BE0.s} (95%) create mode 100644 include/main_0202FD3C.h create mode 100644 include/main_0203755C.h create mode 100644 src/main_0202FD3C.c create mode 100644 src/main_0203755C.c diff --git a/asm/include/main_0202F190.inc b/asm/include/main_0202F190.inc index b46d832b..61916094 100644 --- a/asm/include/main_0202F190.inc +++ b/asm/include/main_0202F190.inc @@ -1,38 +1,21 @@ #pragma once -.public ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS -.public ALERT_BOX_DEFAULT_WINDOW_PARAMS .public AREA_NAME_BOX_DEFAULT_WINDOW_PARAMS -.public AnalyzeText -.public AppendStandardStringToMission -.public CONTROLS_CHART_DEFAULT_WINDOW_PARAMS .public DeleteWindow -.public DrawTextInWindow .public GetPressedButtons .public GetWindowContents -.public GetWindowRectangle .public InitPortraitParams -.public InitWindowInput .public IsValidPortrait .public LoadPortrait .public MemAlloc .public MemFree -.public MemZero .public MemcpySimple .public NewWindowScreenCheck .public PORTRAIT_BOX_DEFAULT_WINDOW_PARAMS .public PreprocessString .public PreprocessStringFromId .public TEXT_BOX_DEFAULT_WINDOW_PARAMS -.public UpdateAdvancedTextBox -.public UpdateWindow +.public UpdateAreaNameBox .public _0209AF6C -.public _s32_div_f -.public sub_01FF9128 -.public sub_01FF929C -.public sub_02020B60 -.public sub_02020BC4 -.public sub_02025D50 -.public sub_02025E84 .public sub_0202613C .public sub_02026184 .public sub_02026194 diff --git a/asm/include/main_0202FD50.inc b/asm/include/main_0202FD50.inc new file mode 100644 index 00000000..7d4e300d --- /dev/null +++ b/asm/include/main_0202FD50.inc @@ -0,0 +1,32 @@ +#pragma once +.public ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS +.public ALERT_BOX_DEFAULT_WINDOW_PARAMS +.public AnalyzeText +.public AppendStandardStringToMission +.public CONTROLS_CHART_DEFAULT_WINDOW_PARAMS +.public DeleteWindow +.public DrawTextInWindow +.public GetWindowContents +.public GetWindowRectangle +.public InitWindowInput +.public MemAlloc +.public MemFree +.public MemZero +.public NewWindowScreenCheck +.public PreprocessString +.public UpdateAdvancedTextBox +.public UpdateWindow +.public _s32_div_f +.public sub_01FF9128 +.public sub_01FF929C +.public sub_02020B60 +.public sub_02020BC4 +.public sub_02025D50 +.public sub_02025E84 +.public sub_0202613C +.public sub_02026194 +.public sub_020261D4 +.public sub_02027B1C +.public sub_0202810C +.public sub_0202812C +.public sub_0202836C diff --git a/asm/include/main_02034974.inc b/asm/include/main_02034974.inc index 747be92d..3e85fa0e 100644 --- a/asm/include/main_02034974.inc +++ b/asm/include/main_02034974.inc @@ -1,4 +1,65 @@ #pragma once +.public CheckDebugMenuField0x1A4 +.public CheckOptionsMenuField0x1A4 +.public CheckParentMenuField0x1A0 +.public CloseDebugMenu +.public CloseDialogueBox +.public CloseOptionsMenu +.public CloseParentMenu +.public ClosePortraitBox +.public CloseSimpleMenu +.public CloseTextBox +.public CopyFrameTypeOption +.public CopyOrInitPreprocessorArgs +.public CreateDebugMenu +.public CreateDialogueBox +.public CreateOptionsMenu +.public CreateParentMenuFromStringIds +.public CreatePortraitBox +.public CreateSimpleMenu +.public CreateSimpleMenuFromStringIds +.public CreateTextBox +.public Debug_GetDebugFlag +.public Debug_GetLogFlag +.public Debug_SetDebugFlag +.public Debug_SetLogFlag +.public FreeActiveMenu +.public GetHeldButtons +.public GetOptions +.public GetOptionsMenuResult +.public GetOptionsMenuStates +.public GetPressedButtons +.public GetSimpleMenuResult__0202AEA4 +.public GetSimpleMenuResult__0202B870 +.public GetWindow +.public HidePortraitBox +.public InitMenu +.public InitPortraitParams +.public IsDebugMenuActive +.public IsDialogueBoxActive +.public IsOptionsMenuActive +.public IsParentMenuActive +.public IsSimpleMenuActive +.public IsValidPortrait +.public LoadOverlay +.public MENU_CONTROL_PTR +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public NULL_OVERLAY_LOAD_ENTRY +.public OverlayIsLoaded +.public OverlayLoadEntriesEqual +.public PlaySeVolumeWrapper +.public SetFrameTypeOption +.public SetNotifyNote +.public SetOptions +.public SetSimpleMenuField0x1AC +.public ShowDialogueBox +.public ShowPortraitInPortraitBox +.public ShowStringIdInDialogueBox +.public ShowStringInDialogueBox +.public StrcpySimple .public _0209B09C .public _0209B0EC .public _0209B0FC @@ -15,195 +76,30 @@ .public _0209B244 .public _0209B254 .public _0209B264 -.public _0209B288 .public _0209B28C .public _0209B298 .public _0209B2B8 .public _0209B2C4 .public _0209B2D0 .public _0209B2DC -.public _0209B2E0 -.public _0209B2E1 -.public _0209B2E2 -.public _0209B2E3 .public _0209B2EC .public _0209B2FC -.public _0209B30C .public _0209B31C .public _0209B32C .public _0209B32E .public _0209B3B4 .public _0209B3B6 -.public _0209B48C -.public _0209B4A4 -.public _0209B4AC -.public _0209B4B8 -.public _0209B4C0 -.public _0209B4C4 -.public _0209B4D4 -.public _0209B4E4 -.public _0209B4FC -.public _0209B50C -.public _0209C29C_JP -.public _0209C29D_JP -.public _0209C29E_JP -.public _0209C5C0 -.public _0209C5D0 -.public _0209C5E0 -.public _0209C604 -.public _0209C618 -.public _0209C628 -.public _0209C638 -.public _0209C648 -.public _0209C658 -.public _0209C668 -.public _0209C678 -.public _0209C688 -.public _0209C6B8 -.public _0209C70C -.public _0209C764 -.public _0209C798 -.public _0209C7B8 .public _020AFDBC .public _020AFDD0 .public _020AFDD8 .public _020AFDE0 .public _020AFDE8 .public _020AFDF0 -.public _020AFE40 -.public _020AFE58 -.public _020AFE5C -.public _020B12A0_JP -.public _022AADF8 .public _s32_div_f -.public AppendStandardStringToMission -.public CheckDebugMenuField0x1A4 -.public CheckOptionsMenuField0x1A4 -.public CheckParentMenuField0x1A0 -.public CloseAdvancedMenu -.public CloseAdvancedTextBox -.public CloseDebugMenu -.public CloseDialogueBox -.public CloseOptionsMenu -.public CloseParentMenu -.public ClosePortraitBox -.public CloseSimpleMenu -.public CloseTeamSelectionMenu -.public CloseTextBox -.public CopyFrameTypeOption -.public CopyOrInitPreprocessorArgs -.public CreateAdvancedMenu -.public CreateAdvancedTextBox -.public CreateDebugMenu -.public CreateDialogueBox -.public CreateOptionsMenu -.public CreateParentMenuFromStringIds -.public CreatePortraitBox -.public CreateSimpleMenu -.public CreateSimpleMenuFromStringIds -.public CreateTeamSelectionMenu -.public CreateTextBox -.public Debug_GetDebugFlag -.public Debug_GetLogFlag -.public Debug_Print0 -.public Debug_SetDebugFlag -.public Debug_SetLogFlag -.public DrawTextInWindow -.public FemaleToMaleForm -.public FreeActiveMenu -.public GetActiveRosterIndex -.public GetActiveTeamMember -.public GetAdvancedMenuResult -.public GetAppointedLeaderMemberIdx -.public GetDexNumber -.public GetDigitInputResult -.public GetEvolutionPossibilities -.public GetHeldButtons -.public GetHero -.public GetHeroMemberIdx -.public GetItemMoveId16 -.public GetKeyM2NSwitch -.public GetMainCharacter1MemberIdx -.public GetMainCharacter2MemberIdx -.public GetMainCharacter3MemberIdx -.public GetNameString -.public GetOptions -.public GetOptionsMenuResult -.public GetOptionsMenuStates -.public GetPartner -.public GetPartnerMemberIdx -.public GetPressedButtons -.public GetSimpleMenuResult__0202AEA4 -.public GetSimpleMenuResult__0202B870 -.public GetStringFromFileVeneer -.public GetTeamMember -.public GetType -.public GetWindow -.public HidePortraitBox -.public InitMenu -.public InitPortraitParams -.public IsAdvancedMenuActive2 -.public IsAdvancedTextBoxActive -.public IsDebugMenuActive -.public IsDialogueBoxActive -.public IsMainCharacter -.public IsMovesetValidInTimeDarkness -.public IsOptionsMenuActive -.public IsParentMenuActive -.public IsShaymin -.public IsSimpleMenuActive -.public IsTeamSelectionMenuActive -.public IsTeamSelectionMenuState3 -.public IsTextboxState3 -.public IsValidPortrait -.public IsValidTeamMember -.public KEYBOARD_STRING_IDS -.public LoadOverlay -.public MemAlloc -.public MemcpySimple -.public MemFree -.public MemZero -.public MENU_CONTROL_PTR -.public NULL_OVERLAY_LOAD_ENTRY -.public ov11_0230D71C -.public OverlayIsLoaded -.public OverlayLoadEntriesEqual -.public PlaySeVolumeWrapper -.public PreprocessStringFromId -.public ReturnScriptMenuResultZero -.public SaveScriptVariableValueBytes -.public SetAdvancedTextBoxField0x1C2 -.public SetAdvancedTextBoxState5 -.public SetFrameTypeOption -.public SetMainTeamName -.public SetNotifyNote -.public SetOptions -.public SetSimpleMenuField0x1AC -.public ShowDialogueBox -.public ShowPortraitInPortraitBox -.public ShowStringIdInDialogueBox -.public ShowStringInDialogueBox -.public sprintf .public strcpy -.public StrcpySimple -.public StrncpySimple -.public StrncpySimpleNoPadSafe .public sub_020063F4 -.public sub_0202065C -.public sub_0202372C -.public sub_02024B94 -.public sub_020251F0 -.public sub_02025C7C -.public sub_02025D50 -.public sub_020264F8 -.public sub_020265A8 .public sub_02027180 -.public sub_02027B1C -.public sub_0202810C -.public sub_0202812C .public sub_020282F4 -.public sub_02028354 -.public sub_0202836C .public sub_020288FC .public sub_0202A2A4 .public sub_0202D59C @@ -214,34 +110,18 @@ .public sub_0202F334 .public sub_0202F3F8 .public sub_0202F954 -.public sub_020309B8 -.public sub_0203111C -.public sub_0203115C -.public sub_0203117C -.public sub_020311D4 -.public sub_020311E8 -.public sub_02031220 -.public sub_02031888 -.public sub_0203189C -.public sub_020318D0 .public sub_02031914 .public sub_02034840 -.public sub_0203C784 -.public sub_0203C9A0 +.public sub_02037C78 +.public sub_02037CA8 +.public sub_02037CD8 +.public sub_02037F58 +.public sub_020383FC +.public sub_020384B0 +.public sub_02038904 +.public sub_02038A54 +.public sub_02038ADC +.public sub_02038B80 +.public sub_0203935C .public sub_02048078 .public sub_0204964C -.public sub_0204DA1C -.public sub_0204E210 -.public sub_0204E3C8 -.public sub_02052FF8 -.public sub_02053D1C -.public sub_02054F18 -.public sub_02056410 -.public sub_02056460 -.public sub_020564B0 -.public sub_02056F60 -.public sub_020584F8 -.public sub_02059B08 -.public TEAM_MEMBER_TABLE_PTR -.public UpdateWindow -.public vsprintf diff --git a/asm/include/main_02037570.inc b/asm/include/main_02037570.inc new file mode 100644 index 00000000..38af2902 --- /dev/null +++ b/asm/include/main_02037570.inc @@ -0,0 +1,173 @@ +#pragma once +.public AppendStandardStringToMission +.public CloseAdvancedMenu +.public CloseAdvancedTextBox +.public CloseDialogueBox +.public CloseSimpleMenu +.public CloseTeamSelectionMenu +.public CloseTextBox +.public CreateAdvancedMenu +.public CreateAdvancedTextBox +.public CreateDialogueBox +.public CreateSimpleMenuFromStringIds +.public CreateTeamSelectionMenu +.public CreateTextBox +.public Debug_Print0 +.public DrawTextInWindow +.public FemaleToMaleForm +.public GetActiveRosterIndex +.public GetActiveTeamMember +.public GetAdvancedMenuResult +.public GetAppointedLeaderMemberIdx +.public GetDexNumber +.public GetDigitInputResult +.public GetEvolutionPossibilities +.public GetHero +.public GetHeroMemberIdx +.public GetItemMoveId16 +.public GetKeyM2NSwitch +.public GetKeyboardStatus +.public GetKeyboardStringResult +.public GetMainCharacter1MemberIdx +.public GetMainCharacter2MemberIdx +.public GetMainCharacter3MemberIdx +.public GetNameString +.public GetPartner +.public GetPartnerMemberIdx +.public GetPressedButtons +.public GetSimpleMenuResult__0202B870 +.public GetStringFromFileVeneer +.public GetTeamMember +.public GetType +.public GetWindow +.public IsAdvancedMenuActive2 +.public IsAdvancedTextBoxActive +.public IsDialogueBoxActive +.public IsMainCharacter +.public IsMovesetValidInTimeDarkness +.public IsShaymin +.public IsSimpleMenuActive +.public IsTeamSelectionMenuActive +.public IsTeamSelectionMenuState3 +.public IsTextboxState3 +.public IsValidTeamMember +.public KEYBOARD_STRING_IDS +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public PlaySeVolumeWrapper +.public PreprocessStringFromId +.public ReturnScriptMenuResultZero +.public SaveScriptVariableValueBytes +.public SetAdvancedTextBoxField0x1C2 +.public SetAdvancedTextBoxState5 +.public SetMainTeamName +.public ShowKeyboard +.public ShowStringIdInDialogueBox +.public StrcpySimple +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public UpdateWindow +.public _0209B288 +.public _0209B28C +.public _0209B2C4 +.public _0209B2D0 +.public _0209B2DC +.public _0209B2E0 +.public _0209B2E1 +.public _0209B2E2 +.public _0209B2E3 +.public _0209B2EC +.public _0209B2FC +.public _0209B30C +.public _0209B31C +.public _0209B32C +.public _0209B32E +.public _0209B3B4 +.public _0209B3B6 +.public _0209B48C +.public _0209B4A4 +.public _0209B4AC +.public _0209B4B8 +.public _0209B4C0 +.public _0209B4C4 +.public _0209B4D4 +.public _0209B4E4 +.public _0209B4FC +.public _0209B50C +.public _0209C29C_JP +.public _0209C29D_JP +.public _0209C29E_JP +.public _0209C5C0 +.public _0209C5D0 +.public _0209C5E0 +.public _0209C604 +.public _0209C618 +.public _0209C628 +.public _0209C638 +.public _0209C648 +.public _0209C658 +.public _0209C668 +.public _0209C678 +.public _0209C688 +.public _0209C6B8 +.public _0209C70C +.public _0209C764 +.public _0209C798 +.public _0209C7B8 +.public _020AFDF0 +.public _020AFE40 +.public _020AFE58 +.public _020AFE5C +.public _020B12A0_JP +.public _022AADF8 +.public _s32_div_f +.public ov11_0230D71C +.public sprintf +.public strcpy +.public sub_020063F4 +.public sub_0202065C +.public sub_0202372C +.public sub_02024B94 +.public sub_020251F0 +.public sub_02025C7C +.public sub_02025D50 +.public sub_020264F8 +.public sub_020265A8 +.public sub_02027B1C +.public sub_0202810C +.public sub_0202812C +.public sub_02028354 +.public sub_0202836C +.public sub_0202A2A4 +.public sub_0202F2C4 +.public sub_0202F954 +.public sub_020309B8 +.public sub_0203111C +.public sub_0203115C +.public sub_0203117C +.public sub_020311D4 +.public sub_020311E8 +.public sub_02031220 +.public sub_02031888 +.public sub_0203189C +.public sub_020318D0 +.public sub_02031914 +.public sub_02037468 +.public sub_0203C784 +.public sub_0203C9A0 +.public sub_0204DA1C +.public sub_0204E210 +.public sub_0204E3C8 +.public sub_02052FF8 +.public sub_02053D1C +.public sub_02054F18 +.public sub_02056410 +.public sub_02056460 +.public sub_020564B0 +.public sub_02056F60 +.public sub_020584F8 +.public sub_02059B08 +.public vsprintf diff --git a/asm/include/main_02042B98.inc b/asm/include/main_02042BE0.inc similarity index 97% rename from asm/include/main_02042B98.inc rename to asm/include/main_02042BE0.inc index eb8085d5..a2dc28d3 100644 --- a/asm/include/main_02042B98.inc +++ b/asm/include/main_02042BE0.inc @@ -1,6 +1,5 @@ #pragma once .public BAG_ITEMS_PTR_MIRROR -.public ClearBagSelectedItemTable .public CloseCollectionMenu .public CloseTextBox .public ConvertStorageItemAtIdxToItem diff --git a/asm/main_0202F190.s b/asm/main_0202F190.s index 2a4ec088..76730a1f 100644 --- a/asm/main_0202F190.s +++ b/asm/main_0202F190.s @@ -910,788 +910,3 @@ _0202FD30: .word 0x0000C402 _0202FD34: .word UpdateAreaNameBox _0202FD38: .word AREA_NAME_BOX_DEFAULT_WINDOW_PARAMS arm_func_end CreateAreaNameBox - - arm_func_start SetAreaNameBoxState3 -SetAreaNameBoxState3: ; 0x0202FD3C - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #3 - str r1, [r0, #0xa0] - ldmia sp!, {r3, pc} - arm_func_end SetAreaNameBoxState3 - - arm_func_start CloseAreaNameBox -CloseAreaNameBox: ; 0x0202FD50 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetWindowContents - bl MemFree - mov r0, r4 - bl DeleteWindow - ldmia sp!, {r4, pc} - arm_func_end CloseAreaNameBox - - arm_func_start IsAreaNameBoxActive -IsAreaNameBoxActive: ; 0x0202FD6C - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0xa0] - cmp r0, #2 - cmpne r0, #4 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsAreaNameBoxActive - - arm_func_start UpdateAreaNameBox -UpdateAreaNameBox: ; 0x0202FD8C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0xa0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, r5, r6, pc} -_0202FDA8: ; jump table - b _0202FDB8 ; case 0 - b _0202FDD0 ; case 1 - ldmia sp!, {r4, r5, r6, pc} ; case 2 - b _0202FE0C ; case 3 -_0202FDB8: - ldrsb r0, [r5, #0x10] - bl sub_0202810C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #1 - str r0, [r4, #0xa0] -_0202FDD0: - ldrsb r0, [r5, #0x10] - ldr r6, [r5, #0xc] - bl sub_02027B1C - ldrsb r0, [r5, #0x10] - ldr r1, [r6, #0x1b0] - ldr r2, [r6, #0x1ac] - add r3, r6, #0xac - bl DrawTextInWindow - ldrsb r0, [r5, #0x10] - bl UpdateWindow - mov r0, #2 - str r0, [r4, #0xa0] - sub r0, r0, #3 - str r0, [r5, #0xb8] - ldmia sp!, {r4, r5, r6, pc} -_0202FE0C: - ldrsb r0, [r5, #0x10] - bl sub_0202812C - cmp r0, #0 - mvnne r0, #4 - strne r0, [r5, #0xb8] - movne r0, #4 - strne r0, [r4, #0xa0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end UpdateAreaNameBox - - arm_func_start CreateControlsChart -CreateControlsChart: ; 0x0202FE2C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r5, r1 - mov r0, #0xa8 - mov r1, #8 - mov r4, r2 - mov r6, r3 - bl MemAlloc - mov ip, r0 - cmp r7, #0 - ldreq r0, _0202FECC ; =CONTROLS_CHART_DEFAULT_WINDOW_PARAMS - strh r6, [ip, #0xa4] - add lr, sp, #0 - ldmeqia r0, {r0, r1, r2, r3} - stmeqia lr, {r0, r1, r2, r3} - ldmneia r7, {r0, r1, r2, r3} - stmneia lr, {r0, r1, r2, r3} - ldrne r0, _0202FED0 ; =UpdateControlsChart - str ip, [sp, #0xc] - strne r0, [sp] - ldr r0, _0202FED0 ; =UpdateControlsChart - cmp r4, #0 - stmia ip, {r0, r5} - beq _0202FEB0 - add lr, ip, #8 - mov r5, #9 -_0202FE98: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0202FE98 - ldmia r4, {r0, r1} - stmia lr, {r0, r1} -_0202FEB0: - mov r2, #0 - add r0, sp, #0 - mov r1, #3 - str r2, [ip, #0xa0] - bl NewWindowScreenCheck - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0202FECC: .word CONTROLS_CHART_DEFAULT_WINDOW_PARAMS -_0202FED0: .word UpdateControlsChart - arm_func_end CreateControlsChart - - arm_func_start CloseControlsChart -CloseControlsChart: ; 0x0202FED4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetWindowContents - bl MemFree - mov r0, r4 - bl DeleteWindow - ldmia sp!, {r4, pc} - arm_func_end CloseControlsChart - - arm_func_start IsControlsChartActive -IsControlsChartActive: ; 0x0202FEF0 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0xa0] - cmp r0, #2 - cmpne r0, #4 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsControlsChartActive - - arm_func_start UpdateControlsChart -UpdateControlsChart: ; 0x0202FF10 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0xa0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, r5, r6, pc} -_0202FF2C: ; jump table - b _0202FF3C ; case 0 - b _0202FF54 ; case 1 - ldmia sp!, {r4, r5, r6, pc} ; case 2 - b _0202FF90 ; case 3 -_0202FF3C: - ldrsb r0, [r5, #0x10] - bl sub_0202810C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #1 - str r0, [r4, #0xa0] -_0202FF54: - ldrsb r0, [r5, #0x10] - ldr r6, [r5, #0xc] - bl sub_02027B1C - ldrsb r0, [r5, #0x10] - ldrh r3, [r6, #0xa4] - mov r1, #4 - mov r2, #2 - bl AppendStandardStringToMission - ldrsb r0, [r5, #0x10] - bl UpdateWindow - mov r0, #2 - str r0, [r4, #0xa0] - sub r0, r0, #3 - str r0, [r5, #0xb8] - ldmia sp!, {r4, r5, r6, pc} -_0202FF90: - ldrsb r0, [r5, #0x10] - bl sub_0202812C - cmp r0, #0 - mvnne r0, #4 - strne r0, [r5, #0xb8] - movne r0, #4 - strne r0, [r4, #0xa0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end UpdateControlsChart - - arm_func_start CreateAlertBox -CreateAlertBox: ; 0x0202FFB0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - mov r0, #0x650 - mov r1, #8 - bl MemAlloc - mov r1, #0x650 - mov r4, r0 - bl MemZero - cmp r5, #0 - ldreq r0, _0203003C ; =ALERT_BOX_DEFAULT_WINDOW_PARAMS - add ip, sp, #0 - ldmeqia r0, {r0, r1, r2, r3} - stmeqia ip, {r0, r1, r2, r3} - ldmneia r5, {r0, r1, r2, r3} - stmneia ip, {r0, r1, r2, r3} - ldrne r0, _02030040 ; =UpdateAlertBox - str r4, [sp, #0xc] - strne r0, [sp] - add r0, sp, #0 - mov r1, #3 - bl NewWindowScreenCheck - strb r0, [r4] - ldrsb r1, [r4] - add r0, r4, #8 - bl sub_02025E84 - mov r1, #0 - str r1, [r4, #4] - add r0, r4, #0x600 - strh r1, [r0, #0x44] - strh r1, [r0, #0x46] - strh r1, [r0, #0x48] - ldrsb r0, [r4] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203003C: .word ALERT_BOX_DEFAULT_WINDOW_PARAMS -_02030040: .word UpdateAlertBox - arm_func_end CreateAlertBox - - arm_func_start CloseAlertBox -CloseAlertBox: ; 0x02030044 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - ldrsb r0, [r4] - bl sub_0202836C - add r0, r4, #8 - bl sub_0202613C - mov r0, r5 - bl GetWindowContents - bl MemFree - mov r0, r5 - bl DeleteWindow - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CloseAlertBox - - arm_func_start sub_0203007C -sub_0203007C: ; 0x0203007C - add r0, r0, #0x600 - ldrsh r1, [r0, #0x44] - add r1, r1, #1 - strh r1, [r0, #0x44] - ldrsh r1, [r0, #0x44] - cmp r1, #4 - movge r1, #0 - strgeh r1, [r0, #0x44] - bx lr - arm_func_end sub_0203007C - - arm_func_start sub_020300A0 -sub_020300A0: ; 0x020300A0 - add r0, r0, #0x600 - ldrsh r0, [r0, #0x44] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #4 - movge r0, #0 - bx lr - arm_func_end sub_020300A0 - - arm_func_start sub_020300C0 -sub_020300C0: ; 0x020300C0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - add ip, sp, #0 - str r1, [sp] - mov r1, ip - add r0, r5, #0xc - mov r4, r3 - str r2, [sp, #4] - bl sub_02020B60 - ldr r1, _02030108 ; =0x0000C402 - mov r2, r4 - add r0, r5, #0xc - bl sub_02020BC4 - add r0, r5, #0xc - bl AnalyzeText - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02030108: .word 0x0000C402 - arm_func_end sub_020300C0 - - arm_func_start AddMessageToAlertBox -AddMessageToAlertBox: ; 0x0203010C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GetWindowContents - mov r4, r0 - ldr r0, [r4, #4] - cmp r0, #2 - cmpne r0, #3 - beq _02030144 - add r0, r4, #8 - bl sub_0202613C - mov r0, #1 - str r0, [r4, #4] -_02030144: - mov r0, r4 - bl sub_020300A0 - add r1, r4, #0x600 - ldrsh r2, [r1, #0x46] - cmp r2, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - str r5, [sp] - ldrsh r1, [r1, #0x44] - add r0, r4, #0x29 - add r2, r0, #0x100 - mov r0, #0x148 - smlabb r0, r1, r0, r2 - mov r2, r6 - mov r3, r7 - mov r1, #0x140 - bl PreprocessString - add r1, r4, #0x600 - add r0, r4, #0x29 - ldrsh r1, [r1, #0x44] - add r2, r0, #0x100 - mov r0, #0x148 - smlabb r2, r1, r0, r2 - mov r1, r7 - add r0, r4, #8 - bl sub_02026194 - add r1, r4, #0x600 - ldrsh r0, [r1, #0x44] - mov r2, #0x148 - mov r6, #0 - smlabb r0, r0, r2, r4 - add r0, r0, #0x200 - strh r7, [r0, #0x6a] - ldrsh r5, [r1, #0x44] - ldrb r3, [sp, #0x18] - mov r0, r4 - smlabb r5, r5, r2, r4 - str r6, [r5, #0x124] - ldrsh r1, [r1, #0x44] - smlabb r1, r1, r2, r4 - strb r3, [r1, #0x128] - bl sub_0203007C - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end AddMessageToAlertBox - - arm_func_start IsAlertBoxActive -IsAlertBoxActive: ; 0x020301F4 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #4] - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsAlertBoxActive - - arm_func_start sub_02030214 -sub_02030214: ; 0x02030214 - stmdb sp!, {r4, lr} - bl GetWindowContents - mov r4, r0 - ldr r0, [r4, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02030260 -_02030230: ; jump table - b _02030260 ; case 0 - b _02030248 ; case 1 - b _02030254 ; case 2 - b _02030254 ; case 3 - ldmia sp!, {r4, pc} ; case 4 - ldmia sp!, {r4, pc} ; case 5 -_02030248: - mov r0, #5 - str r0, [r4, #4] - ldmia sp!, {r4, pc} -_02030254: - mov r0, #4 - str r0, [r4, #4] - ldmia sp!, {r4, pc} -_02030260: - add r0, r4, #8 - bl sub_0202613C - mov r0, #0 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end sub_02030214 - - arm_func_start UpdateAlertBox -UpdateAlertBox: ; 0x02030274 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02030290: ; jump table - b _020302A8 ; case 0 - b _020302C8 ; case 1 - b _020302E0 ; case 2 - b _02030438 ; case 3 - b _0203056C ; case 4 - b _02030588 ; case 5 -_020302A8: - add r0, r4, #8 - bl sub_020261D4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #1 - str r0, [r4, #4] - sub r0, r0, #2 - str r0, [r5, #0xb8] -_020302C8: - ldrsb r0, [r5, #0x10] - bl sub_0202810C - cmp r0, #0 - movne r0, #2 - strne r0, [r4, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020302E0: - ldrsb r0, [r5, #0x10] - bl GetWindowContents - add r0, r0, #0x600 - ldrsh r1, [r0, #0x46] - ldrsh r0, [r0, #0x44] - cmp r1, r0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsb r4, [r5, #0x10] - mov r0, r4 - bl GetWindowContents - mov r6, r0 - add r3, r6, #0x600 - ldr r1, [r6, #0x20] - ldrsh r2, [r3, #0x4a] - mov r1, r1, lsl #0x10 - ldr r5, [r6, #0x10] - mov r8, r1, asr #0x10 - mla r1, r2, r8, r5 - ldr r2, [r6, #0xc] - mov r7, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - ldrsh r3, [r3, #0x46] - mov r1, #0x148 - add r5, r6, #0x124 - smulbb r3, r3, r1 - ldr r1, [r5, r3] - add r5, r5, r3 - cmp r1, #1 - mov r1, r2, asr #0x10 - mov r7, r7, asr #0x10 - bne _02030388 - mov r5, #0x17 - mov r0, r4 - add r2, r7, r8 - mov r1, #0 - mov r3, #0xe0 - str r5, [sp] - bl sub_02025D50 - b _020303C4 -_02030388: - mov r2, r7 - add r3, r5, #5 - bl sub_020300C0 - ldrb r0, [r5, #4] - cmp r0, #0 - beq _020303C4 - cmp r7, r8 - blt _020303C4 - mov r5, #0x17 - mov r0, r4 - sub r2, r7, #2 - mov r1, #0 - mov r3, #0xe0 - str r5, [sp] - bl sub_02025D50 -_020303C4: - mov r0, r4 - bl UpdateWindow - add r0, r6, #0x600 - ldrsh r1, [r0, #0x46] - strh r1, [r0, #0x48] - ldrsh r1, [r0, #0x46] - add r1, r1, #1 - strh r1, [r0, #0x46] - ldrsh r1, [r0, #0x46] - cmp r1, #4 - movge r1, #0 - strgeh r1, [r0, #0x46] - add r0, r6, #0x600 - ldrsh r1, [r0, #0x4a] - cmp r1, #3 - movge r1, #3 - strge r1, [r6, #4] - movge r1, #0 - strgeh r1, [r0, #0x4c] - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, [r6, #0xa0] - ldr r0, [r6, #0x10] - add r2, r1, r8 - mov r1, r8 - sub r0, r2, r0 - bl _s32_div_f - add r1, r6, #0x600 - strh r0, [r1, #0x4a] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02030438: - ldrsb r5, [r5, #0x10] - mov r0, r5 - bl GetWindowContents - mov r7, r0 - add r3, r7, #0x600 - ldr r1, [r7, #0x20] - ldrsh r2, [r3, #0x4a] - mov r1, r1, lsl #0x10 - ldr r6, [r7, #0x10] - mov r8, r1, asr #0x10 - ldr r1, [r7, #0xc] - mla r6, r2, r8, r6 - ldrsh sb, [r3, #0x4c] - mov r2, r1, lsl #0x10 - ldrsh ip, [r3, #0x48] - mov r1, #0x148 - add r3, sb, r6 - mov r3, r3, lsl #0x10 - smulbb r6, ip, r1 - add sb, r7, #0x124 - ldr r1, [sb, r6] - add r6, sb, r6 - cmp r1, #1 - mov r1, r2, asr #0x10 - mov sb, r3, asr #0x10 - bne _020304C0 - mov r6, #0x17 - mov r0, r5 - add r2, sb, r8 - mov r1, #0 - mov r3, #0xe0 - str r6, [sp] - bl sub_02025D50 - b _020304FC -_020304C0: - mov r2, sb - add r3, r6, #5 - bl sub_020300C0 - ldrb r0, [r6, #4] - cmp r0, #0 - beq _020304FC - cmp sb, r8 - blt _020304FC - mov r6, #0x17 - mov r0, r5 - sub r2, sb, #2 - mov r1, #0 - mov r3, #0xe0 - str r6, [sp] - bl sub_02025D50 -_020304FC: - add r0, r7, #0x600 - ldrsh r0, [r0, #0x4c] - add r0, r0, r8 - cmp r0, #1 - mov r0, r5 - bne _02030528 - bl sub_01FF9128 - add r0, r7, #0x600 - ldrsh r1, [r0, #0x4c] - sub r1, r1, #1 - b _02030538 -_02030528: - bl sub_01FF929C - add r0, r7, #0x600 - ldrsh r1, [r0, #0x4c] - sub r1, r1, #2 -_02030538: - strh r1, [r0, #0x4c] - add r0, r7, #0x600 - ldrsh r2, [r0, #0x4c] - rsb r1, r8, #0 - cmp r2, r1 - movle r1, #3 - strleh r1, [r0, #0x4a] - movle r0, #1 - movgt r0, #0 - cmp r0, #0 - movne r0, #2 - strne r0, [r4, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0203056C: - ldrsb r0, [r5, #0x10] - bl sub_0202836C - ldrsb r0, [r5, #0x10] - bl sub_02027B1C - mov r0, #5 - str r0, [r4, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02030588: - ldrsb r0, [r5, #0x10] - bl sub_0202812C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r1, #0 - add r0, r4, #8 - str r1, [r4, #4] - bl sub_0202613C - mvn r0, #5 - str r0, [r5, #0xb8] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end UpdateAlertBox - - arm_func_start CreateAdvancedTextBox -CreateAdvancedTextBox: ; 0x020305B4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r3 - ldr ip, [sp, #0x14] - ldr r3, [sp, #0x10] - str ip, [sp] - bl CreateAdvancedTextBoxInternal - add r1, r0, #0x100 - str r4, [r0, #0x1a4] - ldrsb r0, [r1, #0xa0] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end CreateAdvancedTextBox - - arm_func_start CreateAdvancedTextBoxWithArg -CreateAdvancedTextBoxWithArg: ; 0x020305E4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r3 - ldr ip, [sp, #0x18] - ldr r3, [sp, #0x14] - str ip, [sp] - bl CreateAdvancedTextBoxInternal - ldr r2, [sp, #0x10] - str r4, [r0, #0x1a8] - add r1, r0, #0x100 - str r2, [r0, #0x1ac] - ldrsb r0, [r1, #0xa0] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end CreateAdvancedTextBoxWithArg - - arm_func_start CreateAdvancedTextBoxInternal -CreateAdvancedTextBoxInternal: ; 0x0203061C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - mov r8, r0 - mov r7, r1 - mov r0, #0x1c8 - mov r1, #8 - mov r6, r2 - mov r5, r3 - bl MemAlloc - mov r4, r0 - mov r0, #0 - str r0, [r4, #0x1a4] - str r0, [r4, #0x1a8] - str r0, [r4, #0x1ac] - str r0, [r4, #0x1b8] - mov r0, #1 - cmp r8, #0 - strb r0, [r4, #0x1c4] - addne ip, sp, #0x18 - ldmneia r8, {r0, r1, r2, r3} - stmneia ip, {r0, r1, r2, r3} - ldrne r0, _02030774 ; =UpdateAdvancedTextBox - strne r0, [sp, #0x18] - bne _02030690 - ldr r0, _02030778 ; =ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS - add r8, sp, #0x18 - ldmia r0, {r0, r1, r2, r3} - stmia r8, {r0, r1, r2, r3} - orr r7, r7, #0x300000 -_02030690: - tst r7, #0x200000 - ldrneb r1, [sp, #0x1c] - ldrneb r0, [sp, #0x1e] - str r4, [sp, #0x24] - subne r0, r1, r0 - strneb r0, [sp, #0x1c] - tst r7, #0x100000 - ldrneb r1, [sp, #0x1d] - ldrneb r0, [sp, #0x1f] - subne r0, r1, r0 - strneb r0, [sp, #0x1d] - ldr r0, _02030774 ; =UpdateAdvancedTextBox - cmp r6, #0 - str r0, [r4] - str r7, [r4, #0x104] - beq _020306F0 - add ip, r4, #0x108 - mov r8, #9 -_020306D8: - ldmia r6!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r8, r8, #1 - bne _020306D8 - ldmia r6, {r0, r1} - stmia ip, {r0, r1} -_020306F0: - mov r2, #0 - str r2, [r4, #0x1bc] - strb r2, [r4, #0x1c0] - strb r2, [r4, #0x1c1] - strb r2, [r4, #0x1c2] - str r2, [r4, #0x1b0] - str r2, [r4, #0x1b4] - add r0, sp, #0x18 - mov r1, #3 - strb r2, [r4, #0x1c3] - bl NewWindowScreenCheck - add r1, sp, #8 - strb r0, [r4, #0x1a0] - bl GetWindowRectangle - mov r1, #0x100 - strh r1, [r4, #0xfc] - tst r7, #0x8000 - moveq r5, #0 - streq r5, [sp, #0x40] - strh r1, [r4, #0xfe] - add r0, r4, #0x100 - strh r1, [r0] - strh r1, [r0, #2] - ldr r6, [sp, #0x40] - add r3, sp, #8 - mov r1, r7 - add r0, r4, #4 - add r2, r4, #0x108 - stmia sp, {r5, r6} - bl InitWindowInput - mov r0, r4 - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02030774: .word UpdateAdvancedTextBox -_02030778: .word ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS - arm_func_end CreateAdvancedTextBoxInternal - - arm_func_start SetAdvancedTextBoxPartialMenu -SetAdvancedTextBoxPartialMenu: ; 0x0203077C - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetWindowContents - strb r4, [r0, #0x1c3] - ldr r1, [r0, #0x104] - tst r4, #0xff - orrne r1, r1, #0x400000 - biceq r1, r1, #0x400000 - str r1, [r0, #0x104] - ldmia sp!, {r4, pc} - arm_func_end SetAdvancedTextBoxPartialMenu diff --git a/asm/main_0202FD50.s b/asm/main_0202FD50.s new file mode 100644 index 00000000..9b4b2ebc --- /dev/null +++ b/asm/main_0202FD50.s @@ -0,0 +1,780 @@ + .include "asm/macros.inc" + .include "main_0202FD50.inc" + + .text + + arm_func_start CloseAreaNameBox +CloseAreaNameBox: ; 0x0202FD50 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetWindowContents + bl MemFree + mov r0, r4 + bl DeleteWindow + ldmia sp!, {r4, pc} + arm_func_end CloseAreaNameBox + + arm_func_start IsAreaNameBoxActive +IsAreaNameBoxActive: ; 0x0202FD6C + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r0, [r0, #0xa0] + cmp r0, #2 + cmpne r0, #4 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsAreaNameBoxActive + + arm_func_start UpdateAreaNameBox +UpdateAreaNameBox: ; 0x0202FD8C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0xa0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, r5, r6, pc} +_0202FDA8: ; jump table + b _0202FDB8 ; case 0 + b _0202FDD0 ; case 1 + ldmia sp!, {r4, r5, r6, pc} ; case 2 + b _0202FE0C ; case 3 +_0202FDB8: + ldrsb r0, [r5, #0x10] + bl sub_0202810C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #1 + str r0, [r4, #0xa0] +_0202FDD0: + ldrsb r0, [r5, #0x10] + ldr r6, [r5, #0xc] + bl sub_02027B1C + ldrsb r0, [r5, #0x10] + ldr r1, [r6, #0x1b0] + ldr r2, [r6, #0x1ac] + add r3, r6, #0xac + bl DrawTextInWindow + ldrsb r0, [r5, #0x10] + bl UpdateWindow + mov r0, #2 + str r0, [r4, #0xa0] + sub r0, r0, #3 + str r0, [r5, #0xb8] + ldmia sp!, {r4, r5, r6, pc} +_0202FE0C: + ldrsb r0, [r5, #0x10] + bl sub_0202812C + cmp r0, #0 + mvnne r0, #4 + strne r0, [r5, #0xb8] + movne r0, #4 + strne r0, [r4, #0xa0] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end UpdateAreaNameBox + + arm_func_start CreateControlsChart +CreateControlsChart: ; 0x0202FE2C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r0 + mov r5, r1 + mov r0, #0xa8 + mov r1, #8 + mov r4, r2 + mov r6, r3 + bl MemAlloc + mov ip, r0 + cmp r7, #0 + ldreq r0, _0202FECC ; =CONTROLS_CHART_DEFAULT_WINDOW_PARAMS + strh r6, [ip, #0xa4] + add lr, sp, #0 + ldmeqia r0, {r0, r1, r2, r3} + stmeqia lr, {r0, r1, r2, r3} + ldmneia r7, {r0, r1, r2, r3} + stmneia lr, {r0, r1, r2, r3} + ldrne r0, _0202FED0 ; =UpdateControlsChart + str ip, [sp, #0xc] + strne r0, [sp] + ldr r0, _0202FED0 ; =UpdateControlsChart + cmp r4, #0 + stmia ip, {r0, r5} + beq _0202FEB0 + add lr, ip, #8 + mov r5, #9 +_0202FE98: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0202FE98 + ldmia r4, {r0, r1} + stmia lr, {r0, r1} +_0202FEB0: + mov r2, #0 + add r0, sp, #0 + mov r1, #3 + str r2, [ip, #0xa0] + bl NewWindowScreenCheck + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0202FECC: .word CONTROLS_CHART_DEFAULT_WINDOW_PARAMS +_0202FED0: .word UpdateControlsChart + arm_func_end CreateControlsChart + + arm_func_start CloseControlsChart +CloseControlsChart: ; 0x0202FED4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetWindowContents + bl MemFree + mov r0, r4 + bl DeleteWindow + ldmia sp!, {r4, pc} + arm_func_end CloseControlsChart + + arm_func_start IsControlsChartActive +IsControlsChartActive: ; 0x0202FEF0 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r0, [r0, #0xa0] + cmp r0, #2 + cmpne r0, #4 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsControlsChartActive + + arm_func_start UpdateControlsChart +UpdateControlsChart: ; 0x0202FF10 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0xa0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, r5, r6, pc} +_0202FF2C: ; jump table + b _0202FF3C ; case 0 + b _0202FF54 ; case 1 + ldmia sp!, {r4, r5, r6, pc} ; case 2 + b _0202FF90 ; case 3 +_0202FF3C: + ldrsb r0, [r5, #0x10] + bl sub_0202810C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #1 + str r0, [r4, #0xa0] +_0202FF54: + ldrsb r0, [r5, #0x10] + ldr r6, [r5, #0xc] + bl sub_02027B1C + ldrsb r0, [r5, #0x10] + ldrh r3, [r6, #0xa4] + mov r1, #4 + mov r2, #2 + bl AppendStandardStringToMission + ldrsb r0, [r5, #0x10] + bl UpdateWindow + mov r0, #2 + str r0, [r4, #0xa0] + sub r0, r0, #3 + str r0, [r5, #0xb8] + ldmia sp!, {r4, r5, r6, pc} +_0202FF90: + ldrsb r0, [r5, #0x10] + bl sub_0202812C + cmp r0, #0 + mvnne r0, #4 + strne r0, [r5, #0xb8] + movne r0, #4 + strne r0, [r4, #0xa0] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end UpdateControlsChart + + arm_func_start CreateAlertBox +CreateAlertBox: ; 0x0202FFB0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + mov r0, #0x650 + mov r1, #8 + bl MemAlloc + mov r1, #0x650 + mov r4, r0 + bl MemZero + cmp r5, #0 + ldreq r0, _0203003C ; =ALERT_BOX_DEFAULT_WINDOW_PARAMS + add ip, sp, #0 + ldmeqia r0, {r0, r1, r2, r3} + stmeqia ip, {r0, r1, r2, r3} + ldmneia r5, {r0, r1, r2, r3} + stmneia ip, {r0, r1, r2, r3} + ldrne r0, _02030040 ; =UpdateAlertBox + str r4, [sp, #0xc] + strne r0, [sp] + add r0, sp, #0 + mov r1, #3 + bl NewWindowScreenCheck + strb r0, [r4] + ldrsb r1, [r4] + add r0, r4, #8 + bl sub_02025E84 + mov r1, #0 + str r1, [r4, #4] + add r0, r4, #0x600 + strh r1, [r0, #0x44] + strh r1, [r0, #0x46] + strh r1, [r0, #0x48] + ldrsb r0, [r4] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203003C: .word ALERT_BOX_DEFAULT_WINDOW_PARAMS +_02030040: .word UpdateAlertBox + arm_func_end CreateAlertBox + + arm_func_start CloseAlertBox +CloseAlertBox: ; 0x02030044 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowContents + mov r4, r0 + ldrsb r0, [r4] + bl sub_0202836C + add r0, r4, #8 + bl sub_0202613C + mov r0, r5 + bl GetWindowContents + bl MemFree + mov r0, r5 + bl DeleteWindow + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CloseAlertBox + + arm_func_start sub_0203007C +sub_0203007C: ; 0x0203007C + add r0, r0, #0x600 + ldrsh r1, [r0, #0x44] + add r1, r1, #1 + strh r1, [r0, #0x44] + ldrsh r1, [r0, #0x44] + cmp r1, #4 + movge r1, #0 + strgeh r1, [r0, #0x44] + bx lr + arm_func_end sub_0203007C + + arm_func_start sub_020300A0 +sub_020300A0: ; 0x020300A0 + add r0, r0, #0x600 + ldrsh r0, [r0, #0x44] + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #4 + movge r0, #0 + bx lr + arm_func_end sub_020300A0 + + arm_func_start sub_020300C0 +sub_020300C0: ; 0x020300C0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + add ip, sp, #0 + str r1, [sp] + mov r1, ip + add r0, r5, #0xc + mov r4, r3 + str r2, [sp, #4] + bl sub_02020B60 + ldr r1, _02030108 ; =0x0000C402 + mov r2, r4 + add r0, r5, #0xc + bl sub_02020BC4 + add r0, r5, #0xc + bl AnalyzeText + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02030108: .word 0x0000C402 + arm_func_end sub_020300C0 + + arm_func_start AddMessageToAlertBox +AddMessageToAlertBox: ; 0x0203010C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GetWindowContents + mov r4, r0 + ldr r0, [r4, #4] + cmp r0, #2 + cmpne r0, #3 + beq _02030144 + add r0, r4, #8 + bl sub_0202613C + mov r0, #1 + str r0, [r4, #4] +_02030144: + mov r0, r4 + bl sub_020300A0 + add r1, r4, #0x600 + ldrsh r2, [r1, #0x46] + cmp r2, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + str r5, [sp] + ldrsh r1, [r1, #0x44] + add r0, r4, #0x29 + add r2, r0, #0x100 + mov r0, #0x148 + smlabb r0, r1, r0, r2 + mov r2, r6 + mov r3, r7 + mov r1, #0x140 + bl PreprocessString + add r1, r4, #0x600 + add r0, r4, #0x29 + ldrsh r1, [r1, #0x44] + add r2, r0, #0x100 + mov r0, #0x148 + smlabb r2, r1, r0, r2 + mov r1, r7 + add r0, r4, #8 + bl sub_02026194 + add r1, r4, #0x600 + ldrsh r0, [r1, #0x44] + mov r2, #0x148 + mov r6, #0 + smlabb r0, r0, r2, r4 + add r0, r0, #0x200 + strh r7, [r0, #0x6a] + ldrsh r5, [r1, #0x44] + ldrb r3, [sp, #0x18] + mov r0, r4 + smlabb r5, r5, r2, r4 + str r6, [r5, #0x124] + ldrsh r1, [r1, #0x44] + smlabb r1, r1, r2, r4 + strb r3, [r1, #0x128] + bl sub_0203007C + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end AddMessageToAlertBox + + arm_func_start IsAlertBoxActive +IsAlertBoxActive: ; 0x020301F4 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r0, [r0, #4] + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsAlertBoxActive + + arm_func_start sub_02030214 +sub_02030214: ; 0x02030214 + stmdb sp!, {r4, lr} + bl GetWindowContents + mov r4, r0 + ldr r0, [r4, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02030260 +_02030230: ; jump table + b _02030260 ; case 0 + b _02030248 ; case 1 + b _02030254 ; case 2 + b _02030254 ; case 3 + ldmia sp!, {r4, pc} ; case 4 + ldmia sp!, {r4, pc} ; case 5 +_02030248: + mov r0, #5 + str r0, [r4, #4] + ldmia sp!, {r4, pc} +_02030254: + mov r0, #4 + str r0, [r4, #4] + ldmia sp!, {r4, pc} +_02030260: + add r0, r4, #8 + bl sub_0202613C + mov r0, #0 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + arm_func_end sub_02030214 + + arm_func_start UpdateAlertBox +UpdateAlertBox: ; 0x02030274 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02030290: ; jump table + b _020302A8 ; case 0 + b _020302C8 ; case 1 + b _020302E0 ; case 2 + b _02030438 ; case 3 + b _0203056C ; case 4 + b _02030588 ; case 5 +_020302A8: + add r0, r4, #8 + bl sub_020261D4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #1 + str r0, [r4, #4] + sub r0, r0, #2 + str r0, [r5, #0xb8] +_020302C8: + ldrsb r0, [r5, #0x10] + bl sub_0202810C + cmp r0, #0 + movne r0, #2 + strne r0, [r4, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020302E0: + ldrsb r0, [r5, #0x10] + bl GetWindowContents + add r0, r0, #0x600 + ldrsh r1, [r0, #0x46] + ldrsh r0, [r0, #0x44] + cmp r1, r0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsb r4, [r5, #0x10] + mov r0, r4 + bl GetWindowContents + mov r6, r0 + add r3, r6, #0x600 + ldr r1, [r6, #0x20] + ldrsh r2, [r3, #0x4a] + mov r1, r1, lsl #0x10 + ldr r5, [r6, #0x10] + mov r8, r1, asr #0x10 + mla r1, r2, r8, r5 + ldr r2, [r6, #0xc] + mov r7, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + ldrsh r3, [r3, #0x46] + mov r1, #0x148 + add r5, r6, #0x124 + smulbb r3, r3, r1 + ldr r1, [r5, r3] + add r5, r5, r3 + cmp r1, #1 + mov r1, r2, asr #0x10 + mov r7, r7, asr #0x10 + bne _02030388 + mov r5, #0x17 + mov r0, r4 + add r2, r7, r8 + mov r1, #0 + mov r3, #0xe0 + str r5, [sp] + bl sub_02025D50 + b _020303C4 +_02030388: + mov r2, r7 + add r3, r5, #5 + bl sub_020300C0 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _020303C4 + cmp r7, r8 + blt _020303C4 + mov r5, #0x17 + mov r0, r4 + sub r2, r7, #2 + mov r1, #0 + mov r3, #0xe0 + str r5, [sp] + bl sub_02025D50 +_020303C4: + mov r0, r4 + bl UpdateWindow + add r0, r6, #0x600 + ldrsh r1, [r0, #0x46] + strh r1, [r0, #0x48] + ldrsh r1, [r0, #0x46] + add r1, r1, #1 + strh r1, [r0, #0x46] + ldrsh r1, [r0, #0x46] + cmp r1, #4 + movge r1, #0 + strgeh r1, [r0, #0x46] + add r0, r6, #0x600 + ldrsh r1, [r0, #0x4a] + cmp r1, #3 + movge r1, #3 + strge r1, [r6, #4] + movge r1, #0 + strgeh r1, [r0, #0x4c] + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r1, [r6, #0xa0] + ldr r0, [r6, #0x10] + add r2, r1, r8 + mov r1, r8 + sub r0, r2, r0 + bl _s32_div_f + add r1, r6, #0x600 + strh r0, [r1, #0x4a] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02030438: + ldrsb r5, [r5, #0x10] + mov r0, r5 + bl GetWindowContents + mov r7, r0 + add r3, r7, #0x600 + ldr r1, [r7, #0x20] + ldrsh r2, [r3, #0x4a] + mov r1, r1, lsl #0x10 + ldr r6, [r7, #0x10] + mov r8, r1, asr #0x10 + ldr r1, [r7, #0xc] + mla r6, r2, r8, r6 + ldrsh sb, [r3, #0x4c] + mov r2, r1, lsl #0x10 + ldrsh ip, [r3, #0x48] + mov r1, #0x148 + add r3, sb, r6 + mov r3, r3, lsl #0x10 + smulbb r6, ip, r1 + add sb, r7, #0x124 + ldr r1, [sb, r6] + add r6, sb, r6 + cmp r1, #1 + mov r1, r2, asr #0x10 + mov sb, r3, asr #0x10 + bne _020304C0 + mov r6, #0x17 + mov r0, r5 + add r2, sb, r8 + mov r1, #0 + mov r3, #0xe0 + str r6, [sp] + bl sub_02025D50 + b _020304FC +_020304C0: + mov r2, sb + add r3, r6, #5 + bl sub_020300C0 + ldrb r0, [r6, #4] + cmp r0, #0 + beq _020304FC + cmp sb, r8 + blt _020304FC + mov r6, #0x17 + mov r0, r5 + sub r2, sb, #2 + mov r1, #0 + mov r3, #0xe0 + str r6, [sp] + bl sub_02025D50 +_020304FC: + add r0, r7, #0x600 + ldrsh r0, [r0, #0x4c] + add r0, r0, r8 + cmp r0, #1 + mov r0, r5 + bne _02030528 + bl sub_01FF9128 + add r0, r7, #0x600 + ldrsh r1, [r0, #0x4c] + sub r1, r1, #1 + b _02030538 +_02030528: + bl sub_01FF929C + add r0, r7, #0x600 + ldrsh r1, [r0, #0x4c] + sub r1, r1, #2 +_02030538: + strh r1, [r0, #0x4c] + add r0, r7, #0x600 + ldrsh r2, [r0, #0x4c] + rsb r1, r8, #0 + cmp r2, r1 + movle r1, #3 + strleh r1, [r0, #0x4a] + movle r0, #1 + movgt r0, #0 + cmp r0, #0 + movne r0, #2 + strne r0, [r4, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0203056C: + ldrsb r0, [r5, #0x10] + bl sub_0202836C + ldrsb r0, [r5, #0x10] + bl sub_02027B1C + mov r0, #5 + str r0, [r4, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02030588: + ldrsb r0, [r5, #0x10] + bl sub_0202812C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r1, #0 + add r0, r4, #8 + str r1, [r4, #4] + bl sub_0202613C + mvn r0, #5 + str r0, [r5, #0xb8] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end UpdateAlertBox + + arm_func_start CreateAdvancedTextBox +CreateAdvancedTextBox: ; 0x020305B4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r3 + ldr ip, [sp, #0x14] + ldr r3, [sp, #0x10] + str ip, [sp] + bl CreateAdvancedTextBoxInternal + add r1, r0, #0x100 + str r4, [r0, #0x1a4] + ldrsb r0, [r1, #0xa0] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end CreateAdvancedTextBox + + arm_func_start CreateAdvancedTextBoxWithArg +CreateAdvancedTextBoxWithArg: ; 0x020305E4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r3 + ldr ip, [sp, #0x18] + ldr r3, [sp, #0x14] + str ip, [sp] + bl CreateAdvancedTextBoxInternal + ldr r2, [sp, #0x10] + str r4, [r0, #0x1a8] + add r1, r0, #0x100 + str r2, [r0, #0x1ac] + ldrsb r0, [r1, #0xa0] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end CreateAdvancedTextBoxWithArg + + arm_func_start CreateAdvancedTextBoxInternal +CreateAdvancedTextBoxInternal: ; 0x0203061C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x28 + mov r8, r0 + mov r7, r1 + mov r0, #0x1c8 + mov r1, #8 + mov r6, r2 + mov r5, r3 + bl MemAlloc + mov r4, r0 + mov r0, #0 + str r0, [r4, #0x1a4] + str r0, [r4, #0x1a8] + str r0, [r4, #0x1ac] + str r0, [r4, #0x1b8] + mov r0, #1 + cmp r8, #0 + strb r0, [r4, #0x1c4] + addne ip, sp, #0x18 + ldmneia r8, {r0, r1, r2, r3} + stmneia ip, {r0, r1, r2, r3} + ldrne r0, _02030774 ; =UpdateAdvancedTextBox + strne r0, [sp, #0x18] + bne _02030690 + ldr r0, _02030778 ; =ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS + add r8, sp, #0x18 + ldmia r0, {r0, r1, r2, r3} + stmia r8, {r0, r1, r2, r3} + orr r7, r7, #0x300000 +_02030690: + tst r7, #0x200000 + ldrneb r1, [sp, #0x1c] + ldrneb r0, [sp, #0x1e] + str r4, [sp, #0x24] + subne r0, r1, r0 + strneb r0, [sp, #0x1c] + tst r7, #0x100000 + ldrneb r1, [sp, #0x1d] + ldrneb r0, [sp, #0x1f] + subne r0, r1, r0 + strneb r0, [sp, #0x1d] + ldr r0, _02030774 ; =UpdateAdvancedTextBox + cmp r6, #0 + str r0, [r4] + str r7, [r4, #0x104] + beq _020306F0 + add ip, r4, #0x108 + mov r8, #9 +_020306D8: + ldmia r6!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r8, r8, #1 + bne _020306D8 + ldmia r6, {r0, r1} + stmia ip, {r0, r1} +_020306F0: + mov r2, #0 + str r2, [r4, #0x1bc] + strb r2, [r4, #0x1c0] + strb r2, [r4, #0x1c1] + strb r2, [r4, #0x1c2] + str r2, [r4, #0x1b0] + str r2, [r4, #0x1b4] + add r0, sp, #0x18 + mov r1, #3 + strb r2, [r4, #0x1c3] + bl NewWindowScreenCheck + add r1, sp, #8 + strb r0, [r4, #0x1a0] + bl GetWindowRectangle + mov r1, #0x100 + strh r1, [r4, #0xfc] + tst r7, #0x8000 + moveq r5, #0 + streq r5, [sp, #0x40] + strh r1, [r4, #0xfe] + add r0, r4, #0x100 + strh r1, [r0] + strh r1, [r0, #2] + ldr r6, [sp, #0x40] + add r3, sp, #8 + mov r1, r7 + add r0, r4, #4 + add r2, r4, #0x108 + stmia sp, {r5, r6} + bl InitWindowInput + mov r0, r4 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02030774: .word UpdateAdvancedTextBox +_02030778: .word ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS + arm_func_end CreateAdvancedTextBoxInternal + + arm_func_start SetAdvancedTextBoxPartialMenu +SetAdvancedTextBoxPartialMenu: ; 0x0203077C + stmdb sp!, {r4, lr} + mov r4, r1 + bl GetWindowContents + strb r4, [r0, #0x1c3] + ldr r1, [r0, #0x104] + tst r4, #0xff + orrne r1, r1, #0x400000 + biceq r1, r1, #0x400000 + str r1, [r0, #0x104] + ldmia sp!, {r4, pc} + arm_func_end SetAdvancedTextBoxPartialMenu diff --git a/asm/main_02034974.s b/asm/main_02034974.s index 668c8ce4..28bd29cf 100644 --- a/asm/main_02034974.s +++ b/asm/main_02034974.s @@ -3522,6651 +3522,3 @@ _02037550: .align 2, 0 _02037558: .word _020AFDF0 arm_func_end sub_02037468 - - arm_func_start GetKeyboardStringResult -GetKeyboardStringResult: ; 0x0203755C - ldr r0, _0203756C ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xf8] - bx lr - .align 2, 0 -_0203756C: .word _020AFDF0 - arm_func_end GetKeyboardStringResult - - arm_func_start sub_02037570 -sub_02037570: ; 0x02037570 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0x1e8 - mov r1, #8 - mov r4, r3 - bl MemAlloc - ldr r2, _020376E0 ; =_020AFDF0 - mov r1, #0x1e8 - str r0, [r2] - bl MemZero - ldr r0, _020376E0 ; =_020AFDF0 - mov r2, #1 - ldr r1, [r0] - cmp r5, #0 - strb r2, [r1, #0x1a4] - bne _020375DC - ldr r1, [r0] - mov r2, #5 - str r2, [r1, #0xc] - ldr r1, [r0] - mov r2, #0x36 - strb r2, [r1, #0x1b] - ldr r0, [r0] - ldrh r1, [sp, #0x10] - add r0, r0, #0x100 - strh r1, [r0, #0xa6] - b _0203760C -_020375DC: - cmp r5, #1 - bne _0203760C - ldr r1, [r0] - mov r2, #6 - str r2, [r1, #0xc] - ldr r1, [r0] - mov r2, #0x22 - strb r2, [r1, #0x1b] - ldr r0, [r0] - ldrh r1, [sp, #0x10] - add r0, r0, #0x100 - strh r1, [r0, #0xa6] -_0203760C: - ldr r0, _020376E0 ; =_020AFDF0 - mov r3, #0 - ldr r1, [r0] - str r3, [r1, #0x134] - ldr r2, [r0] - add r1, r2, #0xfc - str r1, [r2, #0xf8] - mov r2, r3 -_0203762C: - ldr r1, [r0] - ldr r1, [r1, #0xf8] - strb r2, [r1, r3] - add r3, r3, #1 - cmp r3, #0x36 - blt _0203762C - ldr r0, _020376E0 ; =_020AFDF0 - mov r1, r4 - ldr r0, [r0] - ldrb r2, [r0, #0x1b] - ldr r0, [r0, #0xf8] - bl MemcpySimple - ldr r0, _020376E0 ; =_020AFDF0 - mov r4, #0 - ldr r2, [r0] - ldrb r1, [r2, #0x1b] - b _02037684 -_02037670: - ldr r0, [r2, #0xf8] - ldrb r0, [r0, r4] - cmp r0, #0 - beq _0203768C - add r4, r4, #1 -_02037684: - cmp r4, r1 - blt _02037670 -_0203768C: - mov r2, #0 - ldr r0, _020376E0 ; =_020AFDF0 - b _020376A4 -_02037698: - ldr r1, [r3, #0xf8] - strb r2, [r1, r4] - add r4, r4, #1 -_020376A4: - ldr r3, [r0] - ldrb r1, [r3, #0x1b] - cmp r4, r1 - blt _02037698 - ldr r0, _020376E4 ; =_0209B30C - ldr r1, _020376E8 ; =sub_02037F58 - bl CreateTextBox - ldr r1, _020376E0 ; =_020AFDF0 - mov r2, #0 - ldr r3, [r1] - strb r0, [r3] - ldr r1, [r1] - mov r0, #1 - str r2, [r1, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020376E0: .word _020AFDF0 -_020376E4: .word _0209B30C -_020376E8: .word sub_02037F58 - arm_func_end sub_02037570 - - arm_func_start sub_020376EC -sub_020376EC: ; 0x020376EC - stmdb sp!, {r3, lr} - ldr r0, _02037774 ; =_020AFDF0 - ldr r0, [r0] - cmp r0, #0 - beq _0203776C - ldrsh r1, [r0, #8] - cmp r1, #0 - beq _02037720 - cmp r1, #1 - beq _0203772C - cmp r1, #0xc - beq _02037738 - b _02037750 -_02037720: - ldrsb r0, [r0] - bl sub_0202F954 - b _02037750 -_0203772C: - ldrsb r0, [r0] - bl CloseTextBox - b _02037750 -_02037738: - bl MemFree - ldr r0, _02037774 ; =_020AFDF0 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} -_02037750: - ldr r1, _02037774 ; =_020AFDF0 - mov r0, #0 - ldr r2, [r1] - ldrsh r1, [r2, #8] - add r1, r1, #1 - strh r1, [r2, #8] - ldmia sp!, {r3, pc} -_0203776C: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02037774: .word _020AFDF0 - arm_func_end sub_020376EC - - arm_func_start sub_02037778 -sub_02037778: ; 0x02037778 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - ldr r0, _02037C28 ; =_020AFDF0 - ldr r3, [r0] -#ifdef JAPAN - ldr r1, [r0, #8] -#else - ldr r1, [r0, #4] -#endif - ldr r2, [r3, #4] - cmp r2, r1 - beq _020377B0 - ldr r0, _02037C2C ; =_0209B48C - bl Debug_Print0 - ldr r0, _02037C28 ; =_020AFDF0 - ldr r3, [r0] - ldr r1, [r3, #4] -#ifdef JAPAN - str r1, [r0, #8] -#else - str r1, [r0, #4] -#endif -_020377B0: - ldr r0, [r3, #4] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _02037C1C -_020377C0: ; jump table - b _020377E8 ; case 0 - b _020377F4 ; case 1 - b _02037858 ; case 2 - b _0203799C ; case 3 - b _02037C1C ; case 4 - b _02037A5C ; case 5 - b _02037AA0 ; case 6 - b _02037C1C ; case 7 - b _02037AEC ; case 8 - b _02037B24 ; case 9 -_020377E8: - mov r0, #1 - str r0, [r3, #4] - b _02037C1C -_020377F4: - bl GetKeyboardStatus - cmp r0, #3 - bne _02037C1C - ldr r0, _02037C28 ; =_020AFDF0 - ldr r1, [r0] - ldr r0, [r1, #0xc] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0203784C -_02037818: ; jump table - b _02037840 ; case 0 - b _02037840 ; case 1 - b _02037840 ; case 2 - b _02037840 ; case 3 - b _02037840 ; case 4 - b _02037840 ; case 5 - b _02037840 ; case 6 - b _02037840 ; case 7 - b _0203784C ; case 8 - b _02037840 ; case 9 -_02037840: - mov r0, #2 - str r0, [r1, #4] - b _02037C1C -_0203784C: - mov r0, #2 - str r0, [r1, #4] - b _02037C1C -_02037858: - cmp r3, #0 - beq _02037924 - ldrsh r0, [r3, #8] - cmp r0, #3 - beq _02037880 - cmp r0, #4 - beq _020378B8 - cmp r0, #5 - beq _02037900 - b _02037908 -_02037880: - ldrsb r0, [r3] - bl sub_0202F954 - ldr r0, _02037C28 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl sub_0202F954 - ldr r0, _02037C28 ; =_020AFDF0 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _02037908 - bl sub_0202F954 - b _02037908 -_020378B8: - ldrsb r0, [r3] - bl CloseTextBox - ldr r0, _02037C28 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl CloseTextBox - ldr r0, _02037C28 ; =_020AFDF0 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _02037908 - bl CloseTextBox - ldr r0, _02037C28 ; =_020AFDF0 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #2] - b _02037908 -_02037900: - mov r2, #1 - b _02037928 -_02037908: - ldr r0, _02037C28 ; =_020AFDF0 - mov r2, #0 - ldr r1, [r0] - ldrsh r0, [r1, #8] - add r0, r0, #1 - strh r0, [r1, #8] - b _02037928 -_02037924: - mov r2, #1 -_02037928: - cmp r2, #0 - beq _02037C1C - ldr r0, _02037C28 ; =_020AFDF0 - ldr r2, [r0] - ldr r1, [r2, #4] - add r1, r1, #1 - str r1, [r2, #4] - ldr r1, [r0] - ldr r0, [r1, #0xc] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0203798C -_02037958: ; jump table - b _02037980 ; case 0 - b _02037980 ; case 1 - b _02037980 ; case 2 - b _02037980 ; case 3 - b _02037980 ; case 4 - b _02037980 ; case 5 - b _02037980 ; case 6 - b _02037980 ; case 7 - b _0203798C ; case 8 - b _02037980 ; case 9 -_02037980: - mov r0, #5 - str r0, [r1, #4] - b _02037C1C -_0203798C: - ldr r0, [r1, #4] - add r0, r0, #1 - str r0, [r1, #4] - b _02037C1C -_0203799C: - ldr r0, [r3, #0xc] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _02037A54 -_020379AC: ; jump table - b _020379D4 ; case 0 - b _02037A40 ; case 1 - b _02037A54 ; case 2 - b _02037A54 ; case 3 - b _02037A54 ; case 4 - b _02037A54 ; case 5 - b _02037A54 ; case 6 - b _02037A54 ; case 7 - b _02037A54 ; case 8 - b _02037A54 ; case 9 -_020379D4: - bl GetMainCharacter1MemberIdx - mov r5, r0 - bl GetActiveRosterIndex - mov r4, r0 - mov r0, r5 - bl GetTeamMember - mov r5, r0 - mov r0, r4 - bl GetActiveTeamMember - ldr r1, _02037C28 ; =_020AFDF0 - mov r4, r0 - ldr r1, [r1] - add r0, r5, #0x3a - add r1, r1, #0xfc - mov r2, #0xa - bl StrncpySimple - mov r0, #0x3f - add r1, r5, #0x3a - mov r2, #0xa - bl SaveScriptVariableValueBytes - cmp r4, #0 - beq _02037A54 - add r0, r4, #0x5e - add r1, r5, #0x3a - mov r2, #0xa - bl StrncpySimple - b _02037A54 -_02037A40: - bl ov11_0230D71C - ldr r0, _02037C28 ; =_020AFDF0 - ldr r0, [r0] - add r0, r0, #0xfc - bl SetMainTeamName -_02037A54: - mov r0, #4 - b _02037C20 -_02037A5C: - add r0, sp, #0 - add r1, r3, #0xfc - mov r2, #0x40 - bl StrncpySimpleNoPadSafe - add r0, sp, #0 - bl sub_0203909C - ldr r0, _02037C28 ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #1 - bne _02037A8C - bl sub_02039304 -_02037A8C: - ldr r0, _02037C28 ; =_020AFDF0 - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #4] - b _02037C1C -_02037AA0: - bl sub_0203931C - cmp r0, #0 - beq _02037AB8 - cmp r0, #1 - beq _02037ACC - b _02037C1C -_02037AB8: - ldr r0, _02037C28 ; =_020AFDF0 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #4] - b _02037C1C -_02037ACC: - ldr r0, _02037C28 ; =_020AFDF0 - mov r3, #9 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - strh r1, [r0, #8] - b _02037C1C -_02037AEC: - bl sub_02039218 - cmp r0, #0 - beq _02037C1C - ldr r0, _02037C28 ; =_020AFDF0 - ldr r0, [r0] - ldrb r0, [r0, #0x11] - cmp r0, #0 - bne _02037B10 - bl ReturnScriptMenuResultZero -_02037B10: - ldr r0, _02037C28 ; =_020AFDF0 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - b _02037C1C -_02037B24: - bl sub_02039218 - cmp r0, #0 - beq _02037C1C - ldr r2, _02037C28 ; =_020AFDF0 - ldr r3, [r2] - ldr r0, [r3, #0xc] - cmp r0, #5 - cmpne r0, #6 - bne _02037B64 - ldr r0, _02037C30 ; =_0209B2FC - ldr r1, _02037C34 ; =sub_02037F58 - bl CreateTextBox - ldr r1, _02037C28 ; =_020AFDF0 - ldr r1, [r1] - strb r0, [r1] - b _02037BF8 -_02037B64: - ldrb r1, [r3, #0x17] - mov ip, #6 - ldr r0, _02037C38 ; =_0209B2EC - strb r1, [r3, #0x16] - ldr r3, [r2] - ldr r1, _02037C34 ; =sub_02037F58 - strb ip, [r3, #0x18] - ldr r2, [r2] - mov r3, #0 - strb r3, [r2, #0x15] - bl CreateTextBox - ldr r1, _02037C28 ; =_020AFDF0 - ldr r2, [r1] - strb r0, [r2] - ldr r1, [r1] - ldr r0, [r1, #0xc] - cmp r0, #4 - cmpne r0, #9 - mvneq r0, #1 - streqb r0, [r1, #2] - beq _02037BD0 - ldr r0, _02037C3C ; =_0209B31C - ldr r1, _02037C40 ; =sub_02037C78 - bl CreateTextBox - ldr r1, _02037C28 ; =_020AFDF0 - ldr r1, [r1] - strb r0, [r1, #2] -_02037BD0: - bl sub_02038A54 - ldr r1, _02037C28 ; =_020AFDF0 - ldr r2, [r1] - strb r0, [r2, #0x1c] - ldr r2, [r1] - ldrb r1, [r2, #0x1c] - ldrb r0, [r2, #0x1b] - cmp r1, r0 - subeq r0, r1, #1 - streqb r0, [r2, #0x1c] -_02037BF8: - ldr r0, _02037C44 ; =_0209B2DC - ldr r1, _02037C48 ; =sub_02037CD8 - bl CreateTextBox - ldr r1, _02037C28 ; =_020AFDF0 - mov r2, #0 - ldr r3, [r1] - strb r0, [r3, #1] - ldr r0, [r1] - str r2, [r0, #4] -_02037C1C: - mov r0, #1 -_02037C20: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02037C28: .word _020AFDF0 -_02037C2C: .word _0209B48C -_02037C30: .word _0209B2FC -_02037C34: .word sub_02037F58 -_02037C38: .word _0209B2EC -_02037C3C: .word _0209B31C -_02037C40: .word sub_02037C78 -_02037C44: .word _0209B2DC -_02037C48: .word sub_02037CD8 - arm_func_end sub_02037778 - - arm_func_start sub_02037C4C -sub_02037C4C: ; 0x02037C4C - stmdb sp!, {r3, lr} - ldr r0, _02037C74 ; =_020AFDF0 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02037C74 ; =_020AFDF0 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02037C74: .word _020AFDF0 - arm_func_end sub_02037C4C - - arm_func_start sub_02037C78 -sub_02037C78: ; 0x02037C78 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02027B1C - mov r1, #0 - ldr r3, _02037CA4 ; =0x00000122 - mov r0, r4 - mov r2, r1 - bl AppendStandardStringToMission - mov r0, r4 - bl UpdateWindow - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_02037CA4: .word 0x000031D4 -#else -_02037CA4: .word 0x00000122 -#endif - arm_func_end sub_02037C78 - - arm_func_start sub_02037CA8 -sub_02037CA8: ; 0x02037CA8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02027B1C - mov r1, #0 - ldr r3, _02037CD4 ; =0x00000123 - mov r0, r4 - mov r2, r1 - bl AppendStandardStringToMission - mov r0, r4 - bl UpdateWindow - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_02037CD4: .word 0x000031D5 -#else -_02037CD4: .word 0x00000123 -#endif - arm_func_end sub_02037CA8 - - arm_func_start sub_02037CD8 -sub_02037CD8: ; 0x02037CD8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 -#ifdef JAPAN - mov r7, r0 - bl sub_02027B1C - mov r4, #0 -#else - ldr r1, _02037F10 ; =_020AFDF0 - mov r7, r0 - ldr r0, [r1] - mov r4, #0 - ldrb r0, [r0, #0x16] - cmp r0, #0 - moveq r4, #1 - beq _02037D14 - cmp r0, #1 - moveq r4, #1 - beq _02037D14 - cmp r0, #2 - moveq r4, #3 -_02037D14: - mov r0, r7 - bl sub_02027B1C - b _02037EF8 -#endif -_02037D20: - ldr r2, _02037F10 ; =_020AFDF0 - mov r0, #0xa - ldr r1, [r2] - mul r6, r4, r0 - ldrb r0, [r1, #0x16] -#ifdef JAPAN - ldr r2, [r2, #4] -#else - ldr r2, [r2, #8] -#endif - ldr r3, _02037F14 ; =0x00000111 - ldr r2, [r2, r0, lsl #2] - add r2, r2, r6 - ldrh r5, [r2, #8] - cmp r5, r3 - cmpne r5, #0x110 - beq _02037EF4 - add r2, r5, #0xfe - add r2, r2, #0xfe00 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - cmp r2, #7 - bhi _02037E0C -#ifdef JAPAN - cmp r0, #2 -#else - cmp r0, #0 -#endif - moveq ip, #0x104 - beq _02037D84 - cmp r0, #1 -#ifdef JAPAN - subeq ip, r3, #0xe - beq _02037D84 - cmp r0, #0 - subeq ip, r3, #0xf -#else - subeq ip, r3, #0xc -#endif - movne ip, #0 -_02037D84: - cmp r5, #0x100 - blo _02037EA8 - ldr r0, _02037F18 ; =0x00000109 - cmp r5, r0 - bhi _02037EA8 - mov lr, #0 - ldr r3, _02037F1C ; =KEYBOARD_STRING_IDS - mov r0, #6 - b _02037DF4 -_02037DA8: - cmp r5, r8 - bne _02037DE8 - ldr r0, _02037F18 ; =0x00000109 - cmp r5, r0 - bne _02037DD0 -#ifdef JAPAN - ldrb r0, [r1, #0x15] - cmp r0, #0 - ldrne r1, _020381EC ; =0x000031D8 - ldreq r1, _020381F0 ; =0x000031D9 -#else - ldrb r1, [r1, #0x15] - cmp r1, #0 - addne r1, r0, #0x1d - addeq r1, r0, #0x1e -#endif - b _02037DDC -_02037DD0: - cmp ip, r5 - ldreqh r1, [r2, #4] - ldrneh r1, [r2, #2] -_02037DDC: - add r0, sp, #0 - bl GetStringFromFileVeneer - b _02037EA8 -_02037DE8: - add r2, lr, #1 - mov r2, r2, lsl #0x10 - mov lr, r2, asr #0x10 -_02037DF4: - smulbb r2, lr, r0 - ldrh r8, [r3, r2] - add r2, r3, r2 - cmp r8, #0 - bne _02037DA8 - b _02037EA8 -_02037E0C: - ldr r1, [r1, #0xc] - cmp r1, #8 - beq _02037E38 -#ifdef JAPAN - cmp r0, #3 -#else - cmp r0, #2 -#endif - bne _02037E38 - cmp r4, #5 - ble _02037E38 - and r0, r5, #0xff - bl sub_0204DA1C - cmp r0, #0xff -#ifdef JAPAN - bne _02037E38 - ldr r1, _020381F4 ; =_020B12A0_JP - add r0, sp, #0 - ldr r2, [r1, r5, lsl #2] - ldr r1, _020381F8 ; =_0209B4A4 - bl SprintfStatic__02037F30 - b _02037EA8 -_02037E38: - ldr r1, _020381F4 ; =_020B12A0_JP - add r0, sp, #0 - ldr r1, [r1, r5, lsl #2] - bl strcpy -#else - beq _02037E5C -_02037E38: - ldr r0, _02037F10 ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #9 - bne _02037E84 - cmp r5, #0x41 - blo _02037E5C - cmp r5, #0x5a - bls _02037E84 -_02037E5C: - cmp r5, #0x20 - add r0, sp, #0 - bne _02037E74 - ldr r1, _02037F20 ; =_0209B4A4 - bl SprintfStatic__02037F30 - b _02037EA8 -_02037E74: - ldr r1, _02037F24 ; =_0209B4AC - mov r2, r5 - bl SprintfStatic__02037F30 - b _02037EA8 -_02037E84: - cmp r5, #0x20 - add r0, sp, #0 - bne _02037E9C - ldr r1, _02037F28 ; =_0209B4B8 - bl SprintfStatic__02037F30 - b _02037EA8 -_02037E9C: - ldr r1, _02037F2C ; =_0209B4C0 - mov r2, r5 - bl SprintfStatic__02037F30 -#endif -_02037EA8: - add r0, sp, #0 - bl sub_020265A8 - cmp r0, #0xc - rsble r0, r0, #0xc - movgt r1, #0 - addle r0, r0, r0, lsr #31 - movle r1, r0, asr #1 - ldr r0, _02037F10 ; =_020AFDF0 - add r3, sp, #0 -#ifdef JAPAN - ldmia r0, {r2, r5} -#else - ldr r2, [r0] - ldr r5, [r0, #8] -#endif - ldrb r2, [r2, #0x16] - mov r0, r7 - ldr r2, [r5, r2, lsl #2] - add r2, r2, r6 - ldrb r5, [r2, #4] - ldrb r2, [r2, #5] - add r1, r1, r5 - bl DrawTextInWindow -_02037EF4: - add r4, r4, #1 -_02037EF8: - cmp r4, #0x54 -#ifdef JAPAN - blt _02037D20 -#else - bne _02037D20 -#endif - mov r0, r7 - bl UpdateWindow - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02037F10: .word _020AFDF0 -_02037F14: .word 0x00000111 -_02037F18: .word 0x00000109 -_02037F1C: .word KEYBOARD_STRING_IDS -#ifdef JAPAN -_020381EC: .word 0x000031D8 -_020381F0: .word 0x000031D9 -_020381F4: .word _020B12A0_JP -_020381F8: .word _0209B4A4 -#else -_02037F20: .word _0209B4A4 -_02037F24: .word _0209B4AC -_02037F28: .word _0209B4B8 -_02037F2C: .word _0209B4C0 -#endif - arm_func_end sub_02037CD8 - - arm_func_start SprintfStatic__02037F30 -SprintfStatic__02037F30: ; 0x02037F30 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02037F30 - - arm_func_start sub_02037F58 -sub_02037F58: ; 0x02037F58 -#ifdef JAPAN - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x108 -#else - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x114 -#endif - ldr r1, _020383DC ; =_0209B288 - mov sb, r0 - ldrb r2, [r1] - ldrb r0, [r1, #1] -#ifdef JAPAN - strb r2, [sp, #4] - strb r0, [sp, #5] -#else - mov sl, #0 - strb r2, [sp, #0x10] - strb r0, [sp, #0x11] -#endif - bl sub_02038ADC - mov r0, sb - bl sub_02027B1C - ldr r0, _020383E0 ; =_020AFDF0 - ldr r1, [r0] - ldr r0, [r1, #0xc] - cmp r0, #7 - addeq r0, r1, #0x100 -#ifdef JAPAN - moveq r1, #0 -#else - moveq r1, sl -#endif - streqh r1, [r0, #0xa6] - ldr r0, _020383E0 ; =_020AFDF0 - ldr r0, [r0] - add r0, r0, #0x100 - ldrh r1, [r0, #0xa6] - cmp r1, #0 - beq _02037FF8 -#ifdef JAPAN - add r0, sp, #6 -#else - add r0, sp, #0x12 -#endif - bl GetStringFromFileVeneer - mov r0, sb - bl GetWindow - mov r4, r0 -#ifdef JAPAN - add r0, sp, #6 -#else - add r0, sp, #0x12 -#endif - bl sub_020265A8 - ldrb r1, [r4, #6] - mov r2, #0 -#ifdef JAPAN - add r3, sp, #6 -#else - add r3, sp, #0x12 -#endif - rsb r0, r0, r1, lsl #3 - add r0, r0, r0, lsr #31 - mov r1, r0, asr #1 - mov r0, sb - bl DrawTextInWindow -_02037FF8: - ldr r0, _020383E0 ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #5 - moveq r8, #0x36 - movne r8, #0x22 - cmp r0, #7 - moveq r8, #0x36 - cmp r0, #8 - ldr r0, _020383E0 ; =_020AFDF0 - moveq r8, #0x36 - ldr r0, [r0] - ldrb r5, [r0, #0x1b] - ldr r4, [r0, #0xf8] - bl sub_02038B5C - cmp r0, #0 - beq _02038054 - mov r0, r4 - mov r1, r5 - bl sub_02038A8C -#ifdef JAPAN -_02038054: -#else - cmp r0, #0x3c - movgt r0, #1 - bgt _02038058 -_02038054: - mov r0, #0 -_02038058: - cmp r0, #0 - movne sl, #1 -#endif - mov r6, #0 - ldr r4, _020383E4 ; =_0209B3B4 - ldr fp, _020383E0 ; =_020AFDF0 - b _02038394 -_02038070: - ldr r1, [fp] - add r0, r1, r6 - ldr r7, [r1, #0xc] - ldrb r5, [r0, #0xfc] - sub r0, r7, #4 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _020382E8 -_02038090: ; jump table - b _0203825C ; case 0 - b _020380A8 ; case 1 - b _02038148 ; case 2 - b _020381FC ; case 3 - b _020380A8 ; case 4 - b _0203825C ; case 5 -_020380A8: - mov r0, r6 - mov r1, #0x12 - bl _s32_div_f - cmp r1, #5 - ble _020380D0 - cmp r1, #0xc -#ifdef JAPAN - movlt sl, #0x43 -#else - movlt r0, #0x43 - strlt r0, [sp, #8] -#endif - movlt r7, #1 - blt _020380DC -_020380D0: -#ifdef JAPAN - mov sl, #0x44 -#else - mov r0, #0x44 - str r0, [sp, #8] -#endif - mov r7, #0 -_020380DC: - cmp r5, #0 - beq _02038114 - mov r0, r5 - bl sub_020251F0 -#ifdef JAPAN - and r1, sl, #0xff - str r1, [sp] - mov r3, r0 - mov r0, sb - mov r1, r6, lsl #2 - ldrsh r1, [r4, r1] - add r2, r4, r6, lsl #2 - ldrsh r2, [r2, #2] - bl sub_020264F8 -_02038114: - add r0, sp, #4 -#else - ldr r1, [sp, #8] - add r2, r4, r6, lsl #2 - and r1, r1, #0xff - str r1, [sp] - mov r1, r6, lsl #2 - mov r3, r0 - ldrsh r1, [r4, r1] - ldrsh r2, [r2, #2] - mov r0, sb - bl sub_020264F8 -_02038114: - add r0, sp, #0x10 -#endif - ldrsb r2, [r0, r7] - mov r1, r6, lsl #2 - mov r0, sb - str r2, [sp] - ldrsh r3, [r4, r1] - add r1, r4, r6, lsl #2 - ldrsh r2, [r1, #2] - sub r1, r3, #1 - mov r3, #0xc - add r2, r2, #0xc - bl sub_02025D50 - b _02038390 -_02038148: - mov r0, r6 -#ifdef JAPAN - cmp r5, #2 -#else - cmp r5, #0x20 -#endif - mov r1, #0x11 - moveq r5, #0 - bl _s32_div_f - cmp r1, #5 - blt _02038178 - cmp r1, #0xc -#ifdef JAPAN - movlt sl, #0x43 -#else - movlt r0, #0x43 - strlt r0, [sp, #4] -#endif - movlt r7, #1 - blt _02038184 -_02038178: -#ifdef JAPAN - mov sl, #0x44 -#else - mov r0, #0x44 - str r0, [sp, #4] -#endif - mov r7, #0 -_02038184: - cmp r5, #0 - beq _020381C4 - mov r0, r5 - bl sub_020251F0 -#ifdef JAPAN - and r1, sl, #0xff - str r1, [sp] - ldr r1, _020383E8 ; =_0209B32C - mov r2, r6, lsl #2 - ldrsh r1, [r1, r2] - ldr r2, _020383E8 ; =_0209B32C - mov r3, r0 - add r2, r2, r6, lsl #2 - ldrsh r2, [r2, #2] - mov r0, sb - bl sub_020264F8 -_020381C4: - add r0, sp, #4 -#else - ldr r1, [sp, #4] - mov r2, r6, lsl #2 - and r1, r1, #0xff - str r1, [sp] - ldr r1, _020383E8 ; =_0209B32C - mov r3, r0 - ldrsh r1, [r1, r2] - ldr r2, _020383E8 ; =_0209B32C - mov r0, sb - add r2, r2, r6, lsl #2 - ldrsh r2, [r2, #2] - bl sub_020264F8 -_020381C4: - add r0, sp, #0x10 -#endif - ldrsb r1, [r0, r7] - mov r2, r6, lsl #2 - mov r0, sb - str r1, [sp] - ldr r1, _020383E8 ; =_0209B32C - ldrsh r3, [r1, r2] - add r1, r1, r6, lsl #2 - ldrsh r2, [r1, #2] - sub r1, r3, #1 - mov r3, #0xc - add r2, r2, #0xc - bl sub_02025D50 - b _02038390 -_020381FC: - cmp r5, #0 -#ifdef JAPAN - moveq r5, #0xa - cmp r5, #2 -#else - moveq r5, #0x2a - cmp r5, #0x20 -#endif - moveq r5, #0 - cmp r5, #0 - beq _02038390 - mov r0, r5 - bl sub_020251F0 - mov r5, r0 - mov r0, r6 - mov r1, #0x12 - bl _s32_div_f - mov r1, #0x44 - str r1, [sp] - mov r1, #0x12 - mul r1, r0, r1 - add r0, r4, r1, lsl #2 - mov r1, r6, lsl #2 - ldrsh r2, [r0, #2] - ldrsh r1, [r4, r1] - mov r3, r5 - mov r0, sb - bl sub_020264F8 - b _02038390 -_0203825C: -#ifdef JAPAN - cmp r5, #2 -#else - cmp r5, #0x20 -#endif - moveq r5, #0 - cmp r5, #0 - beq _020382AC - ldr r1, _020383EC ; =_0209B2C4 - ldr r2, [fp] -#ifdef JAPAN - mov r0, r5 - ldrb sl, [r1, r7] - ldrsh r5, [r2, #0x20] - bl sub_020251F0 - ldr r2, _020383F0 ; =_0209B2D0 -#else - ldrb r1, [r1, r7] - mov r0, r5 - ldrsh r5, [r2, #0x20] - str r1, [sp, #0xc] - bl sub_020251F0 - ldr r2, _020383F0 ; =_0209B2D0 - ldr r1, [sp, #0xc] -#endif - mov r3, #0x44 - str r3, [sp] - mov r3, r0 - ldrb r2, [r2, r7] -#ifdef JAPAN - add r1, sl, r5 -#else - add r1, r1, r5 -#endif - mov r0, sb - bl sub_020264F8 -_020382AC: -#ifdef JAPAN - ldr r5, [fp] - mov r2, #0x17 - ldr r1, [r5, #0xc] - mov r0, sb - str r2, [sp] - ldr r2, _020383EC ; =_0209B2C4 - ldrsh r5, [r5, #0x20] - ldrb r7, [r2, r1] - ldr r2, _020383F0 ; =_0209B2D0 - mov r3, #0xc - ldrb r2, [r2, r1] - add r1, r7, r5 - add r2, r2, #0xc - bl sub_02025D50 - b _02038390 -_020382E8: - ldr r1, [fp] - ldr r0, _0203864C_JP ; =_020B12A0 - cmp r5, #2 - moveq r5, #0 - ldr r3, [r0, r5, lsl #2] - add r1, r1, r6, lsl #1 - ldrsh r5, [r1, #0x20] - ldr r1, _020383EC ; =_0209B2C4 - mov r0, sb - ldrb sl, [r1, r7] - ldr r1, _020383F0 ; =_0209B2D0 - ldrb r2, [r1, r7] - add r1, sl, r5 - bl DrawTextInWindow - ldr r5, [fp] - mov r2, #0x17 - ldr r1, [r5, #0xc] - mov r0, sb - str r2, [sp] - ldr r2, _020383EC ; =_0209B2C4 - ldrsh r5, [r5, #0x20] - ldrb r7, [r2, r1] - ldr r2, _020383F0 ; =_0209B2D0 - mov r3, #0x32 - ldrb r2, [r2, r1] - add r1, r7, r5 - add r2, r2, #0xc -#else - ldr r2, [fp] - mov r1, #0x17 - ldr r5, [r2, #0xc] - ldr r7, _020383F0 ; =_0209B2D0 - str r1, [sp] - ldrsh r1, [r2, #0x20] - ldr r2, _020383EC ; =_0209B2C4 - mov r0, sb - ldrb r2, [r2, r5] - ldrb r5, [r7, r5] - mov r3, #0xc - add r1, r2, r1 - add r2, r5, #0xc - bl sub_02025D50 - b _02038390 -_020382E8: - cmp r5, #0x20 - moveq r5, #0 - cmp sl, #0 - mov r0, r5 - beq _02038314 - bl sub_020251F0 - mov r2, r0 - ldr r1, _020383F4 ; =_0209B4C4 - add r0, sp, #0x12 - bl SprintfStatic__02037F30 - b _02038328 -_02038314: - bl sub_020251F0 - mov r2, r0 - ldr r1, _020383F8 ; =_0209B4C0 - add r0, sp, #0x12 - bl sprintf -_02038328: - ldr r1, [fp] - ldr r3, _020383EC ; =_0209B2C4 - ldr r2, [r1, #0xc] - add r1, r1, r6, lsl #1 - ldrb r5, [r3, r2] - ldr r3, _020383F0 ; =_0209B2D0 - ldrsh r1, [r1, #0x20] - ldrb r2, [r3, r2] - mov r0, sb - add r3, sp, #0x12 - add r1, r5, r1 - bl DrawTextInWindow - ldr r2, [fp] - mov r1, #0x17 - ldr r5, [r2, #0xc] - ldr r7, _020383F0 ; =_0209B2D0 - str r1, [sp] - ldrsh r1, [r2, #0x20] - ldr r2, _020383EC ; =_0209B2C4 - mov r0, sb - ldrb r2, [r2, r5] - ldrb r5, [r7, r5] - mov r3, #0x3c - add r1, r2, r1 - add r2, r5, #0xc -#endif - bl sub_02025D50 -_02038390: - add r6, r6, #1 -_02038394: - cmp r6, r8 - blt _02038070 - ldr r0, _020383E0 ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #7 - bne _020383CC -#ifdef JAPAN - ldrsb r4, [sp, #4] -#else - ldrsb r4, [sp, #0x10] -#endif - mov r0, sb - mov r1, #3 - mov r2, #0x1d - mov r3, #0xea - str r4, [sp] - bl sub_02025D50 -_020383CC: - mov r0, sb - bl UpdateWindow -#ifdef JAPAN - add sp, sp, #0x108 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -#else - add sp, sp, #0x114 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -#endif - .align 2, 0 -_020383DC: .word _0209B288 -_020383E0: .word _020AFDF0 -_020383E4: .word _0209B3B4 -_020383E8: .word _0209B32C -_020383EC: .word _0209B2C4 -_020383F0: .word _0209B2D0 -#ifdef JAPAN -_0203864C_JP: .word _020B12A0_JP -#else -_020383F4: .word _0209B4C4 -_020383F8: .word _0209B4C0 -#endif - arm_func_end sub_02037F58 - - arm_func_start sub_020383FC -sub_020383FC: ; 0x020383FC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _020384A8 ; =_020AFDF0 - mov r4, #0 - ldr r2, [r1] - ldrb r1, [r2, #0x10] - cmp r1, #0 - bne _02038444 - cmp r0, #0 - beq _02038444 - ldrb r0, [r2, #0x16] - cmp r0, #0 - beq _0203843C - cmp r0, #1 -#ifdef JAPAN - beq _020386A0 - cmp r0, #2 -#endif - moveq r0, #2 - streqb r0, [r2, #0x18] - b _02038444 -_0203843C: -#ifdef JAPAN - strb r4, [r2, #0x18] - b _02038444 -_020386A0: -#endif - mov r0, #1 - strb r0, [r2, #0x18] -_02038444: - ldr r7, _020384A8 ; =_020AFDF0 - mov r5, #0xa - ldr r6, _020384AC ; =0x00000111 - b _02038484 -_02038454: - ldrb r0, [r0, #6] - cmp r0, #1 - cmpne r0, #2 - cmpne r0, #3 - ldrneb r0, [r2, #0x10] - cmpne r0, #0 - beq _02038480 - cmp r1, #0x100 - bge _02038480 - and r0, r1, #0xff - bl sub_0204DA1C -_02038480: - add r4, r4, #1 -_02038484: - ldr r2, [r7] -#ifdef JAPAN - ldr r1, [r7, #4] -#else - ldr r1, [r7, #8] -#endif - ldrb r0, [r2, #0x16] - ldr r0, [r1, r0, lsl #2] - mla r0, r4, r5, r0 - ldrh r1, [r0, #8] - cmp r1, r6 - bne _02038454 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020384A8: .word _020AFDF0 -_020384AC: .word 0x00000111 - arm_func_end sub_020383FC - - arm_func_start sub_020384B0 -sub_020384B0: ; 0x020384B0 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02038900 ; =_020AFDF0 - mov r0, #0xa -#ifdef JAPAN - ldmia r2, {r1, r3} -#else - ldr r1, [r2] - ldr r3, [r2, #8] -#endif - ldrb ip, [r1, #0x16] - ldrb r2, [r1, #0x18] - ldr r3, [r3, ip, lsl #2] - mla r0, r2, r0, r3 - ldrh r4, [r0, #8] -#ifdef JAPAN - sub r0, r4, #0x100 - cmp r0, #9 -#else - sub r0, r4, #0x104 - cmp r0, #5 -#endif - addls pc, pc, r0, lsl #2 - b _020387B4 -_020384E8: ; jump table -#ifdef JAPAN - b _02038770 ; case 0 - b _0203878C ; case 1 - b _02038500 ; case 2 - b _02038544 ; case 3 - b _02038830 ; case 4 - b _020387B4 ; case 5 - b _020387B4 ; case 6 - b _020385C0 ; case 7 - b _020385F0 ; case 8 - b _02038588 ; case 9 -_02038770: - mov r0, #0 - bl sub_0203935C - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 - b _020388F8 -_0203878C: - mov r0, #1 - bl sub_0203935C - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 - b _020388F8 -#else - b _02038500 ; case 0 - b _02038544 ; case 1 - b _020387B4 ; case 2 - b _020385C0 ; case 3 - b _020385F0 ; case 4 - b _02038588 ; case 5 -#endif -_02038500: - cmp ip, #0 - bne _02038514 - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -_02038514: - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _02038900 ; =_020AFDF0 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x16] - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl sub_02037CD8 - mov r0, #1 - bl sub_020383FC - b _020388F8 -_02038544: - cmp ip, #1 - bne _02038558 - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -_02038558: - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _02038900 ; =_020AFDF0 - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x16] - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl sub_02037CD8 - mov r0, #1 - bl sub_020383FC - b _020388F8 -#ifdef JAPAN -_02038830: - cmp ip, #2 - bne _02038844 - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -_02038844: - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _02038900 ; =_020AFDF0 - mov r2, #2 - ldr r1, [r0] - strb r2, [r1, #0x16] - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl sub_02037CD8 - mov r0, #1 - bl sub_020383FC - b _020388F8 -#endif -_02038588: - ldrb r0, [r1, #0x15] - cmp r0, #0 - moveq r2, #1 - movne r2, #0 - mov r0, #4 - strb r2, [r1, #0x15] - bl PlaySeVolumeWrapper - mov r0, #0 - bl sub_020383FC - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl sub_02037CD8 - b _020388F8 -_020385C0: - ldrsb r0, [r1] - bl sub_02037F58 - bl sub_02038904 - cmp r0, #0 - beq _020388F8 - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #8 - bne _020388F8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_020385F0: - ldrb r0, [r1, #0x1e] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r1, #0xc] - cmp r0, #7 - bne _02038680 - bl sub_02038A54 - movs r4, r0 - beq _02038680 - cmp r4, #0x12 - bge _02038680 - mov r0, #2 - bl PlaySeVolumeWrapper -#ifdef JAPAN - mov r1, #2 -#else - mov r1, #0x20 -#endif - ldr r0, _02038900 ; =_020AFDF0 - b _0203864C -_02038634: - ldr r2, [r0] - ldr r3, [r2, #0xf8] - ldrb r2, [r3, r4] - cmp r2, #0 - streqb r1, [r3, r4] - add r4, r4, #1 -_0203864C: - cmp r4, #0x12 - bne _02038634 - ldr r0, _02038900 ; =_020AFDF0 - mov r1, #0x12 - ldr r0, [r0] - strb r1, [r0, #0x1c] - bl sub_02038ADC - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02038680: - ldr r0, _02038900 ; =_020AFDF0 - ldr r1, [r0] - ldrb r0, [r1, #0x16e] - ldrb r5, [r1, #0x10] - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - ldr r0, [r1, #0xc] - and r4, r2, #0xff - cmp r0, #8 - moveq r5, #0 - bl sub_02038A54 - cmp r0, #0 - beq _020386E8 - cmp r5, #1 - bne _020386E8 - bl sub_02038A54 - ldr r1, _02038900 ; =_020AFDF0 - ldr r1, [r1] - ldrb r1, [r1, #0x1b] - cmp r1, r0 - beq _020386E8 - mov r0, #2 - bl PlaySeVolumeWrapper - mov r0, #3 - ldmia sp!, {r3, r4, r5, pc} -_020386E8: - cmp r4, #0 - bne _020386FC - bl sub_02038A54 - cmp r0, #0 - beq _0203871C -_020386FC: - cmp r5, #0 - beq _0203872C - bl sub_02038A54 - ldr r1, _02038900 ; =_020AFDF0 - ldr r1, [r1] - ldrb r1, [r1, #0x1b] - cmp r1, r0 - beq _0203872C -_0203871C: - mov r0, #2 - bl PlaySeVolumeWrapper - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_0203872C: - bl sub_02038B5C - cmp r0, #0 - beq _02038760 - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrb r1, [r0, #0x1b] - ldr r0, [r0, #0xf8] - bl sub_02038A8C - cmp r0, #0x3c - ble _02038760 - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -_02038760: - mov r0, #0 - bl PlaySeVolumeWrapper - cmp r4, #0 - beq _02038794 - bl sub_02038A54 - cmp r0, #0 - bne _02038794 - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - add r1, r0, #0x6e - ldr r0, [r0, #0xf8] - add r1, r1, #0x100 - bl StrcpySimple -_02038794: - ldr r0, _02038900 ; =_020AFDF0 - ldr r1, [r0] - ldrb r2, [r1, #0x1b] - ldr r0, [r1, #0x134] - ldr r1, [r1, #0xf8] - bl MemcpySimple - mov r0, #3 - ldmia sp!, {r3, r4, r5, pc} -_020387B4: - ldrb r0, [r1, #0x10] - cmp r0, #0 - ldrne r0, [r1, #0xc] - cmpne r0, #8 - beq _020387E4 - and r0, r4, #0xff - bl sub_0204DA1C - cmp r0, #0xff - bne _02038810 - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -_020387E4: -#ifndef JAPAN - ldr r0, [r1, #0xc] - cmp r0, #9 - bne _02038810 - and r0, r4, #0xff - cmp r0, #0x41 - blo _02038804 - cmp r0, #0x5a - bls _02038810 -_02038804: - mov r0, #2 - bl PlaySeVolumeWrapper - b _020388F8 -#endif -_02038810: - ldr r0, _02038900 ; =_020AFDF0 - ldr r2, [r0] - ldrb r1, [r2, #0x15] - cmp r1, #1 - bne _020388A4 - ldr r1, [r2, #0xc] - cmp r1, #7 - bne _02038870 - ldrb r1, [r2, #0x1c] - cmp r1, #0x11 - bhi _02038870 - beq _020388A4 - mov r3, #0x10 - b _0203885C -_02038848: - ldr r2, [r2, #0xf8] - ldrb r1, [r2, r3] - add r2, r2, r3 - sub r3, r3, #1 - strb r1, [r2, #1] -_0203885C: - ldr r2, [r0] - ldrb r1, [r2, #0x1c] - cmp r3, r1 - bge _02038848 - b _020388A4 -_02038870: - ldrb r0, [r2, #0x1b] - sub r3, r0, #2 - ldr r0, _02038900 ; =_020AFDF0 - b _02038894 -_02038880: - ldr r2, [r2, #0xf8] - ldrb r1, [r2, r3] - add r2, r2, r3 - sub r3, r3, #1 - strb r1, [r2, #1] -_02038894: - ldr r2, [r0] - ldrb r1, [r2, #0x1c] - cmp r3, r1 - bge _02038880 -_020388A4: - ldr r0, _02038900 ; =_020AFDF0 - ldr r2, [r0] - ldrb r1, [r2, #0x1c] - ldr r2, [r2, #0xf8] - strb r4, [r2, r1] - ldr r2, [r0] - ldrb r0, [r2, #0x1b] - ldrb r1, [r2, #0x1c] - sub r0, r0, #1 - cmp r1, r0 - addlt r0, r1, #1 - strltb r0, [r2, #0x1c] - movge r0, #5 - strgeb r0, [r2, #0x18] - mov r0, #0 - bl PlaySeVolumeWrapper - bl sub_02038ADC - ldr r0, _02038900 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 -_020388F8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02038900: .word _020AFDF0 - arm_func_end sub_020384B0 - - arm_func_start sub_02038904 -sub_02038904: ; 0x02038904 - stmdb sp!, {r3, lr} - ldr r0, _02038A50 ; =_020AFDF0 - ldr r3, [r0] - ldrb r2, [r3, #0x1c] - ldr r1, [r3, #0xf8] - ldrb r1, [r1, r2] - cmp r1, #0 - bne _02038978 - cmp r2, #0 - bne _0203893C - mov r0, #2 - bl PlaySeVolumeWrapper - mov r0, #1 - ldmia sp!, {r3, pc} -_0203893C: - sub r1, r2, #1 - strb r1, [r3, #0x1c] - ldr r0, [r0] - mov r3, #0 - ldrb r1, [r0, #0x1c] - ldr r2, [r0, #0xf8] - mov r0, #1 - strb r3, [r2, r1] - bl PlaySeVolumeWrapper - ldr r0, _02038A50 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 - bl sub_02038ADC - b _02038A48 -_02038978: - bl sub_02038A54 - ldr r1, _02038A50 ; =_020AFDF0 - sub r0, r0, #1 - ldr r2, [r1] - mov ip, #0 - ldr r1, [r2, #0xc] - cmp r1, #7 - bne _020389EC - ldrb lr, [r2, #0x1c] - cmp lr, #0x11 - bhi _020389EC - cmp r0, #0x11 - movge r0, #0x11 -#ifdef JAPAN - movge ip, #2 -#else - movge ip, #0x20 -#endif - ldr r1, _02038A50 ; =_020AFDF0 - b _020389D0 -_020389B8: - ldr r2, [r1] - ldr r3, [r2, #0xf8] - add r2, r3, lr - ldrb r2, [r2, #1] - strb r2, [r3, lr] - add lr, lr, #1 -_020389D0: - cmp lr, r0 - blt _020389B8 - ldr r1, _02038A50 ; =_020AFDF0 - ldr r1, [r1] - ldr r1, [r1, #0xf8] - strb ip, [r1, r0] - b _02038A2C -_020389EC: - ldrb ip, [r2, #0x1c] - ldr r1, _02038A50 ; =_020AFDF0 - b _02038A10 -_020389F8: - ldr r2, [r1] - ldr r3, [r2, #0xf8] - add r2, r3, ip - ldrb r2, [r2, #1] - strb r2, [r3, ip] - add ip, ip, #1 -_02038A10: - cmp ip, r0 - blt _020389F8 - ldr r1, _02038A50 ; =_020AFDF0 - mov r2, #0 - ldr r1, [r1] - ldr r1, [r1, #0xf8] - strb r2, [r1, r0] -_02038A2C: - mov r0, #1 - bl PlaySeVolumeWrapper - ldr r0, _02038A50 ; =_020AFDF0 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02037F58 - bl sub_02038ADC -_02038A48: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02038A50: .word _020AFDF0 - arm_func_end sub_02038904 - - arm_func_start sub_02038A54 -sub_02038A54: ; 0x02038A54 - ldr r1, _02038A88 ; =_020AFDF0 - mov r0, #0 - ldr r2, [r1] - ldrb r3, [r2, #0x1b] - b _02038A7C -_02038A68: - ldr r1, [r2, #0xf8] - ldrb r1, [r1, r0] - cmp r1, #0 - bxeq lr - add r0, r0, #1 -_02038A7C: - cmp r0, r3 - blt _02038A68 - bx lr - .align 2, 0 -_02038A88: .word _020AFDF0 - arm_func_end sub_02038A54 - - arm_func_start sub_02038A8C -sub_02038A8C: ; 0x02038A8C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 - mov r7, r0 - mov r6, r1 - mov r5, r4 - b _02038ACC -_02038AA4: - ldrb r0, [r7, r5] - cmp r0, #0 - beq _02038AD4 - bl sub_020251F0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl sub_02025C7C -#ifdef JAPAN - ldrsh r0, [r0, #6] -#else - ldrb r0, [r0, #2] -#endif - add r5, r5, #1 - add r4, r4, r0 -_02038ACC: - cmp r5, r6 - blt _02038AA4 -_02038AD4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02038A8C - - arm_func_start sub_02038ADC -sub_02038ADC: ; 0x02038ADC - stmdb sp!, {r4, r5, r6, lr} - mov r4, #0 - mov r5, r4 - ldr r6, _02038B58 ; =_020AFDF0 - b _02038B44 -_02038AF0: - add r0, r1, r5, lsl #1 - strh r4, [r0, #0x20] - ldr r1, [r6] - ldr r0, [r1, #0xf8] - ldrb r0, [r0, r5] - cmp r0, #0 - addeq r0, r1, r5, lsl #1 - moveq r1, #8 - streqh r1, [r0, #0x8c] - ldmeqia sp!, {r4, r5, r6, pc} - bl sub_020251F0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl sub_02025C7C - ldr r1, [r6] -#ifdef JAPAN - ldrsh r2, [r0, #6] -#else - ldrb r2, [r0, #2] -#endif - add r1, r1, r5, lsl #1 - add r5, r5, #1 - strh r2, [r1, #0x8c] -#ifdef JAPAN - ldrsh r0, [r0, #6] -#else - ldrb r0, [r0, #2] -#endif - add r4, r4, r0 -_02038B44: - ldr r1, [r6] - ldrb r0, [r1, #0x1b] - cmp r5, r0 - blt _02038AF0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02038B58: .word _020AFDF0 - arm_func_end sub_02038ADC - - arm_func_start sub_02038B5C -sub_02038B5C: ; 0x02038B5C - ldr r0, _02038B7C ; =_020AFDF0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #3 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02038B7C: .word _020AFDF0 - arm_func_end sub_02038B5C - - arm_func_start sub_02038B80 -sub_02038B80: ; 0x02038B80 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - ldr r2, _02039068 ; =_020AFDF0 - mov sb, r0 - ldr r7, [r2] - mov r8, r1 - ldrb r3, [r7, #0x10] - ldr ip, [r7, #0xc] - mov r2, #1 - cmp ip, #7 - moveq r3, r2 - cmp r3, #0 - ldr r4, _0203906C ; =_0209B2E0 - movne r2, #2 - ldr r1, _02039070 ; =_0209B2E1 - ldr r0, _02039074 ; =_0209B2E2 - ldrb r4, [r4, r2, lsl #4] - ldr lr, _02039078 ; =0x0000FFFF - ldr r5, _0203907C ; =_0209B2E3 - cmp sb, lr - ldrb r1, [r1, r2, lsl #4] - ldrb r0, [r0, r2, lsl #4] - ldrb r2, [r5, r2, lsl #4] - mov r4, r4, lsl #3 - mov r5, r1, lsl #3 - add r0, r4, r0, lsl #3 - cmpne r8, lr - add r1, r5, r2, lsl #3 - mvneq r0, #0 - beq _02039060 - add r2, r1, #8 - cmp r8, r2 - bge _02038FA0 - cmp r3, #0 - beq _02038CEC - add r1, r5, #8 - cmp r8, r1 - sublt r0, lr, #0x10000 - blt _02039060 - cmp r8, r2 - subgt r0, lr, #0x10000 - bgt _02039060 - sub r1, r4, #4 - cmp sb, r1 - sublt r0, lr, #0x10000 - blt _02039060 - add r0, r0, #4 - cmp sb, r0 - subgt r0, lr, #0x10000 - bgt _02039060 - cmp ip, #5 - beq _02038C5C - sub r0, ip, #7 - cmp r0, #1 - bhi _02038CA0 -_02038C5C: - add r0, r4, #3 - sub sb, sb, r0 - cmp sb, #0 - movle sb, #1 - cmp sb, #0xea - movge sb, #0xe9 - mov r0, sb - mov r1, #0xd - bl _s32_div_f - add r1, r5, #0x1e - mov r6, r0 - cmp r8, r1 - addgt r6, r6, #0x12 - add r0, r5, #0x2d - cmp r8, r0 - addgt r6, r6, #0x12 - b _02038D88 -_02038CA0: - add r0, r4, #6 - sub sb, sb, r0 - cmp sb, #0 - movle sb, #1 - cmp sb, #0xe5 - movge sb, #0xe4 - cmp sb, #0xaa - subgt sb, sb, #8 - bgt _02038CCC - cmp sb, #0x4b - subgt sb, sb, #4 -_02038CCC: - mov r0, sb - mov r1, #0xd - bl _s32_div_f - add r1, r5, #0x24 - mov r6, r0 - cmp r8, r1 - addgt r6, r6, #0x11 - b _02038D88 -_02038CEC: - bl sub_02038A54 - ldr r1, _02039068 ; =_020AFDF0 - ldr r3, _02039080 ; =_0209B2C4 - ldr r1, [r1] - ldr r7, [r1, #0xc] - ldrb r2, [r1, #0x1b] - ldrb r3, [r3, r7] - cmp r0, r2 - subeq r0, r0, #1 - add r2, r5, #0x16 - cmp r8, r2 - add r2, r2, #0x20 - add r3, r4, r3 - mvnlt r0, #0 - blt _02039060 - cmp r8, r2 - mvngt r0, #0 - bgt _02039060 - sub r2, r3, #4 - cmp sb, r2 - mvnlt r0, #0 - blt _02039060 - add r2, r3, #0x68 - cmp sb, r2 - mvngt r0, #0 - bgt _02039060 - sub r5, sb, r3 - mov r4, #0 - b _02038D80 -_02038D60: - add r2, r1, r4, lsl #1 - ldrsh r3, [r2, #0x20] - ldrsh r2, [r2, #0x8c] - mov r6, r4 - add r2, r3, r2 - cmp r5, r2 - blt _02038D88 - add r4, r4, #1 -_02038D80: - cmp r4, r0 - ble _02038D60 -_02038D88: - bl sub_02038A54 - cmp r6, r0 - bgt _02038F98 - ldr r0, _02039068 ; =_020AFDF0 - ldr r1, [r0] - strb r6, [r1, #0x1d] - ldr r0, [r0] - ldrsb r0, [r0] - bl GetWindow - mov r4, r0 - bl sub_02038ADC - ldr r0, _02039068 ; =_020AFDF0 - ldr r3, [r0] - ldr r1, [r3, #0xc] - sub r0, r1, #4 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02038F30 -_02038DD0: ; jump table - b _02038ED8 ; case 0 - b _02038DE8 ; case 1 - b _02038E60 ; case 2 - b _02038DE8 ; case 3 - b _02038DE8 ; case 4 - b _02038ED8 ; case 5 -_02038DE8: - ldr r0, _02039084 ; =_0209B28C - ldr r5, _02039088 ; =_0209B2D0 - str r0, [sp] - mov r0, #0x40 - str r0, [sp, #4] - ldr sb, _02039080 ; =_0209B2C4 - ldrb r2, [r4, #5] - ldrb r0, [r4, #4] - ldr r3, _0203908C ; =_0209B3B6 - mov r8, r6, lsl #2 - ldr r7, _02039090 ; =_0209B3B4 - ldrb r4, [r5, r1] - ldrsh r3, [r3, r8] - ldrb r1, [sb, r1] - ldrsh r5, [r7, r8] - add r3, r4, r3 - sub r2, r2, #1 - add r2, r3, r2, lsl #3 - sub r2, r2, #0xe - mov r2, r2, lsl #0x10 - add r1, r1, r5 - sub r0, r0, #1 - add r0, r1, r0, lsl #3 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r2, asr #0x10 - mov r2, #0xc - mov r3, #0xb - bl sub_0202A2A4 - b _02038F90 -_02038E60: - ldr r0, _02039084 ; =_0209B28C - ldr r5, _02039088 ; =_0209B2D0 - str r0, [sp] - mov r0, #0x40 - str r0, [sp, #4] - ldr sb, _02039080 ; =_0209B2C4 - ldrb r2, [r4, #5] - ldrb r0, [r4, #4] - ldr r3, _02039094 ; =_0209B32E - mov r8, r6, lsl #2 - ldr r7, _02039098 ; =_0209B32C - ldrb r4, [r5, r1] - ldrsh r3, [r3, r8] - ldrb r1, [sb, r1] - ldrsh r5, [r7, r8] - add r3, r4, r3 - sub r2, r2, #1 - add r2, r3, r2, lsl #3 - sub r2, r2, #0xe - mov r2, r2, lsl #0x10 - add r1, r1, r5 - sub r0, r0, #1 - add r0, r1, r0, lsl #3 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r2, asr #0x10 - mov r2, #0xc - mov r3, #0xb - bl sub_0202A2A4 - b _02038F90 -_02038ED8: - ldr r0, _02039084 ; =_0209B28C - ldr r2, _02039080 ; =_0209B2C4 - str r0, [sp] - mov r0, #0x40 - str r0, [sp, #4] - ldr r0, _02039088 ; =_0209B2D0 - ldrb r5, [r2, r1] - ldrsh r3, [r3, #0x20] - ldrb r2, [r4, #4] - ldrb r1, [r0, r1] - ldrb r0, [r4, #5] - add r3, r5, r3 - add r2, r3, r2, lsl #3 - add r1, r1, r0, lsl #3 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r2, #0xc - mov r3, #0xb - bl sub_0202A2A4 - b _02038F90 -_02038F30: - ldr r0, _02039068 ; =_020AFDF0 - ldr r2, _02039080 ; =_0209B2C4 - ldr r5, [r0] - ldr r3, _02039084 ; =_0209B28C - mov r0, #0x40 - str r3, [sp] - str r0, [sp, #4] - add r5, r5, r6, lsl #1 - ldr r0, _02039088 ; =_0209B2D0 - ldrb r7, [r2, r1] - ldrsh r3, [r5, #0x20] - ldrb r2, [r4, #4] - ldrb r1, [r0, r1] - ldrb r0, [r4, #5] - add r3, r7, r3 - add r2, r3, r2, lsl #3 - add r1, r1, r0, lsl #3 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - ldrsh r2, [r5, #0x8c] - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r3, #0xb - bl sub_0202A2A4 -_02038F90: - add r0, r6, #0x64 - b _02039060 -_02038F98: - mvn r0, #0 - b _02039060 -_02038FA0: - cmp r8, #0x60 - blt _02038FB0 - cmp r8, #0xb8 - ble _02038FB8 -_02038FB0: - mvn r0, #0 - b _02039060 -_02038FB8: - cmp r8, #8 - sublt r0, lr, #0x10000 - blt _02039060 - cmp r8, #0xf8 - subgt r0, lr, #0x10000 - bgt _02039060 - cmp sb, #8 - sublt r0, lr, #0x10000 - blt _02039060 - cmp sb, #0xf8 - subgt r0, lr, #0x10000 - bgt _02039060 - cmp sb, #0x23 - movle sb, #0x24 - cmp sb, #0xf5 - movge sb, #0xf4 - cmp r8, #0x63 - movle r8, #0x64 - cmp r8, #0xb1 - movge r8, #0xb0 - sub r0, r8, #0x63 - mov r1, #0xd - bl _s32_div_f - mov r4, r0 - sub r0, sb, #0x23 - mov r1, #0xf - bl _s32_div_f - mov r1, #6 - ldr r2, _02039068 ; =_020AFDF0 - mla r0, r1, r0, r4 - ldrb r3, [r7, #0x16] -#ifdef JAPAN - ldr r2, [r2, #4] -#else - ldr r2, [r2, #8] -#endif - mov r1, #0xa - ldr r2, [r2, r3, lsl #2] - mla r2, r0, r1, r2 - ldrh r2, [r2, #8] - cmp r2, #0x110 - subeq r0, r1, #0xb - beq _02039060 - ldrb r2, [r7, #0x1e] - cmp r2, #0 - subne r0, r1, #0xb -_02039060: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02039068: .word _020AFDF0 -_0203906C: .word _0209B2E0 -_02039070: .word _0209B2E1 -_02039074: .word _0209B2E2 -_02039078: .word 0x0000FFFF -_0203907C: .word _0209B2E3 -_02039080: .word _0209B2C4 -_02039084: .word _0209B28C -_02039088: .word _0209B2D0 -_0203908C: .word _0209B3B6 -_02039090: .word _0209B3B4 -_02039094: .word _0209B32E -_02039098: .word _0209B32C - arm_func_end sub_02038B80 - -#ifdef JAPAN - arm_func_start sub_0203935C -sub_0203935C: ; 0x0203935C - stmdb sp!, {r3, lr} - ldr r1, _0203942C_JP ; =_020AFDF0 - ldr r2, [r1] - ldrb r1, [r2, #0x10] - cmp r1, #0 - beq _02039380 - mov r0, #2 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} -_02039380: - ldrb r3, [r2, #0x1c] - ldr r2, [r2, #0xf8] - ldrb r1, [r2, r3] - cmp r1, #0 - bne _020393F0 - cmp r3, #0 - bne _020393A8 - mov r0, #2 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} -_020393A8: - add r1, r2, r3 - ldrb r1, [r1, #-1] - bl sub_02039430 - ldr r1, _0203942C_JP ; =_020AFDF0 - ldr r2, [r1] - ldr r1, [r2, #0xf8] - ldrb r2, [r2, #0x1c] - sub r3, r1, #1 - ldrb r1, [r3, r2] - cmp r0, r1 - beq _020393E4 - strb r0, [r3, r2] - mov r0, #0 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} -_020393E4: - mov r0, #2 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} -_020393F0: - bl sub_02039430 - ldr r1, _0203942C_JP ; =_020AFDF0 - ldr r1, [r1] - ldrb r2, [r1, #0x1c] - ldr r3, [r1, #0xf8] - ldrb r1, [r3, r2] - cmp r0, r1 - beq _02039420 - strb r0, [r3, r2] - mov r0, #0 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} -_02039420: - mov r0, #2 - bl PlaySeVolumeWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_0203942C_JP: .word _020AFDF0 - arm_func_end sub_0203935C - - arm_func_start sub_02039430 -sub_02039430: ; 0x02039430 - cmp r0, #0 - beq _02039454 - cmp r0, #1 - beq _02039464 - cmp r0, #2 - ldreq r0, _02039474 ; =_0209C29E_JP - addeq r1, r1, r1, lsl #1 - ldreqb r0, [r0, r1] - bx lr -_02039454: - ldr r0, _02039478 ; =_0209C29C_JP - add r1, r1, r1, lsl #1 - ldrb r0, [r0, r1] - bx lr -_02039464: - ldr r0, _0203947C ; =_0209C29D_JP - add r1, r1, r1, lsl #1 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02039474: .word _0209C29E_JP -_02039478: .word _0209C29C_JP -_0203947C: .word _0209C29D_JP - arm_func_end sub_02039430 -#endif - - arm_func_start sub_0203909C -sub_0203909C: ; 0x0203909C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x9c - mov r6, r0 - mov r4, #0 - mov r0, #0x4c - mov r1, #8 - mov r5, r4 - bl MemAlloc -#ifdef JAPAN - ldr r2, _02039208 ; =_020AFE40 - mov r1, r4 - str r0, [r2] - str r1, [r0, #8] - ldr r0, [r2] - sub r3, r1, #2 - strb r1, [r0, #0xc] - ldr r0, [r2] - strb r3, [r0] - ldr r0, [r2] - strb r3, [r0, #1] - ldr r0, [r2] - strb r3, [r0, #2] - ldr r0, [r2] - str r1, [r0, #0x10] - ldr r0, _02039608 ; =0x00008140 - b _02039118 -_020394E4: - add r2, r6, r1 - ldrb r3, [r6, r1] - ldrb r2, [r2, #1] - cmp r3, #0 - orr r2, r2, r3, lsl #8 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - beq _02039120 - cmp r2, r0 - addeq r4, r4, #1 - add r5, r5, #1 - add r1, r1, #2 -_02039118: - cmp r1, #0x36 - bne _020394E4 -#else - ldr r1, _02039208 ; =_020AFE40 - mov r3, r4 - str r0, [r1] - str r3, [r0, #8] - ldr r0, [r1] - sub r2, r3, #2 - strb r3, [r0, #0xc] - ldr r0, [r1] - strb r2, [r0] - ldr r0, [r1] - strb r2, [r0, #1] - ldr r0, [r1] - strb r2, [r0, #2] - ldr r0, [r1] - str r3, [r0, #0x10] - b _02039118 -_020390FC: - ldrb r0, [r6, r3] - cmp r0, #0 - beq _02039120 - cmp r0, #0x20 - addeq r4, r4, #1 - add r5, r5, #1 - add r3, r3, #1 -_02039118: - cmp r3, #0x36 - blt _020390FC -#endif -_02039120: - cmp r5, r4 - ldreq r0, _02039208 ; =_020AFE40 - moveq r1, #1 - ldreq r0, [r0] - mov r3, #0 - streqb r1, [r0, #0xc] - ldr r0, _02039208 ; =_020AFE40 -_0203913C: - ldr r1, [r0] - ldrb r2, [r6, r3] - add r1, r1, r3 - add r3, r3, #1 - strb r2, [r1, #0x14] - cmp r3, #0x36 - blt _0203913C - ldr r0, _02039208 ; =_020AFE40 - ldr r0, [r0] - ldrb r0, [r0, #0xc] - cmp r0, #0 - bne _020391C0 - ldr r0, _0203920C ; =_0209B4D4 - mov r2, #1 - ldr r1, _02039210 ; =sub_0203939C - str r2, [sp, #4] - bl CreateTextBox - ldr r1, _02039208 ; =_020AFE40 - ldr r3, _02039214 ; =_0209B4E4 - ldr r1, [r1] - add r2, sp, #4 - strb r0, [r1] - mov r0, #0 - mov r1, #0x31 - str r0, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02039208 ; =_020AFE40 - mov r2, #0 - ldr r3, [r1] - strb r0, [r3, #1] - ldr r0, [r1] - str r2, [r0, #4] - b _020391FC -_020391C0: - mov r0, #0 - bl CreateDialogueBox - ldr r3, _02039208 ; =_020AFE40 -#ifdef JAPAN - ldr r2, _02039618 ; =0x000031D7 - ldr r4, [r3] - mov r1, #0x218 -#else - mov r1, #0x218 - ldr r4, [r3] - sub r2, r1, #0xf3 -#endif - strb r0, [r4, #2] - ldr r0, [r3] - mov r3, #0 - ldrsb r0, [r0, #2] - bl ShowStringIdInDialogueBox - ldr r0, _02039208 ; =_020AFE40 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] -_020391FC: - mov r0, #1 - add sp, sp, #0x9c - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02039208: .word _020AFE40 -#ifdef JAPAN -_02039608: .word 0x00008140 -#endif -_0203920C: .word _0209B4D4 -_02039210: .word sub_0203939C -_02039214: .word _0209B4E4 -#ifdef JAPAN -_02039618: .word 0x000031D7 -#endif - arm_func_end sub_0203909C - - arm_func_start sub_02039218 -sub_02039218: ; 0x02039218 - stmdb sp!, {r3, lr} - ldr r0, _02039300 ; =_020AFE40 - ldr r0, [r0] - cmp r0, #0 - beq _020392F8 - ldr r1, [r0, #8] - cmp r1, #0 - beq _0203924C - cmp r1, #1 - beq _02039290 - cmp r1, #0xb - beq _020392C4 - b _020392DC -_0203924C: - ldrsb r0, [r0] - mvn r1, #1 - cmp r0, r1 - beq _02039270 - bl sub_0202F954 - ldr r0, _02039300 ; =_020AFE40 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202836C -_02039270: - ldr r0, _02039300 ; =_020AFE40 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _020392DC - bl CloseSimpleMenu - b _020392DC -_02039290: - ldrsb r0, [r0] - mvn r1, #1 - cmp r0, r1 - beq _020392A4 - bl CloseTextBox -_020392A4: - ldr r0, _02039300 ; =_020AFE40 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _020392DC - bl CloseDialogueBox - b _020392DC -_020392C4: - bl MemFree - ldr r0, _02039300 ; =_020AFE40 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} -_020392DC: - ldr r1, _02039300 ; =_020AFE40 - mov r0, #0 - ldr r2, [r1] - ldr r1, [r2, #8] - add r1, r1, #1 - str r1, [r2, #8] - ldmia sp!, {r3, pc} -_020392F8: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02039300: .word _020AFE40 - arm_func_end sub_02039218 - - arm_func_start sub_02039304 -sub_02039304: ; 0x02039304 - ldr r0, _02039318 ; =_020AFE40 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #0x10] - bx lr - .align 2, 0 -_02039318: .word _020AFE40 - arm_func_end sub_02039304 - - arm_func_start sub_0203931C -sub_0203931C: ; 0x0203931C - stmdb sp!, {r3, lr} - ldr r0, _02039398 ; =_020AFE40 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #1 - bne _0203934C - ldrsb r0, [r1, #2] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02039390 - mov r0, #1 - ldmia sp!, {r3, pc} -_0203934C: - ldrb r0, [r1, #0xc] - cmp r0, #0 - bne _0203937C - ldrsb r0, [r1, #1] - bl IsSimpleMenuActive - cmp r0, #0 - bne _02039390 - ldr r0, _02039398 ; =_020AFE40 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl GetSimpleMenuResult__0202B870 - ldmia sp!, {r3, pc} -_0203937C: - ldrsb r0, [r1, #2] - bl IsDialogueBoxActive - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_02039390: - mvn r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02039398: .word _020AFE40 - arm_func_end sub_0203931C - - arm_func_start sub_0203939C -sub_0203939C: ; 0x0203939C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x254 - mov r4, r0 - bl sub_02027B1C - ldr r0, _02039428 ; =_020AFE40 - ldr r2, [r0] - ldr r0, [r2, #0x10] - cmp r0, #0 - add r0, sp, #0x54 - bne _020393D4 - ldr r1, _0203942C ; =_0209B4FC - add r2, r2, #0x14 - bl SprintfStatic__02039438 - b _020393E0 -_020393D4: - ldr r1, _02039430 ; =_0209B50C - add r2, r2, #0x14 - bl SprintfStatic__02039438 -_020393E0: - add r0, sp, #0x54 - str r0, [sp, #0x3c] - add ip, sp, #4 -#ifdef JAPAN - ldr r2, _02039838 ; =0x000031D6 -#endif - ldr r3, _02039434 ; =0x0000C402 - add r0, sp, #0x154 - mov r1, #0x400 -#ifndef JAPAN - mov r2, #0x124 -#endif - str ip, [sp] - bl PreprocessStringFromId - add r3, sp, #0x154 - mov r0, r4 - mov r1, #4 - mov r2, #3 - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow - add sp, sp, #0x254 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02039428: .word _020AFE40 -_0203942C: .word _0209B4FC -_02039430: .word _0209B50C -#ifdef JAPAN -_02039838: .word 0x000031D6 -#endif -_02039434: .word 0x0000C402 - arm_func_end sub_0203939C - - arm_func_start SprintfStatic__02039438 -SprintfStatic__02039438: ; 0x02039438 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02039438 - - arm_func_start DigitInputMenuInit -DigitInputMenuInit: ; 0x02039460 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - ldr r1, _02039514 ; =_020AFE58 - mov r4, r0 - str r4, [r1] - ldr r0, [r4, #0x10] - add ip, sp, #8 - cmp r0, #0x10 - blt _020394C8 - and r1, r0, #0xf - ldr r0, _02039518 ; =_0209C5C0 - str r1, [r4, #0x10] - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - ldr r0, [r4, #0x18] - mov r2, #0 - strb r0, [sp, #0xc] - ldr r0, [r4, #0x1c] - ldr r1, _0203951C ; =0x00001007 - strb r0, [sp, #0xd] - str r2, [sp] - ldr r3, _02039520 ; =DigitInputMenuDrawDigitsCallback - mov r0, ip - str r2, [sp, #4] - bl CreateAdvancedTextBox - b _02039500 -_020394C8: - ldr r0, _02039524 ; =_0209C5D0 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - ldr r0, [r4, #0x18] - mov r2, #0 - strb r0, [sp, #0xc] - ldr r0, [r4, #0x1c] - ldr r1, _0203951C ; =0x00001007 - strb r0, [sp, #0xd] - str r2, [sp] - ldr r3, _02039520 ; =DigitInputMenuDrawDigitsCallback - mov r0, ip - str r2, [sp, #4] - bl CreateAdvancedTextBox -_02039500: - strb r0, [r4, #0x14] - mov r0, r4 - bl DigitInputMenuInitDigits - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - .align 2, 0 -_02039514: .word _020AFE58 -_02039518: .word _0209C5C0 -_0203951C: .word 0x00001007 -_02039520: .word DigitInputMenuDrawDigitsCallback -_02039524: .word _0209C5D0 - arm_func_end DigitInputMenuInit - - arm_func_start DigitInputMenuReturn -DigitInputMenuReturn: ; 0x02039528 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5] - ldr r1, _020395C8 ; =_020AFE58 - str r5, [r1] - bl DigitInputMenuFrameUpdate - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _020395AC -_0203954C: ; jump table - b _020395AC ; case 0 - b _020395AC ; case 1 - b _02039584 ; case 2 - b _0203955C ; case 3 -_0203955C: - mov r0, #0 - bl PlaySeVolumeWrapper - ldrsb r0, [r5, #0x14] - bl sub_0202836C - ldrsb r0, [r5, #0x14] - bl SetAdvancedTextBoxState5 - ldrsb r0, [r5, #0x14] - bl CloseAdvancedTextBox - ldr r0, [r5] - ldmia sp!, {r3, r4, r5, pc} -_02039584: - ldrsb r0, [r5, #0x14] - bl sub_0202836C - ldrsb r0, [r5, #0x14] - bl SetAdvancedTextBoxState5 - ldrsb r0, [r5, #0x14] - bl CloseAdvancedTextBox - mov r0, #1 - bl PlaySeVolumeWrapper - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020395AC: - ldr r0, [r5] - cmp r4, r0 - beq _020395C0 - ldrsb r0, [r5, #0x14] - bl SetAdvancedTextBoxField0x1C2 -_020395C0: - mvn r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020395C8: .word _020AFE58 - arm_func_end DigitInputMenuReturn - - arm_func_start DigitInputMenuInitDigits -DigitInputMenuInitDigits: ; 0x020395CC - stmdb sp!, {r4, lr} - sub sp, sp, #0x28 - ldr r1, _0203967C ; =_020AFE58 - mov r4, r0 - str r4, [r1] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x10] - add r0, sp, #0 - bl DigitInputMenuGetDigits - ldr r0, [r4, #0x10] - add r1, sp, #0 - strb r0, [r4, #0x29] - b _0203960C -_02039600: - ldrb r0, [r4, #0x29] - sub r0, r0, #1 - strb r0, [r4, #0x29] -_0203960C: - ldrb r2, [r4, #0x29] - add r0, r1, r2, lsl #2 - ldr r0, [r0, #-4] - cmp r0, #0 - bne _02039628 - cmp r2, #1 - bhi _02039600 -_02039628: - ldr r1, [r4, #4] - add r0, sp, #0 - str r1, [r4] - ldr r2, [r4, #0x10] - bl DigitInputMenuGetDigits - ldrb r0, [r4, #0x29] - add r1, sp, #0 - sub r0, r0, #1 - strb r0, [r4, #0x28] - b _0203965C -_02039650: - ldrb r0, [r4, #0x28] - sub r0, r0, #1 - strb r0, [r4, #0x28] -_0203965C: - ldrb r2, [r4, #0x28] - ldr r0, [r1, r2, lsl #2] - cmp r0, #0 - bne _02039674 - cmp r2, #0 - bne _02039650 -_02039674: - add sp, sp, #0x28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203967C: .word _020AFE58 - arm_func_end DigitInputMenuInitDigits - - arm_func_start DigitInputMenuGetDigits -DigitInputMenuGetDigits: ; 0x02039680 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r1 - cmp sb, #0 - movgt r6, #1 - mov r5, #0xa - mov sl, r0 - mov r8, r2 - rsble sb, sb, #0 - mvnle r6, #0 - mov r7, #0 - mov r4, r5 - b _020396D4 -_020396B0: - mov r0, sb - mov r1, r5 - bl _s32_div_f - str r1, [sl, r7, lsl #2] - mov r0, sb - mov r1, r4 - bl _s32_div_f - mov sb, r0 - add r7, r7, #1 -_020396D4: - cmp r7, r8 - blt _020396B0 - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end DigitInputMenuGetDigits - - arm_func_start DigitInputMenuFrameUpdate -DigitInputMenuFrameUpdate: ; 0x020396E4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x34 - mov r4, r0 - add r1, sp, #0xc - mov r0, #0 - bl GetPressedButtons - ldrsb r0, [r4, #0x14] - bl IsAdvancedTextBoxActive - cmp r0, #0 - bne _02039730 - ldrsb r0, [r4, #0x14] - bl GetDigitInputResult - mvn r1, #0 - cmp r0, r1 - bne _02039728 - mov r0, #2 - b _02039940 -_02039728: - mov r0, #3 - b _02039940 -_02039730: - add r1, sp, #0xa - mov r0, #0 - ldrb r5, [r4, #0x28] - bl sub_020063F4 - ldrh r0, [sp, #0xa] - cmp r0, #0x10 - beq _02039774 - cmp r0, #0x20 - bne _02039788 - ldrb r0, [r4, #0x29] - ldrb r1, [r4, #0x28] - sub r0, r0, #1 - cmp r1, r0 - movge r0, #0 - addlt r0, r1, #1 - and r5, r0, #0xff - b _02039788 -_02039774: - ldrb r0, [r4, #0x28] - cmp r0, #0 - ldreqb r0, [r4, #0x29] - sub r0, r0, #1 - and r5, r0, #0xff -_02039788: - ldrb r0, [r4, #0x28] - cmp r5, r0 - beq _020397A0 - mov r0, #3 - strb r5, [r4, #0x28] - bl PlaySeVolumeWrapper -_020397A0: - ldrb r1, [r4, #0x28] - mov r0, #0xc - ldr r3, [r4, #0x24] - add r1, r1, #1 - mul r2, r1, r0 - ldr r1, [r4, #0x20] - add r0, r3, #0xf - sub r1, r1, r2 - add r2, r1, #3 - str r2, [sp] - str r0, [sp, #4] - ldrsb r0, [r4, #0x14] - sub r3, r3, #1 - mov r1, #7 - bl sub_020309B8 - add r1, sp, #8 - mov r0, #0 - bl sub_020063F4 - mov r0, r4 - bl DigitInputMenuCheckValidTouchScreenInput - cmp r0, #0 - ldreqh r0, [sp, #8] - cmp r0, #0x40 - beq _0203980C - cmp r0, #0x80 - beq _0203985C - b _020398AC -_0203980C: - ldr r3, [r4] - ldr r0, [r4, #0xc] - cmp r3, r0 - bne _0203982C - mov r0, #2 - bl PlaySeVolumeWrapper - mov r0, #0 - b _020398B0 -_0203982C: - ldrb r2, [r4, #0x28] - ldr r1, _02039948 ; =_0209C5E0 - mov r0, #3 - ldr r1, [r1, r2, lsl #2] - add r5, r3, r1 - bl PlaySeVolumeWrapper - ldr r0, [r4, #0xc] - cmp r5, r0 - strgt r0, [r4] - strle r5, [r4] - mov r0, #1 - b _020398B0 -_0203985C: - ldr r3, [r4] - ldr r0, [r4, #8] - cmp r3, r0 - bne _0203987C - mov r0, #2 - bl PlaySeVolumeWrapper - mov r0, #0 - b _020398B0 -_0203987C: - ldrb r2, [r4, #0x28] - ldr r1, _02039948 ; =_0209C5E0 - mov r0, #3 - ldr r1, [r1, r2, lsl #2] - sub r5, r3, r1 - bl PlaySeVolumeWrapper - ldr r0, [r4, #8] - cmp r5, r0 - strlt r0, [r4] - strge r5, [r4] - mov r0, #1 - b _020398B0 -_020398AC: - mov r0, #0 -_020398B0: - cmp r0, #0 - movne r0, #1 - bne _02039940 - mov r0, r4 - bl DigitInputMenuCheckValidTouchScreenInput - cmp r0, #0 - ldreqh r0, [sp, #0xc] - cmp r0, #1 - beq _020398E4 - cmp r0, #2 - bne _020398EC - mov r0, #2 - b _02039940 -_020398E4: - mov r0, #3 - b _02039940 -_020398EC: - add r0, sp, #0x10 - mov r1, #1 - bl sub_02031914 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x18] - mov r1, r1, lsl #0x10 - mov r2, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl DigitInputMenuCheckTouchUpDownArrow - cmp r0, #0 - blt _0203993C - ldrb r1, [r4, #0x28] - and r2, r0, #0xff - cmp r2, r1 - beq _0203993C - mov r0, #3 - strb r2, [r4, #0x28] - bl PlaySeVolumeWrapper -_0203993C: - mov r0, #0 -_02039940: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02039948: .word _0209C5E0 - arm_func_end DigitInputMenuFrameUpdate - - arm_func_start DigitInputMenuCheckValidTouchScreenInput -DigitInputMenuCheckValidTouchScreenInput: ; 0x0203994C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x24 - mov r4, r0 - add r0, sp, #0 - mov r1, #1 - bl sub_02031914 - ldrh r0, [sp] - tst r0, #2 - moveq r0, #0 - beq _020399F0 - ldr r2, [sp, #4] - ldr r0, _020399F8 ; =0x0000FFFF - cmp r2, r0 - ldreq r1, [sp, #8] - cmpeq r1, r0 - moveq r0, #0 - beq _020399F0 - ldr r0, [sp, #8] - mov r1, r2, lsl #0x10 - mov r2, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl DigitInputMenuCheckTouchUpDownArrow - ldrb r1, [r4, #0x28] - cmp r1, r0 - movne r0, #0 - bne _020399F0 - ldrsb r0, [r4, #0x14] - bl GetWindow - ldrb r1, [r0, #5] - ldr r2, [r4, #0x24] - ldr r0, [sp, #8] - add r1, r2, r1, lsl #3 - cmp r0, r1 - add r1, r1, #0xc - movlt r0, #0x40 - blt _020399F0 - cmp r0, r1 - movgt r0, #0x80 - movle r0, #0 -_020399F0: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020399F8: .word 0x0000FFFF - arm_func_end DigitInputMenuCheckValidTouchScreenInput - - arm_func_start DigitInputMenuCheckTouchUpDownArrow -DigitInputMenuCheckTouchUpDownArrow: ; 0x020399FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r0 - ldrsb r0, [r6, #0x14] - mov r5, r1 - mov r4, r2 - bl GetWindow - ldrb r1, [r0, #5] - ldr r3, [r6, #0x24] - ldr ip, _02039B08 ; =0x0000FFFF - add r3, r3, r1, lsl #3 - cmp r5, ip - ldrb r7, [r6, #0x29] - ldr r8, [r6, #0x20] - ldrb r2, [r0, #4] - mov r6, #0xc - ldrb sb, [r0, #6] - sub lr, r3, #0xa - ldrb r0, [r0, #7] - smulbb r7, r7, r6 - add r8, r8, r2, lsl #3 - mov r3, r2, lsl #3 - mov r1, r1, lsl #3 - add r2, r3, sb, lsl #3 - add sb, r1, r0, lsl #3 - sub r7, r8, r7 - add r0, lr, #0x20 - cmpne r4, ip - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r3, r3, #6 - cmp r5, r3 - sublt r0, r6, #0xe - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r1, r1, #6 - cmp r4, r1 - sublt r0, r6, #0xe - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r1, r2, #6 - cmp r5, r1 - subgt r0, r6, #0xe - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r1, sb, #6 - cmp r4, r1 - subgt r0, r6, #0xe - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r4, lr - sublt r0, ip, #0x10000 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r4, r0 - subgt r0, ip, #0x10000 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r0, r7, #4 - cmp r5, r0 - sublt r0, ip, #0x10000 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r8, #4 - cmp r5, r0 - subgt r0, ip, #0x10000 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r5, r7 - addle r5, r7, #1 - cmp r5, r8 - subge r5, r8, #1 - sub r0, r8, r5 - mov r1, #0xc - bl _s32_div_f - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02039B08: .word 0x0000FFFF - arm_func_end DigitInputMenuCheckTouchUpDownArrow - - arm_func_start DigitInputMenuDrawDigits -DigitInputMenuDrawDigits: ; 0x02039B0C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x2c - mov r8, r0 - ldr r1, [r8] - ldr r2, [r8, #0x10] - add r0, sp, #4 - bl DigitInputMenuGetDigits - ldr r0, [r8, #0x10] - add r2, sp, #4 - sub r3, r0, #1 - mov r0, #0xff - b _02039B50 -_02039B3C: - ldr r1, [r2, r3, lsl #2] - cmp r1, #0 - bne _02039B58 - str r0, [r2, r3, lsl #2] - sub r3, r3, #1 -_02039B50: - cmp r3, #0 - bgt _02039B3C -_02039B58: - mov r7, #0 - add r6, sp, #4 -#ifdef JAPAN - mov r5, #0xa -#else - mov r5, #0x2a -#endif - mov r4, #0x44 - mov sb, #0xc - b _02039BB0 -_02039B70: - ldr r0, [r6, r7, lsl #2] - cmp r0, #0xff - moveq r0, r5 -#ifdef JAPAN - addne r0, r0, #0x1e -#else - addne r0, r0, #0x30 -#endif - andne r0, r0, #0xff - bl sub_020251F0 - add r1, r7, #1 - mul r2, r1, sb - str r4, [sp] - ldr r1, [r8, #0x20] - mov r3, r0 - sub r1, r1, r2 - ldrsb r0, [r8, #0x14] - ldr r2, [r8, #0x24] - bl sub_020264F8 - add r7, r7, #1 -_02039BB0: - ldr r0, [r8, #0x10] - cmp r7, r0 - blt _02039B70 - mov r5, #0 - mov r4, #0x17 - mov r7, #0xb - mov r6, #0xc - b _02039C00 -_02039BD0: - add r0, r5, #1 - mul r1, r0, r6 - str r4, [sp] - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - sub r1, r0, r1 - ldrsb r0, [r8, #0x14] - mov r3, r7 - sub r1, r1, #1 - add r2, r2, #0xc - bl sub_02025D50 - add r5, r5, #1 -_02039C00: - ldr r0, [r8, #0x10] - cmp r5, r0 - blt _02039BD0 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end DigitInputMenuDrawDigits - - arm_func_start DigitInputMenuDrawDigitsCallback -DigitInputMenuDrawDigitsCallback: ; 0x02039C14 - ldr r0, _02039C24 ; =_020AFE58 - ldr ip, _02039C28 ; =DigitInputMenuDrawDigits - ldr r0, [r0] - bx ip - .align 2, 0 -_02039C24: .word _020AFE58 -_02039C28: .word DigitInputMenuDrawDigits - arm_func_end DigitInputMenuDrawDigitsCallback - - arm_func_start sub_02039C2C -sub_02039C2C: ; 0x02039C2C - ldr ip, _02039C38 ; =sub_02039C64 - mov r2, #0 - bx ip - .align 2, 0 -_02039C38: .word sub_02039C64 - arm_func_end sub_02039C2C - - arm_func_start sub_02039C3C -sub_02039C3C: ; 0x02039C3C - stmdb sp!, {r4, lr} - mov r2, #2 - bl sub_02039C64 - ldr r1, _02039C60 ; =sub_0203BA80 - mov r2, #0 - mov r4, r0 - bl sub_0203189C - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02039C60: .word sub_0203BA80 - arm_func_end sub_02039C3C - - arm_func_start sub_02039C64 -sub_02039C64: ; 0x02039C64 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - mov r5, r0 - mov r4, r2 - bl sub_0203AD68 - cmp r0, #0 - mvnne r0, #1 - bne _0203A4CC - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _02039CA8 - mov r0, #0x8a0 - mov r1, #8 - bl MemAlloc - ldr r1, _0203A4D4 ; =_020AFE5C - str r0, [r1, #0x10] -_02039CA8: - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r0, _0203A4D8 ; =_0209C764 - ldrsh r6, [r1, #2] - mov r2, r5 - mov r3, r4 - str r6, [sp] - ldr r1, [r1, #4] - bl Debug_Print0 - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r1, [r0, #4] - cmp r1, r5 - beq _02039CF0 - mov r1, #1 - str r1, [r0, #0xc] - mov r1, #0 - str r1, [r0, #8] - str r5, [r0, #4] - strh r1, [r0, #2] -_02039CF0: - ldr r2, _0203A4D4 ; =_020AFE5C - mov r0, #0 - ldrsh r1, [r2, #2] - sub r3, r0, #2 - strh r1, [r2] - ldr r1, [r2, #0x10] - str r4, [r1] - ldr r1, [r2, #0x10] - strb r0, [r1, #8] - ldr r1, [r2, #0x10] - strb r0, [r1, #9] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xa] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xb] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xc] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xd] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xe] - ldr r1, [r2, #0x10] - strb r0, [r1, #0x10] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x468] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x469] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x505] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x506] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x507] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x50c] - ldr r1, [r2, #0x10] - strb r3, [r1, #0x5bc] - ldr r1, [r2, #0x10] - add r1, r1, #0x600 - strh r0, [r1, #0x70] - ldr r1, [r2, #0x10] - strb r0, [r1, #0x46a] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xf] - ldr r1, [r2, #4] - cmp r1, #0xc - addls pc, pc, r1, lsl #2 - b _02039E94 -_02039DB0: ; jump table - b _02039E94 ; case 0 - b _02039DE4 ; case 1 - b _02039DF4 ; case 2 - b _02039E54 ; case 3 - b _02039E44 ; case 4 - b _02039E94 ; case 5 - b _02039E78 ; case 6 - b _02039E10 ; case 7 - b _02039E04 ; case 8 - b _02039E78 ; case 9 - b _02039E78 ; case 10 - b _02039E78 ; case 11 - b _02039E78 ; case 12 -_02039DE4: - ldr r0, [r2, #0x10] - mov r1, #1 - strb r1, [r0, #0xe] - b _02039E94 -_02039DF4: - ldr r0, [r2, #0x10] - mov r1, #1 - strb r1, [r0, #8] - b _02039E94 -_02039E04: - ldr r0, [r2, #0x10] - mov r1, #1 - strb r1, [r0, #0x10] -_02039E10: - ldr r0, _0203A4D4 ; =_020AFE5C - mov r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0xd] - bl sub_0204E210 - cmp r0, #2 - bne _02039E44 - bl sub_0204E3C8 - cmp r0, #0 - ldrne r0, _0203A4D4 ; =_020AFE5C - movne r1, #1 - ldrne r0, [r0, #0x10] - strneb r1, [r0, #0xf] -_02039E44: - ldr r0, _0203A4D4 ; =_020AFE5C - mov r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0xc] -_02039E54: - ldr r0, _0203A4D4 ; =_020AFE5C - mov r2, #1 - ldr r1, [r0, #0x10] - strb r2, [r1, #0xb] - ldr r1, [r0, #0x10] - strb r2, [r1, #9] - ldr r0, [r0, #0x10] - strb r2, [r0, #0xa] - b _02039E94 -_02039E78: - ldr r1, [r2, #0x10] - mov r3, #1 - strb r3, [r1, #8] - ldr r1, [r2, #0x10] - strb r0, [r1, #9] - ldr r1, [r2, #0x10] - strb r0, [r1, #0xa] -_02039E94: - ldr r2, _0203A4D4 ; =_020AFE5C - mvn r4, #0 - ldr r0, [r2, #0x10] - mov r5, #0 - str r5, [r0, #4] - add r1, r4, #0x22c -_02039EAC: - ldr r3, [r2, #0x10] - add r0, r5, #1 - add r3, r3, r5, lsl #1 - mov r0, r0, lsl #0x10 - strh r4, [r3, #0x12] - cmp r1, r0, asr #16 - mov r5, r0, asr #0x10 - bgt _02039EAC - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r0, [r0, #4] - sub r0, r0, #5 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0203A144 -_02039EE4: ; jump table - b _02039F04 ; case 0 - b _0203A034 ; case 1 - b _0203A144 ; case 2 - b _0203A144 ; case 3 - b _0203A034 ; case 4 - b _0203A034 ; case 5 - b _0203A034 ; case 6 - b _0203A034 ; case 7 -_02039F04: - bl sub_02059B08 - cmp r0, #0 - beq _02039FA8 - bl GetHero - mov r5, r0 - bl GetPartner - mov r4, r0 - cmp r5, #0 - beq _02039F64 - add r1, sp, #0x10 - mov r0, r5 - bl GetEvolutionPossibilities - ldrsh r0, [sp, #0x18] - cmp r0, #0 - beq _02039F64 - bl GetHeroMemberIdx - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r5, [r1, #0x10] - ldr r3, [r5, #4] - add r2, r3, #1 - str r2, [r5, #4] - ldr r1, [r1, #0x10] - add r1, r1, r3, lsl #1 - strh r0, [r1, #0x12] -_02039F64: - cmp r4, #0 - beq _02039FA8 - add r1, sp, #0x10 - mov r0, r4 - bl GetEvolutionPossibilities - ldrsh r0, [sp, #0x18] - cmp r0, #0 - beq _02039FA8 - bl GetPartnerMemberIdx - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r4, [r1, #0x10] - ldr r3, [r4, #4] - add r2, r3, #1 - str r2, [r4, #4] - ldr r1, [r1, #0x10] - add r1, r1, r3, lsl #1 - strh r0, [r1, #0x12] -_02039FA8: - ldr r6, _0203A4D4 ; =_020AFE5C - ldr r4, _0203A4DC ; =0x0000022B - ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR - mov sb, #5 - mov sl, #0 - mov r8, #1 - add fp, sp, #0x10 - mov r5, #0x44 -_02039FC8: - smulbb r2, sb, r5 - ldr r3, [r7] - ldrb r0, [r3, r2] - tst r0, #1 - movne r0, r8 - moveq r0, sl - tst r0, #0xff - beq _0203A01C - mov r1, fp - add r0, r3, r2 - bl GetEvolutionPossibilities - ldrsh r0, [sp, #0x18] - cmp r0, #0 - beq _0203A01C - ldr r2, [r6, #0x10] - ldr r1, [r2, #4] - add r0, r1, #1 - str r0, [r2, #4] - ldr r0, [r6, #0x10] - add r0, r0, r1, lsl #1 - strh sb, [r0, #0x12] -_0203A01C: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - cmp r4, r0, asr #16 - mov sb, r0, asr #0x10 - bgt _02039FC8 - b _0203A278 -_0203A034: - bl GetMainCharacter1MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _0203A064 - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r4, [r1, #0x10] - ldr r3, [r4, #4] - add r2, r3, #1 - str r2, [r4, #4] - ldr r1, [r1, #0x10] - add r1, r1, r3, lsl #1 - strh r0, [r1, #0x12] -_0203A064: - bl GetMainCharacter2MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _0203A094 - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r4, [r1, #0x10] - ldr r3, [r4, #4] - add r2, r3, #1 - str r2, [r4, #4] - ldr r1, [r1, #0x10] - add r1, r1, r3, lsl #1 - strh r0, [r1, #0x12] -_0203A094: - bl GetMainCharacter3MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _0203A0C4 - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r4, [r1, #0x10] - ldr r3, [r4, #4] - add r2, r3, #1 - str r2, [r4, #4] - ldr r1, [r1, #0x10] - add r1, r1, r3, lsl #1 - strh r0, [r1, #0x12] -_0203A0C4: - ldr r6, _0203A4D4 ; =_020AFE5C - ldr r4, _0203A4DC ; =0x0000022B - ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR - mov sb, #5 - mov sl, #0 - mov r8, #1 - mov r5, #0x44 -_0203A0E0: - smulbb r0, sb, r5 - ldr r1, [r7] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, r8 - moveq r0, sl - tst r0, #0xff - beq _0203A12C - mov r0, sb - bl sub_02056410 - cmp r0, #0 - beq _0203A12C - ldr r2, [r6, #0x10] - ldr r1, [r2, #4] - add r0, r1, #1 - str r0, [r2, #4] - ldr r0, [r6, #0x10] - add r0, r0, r1, lsl #1 - strh sb, [r0, #0x12] -_0203A12C: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - cmp r4, r0, asr #16 - mov sb, r0, asr #0x10 - bgt _0203A0E0 - b _0203A278 -_0203A144: - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #9] - cmp r0, #0 - bne _0203A198 - bl GetMainCharacter1MemberIdx - mov r4, r0 - mvn r1, #0 - cmp r4, r1 - beq _0203A198 - bl sub_0203AB3C - cmp r0, #0 - beq _0203A198 - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r3, [r0, #0x10] - ldr r2, [r3, #4] - add r1, r2, #1 - str r1, [r3, #4] - ldr r0, [r0, #0x10] - add r0, r0, r2, lsl #1 - strh r4, [r0, #0x12] -_0203A198: - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #0xa] - cmp r0, #0 - bne _0203A22C - bl GetMainCharacter2MemberIdx - mov r4, r0 - mvn r1, #0 - cmp r4, r1 - beq _0203A1EC - bl sub_0203AB3C - cmp r0, #0 - beq _0203A1EC - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r3, [r0, #0x10] - ldr r2, [r3, #4] - add r1, r2, #1 - str r1, [r3, #4] - ldr r0, [r0, #0x10] - add r0, r0, r2, lsl #1 - strh r4, [r0, #0x12] -_0203A1EC: - bl GetMainCharacter3MemberIdx - mov r4, r0 - mvn r1, #0 - cmp r4, r1 - beq _0203A22C - bl sub_0203AB3C - cmp r0, #0 - beq _0203A22C - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r3, [r0, #0x10] - ldr r2, [r3, #4] - add r1, r2, #1 - str r1, [r3, #4] - ldr r0, [r0, #0x10] - add r0, r0, r2, lsl #1 - strh r4, [r0, #0x12] -_0203A22C: - ldr r6, _0203A4D4 ; =_020AFE5C - ldr r5, _0203A4DC ; =0x0000022B - mov r4, #5 -_0203A238: - mov r0, r4 - bl sub_0203AB3C - cmp r0, #0 - beq _0203A264 - ldr r2, [r6, #0x10] - ldr r1, [r2, #4] - add r0, r1, #1 - str r0, [r2, #4] - ldr r0, [r6, #0x10] - add r0, r0, r1, lsl #1 - strh r4, [r0, #0x12] -_0203A264: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - cmp r5, r0, asr #16 - mov r4, r0, asr #0x10 - bgt _0203A238 -_0203A278: - ldr r1, _0203A4E4 ; =_0209C604 - add r0, sp, #8 - ldr r2, [r1, #4] - ldr r1, [r1] - str r2, [sp, #0xc] - str r1, [sp, #8] - bl sub_020584F8 - bl sub_0203AF28 - ldr r0, _0203A4D4 ; =_020AFE5C - ldrsh r0, [r0, #2] - bl sub_0203AAF8 - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r2, [r1, #0x10] - str r0, [r2, #0x46c] - ldr r0, [r1, #4] - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _0203A330 -_0203A2C0: ; jump table - b _0203A330 ; case 0 - b _0203A330 ; case 1 - b _0203A31C ; case 2 - b _0203A330 ; case 3 - b _0203A330 ; case 4 - b _0203A330 ; case 5 - b _0203A31C ; case 6 - b _0203A330 ; case 7 - b _0203A330 ; case 8 - b _0203A2F4 ; case 9 - b _0203A308 ; case 10 - b _0203A31C ; case 11 - b _0203A31C ; case 12 -_0203A2F4: - ldr r0, [r1, #0x10] - ldr r1, _0203A4E8 ; =0x000002B7 - add r0, r0, #0x400 - strh r1, [r0, #0x74] - b _0203A344 -_0203A308: - ldr r0, [r1, #0x10] -#ifdef JAPAN - ldr r1, _0203A8F4 ; =0x00002FD8 -#else - mov r1, #0x2b8 -#endif - add r0, r0, #0x400 - strh r1, [r0, #0x74] - b _0203A344 -_0203A31C: - ldr r0, [r1, #0x10] - ldr r1, _0203A4EC ; =0x00000302 - add r0, r0, #0x400 - strh r1, [r0, #0x74] - b _0203A344 -_0203A330: - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r1, _0203A4F0 ; =0x00000303 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - strh r1, [r0, #0x74] -_0203A344: - ldr r2, _0203A4D4 ; =_020AFE5C - mov r3, #0x10 - ldr r0, [r2, #0x10] - mov r1, #0xd - str r3, [r0, #0x478] - ldr r0, [r2, #0x10] - str r1, [r0, #0x470] - ldr r0, [r2, #4] - sub r0, r0, #6 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0203A420 -_0203A374: ; jump table - b _0203A3E0 ; case 0 - b _0203A420 ; case 1 - b _0203A420 ; case 2 - b _0203A390 ; case 3 - b _0203A3E0 ; case 4 - b _0203A3E0 ; case 5 - b _0203A3E0 ; case 6 -_0203A390: - ldr r3, [r2, #0x10] - ldr r0, _0203A4F4 ; =_0209C668 - add r1, r3, #0x72 - add r1, r1, #0x600 - str r1, [r3, #0x4cc] - ldr r3, [r2, #0x10] - ldr r1, _0203A4F8 ; =0x00401E33 - add r2, r3, #0x500 - ldrsh r4, [r2, #0xd4] - add r2, r3, #0x6c - ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem - str r4, [sp] - mov r4, #6 - add r2, r2, #0x400 - str r4, [sp, #4] - bl CreateTeamSelectionMenu - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r1, [r1, #0x10] - strb r0, [r1, #0x468] - b _0203A4BC -_0203A3E0: - ldr r2, [r2, #0x10] - ldr r0, _0203A4F4 ; =_0209C668 - add r1, r2, #0x500 - ldrsh r4, [r1, #0xd4] - add r2, r2, #0x6c - ldr r1, _0203A500 ; =0x00401C33 - ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem - str r4, [sp] - mov r4, #6 - add r2, r2, #0x400 - str r4, [sp, #4] - bl CreateTeamSelectionMenu - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r1, [r1, #0x10] - strb r0, [r1, #0x468] - b _0203A4BC -_0203A420: - ldr r1, _0203A4D4 ; =_020AFE5C - ldr r3, _0203A504 ; =sub_0203B91C - ldr r0, [r1, #0x10] - ldr r2, _0203A508 ; =_0203BA24 - str r3, [r0, #0x4e0] - ldr r0, [r1, #0x10] - mov r3, #0 - str r2, [r0, #0x4e8] - ldr r2, [r1, #0x10] - ldr r0, _0203A4F4 ; =_0209C668 - str r3, [r2, #0x508] - ldr r3, [r1, #0x10] - ldr r1, _0203A50C ; =0x00447C33 - add r2, r3, #0x500 - ldrsh r4, [r2, #0xd4] - add r2, r3, #0x6c - ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem - str r4, [sp] - mov r4, #8 - add r2, r2, #0x400 - str r4, [sp, #4] - bl CreateTeamSelectionMenu - ldr r2, _0203A4D4 ; =_020AFE5C - ldr r1, _0203A510 ; =_0203B884 - ldr r3, [r2, #0x10] - strb r0, [r3, #0x468] - ldr r0, [r2, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_02031888 - ldr r0, _0203A514 ; =_0209C638 - ldr r1, _0203A518 ; =sub_0203C784 - bl CreateTextBox - ldr r1, _0203A4D4 ; =_020AFE5C - mov r2, #1 - ldr r3, [r1, #0x10] - strb r0, [r3, #0x469] - ldr r0, [r1, #0x10] - strb r2, [r0, #0x46a] -_0203A4BC: - ldr r0, _0203A4D4 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] -_0203A4CC: - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0203A4D4: .word _020AFE5C -_0203A4D8: .word _0209C764 -_0203A4DC: .word 0x0000022B -_0203A4E0: .word TEAM_MEMBER_TABLE_PTR -_0203A4E4: .word _0209C604 -#ifdef JAPAN -_0203A4E8: .word 0x00002FD7 -_0203A8F4: .word 0x00002FD8 -_0203A4EC: .word 0x000023AA -_0203A4F0: .word 0x000023AB -#else -_0203A4E8: .word 0x000002B7 -_0203A4EC: .word 0x00000302 -_0203A4F0: .word 0x00000303 -#endif -_0203A4F4: .word _0209C668 -_0203A4F8: .word 0x00401E33 -_0203A4FC: .word TeamSelectionMenuGetItem -_0203A500: .word 0x00401C33 -_0203A504: .word sub_0203B91C -_0203A508: .word sub_0203BA24 -_0203A50C: .word 0x00447C33 -_0203A510: .word sub_0203B884 -_0203A514: .word _0209C638 -_0203A518: .word sub_0203C784 - arm_func_end sub_02039C64 - - arm_func_start sub_0203A51C -sub_0203A51C: ; 0x0203A51C - stmdb sp!, {r3, lr} - ldr r0, _0203A5A4 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0203AA20 - ldr r1, _0203A5A4 ; =_020AFE5C - strh r0, [r1] - bl sub_0203AAB0 - ldr r1, _0203A5A4 ; =_020AFE5C - strh r0, [r1, #2] - ldr r0, [r1, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl CloseTeamSelectionMenu - ldr r0, _0203A5A4 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x69] - cmp r0, r1 - beq _0203A588 - bl CloseTextBox - ldr r0, _0203A5A4 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x469] -_0203A588: - ldr r0, _0203A5A4 ; =_020AFE5C - ldr r0, [r0, #0x10] - bl MemFree - ldr r0, _0203A5A4 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A5A4: .word _020AFE5C - arm_func_end sub_0203A51C - - arm_func_start sub_0203A5A8 -sub_0203A5A8: ; 0x0203A5A8 - stmdb sp!, {r3, lr} - ldr r0, _0203A5EC ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0203AA20 - ldr r1, _0203A5EC ; =_020AFE5C - strh r0, [r1] - bl sub_0203AAB0 - ldr r1, _0203A5EC ; =_020AFE5C - strh r0, [r1, #2] - ldr r0, [r1, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl IsTeamSelectionMenuActive - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A5EC: .word _020AFE5C - arm_func_end sub_0203A5A8 - - arm_func_start sub_0203A5F0 -sub_0203A5F0: ; 0x0203A5F0 - stmdb sp!, {r3, lr} - ldr r0, _0203A614 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_020318D0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A614: .word _020AFE5C - arm_func_end sub_0203A5F0 - - arm_func_start sub_0203A618 -sub_0203A618: ; 0x0203A618 - stmdb sp!, {r3, lr} - ldr r0, _0203A634 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0203A658 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A634: .word _020AFE5C - arm_func_end sub_0203A618 - - arm_func_start sub_0203A638 -sub_0203A638: ; 0x0203A638 - stmdb sp!, {r3, lr} - ldr r0, _0203A654 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0203A6BC - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A654: .word _020AFE5C - arm_func_end sub_0203A638 - - arm_func_start sub_0203A658 -sub_0203A658: ; 0x0203A658 - stmdb sp!, {r3, lr} - bl sub_0203AA20 - ldr r1, _0203A6B8 ; =_020AFE5C - strh r0, [r1] - bl sub_0203AAB0 - ldr r1, _0203A6B8 ; =_020AFE5C - strh r0, [r1, #2] - ldr r0, [r1, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_0202812C - ldr r0, _0203A6B8 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x69] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl CloseTextBox - ldr r0, _0203A6B8 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x469] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A6B8: .word _020AFE5C - arm_func_end sub_0203A658 - - arm_func_start sub_0203A6BC -sub_0203A6BC: ; 0x0203A6BC - stmdb sp!, {r3, lr} - ldr r0, _0203A750 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_02028354 - cmp r0, #3 - bne _0203A6F0 - ldr r0, _0203A750 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_0202810C -_0203A6F0: - ldr r0, _0203A750 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_0203111C - ldr r0, _0203A750 ; =_020AFE5C - ldr r1, [r0, #0x10] - ldrb r0, [r1, #0x46a] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x400 - ldrsb r0, [r0, #0x69] - mvn r1, #1 - cmp r0, r1 - bne _0203A748 - ldr r0, _0203A754 ; =_0209C638 - ldr r1, _0203A758 ; =sub_0203C784 - bl CreateTextBox - ldr r1, _0203A750 ; =_020AFE5C - ldr r1, [r1, #0x10] - strb r0, [r1, #0x469] - ldmia sp!, {r3, pc} -_0203A748: - bl IsTextboxState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A750: .word _020AFE5C -_0203A754: .word _0209C638 -_0203A758: .word sub_0203C784 - arm_func_end sub_0203A6BC - - arm_func_start TeamSelectionMenuGetItem -TeamSelectionMenuGetItem: ; 0x0203A75C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x28 - ldr r3, _0203A960 ; =_020AFE5C - ldr r2, _0203A964 ; =TEAM_MEMBER_TABLE_PTR - ldr r5, [r3, #0x10] - mov r8, r1 - add r1, r5, r8, lsl #1 - ldrsh r6, [r1, #0x12] - ldr r4, [r2] - add r1, r5, r8 - mov r2, #0 - strb r2, [r1, #0x672] - mov r7, #0x44 - ldr r1, [r3, #4] - smlabb r4, r6, r7, r4 - mov sb, r0 - cmp r1, #9 - bne _0203A85C - ldr r0, [r3, #0x10] - add r0, r0, #0x600 - ldrsh r0, [r0, #0x70] - bl GetItemMoveId16 - mov r5, #0 - mov r3, r5 - mov ip, #1 - mov r2, #6 - b _0203A7FC -_0203A7C8: - smlabb lr, r5, r2, r4 - ldrb r1, [lr, #0x22] - tst r1, #1 - movne r1, ip - moveq r1, r3 - tst r1, #0xff - beq _0203A7F0 - ldrh r1, [lr, #0x24] - cmp r0, r1 - beq _0203A804 -_0203A7F0: - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 -_0203A7FC: - cmp r5, #4 - blt _0203A7C8 -_0203A804: - ldrsh r1, [r4, #4] - bl sub_02053D1C - cmp r0, #0 - beq _0203A844 - cmp r5, #4 - blt _0203A844 - mov r0, r6 - bl sub_02056410 - cmp r0, #0 - beq _0203A8E4 - mov r0, r6 - bl sub_020564B0 - cmp r0, #0 - movne r7, #0x59 - moveq r7, #0x46 - b _0203A8E4 -_0203A844: - ldr r0, _0203A960 ; =_020AFE5C - mov r1, #3 - ldr r0, [r0, #0x10] - add r0, r0, r8 - strb r1, [r0, #0x672] - b _0203A8E4 -_0203A85C: - mov r0, r6 - bl sub_02056410 - cmp r0, #0 - beq _0203A884 - mov r0, r6 - bl sub_020564B0 - cmp r0, #0 - movne r7, #0x59 - moveq r7, #0x46 - b _0203A8E4 -_0203A884: - ldr r0, _0203A960 ; =_020AFE5C - ldr r0, [r0, #4] -#ifdef JAPAN - sub r0, r0, #5 - cmp r0, #7 -#else - cmp r0, #0xc -#endif - addls pc, pc, r0, lsl #2 - b _0203A8D0 -_0203A898: ; jump table -#ifndef JAPAN - b _0203A8D0 ; case 0 - b _0203A8D0 ; case 1 - b _0203A8D0 ; case 2 - b _0203A8CC ; case 3 - b _0203A8CC ; case 4 -#endif - b _0203A8CC ; case 5 - b _0203A8CC ; case 6 - b _0203A8CC ; case 7 - b _0203A8CC ; case 8 - b _0203A8CC ; case 9 - b _0203A8CC ; case 10 - b _0203A8CC ; case 11 - b _0203A8CC ; case 12 -_0203A8CC: - b _0203A8E4 -_0203A8D0: - mov r0, r6 - bl sub_02056F60 - cmp r0, #0 - movne r7, #0x44 - moveq r7, #0x57 -_0203A8E4: - add r0, sp, #0x14 - add r1, r4, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldrsh r0, [r4, #4] - bl GetDexNumber - mov r1, r0 - add r0, sp, #4 - mov r2, #3 - bl sub_0202372C - ldr r0, _0203A960 ; =_020AFE5C - add r2, sp, #4 - ldr r0, [r0, #0x10] - add r0, r0, r8 - ldrb r0, [r0, #0x672] - cmp r0, #0 - bne _0203A944 - ldr r1, _0203A968 ; =_0209C798 - add r4, sp, #0x14 - mov r0, sb - mov r3, r7 - str r4, [sp] - bl SprintfStatic__0203A970 - b _0203A954 -_0203A944: - ldr r1, _0203A96C ; =_0209C7B8 - add r3, sp, #0x14 - mov r0, sb - bl SprintfStatic__0203A970 -_0203A954: - mov r0, sb - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0203A960: .word _020AFE5C -_0203A964: .word TEAM_MEMBER_TABLE_PTR -_0203A968: .word _0209C798 -_0203A96C: .word _0209C7B8 - arm_func_end TeamSelectionMenuGetItem - - arm_func_start SprintfStatic__0203A970 -SprintfStatic__0203A970: ; 0x0203A970 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__0203A970 - - arm_func_start sub_0203A998 -sub_0203A998: ; 0x0203A998 - ldr r0, _0203A9B4 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0203A9B4: .word _020AFE5C - arm_func_end sub_0203A998 - - arm_func_start sub_0203A9B8 -sub_0203A9B8: ; 0x0203A9B8 - stmdb sp!, {r3, lr} - ldr r0, _0203A9E8 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - addne r0, r0, #0x400 - ldrnesb r0, [r0, #0x68] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsTeamSelectionMenuActive - ldmia sp!, {r3, pc} - .align 2, 0 -_0203A9E8: .word _020AFE5C - arm_func_end sub_0203A9B8 - - arm_func_start sub_0203A9EC -sub_0203A9EC: ; 0x0203A9EC - stmdb sp!, {r3, lr} - ldr r0, _0203AA1C ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - addne r0, r0, #0x400 - ldrnesb r0, [r0, #0x68] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsTeamSelectionMenuState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203AA1C: .word _020AFE5C - arm_func_end sub_0203A9EC - - arm_func_start sub_0203AA20 -sub_0203AA20: ; 0x0203AA20 - stmdb sp!, {r3, lr} - ldr r0, _0203AAAC ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - addne r0, r0, #0x400 - ldrnesb r0, [r0, #0x68] - mvnne r1, #1 - cmpne r0, r1 - beq _0203AAA0 - bl IsTeamSelectionMenuActive - cmp r0, #0 - beq _0203AA68 - ldr r0, _0203AAAC ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_020311D4 - b _0203AA7C -_0203AA68: - ldr r0, _0203AAAC ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_020311E8 -_0203AA7C: - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - cmp r1, #0 - mvnlt r0, #0 - ldrge r0, _0203AAAC ; =_020AFE5C - ldrge r0, [r0, #0x10] - addge r0, r0, r1, lsl #1 - ldrgesh r0, [r0, #0x12] - ldmia sp!, {r3, pc} -_0203AAA0: - ldr r0, _0203AAAC ; =_020AFE5C - ldrsh r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203AAAC: .word _020AFE5C - arm_func_end sub_0203AA20 - - arm_func_start sub_0203AAB0 -sub_0203AAB0: ; 0x0203AAB0 - stmdb sp!, {r3, lr} - ldr r0, _0203AAF4 ; =_020AFE5C - ldr r0, [r0, #0x10] - cmp r0, #0 - addne r0, r0, #0x400 - ldrnesb r0, [r0, #0x68] - mvnne r1, #1 - cmpne r0, r1 - ldreq r0, _0203AAF4 ; =_020AFE5C - ldreqsh r0, [r0, #2] - ldmeqia sp!, {r3, pc} - bl sub_020311D4 - ldr r1, _0203AAF4 ; =_020AFE5C - ldr r1, [r1, #0x10] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #0x12] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203AAF4: .word _020AFE5C - arm_func_end sub_0203AAB0 - - arm_func_start sub_0203AAF8 -sub_0203AAF8: ; 0x0203AAF8 - ldr r1, _0203AB38 ; =_020AFE5C - mov r2, #0 - ldr r3, [r1, #0x10] - add r1, r3, #0x500 - ldrsh ip, [r1, #0xd4] - b _0203AB28 -_0203AB10: - add r1, r3, r2, lsl #1 - ldrsh r1, [r1, #0x12] - cmp r0, r1 - moveq r0, r2 - bxeq lr - add r2, r2, #1 -_0203AB28: - cmp r2, ip - blt _0203AB10 - mvn r0, #0 - bx lr - .align 2, 0 -_0203AB38: .word _020AFE5C - arm_func_end sub_0203AAF8 - - arm_func_start sub_0203AB3C -sub_0203AB3C: ; 0x0203AB3C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0203AD60 ; =TEAM_MEMBER_TABLE_PTR - mov r5, r0 - mov r0, #0x44 - smulbb r2, r5, r0 - ldr r1, [r1] - ldrb r0, [r1, r2] - add r4, r1, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0203AD64 ; =_020AFE5C - ldr r1, [r0, #0x10] - ldrb r0, [r1, #0xc] - cmp r0, #0 - beq _0203AB98 - ldrsh r0, [r4, #4] - cmp r0, #0x214 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_0203AB98: - ldrb r0, [r1, #0x10] - cmp r0, #0 - beq _0203ABCC - ldrsh r0, [r4, #4] - bl sub_02054F18 - cmp r0, #0 - bne _0203ABC4 - add r0, r4, #0x22 - bl IsMovesetValidInTimeDarkness - cmp r0, #0 - bne _0203ABCC -_0203ABC4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0203ABCC: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r1, [r0, #0x10] - ldrb r0, [r1, #0xd] - cmp r0, #0 - beq _0203AD10 - ldrsh r0, [r4, #4] - bl IsShaymin - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _0203AD64 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #0xb] - cmp r0, #0 - beq _0203AC20 - mov r0, r5 - mov r1, #0 - bl sub_02056460 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0203AC20: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #0xb] - cmp r0, #0 - beq _0203AC4C - mov r0, r5 - mov r1, #1 - bl sub_02056460 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0203AC4C: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r1, [r0, #0x10] - ldrb r0, [r1, #0xf] - cmp r0, #0 - ldrneb r0, [r1, #0xb] - cmpne r0, #0 - beq _0203AC80 - mov r0, r5 - mov r1, #2 - bl sub_02056460 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0203AC80: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _0203ACAC - mov r0, r5 - mov r1, #0 - bl sub_02056460 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_0203ACAC: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _0203ACD8 - mov r0, r5 - mov r1, #1 - bl sub_02056460 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_0203ACD8: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r1, [r0, #0x10] - ldrb r0, [r1, #0xf] - cmp r0, #0 - ldrneb r0, [r1, #8] - cmpne r0, #0 - beq _0203AD58 - mov r0, r5 - mov r1, #2 - bl sub_02056460 - cmp r0, #0 - bne _0203AD58 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0203AD10: - ldrb r0, [r1, #0xb] - cmp r0, #0 - beq _0203AD30 - mov r0, r5 - bl sub_02056410 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0203AD30: - ldr r0, _0203AD64 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _0203AD58 - mov r0, r5 - bl sub_02056410 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_0203AD58: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203AD60: .word TEAM_MEMBER_TABLE_PTR -_0203AD64: .word _020AFE5C - arm_func_end sub_0203AB3C - - arm_func_start sub_0203AD68 -sub_0203AD68: ; 0x0203AD68 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - sub sb, sl, #7 - mov r6, #0 - ldr r5, _0203AF04 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0x44 - ldr fp, _0203AF08 ; =0x0000022B - b _0203AEF4 -_0203AD88: - ldr r1, [r5] - mov r0, r6, lsl #0x10 - mla r7, r6, r4, r1 - mov r0, r0, asr #0x10 - bl IsValidTeamMember - cmp r0, #0 - beq _0203AEF0 - cmp sl, #2 - bne _0203ADC4 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02056410 - cmp r0, #0 - beq _0203AEF0 - b _0203AEE8 -_0203ADC4: - cmp sl, #3 - bne _0203ADE4 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02056410 - cmp r0, #0 - bne _0203AEF0 - b _0203AEE8 -_0203ADE4: - cmp sl, #4 - bne _0203AE2C - cmp r6, #5 - blt _0203AEF0 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02056410 - cmp r0, #0 - bne _0203AEF0 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl IsMainCharacter - cmp r0, #0 - bne _0203AEF0 - ldrsh r0, [r7, #4] - cmp r0, #0x214 - bne _0203AEE8 - b _0203AEF0 -_0203AE2C: - cmp sb, #1 - bhi _0203AEE8 - mov r8, #0 - bl sub_0204E210 - cmp r0, #2 - bne _0203AE50 - bl sub_0204E3C8 - cmp r0, #0 - movne r8, #1 -_0203AE50: - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0 - bl sub_02056460 - cmp r0, #0 - bne _0203AEF0 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #1 - bl sub_02056460 - cmp r0, #0 - bne _0203AEF0 - cmp r8, #0 - beq _0203AEA0 - mov r0, r6, lsl #0x10 - mov r1, #2 - mov r0, r0, asr #0x10 - bl sub_02056460 - cmp r0, #0 - bne _0203AEF0 -_0203AEA0: - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl IsMainCharacter - cmp r0, #0 - bne _0203AEF0 - ldrsh r0, [r7, #4] - cmp r0, #0x214 - beq _0203AEF0 - cmp sl, #8 - bne _0203AED8 - ldrsh r0, [r7, #4] - bl sub_02054F18 - cmp r0, #0 - bne _0203AEF0 -_0203AED8: - ldrsh r0, [r7, #4] - bl IsShaymin - cmp r0, #0 - bne _0203AEF0 -_0203AEE8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0203AEF0: - add r6, r6, #1 -_0203AEF4: - cmp r6, fp - blt _0203AD88 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0203AF04: .word TEAM_MEMBER_TABLE_PTR -_0203AF08: .word 0x0000022B - arm_func_end sub_0203AD68 - -#ifndef JAPAN - arm_func_start sub_0203AF0C -sub_0203AF0C: ; 0x0203AF0C - ldr r0, _0203AF24 ; =_020AFE5C - mvn r1, #0 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bx lr - .align 2, 0 -_0203AF24: .word _020AFE5C - arm_func_end sub_0203AF0C -#endif - - arm_func_start sub_0203AF28 -sub_0203AF28: ; 0x0203AF28 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _0203B738 ; =_020AFE5C - ldr r0, [r1, #0x10] - ldr r2, [r0, #4] - add r0, r0, #0x500 - strh r2, [r0, #0xd4] - ldr r0, [r1, #8] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0203B29C -_0203AF50: ; jump table - b _0203B29C ; case 0 - b _0203AF64 ; case 1 - b _0203B050 ; case 2 - b _0203B114 ; case 3 - b _0203B1CC ; case 4 -_0203AF64: - ldr r0, _0203B73C ; =_022AADF8 - ldrb r8, [r0] - mov r0, r8 - bl sub_0203BAEC - cmp r0, #0 - mvneq r6, #0 - beq _0203B03C - ldr r0, _0203B73C ; =_022AADF8 - mov r6, #0 - ldr r5, _0203B738 ; =_020AFE5C - mov r1, #1 - mov sb, r6 - str r1, [r5, #8] - strb r8, [r0] - mov fp, r6 - mov sl, #0x44 - ldr r4, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - b _0203B02C -_0203AFAC: - add r0, r1, sb, lsl #1 - ldrsh r2, [r0, #0x12] - ldr r0, [r4] - mov r1, fp - smulbb r7, r2, sl - add r0, r0, r7 - ldrsh r0, [r0, #4] - bl GetType - cmp r8, r0 - beq _0203AFF0 - ldr r0, [r4] - mov r1, #1 - add r0, r0, r7 - ldrsh r0, [r0, #4] - bl GetType - cmp r8, r0 - bne _0203B020 -_0203AFF0: - ldr r0, [r5, #0x10] - add r2, r6, #1 - add r1, r0, r6, lsl #1 - add r3, r0, sb, lsl #1 - ldrsh r0, [r1, #0x12] - ldrsh r3, [r3, #0x12] - mov r2, r2, lsl #0x10 - mov r6, r2, asr #0x10 - strh r3, [r1, #0x12] - ldr r1, [r5, #0x10] - add r1, r1, sb, lsl #1 - strh r0, [r1, #0x12] -_0203B020: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_0203B02C: - ldr r1, [r5, #0x10] - ldr r0, [r1, #4] - cmp sb, r0 - blt _0203AFAC -_0203B03C: - ldr r0, _0203B738 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - strh r6, [r0, #0xd4] - b _0203B29C -_0203B050: - ldr r0, _0203B73C ; =_022AADF8 - ldrsh r6, [r0] - mov r0, r6 - bl sub_0203BB80 - cmp r0, #0 - mvneq r5, #0 - beq _0203B100 - ldr r0, _0203B73C ; =_022AADF8 - mov r5, #0 - ldr sb, _0203B738 ; =_020AFE5C - mov r1, #2 - mov r4, r5 - str r1, [sb, #8] - strh r6, [r0] - ldr r8, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - mov r7, #0x44 - b _0203B0F0 -_0203B094: - add r0, r1, r4, lsl #1 - ldrsh r0, [r0, #0x12] - ldr r1, [r8] - smlabb r0, r0, r7, r1 - ldrsh r0, [r0, #4] - bl GetDexNumber - cmp r6, r0 - bne _0203B0E4 - ldr r0, [sb, #0x10] - add r1, r5, #1 - add r3, r0, r5, lsl #1 - add r2, r0, r4, lsl #1 - ldrsh r0, [r3, #0x12] - ldrsh r2, [r2, #0x12] - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - strh r2, [r3, #0x12] - ldr r1, [sb, #0x10] - add r1, r1, r4, lsl #1 - strh r0, [r1, #0x12] -_0203B0E4: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_0203B0F0: - ldr r1, [sb, #0x10] - ldr r0, [r1, #4] - cmp r4, r0 - blt _0203B094 -_0203B100: - ldr r0, _0203B738 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - strh r5, [r0, #0xd4] - b _0203B29C -_0203B114: - ldr r0, _0203B73C ; =_022AADF8 - ldrb r4, [r0] - mov r0, r4 - bl sub_0203BBEC - cmp r0, #0 - mvneq r2, #0 - beq _0203B1B8 - ldr r0, _0203B73C ; =_022AADF8 - mov r2, #0 - ldr r6, _0203B738 ; =_020AFE5C - mov r3, #3 - str r3, [r6, #8] - mov r1, r2 - strb r4, [r0] - ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - mov r3, #0x44 - b _0203B1A8 -_0203B158: - add r0, r7, r1, lsl #1 - ldrsh r0, [r0, #0x12] - ldr r7, [r5] - smlabb r7, r0, r3, r7 - ldrb r7, [r7, #0x3a] - cmp r4, r7 - bne _0203B19C - ldr r8, [r6, #0x10] - add r7, r2, #1 - add sb, r8, r2, lsl #1 - ldrsh r8, [sb, #0x12] - mov r2, r7, lsl #0x10 - mov r2, r2, asr #0x10 - strh r0, [sb, #0x12] - ldr r0, [r6, #0x10] - add r0, r0, r1, lsl #1 - strh r8, [r0, #0x12] -_0203B19C: - add r0, r1, #1 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 -_0203B1A8: - ldr r7, [r6, #0x10] - ldr r0, [r7, #4] - cmp r1, r0 - blt _0203B158 -_0203B1B8: - ldr r0, _0203B738 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - strh r2, [r0, #0xd4] - b _0203B29C -_0203B1CC: - ldr r0, _0203B73C ; =_022AADF8 - ldrh sb, [r0] - mov r0, sb - bl sub_0203BC50 - cmp r0, #0 - mvneq r8, #0 - beq _0203B28C - ldr r0, _0203B73C ; =_022AADF8 - mov r8, #0 - ldr r6, _0203B738 ; =_020AFE5C - mov r1, #4 - mov r7, r8 - str r1, [r6, #8] - strh sb, [r0] - add sl, sp, #0 - ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0x44 - b _0203B27C -_0203B214: - add r0, r1, r7, lsl #1 - ldrsh r0, [r0, #0x12] - ldr r1, [r5] - smlabb r0, r0, r4, r1 - ldrsh r0, [r0, #4] - bl GetNameString - str r0, [sp] - mov r0, sl - bl sub_0202065C - cmp sb, r0 - bne _0203B270 - ldr r0, [r6, #0x10] - add r2, r8, #1 - add r1, r0, r8, lsl #1 - add r3, r0, r7, lsl #1 - ldrsh r0, [r1, #0x12] - ldrsh r3, [r3, #0x12] - mov r2, r2, lsl #0x10 - mov r8, r2, asr #0x10 - strh r3, [r1, #0x12] - ldr r1, [r6, #0x10] - add r1, r1, r7, lsl #1 - strh r0, [r1, #0x12] -_0203B270: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_0203B27C: - ldr r1, [r6, #0x10] - ldr r0, [r1, #4] - cmp r7, r0 - blt _0203B214 -_0203B28C: - ldr r0, _0203B738 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - strh r8, [r0, #0xd4] -_0203B29C: - ldr r0, _0203B738 ; =_020AFE5C - mov r8, #0 - ldr r2, [r0, #0x10] - add r0, r2, #0x500 - ldrsh r1, [r0, #0xd4] - cmp r1, #0 - ldrle r1, [r2, #4] - strleh r1, [r0, #0xd4] - mov r1, r8 -_0203B2C0: - ldr r0, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - mov r3, r1, lsl #1 - ldr r0, [r0] - mvn r2, #0 - add r0, r0, #0x9000 - ldr r0, [r0, #0x870] - ldrsh r0, [r0, r3] - cmp r0, r2 - beq _0203B35C - ldr r2, _0203B738 ; =_020AFE5C - mov r5, #0 - ldr r4, [r2, #0x10] - add r2, r4, #0x500 - ldrsh r3, [r2, #0xd4] - b _0203B354 -_0203B2FC: - add r2, r4, r5, lsl #1 - ldrsh r2, [r2, #0x12] - cmp r0, r2 - bne _0203B350 - sub r5, r5, #1 - ldr r2, _0203B738 ; =_020AFE5C - b _0203B32C -_0203B318: - ldr r3, [r2, #0x10] - add r4, r3, r5, lsl #1 - ldrsh r3, [r4, #0x12] - sub r5, r5, #1 - strh r3, [r4, #0x14] -_0203B32C: - cmp r5, r8 - bge _0203B318 - ldr r2, _0203B738 ; =_020AFE5C - mov r3, r8, lsl #1 - ldr r2, [r2, #0x10] - add r8, r8, #1 - add r2, r2, r3 - strh r0, [r2, #0x12] - b _0203B35C -_0203B350: - add r5, r5, #1 -_0203B354: - cmp r5, r3 - blt _0203B2FC -_0203B35C: - add r1, r1, #1 - cmp r1, #4 - blt _0203B2C0 - bl GetAppointedLeaderMemberIdx - bl sub_0203B7AC - cmp r0, r8 - addge r8, r8, #1 - bl GetMainCharacter3MemberIdx - bl sub_0203B7AC - cmp r0, r8 - addge r8, r8, #1 - bl GetMainCharacter2MemberIdx - bl sub_0203B7AC - cmp r0, r8 - addge r8, r8, #1 - bl GetMainCharacter1MemberIdx - bl sub_0203B7AC - cmp r0, r8 - ldr r0, _0203B738 ; =_020AFE5C - addge r8, r8, #1 - ldr r1, [r0, #0xc] - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _0203B714 -_0203B3BC: ; jump table - b _0203B714 ; case 0 - b _0203B578 ; case 1 - b _0203B648 ; case 2 - b _0203B3D0 ; case 3 - b _0203B4A8 ; case 4 -_0203B3D0: - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsh sb, [r0, #0xd4] - cmp r8, sb - bge _0203B714 - mov r0, r8, lsl #0x10 - mov sl, r0, asr #0x10 - b _0203B49C -_0203B3F0: - ldr r0, _0203B738 ; =_020AFE5C - ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0, #0x10] - ldr r3, [r1] - add r0, r0, sl, lsl #1 - ldrsh r2, [r0, #0x12] - mov r0, #0x44 - mov r1, #0 - smlabb r0, r2, r0, r3 - ldrsh r0, [r0, #4] - bl GetKeyM2NSwitch - mov r1, r8, lsl #0x10 - mov r6, r0 - mov r7, r1, asr #0x10 - ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r4, _0203B738 ; =_020AFE5C - mov fp, #0x44 - b _0203B46C -_0203B438: - ldr r0, [r4, #0x10] - ldr r2, [r5] - add r0, r0, r7, lsl #1 - ldrsh r0, [r0, #0x12] - mov r1, #0 - smlabb r0, r0, fp, r2 - ldrsh r0, [r0, #4] - bl GetKeyM2NSwitch - cmp r6, r0 - blt _0203B474 - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_0203B46C: - cmp r7, sl - blt _0203B438 -_0203B474: - ldr r0, _0203B738 ; =_020AFE5C - mov r1, r7 - ldr r0, [r0, #0x10] - mov r2, sl - add r0, r0, sl, lsl #1 - ldrsh r0, [r0, #0x12] - bl sub_0203B83C - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 -_0203B49C: - cmp sl, sb - blt _0203B3F0 - b _0203B714 -_0203B4A8: - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsh r7, [r0, #0xd4] - cmp r8, r7 - bge _0203B714 - mov r0, r8, lsl #0x10 - mov sb, r0, asr #0x10 - b _0203B56C -_0203B4C8: - ldr r4, _0203B738 ; =_020AFE5C - mov r0, r8, lsl #0x10 - ldr r1, [r4, #0x10] - mov r5, r0, asr #0x10 - add r0, r1, sb, lsl #1 - ldrsh r6, [r0, #0x12] - b _0203B50C -_0203B4E4: - ldr r1, [r4, #0x10] - mov r0, r6 - add r1, r1, r5, lsl #1 - ldrsh r1, [r1, #0x12] - bl sub_02052FF8 - cmp r0, #0 - bne _0203B514 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_0203B50C: - cmp r5, sb - blt _0203B4E4 -_0203B514: - ldr r2, _0203B738 ; =_020AFE5C - mov r6, sb - ldr r0, [r2, #0x10] - add r0, r0, sb, lsl #1 - ldrsh r0, [r0, #0x12] - b _0203B548 -_0203B52C: - ldr r3, [r2, #0x10] - sub r1, r6, #1 - add r4, r3, r6, lsl #1 - ldrsh r3, [r4, #0x10] - mov r1, r1, lsl #0x10 - mov r6, r1, asr #0x10 - strh r3, [r4, #0x12] -_0203B548: - cmp r6, r5 - bgt _0203B52C - ldr r1, _0203B738 ; =_020AFE5C - add r2, sb, #1 - ldr r3, [r1, #0x10] - mov r1, r2, lsl #0x10 - add r2, r3, r5, lsl #1 - strh r0, [r2, #0x12] - mov sb, r1, asr #0x10 -_0203B56C: - cmp sb, r7 - blt _0203B4C8 - b _0203B714 -_0203B578: - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsh sb, [r0, #0xd4] - cmp r8, sb - bge _0203B714 - mov r0, r8, lsl #0x10 - mov sl, r0, asr #0x10 - b _0203B63C -_0203B598: - ldr r0, _0203B738 ; =_020AFE5C - ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0, #0x10] - ldr r2, [r1] - add r0, r0, sl, lsl #1 - ldrsh r1, [r0, #0x12] - mov r0, #0x44 - smlabb r0, r1, r0, r2 - ldrsh r0, [r0, #4] - bl FemaleToMaleForm - mov r1, r8, lsl #0x10 - mov r7, r0 - mov r6, r1, asr #0x10 - ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r4, _0203B738 ; =_020AFE5C - mov fp, #0x44 - b _0203B60C -_0203B5DC: - ldr r0, [r4, #0x10] - ldr r1, [r5] - add r0, r0, r6, lsl #1 - ldrsh r0, [r0, #0x12] - smlabb r0, r0, fp, r1 - ldrsh r0, [r0, #4] - bl FemaleToMaleForm - cmp r7, r0 - blt _0203B614 - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0203B60C: - cmp r6, sl - blt _0203B5DC -_0203B614: - ldr r0, _0203B738 ; =_020AFE5C - mov r1, r6 - ldr r0, [r0, #0x10] - mov r2, sl - add r0, r0, sl, lsl #1 - ldrsh r0, [r0, #0x12] - bl sub_0203B83C - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 -_0203B63C: - cmp sl, sb - blt _0203B598 - b _0203B714 -_0203B648: - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsh sb, [r0, #0xd4] - cmp r8, sb - bge _0203B714 - mov r0, r8, lsl #0x10 - mov sl, r0, asr #0x10 - b _0203B70C -_0203B668: - ldr r0, _0203B738 ; =_020AFE5C - ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0, #0x10] - ldr r2, [r1] - add r0, r0, sl, lsl #1 - ldrsh r1, [r0, #0x12] - mov r0, #0x44 - smlabb r0, r1, r0, r2 - ldrb r0, [r0, #1] - bl FemaleToMaleForm - mov r1, r8, lsl #0x10 - mov r6, r0 - mov r7, r1, asr #0x10 - ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR - ldr r4, _0203B738 ; =_020AFE5C - mov fp, #0x44 - b _0203B6DC -_0203B6AC: - ldr r0, [r4, #0x10] - ldr r1, [r5] - add r0, r0, r7, lsl #1 - ldrsh r0, [r0, #0x12] - smlabb r0, r0, fp, r1 - ldrb r0, [r0, #1] - bl FemaleToMaleForm - cmp r6, r0 - bgt _0203B6E4 - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_0203B6DC: - cmp r7, sl - blt _0203B6AC -_0203B6E4: - ldr r0, _0203B738 ; =_020AFE5C - mov r1, r7 - ldr r0, [r0, #0x10] - mov r2, sl - add r0, r0, sl, lsl #1 - ldrsh r0, [r0, #0x12] - bl sub_0203B83C - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 -_0203B70C: - cmp sl, sb - blt _0203B668 -_0203B714: - ldr r0, _0203B738 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x69] - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsTextboxState3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0203B738: .word _020AFE5C -_0203B73C: .word _022AADF8 -_0203B740: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_0203AF28 - - arm_func_start sub_0203B744 -sub_0203B744: ; 0x0203B744 - stmdb sp!, {r3, lr} - bl sub_0203AA20 - ldr r1, _0203B7A8 ; =_020AFE5C - strh r0, [r1] - bl sub_0203AAB0 - ldr r1, _0203B7A8 ; =_020AFE5C - strh r0, [r1, #2] - bl sub_0203AF28 - ldr r0, _0203B7A8 ; =_020AFE5C - ldr r1, [r0, #0x10] - add r0, r1, #0x400 - add r1, r1, #0x500 - ldrsb r0, [r0, #0x68] - ldrsh r1, [r1, #0xd4] - bl sub_0203117C - ldr r0, _0203B7A8 ; =_020AFE5C - ldrsh r0, [r0, #2] - bl sub_0203AAF8 - ldr r2, _0203B7A8 ; =_020AFE5C - mov r1, r0 - ldr r0, [r2, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_02031220 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203B7A8: .word _020AFE5C - arm_func_end sub_0203B744 - - arm_func_start sub_0203B7AC -sub_0203B7AC: ; 0x0203B7AC - stmdb sp!, {r3, lr} - mvn r1, #0 - cmp r0, r1 - beq _0203B830 - ldr r1, _0203B838 ; =_020AFE5C - mov ip, #0 - ldr r2, [r1, #0x10] - add r1, r2, #0x500 - ldrsh r3, [r1, #0xd4] - b _0203B828 -_0203B7D4: - add r1, r2, ip, lsl #1 - ldrsh r1, [r1, #0x12] - cmp r0, r1 - bne _0203B824 - mov lr, ip - sub ip, ip, #1 - ldr r1, _0203B838 ; =_020AFE5C - b _0203B808 -_0203B7F4: - ldr r2, [r1, #0x10] - add r3, r2, ip, lsl #1 - ldrsh r2, [r3, #0x12] - sub ip, ip, #1 - strh r2, [r3, #0x14] -_0203B808: - cmp ip, #0 - bge _0203B7F4 - ldr r1, _0203B838 ; =_020AFE5C - ldr r1, [r1, #0x10] - strh r0, [r1, #0x12] - mov r0, lr - ldmia sp!, {r3, pc} -_0203B824: - add ip, ip, #1 -_0203B828: - cmp ip, r3 - blt _0203B7D4 -_0203B830: - mvn r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203B838: .word _020AFE5C - arm_func_end sub_0203B7AC - - arm_func_start sub_0203B83C -sub_0203B83C: ; 0x0203B83C - stmdb sp!, {r4, lr} - ldr r3, _0203B880 ; =_020AFE5C - b _0203B864 -_0203B848: - ldr r4, [r3, #0x10] - sub ip, r2, #1 - add r4, r4, r2, lsl #1 - ldrsh lr, [r4, #0x10] - mov r2, ip, lsl #0x10 - mov r2, r2, asr #0x10 - strh lr, [r4, #0x12] -_0203B864: - cmp r2, r1 - bgt _0203B848 - ldr r2, _0203B880 ; =_020AFE5C - ldr r2, [r2, #0x10] - add r1, r2, r1, lsl #1 - strh r0, [r1, #0x12] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203B880: .word _020AFE5C - arm_func_end sub_0203B83C - - arm_func_start sub_0203B884 -sub_0203B884: ; 0x0203B884 - stmdb sp!, {r3, lr} - ldr r0, _0203B918 ; =_020AFE5C - ldr r1, [r0, #0xc] - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _0203B8DC -_0203B89C: ; jump table - b _0203B8D4 ; case 0 - b _0203B8B0 ; case 1 - b _0203B8BC ; case 2 - b _0203B8C8 ; case 3 - b _0203B8D4 ; case 4 -_0203B8B0: - mov r1, #2 - str r1, [r0, #0xc] - b _0203B8DC -_0203B8BC: - mov r1, #3 - str r1, [r0, #0xc] - b _0203B8DC -_0203B8C8: - mov r1, #4 - str r1, [r0, #0xc] - b _0203B8DC -_0203B8D4: - mov r1, #1 - str r1, [r0, #0xc] -_0203B8DC: - bl sub_0203B744 - ldr r0, _0203B918 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - bl sub_0203115C - ldr r0, _0203B918 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x69] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl IsTextboxState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203B918: .word _020AFE5C - arm_func_end sub_0203B884 - - arm_func_start sub_0203B91C -sub_0203B91C: ; 0x0203B91C - stmdb sp!, {r3, lr} - ldr r0, _0203BA18 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #6] - cmp r0, r1 - bne _0203B968 - ldr r0, _0203BA1C ; =_0209C658 - mov ip, #5 - ldr r3, _0203BA20 ; =_0209C688 - mov r1, #0x13 - mov r2, #0 - str ip, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _0203BA18 ; =_020AFE5C - ldr r1, [r1, #0x10] - strb r0, [r1, #0x506] - ldmia sp!, {r3, pc} -_0203B968: - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0203BA18 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0203B9E8 -_0203B994: ; jump table - b _0203B9AC ; case 0 - b _0203B9BC ; case 1 - b _0203B9E8 ; case 2 - b _0203B9CC ; case 3 - b _0203B9DC ; case 4 - b _0203B9E8 ; case 5 -_0203B9AC: - ldr r0, _0203BA18 ; =_020AFE5C - mov r1, #1 - str r1, [r0, #0xc] - b _0203B9E8 -_0203B9BC: - ldr r0, _0203BA18 ; =_020AFE5C - mov r1, #2 - str r1, [r0, #0xc] - b _0203B9E8 -_0203B9CC: - ldr r0, _0203BA18 ; =_020AFE5C - mov r1, #3 - str r1, [r0, #0xc] - b _0203B9E8 -_0203B9DC: - ldr r0, _0203BA18 ; =_020AFE5C - mov r1, #4 - str r1, [r0, #0xc] -_0203B9E8: - ldr r0, _0203BA18 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #6] - bl CloseSimpleMenu - ldr r0, _0203BA18 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x506] - bl sub_0203B744 - bl sub_0203A6BC - ldmia sp!, {r3, pc} - .align 2, 0 -_0203BA18: .word _020AFE5C -_0203BA1C: .word _0209C658 -_0203BA20: .word _0209C688 - arm_func_end sub_0203B91C - - arm_func_start sub_0203BA24 -sub_0203BA24: ; 0x0203BA24 - stmdb sp!, {r4, lr} - sub sp, sp, #0x58 - ldr r4, _0203BA78 ; =_0209C70C - add lr, sp, #0 - mov ip, #5 -_0203BA38: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0203BA38 - ldr r2, _0203BA7C ; =_020AFE5C - ldmia r4, {r0, r1} - stmia lr, {r0, r1} - ldr r0, [r2, #0x10] - ldr r1, [r0, #0x508] - cmp r1, #0x16 - bge _0203BA70 - add r0, sp, #0 - ldr r0, [r0, r1, lsl #2] - blx r0 -_0203BA70: - add sp, sp, #0x58 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203BA78: .word _0209C70C -_0203BA7C: .word _020AFE5C - arm_func_end sub_0203BA24 - - arm_func_start sub_0203BA80 -sub_0203BA80: ; 0x0203BA80 - stmdb sp!, {r3, lr} - ldr r0, _0203BABC ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x400 - ldrsb r0, [r0, #0x68] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_020311D4 - ldr r1, _0203BABC ; =_020AFE5C - ldr r1, [r1, #0x10] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #0x12] - bl sub_0203C9A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203BABC: .word _020AFE5C - arm_func_end sub_0203BA80 - - arm_func_start sub_0203BAC0 -sub_0203BAC0: ; 0x0203BAC0 - cmp r1, #0 - blt _0203BAD0 - cmp r1, #0x11 - blt _0203BAD8 -_0203BAD0: - mov r1, #0 - b _0203BADC -_0203BAD8: - add r1, r1, #1 -_0203BADC: - ldr ip, _0203BAE8 ; =sub_02024B94 - and r1, r1, #0xff - bx ip - .align 2, 0 -_0203BAE8: .word sub_02024B94 - arm_func_end sub_0203BAC0 - - arm_func_start sub_0203BAEC -sub_0203BAEC: ; 0x0203BAEC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 - mov sl, r0 - mov r7, r8 - mov fp, #1 - mov r4, #0x44 - ldr r6, _0203BB78 ; =TEAM_MEMBER_TABLE_PTR - ldr r5, _0203BB7C ; =_020AFE5C - b _0203BB60 -_0203BB10: - add r0, r1, r8, lsl #1 - ldrsh r2, [r0, #0x12] - ldr r0, [r6] - mov r1, r7 - smulbb sb, r2, r4 - add r0, r0, sb - ldrsh r0, [r0, #4] - bl GetType - cmp sl, r0 - beq _0203BB54 - ldr r0, [r6] - mov r1, fp - add r0, r0, sb - ldrsh r0, [r0, #4] - bl GetType - cmp sl, r0 - bne _0203BB5C -_0203BB54: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0203BB5C: - add r8, r8, #1 -_0203BB60: - ldr r1, [r5, #0x10] - ldr r0, [r1, #4] - cmp r8, r0 - blt _0203BB10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0203BB78: .word TEAM_MEMBER_TABLE_PTR -_0203BB7C: .word _020AFE5C - arm_func_end sub_0203BAEC - - arm_func_start sub_0203BB80 -sub_0203BB80: ; 0x0203BB80 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r0 - mov r4, #0 - ldr r8, _0203BBE4 ; =TEAM_MEMBER_TABLE_PTR - mov r6, #0x44 - ldr r7, _0203BBE8 ; =_020AFE5C - b _0203BBCC -_0203BB9C: - add r0, r1, r4, lsl #1 - ldrsh r0, [r0, #0x12] - ldr r1, [r8] - smlabb r0, r0, r6, r1 - ldrsh r0, [r0, #4] - bl GetDexNumber - cmp r5, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_0203BBCC: - ldr r1, [r7, #0x10] - ldr r0, [r1, #4] - cmp r4, r0 - blt _0203BB9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0203BBE4: .word TEAM_MEMBER_TABLE_PTR -_0203BBE8: .word _020AFE5C - arm_func_end sub_0203BB80 - - arm_func_start sub_0203BBEC -sub_0203BBEC: ; 0x0203BBEC - stmdb sp!, {r4, lr} - ldr r1, _0203BC48 ; =_020AFE5C - ldr r2, _0203BC4C ; =TEAM_MEMBER_TABLE_PTR - ldr lr, [r1, #0x10] - ldr ip, [r2] - ldr r4, [lr, #4] - mov r3, #0 - mov r2, #0x44 - b _0203BC38 -_0203BC10: - add r1, lr, r3, lsl #1 - ldrsh r1, [r1, #0x12] - smlabb r1, r1, r2, ip - ldrb r1, [r1, #0x3a] - cmp r0, r1 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 -_0203BC38: - cmp r3, r4 - blt _0203BC10 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203BC48: .word _020AFE5C -_0203BC4C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_0203BBEC - - arm_func_start sub_0203BC50 -sub_0203BC50: ; 0x0203BC50 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r0 - mov r5, #0 - add r4, sp, #0 - ldr sb, _0203BCC4 ; =TEAM_MEMBER_TABLE_PTR - mov r7, #0x44 - ldr r8, _0203BCC8 ; =_020AFE5C - b _0203BCAC -_0203BC70: - add r0, r1, r5, lsl #1 - ldrsh r0, [r0, #0x12] - ldr r1, [sb] - smlabb r0, r0, r7, r1 - ldrsh r0, [r0, #4] - bl GetNameString - str r0, [sp] - mov r0, r4 - bl sub_0202065C - cmp r6, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_0203BCAC: - ldr r1, [r8, #0x10] - ldr r0, [r1, #4] - cmp r5, r0 - blt _0203BC70 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0203BCC4: .word TEAM_MEMBER_TABLE_PTR -_0203BCC8: .word _020AFE5C - arm_func_end sub_0203BC50 - - arm_func_start sub_0203BCCC -sub_0203BCCC: ; 0x0203BCCC - ldr r0, _0203BCE4 ; =_020AFE5C - ldr ip, _0203BCE8 ; =DigitInputMenuDrawDigits - ldr r0, [r0, #0x10] - add r0, r0, #0x1a8 - add r0, r0, #0x400 - bx ip - .align 2, 0 -_0203BCE4: .word _020AFE5C -_0203BCE8: .word DigitInputMenuDrawDigits - arm_func_end sub_0203BCCC - - arm_func_start sub_0203BCEC -sub_0203BCEC: ; 0x0203BCEC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _0203BE0C ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #7] - cmp r0, r1 - bne _0203BD3C - ldr r0, _0203BE10 ; =_0209C678 - mov ip, #6 - ldr r3, _0203BE14 ; =_0209C6B8 - mov r1, #0x13 - mov r2, #0 - str ip, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _0203BE0C ; =_020AFE5C - ldr r1, [r1, #0x10] - strb r0, [r1, #0x507] - b _0203BE04 -_0203BD3C: - bl IsSimpleMenuActive - cmp r0, #0 - bne _0203BE04 - ldr r0, _0203BE0C ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #7] - bl GetSimpleMenuResult__0202B870 - ldr r1, _0203BE0C ; =_020AFE5C - mov r0, r0, lsl #0x10 - ldr r1, [r1, #0x10] - mov r4, r0, asr #0x10 - add r0, r1, #0x500 - ldrsb r0, [r0, #7] - bl CloseSimpleMenu - ldr r0, _0203BE0C ; =_020AFE5C - mvn r2, #1 - ldr r1, [r0, #0x10] - cmp r4, #6 - strb r2, [r1, #0x507] - addls pc, pc, r4, lsl #2 - b _0203BE00 -_0203BD94: ; jump table - b _0203BDB0 ; case 0 - b _0203BE00 ; case 1 - b _0203BDC0 ; case 2 - b _0203BDD0 ; case 3 - b _0203BDE0 ; case 4 - b _0203BE00 ; case 5 - b _0203BDF0 ; case 6 -_0203BDB0: - ldr r0, [r0, #0x10] - mov r1, #7 - str r1, [r0, #0x508] - b _0203BE04 -_0203BDC0: - ldr r0, [r0, #0x10] - mov r1, #1 - str r1, [r0, #0x508] - b _0203BE04 -_0203BDD0: - ldr r0, [r0, #0x10] - mov r1, #0xa - str r1, [r0, #0x508] - b _0203BE04 -_0203BDE0: - ldr r0, [r0, #0x10] - mov r1, #0xf - str r1, [r0, #0x508] - b _0203BE04 -_0203BDF0: - ldr r0, [r0, #0x10] - mov r1, #0x14 - str r1, [r0, #0x508] - b _0203BE04 -_0203BE00: - bl sub_0203A6BC -_0203BE04: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0203BE0C: .word _020AFE5C -_0203BE10: .word _0209C678 -_0203BE14: .word _0209C6B8 - arm_func_end sub_0203BCEC - - arm_func_start sub_0203BE18 -sub_0203BE18: ; 0x0203BE18 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r3, _0203BECC ; =_020AFE5C - mvn r2, #1 - ldr r0, [r3, #0x10] - add r1, r0, #0x500 - ldrsb r0, [r1, #7] - cmp r0, r2 - bne _0203BE94 -#ifdef JAPAN - ldr r0, _0203C2B0 ; =0x000023B0 - mov r2, #0x10 - strh r0, [r1, #0x18] - ldr r1, [r3, #0x10] - mov r0, #0x11 - str r2, [r1, #0x51c] -#else - mov r0, #0x308 - strh r0, [r1, #0x18] - ldr r0, [r3, #0x10] - mov r1, #0x10 - str r1, [r0, #0x51c] - mov r0, #0x11 -#endif - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r2, [r3, #0x10] - ldr r0, _0203BED0 ; =_0209C618 - ldr r1, _0203BED4 ; =0x00001833 - ldr r3, _0203BED8 ; =sub_0203BAC0 - add r2, r2, #0x510 - bl CreateAdvancedMenu - ldr r1, _0203BECC ; =_020AFE5C - mov r2, #2 - ldr r3, [r1, #0x10] - strb r0, [r3, #0x50c] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - b _0203BEC4 -_0203BE94: - bl IsSimpleMenuActive - cmp r0, #0 - bne _0203BEC4 - ldr r0, _0203BECC ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #7] - bl CloseSimpleMenu - ldr r0, _0203BECC ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x507] -_0203BEC4: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203BECC: .word _020AFE5C -#ifdef JAPAN -_0203C2B0: .word 0x000023B0 -#endif -_0203BED0: .word _0209C618 -_0203BED4: .word 0x00001833 -_0203BED8: .word sub_0203BAC0 - arm_func_end sub_0203BE18 - - arm_func_start sub_0203BEDC -sub_0203BEDC: ; 0x0203BEDC - stmdb sp!, {r3, lr} - ldr r0, _0203BF0C ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xc] - bl IsAdvancedMenuActive2 - cmp r0, #0 - ldreq r0, _0203BF0C ; =_020AFE5C - moveq r1, #3 - ldreq r0, [r0, #0x10] - streq r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203BF0C: .word _020AFE5C - arm_func_end sub_0203BEDC - - arm_func_start sub_0203BF10 -sub_0203BF10: ; 0x0203BF10 - stmdb sp!, {r4, lr} - ldr r0, _0203C028 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xc] - cmp r0, r1 - bne _0203BF48 - bl sub_0203A6BC - ldr r0, _0203C028 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r4, pc} -_0203BF48: - bl IsAdvancedMenuActive2 - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0203C028 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xc] - bl GetAdvancedMenuResult - and r0, r0, #0xff - add r0, r0, #1 - and r4, r0, #0xff - cmp r4, #1 - blo _0203BFEC - cmp r4, #0x12 - bhs _0203BFEC - mov r0, r4 - bl sub_0203BAEC - cmp r0, #0 - bne _0203BFBC - ldr r0, _0203C028 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - bl sub_0203A658 - ldr r0, _0203C028 ; =_020AFE5C - mov r1, #4 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - b _0203C000 -_0203BFBC: - ldr r0, _0203C02C ; =_022AADF8 - ldr r1, _0203C028 ; =_020AFE5C - mov r2, #1 - str r2, [r1, #8] - strb r4, [r0] - bl sub_0203B744 - bl sub_0203A6BC - ldr r0, _0203C028 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - b _0203C000 -_0203BFEC: - bl sub_0203A6BC - ldr r0, _0203C028 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] -_0203C000: - ldr r0, _0203C028 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xc] - bl CloseAdvancedMenu - ldr r0, _0203C028 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x50c] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203C028: .word _020AFE5C -_0203C02C: .word _022AADF8 - arm_func_end sub_0203BF10 - - arm_func_start sub_0203C030 -sub_0203C030: ; 0x0203C030 - stmdb sp!, {r3, lr} - ldr r0, _0203C078 ; =_0209C648 - bl CreateDialogueBox - ldr r3, _0203C07C ; =_020AFE5C - ldr r1, _0203C080 ; =0x00000418 - ldr ip, [r3, #0x10] - ldr r2, _0203C084 ; =0x0000030B - strb r0, [ip, #0x505] - ldr r0, [r3, #0x10] - mov r3, #0 - add r0, r0, #0x500 - ldrsb r0, [r0, #5] - bl ShowStringIdInDialogueBox - ldr r0, _0203C07C ; =_020AFE5C - mov r1, #5 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C078: .word _0209C648 -_0203C07C: .word _020AFE5C -_0203C080: .word 0x00000418 -#ifdef JAPAN -_0203C084: .word 0x000023B3 -#else -_0203C084: .word 0x0000030B -#endif - arm_func_end sub_0203C030 - - arm_func_start sub_0203C088 -sub_0203C088: ; 0x0203C088 - stmdb sp!, {r3, lr} - ldr r0, _0203C0D0 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #5] - bl IsDialogueBoxActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0203C0D0 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #5] - bl sub_0202F2C4 - ldr r0, _0203C0D0 ; =_020AFE5C - mov r1, #6 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C0D0: .word _020AFE5C - arm_func_end sub_0203C088 - - arm_func_start sub_0203C0D4 -sub_0203C0D4: ; 0x0203C0D4 - stmdb sp!, {r3, lr} - ldr r0, _0203C120 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #5] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl CloseDialogueBox - ldr r0, _0203C120 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x505] - bl sub_0203A6BC - ldr r0, _0203C120 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C120: .word _020AFE5C - arm_func_end sub_0203C0D4 - - arm_func_start sub_0203C124 -sub_0203C124: ; 0x0203C124 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _0203C1E8 ; =_020AFE5C -#ifdef JAPAN - mov r3, #0x1ec - ldr r0, [r1, #0x10] - mov lr, #1 - str lr, [r0, #0x5ac] - ldr r0, [r1, #0x10] - mov r2, #3 -#else - mov lr, #1 - ldr r0, [r1, #0x10] - mov r2, #3 - str lr, [r0, #0x5ac] - ldr r0, [r1, #0x10] - mov r3, #0x1ec -#endif - str r2, [r0, #0x5b8] - ldr r0, [r1, #0x10] - mov ip, #0x50 - str lr, [r0, #0x5b0] - ldr r0, [r1, #0x10] - mov r2, #0x16 - str r3, [r0, #0x5b4] - ldr r0, [r1, #0x10] -#ifdef JAPAN - add r3, r3, #0x21c0 -#else - mov r3, #0x304 -#endif - str ip, [r0, #0x5c8] - ldr r0, [r1, #0x10] - mov ip, #0x10 - str r2, [r0, #0x5cc] - ldr r0, [r1, #0x10] - mov r2, #0 - add r0, r0, #0x500 - strh r3, [r0, #0xe0] - ldr r3, [r1, #0x10] - ldr r0, _0203C1EC ; =_0209C628 - str ip, [r3, #0x5e4] - str r2, [sp] - str r2, [sp, #4] - ldr r2, [r1, #0x10] - ldr r1, _0203C1F0 ; =0x00401807 - add r2, r2, #0x1d8 - ldr r3, _0203C1F4 ; =sub_0203BCCC - add r2, r2, #0x400 - bl CreateAdvancedTextBox - ldr r1, _0203C1E8 ; =_020AFE5C - mov r2, #8 - ldr r3, [r1, #0x10] - strb r0, [r3, #0x5bc] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - ldr r0, [r1, #0x10] - add r0, r0, #0x1a8 - add r0, r0, #0x400 - bl DigitInputMenuInitDigits - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C1E8: .word _020AFE5C -_0203C1EC: .word _0209C628 -_0203C1F0: .word 0x00401807 -_0203C1F4: .word sub_0203BCCC - arm_func_end sub_0203C124 - - arm_func_start sub_0203C1F8 -sub_0203C1F8: ; 0x0203C1F8 - stmdb sp!, {r3, lr} - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x1a8 - add r0, r0, #0x400 - bl DigitInputMenuFrameUpdate - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0203C21C: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _0203C22C ; case 1 - b _0203C2F4 ; case 2 - b _0203C244 ; case 3 -_0203C22C: - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xbc] - bl SetAdvancedTextBoxField0x1C2 - ldmia sp!, {r3, pc} -_0203C244: - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xbc] - bl SetAdvancedTextBoxState5 - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xbc] - bl CloseAdvancedTextBox - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - ldr r0, [r0, #0x5a8] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_0203BB80 - cmp r0, #0 - bne _0203C2BC - ldr r0, _0203C324 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - bl sub_0203A658 - ldr r0, _0203C324 ; =_020AFE5C - mov r1, #4 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} -_0203C2BC: - ldr r0, _0203C324 ; =_020AFE5C - mov r1, #2 - str r1, [r0, #8] - ldr r1, [r0, #0x10] - ldr r0, _0203C328 ; =_022AADF8 - ldr r1, [r1, #0x5a8] - strh r1, [r0] - bl sub_0203B744 - bl sub_0203A6BC - ldr r0, _0203C324 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} -_0203C2F4: - mov r0, #1 - bl PlaySeVolumeWrapper - ldr r0, _0203C324 ; =_020AFE5C - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xbc] - bl SetAdvancedTextBoxState5 - ldr r0, _0203C324 ; =_020AFE5C - mov r1, #9 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C324: .word _020AFE5C -_0203C328: .word _022AADF8 - arm_func_end sub_0203C1F8 - - arm_func_start sub_0203C32C -sub_0203C32C: ; 0x0203C32C - stmdb sp!, {r3, lr} - ldr r0, _0203C378 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - add r0, r0, #0x500 - ldrsb r0, [r0, #0xbc] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl CloseAdvancedTextBox - ldr r0, _0203C378 ; =_020AFE5C - mvn r1, #1 - ldr r0, [r0, #0x10] - strb r1, [r0, #0x5bc] - bl sub_0203A6BC - ldr r0, _0203C378 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C378: .word _020AFE5C - arm_func_end sub_0203C32C - - arm_func_start sub_0203C37C -sub_0203C37C: ; 0x0203C37C - stmdb sp!, {r3, lr} - bl sub_0203A658 - ldr r1, _0203C3A8 ; =_020AFE5C - mov r3, #0xa - ldr r0, [r1, #0x10] - mov r2, #0xb - add r0, r0, #0x800 - strh r3, [r0, #0x9e] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C3A8: .word _020AFE5C - arm_func_end sub_0203C37C - - arm_func_start sub_0203C3AC -sub_0203C3AC: ; 0x0203C3AC - stmdb sp!, {r3, lr} - ldr r1, _0203C404 ; =_020AFE5C - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r2, [r0, #0x9e] - sub r2, r2, #1 - strh r2, [r0, #0x9e] - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r0, [r0, #0x9e] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mov r3, r1 - mov r0, #9 - bl ShowKeyboard - ldr r0, _0203C404 ; =_020AFE5C - mov r1, #0xc - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C404: .word _020AFE5C - arm_func_end sub_0203C3AC - - arm_func_start sub_0203C408 -sub_0203C408: ; 0x0203C408 - stmdb sp!, {r4, lr} - bl GetKeyboardStatus - cmp r0, #3 - bne _0203C484 - bl GetKeyboardStringResult - ldrb r0, [r0] - bl sub_020251F0 - mov r4, r0 - bl sub_0203BC50 - cmp r0, #0 - bne _0203C458 - ldr r0, _0203C4B0 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - ldr r0, _0203C4B0 ; =_020AFE5C - mov r1, #0x15 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r4, pc} -_0203C458: - ldr r0, _0203C4B4 ; =_022AADF8 - ldr r1, _0203C4B0 ; =_020AFE5C - mov r2, #4 - str r2, [r1, #8] - strh r4, [r0] - bl sub_0203B744 - ldr r0, _0203C4B0 ; =_020AFE5C - mov r1, #0xd - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r4, pc} -_0203C484: - cmp r0, #2 - ldmneia sp!, {r4, pc} - ldr r0, _0203C4B0 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - ldr r0, _0203C4B0 ; =_020AFE5C - mov r1, #0xd - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203C4B0: .word _020AFE5C -_0203C4B4: .word _022AADF8 - arm_func_end sub_0203C408 - - arm_func_start sub_0203C4B8 -sub_0203C4B8: ; 0x0203C4B8 - stmdb sp!, {r3, lr} - bl sub_02037468 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _0203C4EC ; =_020AFE5C - mov r3, #0xa - ldr r0, [r1, #0x10] - mov r2, #0xe - add r0, r0, #0x800 - strh r3, [r0, #0x9e] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C4EC: .word _020AFE5C - arm_func_end sub_0203C4B8 - - arm_func_start sub_0203C4F0 -sub_0203C4F0: ; 0x0203C4F0 - stmdb sp!, {r3, lr} - ldr r1, _0203C538 ; =_020AFE5C - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r2, [r0, #0x9e] - sub r2, r2, #1 - strh r2, [r0, #0x9e] - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r0, [r0, #0x9e] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl sub_0203A6BC - ldr r0, _0203C538 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C538: .word _020AFE5C - arm_func_end sub_0203C4F0 - - arm_func_start sub_0203C53C -sub_0203C53C: ; 0x0203C53C - stmdb sp!, {r3, lr} - bl sub_0203A658 - ldr r1, _0203C568 ; =_020AFE5C - mov r3, #0xa - ldr r0, [r1, #0x10] - mov r2, #0x10 - add r0, r0, #0x800 - strh r3, [r0, #0x9e] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C568: .word _020AFE5C - arm_func_end sub_0203C53C - - arm_func_start sub_0203C56C -sub_0203C56C: ; 0x0203C56C - stmdb sp!, {r3, lr} - ldr r1, _0203C5C4 ; =_020AFE5C - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r2, [r0, #0x9e] - sub r2, r2, #1 - strh r2, [r0, #0x9e] - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r0, [r0, #0x9e] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mov r3, r1 - mov r0, #4 - bl ShowKeyboard - ldr r0, _0203C5C4 ; =_020AFE5C - mov r1, #0x11 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C5C4: .word _020AFE5C - arm_func_end sub_0203C56C - - arm_func_start sub_0203C5C8 -sub_0203C5C8: ; 0x0203C5C8 - stmdb sp!, {r3, lr} - sub sp, sp, #0x40 - bl GetKeyboardStatus - cmp r0, #3 - bne _0203C650 - bl GetKeyboardStringResult - mov r1, r0 - add r0, sp, #0 - bl StrcpySimple - ldrb r0, [sp] - bl sub_0203BBEC - cmp r0, #0 - bne _0203C620 - ldr r0, _0203C680 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - ldr r0, _0203C680 ; =_020AFE5C - mov r1, #0x15 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - b _0203C678 -_0203C620: - ldrb r2, [sp] - ldr r0, _0203C684 ; =_022AADF8 - ldr r1, _0203C680 ; =_020AFE5C - mov r3, #3 - str r3, [r1, #8] - strb r2, [r0] - bl sub_0203B744 - ldr r0, _0203C680 ; =_020AFE5C - mov r1, #0x12 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - b _0203C678 -_0203C650: - cmp r0, #2 - bne _0203C678 - ldr r0, _0203C680 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - ldr r0, _0203C680 ; =_020AFE5C - mov r1, #0x12 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] -_0203C678: - add sp, sp, #0x40 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C680: .word _020AFE5C -_0203C684: .word _022AADF8 - arm_func_end sub_0203C5C8 - - arm_func_start sub_0203C688 -sub_0203C688: ; 0x0203C688 - stmdb sp!, {r3, lr} - bl sub_02037468 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _0203C6BC ; =_020AFE5C - mov r3, #0xa - ldr r0, [r1, #0x10] - mov r2, #0x13 - add r0, r0, #0x800 - strh r3, [r0, #0x9e] - ldr r0, [r1, #0x10] - str r2, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C6BC: .word _020AFE5C - arm_func_end sub_0203C688 - - arm_func_start sub_0203C6C0 -sub_0203C6C0: ; 0x0203C6C0 - stmdb sp!, {r3, lr} - ldr r1, _0203C708 ; =_020AFE5C - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r2, [r0, #0x9e] - sub r2, r2, #1 - strh r2, [r0, #0x9e] - ldr r0, [r1, #0x10] - add r0, r0, #0x800 - ldrsh r0, [r0, #0x9e] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl sub_0203A6BC - ldr r0, _0203C708 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C708: .word _020AFE5C - arm_func_end sub_0203C6C0 - - arm_func_start sub_0203C70C -sub_0203C70C: ; 0x0203C70C - stmdb sp!, {r3, lr} - ldr r0, _0203C738 ; =_020AFE5C - mov r1, #0 - str r1, [r0, #8] - bl sub_0203B744 - bl sub_0203A6BC - ldr r0, _0203C738 ; =_020AFE5C - mov r1, #0 - ldr r0, [r0, #0x10] - str r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C738: .word _020AFE5C - arm_func_end sub_0203C70C - - arm_func_start sub_0203C73C -sub_0203C73C: ; 0x0203C73C - stmdb sp!, {r3, lr} - bl sub_02037468 - cmp r0, #0 - ldrne r0, _0203C75C ; =_020AFE5C - movne r1, #4 - ldrne r0, [r0, #0x10] - strne r1, [r0, #0x508] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C75C: .word _020AFE5C - arm_func_end sub_0203C73C diff --git a/asm/main_02037570.s b/asm/main_02037570.s new file mode 100644 index 00000000..4454f5e8 --- /dev/null +++ b/asm/main_02037570.s @@ -0,0 +1,6642 @@ + .include "asm/macros.inc" + .include "main_02037570.inc" + + .text + + arm_func_start sub_02037570 +sub_02037570: ; 0x02037570 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0x1e8 + mov r1, #8 + mov r4, r3 + bl MemAlloc + ldr r2, _020376E0 ; =_020AFDF0 + mov r1, #0x1e8 + str r0, [r2] + bl MemZero + ldr r0, _020376E0 ; =_020AFDF0 + mov r2, #1 + ldr r1, [r0] + cmp r5, #0 + strb r2, [r1, #0x1a4] + bne _020375DC + ldr r1, [r0] + mov r2, #5 + str r2, [r1, #0xc] + ldr r1, [r0] + mov r2, #0x36 + strb r2, [r1, #0x1b] + ldr r0, [r0] + ldrh r1, [sp, #0x10] + add r0, r0, #0x100 + strh r1, [r0, #0xa6] + b _0203760C +_020375DC: + cmp r5, #1 + bne _0203760C + ldr r1, [r0] + mov r2, #6 + str r2, [r1, #0xc] + ldr r1, [r0] + mov r2, #0x22 + strb r2, [r1, #0x1b] + ldr r0, [r0] + ldrh r1, [sp, #0x10] + add r0, r0, #0x100 + strh r1, [r0, #0xa6] +_0203760C: + ldr r0, _020376E0 ; =_020AFDF0 + mov r3, #0 + ldr r1, [r0] + str r3, [r1, #0x134] + ldr r2, [r0] + add r1, r2, #0xfc + str r1, [r2, #0xf8] + mov r2, r3 +_0203762C: + ldr r1, [r0] + ldr r1, [r1, #0xf8] + strb r2, [r1, r3] + add r3, r3, #1 + cmp r3, #0x36 + blt _0203762C + ldr r0, _020376E0 ; =_020AFDF0 + mov r1, r4 + ldr r0, [r0] + ldrb r2, [r0, #0x1b] + ldr r0, [r0, #0xf8] + bl MemcpySimple + ldr r0, _020376E0 ; =_020AFDF0 + mov r4, #0 + ldr r2, [r0] + ldrb r1, [r2, #0x1b] + b _02037684 +_02037670: + ldr r0, [r2, #0xf8] + ldrb r0, [r0, r4] + cmp r0, #0 + beq _0203768C + add r4, r4, #1 +_02037684: + cmp r4, r1 + blt _02037670 +_0203768C: + mov r2, #0 + ldr r0, _020376E0 ; =_020AFDF0 + b _020376A4 +_02037698: + ldr r1, [r3, #0xf8] + strb r2, [r1, r4] + add r4, r4, #1 +_020376A4: + ldr r3, [r0] + ldrb r1, [r3, #0x1b] + cmp r4, r1 + blt _02037698 + ldr r0, _020376E4 ; =_0209B30C + ldr r1, _020376E8 ; =sub_02037F58 + bl CreateTextBox + ldr r1, _020376E0 ; =_020AFDF0 + mov r2, #0 + ldr r3, [r1] + strb r0, [r3] + ldr r1, [r1] + mov r0, #1 + str r2, [r1, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020376E0: .word _020AFDF0 +_020376E4: .word _0209B30C +_020376E8: .word sub_02037F58 + arm_func_end sub_02037570 + + arm_func_start sub_020376EC +sub_020376EC: ; 0x020376EC + stmdb sp!, {r3, lr} + ldr r0, _02037774 ; =_020AFDF0 + ldr r0, [r0] + cmp r0, #0 + beq _0203776C + ldrsh r1, [r0, #8] + cmp r1, #0 + beq _02037720 + cmp r1, #1 + beq _0203772C + cmp r1, #0xc + beq _02037738 + b _02037750 +_02037720: + ldrsb r0, [r0] + bl sub_0202F954 + b _02037750 +_0203772C: + ldrsb r0, [r0] + bl CloseTextBox + b _02037750 +_02037738: + bl MemFree + ldr r0, _02037774 ; =_020AFDF0 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} +_02037750: + ldr r1, _02037774 ; =_020AFDF0 + mov r0, #0 + ldr r2, [r1] + ldrsh r1, [r2, #8] + add r1, r1, #1 + strh r1, [r2, #8] + ldmia sp!, {r3, pc} +_0203776C: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02037774: .word _020AFDF0 + arm_func_end sub_020376EC + + arm_func_start sub_02037778 +sub_02037778: ; 0x02037778 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x40 + ldr r0, _02037C28 ; =_020AFDF0 + ldr r3, [r0] +#ifdef JAPAN + ldr r1, [r0, #8] +#else + ldr r1, [r0, #4] +#endif + ldr r2, [r3, #4] + cmp r2, r1 + beq _020377B0 + ldr r0, _02037C2C ; =_0209B48C + bl Debug_Print0 + ldr r0, _02037C28 ; =_020AFDF0 + ldr r3, [r0] + ldr r1, [r3, #4] +#ifdef JAPAN + str r1, [r0, #8] +#else + str r1, [r0, #4] +#endif +_020377B0: + ldr r0, [r3, #4] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02037C1C +_020377C0: ; jump table + b _020377E8 ; case 0 + b _020377F4 ; case 1 + b _02037858 ; case 2 + b _0203799C ; case 3 + b _02037C1C ; case 4 + b _02037A5C ; case 5 + b _02037AA0 ; case 6 + b _02037C1C ; case 7 + b _02037AEC ; case 8 + b _02037B24 ; case 9 +_020377E8: + mov r0, #1 + str r0, [r3, #4] + b _02037C1C +_020377F4: + bl GetKeyboardStatus + cmp r0, #3 + bne _02037C1C + ldr r0, _02037C28 ; =_020AFDF0 + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0203784C +_02037818: ; jump table + b _02037840 ; case 0 + b _02037840 ; case 1 + b _02037840 ; case 2 + b _02037840 ; case 3 + b _02037840 ; case 4 + b _02037840 ; case 5 + b _02037840 ; case 6 + b _02037840 ; case 7 + b _0203784C ; case 8 + b _02037840 ; case 9 +_02037840: + mov r0, #2 + str r0, [r1, #4] + b _02037C1C +_0203784C: + mov r0, #2 + str r0, [r1, #4] + b _02037C1C +_02037858: + cmp r3, #0 + beq _02037924 + ldrsh r0, [r3, #8] + cmp r0, #3 + beq _02037880 + cmp r0, #4 + beq _020378B8 + cmp r0, #5 + beq _02037900 + b _02037908 +_02037880: + ldrsb r0, [r3] + bl sub_0202F954 + ldr r0, _02037C28 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_0202F954 + ldr r0, _02037C28 ; =_020AFDF0 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _02037908 + bl sub_0202F954 + b _02037908 +_020378B8: + ldrsb r0, [r3] + bl CloseTextBox + ldr r0, _02037C28 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl CloseTextBox + ldr r0, _02037C28 ; =_020AFDF0 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _02037908 + bl CloseTextBox + ldr r0, _02037C28 ; =_020AFDF0 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #2] + b _02037908 +_02037900: + mov r2, #1 + b _02037928 +_02037908: + ldr r0, _02037C28 ; =_020AFDF0 + mov r2, #0 + ldr r1, [r0] + ldrsh r0, [r1, #8] + add r0, r0, #1 + strh r0, [r1, #8] + b _02037928 +_02037924: + mov r2, #1 +_02037928: + cmp r2, #0 + beq _02037C1C + ldr r0, _02037C28 ; =_020AFDF0 + ldr r2, [r0] + ldr r1, [r2, #4] + add r1, r1, #1 + str r1, [r2, #4] + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0203798C +_02037958: ; jump table + b _02037980 ; case 0 + b _02037980 ; case 1 + b _02037980 ; case 2 + b _02037980 ; case 3 + b _02037980 ; case 4 + b _02037980 ; case 5 + b _02037980 ; case 6 + b _02037980 ; case 7 + b _0203798C ; case 8 + b _02037980 ; case 9 +_02037980: + mov r0, #5 + str r0, [r1, #4] + b _02037C1C +_0203798C: + ldr r0, [r1, #4] + add r0, r0, #1 + str r0, [r1, #4] + b _02037C1C +_0203799C: + ldr r0, [r3, #0xc] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02037A54 +_020379AC: ; jump table + b _020379D4 ; case 0 + b _02037A40 ; case 1 + b _02037A54 ; case 2 + b _02037A54 ; case 3 + b _02037A54 ; case 4 + b _02037A54 ; case 5 + b _02037A54 ; case 6 + b _02037A54 ; case 7 + b _02037A54 ; case 8 + b _02037A54 ; case 9 +_020379D4: + bl GetMainCharacter1MemberIdx + mov r5, r0 + bl GetActiveRosterIndex + mov r4, r0 + mov r0, r5 + bl GetTeamMember + mov r5, r0 + mov r0, r4 + bl GetActiveTeamMember + ldr r1, _02037C28 ; =_020AFDF0 + mov r4, r0 + ldr r1, [r1] + add r0, r5, #0x3a + add r1, r1, #0xfc + mov r2, #0xa + bl StrncpySimple + mov r0, #0x3f + add r1, r5, #0x3a + mov r2, #0xa + bl SaveScriptVariableValueBytes + cmp r4, #0 + beq _02037A54 + add r0, r4, #0x5e + add r1, r5, #0x3a + mov r2, #0xa + bl StrncpySimple + b _02037A54 +_02037A40: + bl ov11_0230D71C + ldr r0, _02037C28 ; =_020AFDF0 + ldr r0, [r0] + add r0, r0, #0xfc + bl SetMainTeamName +_02037A54: + mov r0, #4 + b _02037C20 +_02037A5C: + add r0, sp, #0 + add r1, r3, #0xfc + mov r2, #0x40 + bl StrncpySimpleNoPadSafe + add r0, sp, #0 + bl sub_0203909C + ldr r0, _02037C28 ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _02037A8C + bl sub_02039304 +_02037A8C: + ldr r0, _02037C28 ; =_020AFDF0 + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #4] + b _02037C1C +_02037AA0: + bl sub_0203931C + cmp r0, #0 + beq _02037AB8 + cmp r0, #1 + beq _02037ACC + b _02037C1C +_02037AB8: + ldr r0, _02037C28 ; =_020AFDF0 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] + b _02037C1C +_02037ACC: + ldr r0, _02037C28 ; =_020AFDF0 + mov r3, #9 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strh r1, [r0, #8] + b _02037C1C +_02037AEC: + bl sub_02039218 + cmp r0, #0 + beq _02037C1C + ldr r0, _02037C28 ; =_020AFDF0 + ldr r0, [r0] + ldrb r0, [r0, #0x11] + cmp r0, #0 + bne _02037B10 + bl ReturnScriptMenuResultZero +_02037B10: + ldr r0, _02037C28 ; =_020AFDF0 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + b _02037C1C +_02037B24: + bl sub_02039218 + cmp r0, #0 + beq _02037C1C + ldr r2, _02037C28 ; =_020AFDF0 + ldr r3, [r2] + ldr r0, [r3, #0xc] + cmp r0, #5 + cmpne r0, #6 + bne _02037B64 + ldr r0, _02037C30 ; =_0209B2FC + ldr r1, _02037C34 ; =sub_02037F58 + bl CreateTextBox + ldr r1, _02037C28 ; =_020AFDF0 + ldr r1, [r1] + strb r0, [r1] + b _02037BF8 +_02037B64: + ldrb r1, [r3, #0x17] + mov ip, #6 + ldr r0, _02037C38 ; =_0209B2EC + strb r1, [r3, #0x16] + ldr r3, [r2] + ldr r1, _02037C34 ; =sub_02037F58 + strb ip, [r3, #0x18] + ldr r2, [r2] + mov r3, #0 + strb r3, [r2, #0x15] + bl CreateTextBox + ldr r1, _02037C28 ; =_020AFDF0 + ldr r2, [r1] + strb r0, [r2] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #4 + cmpne r0, #9 + mvneq r0, #1 + streqb r0, [r1, #2] + beq _02037BD0 + ldr r0, _02037C3C ; =_0209B31C + ldr r1, _02037C40 ; =sub_02037C78 + bl CreateTextBox + ldr r1, _02037C28 ; =_020AFDF0 + ldr r1, [r1] + strb r0, [r1, #2] +_02037BD0: + bl sub_02038A54 + ldr r1, _02037C28 ; =_020AFDF0 + ldr r2, [r1] + strb r0, [r2, #0x1c] + ldr r2, [r1] + ldrb r1, [r2, #0x1c] + ldrb r0, [r2, #0x1b] + cmp r1, r0 + subeq r0, r1, #1 + streqb r0, [r2, #0x1c] +_02037BF8: + ldr r0, _02037C44 ; =_0209B2DC + ldr r1, _02037C48 ; =sub_02037CD8 + bl CreateTextBox + ldr r1, _02037C28 ; =_020AFDF0 + mov r2, #0 + ldr r3, [r1] + strb r0, [r3, #1] + ldr r0, [r1] + str r2, [r0, #4] +_02037C1C: + mov r0, #1 +_02037C20: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02037C28: .word _020AFDF0 +_02037C2C: .word _0209B48C +_02037C30: .word _0209B2FC +_02037C34: .word sub_02037F58 +_02037C38: .word _0209B2EC +_02037C3C: .word _0209B31C +_02037C40: .word sub_02037C78 +_02037C44: .word _0209B2DC +_02037C48: .word sub_02037CD8 + arm_func_end sub_02037778 + + arm_func_start sub_02037C4C +sub_02037C4C: ; 0x02037C4C + stmdb sp!, {r3, lr} + ldr r0, _02037C74 ; =_020AFDF0 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02037C74 ; =_020AFDF0 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02037C74: .word _020AFDF0 + arm_func_end sub_02037C4C + + arm_func_start sub_02037C78 +sub_02037C78: ; 0x02037C78 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02027B1C + mov r1, #0 + ldr r3, _02037CA4 ; =0x00000122 + mov r0, r4 + mov r2, r1 + bl AppendStandardStringToMission + mov r0, r4 + bl UpdateWindow + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_02037CA4: .word 0x000031D4 +#else +_02037CA4: .word 0x00000122 +#endif + arm_func_end sub_02037C78 + + arm_func_start sub_02037CA8 +sub_02037CA8: ; 0x02037CA8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02027B1C + mov r1, #0 + ldr r3, _02037CD4 ; =0x00000123 + mov r0, r4 + mov r2, r1 + bl AppendStandardStringToMission + mov r0, r4 + bl UpdateWindow + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_02037CD4: .word 0x000031D5 +#else +_02037CD4: .word 0x00000123 +#endif + arm_func_end sub_02037CA8 + + arm_func_start sub_02037CD8 +sub_02037CD8: ; 0x02037CD8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 +#ifdef JAPAN + mov r7, r0 + bl sub_02027B1C + mov r4, #0 +#else + ldr r1, _02037F10 ; =_020AFDF0 + mov r7, r0 + ldr r0, [r1] + mov r4, #0 + ldrb r0, [r0, #0x16] + cmp r0, #0 + moveq r4, #1 + beq _02037D14 + cmp r0, #1 + moveq r4, #1 + beq _02037D14 + cmp r0, #2 + moveq r4, #3 +_02037D14: + mov r0, r7 + bl sub_02027B1C + b _02037EF8 +#endif +_02037D20: + ldr r2, _02037F10 ; =_020AFDF0 + mov r0, #0xa + ldr r1, [r2] + mul r6, r4, r0 + ldrb r0, [r1, #0x16] +#ifdef JAPAN + ldr r2, [r2, #4] +#else + ldr r2, [r2, #8] +#endif + ldr r3, _02037F14 ; =0x00000111 + ldr r2, [r2, r0, lsl #2] + add r2, r2, r6 + ldrh r5, [r2, #8] + cmp r5, r3 + cmpne r5, #0x110 + beq _02037EF4 + add r2, r5, #0xfe + add r2, r2, #0xfe00 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + cmp r2, #7 + bhi _02037E0C +#ifdef JAPAN + cmp r0, #2 +#else + cmp r0, #0 +#endif + moveq ip, #0x104 + beq _02037D84 + cmp r0, #1 +#ifdef JAPAN + subeq ip, r3, #0xe + beq _02037D84 + cmp r0, #0 + subeq ip, r3, #0xf +#else + subeq ip, r3, #0xc +#endif + movne ip, #0 +_02037D84: + cmp r5, #0x100 + blo _02037EA8 + ldr r0, _02037F18 ; =0x00000109 + cmp r5, r0 + bhi _02037EA8 + mov lr, #0 + ldr r3, _02037F1C ; =KEYBOARD_STRING_IDS + mov r0, #6 + b _02037DF4 +_02037DA8: + cmp r5, r8 + bne _02037DE8 + ldr r0, _02037F18 ; =0x00000109 + cmp r5, r0 + bne _02037DD0 +#ifdef JAPAN + ldrb r0, [r1, #0x15] + cmp r0, #0 + ldrne r1, _020381EC ; =0x000031D8 + ldreq r1, _020381F0 ; =0x000031D9 +#else + ldrb r1, [r1, #0x15] + cmp r1, #0 + addne r1, r0, #0x1d + addeq r1, r0, #0x1e +#endif + b _02037DDC +_02037DD0: + cmp ip, r5 + ldreqh r1, [r2, #4] + ldrneh r1, [r2, #2] +_02037DDC: + add r0, sp, #0 + bl GetStringFromFileVeneer + b _02037EA8 +_02037DE8: + add r2, lr, #1 + mov r2, r2, lsl #0x10 + mov lr, r2, asr #0x10 +_02037DF4: + smulbb r2, lr, r0 + ldrh r8, [r3, r2] + add r2, r3, r2 + cmp r8, #0 + bne _02037DA8 + b _02037EA8 +_02037E0C: + ldr r1, [r1, #0xc] + cmp r1, #8 + beq _02037E38 +#ifdef JAPAN + cmp r0, #3 +#else + cmp r0, #2 +#endif + bne _02037E38 + cmp r4, #5 + ble _02037E38 + and r0, r5, #0xff + bl sub_0204DA1C + cmp r0, #0xff +#ifdef JAPAN + bne _02037E38 + ldr r1, _020381F4 ; =_020B12A0_JP + add r0, sp, #0 + ldr r2, [r1, r5, lsl #2] + ldr r1, _020381F8 ; =_0209B4A4 + bl SprintfStatic__02037F30 + b _02037EA8 +_02037E38: + ldr r1, _020381F4 ; =_020B12A0_JP + add r0, sp, #0 + ldr r1, [r1, r5, lsl #2] + bl strcpy +#else + beq _02037E5C +_02037E38: + ldr r0, _02037F10 ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #9 + bne _02037E84 + cmp r5, #0x41 + blo _02037E5C + cmp r5, #0x5a + bls _02037E84 +_02037E5C: + cmp r5, #0x20 + add r0, sp, #0 + bne _02037E74 + ldr r1, _02037F20 ; =_0209B4A4 + bl SprintfStatic__02037F30 + b _02037EA8 +_02037E74: + ldr r1, _02037F24 ; =_0209B4AC + mov r2, r5 + bl SprintfStatic__02037F30 + b _02037EA8 +_02037E84: + cmp r5, #0x20 + add r0, sp, #0 + bne _02037E9C + ldr r1, _02037F28 ; =_0209B4B8 + bl SprintfStatic__02037F30 + b _02037EA8 +_02037E9C: + ldr r1, _02037F2C ; =_0209B4C0 + mov r2, r5 + bl SprintfStatic__02037F30 +#endif +_02037EA8: + add r0, sp, #0 + bl sub_020265A8 + cmp r0, #0xc + rsble r0, r0, #0xc + movgt r1, #0 + addle r0, r0, r0, lsr #31 + movle r1, r0, asr #1 + ldr r0, _02037F10 ; =_020AFDF0 + add r3, sp, #0 +#ifdef JAPAN + ldmia r0, {r2, r5} +#else + ldr r2, [r0] + ldr r5, [r0, #8] +#endif + ldrb r2, [r2, #0x16] + mov r0, r7 + ldr r2, [r5, r2, lsl #2] + add r2, r2, r6 + ldrb r5, [r2, #4] + ldrb r2, [r2, #5] + add r1, r1, r5 + bl DrawTextInWindow +_02037EF4: + add r4, r4, #1 +_02037EF8: + cmp r4, #0x54 +#ifdef JAPAN + blt _02037D20 +#else + bne _02037D20 +#endif + mov r0, r7 + bl UpdateWindow + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02037F10: .word _020AFDF0 +_02037F14: .word 0x00000111 +_02037F18: .word 0x00000109 +_02037F1C: .word KEYBOARD_STRING_IDS +#ifdef JAPAN +_020381EC: .word 0x000031D8 +_020381F0: .word 0x000031D9 +_020381F4: .word _020B12A0_JP +_020381F8: .word _0209B4A4 +#else +_02037F20: .word _0209B4A4 +_02037F24: .word _0209B4AC +_02037F28: .word _0209B4B8 +_02037F2C: .word _0209B4C0 +#endif + arm_func_end sub_02037CD8 + + arm_func_start SprintfStatic__02037F30 +SprintfStatic__02037F30: ; 0x02037F30 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02037F30 + + arm_func_start sub_02037F58 +sub_02037F58: ; 0x02037F58 +#ifdef JAPAN + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x108 +#else + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x114 +#endif + ldr r1, _020383DC ; =_0209B288 + mov sb, r0 + ldrb r2, [r1] + ldrb r0, [r1, #1] +#ifdef JAPAN + strb r2, [sp, #4] + strb r0, [sp, #5] +#else + mov sl, #0 + strb r2, [sp, #0x10] + strb r0, [sp, #0x11] +#endif + bl sub_02038ADC + mov r0, sb + bl sub_02027B1C + ldr r0, _020383E0 ; =_020AFDF0 + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #7 + addeq r0, r1, #0x100 +#ifdef JAPAN + moveq r1, #0 +#else + moveq r1, sl +#endif + streqh r1, [r0, #0xa6] + ldr r0, _020383E0 ; =_020AFDF0 + ldr r0, [r0] + add r0, r0, #0x100 + ldrh r1, [r0, #0xa6] + cmp r1, #0 + beq _02037FF8 +#ifdef JAPAN + add r0, sp, #6 +#else + add r0, sp, #0x12 +#endif + bl GetStringFromFileVeneer + mov r0, sb + bl GetWindow + mov r4, r0 +#ifdef JAPAN + add r0, sp, #6 +#else + add r0, sp, #0x12 +#endif + bl sub_020265A8 + ldrb r1, [r4, #6] + mov r2, #0 +#ifdef JAPAN + add r3, sp, #6 +#else + add r3, sp, #0x12 +#endif + rsb r0, r0, r1, lsl #3 + add r0, r0, r0, lsr #31 + mov r1, r0, asr #1 + mov r0, sb + bl DrawTextInWindow +_02037FF8: + ldr r0, _020383E0 ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #5 + moveq r8, #0x36 + movne r8, #0x22 + cmp r0, #7 + moveq r8, #0x36 + cmp r0, #8 + ldr r0, _020383E0 ; =_020AFDF0 + moveq r8, #0x36 + ldr r0, [r0] + ldrb r5, [r0, #0x1b] + ldr r4, [r0, #0xf8] + bl sub_02038B5C + cmp r0, #0 + beq _02038054 + mov r0, r4 + mov r1, r5 + bl sub_02038A8C +#ifdef JAPAN +_02038054: +#else + cmp r0, #0x3c + movgt r0, #1 + bgt _02038058 +_02038054: + mov r0, #0 +_02038058: + cmp r0, #0 + movne sl, #1 +#endif + mov r6, #0 + ldr r4, _020383E4 ; =_0209B3B4 + ldr fp, _020383E0 ; =_020AFDF0 + b _02038394 +_02038070: + ldr r1, [fp] + add r0, r1, r6 + ldr r7, [r1, #0xc] + ldrb r5, [r0, #0xfc] + sub r0, r7, #4 + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _020382E8 +_02038090: ; jump table + b _0203825C ; case 0 + b _020380A8 ; case 1 + b _02038148 ; case 2 + b _020381FC ; case 3 + b _020380A8 ; case 4 + b _0203825C ; case 5 +_020380A8: + mov r0, r6 + mov r1, #0x12 + bl _s32_div_f + cmp r1, #5 + ble _020380D0 + cmp r1, #0xc +#ifdef JAPAN + movlt sl, #0x43 +#else + movlt r0, #0x43 + strlt r0, [sp, #8] +#endif + movlt r7, #1 + blt _020380DC +_020380D0: +#ifdef JAPAN + mov sl, #0x44 +#else + mov r0, #0x44 + str r0, [sp, #8] +#endif + mov r7, #0 +_020380DC: + cmp r5, #0 + beq _02038114 + mov r0, r5 + bl sub_020251F0 +#ifdef JAPAN + and r1, sl, #0xff + str r1, [sp] + mov r3, r0 + mov r0, sb + mov r1, r6, lsl #2 + ldrsh r1, [r4, r1] + add r2, r4, r6, lsl #2 + ldrsh r2, [r2, #2] + bl sub_020264F8 +_02038114: + add r0, sp, #4 +#else + ldr r1, [sp, #8] + add r2, r4, r6, lsl #2 + and r1, r1, #0xff + str r1, [sp] + mov r1, r6, lsl #2 + mov r3, r0 + ldrsh r1, [r4, r1] + ldrsh r2, [r2, #2] + mov r0, sb + bl sub_020264F8 +_02038114: + add r0, sp, #0x10 +#endif + ldrsb r2, [r0, r7] + mov r1, r6, lsl #2 + mov r0, sb + str r2, [sp] + ldrsh r3, [r4, r1] + add r1, r4, r6, lsl #2 + ldrsh r2, [r1, #2] + sub r1, r3, #1 + mov r3, #0xc + add r2, r2, #0xc + bl sub_02025D50 + b _02038390 +_02038148: + mov r0, r6 +#ifdef JAPAN + cmp r5, #2 +#else + cmp r5, #0x20 +#endif + mov r1, #0x11 + moveq r5, #0 + bl _s32_div_f + cmp r1, #5 + blt _02038178 + cmp r1, #0xc +#ifdef JAPAN + movlt sl, #0x43 +#else + movlt r0, #0x43 + strlt r0, [sp, #4] +#endif + movlt r7, #1 + blt _02038184 +_02038178: +#ifdef JAPAN + mov sl, #0x44 +#else + mov r0, #0x44 + str r0, [sp, #4] +#endif + mov r7, #0 +_02038184: + cmp r5, #0 + beq _020381C4 + mov r0, r5 + bl sub_020251F0 +#ifdef JAPAN + and r1, sl, #0xff + str r1, [sp] + ldr r1, _020383E8 ; =_0209B32C + mov r2, r6, lsl #2 + ldrsh r1, [r1, r2] + ldr r2, _020383E8 ; =_0209B32C + mov r3, r0 + add r2, r2, r6, lsl #2 + ldrsh r2, [r2, #2] + mov r0, sb + bl sub_020264F8 +_020381C4: + add r0, sp, #4 +#else + ldr r1, [sp, #4] + mov r2, r6, lsl #2 + and r1, r1, #0xff + str r1, [sp] + ldr r1, _020383E8 ; =_0209B32C + mov r3, r0 + ldrsh r1, [r1, r2] + ldr r2, _020383E8 ; =_0209B32C + mov r0, sb + add r2, r2, r6, lsl #2 + ldrsh r2, [r2, #2] + bl sub_020264F8 +_020381C4: + add r0, sp, #0x10 +#endif + ldrsb r1, [r0, r7] + mov r2, r6, lsl #2 + mov r0, sb + str r1, [sp] + ldr r1, _020383E8 ; =_0209B32C + ldrsh r3, [r1, r2] + add r1, r1, r6, lsl #2 + ldrsh r2, [r1, #2] + sub r1, r3, #1 + mov r3, #0xc + add r2, r2, #0xc + bl sub_02025D50 + b _02038390 +_020381FC: + cmp r5, #0 +#ifdef JAPAN + moveq r5, #0xa + cmp r5, #2 +#else + moveq r5, #0x2a + cmp r5, #0x20 +#endif + moveq r5, #0 + cmp r5, #0 + beq _02038390 + mov r0, r5 + bl sub_020251F0 + mov r5, r0 + mov r0, r6 + mov r1, #0x12 + bl _s32_div_f + mov r1, #0x44 + str r1, [sp] + mov r1, #0x12 + mul r1, r0, r1 + add r0, r4, r1, lsl #2 + mov r1, r6, lsl #2 + ldrsh r2, [r0, #2] + ldrsh r1, [r4, r1] + mov r3, r5 + mov r0, sb + bl sub_020264F8 + b _02038390 +_0203825C: +#ifdef JAPAN + cmp r5, #2 +#else + cmp r5, #0x20 +#endif + moveq r5, #0 + cmp r5, #0 + beq _020382AC + ldr r1, _020383EC ; =_0209B2C4 + ldr r2, [fp] +#ifdef JAPAN + mov r0, r5 + ldrb sl, [r1, r7] + ldrsh r5, [r2, #0x20] + bl sub_020251F0 + ldr r2, _020383F0 ; =_0209B2D0 +#else + ldrb r1, [r1, r7] + mov r0, r5 + ldrsh r5, [r2, #0x20] + str r1, [sp, #0xc] + bl sub_020251F0 + ldr r2, _020383F0 ; =_0209B2D0 + ldr r1, [sp, #0xc] +#endif + mov r3, #0x44 + str r3, [sp] + mov r3, r0 + ldrb r2, [r2, r7] +#ifdef JAPAN + add r1, sl, r5 +#else + add r1, r1, r5 +#endif + mov r0, sb + bl sub_020264F8 +_020382AC: +#ifdef JAPAN + ldr r5, [fp] + mov r2, #0x17 + ldr r1, [r5, #0xc] + mov r0, sb + str r2, [sp] + ldr r2, _020383EC ; =_0209B2C4 + ldrsh r5, [r5, #0x20] + ldrb r7, [r2, r1] + ldr r2, _020383F0 ; =_0209B2D0 + mov r3, #0xc + ldrb r2, [r2, r1] + add r1, r7, r5 + add r2, r2, #0xc + bl sub_02025D50 + b _02038390 +_020382E8: + ldr r1, [fp] + ldr r0, _0203864C_JP ; =_020B12A0 + cmp r5, #2 + moveq r5, #0 + ldr r3, [r0, r5, lsl #2] + add r1, r1, r6, lsl #1 + ldrsh r5, [r1, #0x20] + ldr r1, _020383EC ; =_0209B2C4 + mov r0, sb + ldrb sl, [r1, r7] + ldr r1, _020383F0 ; =_0209B2D0 + ldrb r2, [r1, r7] + add r1, sl, r5 + bl DrawTextInWindow + ldr r5, [fp] + mov r2, #0x17 + ldr r1, [r5, #0xc] + mov r0, sb + str r2, [sp] + ldr r2, _020383EC ; =_0209B2C4 + ldrsh r5, [r5, #0x20] + ldrb r7, [r2, r1] + ldr r2, _020383F0 ; =_0209B2D0 + mov r3, #0x32 + ldrb r2, [r2, r1] + add r1, r7, r5 + add r2, r2, #0xc +#else + ldr r2, [fp] + mov r1, #0x17 + ldr r5, [r2, #0xc] + ldr r7, _020383F0 ; =_0209B2D0 + str r1, [sp] + ldrsh r1, [r2, #0x20] + ldr r2, _020383EC ; =_0209B2C4 + mov r0, sb + ldrb r2, [r2, r5] + ldrb r5, [r7, r5] + mov r3, #0xc + add r1, r2, r1 + add r2, r5, #0xc + bl sub_02025D50 + b _02038390 +_020382E8: + cmp r5, #0x20 + moveq r5, #0 + cmp sl, #0 + mov r0, r5 + beq _02038314 + bl sub_020251F0 + mov r2, r0 + ldr r1, _020383F4 ; =_0209B4C4 + add r0, sp, #0x12 + bl SprintfStatic__02037F30 + b _02038328 +_02038314: + bl sub_020251F0 + mov r2, r0 + ldr r1, _020383F8 ; =_0209B4C0 + add r0, sp, #0x12 + bl sprintf +_02038328: + ldr r1, [fp] + ldr r3, _020383EC ; =_0209B2C4 + ldr r2, [r1, #0xc] + add r1, r1, r6, lsl #1 + ldrb r5, [r3, r2] + ldr r3, _020383F0 ; =_0209B2D0 + ldrsh r1, [r1, #0x20] + ldrb r2, [r3, r2] + mov r0, sb + add r3, sp, #0x12 + add r1, r5, r1 + bl DrawTextInWindow + ldr r2, [fp] + mov r1, #0x17 + ldr r5, [r2, #0xc] + ldr r7, _020383F0 ; =_0209B2D0 + str r1, [sp] + ldrsh r1, [r2, #0x20] + ldr r2, _020383EC ; =_0209B2C4 + mov r0, sb + ldrb r2, [r2, r5] + ldrb r5, [r7, r5] + mov r3, #0x3c + add r1, r2, r1 + add r2, r5, #0xc +#endif + bl sub_02025D50 +_02038390: + add r6, r6, #1 +_02038394: + cmp r6, r8 + blt _02038070 + ldr r0, _020383E0 ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #7 + bne _020383CC +#ifdef JAPAN + ldrsb r4, [sp, #4] +#else + ldrsb r4, [sp, #0x10] +#endif + mov r0, sb + mov r1, #3 + mov r2, #0x1d + mov r3, #0xea + str r4, [sp] + bl sub_02025D50 +_020383CC: + mov r0, sb + bl UpdateWindow +#ifdef JAPAN + add sp, sp, #0x108 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +#else + add sp, sp, #0x114 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +#endif + .align 2, 0 +_020383DC: .word _0209B288 +_020383E0: .word _020AFDF0 +_020383E4: .word _0209B3B4 +_020383E8: .word _0209B32C +_020383EC: .word _0209B2C4 +_020383F0: .word _0209B2D0 +#ifdef JAPAN +_0203864C_JP: .word _020B12A0_JP +#else +_020383F4: .word _0209B4C4 +_020383F8: .word _0209B4C0 +#endif + arm_func_end sub_02037F58 + + arm_func_start sub_020383FC +sub_020383FC: ; 0x020383FC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _020384A8 ; =_020AFDF0 + mov r4, #0 + ldr r2, [r1] + ldrb r1, [r2, #0x10] + cmp r1, #0 + bne _02038444 + cmp r0, #0 + beq _02038444 + ldrb r0, [r2, #0x16] + cmp r0, #0 + beq _0203843C + cmp r0, #1 +#ifdef JAPAN + beq _020386A0 + cmp r0, #2 +#endif + moveq r0, #2 + streqb r0, [r2, #0x18] + b _02038444 +_0203843C: +#ifdef JAPAN + strb r4, [r2, #0x18] + b _02038444 +_020386A0: +#endif + mov r0, #1 + strb r0, [r2, #0x18] +_02038444: + ldr r7, _020384A8 ; =_020AFDF0 + mov r5, #0xa + ldr r6, _020384AC ; =0x00000111 + b _02038484 +_02038454: + ldrb r0, [r0, #6] + cmp r0, #1 + cmpne r0, #2 + cmpne r0, #3 + ldrneb r0, [r2, #0x10] + cmpne r0, #0 + beq _02038480 + cmp r1, #0x100 + bge _02038480 + and r0, r1, #0xff + bl sub_0204DA1C +_02038480: + add r4, r4, #1 +_02038484: + ldr r2, [r7] +#ifdef JAPAN + ldr r1, [r7, #4] +#else + ldr r1, [r7, #8] +#endif + ldrb r0, [r2, #0x16] + ldr r0, [r1, r0, lsl #2] + mla r0, r4, r5, r0 + ldrh r1, [r0, #8] + cmp r1, r6 + bne _02038454 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_020384A8: .word _020AFDF0 +_020384AC: .word 0x00000111 + arm_func_end sub_020383FC + + arm_func_start sub_020384B0 +sub_020384B0: ; 0x020384B0 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02038900 ; =_020AFDF0 + mov r0, #0xa +#ifdef JAPAN + ldmia r2, {r1, r3} +#else + ldr r1, [r2] + ldr r3, [r2, #8] +#endif + ldrb ip, [r1, #0x16] + ldrb r2, [r1, #0x18] + ldr r3, [r3, ip, lsl #2] + mla r0, r2, r0, r3 + ldrh r4, [r0, #8] +#ifdef JAPAN + sub r0, r4, #0x100 + cmp r0, #9 +#else + sub r0, r4, #0x104 + cmp r0, #5 +#endif + addls pc, pc, r0, lsl #2 + b _020387B4 +_020384E8: ; jump table +#ifdef JAPAN + b _02038770 ; case 0 + b _0203878C ; case 1 + b _02038500 ; case 2 + b _02038544 ; case 3 + b _02038830 ; case 4 + b _020387B4 ; case 5 + b _020387B4 ; case 6 + b _020385C0 ; case 7 + b _020385F0 ; case 8 + b _02038588 ; case 9 +_02038770: + mov r0, #0 + bl sub_0203935C + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + b _020388F8 +_0203878C: + mov r0, #1 + bl sub_0203935C + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + b _020388F8 +#else + b _02038500 ; case 0 + b _02038544 ; case 1 + b _020387B4 ; case 2 + b _020385C0 ; case 3 + b _020385F0 ; case 4 + b _02038588 ; case 5 +#endif +_02038500: + cmp ip, #0 + bne _02038514 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_02038514: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02038900 ; =_020AFDF0 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x16] + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_02037CD8 + mov r0, #1 + bl sub_020383FC + b _020388F8 +_02038544: + cmp ip, #1 + bne _02038558 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_02038558: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02038900 ; =_020AFDF0 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x16] + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_02037CD8 + mov r0, #1 + bl sub_020383FC + b _020388F8 +#ifdef JAPAN +_02038830: + cmp ip, #2 + bne _02038844 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_02038844: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02038900 ; =_020AFDF0 + mov r2, #2 + ldr r1, [r0] + strb r2, [r1, #0x16] + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_02037CD8 + mov r0, #1 + bl sub_020383FC + b _020388F8 +#endif +_02038588: + ldrb r0, [r1, #0x15] + cmp r0, #0 + moveq r2, #1 + movne r2, #0 + mov r0, #4 + strb r2, [r1, #0x15] + bl PlaySeVolumeWrapper + mov r0, #0 + bl sub_020383FC + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl sub_02037CD8 + b _020388F8 +_020385C0: + ldrsb r0, [r1] + bl sub_02037F58 + bl sub_02038904 + cmp r0, #0 + beq _020388F8 + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #8 + bne _020388F8 + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_020385F0: + ldrb r0, [r1, #0x1e] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [r1, #0xc] + cmp r0, #7 + bne _02038680 + bl sub_02038A54 + movs r4, r0 + beq _02038680 + cmp r4, #0x12 + bge _02038680 + mov r0, #2 + bl PlaySeVolumeWrapper +#ifdef JAPAN + mov r1, #2 +#else + mov r1, #0x20 +#endif + ldr r0, _02038900 ; =_020AFDF0 + b _0203864C +_02038634: + ldr r2, [r0] + ldr r3, [r2, #0xf8] + ldrb r2, [r3, r4] + cmp r2, #0 + streqb r1, [r3, r4] + add r4, r4, #1 +_0203864C: + cmp r4, #0x12 + bne _02038634 + ldr r0, _02038900 ; =_020AFDF0 + mov r1, #0x12 + ldr r0, [r0] + strb r1, [r0, #0x1c] + bl sub_02038ADC + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02038680: + ldr r0, _02038900 ; =_020AFDF0 + ldr r1, [r0] + ldrb r0, [r1, #0x16e] + ldrb r5, [r1, #0x10] + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + ldr r0, [r1, #0xc] + and r4, r2, #0xff + cmp r0, #8 + moveq r5, #0 + bl sub_02038A54 + cmp r0, #0 + beq _020386E8 + cmp r5, #1 + bne _020386E8 + bl sub_02038A54 + ldr r1, _02038900 ; =_020AFDF0 + ldr r1, [r1] + ldrb r1, [r1, #0x1b] + cmp r1, r0 + beq _020386E8 + mov r0, #2 + bl PlaySeVolumeWrapper + mov r0, #3 + ldmia sp!, {r3, r4, r5, pc} +_020386E8: + cmp r4, #0 + bne _020386FC + bl sub_02038A54 + cmp r0, #0 + beq _0203871C +_020386FC: + cmp r5, #0 + beq _0203872C + bl sub_02038A54 + ldr r1, _02038900 ; =_020AFDF0 + ldr r1, [r1] + ldrb r1, [r1, #0x1b] + cmp r1, r0 + beq _0203872C +_0203871C: + mov r0, #2 + bl PlaySeVolumeWrapper + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_0203872C: + bl sub_02038B5C + cmp r0, #0 + beq _02038760 + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrb r1, [r0, #0x1b] + ldr r0, [r0, #0xf8] + bl sub_02038A8C + cmp r0, #0x3c + ble _02038760 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_02038760: + mov r0, #0 + bl PlaySeVolumeWrapper + cmp r4, #0 + beq _02038794 + bl sub_02038A54 + cmp r0, #0 + bne _02038794 + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + add r1, r0, #0x6e + ldr r0, [r0, #0xf8] + add r1, r1, #0x100 + bl StrcpySimple +_02038794: + ldr r0, _02038900 ; =_020AFDF0 + ldr r1, [r0] + ldrb r2, [r1, #0x1b] + ldr r0, [r1, #0x134] + ldr r1, [r1, #0xf8] + bl MemcpySimple + mov r0, #3 + ldmia sp!, {r3, r4, r5, pc} +_020387B4: + ldrb r0, [r1, #0x10] + cmp r0, #0 + ldrne r0, [r1, #0xc] + cmpne r0, #8 + beq _020387E4 + and r0, r4, #0xff + bl sub_0204DA1C + cmp r0, #0xff + bne _02038810 + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +_020387E4: +#ifndef JAPAN + ldr r0, [r1, #0xc] + cmp r0, #9 + bne _02038810 + and r0, r4, #0xff + cmp r0, #0x41 + blo _02038804 + cmp r0, #0x5a + bls _02038810 +_02038804: + mov r0, #2 + bl PlaySeVolumeWrapper + b _020388F8 +#endif +_02038810: + ldr r0, _02038900 ; =_020AFDF0 + ldr r2, [r0] + ldrb r1, [r2, #0x15] + cmp r1, #1 + bne _020388A4 + ldr r1, [r2, #0xc] + cmp r1, #7 + bne _02038870 + ldrb r1, [r2, #0x1c] + cmp r1, #0x11 + bhi _02038870 + beq _020388A4 + mov r3, #0x10 + b _0203885C +_02038848: + ldr r2, [r2, #0xf8] + ldrb r1, [r2, r3] + add r2, r2, r3 + sub r3, r3, #1 + strb r1, [r2, #1] +_0203885C: + ldr r2, [r0] + ldrb r1, [r2, #0x1c] + cmp r3, r1 + bge _02038848 + b _020388A4 +_02038870: + ldrb r0, [r2, #0x1b] + sub r3, r0, #2 + ldr r0, _02038900 ; =_020AFDF0 + b _02038894 +_02038880: + ldr r2, [r2, #0xf8] + ldrb r1, [r2, r3] + add r2, r2, r3 + sub r3, r3, #1 + strb r1, [r2, #1] +_02038894: + ldr r2, [r0] + ldrb r1, [r2, #0x1c] + cmp r3, r1 + bge _02038880 +_020388A4: + ldr r0, _02038900 ; =_020AFDF0 + ldr r2, [r0] + ldrb r1, [r2, #0x1c] + ldr r2, [r2, #0xf8] + strb r4, [r2, r1] + ldr r2, [r0] + ldrb r0, [r2, #0x1b] + ldrb r1, [r2, #0x1c] + sub r0, r0, #1 + cmp r1, r0 + addlt r0, r1, #1 + strltb r0, [r2, #0x1c] + movge r0, #5 + strgeb r0, [r2, #0x18] + mov r0, #0 + bl PlaySeVolumeWrapper + bl sub_02038ADC + ldr r0, _02038900 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 +_020388F8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02038900: .word _020AFDF0 + arm_func_end sub_020384B0 + + arm_func_start sub_02038904 +sub_02038904: ; 0x02038904 + stmdb sp!, {r3, lr} + ldr r0, _02038A50 ; =_020AFDF0 + ldr r3, [r0] + ldrb r2, [r3, #0x1c] + ldr r1, [r3, #0xf8] + ldrb r1, [r1, r2] + cmp r1, #0 + bne _02038978 + cmp r2, #0 + bne _0203893C + mov r0, #2 + bl PlaySeVolumeWrapper + mov r0, #1 + ldmia sp!, {r3, pc} +_0203893C: + sub r1, r2, #1 + strb r1, [r3, #0x1c] + ldr r0, [r0] + mov r3, #0 + ldrb r1, [r0, #0x1c] + ldr r2, [r0, #0xf8] + mov r0, #1 + strb r3, [r2, r1] + bl PlaySeVolumeWrapper + ldr r0, _02038A50 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + bl sub_02038ADC + b _02038A48 +_02038978: + bl sub_02038A54 + ldr r1, _02038A50 ; =_020AFDF0 + sub r0, r0, #1 + ldr r2, [r1] + mov ip, #0 + ldr r1, [r2, #0xc] + cmp r1, #7 + bne _020389EC + ldrb lr, [r2, #0x1c] + cmp lr, #0x11 + bhi _020389EC + cmp r0, #0x11 + movge r0, #0x11 +#ifdef JAPAN + movge ip, #2 +#else + movge ip, #0x20 +#endif + ldr r1, _02038A50 ; =_020AFDF0 + b _020389D0 +_020389B8: + ldr r2, [r1] + ldr r3, [r2, #0xf8] + add r2, r3, lr + ldrb r2, [r2, #1] + strb r2, [r3, lr] + add lr, lr, #1 +_020389D0: + cmp lr, r0 + blt _020389B8 + ldr r1, _02038A50 ; =_020AFDF0 + ldr r1, [r1] + ldr r1, [r1, #0xf8] + strb ip, [r1, r0] + b _02038A2C +_020389EC: + ldrb ip, [r2, #0x1c] + ldr r1, _02038A50 ; =_020AFDF0 + b _02038A10 +_020389F8: + ldr r2, [r1] + ldr r3, [r2, #0xf8] + add r2, r3, ip + ldrb r2, [r2, #1] + strb r2, [r3, ip] + add ip, ip, #1 +_02038A10: + cmp ip, r0 + blt _020389F8 + ldr r1, _02038A50 ; =_020AFDF0 + mov r2, #0 + ldr r1, [r1] + ldr r1, [r1, #0xf8] + strb r2, [r1, r0] +_02038A2C: + mov r0, #1 + bl PlaySeVolumeWrapper + ldr r0, _02038A50 ; =_020AFDF0 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02037F58 + bl sub_02038ADC +_02038A48: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02038A50: .word _020AFDF0 + arm_func_end sub_02038904 + + arm_func_start sub_02038A54 +sub_02038A54: ; 0x02038A54 + ldr r1, _02038A88 ; =_020AFDF0 + mov r0, #0 + ldr r2, [r1] + ldrb r3, [r2, #0x1b] + b _02038A7C +_02038A68: + ldr r1, [r2, #0xf8] + ldrb r1, [r1, r0] + cmp r1, #0 + bxeq lr + add r0, r0, #1 +_02038A7C: + cmp r0, r3 + blt _02038A68 + bx lr + .align 2, 0 +_02038A88: .word _020AFDF0 + arm_func_end sub_02038A54 + + arm_func_start sub_02038A8C +sub_02038A8C: ; 0x02038A8C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, r0 + mov r6, r1 + mov r5, r4 + b _02038ACC +_02038AA4: + ldrb r0, [r7, r5] + cmp r0, #0 + beq _02038AD4 + bl sub_020251F0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl sub_02025C7C +#ifdef JAPAN + ldrsh r0, [r0, #6] +#else + ldrb r0, [r0, #2] +#endif + add r5, r5, #1 + add r4, r4, r0 +_02038ACC: + cmp r5, r6 + blt _02038AA4 +_02038AD4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02038A8C + + arm_func_start sub_02038ADC +sub_02038ADC: ; 0x02038ADC + stmdb sp!, {r4, r5, r6, lr} + mov r4, #0 + mov r5, r4 + ldr r6, _02038B58 ; =_020AFDF0 + b _02038B44 +_02038AF0: + add r0, r1, r5, lsl #1 + strh r4, [r0, #0x20] + ldr r1, [r6] + ldr r0, [r1, #0xf8] + ldrb r0, [r0, r5] + cmp r0, #0 + addeq r0, r1, r5, lsl #1 + moveq r1, #8 + streqh r1, [r0, #0x8c] + ldmeqia sp!, {r4, r5, r6, pc} + bl sub_020251F0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl sub_02025C7C + ldr r1, [r6] +#ifdef JAPAN + ldrsh r2, [r0, #6] +#else + ldrb r2, [r0, #2] +#endif + add r1, r1, r5, lsl #1 + add r5, r5, #1 + strh r2, [r1, #0x8c] +#ifdef JAPAN + ldrsh r0, [r0, #6] +#else + ldrb r0, [r0, #2] +#endif + add r4, r4, r0 +_02038B44: + ldr r1, [r6] + ldrb r0, [r1, #0x1b] + cmp r5, r0 + blt _02038AF0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02038B58: .word _020AFDF0 + arm_func_end sub_02038ADC + + arm_func_start sub_02038B5C +sub_02038B5C: ; 0x02038B5C + ldr r0, _02038B7C ; =_020AFDF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #3 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02038B7C: .word _020AFDF0 + arm_func_end sub_02038B5C + + arm_func_start sub_02038B80 +sub_02038B80: ; 0x02038B80 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + ldr r2, _02039068 ; =_020AFDF0 + mov sb, r0 + ldr r7, [r2] + mov r8, r1 + ldrb r3, [r7, #0x10] + ldr ip, [r7, #0xc] + mov r2, #1 + cmp ip, #7 + moveq r3, r2 + cmp r3, #0 + ldr r4, _0203906C ; =_0209B2E0 + movne r2, #2 + ldr r1, _02039070 ; =_0209B2E1 + ldr r0, _02039074 ; =_0209B2E2 + ldrb r4, [r4, r2, lsl #4] + ldr lr, _02039078 ; =0x0000FFFF + ldr r5, _0203907C ; =_0209B2E3 + cmp sb, lr + ldrb r1, [r1, r2, lsl #4] + ldrb r0, [r0, r2, lsl #4] + ldrb r2, [r5, r2, lsl #4] + mov r4, r4, lsl #3 + mov r5, r1, lsl #3 + add r0, r4, r0, lsl #3 + cmpne r8, lr + add r1, r5, r2, lsl #3 + mvneq r0, #0 + beq _02039060 + add r2, r1, #8 + cmp r8, r2 + bge _02038FA0 + cmp r3, #0 + beq _02038CEC + add r1, r5, #8 + cmp r8, r1 + sublt r0, lr, #0x10000 + blt _02039060 + cmp r8, r2 + subgt r0, lr, #0x10000 + bgt _02039060 + sub r1, r4, #4 + cmp sb, r1 + sublt r0, lr, #0x10000 + blt _02039060 + add r0, r0, #4 + cmp sb, r0 + subgt r0, lr, #0x10000 + bgt _02039060 + cmp ip, #5 + beq _02038C5C + sub r0, ip, #7 + cmp r0, #1 + bhi _02038CA0 +_02038C5C: + add r0, r4, #3 + sub sb, sb, r0 + cmp sb, #0 + movle sb, #1 + cmp sb, #0xea + movge sb, #0xe9 + mov r0, sb + mov r1, #0xd + bl _s32_div_f + add r1, r5, #0x1e + mov r6, r0 + cmp r8, r1 + addgt r6, r6, #0x12 + add r0, r5, #0x2d + cmp r8, r0 + addgt r6, r6, #0x12 + b _02038D88 +_02038CA0: + add r0, r4, #6 + sub sb, sb, r0 + cmp sb, #0 + movle sb, #1 + cmp sb, #0xe5 + movge sb, #0xe4 + cmp sb, #0xaa + subgt sb, sb, #8 + bgt _02038CCC + cmp sb, #0x4b + subgt sb, sb, #4 +_02038CCC: + mov r0, sb + mov r1, #0xd + bl _s32_div_f + add r1, r5, #0x24 + mov r6, r0 + cmp r8, r1 + addgt r6, r6, #0x11 + b _02038D88 +_02038CEC: + bl sub_02038A54 + ldr r1, _02039068 ; =_020AFDF0 + ldr r3, _02039080 ; =_0209B2C4 + ldr r1, [r1] + ldr r7, [r1, #0xc] + ldrb r2, [r1, #0x1b] + ldrb r3, [r3, r7] + cmp r0, r2 + subeq r0, r0, #1 + add r2, r5, #0x16 + cmp r8, r2 + add r2, r2, #0x20 + add r3, r4, r3 + mvnlt r0, #0 + blt _02039060 + cmp r8, r2 + mvngt r0, #0 + bgt _02039060 + sub r2, r3, #4 + cmp sb, r2 + mvnlt r0, #0 + blt _02039060 + add r2, r3, #0x68 + cmp sb, r2 + mvngt r0, #0 + bgt _02039060 + sub r5, sb, r3 + mov r4, #0 + b _02038D80 +_02038D60: + add r2, r1, r4, lsl #1 + ldrsh r3, [r2, #0x20] + ldrsh r2, [r2, #0x8c] + mov r6, r4 + add r2, r3, r2 + cmp r5, r2 + blt _02038D88 + add r4, r4, #1 +_02038D80: + cmp r4, r0 + ble _02038D60 +_02038D88: + bl sub_02038A54 + cmp r6, r0 + bgt _02038F98 + ldr r0, _02039068 ; =_020AFDF0 + ldr r1, [r0] + strb r6, [r1, #0x1d] + ldr r0, [r0] + ldrsb r0, [r0] + bl GetWindow + mov r4, r0 + bl sub_02038ADC + ldr r0, _02039068 ; =_020AFDF0 + ldr r3, [r0] + ldr r1, [r3, #0xc] + sub r0, r1, #4 + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02038F30 +_02038DD0: ; jump table + b _02038ED8 ; case 0 + b _02038DE8 ; case 1 + b _02038E60 ; case 2 + b _02038DE8 ; case 3 + b _02038DE8 ; case 4 + b _02038ED8 ; case 5 +_02038DE8: + ldr r0, _02039084 ; =_0209B28C + ldr r5, _02039088 ; =_0209B2D0 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr sb, _02039080 ; =_0209B2C4 + ldrb r2, [r4, #5] + ldrb r0, [r4, #4] + ldr r3, _0203908C ; =_0209B3B6 + mov r8, r6, lsl #2 + ldr r7, _02039090 ; =_0209B3B4 + ldrb r4, [r5, r1] + ldrsh r3, [r3, r8] + ldrb r1, [sb, r1] + ldrsh r5, [r7, r8] + add r3, r4, r3 + sub r2, r2, #1 + add r2, r3, r2, lsl #3 + sub r2, r2, #0xe + mov r2, r2, lsl #0x10 + add r1, r1, r5 + sub r0, r0, #1 + add r0, r1, r0, lsl #3 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r2, asr #0x10 + mov r2, #0xc + mov r3, #0xb + bl sub_0202A2A4 + b _02038F90 +_02038E60: + ldr r0, _02039084 ; =_0209B28C + ldr r5, _02039088 ; =_0209B2D0 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr sb, _02039080 ; =_0209B2C4 + ldrb r2, [r4, #5] + ldrb r0, [r4, #4] + ldr r3, _02039094 ; =_0209B32E + mov r8, r6, lsl #2 + ldr r7, _02039098 ; =_0209B32C + ldrb r4, [r5, r1] + ldrsh r3, [r3, r8] + ldrb r1, [sb, r1] + ldrsh r5, [r7, r8] + add r3, r4, r3 + sub r2, r2, #1 + add r2, r3, r2, lsl #3 + sub r2, r2, #0xe + mov r2, r2, lsl #0x10 + add r1, r1, r5 + sub r0, r0, #1 + add r0, r1, r0, lsl #3 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r2, asr #0x10 + mov r2, #0xc + mov r3, #0xb + bl sub_0202A2A4 + b _02038F90 +_02038ED8: + ldr r0, _02039084 ; =_0209B28C + ldr r2, _02039080 ; =_0209B2C4 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, _02039088 ; =_0209B2D0 + ldrb r5, [r2, r1] + ldrsh r3, [r3, #0x20] + ldrb r2, [r4, #4] + ldrb r1, [r0, r1] + ldrb r0, [r4, #5] + add r3, r5, r3 + add r2, r3, r2, lsl #3 + add r1, r1, r0, lsl #3 + mov r0, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r2, #0xc + mov r3, #0xb + bl sub_0202A2A4 + b _02038F90 +_02038F30: + ldr r0, _02039068 ; =_020AFDF0 + ldr r2, _02039080 ; =_0209B2C4 + ldr r5, [r0] + ldr r3, _02039084 ; =_0209B28C + mov r0, #0x40 + str r3, [sp] + str r0, [sp, #4] + add r5, r5, r6, lsl #1 + ldr r0, _02039088 ; =_0209B2D0 + ldrb r7, [r2, r1] + ldrsh r3, [r5, #0x20] + ldrb r2, [r4, #4] + ldrb r1, [r0, r1] + ldrb r0, [r4, #5] + add r3, r7, r3 + add r2, r3, r2, lsl #3 + add r1, r1, r0, lsl #3 + mov r0, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + ldrsh r2, [r5, #0x8c] + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r3, #0xb + bl sub_0202A2A4 +_02038F90: + add r0, r6, #0x64 + b _02039060 +_02038F98: + mvn r0, #0 + b _02039060 +_02038FA0: + cmp r8, #0x60 + blt _02038FB0 + cmp r8, #0xb8 + ble _02038FB8 +_02038FB0: + mvn r0, #0 + b _02039060 +_02038FB8: + cmp r8, #8 + sublt r0, lr, #0x10000 + blt _02039060 + cmp r8, #0xf8 + subgt r0, lr, #0x10000 + bgt _02039060 + cmp sb, #8 + sublt r0, lr, #0x10000 + blt _02039060 + cmp sb, #0xf8 + subgt r0, lr, #0x10000 + bgt _02039060 + cmp sb, #0x23 + movle sb, #0x24 + cmp sb, #0xf5 + movge sb, #0xf4 + cmp r8, #0x63 + movle r8, #0x64 + cmp r8, #0xb1 + movge r8, #0xb0 + sub r0, r8, #0x63 + mov r1, #0xd + bl _s32_div_f + mov r4, r0 + sub r0, sb, #0x23 + mov r1, #0xf + bl _s32_div_f + mov r1, #6 + ldr r2, _02039068 ; =_020AFDF0 + mla r0, r1, r0, r4 + ldrb r3, [r7, #0x16] +#ifdef JAPAN + ldr r2, [r2, #4] +#else + ldr r2, [r2, #8] +#endif + mov r1, #0xa + ldr r2, [r2, r3, lsl #2] + mla r2, r0, r1, r2 + ldrh r2, [r2, #8] + cmp r2, #0x110 + subeq r0, r1, #0xb + beq _02039060 + ldrb r2, [r7, #0x1e] + cmp r2, #0 + subne r0, r1, #0xb +_02039060: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02039068: .word _020AFDF0 +_0203906C: .word _0209B2E0 +_02039070: .word _0209B2E1 +_02039074: .word _0209B2E2 +_02039078: .word 0x0000FFFF +_0203907C: .word _0209B2E3 +_02039080: .word _0209B2C4 +_02039084: .word _0209B28C +_02039088: .word _0209B2D0 +_0203908C: .word _0209B3B6 +_02039090: .word _0209B3B4 +_02039094: .word _0209B32E +_02039098: .word _0209B32C + arm_func_end sub_02038B80 + +#ifdef JAPAN + arm_func_start sub_0203935C +sub_0203935C: ; 0x0203935C + stmdb sp!, {r3, lr} + ldr r1, _0203942C_JP ; =_020AFDF0 + ldr r2, [r1] + ldrb r1, [r2, #0x10] + cmp r1, #0 + beq _02039380 + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_02039380: + ldrb r3, [r2, #0x1c] + ldr r2, [r2, #0xf8] + ldrb r1, [r2, r3] + cmp r1, #0 + bne _020393F0 + cmp r3, #0 + bne _020393A8 + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393A8: + add r1, r2, r3 + ldrb r1, [r1, #-1] + bl sub_02039430 + ldr r1, _0203942C_JP ; =_020AFDF0 + ldr r2, [r1] + ldr r1, [r2, #0xf8] + ldrb r2, [r2, #0x1c] + sub r3, r1, #1 + ldrb r1, [r3, r2] + cmp r0, r1 + beq _020393E4 + strb r0, [r3, r2] + mov r0, #0 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393E4: + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_020393F0: + bl sub_02039430 + ldr r1, _0203942C_JP ; =_020AFDF0 + ldr r1, [r1] + ldrb r2, [r1, #0x1c] + ldr r3, [r1, #0xf8] + ldrb r1, [r3, r2] + cmp r0, r1 + beq _02039420 + strb r0, [r3, r2] + mov r0, #0 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} +_02039420: + mov r0, #2 + bl PlaySeVolumeWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_0203942C_JP: .word _020AFDF0 + arm_func_end sub_0203935C + + arm_func_start sub_02039430 +sub_02039430: ; 0x02039430 + cmp r0, #0 + beq _02039454 + cmp r0, #1 + beq _02039464 + cmp r0, #2 + ldreq r0, _02039474 ; =_0209C29E_JP + addeq r1, r1, r1, lsl #1 + ldreqb r0, [r0, r1] + bx lr +_02039454: + ldr r0, _02039478 ; =_0209C29C_JP + add r1, r1, r1, lsl #1 + ldrb r0, [r0, r1] + bx lr +_02039464: + ldr r0, _0203947C ; =_0209C29D_JP + add r1, r1, r1, lsl #1 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_02039474: .word _0209C29E_JP +_02039478: .word _0209C29C_JP +_0203947C: .word _0209C29D_JP + arm_func_end sub_02039430 +#endif + + arm_func_start sub_0203909C +sub_0203909C: ; 0x0203909C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x9c + mov r6, r0 + mov r4, #0 + mov r0, #0x4c + mov r1, #8 + mov r5, r4 + bl MemAlloc +#ifdef JAPAN + ldr r2, _02039208 ; =_020AFE40 + mov r1, r4 + str r0, [r2] + str r1, [r0, #8] + ldr r0, [r2] + sub r3, r1, #2 + strb r1, [r0, #0xc] + ldr r0, [r2] + strb r3, [r0] + ldr r0, [r2] + strb r3, [r0, #1] + ldr r0, [r2] + strb r3, [r0, #2] + ldr r0, [r2] + str r1, [r0, #0x10] + ldr r0, _02039608 ; =0x00008140 + b _02039118 +_020394E4: + add r2, r6, r1 + ldrb r3, [r6, r1] + ldrb r2, [r2, #1] + cmp r3, #0 + orr r2, r2, r3, lsl #8 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + beq _02039120 + cmp r2, r0 + addeq r4, r4, #1 + add r5, r5, #1 + add r1, r1, #2 +_02039118: + cmp r1, #0x36 + bne _020394E4 +#else + ldr r1, _02039208 ; =_020AFE40 + mov r3, r4 + str r0, [r1] + str r3, [r0, #8] + ldr r0, [r1] + sub r2, r3, #2 + strb r3, [r0, #0xc] + ldr r0, [r1] + strb r2, [r0] + ldr r0, [r1] + strb r2, [r0, #1] + ldr r0, [r1] + strb r2, [r0, #2] + ldr r0, [r1] + str r3, [r0, #0x10] + b _02039118 +_020390FC: + ldrb r0, [r6, r3] + cmp r0, #0 + beq _02039120 + cmp r0, #0x20 + addeq r4, r4, #1 + add r5, r5, #1 + add r3, r3, #1 +_02039118: + cmp r3, #0x36 + blt _020390FC +#endif +_02039120: + cmp r5, r4 + ldreq r0, _02039208 ; =_020AFE40 + moveq r1, #1 + ldreq r0, [r0] + mov r3, #0 + streqb r1, [r0, #0xc] + ldr r0, _02039208 ; =_020AFE40 +_0203913C: + ldr r1, [r0] + ldrb r2, [r6, r3] + add r1, r1, r3 + add r3, r3, #1 + strb r2, [r1, #0x14] + cmp r3, #0x36 + blt _0203913C + ldr r0, _02039208 ; =_020AFE40 + ldr r0, [r0] + ldrb r0, [r0, #0xc] + cmp r0, #0 + bne _020391C0 + ldr r0, _0203920C ; =_0209B4D4 + mov r2, #1 + ldr r1, _02039210 ; =sub_0203939C + str r2, [sp, #4] + bl CreateTextBox + ldr r1, _02039208 ; =_020AFE40 + ldr r3, _02039214 ; =_0209B4E4 + ldr r1, [r1] + add r2, sp, #4 + strb r0, [r1] + mov r0, #0 + mov r1, #0x31 + str r0, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02039208 ; =_020AFE40 + mov r2, #0 + ldr r3, [r1] + strb r0, [r3, #1] + ldr r0, [r1] + str r2, [r0, #4] + b _020391FC +_020391C0: + mov r0, #0 + bl CreateDialogueBox + ldr r3, _02039208 ; =_020AFE40 +#ifdef JAPAN + ldr r2, _02039618 ; =0x000031D7 + ldr r4, [r3] + mov r1, #0x218 +#else + mov r1, #0x218 + ldr r4, [r3] + sub r2, r1, #0xf3 +#endif + strb r0, [r4, #2] + ldr r0, [r3] + mov r3, #0 + ldrsb r0, [r0, #2] + bl ShowStringIdInDialogueBox + ldr r0, _02039208 ; =_020AFE40 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] +_020391FC: + mov r0, #1 + add sp, sp, #0x9c + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02039208: .word _020AFE40 +#ifdef JAPAN +_02039608: .word 0x00008140 +#endif +_0203920C: .word _0209B4D4 +_02039210: .word sub_0203939C +_02039214: .word _0209B4E4 +#ifdef JAPAN +_02039618: .word 0x000031D7 +#endif + arm_func_end sub_0203909C + + arm_func_start sub_02039218 +sub_02039218: ; 0x02039218 + stmdb sp!, {r3, lr} + ldr r0, _02039300 ; =_020AFE40 + ldr r0, [r0] + cmp r0, #0 + beq _020392F8 + ldr r1, [r0, #8] + cmp r1, #0 + beq _0203924C + cmp r1, #1 + beq _02039290 + cmp r1, #0xb + beq _020392C4 + b _020392DC +_0203924C: + ldrsb r0, [r0] + mvn r1, #1 + cmp r0, r1 + beq _02039270 + bl sub_0202F954 + ldr r0, _02039300 ; =_020AFE40 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202836C +_02039270: + ldr r0, _02039300 ; =_020AFE40 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _020392DC + bl CloseSimpleMenu + b _020392DC +_02039290: + ldrsb r0, [r0] + mvn r1, #1 + cmp r0, r1 + beq _020392A4 + bl CloseTextBox +_020392A4: + ldr r0, _02039300 ; =_020AFE40 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _020392DC + bl CloseDialogueBox + b _020392DC +_020392C4: + bl MemFree + ldr r0, _02039300 ; =_020AFE40 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} +_020392DC: + ldr r1, _02039300 ; =_020AFE40 + mov r0, #0 + ldr r2, [r1] + ldr r1, [r2, #8] + add r1, r1, #1 + str r1, [r2, #8] + ldmia sp!, {r3, pc} +_020392F8: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02039300: .word _020AFE40 + arm_func_end sub_02039218 + + arm_func_start sub_02039304 +sub_02039304: ; 0x02039304 + ldr r0, _02039318 ; =_020AFE40 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #0x10] + bx lr + .align 2, 0 +_02039318: .word _020AFE40 + arm_func_end sub_02039304 + + arm_func_start sub_0203931C +sub_0203931C: ; 0x0203931C + stmdb sp!, {r3, lr} + ldr r0, _02039398 ; =_020AFE40 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #1 + bne _0203934C + ldrsb r0, [r1, #2] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02039390 + mov r0, #1 + ldmia sp!, {r3, pc} +_0203934C: + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _0203937C + ldrsb r0, [r1, #1] + bl IsSimpleMenuActive + cmp r0, #0 + bne _02039390 + ldr r0, _02039398 ; =_020AFE40 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl GetSimpleMenuResult__0202B870 + ldmia sp!, {r3, pc} +_0203937C: + ldrsb r0, [r1, #2] + bl IsDialogueBoxActive + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_02039390: + mvn r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02039398: .word _020AFE40 + arm_func_end sub_0203931C + + arm_func_start sub_0203939C +sub_0203939C: ; 0x0203939C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x254 + mov r4, r0 + bl sub_02027B1C + ldr r0, _02039428 ; =_020AFE40 + ldr r2, [r0] + ldr r0, [r2, #0x10] + cmp r0, #0 + add r0, sp, #0x54 + bne _020393D4 + ldr r1, _0203942C ; =_0209B4FC + add r2, r2, #0x14 + bl SprintfStatic__02039438 + b _020393E0 +_020393D4: + ldr r1, _02039430 ; =_0209B50C + add r2, r2, #0x14 + bl SprintfStatic__02039438 +_020393E0: + add r0, sp, #0x54 + str r0, [sp, #0x3c] + add ip, sp, #4 +#ifdef JAPAN + ldr r2, _02039838 ; =0x000031D6 +#endif + ldr r3, _02039434 ; =0x0000C402 + add r0, sp, #0x154 + mov r1, #0x400 +#ifndef JAPAN + mov r2, #0x124 +#endif + str ip, [sp] + bl PreprocessStringFromId + add r3, sp, #0x154 + mov r0, r4 + mov r1, #4 + mov r2, #3 + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow + add sp, sp, #0x254 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02039428: .word _020AFE40 +_0203942C: .word _0209B4FC +_02039430: .word _0209B50C +#ifdef JAPAN +_02039838: .word 0x000031D6 +#endif +_02039434: .word 0x0000C402 + arm_func_end sub_0203939C + + arm_func_start SprintfStatic__02039438 +SprintfStatic__02039438: ; 0x02039438 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02039438 + + arm_func_start DigitInputMenuInit +DigitInputMenuInit: ; 0x02039460 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + ldr r1, _02039514 ; =_020AFE58 + mov r4, r0 + str r4, [r1] + ldr r0, [r4, #0x10] + add ip, sp, #8 + cmp r0, #0x10 + blt _020394C8 + and r1, r0, #0xf + ldr r0, _02039518 ; =_0209C5C0 + str r1, [r4, #0x10] + ldmia r0, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + ldr r0, [r4, #0x18] + mov r2, #0 + strb r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + ldr r1, _0203951C ; =0x00001007 + strb r0, [sp, #0xd] + str r2, [sp] + ldr r3, _02039520 ; =DigitInputMenuDrawDigitsCallback + mov r0, ip + str r2, [sp, #4] + bl CreateAdvancedTextBox + b _02039500 +_020394C8: + ldr r0, _02039524 ; =_0209C5D0 + ldmia r0, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + ldr r0, [r4, #0x18] + mov r2, #0 + strb r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + ldr r1, _0203951C ; =0x00001007 + strb r0, [sp, #0xd] + str r2, [sp] + ldr r3, _02039520 ; =DigitInputMenuDrawDigitsCallback + mov r0, ip + str r2, [sp, #4] + bl CreateAdvancedTextBox +_02039500: + strb r0, [r4, #0x14] + mov r0, r4 + bl DigitInputMenuInitDigits + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + .align 2, 0 +_02039514: .word _020AFE58 +_02039518: .word _0209C5C0 +_0203951C: .word 0x00001007 +_02039520: .word DigitInputMenuDrawDigitsCallback +_02039524: .word _0209C5D0 + arm_func_end DigitInputMenuInit + + arm_func_start DigitInputMenuReturn +DigitInputMenuReturn: ; 0x02039528 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5] + ldr r1, _020395C8 ; =_020AFE58 + str r5, [r1] + bl DigitInputMenuFrameUpdate + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _020395AC +_0203954C: ; jump table + b _020395AC ; case 0 + b _020395AC ; case 1 + b _02039584 ; case 2 + b _0203955C ; case 3 +_0203955C: + mov r0, #0 + bl PlaySeVolumeWrapper + ldrsb r0, [r5, #0x14] + bl sub_0202836C + ldrsb r0, [r5, #0x14] + bl SetAdvancedTextBoxState5 + ldrsb r0, [r5, #0x14] + bl CloseAdvancedTextBox + ldr r0, [r5] + ldmia sp!, {r3, r4, r5, pc} +_02039584: + ldrsb r0, [r5, #0x14] + bl sub_0202836C + ldrsb r0, [r5, #0x14] + bl SetAdvancedTextBoxState5 + ldrsb r0, [r5, #0x14] + bl CloseAdvancedTextBox + mov r0, #1 + bl PlaySeVolumeWrapper + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_020395AC: + ldr r0, [r5] + cmp r4, r0 + beq _020395C0 + ldrsb r0, [r5, #0x14] + bl SetAdvancedTextBoxField0x1C2 +_020395C0: + mvn r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020395C8: .word _020AFE58 + arm_func_end DigitInputMenuReturn + + arm_func_start DigitInputMenuInitDigits +DigitInputMenuInitDigits: ; 0x020395CC + stmdb sp!, {r4, lr} + sub sp, sp, #0x28 + ldr r1, _0203967C ; =_020AFE58 + mov r4, r0 + str r4, [r1] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + add r0, sp, #0 + bl DigitInputMenuGetDigits + ldr r0, [r4, #0x10] + add r1, sp, #0 + strb r0, [r4, #0x29] + b _0203960C +_02039600: + ldrb r0, [r4, #0x29] + sub r0, r0, #1 + strb r0, [r4, #0x29] +_0203960C: + ldrb r2, [r4, #0x29] + add r0, r1, r2, lsl #2 + ldr r0, [r0, #-4] + cmp r0, #0 + bne _02039628 + cmp r2, #1 + bhi _02039600 +_02039628: + ldr r1, [r4, #4] + add r0, sp, #0 + str r1, [r4] + ldr r2, [r4, #0x10] + bl DigitInputMenuGetDigits + ldrb r0, [r4, #0x29] + add r1, sp, #0 + sub r0, r0, #1 + strb r0, [r4, #0x28] + b _0203965C +_02039650: + ldrb r0, [r4, #0x28] + sub r0, r0, #1 + strb r0, [r4, #0x28] +_0203965C: + ldrb r2, [r4, #0x28] + ldr r0, [r1, r2, lsl #2] + cmp r0, #0 + bne _02039674 + cmp r2, #0 + bne _02039650 +_02039674: + add sp, sp, #0x28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203967C: .word _020AFE58 + arm_func_end DigitInputMenuInitDigits + + arm_func_start DigitInputMenuGetDigits +DigitInputMenuGetDigits: ; 0x02039680 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r1 + cmp sb, #0 + movgt r6, #1 + mov r5, #0xa + mov sl, r0 + mov r8, r2 + rsble sb, sb, #0 + mvnle r6, #0 + mov r7, #0 + mov r4, r5 + b _020396D4 +_020396B0: + mov r0, sb + mov r1, r5 + bl _s32_div_f + str r1, [sl, r7, lsl #2] + mov r0, sb + mov r1, r4 + bl _s32_div_f + mov sb, r0 + add r7, r7, #1 +_020396D4: + cmp r7, r8 + blt _020396B0 + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end DigitInputMenuGetDigits + + arm_func_start DigitInputMenuFrameUpdate +DigitInputMenuFrameUpdate: ; 0x020396E4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x34 + mov r4, r0 + add r1, sp, #0xc + mov r0, #0 + bl GetPressedButtons + ldrsb r0, [r4, #0x14] + bl IsAdvancedTextBoxActive + cmp r0, #0 + bne _02039730 + ldrsb r0, [r4, #0x14] + bl GetDigitInputResult + mvn r1, #0 + cmp r0, r1 + bne _02039728 + mov r0, #2 + b _02039940 +_02039728: + mov r0, #3 + b _02039940 +_02039730: + add r1, sp, #0xa + mov r0, #0 + ldrb r5, [r4, #0x28] + bl sub_020063F4 + ldrh r0, [sp, #0xa] + cmp r0, #0x10 + beq _02039774 + cmp r0, #0x20 + bne _02039788 + ldrb r0, [r4, #0x29] + ldrb r1, [r4, #0x28] + sub r0, r0, #1 + cmp r1, r0 + movge r0, #0 + addlt r0, r1, #1 + and r5, r0, #0xff + b _02039788 +_02039774: + ldrb r0, [r4, #0x28] + cmp r0, #0 + ldreqb r0, [r4, #0x29] + sub r0, r0, #1 + and r5, r0, #0xff +_02039788: + ldrb r0, [r4, #0x28] + cmp r5, r0 + beq _020397A0 + mov r0, #3 + strb r5, [r4, #0x28] + bl PlaySeVolumeWrapper +_020397A0: + ldrb r1, [r4, #0x28] + mov r0, #0xc + ldr r3, [r4, #0x24] + add r1, r1, #1 + mul r2, r1, r0 + ldr r1, [r4, #0x20] + add r0, r3, #0xf + sub r1, r1, r2 + add r2, r1, #3 + str r2, [sp] + str r0, [sp, #4] + ldrsb r0, [r4, #0x14] + sub r3, r3, #1 + mov r1, #7 + bl sub_020309B8 + add r1, sp, #8 + mov r0, #0 + bl sub_020063F4 + mov r0, r4 + bl DigitInputMenuCheckValidTouchScreenInput + cmp r0, #0 + ldreqh r0, [sp, #8] + cmp r0, #0x40 + beq _0203980C + cmp r0, #0x80 + beq _0203985C + b _020398AC +_0203980C: + ldr r3, [r4] + ldr r0, [r4, #0xc] + cmp r3, r0 + bne _0203982C + mov r0, #2 + bl PlaySeVolumeWrapper + mov r0, #0 + b _020398B0 +_0203982C: + ldrb r2, [r4, #0x28] + ldr r1, _02039948 ; =_0209C5E0 + mov r0, #3 + ldr r1, [r1, r2, lsl #2] + add r5, r3, r1 + bl PlaySeVolumeWrapper + ldr r0, [r4, #0xc] + cmp r5, r0 + strgt r0, [r4] + strle r5, [r4] + mov r0, #1 + b _020398B0 +_0203985C: + ldr r3, [r4] + ldr r0, [r4, #8] + cmp r3, r0 + bne _0203987C + mov r0, #2 + bl PlaySeVolumeWrapper + mov r0, #0 + b _020398B0 +_0203987C: + ldrb r2, [r4, #0x28] + ldr r1, _02039948 ; =_0209C5E0 + mov r0, #3 + ldr r1, [r1, r2, lsl #2] + sub r5, r3, r1 + bl PlaySeVolumeWrapper + ldr r0, [r4, #8] + cmp r5, r0 + strlt r0, [r4] + strge r5, [r4] + mov r0, #1 + b _020398B0 +_020398AC: + mov r0, #0 +_020398B0: + cmp r0, #0 + movne r0, #1 + bne _02039940 + mov r0, r4 + bl DigitInputMenuCheckValidTouchScreenInput + cmp r0, #0 + ldreqh r0, [sp, #0xc] + cmp r0, #1 + beq _020398E4 + cmp r0, #2 + bne _020398EC + mov r0, #2 + b _02039940 +_020398E4: + mov r0, #3 + b _02039940 +_020398EC: + add r0, sp, #0x10 + mov r1, #1 + bl sub_02031914 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + mov r1, r1, lsl #0x10 + mov r2, r0, lsl #0x10 + mov r0, r4 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl DigitInputMenuCheckTouchUpDownArrow + cmp r0, #0 + blt _0203993C + ldrb r1, [r4, #0x28] + and r2, r0, #0xff + cmp r2, r1 + beq _0203993C + mov r0, #3 + strb r2, [r4, #0x28] + bl PlaySeVolumeWrapper +_0203993C: + mov r0, #0 +_02039940: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02039948: .word _0209C5E0 + arm_func_end DigitInputMenuFrameUpdate + + arm_func_start DigitInputMenuCheckValidTouchScreenInput +DigitInputMenuCheckValidTouchScreenInput: ; 0x0203994C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x24 + mov r4, r0 + add r0, sp, #0 + mov r1, #1 + bl sub_02031914 + ldrh r0, [sp] + tst r0, #2 + moveq r0, #0 + beq _020399F0 + ldr r2, [sp, #4] + ldr r0, _020399F8 ; =0x0000FFFF + cmp r2, r0 + ldreq r1, [sp, #8] + cmpeq r1, r0 + moveq r0, #0 + beq _020399F0 + ldr r0, [sp, #8] + mov r1, r2, lsl #0x10 + mov r2, r0, lsl #0x10 + mov r0, r4 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl DigitInputMenuCheckTouchUpDownArrow + ldrb r1, [r4, #0x28] + cmp r1, r0 + movne r0, #0 + bne _020399F0 + ldrsb r0, [r4, #0x14] + bl GetWindow + ldrb r1, [r0, #5] + ldr r2, [r4, #0x24] + ldr r0, [sp, #8] + add r1, r2, r1, lsl #3 + cmp r0, r1 + add r1, r1, #0xc + movlt r0, #0x40 + blt _020399F0 + cmp r0, r1 + movgt r0, #0x80 + movle r0, #0 +_020399F0: + add sp, sp, #0x24 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020399F8: .word 0x0000FFFF + arm_func_end DigitInputMenuCheckValidTouchScreenInput + + arm_func_start DigitInputMenuCheckTouchUpDownArrow +DigitInputMenuCheckTouchUpDownArrow: ; 0x020399FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r0 + ldrsb r0, [r6, #0x14] + mov r5, r1 + mov r4, r2 + bl GetWindow + ldrb r1, [r0, #5] + ldr r3, [r6, #0x24] + ldr ip, _02039B08 ; =0x0000FFFF + add r3, r3, r1, lsl #3 + cmp r5, ip + ldrb r7, [r6, #0x29] + ldr r8, [r6, #0x20] + ldrb r2, [r0, #4] + mov r6, #0xc + ldrb sb, [r0, #6] + sub lr, r3, #0xa + ldrb r0, [r0, #7] + smulbb r7, r7, r6 + add r8, r8, r2, lsl #3 + mov r3, r2, lsl #3 + mov r1, r1, lsl #3 + add r2, r3, sb, lsl #3 + add sb, r1, r0, lsl #3 + sub r7, r8, r7 + add r0, lr, #0x20 + cmpne r4, ip + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r3, r3, #6 + cmp r5, r3 + sublt r0, r6, #0xe + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r1, r1, #6 + cmp r4, r1 + sublt r0, r6, #0xe + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r1, r2, #6 + cmp r5, r1 + subgt r0, r6, #0xe + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r1, sb, #6 + cmp r4, r1 + subgt r0, r6, #0xe + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r4, lr + sublt r0, ip, #0x10000 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r4, r0 + subgt r0, ip, #0x10000 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r0, r7, #4 + cmp r5, r0 + sublt r0, ip, #0x10000 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r0, r8, #4 + cmp r5, r0 + subgt r0, ip, #0x10000 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r5, r7 + addle r5, r7, #1 + cmp r5, r8 + subge r5, r8, #1 + sub r0, r8, r5 + mov r1, #0xc + bl _s32_div_f + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02039B08: .word 0x0000FFFF + arm_func_end DigitInputMenuCheckTouchUpDownArrow + + arm_func_start DigitInputMenuDrawDigits +DigitInputMenuDrawDigits: ; 0x02039B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x2c + mov r8, r0 + ldr r1, [r8] + ldr r2, [r8, #0x10] + add r0, sp, #4 + bl DigitInputMenuGetDigits + ldr r0, [r8, #0x10] + add r2, sp, #4 + sub r3, r0, #1 + mov r0, #0xff + b _02039B50 +_02039B3C: + ldr r1, [r2, r3, lsl #2] + cmp r1, #0 + bne _02039B58 + str r0, [r2, r3, lsl #2] + sub r3, r3, #1 +_02039B50: + cmp r3, #0 + bgt _02039B3C +_02039B58: + mov r7, #0 + add r6, sp, #4 +#ifdef JAPAN + mov r5, #0xa +#else + mov r5, #0x2a +#endif + mov r4, #0x44 + mov sb, #0xc + b _02039BB0 +_02039B70: + ldr r0, [r6, r7, lsl #2] + cmp r0, #0xff + moveq r0, r5 +#ifdef JAPAN + addne r0, r0, #0x1e +#else + addne r0, r0, #0x30 +#endif + andne r0, r0, #0xff + bl sub_020251F0 + add r1, r7, #1 + mul r2, r1, sb + str r4, [sp] + ldr r1, [r8, #0x20] + mov r3, r0 + sub r1, r1, r2 + ldrsb r0, [r8, #0x14] + ldr r2, [r8, #0x24] + bl sub_020264F8 + add r7, r7, #1 +_02039BB0: + ldr r0, [r8, #0x10] + cmp r7, r0 + blt _02039B70 + mov r5, #0 + mov r4, #0x17 + mov r7, #0xb + mov r6, #0xc + b _02039C00 +_02039BD0: + add r0, r5, #1 + mul r1, r0, r6 + str r4, [sp] + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + sub r1, r0, r1 + ldrsb r0, [r8, #0x14] + mov r3, r7 + sub r1, r1, #1 + add r2, r2, #0xc + bl sub_02025D50 + add r5, r5, #1 +_02039C00: + ldr r0, [r8, #0x10] + cmp r5, r0 + blt _02039BD0 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end DigitInputMenuDrawDigits + + arm_func_start DigitInputMenuDrawDigitsCallback +DigitInputMenuDrawDigitsCallback: ; 0x02039C14 + ldr r0, _02039C24 ; =_020AFE58 + ldr ip, _02039C28 ; =DigitInputMenuDrawDigits + ldr r0, [r0] + bx ip + .align 2, 0 +_02039C24: .word _020AFE58 +_02039C28: .word DigitInputMenuDrawDigits + arm_func_end DigitInputMenuDrawDigitsCallback + + arm_func_start sub_02039C2C +sub_02039C2C: ; 0x02039C2C + ldr ip, _02039C38 ; =sub_02039C64 + mov r2, #0 + bx ip + .align 2, 0 +_02039C38: .word sub_02039C64 + arm_func_end sub_02039C2C + + arm_func_start sub_02039C3C +sub_02039C3C: ; 0x02039C3C + stmdb sp!, {r4, lr} + mov r2, #2 + bl sub_02039C64 + ldr r1, _02039C60 ; =sub_0203BA80 + mov r2, #0 + mov r4, r0 + bl sub_0203189C + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02039C60: .word sub_0203BA80 + arm_func_end sub_02039C3C + + arm_func_start sub_02039C64 +sub_02039C64: ; 0x02039C64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + mov r5, r0 + mov r4, r2 + bl sub_0203AD68 + cmp r0, #0 + mvnne r0, #1 + bne _0203A4CC + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _02039CA8 + mov r0, #0x8a0 + mov r1, #8 + bl MemAlloc + ldr r1, _0203A4D4 ; =_020AFE5C + str r0, [r1, #0x10] +_02039CA8: + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r0, _0203A4D8 ; =_0209C764 + ldrsh r6, [r1, #2] + mov r2, r5 + mov r3, r4 + str r6, [sp] + ldr r1, [r1, #4] + bl Debug_Print0 + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r1, [r0, #4] + cmp r1, r5 + beq _02039CF0 + mov r1, #1 + str r1, [r0, #0xc] + mov r1, #0 + str r1, [r0, #8] + str r5, [r0, #4] + strh r1, [r0, #2] +_02039CF0: + ldr r2, _0203A4D4 ; =_020AFE5C + mov r0, #0 + ldrsh r1, [r2, #2] + sub r3, r0, #2 + strh r1, [r2] + ldr r1, [r2, #0x10] + str r4, [r1] + ldr r1, [r2, #0x10] + strb r0, [r1, #8] + ldr r1, [r2, #0x10] + strb r0, [r1, #9] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xa] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xb] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xc] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xd] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xe] + ldr r1, [r2, #0x10] + strb r0, [r1, #0x10] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x468] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x469] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x505] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x506] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x507] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x50c] + ldr r1, [r2, #0x10] + strb r3, [r1, #0x5bc] + ldr r1, [r2, #0x10] + add r1, r1, #0x600 + strh r0, [r1, #0x70] + ldr r1, [r2, #0x10] + strb r0, [r1, #0x46a] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xf] + ldr r1, [r2, #4] + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _02039E94 +_02039DB0: ; jump table + b _02039E94 ; case 0 + b _02039DE4 ; case 1 + b _02039DF4 ; case 2 + b _02039E54 ; case 3 + b _02039E44 ; case 4 + b _02039E94 ; case 5 + b _02039E78 ; case 6 + b _02039E10 ; case 7 + b _02039E04 ; case 8 + b _02039E78 ; case 9 + b _02039E78 ; case 10 + b _02039E78 ; case 11 + b _02039E78 ; case 12 +_02039DE4: + ldr r0, [r2, #0x10] + mov r1, #1 + strb r1, [r0, #0xe] + b _02039E94 +_02039DF4: + ldr r0, [r2, #0x10] + mov r1, #1 + strb r1, [r0, #8] + b _02039E94 +_02039E04: + ldr r0, [r2, #0x10] + mov r1, #1 + strb r1, [r0, #0x10] +_02039E10: + ldr r0, _0203A4D4 ; =_020AFE5C + mov r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0xd] + bl sub_0204E210 + cmp r0, #2 + bne _02039E44 + bl sub_0204E3C8 + cmp r0, #0 + ldrne r0, _0203A4D4 ; =_020AFE5C + movne r1, #1 + ldrne r0, [r0, #0x10] + strneb r1, [r0, #0xf] +_02039E44: + ldr r0, _0203A4D4 ; =_020AFE5C + mov r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0xc] +_02039E54: + ldr r0, _0203A4D4 ; =_020AFE5C + mov r2, #1 + ldr r1, [r0, #0x10] + strb r2, [r1, #0xb] + ldr r1, [r0, #0x10] + strb r2, [r1, #9] + ldr r0, [r0, #0x10] + strb r2, [r0, #0xa] + b _02039E94 +_02039E78: + ldr r1, [r2, #0x10] + mov r3, #1 + strb r3, [r1, #8] + ldr r1, [r2, #0x10] + strb r0, [r1, #9] + ldr r1, [r2, #0x10] + strb r0, [r1, #0xa] +_02039E94: + ldr r2, _0203A4D4 ; =_020AFE5C + mvn r4, #0 + ldr r0, [r2, #0x10] + mov r5, #0 + str r5, [r0, #4] + add r1, r4, #0x22c +_02039EAC: + ldr r3, [r2, #0x10] + add r0, r5, #1 + add r3, r3, r5, lsl #1 + mov r0, r0, lsl #0x10 + strh r4, [r3, #0x12] + cmp r1, r0, asr #16 + mov r5, r0, asr #0x10 + bgt _02039EAC + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r0, [r0, #4] + sub r0, r0, #5 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0203A144 +_02039EE4: ; jump table + b _02039F04 ; case 0 + b _0203A034 ; case 1 + b _0203A144 ; case 2 + b _0203A144 ; case 3 + b _0203A034 ; case 4 + b _0203A034 ; case 5 + b _0203A034 ; case 6 + b _0203A034 ; case 7 +_02039F04: + bl sub_02059B08 + cmp r0, #0 + beq _02039FA8 + bl GetHero + mov r5, r0 + bl GetPartner + mov r4, r0 + cmp r5, #0 + beq _02039F64 + add r1, sp, #0x10 + mov r0, r5 + bl GetEvolutionPossibilities + ldrsh r0, [sp, #0x18] + cmp r0, #0 + beq _02039F64 + bl GetHeroMemberIdx + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r5, [r1, #0x10] + ldr r3, [r5, #4] + add r2, r3, #1 + str r2, [r5, #4] + ldr r1, [r1, #0x10] + add r1, r1, r3, lsl #1 + strh r0, [r1, #0x12] +_02039F64: + cmp r4, #0 + beq _02039FA8 + add r1, sp, #0x10 + mov r0, r4 + bl GetEvolutionPossibilities + ldrsh r0, [sp, #0x18] + cmp r0, #0 + beq _02039FA8 + bl GetPartnerMemberIdx + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r4, [r1, #0x10] + ldr r3, [r4, #4] + add r2, r3, #1 + str r2, [r4, #4] + ldr r1, [r1, #0x10] + add r1, r1, r3, lsl #1 + strh r0, [r1, #0x12] +_02039FA8: + ldr r6, _0203A4D4 ; =_020AFE5C + ldr r4, _0203A4DC ; =0x0000022B + ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR + mov sb, #5 + mov sl, #0 + mov r8, #1 + add fp, sp, #0x10 + mov r5, #0x44 +_02039FC8: + smulbb r2, sb, r5 + ldr r3, [r7] + ldrb r0, [r3, r2] + tst r0, #1 + movne r0, r8 + moveq r0, sl + tst r0, #0xff + beq _0203A01C + mov r1, fp + add r0, r3, r2 + bl GetEvolutionPossibilities + ldrsh r0, [sp, #0x18] + cmp r0, #0 + beq _0203A01C + ldr r2, [r6, #0x10] + ldr r1, [r2, #4] + add r0, r1, #1 + str r0, [r2, #4] + ldr r0, [r6, #0x10] + add r0, r0, r1, lsl #1 + strh sb, [r0, #0x12] +_0203A01C: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + cmp r4, r0, asr #16 + mov sb, r0, asr #0x10 + bgt _02039FC8 + b _0203A278 +_0203A034: + bl GetMainCharacter1MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _0203A064 + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r4, [r1, #0x10] + ldr r3, [r4, #4] + add r2, r3, #1 + str r2, [r4, #4] + ldr r1, [r1, #0x10] + add r1, r1, r3, lsl #1 + strh r0, [r1, #0x12] +_0203A064: + bl GetMainCharacter2MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _0203A094 + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r4, [r1, #0x10] + ldr r3, [r4, #4] + add r2, r3, #1 + str r2, [r4, #4] + ldr r1, [r1, #0x10] + add r1, r1, r3, lsl #1 + strh r0, [r1, #0x12] +_0203A094: + bl GetMainCharacter3MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _0203A0C4 + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r4, [r1, #0x10] + ldr r3, [r4, #4] + add r2, r3, #1 + str r2, [r4, #4] + ldr r1, [r1, #0x10] + add r1, r1, r3, lsl #1 + strh r0, [r1, #0x12] +_0203A0C4: + ldr r6, _0203A4D4 ; =_020AFE5C + ldr r4, _0203A4DC ; =0x0000022B + ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR + mov sb, #5 + mov sl, #0 + mov r8, #1 + mov r5, #0x44 +_0203A0E0: + smulbb r0, sb, r5 + ldr r1, [r7] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, r8 + moveq r0, sl + tst r0, #0xff + beq _0203A12C + mov r0, sb + bl sub_02056410 + cmp r0, #0 + beq _0203A12C + ldr r2, [r6, #0x10] + ldr r1, [r2, #4] + add r0, r1, #1 + str r0, [r2, #4] + ldr r0, [r6, #0x10] + add r0, r0, r1, lsl #1 + strh sb, [r0, #0x12] +_0203A12C: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + cmp r4, r0, asr #16 + mov sb, r0, asr #0x10 + bgt _0203A0E0 + b _0203A278 +_0203A144: + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #9] + cmp r0, #0 + bne _0203A198 + bl GetMainCharacter1MemberIdx + mov r4, r0 + mvn r1, #0 + cmp r4, r1 + beq _0203A198 + bl sub_0203AB3C + cmp r0, #0 + beq _0203A198 + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r3, [r0, #0x10] + ldr r2, [r3, #4] + add r1, r2, #1 + str r1, [r3, #4] + ldr r0, [r0, #0x10] + add r0, r0, r2, lsl #1 + strh r4, [r0, #0x12] +_0203A198: + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _0203A22C + bl GetMainCharacter2MemberIdx + mov r4, r0 + mvn r1, #0 + cmp r4, r1 + beq _0203A1EC + bl sub_0203AB3C + cmp r0, #0 + beq _0203A1EC + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r3, [r0, #0x10] + ldr r2, [r3, #4] + add r1, r2, #1 + str r1, [r3, #4] + ldr r0, [r0, #0x10] + add r0, r0, r2, lsl #1 + strh r4, [r0, #0x12] +_0203A1EC: + bl GetMainCharacter3MemberIdx + mov r4, r0 + mvn r1, #0 + cmp r4, r1 + beq _0203A22C + bl sub_0203AB3C + cmp r0, #0 + beq _0203A22C + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r3, [r0, #0x10] + ldr r2, [r3, #4] + add r1, r2, #1 + str r1, [r3, #4] + ldr r0, [r0, #0x10] + add r0, r0, r2, lsl #1 + strh r4, [r0, #0x12] +_0203A22C: + ldr r6, _0203A4D4 ; =_020AFE5C + ldr r5, _0203A4DC ; =0x0000022B + mov r4, #5 +_0203A238: + mov r0, r4 + bl sub_0203AB3C + cmp r0, #0 + beq _0203A264 + ldr r2, [r6, #0x10] + ldr r1, [r2, #4] + add r0, r1, #1 + str r0, [r2, #4] + ldr r0, [r6, #0x10] + add r0, r0, r1, lsl #1 + strh r4, [r0, #0x12] +_0203A264: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + cmp r5, r0, asr #16 + mov r4, r0, asr #0x10 + bgt _0203A238 +_0203A278: + ldr r1, _0203A4E4 ; =_0209C604 + add r0, sp, #8 + ldr r2, [r1, #4] + ldr r1, [r1] + str r2, [sp, #0xc] + str r1, [sp, #8] + bl sub_020584F8 + bl sub_0203AF28 + ldr r0, _0203A4D4 ; =_020AFE5C + ldrsh r0, [r0, #2] + bl sub_0203AAF8 + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r2, [r1, #0x10] + str r0, [r2, #0x46c] + ldr r0, [r1, #4] + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _0203A330 +_0203A2C0: ; jump table + b _0203A330 ; case 0 + b _0203A330 ; case 1 + b _0203A31C ; case 2 + b _0203A330 ; case 3 + b _0203A330 ; case 4 + b _0203A330 ; case 5 + b _0203A31C ; case 6 + b _0203A330 ; case 7 + b _0203A330 ; case 8 + b _0203A2F4 ; case 9 + b _0203A308 ; case 10 + b _0203A31C ; case 11 + b _0203A31C ; case 12 +_0203A2F4: + ldr r0, [r1, #0x10] + ldr r1, _0203A4E8 ; =0x000002B7 + add r0, r0, #0x400 + strh r1, [r0, #0x74] + b _0203A344 +_0203A308: + ldr r0, [r1, #0x10] +#ifdef JAPAN + ldr r1, _0203A8F4 ; =0x00002FD8 +#else + mov r1, #0x2b8 +#endif + add r0, r0, #0x400 + strh r1, [r0, #0x74] + b _0203A344 +_0203A31C: + ldr r0, [r1, #0x10] + ldr r1, _0203A4EC ; =0x00000302 + add r0, r0, #0x400 + strh r1, [r0, #0x74] + b _0203A344 +_0203A330: + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r1, _0203A4F0 ; =0x00000303 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + strh r1, [r0, #0x74] +_0203A344: + ldr r2, _0203A4D4 ; =_020AFE5C + mov r3, #0x10 + ldr r0, [r2, #0x10] + mov r1, #0xd + str r3, [r0, #0x478] + ldr r0, [r2, #0x10] + str r1, [r0, #0x470] + ldr r0, [r2, #4] + sub r0, r0, #6 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0203A420 +_0203A374: ; jump table + b _0203A3E0 ; case 0 + b _0203A420 ; case 1 + b _0203A420 ; case 2 + b _0203A390 ; case 3 + b _0203A3E0 ; case 4 + b _0203A3E0 ; case 5 + b _0203A3E0 ; case 6 +_0203A390: + ldr r3, [r2, #0x10] + ldr r0, _0203A4F4 ; =_0209C668 + add r1, r3, #0x72 + add r1, r1, #0x600 + str r1, [r3, #0x4cc] + ldr r3, [r2, #0x10] + ldr r1, _0203A4F8 ; =0x00401E33 + add r2, r3, #0x500 + ldrsh r4, [r2, #0xd4] + add r2, r3, #0x6c + ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem + str r4, [sp] + mov r4, #6 + add r2, r2, #0x400 + str r4, [sp, #4] + bl CreateTeamSelectionMenu + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r1, [r1, #0x10] + strb r0, [r1, #0x468] + b _0203A4BC +_0203A3E0: + ldr r2, [r2, #0x10] + ldr r0, _0203A4F4 ; =_0209C668 + add r1, r2, #0x500 + ldrsh r4, [r1, #0xd4] + add r2, r2, #0x6c + ldr r1, _0203A500 ; =0x00401C33 + ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem + str r4, [sp] + mov r4, #6 + add r2, r2, #0x400 + str r4, [sp, #4] + bl CreateTeamSelectionMenu + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r1, [r1, #0x10] + strb r0, [r1, #0x468] + b _0203A4BC +_0203A420: + ldr r1, _0203A4D4 ; =_020AFE5C + ldr r3, _0203A504 ; =sub_0203B91C + ldr r0, [r1, #0x10] + ldr r2, _0203A508 ; =_0203BA24 + str r3, [r0, #0x4e0] + ldr r0, [r1, #0x10] + mov r3, #0 + str r2, [r0, #0x4e8] + ldr r2, [r1, #0x10] + ldr r0, _0203A4F4 ; =_0209C668 + str r3, [r2, #0x508] + ldr r3, [r1, #0x10] + ldr r1, _0203A50C ; =0x00447C33 + add r2, r3, #0x500 + ldrsh r4, [r2, #0xd4] + add r2, r3, #0x6c + ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem + str r4, [sp] + mov r4, #8 + add r2, r2, #0x400 + str r4, [sp, #4] + bl CreateTeamSelectionMenu + ldr r2, _0203A4D4 ; =_020AFE5C + ldr r1, _0203A510 ; =_0203B884 + ldr r3, [r2, #0x10] + strb r0, [r3, #0x468] + ldr r0, [r2, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_02031888 + ldr r0, _0203A514 ; =_0209C638 + ldr r1, _0203A518 ; =sub_0203C784 + bl CreateTextBox + ldr r1, _0203A4D4 ; =_020AFE5C + mov r2, #1 + ldr r3, [r1, #0x10] + strb r0, [r3, #0x469] + ldr r0, [r1, #0x10] + strb r2, [r0, #0x46a] +_0203A4BC: + ldr r0, _0203A4D4 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] +_0203A4CC: + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0203A4D4: .word _020AFE5C +_0203A4D8: .word _0209C764 +_0203A4DC: .word 0x0000022B +_0203A4E0: .word TEAM_MEMBER_TABLE_PTR +_0203A4E4: .word _0209C604 +#ifdef JAPAN +_0203A4E8: .word 0x00002FD7 +_0203A8F4: .word 0x00002FD8 +_0203A4EC: .word 0x000023AA +_0203A4F0: .word 0x000023AB +#else +_0203A4E8: .word 0x000002B7 +_0203A4EC: .word 0x00000302 +_0203A4F0: .word 0x00000303 +#endif +_0203A4F4: .word _0209C668 +_0203A4F8: .word 0x00401E33 +_0203A4FC: .word TeamSelectionMenuGetItem +_0203A500: .word 0x00401C33 +_0203A504: .word sub_0203B91C +_0203A508: .word sub_0203BA24 +_0203A50C: .word 0x00447C33 +_0203A510: .word sub_0203B884 +_0203A514: .word _0209C638 +_0203A518: .word sub_0203C784 + arm_func_end sub_02039C64 + + arm_func_start sub_0203A51C +sub_0203A51C: ; 0x0203A51C + stmdb sp!, {r3, lr} + ldr r0, _0203A5A4 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0203AA20 + ldr r1, _0203A5A4 ; =_020AFE5C + strh r0, [r1] + bl sub_0203AAB0 + ldr r1, _0203A5A4 ; =_020AFE5C + strh r0, [r1, #2] + ldr r0, [r1, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl CloseTeamSelectionMenu + ldr r0, _0203A5A4 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x69] + cmp r0, r1 + beq _0203A588 + bl CloseTextBox + ldr r0, _0203A5A4 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x469] +_0203A588: + ldr r0, _0203A5A4 ; =_020AFE5C + ldr r0, [r0, #0x10] + bl MemFree + ldr r0, _0203A5A4 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #0x10] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A5A4: .word _020AFE5C + arm_func_end sub_0203A51C + + arm_func_start sub_0203A5A8 +sub_0203A5A8: ; 0x0203A5A8 + stmdb sp!, {r3, lr} + ldr r0, _0203A5EC ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0203AA20 + ldr r1, _0203A5EC ; =_020AFE5C + strh r0, [r1] + bl sub_0203AAB0 + ldr r1, _0203A5EC ; =_020AFE5C + strh r0, [r1, #2] + ldr r0, [r1, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl IsTeamSelectionMenuActive + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A5EC: .word _020AFE5C + arm_func_end sub_0203A5A8 + + arm_func_start sub_0203A5F0 +sub_0203A5F0: ; 0x0203A5F0 + stmdb sp!, {r3, lr} + ldr r0, _0203A614 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_020318D0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A614: .word _020AFE5C + arm_func_end sub_0203A5F0 + + arm_func_start sub_0203A618 +sub_0203A618: ; 0x0203A618 + stmdb sp!, {r3, lr} + ldr r0, _0203A634 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0203A658 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A634: .word _020AFE5C + arm_func_end sub_0203A618 + + arm_func_start sub_0203A638 +sub_0203A638: ; 0x0203A638 + stmdb sp!, {r3, lr} + ldr r0, _0203A654 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0203A6BC + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A654: .word _020AFE5C + arm_func_end sub_0203A638 + + arm_func_start sub_0203A658 +sub_0203A658: ; 0x0203A658 + stmdb sp!, {r3, lr} + bl sub_0203AA20 + ldr r1, _0203A6B8 ; =_020AFE5C + strh r0, [r1] + bl sub_0203AAB0 + ldr r1, _0203A6B8 ; =_020AFE5C + strh r0, [r1, #2] + ldr r0, [r1, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_0202812C + ldr r0, _0203A6B8 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x69] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl CloseTextBox + ldr r0, _0203A6B8 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x469] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A6B8: .word _020AFE5C + arm_func_end sub_0203A658 + + arm_func_start sub_0203A6BC +sub_0203A6BC: ; 0x0203A6BC + stmdb sp!, {r3, lr} + ldr r0, _0203A750 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_02028354 + cmp r0, #3 + bne _0203A6F0 + ldr r0, _0203A750 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_0202810C +_0203A6F0: + ldr r0, _0203A750 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_0203111C + ldr r0, _0203A750 ; =_020AFE5C + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0x46a] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x400 + ldrsb r0, [r0, #0x69] + mvn r1, #1 + cmp r0, r1 + bne _0203A748 + ldr r0, _0203A754 ; =_0209C638 + ldr r1, _0203A758 ; =sub_0203C784 + bl CreateTextBox + ldr r1, _0203A750 ; =_020AFE5C + ldr r1, [r1, #0x10] + strb r0, [r1, #0x469] + ldmia sp!, {r3, pc} +_0203A748: + bl IsTextboxState3 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A750: .word _020AFE5C +_0203A754: .word _0209C638 +_0203A758: .word sub_0203C784 + arm_func_end sub_0203A6BC + + arm_func_start TeamSelectionMenuGetItem +TeamSelectionMenuGetItem: ; 0x0203A75C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x28 + ldr r3, _0203A960 ; =_020AFE5C + ldr r2, _0203A964 ; =TEAM_MEMBER_TABLE_PTR + ldr r5, [r3, #0x10] + mov r8, r1 + add r1, r5, r8, lsl #1 + ldrsh r6, [r1, #0x12] + ldr r4, [r2] + add r1, r5, r8 + mov r2, #0 + strb r2, [r1, #0x672] + mov r7, #0x44 + ldr r1, [r3, #4] + smlabb r4, r6, r7, r4 + mov sb, r0 + cmp r1, #9 + bne _0203A85C + ldr r0, [r3, #0x10] + add r0, r0, #0x600 + ldrsh r0, [r0, #0x70] + bl GetItemMoveId16 + mov r5, #0 + mov r3, r5 + mov ip, #1 + mov r2, #6 + b _0203A7FC +_0203A7C8: + smlabb lr, r5, r2, r4 + ldrb r1, [lr, #0x22] + tst r1, #1 + movne r1, ip + moveq r1, r3 + tst r1, #0xff + beq _0203A7F0 + ldrh r1, [lr, #0x24] + cmp r0, r1 + beq _0203A804 +_0203A7F0: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 +_0203A7FC: + cmp r5, #4 + blt _0203A7C8 +_0203A804: + ldrsh r1, [r4, #4] + bl sub_02053D1C + cmp r0, #0 + beq _0203A844 + cmp r5, #4 + blt _0203A844 + mov r0, r6 + bl sub_02056410 + cmp r0, #0 + beq _0203A8E4 + mov r0, r6 + bl sub_020564B0 + cmp r0, #0 + movne r7, #0x59 + moveq r7, #0x46 + b _0203A8E4 +_0203A844: + ldr r0, _0203A960 ; =_020AFE5C + mov r1, #3 + ldr r0, [r0, #0x10] + add r0, r0, r8 + strb r1, [r0, #0x672] + b _0203A8E4 +_0203A85C: + mov r0, r6 + bl sub_02056410 + cmp r0, #0 + beq _0203A884 + mov r0, r6 + bl sub_020564B0 + cmp r0, #0 + movne r7, #0x59 + moveq r7, #0x46 + b _0203A8E4 +_0203A884: + ldr r0, _0203A960 ; =_020AFE5C + ldr r0, [r0, #4] +#ifdef JAPAN + sub r0, r0, #5 + cmp r0, #7 +#else + cmp r0, #0xc +#endif + addls pc, pc, r0, lsl #2 + b _0203A8D0 +_0203A898: ; jump table +#ifndef JAPAN + b _0203A8D0 ; case 0 + b _0203A8D0 ; case 1 + b _0203A8D0 ; case 2 + b _0203A8CC ; case 3 + b _0203A8CC ; case 4 +#endif + b _0203A8CC ; case 5 + b _0203A8CC ; case 6 + b _0203A8CC ; case 7 + b _0203A8CC ; case 8 + b _0203A8CC ; case 9 + b _0203A8CC ; case 10 + b _0203A8CC ; case 11 + b _0203A8CC ; case 12 +_0203A8CC: + b _0203A8E4 +_0203A8D0: + mov r0, r6 + bl sub_02056F60 + cmp r0, #0 + movne r7, #0x44 + moveq r7, #0x57 +_0203A8E4: + add r0, sp, #0x14 + add r1, r4, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldrsh r0, [r4, #4] + bl GetDexNumber + mov r1, r0 + add r0, sp, #4 + mov r2, #3 + bl sub_0202372C + ldr r0, _0203A960 ; =_020AFE5C + add r2, sp, #4 + ldr r0, [r0, #0x10] + add r0, r0, r8 + ldrb r0, [r0, #0x672] + cmp r0, #0 + bne _0203A944 + ldr r1, _0203A968 ; =_0209C798 + add r4, sp, #0x14 + mov r0, sb + mov r3, r7 + str r4, [sp] + bl SprintfStatic__0203A970 + b _0203A954 +_0203A944: + ldr r1, _0203A96C ; =_0209C7B8 + add r3, sp, #0x14 + mov r0, sb + bl SprintfStatic__0203A970 +_0203A954: + mov r0, sb + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0203A960: .word _020AFE5C +_0203A964: .word TEAM_MEMBER_TABLE_PTR +_0203A968: .word _0209C798 +_0203A96C: .word _0209C7B8 + arm_func_end TeamSelectionMenuGetItem + + arm_func_start SprintfStatic__0203A970 +SprintfStatic__0203A970: ; 0x0203A970 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__0203A970 + + arm_func_start sub_0203A998 +sub_0203A998: ; 0x0203A998 + ldr r0, _0203A9B4 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0203A9B4: .word _020AFE5C + arm_func_end sub_0203A998 + + arm_func_start sub_0203A9B8 +sub_0203A9B8: ; 0x0203A9B8 + stmdb sp!, {r3, lr} + ldr r0, _0203A9E8 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + addne r0, r0, #0x400 + ldrnesb r0, [r0, #0x68] + mvnne r1, #1 + cmpne r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl IsTeamSelectionMenuActive + ldmia sp!, {r3, pc} + .align 2, 0 +_0203A9E8: .word _020AFE5C + arm_func_end sub_0203A9B8 + + arm_func_start sub_0203A9EC +sub_0203A9EC: ; 0x0203A9EC + stmdb sp!, {r3, lr} + ldr r0, _0203AA1C ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + addne r0, r0, #0x400 + ldrnesb r0, [r0, #0x68] + mvnne r1, #1 + cmpne r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl IsTeamSelectionMenuState3 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203AA1C: .word _020AFE5C + arm_func_end sub_0203A9EC + + arm_func_start sub_0203AA20 +sub_0203AA20: ; 0x0203AA20 + stmdb sp!, {r3, lr} + ldr r0, _0203AAAC ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + addne r0, r0, #0x400 + ldrnesb r0, [r0, #0x68] + mvnne r1, #1 + cmpne r0, r1 + beq _0203AAA0 + bl IsTeamSelectionMenuActive + cmp r0, #0 + beq _0203AA68 + ldr r0, _0203AAAC ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_020311D4 + b _0203AA7C +_0203AA68: + ldr r0, _0203AAAC ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_020311E8 +_0203AA7C: + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + cmp r1, #0 + mvnlt r0, #0 + ldrge r0, _0203AAAC ; =_020AFE5C + ldrge r0, [r0, #0x10] + addge r0, r0, r1, lsl #1 + ldrgesh r0, [r0, #0x12] + ldmia sp!, {r3, pc} +_0203AAA0: + ldr r0, _0203AAAC ; =_020AFE5C + ldrsh r0, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203AAAC: .word _020AFE5C + arm_func_end sub_0203AA20 + + arm_func_start sub_0203AAB0 +sub_0203AAB0: ; 0x0203AAB0 + stmdb sp!, {r3, lr} + ldr r0, _0203AAF4 ; =_020AFE5C + ldr r0, [r0, #0x10] + cmp r0, #0 + addne r0, r0, #0x400 + ldrnesb r0, [r0, #0x68] + mvnne r1, #1 + cmpne r0, r1 + ldreq r0, _0203AAF4 ; =_020AFE5C + ldreqsh r0, [r0, #2] + ldmeqia sp!, {r3, pc} + bl sub_020311D4 + ldr r1, _0203AAF4 ; =_020AFE5C + ldr r1, [r1, #0x10] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #0x12] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203AAF4: .word _020AFE5C + arm_func_end sub_0203AAB0 + + arm_func_start sub_0203AAF8 +sub_0203AAF8: ; 0x0203AAF8 + ldr r1, _0203AB38 ; =_020AFE5C + mov r2, #0 + ldr r3, [r1, #0x10] + add r1, r3, #0x500 + ldrsh ip, [r1, #0xd4] + b _0203AB28 +_0203AB10: + add r1, r3, r2, lsl #1 + ldrsh r1, [r1, #0x12] + cmp r0, r1 + moveq r0, r2 + bxeq lr + add r2, r2, #1 +_0203AB28: + cmp r2, ip + blt _0203AB10 + mvn r0, #0 + bx lr + .align 2, 0 +_0203AB38: .word _020AFE5C + arm_func_end sub_0203AAF8 + + arm_func_start sub_0203AB3C +sub_0203AB3C: ; 0x0203AB3C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0203AD60 ; =TEAM_MEMBER_TABLE_PTR + mov r5, r0 + mov r0, #0x44 + smulbb r2, r5, r0 + ldr r1, [r1] + ldrb r0, [r1, r2] + add r4, r1, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0203AD64 ; =_020AFE5C + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _0203AB98 + ldrsh r0, [r4, #4] + cmp r0, #0x214 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_0203AB98: + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _0203ABCC + ldrsh r0, [r4, #4] + bl sub_02054F18 + cmp r0, #0 + bne _0203ABC4 + add r0, r4, #0x22 + bl IsMovesetValidInTimeDarkness + cmp r0, #0 + bne _0203ABCC +_0203ABC4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0203ABCC: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0203AD10 + ldrsh r0, [r4, #4] + bl IsShaymin + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _0203AD64 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #0xb] + cmp r0, #0 + beq _0203AC20 + mov r0, r5 + mov r1, #0 + bl sub_02056460 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0203AC20: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #0xb] + cmp r0, #0 + beq _0203AC4C + mov r0, r5 + mov r1, #1 + bl sub_02056460 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0203AC4C: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0xf] + cmp r0, #0 + ldrneb r0, [r1, #0xb] + cmpne r0, #0 + beq _0203AC80 + mov r0, r5 + mov r1, #2 + bl sub_02056460 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0203AC80: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0203ACAC + mov r0, r5 + mov r1, #0 + bl sub_02056460 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_0203ACAC: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0203ACD8 + mov r0, r5 + mov r1, #1 + bl sub_02056460 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_0203ACD8: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0xf] + cmp r0, #0 + ldrneb r0, [r1, #8] + cmpne r0, #0 + beq _0203AD58 + mov r0, r5 + mov r1, #2 + bl sub_02056460 + cmp r0, #0 + bne _0203AD58 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0203AD10: + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _0203AD30 + mov r0, r5 + bl sub_02056410 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0203AD30: + ldr r0, _0203AD64 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0203AD58 + mov r0, r5 + bl sub_02056410 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_0203AD58: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203AD60: .word TEAM_MEMBER_TABLE_PTR +_0203AD64: .word _020AFE5C + arm_func_end sub_0203AB3C + + arm_func_start sub_0203AD68 +sub_0203AD68: ; 0x0203AD68 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + sub sb, sl, #7 + mov r6, #0 + ldr r5, _0203AF04 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0x44 + ldr fp, _0203AF08 ; =0x0000022B + b _0203AEF4 +_0203AD88: + ldr r1, [r5] + mov r0, r6, lsl #0x10 + mla r7, r6, r4, r1 + mov r0, r0, asr #0x10 + bl IsValidTeamMember + cmp r0, #0 + beq _0203AEF0 + cmp sl, #2 + bne _0203ADC4 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02056410 + cmp r0, #0 + beq _0203AEF0 + b _0203AEE8 +_0203ADC4: + cmp sl, #3 + bne _0203ADE4 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02056410 + cmp r0, #0 + bne _0203AEF0 + b _0203AEE8 +_0203ADE4: + cmp sl, #4 + bne _0203AE2C + cmp r6, #5 + blt _0203AEF0 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02056410 + cmp r0, #0 + bne _0203AEF0 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl IsMainCharacter + cmp r0, #0 + bne _0203AEF0 + ldrsh r0, [r7, #4] + cmp r0, #0x214 + bne _0203AEE8 + b _0203AEF0 +_0203AE2C: + cmp sb, #1 + bhi _0203AEE8 + mov r8, #0 + bl sub_0204E210 + cmp r0, #2 + bne _0203AE50 + bl sub_0204E3C8 + cmp r0, #0 + movne r8, #1 +_0203AE50: + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0 + bl sub_02056460 + cmp r0, #0 + bne _0203AEF0 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #1 + bl sub_02056460 + cmp r0, #0 + bne _0203AEF0 + cmp r8, #0 + beq _0203AEA0 + mov r0, r6, lsl #0x10 + mov r1, #2 + mov r0, r0, asr #0x10 + bl sub_02056460 + cmp r0, #0 + bne _0203AEF0 +_0203AEA0: + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl IsMainCharacter + cmp r0, #0 + bne _0203AEF0 + ldrsh r0, [r7, #4] + cmp r0, #0x214 + beq _0203AEF0 + cmp sl, #8 + bne _0203AED8 + ldrsh r0, [r7, #4] + bl sub_02054F18 + cmp r0, #0 + bne _0203AEF0 +_0203AED8: + ldrsh r0, [r7, #4] + bl IsShaymin + cmp r0, #0 + bne _0203AEF0 +_0203AEE8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0203AEF0: + add r6, r6, #1 +_0203AEF4: + cmp r6, fp + blt _0203AD88 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0203AF04: .word TEAM_MEMBER_TABLE_PTR +_0203AF08: .word 0x0000022B + arm_func_end sub_0203AD68 + +#ifndef JAPAN + arm_func_start sub_0203AF0C +sub_0203AF0C: ; 0x0203AF0C + ldr r0, _0203AF24 ; =_020AFE5C + mvn r1, #0 + strh r1, [r0] + mov r1, #0 + strh r1, [r0, #2] + bx lr + .align 2, 0 +_0203AF24: .word _020AFE5C + arm_func_end sub_0203AF0C +#endif + + arm_func_start sub_0203AF28 +sub_0203AF28: ; 0x0203AF28 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r1, _0203B738 ; =_020AFE5C + ldr r0, [r1, #0x10] + ldr r2, [r0, #4] + add r0, r0, #0x500 + strh r2, [r0, #0xd4] + ldr r0, [r1, #8] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0203B29C +_0203AF50: ; jump table + b _0203B29C ; case 0 + b _0203AF64 ; case 1 + b _0203B050 ; case 2 + b _0203B114 ; case 3 + b _0203B1CC ; case 4 +_0203AF64: + ldr r0, _0203B73C ; =_022AADF8 + ldrb r8, [r0] + mov r0, r8 + bl sub_0203BAEC + cmp r0, #0 + mvneq r6, #0 + beq _0203B03C + ldr r0, _0203B73C ; =_022AADF8 + mov r6, #0 + ldr r5, _0203B738 ; =_020AFE5C + mov r1, #1 + mov sb, r6 + str r1, [r5, #8] + strb r8, [r0] + mov fp, r6 + mov sl, #0x44 + ldr r4, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + b _0203B02C +_0203AFAC: + add r0, r1, sb, lsl #1 + ldrsh r2, [r0, #0x12] + ldr r0, [r4] + mov r1, fp + smulbb r7, r2, sl + add r0, r0, r7 + ldrsh r0, [r0, #4] + bl GetType + cmp r8, r0 + beq _0203AFF0 + ldr r0, [r4] + mov r1, #1 + add r0, r0, r7 + ldrsh r0, [r0, #4] + bl GetType + cmp r8, r0 + bne _0203B020 +_0203AFF0: + ldr r0, [r5, #0x10] + add r2, r6, #1 + add r1, r0, r6, lsl #1 + add r3, r0, sb, lsl #1 + ldrsh r0, [r1, #0x12] + ldrsh r3, [r3, #0x12] + mov r2, r2, lsl #0x10 + mov r6, r2, asr #0x10 + strh r3, [r1, #0x12] + ldr r1, [r5, #0x10] + add r1, r1, sb, lsl #1 + strh r0, [r1, #0x12] +_0203B020: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_0203B02C: + ldr r1, [r5, #0x10] + ldr r0, [r1, #4] + cmp sb, r0 + blt _0203AFAC +_0203B03C: + ldr r0, _0203B738 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + strh r6, [r0, #0xd4] + b _0203B29C +_0203B050: + ldr r0, _0203B73C ; =_022AADF8 + ldrsh r6, [r0] + mov r0, r6 + bl sub_0203BB80 + cmp r0, #0 + mvneq r5, #0 + beq _0203B100 + ldr r0, _0203B73C ; =_022AADF8 + mov r5, #0 + ldr sb, _0203B738 ; =_020AFE5C + mov r1, #2 + mov r4, r5 + str r1, [sb, #8] + strh r6, [r0] + ldr r8, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + mov r7, #0x44 + b _0203B0F0 +_0203B094: + add r0, r1, r4, lsl #1 + ldrsh r0, [r0, #0x12] + ldr r1, [r8] + smlabb r0, r0, r7, r1 + ldrsh r0, [r0, #4] + bl GetDexNumber + cmp r6, r0 + bne _0203B0E4 + ldr r0, [sb, #0x10] + add r1, r5, #1 + add r3, r0, r5, lsl #1 + add r2, r0, r4, lsl #1 + ldrsh r0, [r3, #0x12] + ldrsh r2, [r2, #0x12] + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + strh r2, [r3, #0x12] + ldr r1, [sb, #0x10] + add r1, r1, r4, lsl #1 + strh r0, [r1, #0x12] +_0203B0E4: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_0203B0F0: + ldr r1, [sb, #0x10] + ldr r0, [r1, #4] + cmp r4, r0 + blt _0203B094 +_0203B100: + ldr r0, _0203B738 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + strh r5, [r0, #0xd4] + b _0203B29C +_0203B114: + ldr r0, _0203B73C ; =_022AADF8 + ldrb r4, [r0] + mov r0, r4 + bl sub_0203BBEC + cmp r0, #0 + mvneq r2, #0 + beq _0203B1B8 + ldr r0, _0203B73C ; =_022AADF8 + mov r2, #0 + ldr r6, _0203B738 ; =_020AFE5C + mov r3, #3 + str r3, [r6, #8] + mov r1, r2 + strb r4, [r0] + ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + mov r3, #0x44 + b _0203B1A8 +_0203B158: + add r0, r7, r1, lsl #1 + ldrsh r0, [r0, #0x12] + ldr r7, [r5] + smlabb r7, r0, r3, r7 + ldrb r7, [r7, #0x3a] + cmp r4, r7 + bne _0203B19C + ldr r8, [r6, #0x10] + add r7, r2, #1 + add sb, r8, r2, lsl #1 + ldrsh r8, [sb, #0x12] + mov r2, r7, lsl #0x10 + mov r2, r2, asr #0x10 + strh r0, [sb, #0x12] + ldr r0, [r6, #0x10] + add r0, r0, r1, lsl #1 + strh r8, [r0, #0x12] +_0203B19C: + add r0, r1, #1 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 +_0203B1A8: + ldr r7, [r6, #0x10] + ldr r0, [r7, #4] + cmp r1, r0 + blt _0203B158 +_0203B1B8: + ldr r0, _0203B738 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + strh r2, [r0, #0xd4] + b _0203B29C +_0203B1CC: + ldr r0, _0203B73C ; =_022AADF8 + ldrh sb, [r0] + mov r0, sb + bl sub_0203BC50 + cmp r0, #0 + mvneq r8, #0 + beq _0203B28C + ldr r0, _0203B73C ; =_022AADF8 + mov r8, #0 + ldr r6, _0203B738 ; =_020AFE5C + mov r1, #4 + mov r7, r8 + str r1, [r6, #8] + strh sb, [r0] + add sl, sp, #0 + ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0x44 + b _0203B27C +_0203B214: + add r0, r1, r7, lsl #1 + ldrsh r0, [r0, #0x12] + ldr r1, [r5] + smlabb r0, r0, r4, r1 + ldrsh r0, [r0, #4] + bl GetNameString + str r0, [sp] + mov r0, sl + bl sub_0202065C + cmp sb, r0 + bne _0203B270 + ldr r0, [r6, #0x10] + add r2, r8, #1 + add r1, r0, r8, lsl #1 + add r3, r0, r7, lsl #1 + ldrsh r0, [r1, #0x12] + ldrsh r3, [r3, #0x12] + mov r2, r2, lsl #0x10 + mov r8, r2, asr #0x10 + strh r3, [r1, #0x12] + ldr r1, [r6, #0x10] + add r1, r1, r7, lsl #1 + strh r0, [r1, #0x12] +_0203B270: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_0203B27C: + ldr r1, [r6, #0x10] + ldr r0, [r1, #4] + cmp r7, r0 + blt _0203B214 +_0203B28C: + ldr r0, _0203B738 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + strh r8, [r0, #0xd4] +_0203B29C: + ldr r0, _0203B738 ; =_020AFE5C + mov r8, #0 + ldr r2, [r0, #0x10] + add r0, r2, #0x500 + ldrsh r1, [r0, #0xd4] + cmp r1, #0 + ldrle r1, [r2, #4] + strleh r1, [r0, #0xd4] + mov r1, r8 +_0203B2C0: + ldr r0, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + mov r3, r1, lsl #1 + ldr r0, [r0] + mvn r2, #0 + add r0, r0, #0x9000 + ldr r0, [r0, #0x870] + ldrsh r0, [r0, r3] + cmp r0, r2 + beq _0203B35C + ldr r2, _0203B738 ; =_020AFE5C + mov r5, #0 + ldr r4, [r2, #0x10] + add r2, r4, #0x500 + ldrsh r3, [r2, #0xd4] + b _0203B354 +_0203B2FC: + add r2, r4, r5, lsl #1 + ldrsh r2, [r2, #0x12] + cmp r0, r2 + bne _0203B350 + sub r5, r5, #1 + ldr r2, _0203B738 ; =_020AFE5C + b _0203B32C +_0203B318: + ldr r3, [r2, #0x10] + add r4, r3, r5, lsl #1 + ldrsh r3, [r4, #0x12] + sub r5, r5, #1 + strh r3, [r4, #0x14] +_0203B32C: + cmp r5, r8 + bge _0203B318 + ldr r2, _0203B738 ; =_020AFE5C + mov r3, r8, lsl #1 + ldr r2, [r2, #0x10] + add r8, r8, #1 + add r2, r2, r3 + strh r0, [r2, #0x12] + b _0203B35C +_0203B350: + add r5, r5, #1 +_0203B354: + cmp r5, r3 + blt _0203B2FC +_0203B35C: + add r1, r1, #1 + cmp r1, #4 + blt _0203B2C0 + bl GetAppointedLeaderMemberIdx + bl sub_0203B7AC + cmp r0, r8 + addge r8, r8, #1 + bl GetMainCharacter3MemberIdx + bl sub_0203B7AC + cmp r0, r8 + addge r8, r8, #1 + bl GetMainCharacter2MemberIdx + bl sub_0203B7AC + cmp r0, r8 + addge r8, r8, #1 + bl GetMainCharacter1MemberIdx + bl sub_0203B7AC + cmp r0, r8 + ldr r0, _0203B738 ; =_020AFE5C + addge r8, r8, #1 + ldr r1, [r0, #0xc] + cmp r1, #4 + addls pc, pc, r1, lsl #2 + b _0203B714 +_0203B3BC: ; jump table + b _0203B714 ; case 0 + b _0203B578 ; case 1 + b _0203B648 ; case 2 + b _0203B3D0 ; case 3 + b _0203B4A8 ; case 4 +_0203B3D0: + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsh sb, [r0, #0xd4] + cmp r8, sb + bge _0203B714 + mov r0, r8, lsl #0x10 + mov sl, r0, asr #0x10 + b _0203B49C +_0203B3F0: + ldr r0, _0203B738 ; =_020AFE5C + ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0, #0x10] + ldr r3, [r1] + add r0, r0, sl, lsl #1 + ldrsh r2, [r0, #0x12] + mov r0, #0x44 + mov r1, #0 + smlabb r0, r2, r0, r3 + ldrsh r0, [r0, #4] + bl GetKeyM2NSwitch + mov r1, r8, lsl #0x10 + mov r6, r0 + mov r7, r1, asr #0x10 + ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r4, _0203B738 ; =_020AFE5C + mov fp, #0x44 + b _0203B46C +_0203B438: + ldr r0, [r4, #0x10] + ldr r2, [r5] + add r0, r0, r7, lsl #1 + ldrsh r0, [r0, #0x12] + mov r1, #0 + smlabb r0, r0, fp, r2 + ldrsh r0, [r0, #4] + bl GetKeyM2NSwitch + cmp r6, r0 + blt _0203B474 + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_0203B46C: + cmp r7, sl + blt _0203B438 +_0203B474: + ldr r0, _0203B738 ; =_020AFE5C + mov r1, r7 + ldr r0, [r0, #0x10] + mov r2, sl + add r0, r0, sl, lsl #1 + ldrsh r0, [r0, #0x12] + bl sub_0203B83C + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 +_0203B49C: + cmp sl, sb + blt _0203B3F0 + b _0203B714 +_0203B4A8: + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsh r7, [r0, #0xd4] + cmp r8, r7 + bge _0203B714 + mov r0, r8, lsl #0x10 + mov sb, r0, asr #0x10 + b _0203B56C +_0203B4C8: + ldr r4, _0203B738 ; =_020AFE5C + mov r0, r8, lsl #0x10 + ldr r1, [r4, #0x10] + mov r5, r0, asr #0x10 + add r0, r1, sb, lsl #1 + ldrsh r6, [r0, #0x12] + b _0203B50C +_0203B4E4: + ldr r1, [r4, #0x10] + mov r0, r6 + add r1, r1, r5, lsl #1 + ldrsh r1, [r1, #0x12] + bl sub_02052FF8 + cmp r0, #0 + bne _0203B514 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_0203B50C: + cmp r5, sb + blt _0203B4E4 +_0203B514: + ldr r2, _0203B738 ; =_020AFE5C + mov r6, sb + ldr r0, [r2, #0x10] + add r0, r0, sb, lsl #1 + ldrsh r0, [r0, #0x12] + b _0203B548 +_0203B52C: + ldr r3, [r2, #0x10] + sub r1, r6, #1 + add r4, r3, r6, lsl #1 + ldrsh r3, [r4, #0x10] + mov r1, r1, lsl #0x10 + mov r6, r1, asr #0x10 + strh r3, [r4, #0x12] +_0203B548: + cmp r6, r5 + bgt _0203B52C + ldr r1, _0203B738 ; =_020AFE5C + add r2, sb, #1 + ldr r3, [r1, #0x10] + mov r1, r2, lsl #0x10 + add r2, r3, r5, lsl #1 + strh r0, [r2, #0x12] + mov sb, r1, asr #0x10 +_0203B56C: + cmp sb, r7 + blt _0203B4C8 + b _0203B714 +_0203B578: + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsh sb, [r0, #0xd4] + cmp r8, sb + bge _0203B714 + mov r0, r8, lsl #0x10 + mov sl, r0, asr #0x10 + b _0203B63C +_0203B598: + ldr r0, _0203B738 ; =_020AFE5C + ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0, #0x10] + ldr r2, [r1] + add r0, r0, sl, lsl #1 + ldrsh r1, [r0, #0x12] + mov r0, #0x44 + smlabb r0, r1, r0, r2 + ldrsh r0, [r0, #4] + bl FemaleToMaleForm + mov r1, r8, lsl #0x10 + mov r7, r0 + mov r6, r1, asr #0x10 + ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r4, _0203B738 ; =_020AFE5C + mov fp, #0x44 + b _0203B60C +_0203B5DC: + ldr r0, [r4, #0x10] + ldr r1, [r5] + add r0, r0, r6, lsl #1 + ldrsh r0, [r0, #0x12] + smlabb r0, r0, fp, r1 + ldrsh r0, [r0, #4] + bl FemaleToMaleForm + cmp r7, r0 + blt _0203B614 + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0203B60C: + cmp r6, sl + blt _0203B5DC +_0203B614: + ldr r0, _0203B738 ; =_020AFE5C + mov r1, r6 + ldr r0, [r0, #0x10] + mov r2, sl + add r0, r0, sl, lsl #1 + ldrsh r0, [r0, #0x12] + bl sub_0203B83C + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 +_0203B63C: + cmp sl, sb + blt _0203B598 + b _0203B714 +_0203B648: + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsh sb, [r0, #0xd4] + cmp r8, sb + bge _0203B714 + mov r0, r8, lsl #0x10 + mov sl, r0, asr #0x10 + b _0203B70C +_0203B668: + ldr r0, _0203B738 ; =_020AFE5C + ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0, #0x10] + ldr r2, [r1] + add r0, r0, sl, lsl #1 + ldrsh r1, [r0, #0x12] + mov r0, #0x44 + smlabb r0, r1, r0, r2 + ldrb r0, [r0, #1] + bl FemaleToMaleForm + mov r1, r8, lsl #0x10 + mov r6, r0 + mov r7, r1, asr #0x10 + ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR + ldr r4, _0203B738 ; =_020AFE5C + mov fp, #0x44 + b _0203B6DC +_0203B6AC: + ldr r0, [r4, #0x10] + ldr r1, [r5] + add r0, r0, r7, lsl #1 + ldrsh r0, [r0, #0x12] + smlabb r0, r0, fp, r1 + ldrb r0, [r0, #1] + bl FemaleToMaleForm + cmp r6, r0 + bgt _0203B6E4 + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_0203B6DC: + cmp r7, sl + blt _0203B6AC +_0203B6E4: + ldr r0, _0203B738 ; =_020AFE5C + mov r1, r7 + ldr r0, [r0, #0x10] + mov r2, sl + add r0, r0, sl, lsl #1 + ldrsh r0, [r0, #0x12] + bl sub_0203B83C + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 +_0203B70C: + cmp sl, sb + blt _0203B668 +_0203B714: + ldr r0, _0203B738 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x69] + cmp r0, r1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsTextboxState3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0203B738: .word _020AFE5C +_0203B73C: .word _022AADF8 +_0203B740: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_0203AF28 + + arm_func_start sub_0203B744 +sub_0203B744: ; 0x0203B744 + stmdb sp!, {r3, lr} + bl sub_0203AA20 + ldr r1, _0203B7A8 ; =_020AFE5C + strh r0, [r1] + bl sub_0203AAB0 + ldr r1, _0203B7A8 ; =_020AFE5C + strh r0, [r1, #2] + bl sub_0203AF28 + ldr r0, _0203B7A8 ; =_020AFE5C + ldr r1, [r0, #0x10] + add r0, r1, #0x400 + add r1, r1, #0x500 + ldrsb r0, [r0, #0x68] + ldrsh r1, [r1, #0xd4] + bl sub_0203117C + ldr r0, _0203B7A8 ; =_020AFE5C + ldrsh r0, [r0, #2] + bl sub_0203AAF8 + ldr r2, _0203B7A8 ; =_020AFE5C + mov r1, r0 + ldr r0, [r2, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_02031220 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203B7A8: .word _020AFE5C + arm_func_end sub_0203B744 + + arm_func_start sub_0203B7AC +sub_0203B7AC: ; 0x0203B7AC + stmdb sp!, {r3, lr} + mvn r1, #0 + cmp r0, r1 + beq _0203B830 + ldr r1, _0203B838 ; =_020AFE5C + mov ip, #0 + ldr r2, [r1, #0x10] + add r1, r2, #0x500 + ldrsh r3, [r1, #0xd4] + b _0203B828 +_0203B7D4: + add r1, r2, ip, lsl #1 + ldrsh r1, [r1, #0x12] + cmp r0, r1 + bne _0203B824 + mov lr, ip + sub ip, ip, #1 + ldr r1, _0203B838 ; =_020AFE5C + b _0203B808 +_0203B7F4: + ldr r2, [r1, #0x10] + add r3, r2, ip, lsl #1 + ldrsh r2, [r3, #0x12] + sub ip, ip, #1 + strh r2, [r3, #0x14] +_0203B808: + cmp ip, #0 + bge _0203B7F4 + ldr r1, _0203B838 ; =_020AFE5C + ldr r1, [r1, #0x10] + strh r0, [r1, #0x12] + mov r0, lr + ldmia sp!, {r3, pc} +_0203B824: + add ip, ip, #1 +_0203B828: + cmp ip, r3 + blt _0203B7D4 +_0203B830: + mvn r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203B838: .word _020AFE5C + arm_func_end sub_0203B7AC + + arm_func_start sub_0203B83C +sub_0203B83C: ; 0x0203B83C + stmdb sp!, {r4, lr} + ldr r3, _0203B880 ; =_020AFE5C + b _0203B864 +_0203B848: + ldr r4, [r3, #0x10] + sub ip, r2, #1 + add r4, r4, r2, lsl #1 + ldrsh lr, [r4, #0x10] + mov r2, ip, lsl #0x10 + mov r2, r2, asr #0x10 + strh lr, [r4, #0x12] +_0203B864: + cmp r2, r1 + bgt _0203B848 + ldr r2, _0203B880 ; =_020AFE5C + ldr r2, [r2, #0x10] + add r1, r2, r1, lsl #1 + strh r0, [r1, #0x12] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203B880: .word _020AFE5C + arm_func_end sub_0203B83C + + arm_func_start sub_0203B884 +sub_0203B884: ; 0x0203B884 + stmdb sp!, {r3, lr} + ldr r0, _0203B918 ; =_020AFE5C + ldr r1, [r0, #0xc] + cmp r1, #4 + addls pc, pc, r1, lsl #2 + b _0203B8DC +_0203B89C: ; jump table + b _0203B8D4 ; case 0 + b _0203B8B0 ; case 1 + b _0203B8BC ; case 2 + b _0203B8C8 ; case 3 + b _0203B8D4 ; case 4 +_0203B8B0: + mov r1, #2 + str r1, [r0, #0xc] + b _0203B8DC +_0203B8BC: + mov r1, #3 + str r1, [r0, #0xc] + b _0203B8DC +_0203B8C8: + mov r1, #4 + str r1, [r0, #0xc] + b _0203B8DC +_0203B8D4: + mov r1, #1 + str r1, [r0, #0xc] +_0203B8DC: + bl sub_0203B744 + ldr r0, _0203B918 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + bl sub_0203115C + ldr r0, _0203B918 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x69] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl IsTextboxState3 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203B918: .word _020AFE5C + arm_func_end sub_0203B884 + + arm_func_start sub_0203B91C +sub_0203B91C: ; 0x0203B91C + stmdb sp!, {r3, lr} + ldr r0, _0203BA18 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #6] + cmp r0, r1 + bne _0203B968 + ldr r0, _0203BA1C ; =_0209C658 + mov ip, #5 + ldr r3, _0203BA20 ; =_0209C688 + mov r1, #0x13 + mov r2, #0 + str ip, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _0203BA18 ; =_020AFE5C + ldr r1, [r1, #0x10] + strb r0, [r1, #0x506] + ldmia sp!, {r3, pc} +_0203B968: + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0203BA18 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0203B9E8 +_0203B994: ; jump table + b _0203B9AC ; case 0 + b _0203B9BC ; case 1 + b _0203B9E8 ; case 2 + b _0203B9CC ; case 3 + b _0203B9DC ; case 4 + b _0203B9E8 ; case 5 +_0203B9AC: + ldr r0, _0203BA18 ; =_020AFE5C + mov r1, #1 + str r1, [r0, #0xc] + b _0203B9E8 +_0203B9BC: + ldr r0, _0203BA18 ; =_020AFE5C + mov r1, #2 + str r1, [r0, #0xc] + b _0203B9E8 +_0203B9CC: + ldr r0, _0203BA18 ; =_020AFE5C + mov r1, #3 + str r1, [r0, #0xc] + b _0203B9E8 +_0203B9DC: + ldr r0, _0203BA18 ; =_020AFE5C + mov r1, #4 + str r1, [r0, #0xc] +_0203B9E8: + ldr r0, _0203BA18 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #6] + bl CloseSimpleMenu + ldr r0, _0203BA18 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x506] + bl sub_0203B744 + bl sub_0203A6BC + ldmia sp!, {r3, pc} + .align 2, 0 +_0203BA18: .word _020AFE5C +_0203BA1C: .word _0209C658 +_0203BA20: .word _0209C688 + arm_func_end sub_0203B91C + + arm_func_start sub_0203BA24 +sub_0203BA24: ; 0x0203BA24 + stmdb sp!, {r4, lr} + sub sp, sp, #0x58 + ldr r4, _0203BA78 ; =_0209C70C + add lr, sp, #0 + mov ip, #5 +_0203BA38: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0203BA38 + ldr r2, _0203BA7C ; =_020AFE5C + ldmia r4, {r0, r1} + stmia lr, {r0, r1} + ldr r0, [r2, #0x10] + ldr r1, [r0, #0x508] + cmp r1, #0x16 + bge _0203BA70 + add r0, sp, #0 + ldr r0, [r0, r1, lsl #2] + blx r0 +_0203BA70: + add sp, sp, #0x58 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203BA78: .word _0209C70C +_0203BA7C: .word _020AFE5C + arm_func_end sub_0203BA24 + + arm_func_start sub_0203BA80 +sub_0203BA80: ; 0x0203BA80 + stmdb sp!, {r3, lr} + ldr r0, _0203BABC ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x400 + ldrsb r0, [r0, #0x68] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_020311D4 + ldr r1, _0203BABC ; =_020AFE5C + ldr r1, [r1, #0x10] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #0x12] + bl sub_0203C9A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203BABC: .word _020AFE5C + arm_func_end sub_0203BA80 + + arm_func_start sub_0203BAC0 +sub_0203BAC0: ; 0x0203BAC0 + cmp r1, #0 + blt _0203BAD0 + cmp r1, #0x11 + blt _0203BAD8 +_0203BAD0: + mov r1, #0 + b _0203BADC +_0203BAD8: + add r1, r1, #1 +_0203BADC: + ldr ip, _0203BAE8 ; =sub_02024B94 + and r1, r1, #0xff + bx ip + .align 2, 0 +_0203BAE8: .word sub_02024B94 + arm_func_end sub_0203BAC0 + + arm_func_start sub_0203BAEC +sub_0203BAEC: ; 0x0203BAEC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, #0 + mov sl, r0 + mov r7, r8 + mov fp, #1 + mov r4, #0x44 + ldr r6, _0203BB78 ; =TEAM_MEMBER_TABLE_PTR + ldr r5, _0203BB7C ; =_020AFE5C + b _0203BB60 +_0203BB10: + add r0, r1, r8, lsl #1 + ldrsh r2, [r0, #0x12] + ldr r0, [r6] + mov r1, r7 + smulbb sb, r2, r4 + add r0, r0, sb + ldrsh r0, [r0, #4] + bl GetType + cmp sl, r0 + beq _0203BB54 + ldr r0, [r6] + mov r1, fp + add r0, r0, sb + ldrsh r0, [r0, #4] + bl GetType + cmp sl, r0 + bne _0203BB5C +_0203BB54: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0203BB5C: + add r8, r8, #1 +_0203BB60: + ldr r1, [r5, #0x10] + ldr r0, [r1, #4] + cmp r8, r0 + blt _0203BB10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0203BB78: .word TEAM_MEMBER_TABLE_PTR +_0203BB7C: .word _020AFE5C + arm_func_end sub_0203BAEC + + arm_func_start sub_0203BB80 +sub_0203BB80: ; 0x0203BB80 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r0 + mov r4, #0 + ldr r8, _0203BBE4 ; =TEAM_MEMBER_TABLE_PTR + mov r6, #0x44 + ldr r7, _0203BBE8 ; =_020AFE5C + b _0203BBCC +_0203BB9C: + add r0, r1, r4, lsl #1 + ldrsh r0, [r0, #0x12] + ldr r1, [r8] + smlabb r0, r0, r6, r1 + ldrsh r0, [r0, #4] + bl GetDexNumber + cmp r5, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_0203BBCC: + ldr r1, [r7, #0x10] + ldr r0, [r1, #4] + cmp r4, r0 + blt _0203BB9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0203BBE4: .word TEAM_MEMBER_TABLE_PTR +_0203BBE8: .word _020AFE5C + arm_func_end sub_0203BB80 + + arm_func_start sub_0203BBEC +sub_0203BBEC: ; 0x0203BBEC + stmdb sp!, {r4, lr} + ldr r1, _0203BC48 ; =_020AFE5C + ldr r2, _0203BC4C ; =TEAM_MEMBER_TABLE_PTR + ldr lr, [r1, #0x10] + ldr ip, [r2] + ldr r4, [lr, #4] + mov r3, #0 + mov r2, #0x44 + b _0203BC38 +_0203BC10: + add r1, lr, r3, lsl #1 + ldrsh r1, [r1, #0x12] + smlabb r1, r1, r2, ip + ldrb r1, [r1, #0x3a] + cmp r0, r1 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_0203BC38: + cmp r3, r4 + blt _0203BC10 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203BC48: .word _020AFE5C +_0203BC4C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_0203BBEC + + arm_func_start sub_0203BC50 +sub_0203BC50: ; 0x0203BC50 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r0 + mov r5, #0 + add r4, sp, #0 + ldr sb, _0203BCC4 ; =TEAM_MEMBER_TABLE_PTR + mov r7, #0x44 + ldr r8, _0203BCC8 ; =_020AFE5C + b _0203BCAC +_0203BC70: + add r0, r1, r5, lsl #1 + ldrsh r0, [r0, #0x12] + ldr r1, [sb] + smlabb r0, r0, r7, r1 + ldrsh r0, [r0, #4] + bl GetNameString + str r0, [sp] + mov r0, r4 + bl sub_0202065C + cmp r6, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_0203BCAC: + ldr r1, [r8, #0x10] + ldr r0, [r1, #4] + cmp r5, r0 + blt _0203BC70 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0203BCC4: .word TEAM_MEMBER_TABLE_PTR +_0203BCC8: .word _020AFE5C + arm_func_end sub_0203BC50 + + arm_func_start sub_0203BCCC +sub_0203BCCC: ; 0x0203BCCC + ldr r0, _0203BCE4 ; =_020AFE5C + ldr ip, _0203BCE8 ; =DigitInputMenuDrawDigits + ldr r0, [r0, #0x10] + add r0, r0, #0x1a8 + add r0, r0, #0x400 + bx ip + .align 2, 0 +_0203BCE4: .word _020AFE5C +_0203BCE8: .word DigitInputMenuDrawDigits + arm_func_end sub_0203BCCC + + arm_func_start sub_0203BCEC +sub_0203BCEC: ; 0x0203BCEC + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r0, _0203BE0C ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #7] + cmp r0, r1 + bne _0203BD3C + ldr r0, _0203BE10 ; =_0209C678 + mov ip, #6 + ldr r3, _0203BE14 ; =_0209C6B8 + mov r1, #0x13 + mov r2, #0 + str ip, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _0203BE0C ; =_020AFE5C + ldr r1, [r1, #0x10] + strb r0, [r1, #0x507] + b _0203BE04 +_0203BD3C: + bl IsSimpleMenuActive + cmp r0, #0 + bne _0203BE04 + ldr r0, _0203BE0C ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #7] + bl GetSimpleMenuResult__0202B870 + ldr r1, _0203BE0C ; =_020AFE5C + mov r0, r0, lsl #0x10 + ldr r1, [r1, #0x10] + mov r4, r0, asr #0x10 + add r0, r1, #0x500 + ldrsb r0, [r0, #7] + bl CloseSimpleMenu + ldr r0, _0203BE0C ; =_020AFE5C + mvn r2, #1 + ldr r1, [r0, #0x10] + cmp r4, #6 + strb r2, [r1, #0x507] + addls pc, pc, r4, lsl #2 + b _0203BE00 +_0203BD94: ; jump table + b _0203BDB0 ; case 0 + b _0203BE00 ; case 1 + b _0203BDC0 ; case 2 + b _0203BDD0 ; case 3 + b _0203BDE0 ; case 4 + b _0203BE00 ; case 5 + b _0203BDF0 ; case 6 +_0203BDB0: + ldr r0, [r0, #0x10] + mov r1, #7 + str r1, [r0, #0x508] + b _0203BE04 +_0203BDC0: + ldr r0, [r0, #0x10] + mov r1, #1 + str r1, [r0, #0x508] + b _0203BE04 +_0203BDD0: + ldr r0, [r0, #0x10] + mov r1, #0xa + str r1, [r0, #0x508] + b _0203BE04 +_0203BDE0: + ldr r0, [r0, #0x10] + mov r1, #0xf + str r1, [r0, #0x508] + b _0203BE04 +_0203BDF0: + ldr r0, [r0, #0x10] + mov r1, #0x14 + str r1, [r0, #0x508] + b _0203BE04 +_0203BE00: + bl sub_0203A6BC +_0203BE04: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0203BE0C: .word _020AFE5C +_0203BE10: .word _0209C678 +_0203BE14: .word _0209C6B8 + arm_func_end sub_0203BCEC + + arm_func_start sub_0203BE18 +sub_0203BE18: ; 0x0203BE18 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r3, _0203BECC ; =_020AFE5C + mvn r2, #1 + ldr r0, [r3, #0x10] + add r1, r0, #0x500 + ldrsb r0, [r1, #7] + cmp r0, r2 + bne _0203BE94 +#ifdef JAPAN + ldr r0, _0203C2B0 ; =0x000023B0 + mov r2, #0x10 + strh r0, [r1, #0x18] + ldr r1, [r3, #0x10] + mov r0, #0x11 + str r2, [r1, #0x51c] +#else + mov r0, #0x308 + strh r0, [r1, #0x18] + ldr r0, [r3, #0x10] + mov r1, #0x10 + str r1, [r0, #0x51c] + mov r0, #0x11 +#endif + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r2, [r3, #0x10] + ldr r0, _0203BED0 ; =_0209C618 + ldr r1, _0203BED4 ; =0x00001833 + ldr r3, _0203BED8 ; =sub_0203BAC0 + add r2, r2, #0x510 + bl CreateAdvancedMenu + ldr r1, _0203BECC ; =_020AFE5C + mov r2, #2 + ldr r3, [r1, #0x10] + strb r0, [r3, #0x50c] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + b _0203BEC4 +_0203BE94: + bl IsSimpleMenuActive + cmp r0, #0 + bne _0203BEC4 + ldr r0, _0203BECC ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #7] + bl CloseSimpleMenu + ldr r0, _0203BECC ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x507] +_0203BEC4: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203BECC: .word _020AFE5C +#ifdef JAPAN +_0203C2B0: .word 0x000023B0 +#endif +_0203BED0: .word _0209C618 +_0203BED4: .word 0x00001833 +_0203BED8: .word sub_0203BAC0 + arm_func_end sub_0203BE18 + + arm_func_start sub_0203BEDC +sub_0203BEDC: ; 0x0203BEDC + stmdb sp!, {r3, lr} + ldr r0, _0203BF0C ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xc] + bl IsAdvancedMenuActive2 + cmp r0, #0 + ldreq r0, _0203BF0C ; =_020AFE5C + moveq r1, #3 + ldreq r0, [r0, #0x10] + streq r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203BF0C: .word _020AFE5C + arm_func_end sub_0203BEDC + + arm_func_start sub_0203BF10 +sub_0203BF10: ; 0x0203BF10 + stmdb sp!, {r4, lr} + ldr r0, _0203C028 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xc] + cmp r0, r1 + bne _0203BF48 + bl sub_0203A6BC + ldr r0, _0203C028 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r4, pc} +_0203BF48: + bl IsAdvancedMenuActive2 + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _0203C028 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xc] + bl GetAdvancedMenuResult + and r0, r0, #0xff + add r0, r0, #1 + and r4, r0, #0xff + cmp r4, #1 + blo _0203BFEC + cmp r4, #0x12 + bhs _0203BFEC + mov r0, r4 + bl sub_0203BAEC + cmp r0, #0 + bne _0203BFBC + ldr r0, _0203C028 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + bl sub_0203A658 + ldr r0, _0203C028 ; =_020AFE5C + mov r1, #4 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + b _0203C000 +_0203BFBC: + ldr r0, _0203C02C ; =_022AADF8 + ldr r1, _0203C028 ; =_020AFE5C + mov r2, #1 + str r2, [r1, #8] + strb r4, [r0] + bl sub_0203B744 + bl sub_0203A6BC + ldr r0, _0203C028 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + b _0203C000 +_0203BFEC: + bl sub_0203A6BC + ldr r0, _0203C028 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] +_0203C000: + ldr r0, _0203C028 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xc] + bl CloseAdvancedMenu + ldr r0, _0203C028 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x50c] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203C028: .word _020AFE5C +_0203C02C: .word _022AADF8 + arm_func_end sub_0203BF10 + + arm_func_start sub_0203C030 +sub_0203C030: ; 0x0203C030 + stmdb sp!, {r3, lr} + ldr r0, _0203C078 ; =_0209C648 + bl CreateDialogueBox + ldr r3, _0203C07C ; =_020AFE5C + ldr r1, _0203C080 ; =0x00000418 + ldr ip, [r3, #0x10] + ldr r2, _0203C084 ; =0x0000030B + strb r0, [ip, #0x505] + ldr r0, [r3, #0x10] + mov r3, #0 + add r0, r0, #0x500 + ldrsb r0, [r0, #5] + bl ShowStringIdInDialogueBox + ldr r0, _0203C07C ; =_020AFE5C + mov r1, #5 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C078: .word _0209C648 +_0203C07C: .word _020AFE5C +_0203C080: .word 0x00000418 +#ifdef JAPAN +_0203C084: .word 0x000023B3 +#else +_0203C084: .word 0x0000030B +#endif + arm_func_end sub_0203C030 + + arm_func_start sub_0203C088 +sub_0203C088: ; 0x0203C088 + stmdb sp!, {r3, lr} + ldr r0, _0203C0D0 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #5] + bl IsDialogueBoxActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0203C0D0 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #5] + bl sub_0202F2C4 + ldr r0, _0203C0D0 ; =_020AFE5C + mov r1, #6 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C0D0: .word _020AFE5C + arm_func_end sub_0203C088 + + arm_func_start sub_0203C0D4 +sub_0203C0D4: ; 0x0203C0D4 + stmdb sp!, {r3, lr} + ldr r0, _0203C120 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #5] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl CloseDialogueBox + ldr r0, _0203C120 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x505] + bl sub_0203A6BC + ldr r0, _0203C120 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C120: .word _020AFE5C + arm_func_end sub_0203C0D4 + + arm_func_start sub_0203C124 +sub_0203C124: ; 0x0203C124 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r1, _0203C1E8 ; =_020AFE5C +#ifdef JAPAN + mov r3, #0x1ec + ldr r0, [r1, #0x10] + mov lr, #1 + str lr, [r0, #0x5ac] + ldr r0, [r1, #0x10] + mov r2, #3 +#else + mov lr, #1 + ldr r0, [r1, #0x10] + mov r2, #3 + str lr, [r0, #0x5ac] + ldr r0, [r1, #0x10] + mov r3, #0x1ec +#endif + str r2, [r0, #0x5b8] + ldr r0, [r1, #0x10] + mov ip, #0x50 + str lr, [r0, #0x5b0] + ldr r0, [r1, #0x10] + mov r2, #0x16 + str r3, [r0, #0x5b4] + ldr r0, [r1, #0x10] +#ifdef JAPAN + add r3, r3, #0x21c0 +#else + mov r3, #0x304 +#endif + str ip, [r0, #0x5c8] + ldr r0, [r1, #0x10] + mov ip, #0x10 + str r2, [r0, #0x5cc] + ldr r0, [r1, #0x10] + mov r2, #0 + add r0, r0, #0x500 + strh r3, [r0, #0xe0] + ldr r3, [r1, #0x10] + ldr r0, _0203C1EC ; =_0209C628 + str ip, [r3, #0x5e4] + str r2, [sp] + str r2, [sp, #4] + ldr r2, [r1, #0x10] + ldr r1, _0203C1F0 ; =0x00401807 + add r2, r2, #0x1d8 + ldr r3, _0203C1F4 ; =sub_0203BCCC + add r2, r2, #0x400 + bl CreateAdvancedTextBox + ldr r1, _0203C1E8 ; =_020AFE5C + mov r2, #8 + ldr r3, [r1, #0x10] + strb r0, [r3, #0x5bc] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + ldr r0, [r1, #0x10] + add r0, r0, #0x1a8 + add r0, r0, #0x400 + bl DigitInputMenuInitDigits + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C1E8: .word _020AFE5C +_0203C1EC: .word _0209C628 +_0203C1F0: .word 0x00401807 +_0203C1F4: .word sub_0203BCCC + arm_func_end sub_0203C124 + + arm_func_start sub_0203C1F8 +sub_0203C1F8: ; 0x0203C1F8 + stmdb sp!, {r3, lr} + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x1a8 + add r0, r0, #0x400 + bl DigitInputMenuFrameUpdate + cmp r0, #3 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_0203C21C: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _0203C22C ; case 1 + b _0203C2F4 ; case 2 + b _0203C244 ; case 3 +_0203C22C: + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xbc] + bl SetAdvancedTextBoxField0x1C2 + ldmia sp!, {r3, pc} +_0203C244: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xbc] + bl SetAdvancedTextBoxState5 + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xbc] + bl CloseAdvancedTextBox + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + ldr r0, [r0, #0x5a8] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_0203BB80 + cmp r0, #0 + bne _0203C2BC + ldr r0, _0203C324 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + bl sub_0203A658 + ldr r0, _0203C324 ; =_020AFE5C + mov r1, #4 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} +_0203C2BC: + ldr r0, _0203C324 ; =_020AFE5C + mov r1, #2 + str r1, [r0, #8] + ldr r1, [r0, #0x10] + ldr r0, _0203C328 ; =_022AADF8 + ldr r1, [r1, #0x5a8] + strh r1, [r0] + bl sub_0203B744 + bl sub_0203A6BC + ldr r0, _0203C324 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} +_0203C2F4: + mov r0, #1 + bl PlaySeVolumeWrapper + ldr r0, _0203C324 ; =_020AFE5C + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xbc] + bl SetAdvancedTextBoxState5 + ldr r0, _0203C324 ; =_020AFE5C + mov r1, #9 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C324: .word _020AFE5C +_0203C328: .word _022AADF8 + arm_func_end sub_0203C1F8 + + arm_func_start sub_0203C32C +sub_0203C32C: ; 0x0203C32C + stmdb sp!, {r3, lr} + ldr r0, _0203C378 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + add r0, r0, #0x500 + ldrsb r0, [r0, #0xbc] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl CloseAdvancedTextBox + ldr r0, _0203C378 ; =_020AFE5C + mvn r1, #1 + ldr r0, [r0, #0x10] + strb r1, [r0, #0x5bc] + bl sub_0203A6BC + ldr r0, _0203C378 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C378: .word _020AFE5C + arm_func_end sub_0203C32C + + arm_func_start sub_0203C37C +sub_0203C37C: ; 0x0203C37C + stmdb sp!, {r3, lr} + bl sub_0203A658 + ldr r1, _0203C3A8 ; =_020AFE5C + mov r3, #0xa + ldr r0, [r1, #0x10] + mov r2, #0xb + add r0, r0, #0x800 + strh r3, [r0, #0x9e] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C3A8: .word _020AFE5C + arm_func_end sub_0203C37C + + arm_func_start sub_0203C3AC +sub_0203C3AC: ; 0x0203C3AC + stmdb sp!, {r3, lr} + ldr r1, _0203C404 ; =_020AFE5C + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r2, [r0, #0x9e] + sub r2, r2, #1 + strh r2, [r0, #0x9e] + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r0, [r0, #0x9e] + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mov r3, r1 + mov r0, #9 + bl ShowKeyboard + ldr r0, _0203C404 ; =_020AFE5C + mov r1, #0xc + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C404: .word _020AFE5C + arm_func_end sub_0203C3AC + + arm_func_start sub_0203C408 +sub_0203C408: ; 0x0203C408 + stmdb sp!, {r4, lr} + bl GetKeyboardStatus + cmp r0, #3 + bne _0203C484 + bl GetKeyboardStringResult + ldrb r0, [r0] + bl sub_020251F0 + mov r4, r0 + bl sub_0203BC50 + cmp r0, #0 + bne _0203C458 + ldr r0, _0203C4B0 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + ldr r0, _0203C4B0 ; =_020AFE5C + mov r1, #0x15 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r4, pc} +_0203C458: + ldr r0, _0203C4B4 ; =_022AADF8 + ldr r1, _0203C4B0 ; =_020AFE5C + mov r2, #4 + str r2, [r1, #8] + strh r4, [r0] + bl sub_0203B744 + ldr r0, _0203C4B0 ; =_020AFE5C + mov r1, #0xd + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r4, pc} +_0203C484: + cmp r0, #2 + ldmneia sp!, {r4, pc} + ldr r0, _0203C4B0 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + ldr r0, _0203C4B0 ; =_020AFE5C + mov r1, #0xd + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203C4B0: .word _020AFE5C +_0203C4B4: .word _022AADF8 + arm_func_end sub_0203C408 + + arm_func_start sub_0203C4B8 +sub_0203C4B8: ; 0x0203C4B8 + stmdb sp!, {r3, lr} + bl sub_02037468 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _0203C4EC ; =_020AFE5C + mov r3, #0xa + ldr r0, [r1, #0x10] + mov r2, #0xe + add r0, r0, #0x800 + strh r3, [r0, #0x9e] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C4EC: .word _020AFE5C + arm_func_end sub_0203C4B8 + + arm_func_start sub_0203C4F0 +sub_0203C4F0: ; 0x0203C4F0 + stmdb sp!, {r3, lr} + ldr r1, _0203C538 ; =_020AFE5C + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r2, [r0, #0x9e] + sub r2, r2, #1 + strh r2, [r0, #0x9e] + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r0, [r0, #0x9e] + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl sub_0203A6BC + ldr r0, _0203C538 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C538: .word _020AFE5C + arm_func_end sub_0203C4F0 + + arm_func_start sub_0203C53C +sub_0203C53C: ; 0x0203C53C + stmdb sp!, {r3, lr} + bl sub_0203A658 + ldr r1, _0203C568 ; =_020AFE5C + mov r3, #0xa + ldr r0, [r1, #0x10] + mov r2, #0x10 + add r0, r0, #0x800 + strh r3, [r0, #0x9e] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C568: .word _020AFE5C + arm_func_end sub_0203C53C + + arm_func_start sub_0203C56C +sub_0203C56C: ; 0x0203C56C + stmdb sp!, {r3, lr} + ldr r1, _0203C5C4 ; =_020AFE5C + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r2, [r0, #0x9e] + sub r2, r2, #1 + strh r2, [r0, #0x9e] + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r0, [r0, #0x9e] + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mov r3, r1 + mov r0, #4 + bl ShowKeyboard + ldr r0, _0203C5C4 ; =_020AFE5C + mov r1, #0x11 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C5C4: .word _020AFE5C + arm_func_end sub_0203C56C + + arm_func_start sub_0203C5C8 +sub_0203C5C8: ; 0x0203C5C8 + stmdb sp!, {r3, lr} + sub sp, sp, #0x40 + bl GetKeyboardStatus + cmp r0, #3 + bne _0203C650 + bl GetKeyboardStringResult + mov r1, r0 + add r0, sp, #0 + bl StrcpySimple + ldrb r0, [sp] + bl sub_0203BBEC + cmp r0, #0 + bne _0203C620 + ldr r0, _0203C680 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + ldr r0, _0203C680 ; =_020AFE5C + mov r1, #0x15 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + b _0203C678 +_0203C620: + ldrb r2, [sp] + ldr r0, _0203C684 ; =_022AADF8 + ldr r1, _0203C680 ; =_020AFE5C + mov r3, #3 + str r3, [r1, #8] + strb r2, [r0] + bl sub_0203B744 + ldr r0, _0203C680 ; =_020AFE5C + mov r1, #0x12 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + b _0203C678 +_0203C650: + cmp r0, #2 + bne _0203C678 + ldr r0, _0203C680 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + ldr r0, _0203C680 ; =_020AFE5C + mov r1, #0x12 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] +_0203C678: + add sp, sp, #0x40 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C680: .word _020AFE5C +_0203C684: .word _022AADF8 + arm_func_end sub_0203C5C8 + + arm_func_start sub_0203C688 +sub_0203C688: ; 0x0203C688 + stmdb sp!, {r3, lr} + bl sub_02037468 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _0203C6BC ; =_020AFE5C + mov r3, #0xa + ldr r0, [r1, #0x10] + mov r2, #0x13 + add r0, r0, #0x800 + strh r3, [r0, #0x9e] + ldr r0, [r1, #0x10] + str r2, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C6BC: .word _020AFE5C + arm_func_end sub_0203C688 + + arm_func_start sub_0203C6C0 +sub_0203C6C0: ; 0x0203C6C0 + stmdb sp!, {r3, lr} + ldr r1, _0203C708 ; =_020AFE5C + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r2, [r0, #0x9e] + sub r2, r2, #1 + strh r2, [r0, #0x9e] + ldr r0, [r1, #0x10] + add r0, r0, #0x800 + ldrsh r0, [r0, #0x9e] + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl sub_0203A6BC + ldr r0, _0203C708 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C708: .word _020AFE5C + arm_func_end sub_0203C6C0 + + arm_func_start sub_0203C70C +sub_0203C70C: ; 0x0203C70C + stmdb sp!, {r3, lr} + ldr r0, _0203C738 ; =_020AFE5C + mov r1, #0 + str r1, [r0, #8] + bl sub_0203B744 + bl sub_0203A6BC + ldr r0, _0203C738 ; =_020AFE5C + mov r1, #0 + ldr r0, [r0, #0x10] + str r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C738: .word _020AFE5C + arm_func_end sub_0203C70C + + arm_func_start sub_0203C73C +sub_0203C73C: ; 0x0203C73C + stmdb sp!, {r3, lr} + bl sub_02037468 + cmp r0, #0 + ldrne r0, _0203C75C ; =_020AFE5C + movne r1, #4 + ldrne r0, [r0, #0x10] + strne r1, [r0, #0x508] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203C75C: .word _020AFE5C + arm_func_end sub_0203C73C diff --git a/asm/main_02042B98.s b/asm/main_02042BE0.s similarity index 95% rename from asm/main_02042B98.s rename to asm/main_02042BE0.s index 802b721c..0cd6aae9 100644 --- a/asm/main_02042B98.s +++ b/asm/main_02042BE0.s @@ -1,36 +1,8 @@ .include "asm/macros.inc" - .include "main_02042B98.inc" + .include "main_02042BE0.inc" .text - arm_func_start AllocUnkBagStruct -AllocUnkBagStruct: ; 0x02042B98 - stmdb sp!, {r3, lr} - mov r0, #0xc8 - mov r1, #8 - bl MemAlloc - ldr r1, _02042BB8 ; =UNK_STORAGE_STRUCT_0XC - str r0, [r1, #8] - bl ClearBagSelectedItemTable - ldmia sp!, {r3, pc} - .align 2, 0 -_02042BB8: .word UNK_STORAGE_STRUCT_0XC - arm_func_end AllocUnkBagStruct - - arm_func_start FreeUnkBagStruct -FreeUnkBagStruct: ; 0x02042BBC - stmdb sp!, {r3, lr} - ldr r0, _02042BDC ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #8] - bl MemFree - ldr r0, _02042BDC ; =UNK_STORAGE_STRUCT_0XC - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02042BDC: .word UNK_STORAGE_STRUCT_0XC - arm_func_end FreeUnkBagStruct - arm_func_start sub_02042BE0 sub_02042BE0: ; 0x02042BE0 stmdb sp!, {r3, r4, r5, r6, r7, lr} diff --git a/include/main_0202AAA8.h b/include/main_0202AAA8.h index d15ff7fd..15594ef9 100644 --- a/include/main_0202AAA8.h +++ b/include/main_0202AAA8.h @@ -6,7 +6,9 @@ struct unk_0202AAA8 { u8 field_0x0[8]; u8 field_0x8; - u8 field_0x9[0x18F]; + u8 field_0x9[0x97]; + s32 field_0xA0; + u8 field_0xA4[0xF4]; void *field_0x198; s32 field_0x19C; u8 field_0x1A0; diff --git a/include/main_0202FD3C.h b/include/main_0202FD3C.h new file mode 100644 index 00000000..0bf53d59 --- /dev/null +++ b/include/main_0202FD3C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0202FD3C_H +#define PMDSKY_MAIN_0202FD3C_H + +void SetAreaNameBoxState3(s32 window_id); + +#endif diff --git a/include/main_0203755C.h b/include/main_0203755C.h new file mode 100644 index 00000000..80d05cbf --- /dev/null +++ b/include/main_0203755C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0203755C_H +#define PMDSKY_MAIN_0203755C_H + +s32 GetKeyboardStringResult(void); + +#endif diff --git a/include/main_02042B84.h b/include/main_02042B84.h index adbe4060..7fb470aa 100644 --- a/include/main_02042B84.h +++ b/include/main_02042B84.h @@ -2,5 +2,7 @@ #define PMDSKY_MAIN_02042B84_H s32 IsBagItemIndexSelected(s32 idx); +void AllocUnkBagStruct(void); +void FreeUnkBagStruct(void); #endif diff --git a/main.lsf b/main.lsf index 19acf22a..62128b89 100644 --- a/main.lsf +++ b/main.lsf @@ -174,6 +174,8 @@ Static main Object asm/main_0202D0EC.o Object src/main_0202F180.o Object asm/main_0202F190.o + Object src/main_0202FD3C.o + Object asm/main_0202FD50.o Object src/main_020307A4.o Object asm/main_020307B8.o Object src/main_0203083C.o @@ -189,12 +191,14 @@ Static main Object asm/main_020325AC.o Object src/main_020348E4.o Object asm/main_02034974.o + Object src/main_0203755C.o + Object asm/main_02037570.o Object src/main_0203C760.o Object asm/main_0203C774.o Object src/main_02042AF8.o Object asm/main_02042B20.o Object src/main_02042B84.o - Object asm/main_02042B98.o + Object asm/main_02042BE0.o Object src/main_02043568.o Object asm/main_0204357C.o Object src/main_020484A0.o diff --git a/src/main_0202FD3C.c b/src/main_0202FD3C.c new file mode 100644 index 00000000..27ed86f5 --- /dev/null +++ b/src/main_0202FD3C.c @@ -0,0 +1,9 @@ +#include "main_0202FD3C.h" +#include "main_0202AAA8.h" + +void SetAreaNameBoxState3(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0xA0 = 3; +} diff --git a/src/main_0203755C.c b/src/main_0203755C.c new file mode 100644 index 00000000..cd9233e7 --- /dev/null +++ b/src/main_0203755C.c @@ -0,0 +1,13 @@ +#include "main_0203755C.h" + +struct unk_020AFDF0 { + u8 field_0x0[0xF8]; + s32 field_0xF8; +}; + +extern struct unk_020AFDF0 *_020AFDF0; + +s32 GetKeyboardStringResult(void) +{ + return _020AFDF0->field_0xF8; +} diff --git a/src/main_02042B84.c b/src/main_02042B84.c index 694b926f..1aca27a0 100644 --- a/src/main_02042B84.c +++ b/src/main_02042B84.c @@ -1,7 +1,22 @@ #include "main_02042B84.h" #include "main_02042AF8.h" +#include "main_02001188.h" + +void *MemAlloc(u32 size, u32 nmemb); s32 IsBagItemIndexSelected(s32 idx) { return UNK_STORAGE_STRUCT_0XC.field_0x8[idx]; } + +void AllocUnkBagStruct(void) +{ + UNK_STORAGE_STRUCT_0XC.field_0x8 = MemAlloc(0xC8, 8); + ClearBagSelectedItemTable(); +} + +void FreeUnkBagStruct(void) +{ + MemFree(UNK_STORAGE_STRUCT_0XC.field_0x8); + UNK_STORAGE_STRUCT_0XC.field_0x8 = 0; +}