From 160ca4319d479743ceaf3b1366d0d45b1b350b23 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 3 Feb 2023 04:03:47 -0600 Subject: [PATCH 01/21] document a few structs --- include/friend_area_action_menu.h | 9 +++++-- src/debug_menu_1.c | 10 +++---- src/event_flag_1.c | 30 ++++++++++----------- src/friend_area.c | 43 ++++++++++++++----------------- src/friend_area_action_menu.c | 18 ++++++------- src/friend_area_action_menu_1.c | 26 +++++++++---------- src/friend_list_menu.c | 32 +++++++++++------------ 7 files changed, 85 insertions(+), 83 deletions(-) diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index e204acda1..a57429025 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -5,14 +5,14 @@ struct unkStruct_203B2BC { // size: 0x1E0 u32 state; - u32 unk4; + u32 fallbackState; s16 targetPoke; u16 unkA; u32 id; struct BulkItem itemToGive; struct BulkItem item2; struct PokemonStruct *unk18; - u8 unk1C; + bool8 isTeamLeader; u32 moveIndex; // some sort of move index u16 moveID; struct Move moves[8]; @@ -35,4 +35,9 @@ struct unkStruct_203B2BC struct UnkTextStruct2 unk180[4]; }; +enum FriendAreaActionMenuStates { + FRIEND_AREA_ACTION_MENU_INIT, + FRIEND_AREA_ACTION_MENU_EXIT = 0x11, +}; + #endif diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c index f23e1eb6b..950ad7464 100644 --- a/src/debug_menu_1.c +++ b/src/debug_menu_1.c @@ -36,14 +36,14 @@ void sub_803AF38(void) void sub_803AF88(void) { - s32 local_c; + s32 menuAction; - local_c = 0; - sub_8023A94(local_c); + menuAction = 0; + sub_8023A94(0); if (sub_8012FD8(&gUnknown_203B3F8->unk10) == 0) { - sub_8013114(&gUnknown_203B3F8->unk10, &local_c); + sub_8013114(&gUnknown_203B3F8->unk10, &menuAction); } - switch(local_c) + switch(menuAction) { case 4: sub_803ACD0(5); diff --git a/src/event_flag_1.c b/src/event_flag_1.c index 377f7d927..1bbdc201a 100644 --- a/src/event_flag_1.c +++ b/src/event_flag_1.c @@ -9,7 +9,7 @@ extern bool8 HasCompletedAllMazes(void); extern u8 sub_80973F4(u32); -extern u8 _FlagJudge(u32, u32, u32); +extern u8 _FlagJudge(s32, s32, u32); extern u32 sub_8001658(u32, s32); extern u32 _FlagCalc(s32, s32, u32); extern void sub_80018D8(u32, u32, u32); @@ -365,7 +365,7 @@ u32 _FlagCalc(s32 param_1, s32 param_2, u32 operation) } } -u8 _FlagJudge(u32 param_1, u32 param_2, u32 operation) +u8 _FlagJudge(s32 param_1, s32 param_2, u32 operation) { switch(operation) { case 0: @@ -375,21 +375,21 @@ u8 _FlagJudge(u32 param_1, u32 param_2, u32 operation) case 2: return param_1 == param_2; case 7: - return (-(param_1 ^ param_2) | (param_1 ^ param_2)) >> 0x1f; + return param_1 != param_2; case 3: - return (int)param_1 > (int)param_2; + return param_1 > param_2; case 5: - return (int)param_1 >= (int)param_2; + return param_1 >= param_2; case 4: - return (int)param_1 < (int)param_2; + return param_1 < param_2; case 6: - return (int)param_1 <= (int)param_2; + return param_1 <= param_2; case 8: return (param_1 & param_2) != 0; case 9: return (param_1 ^ param_2) != 0; case 10: - return (int)param_1 >> (param_2) & 1; + return param_1 >> (param_2) & 1; default: FatalError(&gUnknown_80B7350,gUnknown_80B735C, operation); // event flag rule error %d } @@ -415,9 +415,9 @@ void sub_800226C(u32 param_1, s16 param_2, s32 param_3, u32 operation) void sub_80022A0(u32 param_1, s16 param_2, s16 param_3, u32 operation) { - u32 uVar1; - u32 uVar2; - u32 uVar3; + s32 uVar1; + s32 uVar2; + s32 uVar3; s32 param_2_s32 = param_2; s32 param_3_s32 = param_3; @@ -429,14 +429,14 @@ void sub_80022A0(u32 param_1, s16 param_2, s16 param_3, u32 operation) sub_80018D8(param_1,param_2_s32,uVar3); } -u8 FlagJudge(u32 r0, u32 r1, u32 operation) +u8 FlagJudge(s32 r0, s32 r1, u32 operation) { return _FlagJudge(r0, r1, operation); } u8 sub_80022F8(u32 param_1, s16 param_2, s32 param_3, u32 operation) { - u32 uVar1; + s32 uVar1; uVar1 = sub_8001658(param_1, param_2); return _FlagJudge(uVar1,param_3,operation); @@ -444,8 +444,8 @@ u8 sub_80022F8(u32 param_1, s16 param_2, s32 param_3, u32 operation) u8 sub_8002318(u32 param_1, s16 param_2, s16 param_3, u32 operation) { - u32 uVar1; - u32 uVar2; + s32 uVar1; + s32 uVar2; s32 param_2_s32 = param_2; s32 param_3_s32 = param_3; diff --git a/src/friend_area.c b/src/friend_area.c index 34824d843..27b98b07d 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -359,9 +359,9 @@ void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3) pokemon = &gRecruitedPokemonRef->pokemon[counter]; if((u8)(pokemon->unk0) & 1) { - if((pokemon->unk2 == 0) || r2) + if((pokemon->isTeamLeader == 0) || r2) { - flag = (u8)pokemon->fill4[0] == 65; + flag = pokemon->dungeonLocation.id == 65; if(!flag || r3) { if(sub_80923D4(counter) == r0) @@ -464,36 +464,33 @@ NAKED void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3) #endif #ifdef NONMATCHING -void sub_809249C(u8 index, u8 clear) +void sub_809249C(u8 friendArea, u8 clear) { - s32 counter; - bool32 flag; - u8 temp8; - u8 neg8; + s32 index; + bool32 dungeonCheck; + bool32 isTeamLeader; - if(!gFriendAreas[index]) + if(!gFriendAreas[friendArea]) return; - for(counter = 0; counter <= 412; counter++) + for(index = 0; index < NUM_MONSTERS; index++) { - if((u8)(gRecruitedPokemonRef[counter].unk0) & 1) + struct PokemonStruct *pokemon = &gRecruitedPokemonRef->pokemon[index]; + + if((u8)(pokemon->unk0) & 1) { - if(sub_80923D4(counter) == index) + if(sub_80923D4(index) == friendArea) { - flag = (u8)gRecruitedPokemonRef[counter].unk4[0] == 65; - if(!flag) + dungeonCheck = pokemon->dungeonLocation.id == 65; + if(!(dungeonCheck)) { - temp8 = (u8)gRecruitedPokemonRef[counter].unk2; - neg8 = -temp8; - neg8 |= temp8; - // still tries to left shift before the right shift.. - neg8 >>= 7; - if(neg8 != 0) + isTeamLeader = pokemon->isTeamLeader != FALSE; + if(isTeamLeader) { - clear = 0; + clear = FALSE; } else { - gRecruitedPokemonRef[counter].unk0 = neg8; + pokemon->unk0 = 0; } } } @@ -501,11 +498,11 @@ void sub_809249C(u8 index, u8 clear) } if(clear) { - gFriendAreas[index] = FALSE; + gFriendAreas[friendArea] = FALSE; } } #else -NAKED void sub_809249C(u8 index, u8 clear) +NAKED void sub_809249C(u8 friendArea, u8 clear) { asm_unified("\tpush {r4-r7,lr}\n" "\tlsls r0, 24\n" diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index d96bcb56f..731513025 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -39,7 +39,7 @@ extern void sub_80277FC(); extern void sub_80278B4(); extern void sub_8027A40(); extern void sub_8027A5C(); -extern void sub_8027D1C(); +extern void FriendAreaActionMenu_GotoFallbackState(); extern void sub_8027A78(); extern void sub_8027AE4(); extern void sub_8027B28(); @@ -131,14 +131,14 @@ u32 sub_8027074(void) gUnknown_203B2BC->unk70 = 0; gUnknown_203B2BC->unk74 = 0; gUnknown_203B2BC->unk78 = 0; - SetFriendAreaActionMenuState(0); + SetFriendAreaActionMenuState(FRIEND_AREA_ACTION_MENU_INIT); return 1; } u32 sub_80270A4(void) { switch(gUnknown_203B2BC->state) { - case 0: + case FRIEND_AREA_ACTION_MENU_INIT: SetFriendAreaActionMenuState(1); break; case 1: @@ -178,9 +178,9 @@ u32 sub_80270A4(void) sub_8027D00(); break; default: - sub_8027D1C(); + FriendAreaActionMenu_GotoFallbackState(); break; - case 0x11: + case FRIEND_AREA_ACTION_MENU_EXIT: return 3; } return 0; @@ -236,8 +236,8 @@ void sub_8027274(void) struct Item slot; switch(gUnknown_203B2BC->state) { - case 0: - case 0x11: + case FRIEND_AREA_ACTION_MENU_INIT: + case FRIEND_AREA_ACTION_MENU_EXIT: break; case 1: sub_8023868(1,0,0,7); @@ -290,13 +290,13 @@ void sub_8027274(void) sub_801F808(gUnknown_203B2BC->moveIDs); break; case 6: - gUnknown_203B2BC->unk4 = 2; + gUnknown_203B2BC->fallbackState = 2; // The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was // returned to the Toolbox sub_80141B4(gUnknown_80DD8A0,0,0,0x101); break; case 7: - gUnknown_203B2BC->unk4 = 2; + gUnknown_203B2BC->fallbackState = 2; // The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was // returned to storage sub_80141B4(gUnknown_80DD8D0,0,0,0x101); diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index b63b2eec6..a3e5070d0 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -81,7 +81,7 @@ void sub_80277FC(void) gUnknown_203B2BC->targetPoke = sub_8023B44(); pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke]; gUnknown_203B2BC->unk18 = pokeStruct; - gUnknown_203B2BC->unk1C = pokeStruct->isTeamLeader; + gUnknown_203B2BC->isTeamLeader = pokeStruct->isTeamLeader; PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->item2); SetFriendAreaActionMenuState(3); break; @@ -89,13 +89,13 @@ void sub_80277FC(void) gUnknown_203B2BC->targetPoke = sub_8023B44(); pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke]; gUnknown_203B2BC->unk18 = pokeStruct; - gUnknown_203B2BC->unk1C = pokeStruct->isTeamLeader; + gUnknown_203B2BC->isTeamLeader = pokeStruct->isTeamLeader; PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->item2); SetFriendAreaActionMenuState(4); break; case 2: sub_8023C60(); - SetFriendAreaActionMenuState(0x11); + SetFriendAreaActionMenuState(FRIEND_AREA_ACTION_MENU_EXIT); break; } } @@ -105,14 +105,14 @@ void sub_80278B4(void) struct PokemonStruct *playerStruct; struct PokemonStruct *pokeStruct1; struct PokemonStruct *pokeStruct2; - int local_c; + int menuAction; - local_c = 0; + menuAction = 0; sub_8023A94(0); - if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&local_c), local_c != 1)) { - gUnknown_203B2BC->unk70 = local_c; + if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) { + gUnknown_203B2BC->unk70 = menuAction; } - switch(local_c) { + switch(menuAction) { case 6: if (sub_808D750(gUnknown_203B2BC->targetPoke)) { #ifdef NONMATCHING @@ -242,10 +242,10 @@ void sub_8027A78(void) void sub_8027AE4(void) { - s32 local_8; + s32 menuAction; - if (sub_80144A4(&local_8) == 0) { - switch(local_8) + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) { case 1: case 3: @@ -368,12 +368,12 @@ void sub_8027D00(void) } } -void sub_8027D1C(void) +void FriendAreaActionMenu_GotoFallbackState(void) { s32 temp; if(sub_80144A4(&temp) == 0) { - SetFriendAreaActionMenuState(gUnknown_203B2BC->unk4); + SetFriendAreaActionMenuState(gUnknown_203B2BC->fallbackState); } } diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 92f9f1404..943beef36 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -11,18 +11,18 @@ struct unkStruct_203B2B8 { // size: 0x280 u32 state; - u32 unk4; + u32 fallbackState; u8 unk8; /* 0xA */ s16 pokeSpecies; - u32 unkC; + u32 id; /* 0x10 */ struct BulkItem item1; /* 0x14 */ struct BulkItem item2; struct PokemonStruct *unk18; - u8 fill1C[0x4]; - u32 unk20; + bool8 isTeamLeader; + u32 moveIndex; /* 0x24 */ u16 moveID; - struct Move unk28[4]; - u8 fill48[0x70 - 0x48]; + struct Move moves[8]; + u16 moveIDs[4]; // some list of move IDs u32 unk70; u32 unk74; u32 unk78; @@ -268,15 +268,15 @@ void sub_8026B64(void) switch(sub_801A6E8(1)) { case 3: - gUnknown_203B2B8->unkC = sub_801A8AC(); - gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].id; - gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].quantity; + gUnknown_203B2B8->id = sub_801A8AC(); + gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; + gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; sub_8026074(0x14); break; case 4: - gUnknown_203B2B8->unkC = sub_801A8AC(); - gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].id; - gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].quantity; + gUnknown_203B2B8->id = sub_801A8AC(); + gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; + gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; sub_8099690(0); sub_8026074(0x15); break; @@ -307,7 +307,7 @@ void sub_8026C14(void) case 0xb: nextState = 0xF; PlaySound(0x14d); - ShiftItemsDownFrom(gUnknown_203B2B8->unkC); + ShiftItemsDownFrom(gUnknown_203B2B8->id); FillInventoryGaps(); if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) { AddHeldItemToInventory(&gUnknown_203B2B8->item2); @@ -359,8 +359,8 @@ void sub_8026D0C(void) break; case 3: case 4: - gUnknown_203B2B8->unk20 = sub_801F194(); - gUnknown_203B2B8->moveID = gUnknown_203B2B8->unk28[gUnknown_203B2B8->unk20].id; + gUnknown_203B2B8->moveIndex = sub_801F194(); + gUnknown_203B2B8->moveID = gUnknown_203B2B8->moves[gUnknown_203B2B8->moveIndex].id; sub_8026074(0x18); break; case 2: @@ -390,7 +390,7 @@ void sub_8026D88(void) s32 temp; if(sub_80144A4(&temp) == 0) { - sub_8026074(gUnknown_203B2B8->unk4); + sub_8026074(gUnknown_203B2B8->fallbackState); } } From d0eb9a938fbf002bba1506423dc05a55dad94a67 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 10 Feb 2023 07:50:06 -0600 Subject: [PATCH 02/21] jiang fixing friend area --- src/friend_area.c | 93 ++--------------------------------------------- 1 file changed, 4 insertions(+), 89 deletions(-) diff --git a/src/friend_area.c b/src/friend_area.c index 27b98b07d..4f0f76246 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -463,7 +463,6 @@ NAKED void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3) } #endif -#ifdef NONMATCHING void sub_809249C(u8 friendArea, u8 clear) { s32 index; @@ -481,18 +480,10 @@ void sub_809249C(u8 friendArea, u8 clear) if(sub_80923D4(index) == friendArea) { dungeonCheck = pokemon->dungeonLocation.id == 65; - if(!(dungeonCheck)) - { - isTeamLeader = pokemon->isTeamLeader != FALSE; - if(isTeamLeader) - { - clear = FALSE; - } - else - { - pokemon->unk0 = 0; - } - } + if(dungeonCheck || (isTeamLeader = pokemon->isTeamLeader != FALSE, isTeamLeader)) + clear = FALSE; + else + pokemon->unk0 = 0; } } } @@ -501,82 +492,6 @@ void sub_809249C(u8 friendArea, u8 clear) gFriendAreas[friendArea] = FALSE; } } -#else -NAKED void sub_809249C(u8 friendArea, u8 clear) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tlsls r1, 24\n" - "\tlsrs r7, r1, 24\n" - "\tldr r0, _080924F8\n" - "\tldr r0, [r0]\n" - "\tadds r0, r6\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbeq _0809251A\n" - "\tmovs r5, 0\n" -"_080924B4:\n" - "\tldr r2, _080924FC\n" - "\tmovs r0, 0x58\n" - "\tadds r1, r5, 0\n" - "\tmuls r1, r0\n" - "\tldr r0, [r2]\n" - "\tadds r4, r0, r1\n" - "\tldrb r1, [r4]\n" - "\tmovs r0, 0x1\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _08092502\n" - "\tadds r0, r5, 0\n" - "\tbl sub_80923D4\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, r6\n" - "\tbne _08092502\n" - "\tmovs r1, 0\n" - "\tldrb r0, [r4, 0x4]\n" - "\tcmp r0, 0x41\n" - "\tbne _080924E2\n" - "\tmovs r1, 0x1\n" -"_080924E2:\n" - "\tcmp r1, 0\n" - "\tbne _080924F2\n" - "\tldrb r1, [r4, 0x2]\n" - "\tnegs r0, r1\n" - "\torrs r0, r1\n" - "\tlsrs r0, 31\n" - "\tcmp r0, 0\n" - "\tbeq _08092500\n" -"_080924F2:\n" - "\tmovs r7, 0\n" - "\tb _08092502\n" - "\t.align 2, 0\n" -"_080924F8: .4byte gFriendAreas\n" -"_080924FC: .4byte gRecruitedPokemonRef\n" -"_08092500:\n" - "\tstrh r0, [r4]\n" -"_08092502:\n" - "\tadds r5, 0x1\n" - "\tmovs r0, 0xCE\n" - "\tlsls r0, 1\n" - "\tcmp r5, r0\n" - "\tble _080924B4\n" - "\tcmp r7, 0\n" - "\tbeq _0809251A\n" - "\tldr r0, _08092520\n" - "\tldr r0, [r0]\n" - "\tadds r0, r6\n" - "\tmovs r1, 0\n" - "\tstrb r1, [r0]\n" -"_0809251A:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08092520: .4byte gFriendAreas"); -} -#endif const char *GetFriendAreaName(u8 index) { From ba733a79c5010d300fe1a49969b61d21184215db Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 12 Feb 2023 09:24:40 -0800 Subject: [PATCH 03/21] more documenting --- asm/code_801EE10.s | 2 +- include/gulpin_shop.h | 4 ++-- include/input.h | 10 +++++----- include/main_menu.h | 1 + include/memory.h | 2 +- include/menu.h | 2 +- src/gulpin_shop.c | 6 +++--- src/gulpin_shop_1.c | 4 ++-- src/memory_mid.c | 4 ++-- 9 files changed, 18 insertions(+), 17 deletions(-) diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index ff9e8a497..44e8102f4 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -3962,7 +3962,7 @@ sub_8020D90: bcc _08020DC6 cmp r0, 0x3 bne _08020DC6 - bl sub_801E930 + bl GulpinIsNextMoveLinked ldr r1, _08020DB8 ldr r1, [r1] strb r0, [r1, 0x14] diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index cbc266f16..bf6055972 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -8,8 +8,8 @@ struct unkStruct_203B26C s32 state; u32 unk8; s16 speciesNum; // species of chosen Pokemon - u8 unkE; - struct Move * unk10; + bool8 isNextMoveLinked; + struct Move * moves; u32 unk14; u32 unk18; u16 unk1C; diff --git a/include/input.h b/include/input.h index fb1322b40..451ea8473 100644 --- a/include/input.h +++ b/include/input.h @@ -58,11 +58,11 @@ struct UnkInputStruct /* 0x5 */ u32 unk5; /* 0x9 */ u32 unk9; /* 0xD */ u32 unkD; - /* 0x12 */ u32 unk11; - /* 0x16 */ u32 unk15; - /* 0x1A */ u32 unk19; - /* 0x1E */ u32 unk1D; - /* 0x24 */ u32 unk24; + /* 0x11 */ u32 unk11; + /* 0x15 */ u32 unk15; + /* 0x19 */ u32 unk19; + /* 0x1D */ u32 unk1D; + /* 0x21 */ u32 unk21; /* 0x28 */ u8 unk28; /* 0x29 */ u8 a_button; /* 0x2A */ u8 b_button; diff --git a/include/main_menu.h b/include/main_menu.h index 9df4513b7..606b6086b 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -74,5 +74,6 @@ void CleanUpMenu(void); bool8 sub_80363E0(void); struct unkStruct_8035D94 *sub_8035D94(void); void sub_8035DA0(void); +struct MainMenu *GetMainMenu(void); #endif // GUARD_MAIN_MENU_H diff --git a/include/memory.h b/include/memory.h index 1c8a61ba8..618b962d3 100644 --- a/include/memory.h +++ b/include/memory.h @@ -53,7 +53,7 @@ void InitHeapInternal(void); void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32); void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock *, u32); s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3); -void *MemoryAlloc(s32 size, s32 b); +void *MemoryAlloc(s32 size, s32 group); void MemoryFree(void *a); #endif // GUARD_MEMORY_H diff --git a/include/menu.h b/include/menu.h index 4e463607e..26049acf0 100644 --- a/include/menu.h +++ b/include/menu.h @@ -4,7 +4,7 @@ struct MenuItem { const u8 *text; - u32 menuAction; // action?? + s32 menuAction; // action?? }; #endif // GUARD_MENU_H diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index d80151481..4d087e8dd 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -31,7 +31,7 @@ u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct Move *param_3 gUnknown_203B26C = MemoryAlloc(sizeof(struct unkStruct_203B26C),8); gUnknown_203B26C->unk0 = param_1; gUnknown_203B26C->speciesNum = species_32; - gUnknown_203B26C->unk10 = param_3; + gUnknown_203B26C->moves = param_3; gUnknown_203B26C->unk1C = param_3[4].id; if (param_1 == 0) { @@ -81,9 +81,9 @@ u32 sub_801E8C0(void) return 0; } -u8 sub_801E930(void) +bool8 GulpinIsNextMoveLinked(void) { - return gUnknown_203B26C->unkE; + return gUnknown_203B26C->isNextMoveLinked; } void sub_801E93C(void) diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c index 305f4e70a..8752c06f5 100644 --- a/src/gulpin_shop_1.c +++ b/src/gulpin_shop_1.c @@ -36,7 +36,7 @@ void sub_801ED28(void) break; case 2: PlaySound(0x133); - gUnknown_203B26C->unkE = IsNextMoveLinked(gUnknown_203B26C->unk20, gUnknown_203B26C->unk10); + gUnknown_203B26C->isNextMoveLinked = IsNextMoveLinked(gUnknown_203B26C->unk20, gUnknown_203B26C->moves); UpdateGulpinShopState(4); break; case 3: @@ -67,7 +67,7 @@ void sub_801EDC0(void) { case 4: sub_801F214(); - RemoveLinkSequenceFromMoves8(gUnknown_203B26C->unk10, gUnknown_203B26C->unk20); + RemoveLinkSequenceFromMoves8(gUnknown_203B26C->moves, gUnknown_203B26C->unk20); gUnknown_203B26C->state = 5; break; case 1: diff --git a/src/memory_mid.c b/src/memory_mid.c index 546820afa..3bb1e5194 100644 --- a/src/memory_mid.c +++ b/src/memory_mid.c @@ -54,9 +54,9 @@ error: heap,size,atb,group); } -void *MemoryAlloc(s32 size, s32 b) +void *MemoryAlloc(s32 size, s32 group) { - DoAlloc(&gMainHeapDescriptor, size, b); + DoAlloc(&gMainHeapDescriptor, size, group); } void MemoryFree(void *a) From b361b8519a1692fff0ce5b6e7a2b6faebc153d41 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 12 Feb 2023 09:24:48 -0800 Subject: [PATCH 04/21] decomp UpdateSaveMenu --- asm/unk_menu_203B364.s | 253 ----------------------------------------- src/unk_menu_203B364.c | 120 ++++++++++++++++++- 2 files changed, 117 insertions(+), 256 deletions(-) diff --git a/asm/unk_menu_203B364.s b/asm/unk_menu_203B364.s index d0a2b6e2a..d5e091f0f 100644 --- a/asm/unk_menu_203B364.s +++ b/asm/unk_menu_203B364.s @@ -5,259 +5,6 @@ .text - thumb_func_start UpdateSaveMenu -UpdateSaveMenu: - push {r4-r6,lr} - sub sp, 0x18 - ldr r5, _080386A8 - movs r0, 0x3 - str r0, [sp, 0x14] - ldr r6, _080386AC - ldr r0, [r6] - ldr r4, [r0, 0x4] - cmp r4, 0x1 - bne _08038646 - b _08038798 -_08038646: - cmp r4, 0x1 - bcc _0803864C - b _08038824 -_0803864C: - adds r0, 0x8 - bl sub_8012FD8 - movs r5, 0 - str r5, [sp, 0x10] - bl sub_80140F8 - bl sub_8011C1C - adds r1, r0, 0 - add r0, sp, 0x10 - bl WriteSavetoPak - adds r4, r0, 0 - bl sub_8014114 - cmp r4, 0 - beq _080386B8 - cmp r4, 0x1 - beq _08038738 - ldr r0, [r6] - movs r4, 0xA4 - lsls r4, 1 - adds r0, r4 - movs r1, 0 - bl sub_8035CC0 - ldr r1, [r6] - ldr r0, [r1] - cmp r0, 0x2E - bne _08038750 - adds r0, r1, 0 - adds r0, 0x8 - adds r1, r4 - ldr r3, _080386B0 - ldr r2, _080386B4 - str r2, [sp] - str r5, [sp, 0x4] - movs r2, 0x6 - str r2, [sp, 0x8] - str r5, [sp, 0xC] - movs r2, 0 - bl SetMenuItems - b _0803876E - .align 2, 0 -_080386A8: .4byte 0x0000ffdc -_080386AC: .4byte gUnknown_203B364 -_080386B0: .4byte gUnknown_80E6F38 -_080386B4: .4byte gUnknown_80E7114 -_080386B8: - ldr r0, [r6] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - bl sub_8035CC0 - ldr r1, [r6] - ldr r0, [r1] - cmp r0, 0x2E - bne _080386F8 - adds r0, r1, 0 - adds r0, 0x8 - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - ldr r3, _080386F0 - ldr r2, _080386F4 - str r2, [sp] - str r5, [sp, 0x4] - movs r2, 0x6 - str r2, [sp, 0x8] - str r5, [sp, 0xC] - movs r2, 0 - bl SetMenuItems - b _08038716 - .align 2, 0 -_080386F0: .4byte gUnknown_80E6F38 -_080386F4: .4byte gUnknown_80E70CC -_080386F8: - adds r0, r1, 0 - adds r0, 0x8 - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - ldr r3, _08038728 - ldr r2, _0803872C - str r2, [sp] - str r5, [sp, 0x4] - movs r2, 0x6 - str r2, [sp, 0x8] - str r5, [sp, 0xC] - movs r2, 0 - bl SetMenuItems -_08038716: - ldr r4, _08038730 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, 0x2D - bne _08038734 - movs r0, 0x1 - str r0, [r1, 0x4] - movs r0, 0x13 - b _08038826 - .align 2, 0 -_08038728: .4byte gUnknown_80E6F38 -_0803872C: .4byte gUnknown_80E6FBC -_08038730: .4byte gUnknown_203B364 -_08038734: - adds r0, r1, 0 - b _08038772 -_08038738: - ldr r0, _0803874C - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80141B4 - ldr r1, [r6] - movs r0, 0x5 - b _08038780 - .align 2, 0 -_0803874C: .4byte gUnknown_80E7178 -_08038750: - adds r0, r1, 0 - adds r0, 0x8 - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - ldr r3, _08038788 - ldr r2, _0803878C - str r2, [sp] - str r5, [sp, 0x4] - movs r2, 0x6 - str r2, [sp, 0x8] - str r5, [sp, 0xC] - movs r2, 0 - bl SetMenuItems -_0803876E: - ldr r4, _08038790 - ldr r0, [r4] -_08038772: - adds r0, 0x8 - movs r1, 0 - movs r2, 0x1 - bl sub_8035CF4 - ldr r1, [r4] - movs r0, 0x1 -_08038780: - str r0, [r1, 0x4] - ldr r5, _08038794 - b _08038824 - .align 2, 0 -_08038788: .4byte gUnknown_80E6F38 -_0803878C: .4byte gUnknown_80E701C -_08038790: .4byte gUnknown_203B364 -_08038794: .4byte 0x0000ffdc -_08038798: - adds r0, 0x8 - bl sub_80130A8 - lsls r0, 24 - cmp r0, 0 - bne _080387AE - ldr r0, [r6] - adds r0, 0x8 - add r1, sp, 0x14 - bl sub_8013114 -_080387AE: - ldr r0, [sp, 0x14] - cmp r0, 0x3 - beq _0803881C - cmp r0, 0x3 - bhi _080387BE - cmp r0, 0x2 - beq _080387C2 - b _08038820 -_080387BE: - cmp r0, 0x4 - bne _08038820 -_080387C2: - ldr r4, _080387D8 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, 0x29 - beq _080387D0 - cmp r0, 0x2E - bne _080387DC -_080387D0: - movs r0, 0x1 - str r0, [r1, 0x4] - movs r5, 0x1 - b _08038820 - .align 2, 0 -_080387D8: .4byte gUnknown_203B364 -_080387DC: - cmp r0, 0x2D - bne _080387E8 - movs r0, 0x1 - str r0, [r1, 0x4] - movs r5, 0x13 - b _08038820 -_080387E8: - cmp r0, 0x2C - bne _080387F4 - movs r0, 0x1 - str r0, [r1, 0x4] - movs r5, 0x1F - b _08038820 -_080387F4: - bl GetMainMenu - adds r0, 0x3A - ldrb r0, [r0] - cmp r0, 0 - beq _0803880A - ldr r1, [r4] - movs r0, 0x1 - str r0, [r1, 0x4] - movs r5, 0x35 - b _08038820 -_0803880A: - ldr r0, [r4] - movs r1, 0x1 - str r1, [r0, 0x4] - ldr r0, [r0] - movs r5, 0xB - cmp r0, 0x2B - bne _08038820 - movs r5, 0xD - b _08038820 -_0803881C: - ldr r0, [r6] - str r4, [r0, 0x4] -_08038820: - bl sub_80388C4 -_08038824: - adds r0, r5, 0 -_08038826: - add sp, 0x18 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end UpdateSaveMenu - thumb_func_start sub_8038830 sub_8038830: push {r4,r5,lr} diff --git a/src/unk_menu_203B364.c b/src/unk_menu_203B364.c index c4dcd62fc..c64e83595 100644 --- a/src/unk_menu_203B364.c +++ b/src/unk_menu_203B364.c @@ -4,6 +4,7 @@ #include "main_menu.h" #include "memory.h" #include "text.h" +#include "save.h" struct unkStruct_203B360 { @@ -25,6 +26,11 @@ extern struct UnkTextStruct2 gUnknown_80E6F20; extern struct UnkTextStruct2 gUnknown_80E6F38; extern struct MenuItem gUnknown_80E7090[]; extern struct MenuItem gUnknown_80E6F50[]; +extern struct MenuItem gUnknown_80E70CC; +extern struct MenuItem gUnknown_80E6FBC; +extern struct MenuItem gUnknown_80E7114; +extern struct MenuItem gUnknown_80E701C; +extern u8 gUnknown_80E7178[]; extern void sub_8038440(); extern void sub_8035CF4(u32 *, u32, u32); @@ -33,17 +39,23 @@ extern u8 sub_80130A8(u32 *); extern void sub_8013114(u32 *, u32 *); extern void sub_80384D0(); extern void sub_8038830(); +extern void sub_80388C4(void); +extern u8 sub_8012FD8(u32 *); +extern void sub_8014114(); +extern void sub_80140F8(void); +extern void sub_8035CC0(struct UnkTextStruct2 *, u32); +extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); void CreateSaveMenu(s32 currMenu) { - s32 iVar4; + s32 index; if (gUnknown_203B364 == NULL) { gUnknown_203B364 = MemoryAlloc(sizeof(struct unkStruct_203B360),8); MemoryFill8((u8 *)gUnknown_203B364,0,sizeof(struct unkStruct_203B360)); } - for(iVar4 = 0; iVar4 < 4; iVar4++){ - gUnknown_203B364->unk148[iVar4] = gUnknown_80E6F20; + for(index = 0; index < 4; index++){ + gUnknown_203B364->unk148[index] = gUnknown_80E6F20; } ResetUnusedInputStruct(); sub_800641C(gUnknown_203B364->unk148,1,1); @@ -74,3 +86,105 @@ void CleanSaveMenu(void) } } +s32 UpdateSaveMenu(void) +{ + int saveStatus; + struct MainMenu *mainMenu; + u32 menu; + u32 uStack_18; + u32 action; + + menu = MENU_NO_SCREEN_CHANGE; + action = 3; + + switch(gUnknown_203B364->unk4) + { + default: + case 2: + menu = MENU_NO_SCREEN_CHANGE; + break; + case 0: + sub_8012FD8(&gUnknown_203B364->unk8); + uStack_18 = 0; + sub_80140F8(); + saveStatus = WriteSavetoPak(&uStack_18,sub_8011C1C()); + sub_8014114(); + switch(saveStatus) + { + case SAVE_COMPLETED: + sub_8035CC0(gUnknown_203B364->unk148,0); + if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + &gUnknown_80E70CC,0,6,0); + } + else { + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + &gUnknown_80E6FBC,0,6,0); + } + if (gUnknown_203B364->currMenu == 0x2d) { + gUnknown_203B364->unk4 = 1; + return MENU_COMMUNICATION_1; + } + sub_8035CF4(&gUnknown_203B364->unk8,0,1); + gUnknown_203B364->unk4 = 1; + break; + case SAVE_NOT_WRTTEN: + sub_80141B4(gUnknown_80E7178,0,0,0); + gUnknown_203B364->unk4 = 5; + break; + default: + sub_8035CC0(gUnknown_203B364->unk148,0); + if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + &gUnknown_80E7114,0,6,0); + } + else { + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + &gUnknown_80E701C,0,6,0); + } + sub_8035CF4(&gUnknown_203B364->unk8,0,1); + gUnknown_203B364->unk4 = 1; + break; + } + menu = MENU_NO_SCREEN_CHANGE; + break; + case 1: + if (sub_80130A8(&gUnknown_203B364->unk8) == '\0') { + sub_8013114(&gUnknown_203B364->unk8,&action); + } + switch(action) + { + case 2: + case 4: + if ((gUnknown_203B364->currMenu == 0x29) || (gUnknown_203B364->currMenu == MENU_DELETE_SAVE)) { + gUnknown_203B364->unk4 = 1; + menu = MENU_MAIN_SCREEN; + } + else if (gUnknown_203B364->currMenu == 0x2d) { + gUnknown_203B364->unk4 = 1; + menu = MENU_COMMUNICATION_1; + } + else if (gUnknown_203B364->currMenu == 0x2c) { + gUnknown_203B364->unk4 = 1; + menu = 0x1f; + } + else { + mainMenu = GetMainMenu(); + if (mainMenu->unk3A != 0) { + gUnknown_203B364->unk4 = 1; + menu = 0x35; + } + else { + gUnknown_203B364->unk4 = 1; + menu = gUnknown_203B364->currMenu == 0x2b ? MENU_WONDER_MAIL : MENU_FRIEND_RESCUE; + } + } + break; + case 3: + gUnknown_203B364->unk4 = 1; + break; + } + sub_80388C4(); + } + return menu; +} From 78d49f5ca648a7bb3a6c0ac8ae69d424655ad289 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 12 Feb 2023 11:48:16 -0800 Subject: [PATCH 05/21] finish out unk menus and move 203B364 to save_menu --- asm/unk_menu_203B360.s | 76 ---------------- asm/unk_menu_203B364.s | 111 ------------------------ ld_script.txt | 5 +- src/{unk_menu_203B364.c => save_menu.c} | 76 ++++++++++++++-- src/unk_menu_203B360.c | 74 +++++++++++++++- src/unk_menu_203B360_1.c | 28 ------ 6 files changed, 144 insertions(+), 226 deletions(-) delete mode 100644 asm/unk_menu_203B360.s delete mode 100644 asm/unk_menu_203B364.s rename src/{unk_menu_203B364.c => save_menu.c} (83%) delete mode 100644 src/unk_menu_203B360_1.c diff --git a/asm/unk_menu_203B360.s b/asm/unk_menu_203B360.s deleted file mode 100644 index d2962a7a4..000000000 --- a/asm/unk_menu_203B360.s +++ /dev/null @@ -1,76 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8038440 -sub_8038440: - push {r4,r5,lr} - movs r5, 0 - ldr r0, _080384B0 - ldr r0, [r0] - mov r12, r0 - movs r3, 0xD4 - lsls r3, 1 - add r3, r12 - ldrh r1, [r3] - ldr r0, _080384B4 - ands r0, r1 - ldr r1, _080384B8 - ands r0, r1 - ldr r4, _080384BC - ands r0, r4 - ldr r1, _080384C0 - ands r0, r1 - ldr r1, _080384C4 - ands r0, r1 - movs r2, 0x80 - lsls r2, 7 - ldr r1, _080384C8 - ands r0, r1 - orrs r0, r2 - strh r0, [r3] - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r2, 0xF - movs r4, 0xF0 - lsls r4, 8 - ldr r1, _080384CC - ands r0, r1 - orrs r0, r4 - strh r0, [r3, 0x4] - movs r0, 0x70 - strh r0, [r3, 0x2] - movs r1, 0xE0 - lsls r1, 3 - ldrh r0, [r3, 0x6] - ands r2, r0 - orrs r2, r1 - strh r2, [r3, 0x6] - movs r0, 0xD8 - lsls r0, 1 - add r0, r12 - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080384B0: .4byte gUnknown_203B360 -_080384B4: .4byte 0x0000feff -_080384B8: .4byte 0x0000fdff -_080384BC: .4byte 0x0000f3ff -_080384C0: .4byte 0x0000efff -_080384C4: .4byte 0x0000dfff -_080384C8: .4byte 0x00003fff -_080384CC: .4byte 0x00000fff - thumb_func_end sub_8038440 - - .align 2,0 diff --git a/asm/unk_menu_203B364.s b/asm/unk_menu_203B364.s deleted file mode 100644 index d5e091f0f..000000000 --- a/asm/unk_menu_203B364.s +++ /dev/null @@ -1,111 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8038830 -sub_8038830: - push {r4,r5,lr} - movs r5, 0 - ldr r0, _080388A4 - ldr r0, [r0] - mov r12, r0 - movs r3, 0xD4 - lsls r3, 1 - add r3, r12 - ldrh r1, [r3] - ldr r0, _080388A8 - ands r0, r1 - ldr r1, _080388AC - ands r0, r1 - ldr r4, _080388B0 - ands r0, r4 - ldr r1, _080388B4 - ands r0, r1 - ldr r1, _080388B8 - ands r0, r1 - movs r2, 0x80 - lsls r2, 7 - ldr r1, _080388BC - ands r0, r1 - orrs r0, r2 - strh r0, [r3] - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r2, 0xF - movs r4, 0xF0 - lsls r4, 8 - ldr r1, _080388C0 - ands r0, r1 - orrs r0, r4 - strh r0, [r3, 0x4] - movs r0, 0x70 - strh r0, [r3, 0x2] - movs r1, 0xD0 - lsls r1, 3 - ldrh r0, [r3, 0x6] - ands r2, r0 - orrs r2, r1 - strh r2, [r3, 0x6] - movs r0, 0xD8 - lsls r0, 1 - add r0, r12 - str r5, [r0] - movs r0, 0 - bl ResetSprites - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080388A4: .4byte gUnknown_203B364 -_080388A8: .4byte 0x0000feff -_080388AC: .4byte 0x0000fdff -_080388B0: .4byte 0x0000f3ff -_080388B4: .4byte 0x0000efff -_080388B8: .4byte 0x0000dfff -_080388BC: .4byte 0x00003fff -_080388C0: .4byte 0x00000fff - thumb_func_end sub_8038830 - - thumb_func_start sub_80388C4 -sub_80388C4: - push {r4,r5,lr} - ldr r5, _080388FC - ldr r2, [r5] - movs r4, 0xD8 - lsls r4, 1 - adds r0, r2, r4 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080388EA - movs r1, 0xD4 - lsls r1, 1 - adds r0, r2, r1 - subs r1, 0xA8 - movs r2, 0 - movs r3, 0 - bl AddSprite -_080388EA: - ldr r1, [r5] - adds r1, r4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080388FC: .4byte gUnknown_203B364 - thumb_func_end sub_80388C4 - - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index ec32f1569..bdcc01150 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -166,10 +166,7 @@ SECTIONS { asm/other_menus.o(.text); src/adventure_log_menu.o(.text); src/unk_menu_203B360.o(.text); - asm/unk_menu_203B360.o(.text); - src/unk_menu_203B360_1.o(.text); - src/unk_menu_203B364.o(.text); - asm/unk_menu_203B364.o(.text); + src/save_menu.o(.text); src/rescue_password_menu.o(.text); asm/rescue_password_menu.o(.text); src/rescue_password_menu_1.o(.text); diff --git a/src/unk_menu_203B364.c b/src/save_menu.c similarity index 83% rename from src/unk_menu_203B364.c rename to src/save_menu.c index c64e83595..1e5e3b79e 100644 --- a/src/unk_menu_203B364.c +++ b/src/save_menu.c @@ -6,6 +6,14 @@ #include "text.h" #include "save.h" +struct unkSprite +{ + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; +}; + struct unkStruct_203B360 { // size: 0x1b4 @@ -14,10 +22,7 @@ struct unkStruct_203B360 u32 unk8; u8 fill8[0x148 - 0xC]; struct UnkTextStruct2 unk148[4]; - u16 unk1A8; - u16 unk1AA; - u16 unk1AC; - u16 unk1AE; + struct unkSprite unk1A8; u32 unk1B0; // Sprite count? }; @@ -31,7 +36,7 @@ extern struct MenuItem gUnknown_80E6FBC; extern struct MenuItem gUnknown_80E7114; extern struct MenuItem gUnknown_80E701C; extern u8 gUnknown_80E7178[]; - +extern void ResetSprites(u32); extern void sub_8038440(); extern void sub_8035CF4(u32 *, u32, u32); extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); @@ -45,6 +50,7 @@ extern void sub_8014114(); extern void sub_80140F8(void); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); +extern void AddSprite(struct unkSprite *, u32, u32, u32); void CreateSaveMenu(s32 currMenu) { @@ -188,3 +194,63 @@ s32 UpdateSaveMenu(void) } return menu; } + +void sub_8038830(void) +{ +#ifdef NONMATCHING + u32 r0; + u32 r2; +#else + register u32 r0 asm("r0"); + register u32 r2 asm("r2"); +#endif + u32 r1; + u32 r4; + u32 r5; + struct unkSprite *sprite; + + r5 = 0; + sprite = &gUnknown_203B364->unk1A8; + + r1 = sprite->unk0; + r0 = 0xfeff; + r0 &= r1; + r0 &= 0xfdff; + r0 &= 0xf3ff; + r0 &= 0xefff; + r0 &= 0xdfff; + r2 = 0x4000; + r0 &= 0x3fff; + r0 |= r2; + sprite->unk0 = r0; + + r2 = 0x3F0; + r1 = sprite->unk4; + r0 = 0xFC00; + r0 &= r1; + r0 |= r2; + r0 &= 0xf3ff; + r2 = 0xF; + r4 = 0xF000; + r0 &= 0xfff; + r0 |= r4; + + sprite->unk4 = r0; + + sprite->unk2 = 0x70; + + r1 = 0x680; + r2 &= sprite->unk6; + r2 |= r1; + sprite->unk6 = r2; + + gUnknown_203B364->unk1B0 = r5; + ResetSprites(0); +} + +void sub_80388C4(void) { + if ((gUnknown_203B364->unk1B0 & 8) != 0) { + AddSprite(&gUnknown_203B364->unk1A8, 0x100, 0, 0); + } + gUnknown_203B364->unk1B0++; +} diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index beb5205f4..338690c7f 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -4,6 +4,14 @@ #include "memory.h" #include "text.h" +struct unkSprite +{ + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; +}; + struct unkStruct_203B360 { // size: 0x1b4 @@ -12,8 +20,7 @@ struct unkStruct_203B360 u32 unk8; u8 fill8[0x148 - 0xC]; struct UnkTextStruct2 unk148[4]; - u32 unk1A8; - u32 unk1AC; + struct unkSprite unk1A8; u32 unk1B0; // sprite count? }; @@ -22,6 +29,7 @@ extern struct UnkTextStruct2 gUnknown_80E6E7C; extern struct UnkTextStruct2 gUnknown_80E6E94; extern struct MenuItem gUnknown_80E6EAC[]; +extern void AddSprite(struct unkSprite *, u32, u32, u32); extern void sub_8038440(); extern void sub_8035CF4(u32 *, u32, u32); extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); @@ -94,3 +102,65 @@ u32 sub_80383D4(void) return nextMenu; } + +void sub_8038440(void) +{ +#ifdef NONMATCHING + u32 r0; + u32 r2; +#else + register u32 r0 asm("r0"); + register u32 r2 asm("r2"); +#endif + u32 r1; + u32 r4; + u32 r5; + struct unkSprite *sprite; + + r5 = 0; + sprite = &gUnknown_203B360->unk1A8; + + r1 = sprite->unk0; + r0 = 0xfeff; + r0 &= r1; + r0 &= 0xfdff; + r0 &= 0xf3ff; + r0 &= 0xefff; + r0 &= 0xdfff; + r2 = 0x4000; + r0 &= 0x3fff; + r0 |= r2; + sprite->unk0 = r0; + + r2 = 0x3F0; + r1 = sprite->unk4; + r0 = 0xFC00; + r0 &= r1; + r0 |= r2; + r0 &= 0xf3ff; + r2 = 0xF; + r4 = 0xF000; + r0 &= 0xfff; + r0 |= r4; + + sprite->unk4 = r0; + + sprite->unk2 = 0x70; + + r1 = 0x700; + r2 &= sprite->unk6; + r2 |= r1; + sprite->unk6 = r2; + + gUnknown_203B360->unk1B0 = r5; +} + + +void sub_80384D0(void) +{ + if ((gUnknown_203B360->unk1B0 & 8) != 0) { + AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0); + } + gUnknown_203B360->unk1B0++; +} + diff --git a/src/unk_menu_203B360_1.c b/src/unk_menu_203B360_1.c deleted file mode 100644 index 743b134d4..000000000 --- a/src/unk_menu_203B360_1.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "global.h" -#include "text.h" - -struct unkStruct_203B360 -{ - // size: 0x1b4 - u32 currMenu; - u32 unk4; - u32 unk8; - u8 fill8[0x148 - 0xC]; - struct UnkTextStruct2 unk148[4]; - u16 unk1A8; - u16 unk1AA; - u16 unk1AC; - u16 unk1AE; - u32 unk1B0; // Sprite count? -}; - -extern struct unkStruct_203B360 *gUnknown_203B360; -extern void AddSprite(u16 *, u32, u32, u32); - -void sub_80384D0(void) -{ - if ((gUnknown_203B360->unk1B0 & 8) != 0) { - AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0); - } - gUnknown_203B360->unk1B0++; -} From 1c92acbef7b707ec07fc10d3967ad9891005f227 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 13 Feb 2023 16:59:10 -0800 Subject: [PATCH 06/21] move some more menu items over and figure out sub_8035CF4 --- data/data_80E59A8.s | 355 ---------------------------------------- data/data_80E6F20.s | 233 ++++++++++++++++++++++++++ include/friend_rescue.h | 9 +- include/input.h | 16 +- include/menu.h | 21 +++ ld_script.txt | 2 + src/friend_rescue_1.c | 39 ++--- src/main_menu.c | 136 ++++++--------- src/save_menu.c | 129 +++++++++++++-- 9 files changed, 449 insertions(+), 491 deletions(-) create mode 100644 data/data_80E6F20.s diff --git a/data/data_80E59A8.s b/data/data_80E59A8.s index 01f63de40..0858fac51 100644 --- a/data/data_80E59A8.s +++ b/data/data_80E59A8.s @@ -520,358 +520,3 @@ gUnknown_80E6EAC: @ 80E6EAC .asciz "pksdir0" - .global gUnknown_80E6F20 -gUnknown_80E6F20: @ 80E6F20 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6F38 -gUnknown_80E6F38: @ 80E6F38 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x08, 0x00 - .byte 0x15, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6F50 -gUnknown_80E6F50: @ 80E6F50 - .4byte sUnknown_80E6FAC, 0x4 - .4byte sUnknown_80E6F90, 0x4 - .4byte sUnknown_80E6F70, 0x4 - .4byte 0, 0x2 - -sUnknown_80E6F70: - .string "#+Don~27t turn off the power.\0" - .align 2, 0 - -sUnknown_80E6F90: - .string "#+Saving your adventure!\0" - .align 2, 0 - -sUnknown_80E6FAC: - .string "#+#C2Beware!#R \0" - .align 2, 0 - - .global gUnknown_80E6FBC -gUnknown_80E6FBC: @ 80E6FBC - .4byte sUnknown_80E7008, 0x4 - .4byte sUnknown_80E6FF0, 0x4 - .4byte sUnknown_80E6FDC, 0x4 - .4byte 0, 0x2 - -sUnknown_80E6FDC: - .string "#+has been saved.\0" - .align 2, 0 - -sUnknown_80E6FF0: - .string "#+Your adventure so far\0" - .align 2, 0 - -sUnknown_80E7008: - .string "#+#CGSuccess!#R \0" - .align 2, 0 - - .global gUnknown_80E701C -gUnknown_80E701C: @ 80E701C - .4byte sUnknown_80E7078, 0x4 - .4byte sUnknown_80E7050, 0x4 - .4byte sUnknown_80E703C, 0x4 - .4byte 0, 0x2 - -sUnknown_80E703C: - .string "#+Please try again.\0" - .align 2, 0 - -sUnknown_80E7050: - .string "#+Your adventure could not be saved.\0" - .align 2, 0 - -sUnknown_80E7078: - .string "#+#C2Save failed!#R \0" - .align 2, 0 - - .global gUnknown_80E7090 -gUnknown_80E7090: @ 80E7090 - .4byte sUnknown_80E6FAC, 0x4 - .4byte DeletingAdventure_80E70B0, 0x4 - .4byte sUnknown_80E6F70, 0x4 - .4byte 0, 0x2 - -DeletingAdventure_80E70B0: - .string "{CENTER_ALIGN}Deleting your adventure!\0" - .align 2, 0 - - .global gUnknown_80E70CC -gUnknown_80E70CC: @ 80E70CC - .4byte sUnknown_80E7008, 0x4 - .4byte AdventureDeleted_80E70F0, 0x4 - .4byte Data_80E70EC, 0x4 - .4byte 0, 0x2 - -Data_80E70EC: - .string " \0" - .align 2, 0 - -AdventureDeleted_80E70F0: - .string "{CENTER_ALIGN}Your adventure has been deleted.\0" - .align 2, 0 - - .global gUnknown_80E7114 -gUnknown_80E7114: @ 80E7114 - .4byte sUnknown_80E715C, 0x4 - .4byte sUnknown_80E7134, 0x4 - .4byte sUnknown_80E703C, 0x4 - .4byte 0, 0x2 - -sUnknown_80E7134: - .string "#+Your adventure could not be deleted.\0" - .align 2, 0 - -sUnknown_80E715C: - .string "#+#C2Deletion failed!#R \0" - .align 2, 0 - - .global gUnknown_80E7178 -gUnknown_80E7178: @ 80E7178 - .string "#+The data could not be written.\n" - .string "#+Please turn off the power and remove\n" - .string "#+and reinsert the DS Card.\0" - .align 2, 0 - - .string "pksdir0\0" - - .global gUnknown_80E71E4 -gUnknown_80E71E4: @ 80E71E4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E71FC -gUnknown_80E71FC: @ 80E71FC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7214 -gUnknown_80E7214: @ 80E7214 - .4byte Error_80E7268, 0xC - .4byte IncorrectPassword_80E7250, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -CheckAgain_80E7234: - .string "{CENTER_ALIGN}Please check it again.\0" - .align 2, 0 - -IncorrectPassword_80E7250: - .string "{CENTER_ALIGN}Incorrect password!\0" - .align 2, 0 - -Error_80E7268: - .string "{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} \0" - .align 2, 0 - - .global gUnknown_80E7278 -gUnknown_80E7278: @ 80E7278 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7290 -gUnknown_80E7290: @ 80E7290 - .4byte Success_80E72D8, 0xC - .4byte PasswordAccept_80E72B4, 0xC - .4byte DATA_80E72B0, 0xC - .4byte 0, 0xA - -DATA_80E72B0: - .string " \0" - .align 2, 0 - -PasswordAccept_80E72B4: - .string "{CENTER_ALIGN}The password has been accepted.\0" - .align 2, 0 - -Success_80E72D8: - .string "{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} \0" - .align 2, 0 - - .global gUnknown_80E72EC -gUnknown_80E72EC: @ 80E72EC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7304 -gUnknown_80E7304: @ 80E7304 - .4byte Error_80E7268, 0xC - .4byte NotSOSMail_80E7324, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -NotSOSMail_80E7324: - .string "{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0" - .align 2, 0 - - .global gUnknown_80E7344 -gUnknown_80E7344: @ 80E7344 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E735C -gUnknown_80E735C: @ 80E735C - .4byte Error_80E7268, 0xC - .4byte ReceiveSOSMail_80E737C, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -ReceiveSOSMail_80E737C: - .string "{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} has been received already.\0" - .align 2, 0 - - .global gUnknown_80E73AC -gUnknown_80E73AC: @ 80E73AC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E73C4 -gUnknown_80E73C4: @ 80E73C4 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E73E4, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E73E4: - .string "#+This is not an #CGA-OK Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E7408 -gUnknown_80E7408: @ 80E7408 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7420 -gUnknown_80E7420: @ 80E7420 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7440, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7440: - .string "#+This #CGA-OK Mail#R cannot be used.\0" - .align 2, 0 - - .global gUnknown_80E7468 -gUnknown_80E7468: @ 80E7468 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7480 -gUnknown_80E7480: @ 80E7480 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E74A0, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E74A0: - .string "#+This is not a #CGThank-You Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E74C8 -gUnknown_80E74C8: @ 80E74C8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E74E0 -gUnknown_80E74E0: @ 80E74E0 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7500, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7500: - .string "#+This #CGThank-You Mail#R cannot be used.\0" - .align 2, 0 - - .global gUnknown_80E752C -gUnknown_80E752C: @ 80E752C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7544 -gUnknown_80E7544: @ 80E7544 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7564, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7564: - .string "#+This is not a #CGWonder Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E7588 -gUnknown_80E7588: @ 80E7588 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E75A0 -gUnknown_80E75A0: @ 80E75A0 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E75CC, 0xC - .4byte sUnknown_80E75C0, 0xC - .4byte 0, 0xA - -sUnknown_80E75C0: - .string "#+new mail.\0" - .align 2, 0 - -sUnknown_80E75CC: - .string "#+There is no space for receiving\0" - .align 2, 0 - - .string "pksdir0\0" diff --git a/data/data_80E6F20.s b/data/data_80E6F20.s new file mode 100644 index 000000000..3b966715b --- /dev/null +++ b/data/data_80E6F20.s @@ -0,0 +1,233 @@ + .section .rodata + + .global gUnknown_80E71E4 +gUnknown_80E71E4: @ 80E71E4 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E71FC +gUnknown_80E71FC: @ 80E71FC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7214 +gUnknown_80E7214: @ 80E7214 + .4byte Error_80E7268, 0xC + .4byte IncorrectPassword_80E7250, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +CheckAgain_80E7234: + .string "{CENTER_ALIGN}Please check it again.\0" + .align 2, 0 + +IncorrectPassword_80E7250: + .string "{CENTER_ALIGN}Incorrect password!\0" + .align 2, 0 + +Error_80E7268: + .string "{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} \0" + .align 2, 0 + + .global gUnknown_80E7278 +gUnknown_80E7278: @ 80E7278 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7290 +gUnknown_80E7290: @ 80E7290 + .4byte Success_80E72D8, 0xC + .4byte PasswordAccept_80E72B4, 0xC + .4byte DATA_80E72B0, 0xC + .4byte 0, 0xA + +DATA_80E72B0: + .string " \0" + .align 2, 0 + +PasswordAccept_80E72B4: + .string "{CENTER_ALIGN}The password has been accepted.\0" + .align 2, 0 + +Success_80E72D8: + .string "{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} \0" + .align 2, 0 + + .global gUnknown_80E72EC +gUnknown_80E72EC: @ 80E72EC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7304 +gUnknown_80E7304: @ 80E7304 + .4byte Error_80E7268, 0xC + .4byte NotSOSMail_80E7324, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +NotSOSMail_80E7324: + .string "{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0" + .align 2, 0 + + .global gUnknown_80E7344 +gUnknown_80E7344: @ 80E7344 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E735C +gUnknown_80E735C: @ 80E735C + .4byte Error_80E7268, 0xC + .4byte ReceiveSOSMail_80E737C, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +ReceiveSOSMail_80E737C: + .string "{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} has been received already.\0" + .align 2, 0 + + .global gUnknown_80E73AC +gUnknown_80E73AC: @ 80E73AC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E73C4 +gUnknown_80E73C4: @ 80E73C4 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E73E4, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +sUnknown_80E73E4: + .string "#+This is not an #CGA-OK Mail#R.\0" + .align 2, 0 + + .global gUnknown_80E7408 +gUnknown_80E7408: @ 80E7408 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7420 +gUnknown_80E7420: @ 80E7420 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E7440, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +sUnknown_80E7440: + .string "#+This #CGA-OK Mail#R cannot be used.\0" + .align 2, 0 + + .global gUnknown_80E7468 +gUnknown_80E7468: @ 80E7468 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7480 +gUnknown_80E7480: @ 80E7480 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E74A0, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +sUnknown_80E74A0: + .string "#+This is not a #CGThank-You Mail#R.\0" + .align 2, 0 + + .global gUnknown_80E74C8 +gUnknown_80E74C8: @ 80E74C8 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E74E0 +gUnknown_80E74E0: @ 80E74E0 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E7500, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +sUnknown_80E7500: + .string "#+This #CGThank-You Mail#R cannot be used.\0" + .align 2, 0 + + .global gUnknown_80E752C +gUnknown_80E752C: @ 80E752C + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E7544 +gUnknown_80E7544: @ 80E7544 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E7564, 0xC + .4byte CheckAgain_80E7234, 0xC + .4byte 0, 0xA + +sUnknown_80E7564: + .string "#+This is not a #CGWonder Mail#R.\0" + .align 2, 0 + + .global gUnknown_80E7588 +gUnknown_80E7588: @ 80E7588 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x09, 0x00 + .byte 0x17, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E75A0 +gUnknown_80E75A0: @ 80E75A0 + .4byte Error_80E7268, 0xC + .4byte sUnknown_80E75CC, 0xC + .4byte sUnknown_80E75C0, 0xC + .4byte 0, 0xA + +sUnknown_80E75C0: + .string "#+new mail.\0" + .align 2, 0 + +sUnknown_80E75CC: + .string "#+There is no space for receiving\0" + .align 2, 0 + + .string "pksdir0\0" + diff --git a/include/friend_rescue.h b/include/friend_rescue.h index 19a5ef128..2fbc33e9f 100644 --- a/include/friend_rescue.h +++ b/include/friend_rescue.h @@ -5,6 +5,7 @@ #include "item.h" #include "pokemon.h" #include "wonder_mail.h" +#include "menu.h" struct WonderMailStruct_203B33C { @@ -21,13 +22,7 @@ struct WonderMailStruct_203B33C struct unkStruct_203B480 unk1B8; struct unkStruct_203B480 unk1E8; u8 unk218; - u8 padding7[3]; - u32 unk21C; - u8 padding[0x7C]; - u32 unk29C; - u8 padding6[0x6C]; - u32 unk30C; - u8 padding8[0x4C]; + struct MenuStruct unk21C[4]; struct UnkTextStruct2 unk35C[4]; struct UnkTextStruct2 unk3BC[4]; struct Item unk41C; diff --git a/include/input.h b/include/input.h index 451ea8473..083c4ccc5 100644 --- a/include/input.h +++ b/include/input.h @@ -55,14 +55,14 @@ struct UnkInputStruct /* 0x2 */ u8 unk2; /* 0x3 */ u8 unk3; /* 0x4 */ u8 unk4; - /* 0x5 */ u32 unk5; - /* 0x9 */ u32 unk9; - /* 0xD */ u32 unkD; - /* 0x11 */ u32 unk11; - /* 0x15 */ u32 unk15; - /* 0x19 */ u32 unk19; - /* 0x1D */ u32 unk1D; - /* 0x21 */ u32 unk21; + /* 0x8 */ u32 unk8; + /* 0xC */ u32 unkC; + /* 0x10 */ u32 unk10; + /* 0x14 */ u32 unk14; + /* 0x18 */ u32 unk18; + /* 0x1C */ u32 unk1C; + /* 0x20 */ u32 unk20; + /* 0x24 */ u32 unk24; /* 0x28 */ u8 unk28; /* 0x29 */ u8 a_button; /* 0x2A */ u8 b_button; diff --git a/include/menu.h b/include/menu.h index 26049acf0..7b4a152c7 100644 --- a/include/menu.h +++ b/include/menu.h @@ -7,4 +7,25 @@ struct MenuItem s32 menuAction; // action?? }; +struct MenuStruct +{ + // size: 0x50 + u32 unk0; + /* 0x4 */ struct MenuItem *menuItems; + u32 unk8; + u16 *unkC; + s32 fill10; + /* 0x14 */ u32 unk14; + u8 fill18[0x2C - 0x18]; + /* 0x2C */ s16 menuIndex; + s16 unk2E; + u8 fill30[0x38 - 0x30]; + u16 unk38; + u8 fill3A[0x48 - 0x3A]; + s32 menuAction; + u8 unk4C; + u8 unk4D; +}; + + #endif // GUARD_MENU_H diff --git a/ld_script.txt b/ld_script.txt index bdcc01150..298c0018f 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -445,6 +445,8 @@ SECTIONS { src/main_menu.o(.rodata); src/trade_items_menu.o(.rodata); data/data_80E59A8.o(.rodata); + src/save_menu.o(.rodata); + data/data_80E6F20.o(.rodata); src/load_screen.o(.rodata); src/wonder_mail_main_menu.o(.rodata); src/debug_menu.o(.rodata); diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index 549e9d7ad..fa8ee75ea 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -45,10 +45,9 @@ extern u32 sub_80154F0(); extern void sub_80155F0(); extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32); extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); -extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); +extern u8 sub_8012FD8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, s32 *); extern u32 sub_801CA08(u32); extern void sub_801CBB8(void); extern void sub_801CB5C(u32); @@ -56,7 +55,7 @@ extern void sub_8035CC0(struct UnkTextStruct2 *, u32); extern void sub_801B3C0(struct Item *); extern u32 sub_801B410(void); extern void sub_801B450(void); -extern void sub_8035CF4(u32 *, u32, u32); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern u8 sub_801CB24(void); extern u32 sub_8030DA0(void); extern void sub_8030DE4(void); @@ -232,7 +231,6 @@ extern void sub_8023868(u32, u32, u32, u32); extern u32 sub_801D008(void); extern void sub_8023DA4(void); extern void sub_8023C60(void); -extern void sub_8035CF4(u32 *, u32, u32); extern s32 sub_8037B28(u32); extern void sub_803092C(void); extern void sub_801CCD8(void); @@ -240,7 +238,6 @@ extern void sub_80151C0(u32, u8 *); extern void sub_801C8C4(u32, u32, s32 * , u32); extern void xxx_call_start_bg_music(void); extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32); -extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); extern void sub_802F204(struct unkStruct_802F204 *, u32); extern void nullsub_23(u32); extern s32 sub_8037D64(u32, void *, void *); @@ -828,8 +825,8 @@ void sub_8034074(void) menuAction = -1; sub_8030768(0); - if(!sub_8012FD8(&gUnknown_203B33C->unk30C)) - sub_8013114(&gUnknown_203B33C->unk30C, &menuAction); + if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3])) + sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction); switch(menuAction) { case 9: @@ -865,7 +862,7 @@ void sub_8034130(void) sub_803092C(); if(gUnknown_203B33C->fallbackState == 0x7E) { - sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); SetFriendRescueMenuState(0x1E); } else @@ -911,8 +908,8 @@ void sub_8034254(void) menuAction = -1; sub_8023A94(0); - if(!sub_8012FD8(&gUnknown_203B33C->unk30C)) - sub_8013114(&gUnknown_203B33C->unk30C, &menuAction); + if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3])) + sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction); switch(menuAction) { case 9: @@ -951,7 +948,7 @@ void sub_8034310(void) sub_8023B7C(1); if(gUnknown_203B33C->fallbackState == 0x7E) { - sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); SetFriendRescueMenuState(0x27); } else @@ -1106,8 +1103,8 @@ void sub_8034590(void) menuAction = -1; sub_8030768(0); - if(!sub_8012FD8(&gUnknown_203B33C->unk30C)) - sub_8013114(&gUnknown_203B33C->unk30C, &menuAction); + if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3])) + sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction); switch(menuAction) { case 9: @@ -1143,7 +1140,7 @@ void sub_803464C(void) sub_803092C(); if(gUnknown_203B33C->fallbackState == 0x7E) { - sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); SetFriendRescueMenuState(0x33); } else @@ -1431,8 +1428,8 @@ void sub_8034A70(void) menuAction = -1; sub_8030768(0); - if(!sub_8012FD8(&gUnknown_203B33C->unk30C)) - sub_8013114(&gUnknown_203B33C->unk30C, &menuAction); + if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3])) + sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction); switch(menuAction) { case 9: @@ -1468,7 +1465,7 @@ void sub_8034B2C(void) sub_803092C(); if(gUnknown_203B33C->fallbackState == 0x7E) { - sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); SetFriendRescueMenuState(0x5D); } else @@ -1518,7 +1515,7 @@ void sub_8034C38(void) sub_801CB5C(1); if(gUnknown_203B33C->fallbackState == 0x7E) { - sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); SetFriendRescueMenuState(0x60); } else @@ -1536,8 +1533,8 @@ void sub_8034C98(void) menuAction = -1; sub_801CA08(0); - if(!sub_8012FD8(&gUnknown_203B33C->unk30C)) - sub_8013114(&gUnknown_203B33C->unk30C, &menuAction); + if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3])) + sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction); switch(menuAction) { case 9: diff --git a/src/main_menu.c b/src/main_menu.c index 8ca92435b..aed2ec406 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -30,30 +30,12 @@ // Deletes the Save -struct unkStruct_Menu -{ - // size 0x50; - u8 fil0[0x4C]; - u8 unk4C; - u8 fill4D[0x50 - 0x4D]; -}; - struct unkStruct_203B34C { // size: 0x1A8 u32 unk0; - u32 unk4; - struct MenuItem *unk8; // Array of menu choices?? - u8 fillC[0x30 - 0xC]; - s16 menuIndex; - u8 fill32[0x54 - 0x32]; - - u32 unk54; - u8 fill58[0xA4 - 0x58]; - - u32 unkA4; - u32 unkA8; - u8 fillAC[0x144 - 0xAC]; + struct MenuStruct unk4[3]; + u8 fillF4[0x144 - 0xF4]; struct UnkTextStruct2 unk144[4]; /* 0x1A4 */ u32 currMenuChoice; }; @@ -76,11 +58,12 @@ extern void sub_80370D4(void); extern void CleanWonderMailMenu(void); extern void sub_80383A8(void); extern void CleanSaveMenu(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); +extern u8 sub_8012FD8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, s32 *); extern u8 sub_803D0D8(); -extern void sub_8012D60(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); -extern void sub_8012E04(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); +extern void sub_8012D60(struct MenuStruct *, const struct MenuItem *, u32, u32, u32, u32); +extern void sub_8012E04(struct MenuStruct *, const struct MenuItem *, u32, u32, u32, u32); +void sub_8012EBC(struct MenuStruct *); void CleanMainMenu(void); void DrawMainMenu(void); @@ -645,18 +628,18 @@ void sub_8035C1C(void) } void -SetMenuItems(struct unkStruct_Menu *param_1, struct UnkTextStruct2 *unkData, int param_3, const struct UnkTextStruct2 *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8) +SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, int index, const struct UnkTextStruct2 *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8) { - unkData[param_3] = *param_4; + unkData[index] = *param_4; ResetUnusedInputStruct(); sub_800641C(unkData,1,1); - if (param_6 != '\0') { - sub_8012D60(¶m_1[param_3],param_5,0,0,param_7,param_3); + if (param_6 != 0) { + sub_8012D60(¶m_1[index],param_5,0,0,param_7,index); } else { - sub_8012E04(¶m_1[param_3],param_5,0,0,0,param_3); + sub_8012E04(¶m_1[index],param_5,0,0,0,index); } - param_1[param_3].unk4C = 1; + param_1[index].unk4C = 1; } void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index) @@ -667,27 +650,12 @@ void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index) sub_800641C(dataArray, 1, 1); } -NAKED -void sub_8035CF4(void * Menu, u32 index, u8 r2) -{ - asm_unified("\tpush {lr}\n" - "\tadds r3, r0, 0\n" - "\tlsls r0, r1, 2\n" - "\tadds r0, r1\n" - "\tlsls r0, 4\n" - "\tadds r0, r3\n" - "\tadds r1, r0, 0\n" - "\tadds r1, 0x4C\n" - "\tstrb r2, [r1]\n" - "\tadds r2, r0, 0\n" - "\tadds r2, 0x4D\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r2]\n" - "\tsubs r1, 0x2\n" - "\tstr r1, [r0, 0x48]\n" - "\tbl sub_8012EBC\n" - "\tpop {r0}\n" - "\tbx r0"); +void sub_8035CF4(struct MenuStruct * Menu, u32 index, u8 r2) + { + Menu[index].unk4C = r2; + Menu[index].unk4D = 1; + Menu[index].menuAction = -1; + sub_8012EBC(&Menu[index]); } void sub_8035D1C(void) @@ -814,10 +782,10 @@ void DrawMainMenu(void) if(SetMainMenuText()) { - sub_8035CF4(&gUnknown_203B34C->unk4,2,0); + sub_8035CF4(gUnknown_203B34C->unk4,2,0); } - sub_8035CF4(&gUnknown_203B34C->unk4,0,1); + sub_8035CF4(gUnknown_203B34C->unk4,0,1); gUnknown_203B34C->unk0 = 1; } @@ -838,14 +806,14 @@ u32 UpdateMainMenu(void) switch(gUnknown_203B34C->unk0) { case 1: - sub_8012FD8(&gUnknown_203B34C->unkA4); - if(!sub_8012FD8(&gUnknown_203B34C->unk4)) - sub_8013114(&gUnknown_203B34C->unk4, &nextMenu); + sub_8012FD8(&gUnknown_203B34C->unk4[2]); + if(!sub_8012FD8(gUnknown_203B34C->unk4)) + sub_8013114(gUnknown_203B34C->unk4, &nextMenu); if(SetMainMenuText()) { - sub_8035CF4(&gUnknown_203B34C->unk4, 0, 1); - sub_8035CF4(&gUnknown_203B34C->unk4, 2, 0); + sub_8035CF4(gUnknown_203B34C->unk4, 0, 1); + sub_8035CF4(gUnknown_203B34C->unk4, 2, 0); } switch(nextMenu) { @@ -856,8 +824,8 @@ u32 UpdateMainMenu(void) gUnknown_203B34C->unk0 = 1; nextMenu = MENU_NO_SCREEN_CHANGE; ResetUnusedInputStruct(); - sub_8035CF4(&gUnknown_203B34C->unk4, 0, 1); - sub_8035CF4(&gUnknown_203B34C->unk4, 2, 0); + sub_8035CF4(gUnknown_203B34C->unk4, 0, 1); + sub_8035CF4(gUnknown_203B34C->unk4, 2, 0); break; case MENU_TRADE_ITEMS: sub_8035DA0(); @@ -880,8 +848,8 @@ u32 UpdateMainMenu(void) } break; case 0xC: - if(!sub_8012FD8(&gUnknown_203B34C->unk54)) - sub_8013114(&gUnknown_203B34C->unk54, &nextMenu); + if(!sub_8012FD8(&gUnknown_203B34C->unk4[1])) + sub_8013114(&gUnknown_203B34C->unk4[1], &nextMenu); switch(nextMenu) { case 0xffdd: @@ -917,8 +885,8 @@ bool8 SetMainMenuText(void) struct MenuItem *preload; // Have to load the pointer before the index - preload = gUnknown_203B34C->unk8; - menuChoice = preload[gUnknown_203B34C->menuIndex].menuAction; // chosen menu action? + preload = gUnknown_203B34C->unk4[0].menuItems; + menuChoice = preload[gUnknown_203B34C->unk4[0].menuIndex].menuAction; // chosen menu action? if (gUnknown_203B34C->currMenuChoice == menuChoice) { return FALSE; } @@ -929,50 +897,50 @@ bool8 SetMainMenuText(void) switch(menuChoice) { case MENU_WIRELESS_COMMS: // Using wireless communications, you can go on an adventure to unknown worlds. - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); break; case MENU_WONDER_MAIL: // Using passwords, you can receive Wonder Mail - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); break; case MENU_AWAITING_RESCUE: // You are awaiting resuce by a friend // You can give up waiting for rescue - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); break; case MENU_NEW_GAME: // Start an entirely new adventure - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); break; case MENU_CONTINUE: // Resume your adventure from where you last saved - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); break; case MENU_DELETE_SAVE_PROMPT: // This will delete your saved game data. // Beware! This will delete it forever - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); break; case MENU_ADVENTURE_LOG: // Check your career as an adventurer - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); break; case MENU_FRIEND_RESCUE: // Using a Game Link cable or passwords, friends may rescue each other - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); break; case MENU_TRADE_ITEMS: // Using a Game Link cable you can trade stored items with a friend - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); break; case MENU_DUAL_SLOT: // Using Dual Slot function, you can receive teams from your friends - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); break; case MENU_DEBUG: // This is the Debug Mode. // It won't be in the release version - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); break; default: break; @@ -986,9 +954,9 @@ void sub_803623C(void) SetMainMenuItems(); gUnknown_203B34C->currMenuChoice = -1; if (SetMainMenuText()) { - sub_8035CF4(&gUnknown_203B34C->unk4,2,0); + sub_8035CF4(gUnknown_203B34C->unk4,2,0); } - sub_8035CF4(&gUnknown_203B34C->unk4,0,1); + sub_8035CF4(gUnknown_203B34C->unk4,0,1); } void SetMainMenuItems(void) @@ -1003,7 +971,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1); } else { // Revive Team @@ -1011,7 +979,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1); } } else { @@ -1022,7 +990,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1); } else { // Continue @@ -1030,7 +998,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1); } } } @@ -1042,7 +1010,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1); } else { // Awaiting Rescue @@ -1050,7 +1018,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1); } } } @@ -1058,7 +1026,7 @@ void SetMainMenuItems(void) { // New Game // Adventure Log - SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1); + SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1); } } diff --git a/src/save_menu.c b/src/save_menu.c index 1e5e3b79e..4bf22a7b2 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -1,3 +1,4 @@ +#include "gba/defines.h" #include "global.h" #include "input.h" #include "menu.h" @@ -27,19 +28,115 @@ struct unkStruct_203B360 }; extern struct unkStruct_203B360 *gUnknown_203B364; -extern struct UnkTextStruct2 gUnknown_80E6F20; -extern struct UnkTextStruct2 gUnknown_80E6F38; -extern struct MenuItem gUnknown_80E7090[]; -extern struct MenuItem gUnknown_80E6F50[]; -extern struct MenuItem gUnknown_80E70CC; -extern struct MenuItem gUnknown_80E6FBC; -extern struct MenuItem gUnknown_80E7114; -extern struct MenuItem gUnknown_80E701C; -extern u8 gUnknown_80E7178[]; + +const struct UnkTextStruct2 gUnknown_80E6F20 = +{ + 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80E6F38 = +{ + 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, + 0x15, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6F70[]; +const u8 sUnknown_80E6F90[]; +const u8 sUnknown_80E6FAC[]; + +const struct MenuItem gSavingAdventureMenuItems[] = { + {sUnknown_80E6FAC, 4}, + {sUnknown_80E6F90, 4}, + {sUnknown_80E6F70, 4}, + {NULL, 2} +}; +ALIGNED(4) const u8 sUnknown_80E6F70[] = _("{CENTER_ALIGN}Don{APOSTROPHE}t turn off the power."); +ALIGNED(4) const u8 sUnknown_80E6F90[] = _("{CENTER_ALIGN}Saving your adventure!"); +ALIGNED(4) const u8 sUnknown_80E6FAC[] = _("{CENTER_ALIGN}{COLOR_1 RED}Beware!{END_COLOR_TEXT_1} "); + +extern const u8 sUnknown_80E6FDC[]; +extern const u8 sUnknown_80E7008[]; +extern const u8 sUnknown_80E6FF0[]; + +const struct MenuItem gAdventureSavedMenuItems[] = { + {sUnknown_80E7008, 4}, + {sUnknown_80E6FF0, 4}, + {sUnknown_80E6FDC, 4}, + {NULL, 2} +}; +ALIGNED(4) const u8 sUnknown_80E6FDC[] = _("{CENTER_ALIGN}has been saved."); +ALIGNED(4) const u8 sUnknown_80E6FF0[] = _("{CENTER_ALIGN}Your adventure so far"); +ALIGNED(4) const u8 sUnknown_80E7008[] = _("{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} "); + +extern const u8 sUnknown_80E7078[]; +extern const u8 sUnknown_80E7050[]; +extern const u8 sUnknown_80E703C[]; + +const struct MenuItem gAdventureCouldNotBeSavedMenuItems[] = { + {sUnknown_80E7078, 4}, + {sUnknown_80E7050, 4}, + {sUnknown_80E703C, 4}, + {NULL, 2} +}; +ALIGNED(4) const u8 sUnknown_80E703C[] = _("{CENTER_ALIGN}Please try again."); +ALIGNED(4) const u8 sUnknown_80E7050[] = _("{CENTER_ALIGN}Your adventure could not be saved."); +ALIGNED(4) const u8 sUnknown_80E7078[] = _("{CENTER_ALIGN}{COLOR_1 RED}Save failed!{END_COLOR_TEXT_1} "); + + +extern const u8 DeletingAdventure_80E70B0[]; + +const struct MenuItem gDeletingYourAdventureMenuItems[] = { + {sUnknown_80E6FAC, 4}, + {DeletingAdventure_80E70B0, 4}, + {sUnknown_80E6F70, 4}, + {NULL, 2} +}; +ALIGNED(4) const u8 DeletingAdventure_80E70B0[] = _("{CENTER_ALIGN}Deleting your adventure!"); + +extern const u8 Data_80E70EC[]; +extern const u8 AdventureDeleted_80E70F0[]; + +const struct MenuItem gDeletedSaveMenuItems[] = { + {sUnknown_80E7008, 4}, + {AdventureDeleted_80E70F0, 4}, + {Data_80E70EC, 4}, + {NULL, 2}, +}; + +ALIGNED(4) const u8 Data_80E70EC[] = _(" "); +ALIGNED(4) const u8 AdventureDeleted_80E70F0[] = _("{CENTER_ALIGN}Your adventure has been deleted."); + +extern const u8 sUnknown_80E7134[]; +extern const u8 sUnknown_80E715C[]; + +const struct MenuItem gAdventureCouldNotBeDeletedMenuItems[] = { + {sUnknown_80E715C, 4}, + {sUnknown_80E7134, 4}, + {sUnknown_80E703C, 4}, + {NULL, 2}, +}; +ALIGNED(4) const u8 sUnknown_80E7134[] = _("{CENTER_ALIGN}Your adventure could not be deleted."); +ALIGNED(4) const u8 sUnknown_80E715C[] = _("{CENTER_ALIGN}{COLOR_1 RED}Deletion failed!{END_COLOR_TEXT_1} "); + +ALIGNED(4) const u8 gUnknown_80E7178[] = _("{CENTER_ALIGN}The data could not be written.\n" + "{CENTER_ALIGN}Please turn off the power and remove\n" + "{CENTER_ALIGN}and reinsert the DS Card."); + +ALIGNED(4) static const u8 save_menu_fill0[] = "pksdir0"; + extern void ResetSprites(u32); extern void sub_8038440(); extern void sub_8035CF4(u32 *, u32, u32); -extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); +extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); extern u8 sub_80130A8(u32 *); extern void sub_8013114(u32 *, u32 *); extern void sub_80384D0(); @@ -68,12 +165,12 @@ void CreateSaveMenu(s32 currMenu) if (currMenu == MENU_DELETE_SAVE) { // Beware, Deleting your Adventure - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gUnknown_80E7090, + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, 0,6,0); } else { // Saving your Adventure - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gUnknown_80E6F50, + SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, 0,6,0); } sub_8035CF4(&gUnknown_203B364->unk8,0,1); @@ -121,11 +218,11 @@ s32 UpdateSaveMenu(void) sub_8035CC0(gUnknown_203B364->unk148,0); if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, - &gUnknown_80E70CC,0,6,0); + gDeletedSaveMenuItems,0,6,0); } else { SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, - &gUnknown_80E6FBC,0,6,0); + gAdventureSavedMenuItems,0,6,0); } if (gUnknown_203B364->currMenu == 0x2d) { gUnknown_203B364->unk4 = 1; @@ -142,11 +239,11 @@ s32 UpdateSaveMenu(void) sub_8035CC0(gUnknown_203B364->unk148,0); if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, - &gUnknown_80E7114,0,6,0); + gAdventureCouldNotBeDeletedMenuItems,0,6,0); } else { SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, - &gUnknown_80E701C,0,6,0); + gAdventureCouldNotBeSavedMenuItems,0,6,0); } sub_8035CF4(&gUnknown_203B364->unk8,0,1); gUnknown_203B364->unk4 = 1; From dcd8ea2e2f20642acaa939d58b1eeefaa796580c Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 13 Feb 2023 17:37:15 -0800 Subject: [PATCH 07/21] move MenuStruct to include/menu and use in more places --- include/debug_menu.h | 2 +- include/menu.h | 1 - include/rescue_password_menu.h | 7 +++-- include/trade_items_menu.h | 6 ++--- include/wonder_mail.h | 13 +++------- src/debug_menu.c | 16 ++++++------ src/load_screen.c | 47 +++++++++++++++------------------- src/main_menu.c | 45 ++++++++++++++++---------------- src/other_menus.c | 31 +++++++++++----------- src/rescue_password_menu.c | 40 ++++++++++++++--------------- src/save_menu.c | 37 +++++++++++++------------- src/thank_you_wonder_mail.c | 28 ++++++++++---------- src/trade_items_menu.c | 26 +++++++++---------- src/unk_menu_203B360.c | 20 +++++++-------- src/wonder_mail.c | 34 ++++++++++++------------ 15 files changed, 167 insertions(+), 186 deletions(-) diff --git a/include/debug_menu.h b/include/debug_menu.h index ea3b3d6f1..51bdec32c 100644 --- a/include/debug_menu.h +++ b/include/debug_menu.h @@ -19,7 +19,7 @@ enum DebugMenuOptions struct DebugMenu { // size: 0x1A4 - u8 fill0[0x140]; + struct MenuStruct unk0[4]; /* 0x140 */ struct UnkTextStruct2 unk140[4]; u32 fill1A0; }; diff --git a/include/menu.h b/include/menu.h index 7b4a152c7..965b334db 100644 --- a/include/menu.h +++ b/include/menu.h @@ -27,5 +27,4 @@ struct MenuStruct u8 unk4D; }; - #endif // GUARD_MENU_H diff --git a/include/rescue_password_menu.h b/include/rescue_password_menu.h index b4be7198a..244b5bec0 100644 --- a/include/rescue_password_menu.h +++ b/include/rescue_password_menu.h @@ -1,6 +1,8 @@ #ifndef GUARD_RESCUE_PASSWORD_MENU_H #define GUARD_RESCUE_PASSWORD_MENU_H +#include "menu.h" + struct unkSprite { u16 unk208; @@ -14,13 +16,10 @@ struct RescuePasswordMenu // size: 0x214 u32 currMenu; u32 state; - u32 unk8; - u8 fillC[0x148 - 0xC]; + struct MenuStruct unk8[4]; struct UnkTextStruct2 unk148[4]; struct UnkTextStruct2 unk1A8[4]; - struct unkSprite unk208; - u32 unk210; }; diff --git a/include/trade_items_menu.h b/include/trade_items_menu.h index a659795d3..9e13e26d8 100644 --- a/include/trade_items_menu.h +++ b/include/trade_items_menu.h @@ -3,6 +3,7 @@ #include "text.h" #include "item.h" +#include "menu.h" struct TradeSubStruct { @@ -32,10 +33,7 @@ struct TradeItemsMenu u32 unk30; u32 unk34; u8 fill38[0x44 - 0x38]; - u32 unk44; - u8 fill8[0x134 - 0x48]; - u32 unk134; - u8 fill138[0x184 - 0x138]; + struct MenuStruct unk44[4]; struct UnkTextStruct2 unk184[4]; struct UnkTextStruct2 unk1E4[4]; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 432d723d7..eb83c7801 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -4,6 +4,7 @@ #include "file_system.h" #include "text.h" #include "item.h" +#include "menu.h" #include "pokemon.h" #include "code_8094F88.h" @@ -61,12 +62,7 @@ struct WonderMailStruct_203B2C0 struct WonderMailStruct_203B2C0_sub unk130; u8 fill16A[0x218 - 0x1B8]; u8 mailIndex; - u32 unk21C; - u8 padding[0x7C]; - u32 unk29C; - u8 padding6[0x6C]; - u32 unk30C; - u8 padding8[0x4C]; + struct MenuStruct unk21C[4]; struct UnkTextStruct2 unk35C[4]; struct UnkTextStruct2 unk3BC[4]; /* 0x41C */ u32 unkfill; // ItemSlot? @@ -99,10 +95,7 @@ struct WonderMailStruct_203B2C4 struct unkStruct_203B480 unk1B8; struct unkStruct_203B480 unk1E8; s8 mailIndex; - u32 unk21C; - u8 filler220[0x30C - 0x220]; - u32 unk30C; - u8 filler310[0x35C - 0x310]; + struct MenuStruct unk21C[4]; struct UnkTextStruct2 unk35C[4]; struct UnkTextStruct2 unk3BC[4]; struct Item unk41C; diff --git a/src/debug_menu.c b/src/debug_menu.c index c0c41bf51..192845134 100644 --- a/src/debug_menu.c +++ b/src/debug_menu.c @@ -54,14 +54,14 @@ ALIGNED(4) static const char debug_menu_fill6[] = "pksdir0"; -extern u8 sub_8012FD8(struct DebugMenu *); -extern void sub_8013114(struct DebugMenu *, s32 *); +extern u8 sub_8012FD8(struct MenuStruct*); +extern void sub_8013114(struct MenuStruct*, s32 *); extern void sub_80976F8(u8); extern void sub_803A3BC(void); extern void sub_803A3A0(void); -extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); -extern void sub_8035CF4(struct DebugMenu *, u32, u32); +extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); +extern void sub_8035CF4(struct MenuStruct*, u32, u32); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); extern void sub_808D1DC(u8 *); extern void sub_808CFD0(u8 *, s32, u8 *, u32, u32 *, u16 *); @@ -102,8 +102,8 @@ u32 UpdateDebugMenu(void) nextMenu = MENU_NO_SCREEN_CHANGE; debugMenuAction = 11; - if (sub_8012FD8(gUnknown_203B3EC) == 0) { - sub_8013114(gUnknown_203B3EC, &debugMenuAction); + if (sub_8012FD8(&gUnknown_203B3EC->unk0[0]) == 0) { + sub_8013114(&gUnknown_203B3EC->unk0[0], &debugMenuAction); } switch(debugMenuAction) { @@ -147,8 +147,8 @@ u32 UpdateDebugMenu(void) void SetDebugMenuItems(void) { - SetMenuItems(gUnknown_203B3EC, gUnknown_203B3EC->unk140, 0, &gUnknown_80E7D58, gDebugMenuItems, 1, 0xd, 0); - sub_8035CF4(gUnknown_203B3EC,0,1); + SetMenuItems(gUnknown_203B3EC->unk0, gUnknown_203B3EC->unk140, 0, &gUnknown_80E7D58, gDebugMenuItems, 1, 0xd, 0); + sub_8035CF4(gUnknown_203B3EC->unk0,0,1); } void sub_803A3A0(void) diff --git a/src/load_screen.c b/src/load_screen.c index c1474a932..042cc9973 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -18,12 +18,7 @@ struct LoadScreen { // size: 0x27c u32 currMenu; - u32 unk4; - u8 fill8[0x54 - 8]; - u32 unk54; - u8 fill58[0xA4 - 0x58]; - u32 unkA4; - u8 fillA8[0x144 - 0xA8]; + struct MenuStruct unk4[4]; struct UnkTextStruct2 unk144[4]; /* 0x1A4 */ u8 formattedTeamName[0x24]; /* 0x1C8 */ u8 formattedPlayerName[0x24]; @@ -44,10 +39,10 @@ u8 IsQuickSave(void); void DrawLoadScreenText(void); void sub_80397B4(void); -extern void sub_8035CF4(u32 *, u32, u32); -extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, u32 *); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); +extern u8 sub_8012FD8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80920D8(u8 *); extern struct PokemonStruct *GetPlayerPokemonStruct(void); @@ -170,40 +165,40 @@ ALIGNED(4) const char load_screen_fill[] = "pksdir0"; void CreateLoadScreen(u32 currMenu) { - int iVar8; + int index; if (gLoadScreen == NULL) { gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8); MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen)); } gLoadScreen->currMenu = currMenu; - for(iVar8 = 0; iVar8 < 4; iVar8++){ - gLoadScreen->unk144[iVar8] = gUnknown_80E75F8; + for(index = 0; index < 4; index++){ + gLoadScreen->unk144[index] = gUnknown_80E75F8; } ResetUnusedInputStruct(); sub_800641C(gLoadScreen->unk144,1,1); - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0); switch(gLoadScreen->currMenu){ case MENU_CONTINUE: if (IsQuickSave()) - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0); else - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0); break; case MENU_AWAITING_RESCUE: - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0); break; case MENU_DELETE_SAVE_PROMPT: - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0); break; case MENU_DELETE_SAVE_CONFIRM: - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0); break; } - SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0); - sub_8035CF4(&gLoadScreen->unk4,0,0); - sub_8035CF4(&gLoadScreen->unk4,1,0); - sub_8035CF4(&gLoadScreen->unk4,2,1); + SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0); + sub_8035CF4(gLoadScreen->unk4,0,0); + sub_8035CF4(gLoadScreen->unk4,1,0); + sub_8035CF4(gLoadScreen->unk4,2,1); DrawLoadScreenText(); } @@ -225,9 +220,9 @@ u32 UpdateLoadScreenMenu(void) nextMenu = MENU_NO_SCREEN_CHANGE; menuAction = 4; - sub_8012FD8(&gLoadScreen->unk54); - if (sub_8012FD8(&gLoadScreen->unkA4) == '\0') { - sub_8013114(&gLoadScreen->unkA4,&menuAction); + sub_8012FD8(&gLoadScreen->unk4[1]); + if (sub_8012FD8(&gLoadScreen->unk4[2]) == '\0') { + sub_8013114(&gLoadScreen->unk4[2],&menuAction); } switch(menuAction) diff --git a/src/main_menu.c b/src/main_menu.c index aed2ec406..080a60f07 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -34,8 +34,7 @@ struct unkStruct_203B34C { // size: 0x1A8 u32 unk0; - struct MenuStruct unk4[3]; - u8 fillF4[0x144 - 0xF4]; + struct MenuStruct unk4[4]; struct UnkTextStruct2 unk144[4]; /* 0x1A4 */ u32 currMenuChoice; }; @@ -628,16 +627,16 @@ void sub_8035C1C(void) } void -SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, int index, const struct UnkTextStruct2 *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8) +SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, s32 index, const struct UnkTextStruct2 *param_4, const struct MenuItem *menuItems, u8 param_6 ,u32 param_7, u32 unused_8) { unkData[index] = *param_4; ResetUnusedInputStruct(); sub_800641C(unkData,1,1); if (param_6 != 0) { - sub_8012D60(¶m_1[index],param_5,0,0,param_7,index); + sub_8012D60(¶m_1[index],menuItems,0,0,param_7,index); } else { - sub_8012E04(¶m_1[index],param_5,0,0,0,index); + sub_8012E04(¶m_1[index],menuItems,0,0,0,index); } param_1[index].unk4C = 1; } @@ -897,50 +896,50 @@ bool8 SetMainMenuText(void) switch(menuChoice) { case MENU_WIRELESS_COMMS: // Using wireless communications, you can go on an adventure to unknown worlds. - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); break; case MENU_WONDER_MAIL: // Using passwords, you can receive Wonder Mail - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); break; case MENU_AWAITING_RESCUE: // You are awaiting resuce by a friend // You can give up waiting for rescue - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); break; case MENU_NEW_GAME: // Start an entirely new adventure - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); break; case MENU_CONTINUE: // Resume your adventure from where you last saved - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); break; case MENU_DELETE_SAVE_PROMPT: // This will delete your saved game data. // Beware! This will delete it forever - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); break; case MENU_ADVENTURE_LOG: // Check your career as an adventurer - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); break; case MENU_FRIEND_RESCUE: // Using a Game Link cable or passwords, friends may rescue each other - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); break; case MENU_TRADE_ITEMS: // Using a Game Link cable you can trade stored items with a friend - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); break; case MENU_DUAL_SLOT: // Using Dual Slot function, you can receive teams from your friends - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); break; case MENU_DEBUG: // This is the Debug Mode. // It won't be in the release version - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); break; default: break; @@ -971,7 +970,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1); } else { // Revive Team @@ -979,7 +978,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1); } } else { @@ -990,7 +989,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1); } else { // Continue @@ -998,7 +997,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1); } } } @@ -1010,7 +1009,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1); } else { // Awaiting Rescue @@ -1018,7 +1017,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1); } } } @@ -1026,7 +1025,7 @@ void SetMainMenuItems(void) { // New Game // Adventure Log - SetMenuItems((struct MenuStruct *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1); + SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1); } } diff --git a/src/other_menus.c b/src/other_menus.c index 845ede24b..182f67302 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -15,8 +15,7 @@ struct unkStruct_203B35C u32 linkStatus; u32 state; u8 fillC[0x1C - 0xC]; - u32 unk1C; - u8 fill20[0x15C - 0x20]; + struct MenuStruct unk1C[4]; struct UnkTextStruct2 unk15C[4]; u8 unk1BC[4]; u32 unk1C0[9]; @@ -56,19 +55,19 @@ extern struct MenuItem gUnknown_80E6D6C[]; extern void sub_8037400(void); extern void ResetSprites(u32); -extern void sub_8035CF4(u32 *,u32, u32); +extern void sub_8035CF4(struct MenuStruct *,u32, u32); extern void sub_80376CC(); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); -extern u8 sub_80130A8(u32 *); -extern void sub_8013114(u32 *, u32 *); +extern u8 sub_80130A8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, u32 *); extern u32 sub_8037C10(u32); extern void sub_8037748(void); extern void sub_80371B8(void); extern void sub_8037900(void); extern void PlayMenuSoundEffect(u32); extern u32 sub_8037798(void); -extern void SetMenuItems(void *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); extern void sub_8005838(u32, u32); extern void sub_80060EC(); extern void sub_800CB20(); @@ -107,9 +106,9 @@ void sub_8036FDC(s32 param_1) } ResetUnusedInputStruct(); sub_800641C(gUnknown_203B35C->unk15C,1,1); - SetMenuItems(&gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0, + SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0, 6,0); - sub_8035CF4(&gUnknown_203B35C->unk1C,0,1); + sub_8035CF4(gUnknown_203B35C->unk1C,0,1); sub_80376CC(); } #else @@ -250,8 +249,8 @@ u32 sub_80370F0(void) nextMenu = MENU_NO_SCREEN_CHANGE; switch(gUnknown_203B35C->state){ case 0: - if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') { - sub_8013114(&gUnknown_203B35C->unk1C,&local_10); + if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') { + sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10); } if (local_10 == 4) { sub_8037748(); @@ -271,8 +270,8 @@ u32 sub_80370F0(void) return 0x29; // TODO: what screen is this? } else { - if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') { - sub_8013114(&gUnknown_203B35C->unk1C,&local_10); + if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') { + sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10); } if (local_10 != 4) { PlayMenuSoundEffect(3); @@ -302,8 +301,8 @@ void sub_80371B8(void) // Success! // The item exchange with your friend // went through successfully - SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50, gUnknown_80E6C68, 0, 6, 0); - sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1); + SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50, gUnknown_80E6C68, 0, 6, 0); + sub_8035CF4(gUnknown_203B35C->unk1C, 0, 1); } } else { @@ -362,8 +361,8 @@ void sub_80371B8(void) MenuItems = gUnknown_80E6C0C; break; } - SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0); - sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1); + SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0); + sub_8035CF4(gUnknown_203B35C->unk1C, 0, 1); if ((gUnknown_203B35C->linkStatus != COMMS_GOOD) && (gUnknown_203B35C->unk0 == 0) && (item = sub_8035D94(), item->itemIndex.itemIndex_u8 != ITEM_NOTHING) && (item->numItems != 0)) { gTeamInventory_203B460->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems; diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 73b416033..9274924f8 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -34,8 +34,8 @@ extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0); extern void sub_80951BC(struct unkStruct_203B480 *r0); extern bool8 sub_80951FC(struct unkStruct_203B480 *r0); -extern u8 sub_8012FD8(u32 *r0); -extern void sub_8013114(u32 *, s32 *); +extern u8 sub_8012FD8(struct MenuStruct *r0); +extern void sub_8013114(struct MenuStruct *, s32 *); extern u32 sub_80154F0(void); extern void sub_8095274(u32); extern u32 sub_8031DCC(void); @@ -45,8 +45,8 @@ extern void DisplayRescuePasswordError(u32); extern struct MainMenu *GetMainMenu(void); -extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); -extern void sub_8035CF4(u32 *r0, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); +extern void sub_8035CF4(struct MenuStruct *r0, u32, u32); bool8 IsInvalidItemReward(u8); bool8 sub_8095298(s32); bool8 sub_803D204(u8 *, struct unkStruct_203B480 *); @@ -304,8 +304,8 @@ s32 UpdateRescuePasswordMenu(void) } break; case 8: - if (sub_8012FD8(&gRescuePasswordMenu->unk8) == '\0') { - sub_8013114(&gRescuePasswordMenu->unk8, &local_14); + if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { + sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14); } switch(local_14) { @@ -332,8 +332,8 @@ s32 UpdateRescuePasswordMenu(void) } break; case 9: - if (sub_8012FD8(&gRescuePasswordMenu->unk8) == '\0') { - sub_8013114(&gRescuePasswordMenu->unk8, &local_14); + if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { + sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14); } switch(local_14) { @@ -371,36 +371,36 @@ void DisplayRescuePasswordError(u32 passwordError) sub_80155F0(); switch(passwordError) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0); break; case PASSWORD_ENTRY_NOT_SOS_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0); break; case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0); break; case PASSWORD_ENTRY_NO_SPACE: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0); break; case PASSWORD_ENTRY_NOT_AOK_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0); break; case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0); break; case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0); break; case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0); break; case PASSWORD_ENTRY_NOT_WONDER_MAIL: - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,0,0xd,0); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,0,0xd,0); break; default: break; } - sub_8035CF4(&gRescuePasswordMenu->unk8,0,1); + sub_8035CF4(gRescuePasswordMenu->unk8,0,1); } void DisplayPasswordAcceptScreen(void) @@ -409,8 +409,8 @@ void DisplayPasswordAcceptScreen(void) ResetUnusedInputStruct(); sub_800641C(0,1,1); sub_80155F0(); - SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,0,0xd,0); - sub_8035CF4(&gRescuePasswordMenu->unk8,0,1); + SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,0,0xd,0); + sub_8035CF4(gRescuePasswordMenu->unk8,0,1); } u32 ConvertMenutoRescuePasswordState(u32 unused) diff --git a/src/save_menu.c b/src/save_menu.c index 4bf22a7b2..040ff543d 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -20,8 +20,7 @@ struct unkStruct_203B360 // size: 0x1b4 u32 currMenu; u32 unk4; - u32 unk8; - u8 fill8[0x148 - 0xC]; + struct MenuStruct unk8[4]; struct UnkTextStruct2 unk148[4]; struct unkSprite unk1A8; u32 unk1B0; // Sprite count? @@ -135,14 +134,14 @@ ALIGNED(4) static const u8 save_menu_fill0[] = "pksdir0"; extern void ResetSprites(u32); extern void sub_8038440(); -extern void sub_8035CF4(u32 *, u32, u32); -extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); -extern u8 sub_80130A8(u32 *); -extern void sub_8013114(u32 *, u32 *); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); +extern u8 sub_80130A8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80384D0(); extern void sub_8038830(); extern void sub_80388C4(void); -extern u8 sub_8012FD8(u32 *); +extern u8 sub_8012FD8(struct MenuStruct *); extern void sub_8014114(); extern void sub_80140F8(void); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); @@ -165,15 +164,15 @@ void CreateSaveMenu(s32 currMenu) if (currMenu == MENU_DELETE_SAVE) { // Beware, Deleting your Adventure - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, 0,6,0); } else { // Saving your Adventure - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, 0,6,0); } - sub_8035CF4(&gUnknown_203B364->unk8,0,1); + sub_8035CF4(gUnknown_203B364->unk8,0,1); gUnknown_203B364->unk4 = 0; gUnknown_203B364->currMenu = currMenu; sub_8038830(); @@ -207,7 +206,7 @@ s32 UpdateSaveMenu(void) menu = MENU_NO_SCREEN_CHANGE; break; case 0: - sub_8012FD8(&gUnknown_203B364->unk8); + sub_8012FD8(&gUnknown_203B364->unk8[0]); uStack_18 = 0; sub_80140F8(); saveStatus = WriteSavetoPak(&uStack_18,sub_8011C1C()); @@ -217,18 +216,18 @@ s32 UpdateSaveMenu(void) case SAVE_COMPLETED: sub_8035CC0(gUnknown_203B364->unk148,0); if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, gDeletedSaveMenuItems,0,6,0); } else { - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureSavedMenuItems,0,6,0); } if (gUnknown_203B364->currMenu == 0x2d) { gUnknown_203B364->unk4 = 1; return MENU_COMMUNICATION_1; } - sub_8035CF4(&gUnknown_203B364->unk8,0,1); + sub_8035CF4(gUnknown_203B364->unk8,0,1); gUnknown_203B364->unk4 = 1; break; case SAVE_NOT_WRTTEN: @@ -238,22 +237,22 @@ s32 UpdateSaveMenu(void) default: sub_8035CC0(gUnknown_203B364->unk148,0); if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeDeletedMenuItems,0,6,0); } else { - SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeSavedMenuItems,0,6,0); } - sub_8035CF4(&gUnknown_203B364->unk8,0,1); + sub_8035CF4(gUnknown_203B364->unk8,0,1); gUnknown_203B364->unk4 = 1; break; } menu = MENU_NO_SCREEN_CHANGE; break; case 1: - if (sub_80130A8(&gUnknown_203B364->unk8) == '\0') { - sub_8013114(&gUnknown_203B364->unk8,&action); + if (sub_80130A8(&gUnknown_203B364->unk8[0]) == '\0') { + sub_8013114(&gUnknown_203B364->unk8[0],&action); } switch(action) { diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 110afd248..dd3ad4837 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -155,7 +155,7 @@ const struct MenuItem gUnknown_80DEEE4[4] = extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32); -extern u8 sub_8012FD8(u32 *r0); +extern u8 sub_8012FD8(struct MenuStruct *r0); extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32); extern void sub_8030810(u32); extern u32 sub_8031DCC(void); @@ -167,7 +167,7 @@ extern u32 sub_8030768(u32); extern s8 sub_80307EC(void); extern void sub_8030D40(u8, u32); extern u32 sub_8030DA0(); -extern void sub_8013114(u32 *r0, s32 *r1); +extern void sub_8013114(struct MenuStruct *r0, s32 *r1); extern void HandleThankYouMailPelipperMainMenu(); extern void sub_802AAC8(); extern void ReturnToThankYouMailMainMenu(); @@ -218,7 +218,7 @@ extern void sub_802F2C0(); extern u32 sub_80144A4(s32 *r0); extern void SetThankYouMailMenuState(u32); extern struct PokemonStruct *GetPlayerPokemonStruct(void); -extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); extern void sub_80922B4(u8 *, u8 *, u32); extern void sub_802F204(struct unkStruct_802F204 *, u32); extern void sub_80151C0(u32, u8 *); @@ -239,7 +239,7 @@ extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32); extern void sub_8031D70(u8, u32); extern void sub_803092C(void); -extern void sub_8035CF4(u32 *, u32, u32); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern u32 sub_801CA08(u32); extern void sub_801CBB8(void); extern void sub_801B3C0(struct Item *); @@ -620,8 +620,8 @@ void sub_802A174(void) menuAction = -1; sub_8030768(0); - if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { - sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction); + if (sub_8012FD8(&gUnknown_203B2C4->unk21C[3]) == 0) { + sub_8013114(&gUnknown_203B2C4->unk21C[3], &menuAction); } switch(menuAction) @@ -659,7 +659,7 @@ void sub_802A230(void) sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1); sub_803092C(); if (gUnknown_203B2C4->fallbackState == 0x2b) { - sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B2C4->unk21C, 3, 1); SetThankYouMailMenuState(0x11); } else { @@ -711,7 +711,7 @@ void sub_802A33C(void) sub_800641C(gUnknown_203B2C4->unk3BC,1,1); sub_801CB5C(1); if (gUnknown_203B2C4->fallbackState == 0x2b) { - sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + sub_8035CF4(gUnknown_203B2C4->unk21C,3,1); SetThankYouMailMenuState(0x14); } else { @@ -730,8 +730,8 @@ void sub_802A39C(void) menuAction = -1; sub_801CA08(0); - if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { - sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction); + if (sub_8012FD8(&gUnknown_203B2C4->unk21C[3]) == 0) { + sub_8013114(&gUnknown_203B2C4->unk21C[3], &menuAction); } switch(menuAction) @@ -1299,9 +1299,9 @@ void UpdateThankYouMailText(void) break; case 0x11: sub_8006518(gUnknown_203B2C4->unk35C); - SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0); + SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0); sub_803092C(); - sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + sub_8035CF4(gUnknown_203B2C4->unk21C,3,1); break; case 0x13: if (sub_801D008() != 0) @@ -1316,9 +1316,9 @@ void UpdateThankYouMailText(void) break; case 0x14: sub_8006518(gUnknown_203B2C4->unk35C); - SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0); + SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0); sub_801CCD8(); - sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + sub_8035CF4(gUnknown_203B2C4->unk21C,3,1); break; case THANK_YOU_MAIL_COMMS_FINISHED: gUnknown_203B2C4->linkError = COMMS_GOOD; diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 2eb251776..2f5dc54b0 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -87,14 +87,14 @@ extern u32 sub_801CA08(u32); extern void sub_801CBB8(); extern u8 sub_801CB24(); extern void sub_801B3C0(struct Item *); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); +extern u8 sub_8012FD8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, s32 *); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); extern void sub_801CCD8(); extern u32 sub_801B410(); extern void sub_801B450(); extern void sub_801CB5C(u32); -extern void sub_8035CF4(u32 *, u32, u32); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern u32 sub_8013BBC(u32 *); extern void sub_80141B4(const u8 *, u32, u32, u32); @@ -109,7 +109,7 @@ extern void sub_801C8C4(u32, u32, s32 *, u32); extern s32 sub_8037B28(u32); extern void sub_8011830(void); extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32); -extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); extern void nullsub_23(u32); extern void xxx_call_start_bg_music(void); extern s32 sub_80381F4(u32, void *, void *); @@ -312,8 +312,8 @@ void sub_8036674(void) menuAction = -1; sub_801CA08(0); - if (sub_8012FD8(&gTradeItemsMenu->unk134) == '\0') { - sub_8013114(&gTradeItemsMenu->unk134, &menuAction); + if (sub_8012FD8(&gTradeItemsMenu->unk44[3]) == '\0') { + sub_8013114(&gTradeItemsMenu->unk44[3], &menuAction); } switch(menuAction){ case 3: // confirm @@ -348,7 +348,7 @@ void sub_8036728(void) sub_800641C(gTradeItemsMenu->unk1E4, 1, 1); sub_801CB5C(1); if (gTradeItemsMenu->fallbackState == 0x13) { - sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1); + sub_8035CF4(gTradeItemsMenu->unk44, 3, 1); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU); } else { @@ -362,20 +362,20 @@ void sub_8036728(void) void sub_8036788(void) { - sub_8012FD8(&gTradeItemsMenu->unk134); + sub_8012FD8(&gTradeItemsMenu->unk44[3]); sub_801CA08(0); switch(sub_8013BBC(&gTradeItemsMenu->quantityToSend)){ case 1: // When you change the # sub_801CCD8(); - sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0); + sub_8035CF4(gTradeItemsMenu->unk44, 3, 0); sub_8036F30(); break; case 2: // If you back out of the # selection sub_8035CC0(gTradeItemsMenu->unk184, 2); sub_801CCD8(); - sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1); + sub_8035CF4(gTradeItemsMenu->unk44, 3, 1); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU); break; case 3: @@ -634,10 +634,10 @@ void sub_8036B28(void) break; case TRADE_ITEMS_SEND_ITEM_POPUP_MENU: sub_8006518(gTradeItemsMenu->unk184); - SetMenuItems(&gTradeItemsMenu->unk44,gTradeItemsMenu->unk184,3,&gUnknown_80E60EC, + SetMenuItems(gTradeItemsMenu->unk44,gTradeItemsMenu->unk184,3,&gUnknown_80E60EC, gUnknown_80E6104,1,0,0); sub_801CCD8(); - sub_8035CF4(&gTradeItemsMenu->unk44,3,1); + sub_8035CF4(gTradeItemsMenu->unk44,3,1); break; case TRADE_ITEMS_SEND_ITEM_NUMBER: sub_8036F74(); @@ -793,7 +793,7 @@ void sub_8036F74(void) sub_8006518(gTradeItemsMenu->unk184); sub_8036ECC(2, gTeamInventory_203B460->teamStorage[gTradeItemsMenu->itemToSend.id]); sub_801CCD8(); - sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0); + sub_8035CF4(gTradeItemsMenu->unk44, 3, 0); sub_8036F30(); } diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 338690c7f..8bfe5efc7 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -2,6 +2,7 @@ #include "input.h" #include "main_menu.h" #include "memory.h" +#include "menu.h" #include "text.h" struct unkSprite @@ -17,8 +18,7 @@ struct unkStruct_203B360 // size: 0x1b4 u32 currMenu; u32 unk4; // state - u32 unk8; - u8 fill8[0x148 - 0xC]; + struct MenuStruct unk8[4]; struct UnkTextStruct2 unk148[4]; struct unkSprite unk1A8; u32 unk1B0; // sprite count? @@ -31,10 +31,10 @@ extern struct MenuItem gUnknown_80E6EAC[]; extern void AddSprite(struct unkSprite *, u32, u32, u32); extern void sub_8038440(); -extern void sub_8035CF4(u32 *, u32, u32); -extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); -extern u8 sub_80130A8(u32 *); -extern void sub_8013114(u32 *, u32 *); +extern void sub_8035CF4(struct MenuStruct *, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); +extern u8 sub_80130A8(struct MenuStruct *); +extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80384D0(); void sub_80382E4(s32 param_1) @@ -54,10 +54,10 @@ void sub_80382E4(s32 param_1) // Caution! // The storage space is empty! // Please check again. - SetMenuItems(&gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, + SetMenuItems(gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, 0,4,0); } - sub_8035CF4(&gUnknown_203B360->unk8,0,1); + sub_8035CF4(gUnknown_203B360->unk8,0,1); gUnknown_203B360->currMenu = param_1; gUnknown_203B360->unk4 = 0; sub_8038440(); @@ -82,8 +82,8 @@ u32 sub_80383D4(void) nextMenu = MENU_NO_SCREEN_CHANGE; if (gUnknown_203B360->unk4 == 0){ - if (sub_80130A8(&gUnknown_203B360->unk8) == '\0') { - sub_8013114(&gUnknown_203B360->unk8, &menuAction); + if (sub_80130A8(&gUnknown_203B360->unk8[0]) == '\0') { + sub_8013114(&gUnknown_203B360->unk8[0], &menuAction); } switch(menuAction) { diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 1f8ebc377..7244f2cf8 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -36,10 +36,10 @@ extern void sub_803084C(); extern u32 sub_8030768(u32); extern s8 sub_80307EC(); extern void sub_8030D40(u8, u32); -extern u8 sub_8012FD8(u32 *r0); +extern u8 sub_8012FD8(struct MenuStruct *r0); extern void sub_8030810(u32); extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32); -extern void sub_8035CF4(u32 *r0, u32, u32); +extern void sub_8035CF4(struct MenuStruct *r0, u32, u32); extern u32 sub_8030DA0(void); extern void sub_8030DE4(void); extern void sub_803092C(void); @@ -50,7 +50,7 @@ extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32 extern void sub_8095274(u32); extern void sub_80155F0(); extern void sub_80951BC(struct unkStruct_203B480 *r0); -extern void sub_8013114(u32 *r0, s32 *r1); +extern void sub_8013114(struct MenuStruct *r0, s32 *r1); extern void sub_8023C60(); extern u32 sub_8023A94(u32); extern void sub_8024458(s16, u32); @@ -86,7 +86,7 @@ extern u32 sub_8023CE8(void); extern u32 sub_8030894(void); extern void sub_8030F58(u32); extern void sub_8023DA4(void); -extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); extern void sub_8029B34(void); extern void sub_8029AD8(void); extern void sub_8029AF4(void); @@ -536,9 +536,9 @@ void sub_8028348(void) break; case 0x34: sub_8006518(gUnknown_203B2C0->unk35C); - SetMenuItems(&gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, 1, 0, 0); + SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, 1, 0, 0); sub_8023DA4(); - sub_8035CF4(&gUnknown_203B2C0->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1); break; case 0x31: sub_8014248(gUnknown_80DDD2C, 0, 0xA, gUnknown_80DDAA0, 0, 4, 0, &gUnknown_203B2C0->faceFile,0xC); @@ -698,9 +698,9 @@ void sub_8028348(void) case 0x20: case 0x2B: sub_8006518(gUnknown_203B2C0->unk35C); - SetMenuItems(&gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, 1, 0, 0); + SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, 1, 0, 0); sub_803092C(); - sub_8035CF4(&gUnknown_203B2C0->unk21C, 3, 1); + sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1); break; case 0xA: gUnknown_203B2C0->unk540 = sub_8095350(); @@ -1233,9 +1233,9 @@ void sub_80290F0(void) s32 menuAction; menuAction = -1; sub_8030768(0); - if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0) + if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0) { - sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction); + sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction); } switch(menuAction) { @@ -1274,7 +1274,7 @@ void sub_80291AC(void) sub_803092C(); if(gUnknown_203B2C0->fallbackState == 0x3D) { - sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); + sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1); sub_8028B04(0x20); } else @@ -1582,9 +1582,9 @@ void sub_8029684(void) s32 menuAction; menuAction = -1; sub_8030768(0); - if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0) + if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0) { - sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction); + sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction); } switch(menuAction) { @@ -1621,7 +1621,7 @@ void sub_8029740(void) sub_803092C(); if(gUnknown_203B2C0->fallbackState == 0x3D) { - sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); + sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1); sub_8028B04(0x2B); } else @@ -1682,9 +1682,9 @@ void sub_8029884(void) s32 menuAction; menuAction = -1; sub_8023A94(0); - if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0) + if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0) { - sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction); + sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction); } switch(menuAction) { @@ -1730,7 +1730,7 @@ void sub_8029944(void) sub_8023B7C(1); if(gUnknown_203B2C0->fallbackState == 0x3D) { - sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); + sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1); sub_8028B04(0x34); } else From 05ac4b7bb8fedd2a48b224966bd737ea9f8536a2 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 13 Feb 2023 21:55:44 -0800 Subject: [PATCH 08/21] more work on menu input --- asm/code_8012A18.s | 6092 -------------------------------------------- asm/code_80130A8.s | 6025 +++++++++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 + src/menu_input.c | 56 + 4 files changed, 6083 insertions(+), 6092 deletions(-) create mode 100644 asm/code_80130A8.s create mode 100644 src/menu_input.c diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index 37425eeee..d06b5327a 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -673,6097 +673,5 @@ _08013094: bx r1 thumb_func_end sub_8012FD8 - thumb_func_start sub_80130A8 -sub_80130A8: - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r4, 0 - adds r6, 0x4C - ldrb r0, [r6] - cmp r0, 0 - beq _08013100 - adds r5, r4, 0 - adds r5, 0x14 - adds r0, r5, 0 - bl GetKeyPress - cmp r0, 0x1 - beq _080130CA - cmp r0, 0x2 - beq _080130E6 - b _08013100 -_080130CA: - adds r0, r5, 0 - bl sub_80137A8 - lsls r0, 3 - ldr r1, [r4, 0x4] - adds r1, r0 - ldr r0, [r1, 0x4] - str r0, [r4, 0x48] - movs r0, 0 - strb r0, [r6] - strh r0, [r4, 0x38] - bl PlayMenuSoundEffect - b _08013100 -_080130E6: - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldr r1, [r4, 0x4] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0, 0x4] - cmp r0, 0 - blt _08013100 - str r0, [r4, 0x48] - movs r0, 0 - strb r0, [r6] - bl PlayMenuSoundEffect -_08013100: - adds r0, r4, 0 - bl sub_8012EBC - adds r0, r4, 0 - adds r0, 0x4C - ldrb r0, [r0] - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80130A8 - - thumb_func_start sub_8013114 -sub_8013114: - push {lr} - adds r2, r0, 0 - adds r0, 0x4C - ldrb r0, [r0] - cmp r0, 0 - beq _08013124 - movs r0, 0x1 - b _0801312E -_08013124: - cmp r1, 0 - beq _0801312C - ldr r0, [r2, 0x48] - str r0, [r1] -_0801312C: - movs r0, 0 -_0801312E: - pop {r1} - bx r1 - thumb_func_end sub_8013114 - - thumb_func_start sub_8013134 -sub_8013134: - push {r4,lr} - adds r4, r0, 0 - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 3 - ldr r3, _0801315C - adds r0, r3 - str r2, [r4] - movs r2, 0 - strh r2, [r4, 0x18] - strh r1, [r4, 0x1A] - strh r1, [r4, 0x1C] - strh r2, [r4, 0x1E] - strh r2, [r4, 0x4] - ldr r0, [r0, 0xC] - cmp r0, 0x6 - bne _08013160 - movs r0, 0x10 - b _08013162 - .align 2, 0 -_0801315C: .4byte gUnknown_2027370 -_08013160: - movs r0, 0x2 -_08013162: - strh r0, [r4, 0x6] - movs r0, 0 - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x14] - strh r0, [r4, 0x24] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8013134 - - thumb_func_start sub_801317C -sub_801317C: - push {lr} - movs r1, 0 - strb r1, [r0] - strb r1, [r0, 0x1] - strb r1, [r0, 0x2] - strb r1, [r0, 0x4] - strb r1, [r0, 0x3] - ldr r1, _080131A4 - strh r1, [r0, 0x8] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0xA] - adds r0, 0x8 - bl nullsub_7 - bl ResetUnusedInputStruct - pop {r0} - bx r0 - .align 2, 0 -_080131A4: .4byte 0x0000ffff - thumb_func_end sub_801317C - - thumb_func_start AddMenuCursorSprite -AddMenuCursorSprite: - push {lr} - movs r1, 0 - bl AddMenuCursorSprite_ - pop {r0} - bx r0 - thumb_func_end AddMenuCursorSprite - - thumb_func_start AddMenuCursorSprite_ -AddMenuCursorSprite_: - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - movs r1, 0x1A - ldrsh r0, [r6, r1] - cmp r0, 0 - bgt _080131CC - b _080132D6 -_080131CC: - adds r0, r6, 0 - bl UpdateMenuCursorSpriteCoords - ldrh r1, [r6, 0x24] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080132D6 - mov r0, sp - ldrh r0, [r0] - ldr r1, _080132FC - ands r1, r0 - ldr r3, _08013300 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013304 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r4, _08013308 - adds r0, r4, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _0801330C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013310 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013314 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - ands r3, r1 - orrs r3, r0 - str r3, [sp] - mov r3, sp - movs r2, 0xFD - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r5, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _08013318 - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r3, 0x6] - ldr r1, _0801331C - ands r1, r0 - ldr r0, _08013320 - ands r1, r0 - movs r2, 0x8 - ldrsh r0, [r6, r2] - ldr r2, _08013324 - ands r0, r2 - strh r0, [r3, 0x2] - movs r2, 0xA - ldrsh r0, [r6, r2] - adds r0, 0x1 - ands r0, r4 - lsls r0, 4 - ands r1, r5 - orrs r1, r0 - strh r1, [r3, 0x6] - mov r0, sp - movs r1, 0xFF - movs r2, 0 - movs r3, 0 - bl AddSprite -_080132D6: - adds r0, r6, 0 - bl sub_8013470 - movs r1, 0x14 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080132EC - adds r0, r6, 0 - adds r0, 0x14 - bl sub_801332C -_080132EC: - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080132FC: .4byte 0x0000feff -_08013300: .4byte 0xffff0000 -_08013304: .4byte 0x0000fdff -_08013308: .4byte 0x0000f3ff -_0801330C: .4byte 0x0000efff -_08013310: .4byte 0x0000dfff -_08013314: .4byte 0x00003fff -_08013318: .4byte 0x00000fff -_0801331C: .4byte 0x0000fffe -_08013320: .4byte 0x0000fffd -_08013324: .4byte 0x000001ff - thumb_func_end AddMenuCursorSprite_ - - thumb_func_start nullsub_34 -nullsub_34: - bx lr - thumb_func_end nullsub_34 - - thumb_func_start sub_801332C -sub_801332C: - push {r4-r6,lr} - sub sp, 0x8 - movs r1, 0 - movs r2, 0 - str r1, [sp] - str r2, [sp, 0x4] - mov r1, sp - ldrh r1, [r1] - ldr r2, _08013440 - ands r2, r1 - ldr r4, _08013444 - ldr r1, [sp] - ands r1, r4 - orrs r1, r2 - str r1, [sp] - mov r2, sp - ldrh r2, [r2] - adds r3, r4, 0 - ands r3, r1 - orrs r3, r2 - str r3, [sp] - mov r1, sp - ldrh r2, [r1] - ldr r1, _08013448 - ands r1, r2 - adds r2, r4, 0 - ands r2, r3 - orrs r2, r1 - str r2, [sp] - mov r1, sp - ldrh r1, [r1] - adds r3, r4, 0 - ands r3, r2 - orrs r3, r1 - str r3, [sp] - movs r5, 0x80 - lsls r5, 3 - mov r1, sp - ldrh r2, [r1] - ldr r6, _0801344C - adds r1, r6, 0 - ands r1, r2 - adds r2, r4, 0 - ands r2, r3 - orrs r2, r1 - str r2, [sp] - mov r1, sp - ldrh r1, [r1] - orrs r5, r1 - adds r3, r4, 0 - ands r3, r2 - orrs r3, r5 - str r3, [sp] - mov r1, sp - ldrh r2, [r1] - ldr r1, _08013450 - ands r1, r2 - adds r2, r4, 0 - ands r2, r3 - orrs r2, r1 - str r2, [sp] - mov r1, sp - ldrh r1, [r1] - adds r3, r4, 0 - ands r3, r2 - orrs r3, r1 - str r3, [sp] - mov r1, sp - ldrh r2, [r1] - ldr r1, _08013454 - ands r1, r2 - adds r2, r4, 0 - ands r2, r3 - orrs r2, r1 - str r2, [sp] - mov r1, sp - ldrh r1, [r1] - adds r3, r4, 0 - ands r3, r2 - orrs r3, r1 - str r3, [sp] - mov r1, sp - ldrh r2, [r1] - ldr r1, _08013458 - ands r1, r2 - adds r2, r4, 0 - ands r2, r3 - orrs r2, r1 - str r2, [sp] - mov r1, sp - ldrh r1, [r1] - ands r4, r2 - orrs r4, r1 - str r4, [sp] - mov r4, sp - ldr r3, _0801345C - ldrh r2, [r4, 0x4] - movs r1, 0xFC - lsls r1, 8 - ands r1, r2 - orrs r1, r3 - ands r1, r6 - movs r6, 0xF - movs r2, 0xF0 - lsls r2, 8 - ldr r5, _08013460 - ands r1, r5 - orrs r1, r2 - strh r1, [r4, 0x4] - ldrh r1, [r4, 0x6] - ldr r2, _08013464 - ands r2, r1 - ldr r1, _08013468 - ands r2, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r3, _0801346C - ands r1, r3 - strh r1, [r4, 0x2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - adds r0, 0x1 - ands r0, r5 - lsls r0, 4 - ands r2, r6 - orrs r2, r0 - strh r2, [r4, 0x6] - mov r0, sp - movs r1, 0xFF - movs r2, 0 - movs r3, 0 - bl AddSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08013440: .4byte 0x0000feff -_08013444: .4byte 0xffff0000 -_08013448: .4byte 0x0000fdff -_0801344C: .4byte 0x0000f3ff -_08013450: .4byte 0x0000efff -_08013454: .4byte 0x0000dfff -_08013458: .4byte 0x00003fff -_0801345C: .4byte 0x000003f5 -_08013460: .4byte 0x00000fff -_08013464: .4byte 0x0000fffe -_08013468: .4byte 0x0000fffd -_0801346C: .4byte 0x000001ff - thumb_func_end sub_801332C - - thumb_func_start sub_8013470 -sub_8013470: - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08013488 - b _08013624 -_08013488: - movs r2, 0x1E - ldrsh r0, [r6, r2] - cmp r0, 0 - beq _08013586 - mov r0, sp - ldrh r0, [r0] - ldr r1, _0801362C - ands r1, r0 - ldr r3, _08013630 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013634 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r4, _08013638 - adds r0, r4, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _0801363C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013640 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013644 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - ands r3, r1 - orrs r3, r0 - str r3, [sp] - mov r3, sp - ldr r2, _08013648 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r5, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _0801364C - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r3, 0x6] - ldr r1, _08013650 - ands r1, r0 - ldr r0, _08013654 - ands r1, r0 - movs r2, 0xC - ldrsh r0, [r6, r2] - ldr r2, _08013658 - ands r0, r2 - strh r0, [r3, 0x2] - movs r2, 0xE - ldrsh r0, [r6, r2] - ands r0, r4 - lsls r0, 4 - ands r1, r5 - orrs r1, r0 - strh r1, [r3, 0x6] - mov r0, sp - movs r1, 0xFF - movs r2, 0 - movs r3, 0 - bl AddSprite -_08013586: - movs r1, 0x20 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _08013624 - adds r1, r0, 0 - movs r2, 0x1E - ldrsh r0, [r6, r2] - adds r0, 0x1 - cmp r1, r0 - beq _08013624 - mov r0, sp - ldrh r0, [r0] - ldr r1, _0801362C - ands r1, r0 - mov r0, sp - strh r1, [r0] - strh r1, [r0] - ldr r0, _08013634 - ands r0, r1 - mov r1, sp - strh r0, [r1] - strh r0, [r1] - ldr r4, _08013638 - ands r0, r4 - strh r0, [r1] - strh r0, [r1] - ldr r1, _0801363C - ands r1, r0 - mov r0, sp - strh r1, [r0] - strh r1, [r0] - ldr r2, _08013640 - ands r2, r1 - strh r2, [r0] - strh r2, [r0] - ldr r0, _08013644 - ands r0, r2 - mov r1, sp - strh r0, [r1] - strh r0, [r1] - mov r3, sp - ldr r2, _0801365C - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r5, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _0801364C - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r3, 0x6] - ldr r1, _08013650 - ands r1, r0 - ldr r0, _08013654 - ands r1, r0 - movs r2, 0xC - ldrsh r0, [r6, r2] - adds r0, 0xA - ldr r2, _08013658 - ands r0, r2 - strh r0, [r3, 0x2] - movs r2, 0xE - ldrsh r0, [r6, r2] - ands r0, r4 - lsls r0, 4 - ands r1, r5 - orrs r1, r0 - strh r1, [r3, 0x6] - mov r0, sp - movs r1, 0xFF - movs r2, 0 - movs r3, 0 - bl AddSprite -_08013624: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801362C: .4byte 0x0000feff -_08013630: .4byte 0xffff0000 -_08013634: .4byte 0x0000fdff -_08013638: .4byte 0x0000f3ff -_0801363C: .4byte 0x0000efff -_08013640: .4byte 0x0000dfff -_08013644: .4byte 0x00003fff -_08013648: .4byte 0x000003f2 -_0801364C: .4byte 0x00000fff -_08013650: .4byte 0x0000fffe -_08013654: .4byte 0x0000fffd -_08013658: .4byte 0x000001ff -_0801365C: .4byte 0x000003f3 - thumb_func_end sub_8013470 - - thumb_func_start sub_8013660 -sub_8013660: - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1A - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _0801367A - adds r0, r4, 0 - bl UpdateMenuCursorSpriteCoords - adds r0, r4, 0 - adds r0, 0x8 - bl sub_801332C -_0801367A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8013660 - - thumb_func_start UpdateMenuCursorSpriteCoords -UpdateMenuCursorSpriteCoords: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 3 - ldr r0, _080136B8 - adds r4, r0 - movs r1, 0 - ldrsh r0, [r4, r1] - lsls r0, 3 - ldrh r2, [r5, 0x4] - adds r0, r2 - strh r0, [r5, 0x8] - movs r0, 0x18 - ldrsh r1, [r5, r0] - adds r0, r5, 0 - bl sub_8013800 - movs r2, 0x2 - ldrsh r1, [r4, r2] - lsls r1, 3 - adds r1, r0 - strh r1, [r5, 0xA] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080136B8: .4byte gUnknown_2027370 - thumb_func_end UpdateMenuCursorSpriteCoords - - thumb_func_start MoveMenuCursorDown -MoveMenuCursorDown: - push {lr} - adds r1, r0, 0 - movs r3, 0 - strh r3, [r1, 0x24] - movs r0, 0x1A - ldrsh r2, [r1, r0] - cmp r2, 0 - ble _080136DA - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, r2 - blt _080136DC -_080136DA: - strh r3, [r1, 0x18] -_080136DC: - pop {r0} - bx r0 - thumb_func_end MoveMenuCursorDown - - thumb_func_start sub_80136E0 -sub_80136E0: - push {r4,r5,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - movs r1, 0 - strh r1, [r2, 0x24] - ldrh r4, [r2, 0x1A] - movs r0, 0x1A - ldrsh r3, [r2, r0] - cmp r3, 0 - ble _08013708 - ldrh r0, [r2, 0x18] - adds r0, 0x1 - strh r0, [r2, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, r3 - blt _08013710 - cmp r5, 0 - beq _0801370C -_08013708: - strh r1, [r2, 0x18] - b _08013710 -_0801370C: - subs r0, r4, 0x1 - strh r0, [r2, 0x18] -_08013710: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80136E0 - - thumb_func_start MoveMenuCursorUp -MoveMenuCursorUp: - push {r4,lr} - adds r1, r0, 0 - movs r2, 0 - strh r2, [r1, 0x24] - ldrh r3, [r1, 0x1A] - movs r4, 0x1A - ldrsh r0, [r1, r4] - cmp r0, 0 - bgt _0801372E - strh r2, [r1, 0x18] - b _0801373E -_0801372E: - ldrh r0, [r1, 0x18] - subs r0, 0x1 - strh r0, [r1, 0x18] - lsls r0, 16 - cmp r0, 0 - bge _0801373E - subs r0, r3, 0x1 - strh r0, [r1, 0x18] -_0801373E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end MoveMenuCursorUp - - thumb_func_start sub_8013744 -sub_8013744: - push {r4-r6,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - movs r3, 0 - strh r3, [r2, 0x24] - ldrh r4, [r2, 0x1A] - movs r6, 0x1A - ldrsh r0, [r2, r6] - cmp r0, 0 - bgt _08013760 - strh r3, [r2, 0x18] - b _08013778 -_08013760: - ldrh r0, [r2, 0x18] - subs r0, 0x1 - strh r0, [r2, 0x18] - lsls r0, 16 - cmp r0, 0 - bge _08013778 - cmp r1, 0 - beq _08013776 - subs r0, r4, 0x1 - strh r0, [r2, 0x18] - b _08013778 -_08013776: - strh r5, [r2, 0x18] -_08013778: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8013744 - - thumb_func_start sub_8013780 -sub_8013780: - push {lr} - adds r2, r0, 0 - cmp r1, 0 - bge _0801378E - movs r0, 0 - strh r0, [r2, 0x18] - b _080137A0 -_0801378E: - movs r3, 0x1A - ldrsh r0, [r2, r3] - cmp r1, r0 - blt _0801379E - ldrh r0, [r2, 0x1A] - subs r0, 0x1 - strh r0, [r2, 0x18] - b _080137A0 -_0801379E: - strh r1, [r2, 0x18] -_080137A0: - movs r0, 0 - strh r0, [r2, 0x24] - pop {r0} - bx r0 - thumb_func_end sub_8013780 - - thumb_func_start sub_80137A8 -sub_80137A8: - movs r1, 0x18 - ldrsh r0, [r0, r1] - bx lr - thumb_func_end sub_80137A8 - - thumb_func_start sub_80137B0 -sub_80137B0: - push {r4,lr} - adds r4, r0, 0 - cmp r1, 0 - ble _080137BC - lsls r0, r1, 8 - b _080137E2 -_080137BC: - ldr r3, _080137F4 - ldr r1, [r4] - lsls r0, r1, 3 - adds r0, r1 - lsls r1, r0, 3 - adds r0, r3, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - movs r2, 0 - cmp r0, 0x6 - bne _080137D6 - movs r2, 0x10 -_080137D6: - adds r0, r1, r3 - movs r1, 0x6 - ldrsh r0, [r0, r1] - lsls r0, 3 - subs r0, r2 - lsls r0, 8 -_080137E2: - movs r2, 0x1C - ldrsh r1, [r4, r2] - bl __divsi3 - str r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080137F4: .4byte gUnknown_2027370 - thumb_func_end sub_80137B0 - - thumb_func_start sub_80137F8 -sub_80137F8: - lsls r1, 8 - str r1, [r0, 0x10] - bx lr - thumb_func_end sub_80137F8 - - thumb_func_start sub_8013800 -sub_8013800: - push {lr} - movs r3, 0x6 - ldrsh r2, [r0, r3] - ldr r0, [r0, 0x10] - muls r0, r1 - cmp r0, 0 - bge _08013810 - adds r0, 0xFF -_08013810: - asrs r0, 8 - adds r0, r2, r0 - pop {r1} - bx r1 - thumb_func_end sub_8013800 - - thumb_func_start sub_8013818 -sub_8013818: - push {r4,lr} - adds r4, r0, 0 - str r3, [r4] - movs r0, 0 - strh r1, [r4, 0x22] - strh r2, [r4, 0x1C] - strh r0, [r4, 0x14] - strh r0, [r4, 0x24] - strh r0, [r4, 0x18] - strh r0, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - adds r0, r4, 0 - bl sub_8013984 - adds r0, r4, 0 - movs r1, 0xC - bl sub_80137F8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8013818 - - thumb_func_start sub_8013848 -sub_8013848: - push {r4,lr} - adds r4, r0, 0 - str r3, [r4] - movs r0, 0 - strh r1, [r4, 0x22] - strh r2, [r4, 0x1C] - strh r0, [r4, 0x14] - strh r0, [r4, 0x24] - strh r0, [r4, 0x18] - strh r0, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - adds r0, r4, 0 - bl sub_8013984 - adds r0, r4, 0 - movs r1, 0x18 - bl sub_80137F8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8013848 - - thumb_func_start sub_8013878 -sub_8013878: - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - cmp r6, 0 - bge _08013886 - movs r6, 0 - b _08013890 -_08013886: - movs r1, 0x22 - ldrsh r0, [r5, r1] - cmp r6, r0 - blt _08013890 - subs r6, r0, 0x1 -_08013890: - movs r0, 0x1C - ldrsh r1, [r5, r0] - adds r0, r6, 0 - bl __divsi3 - movs r4, 0 - strh r0, [r5, 0x1E] - movs r0, 0x1C - ldrsh r1, [r5, r0] - adds r0, r6, 0 - bl __modsi3 - strh r0, [r5, 0x18] - strh r4, [r5, 0x24] - adds r0, r5, 0 - bl sub_8013984 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8013878 - - thumb_func_start sub_80138B8 -sub_80138B8: - push {r4-r7,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - movs r0, 0x1E - ldrsh r7, [r5, r0] - movs r1, 0x18 - ldrsh r6, [r5, r1] - adds r0, r5, 0 - bl AddMenuCursorSprite - cmp r4, 0 - beq _0801391C - adds r0, r5, 0 - bl GetKeyPress - cmp r0, 0x8 - beq _080138F8 - cmp r0, 0x8 - bgt _080138E6 - cmp r0, 0x7 - beq _080138F0 - b _0801391C -_080138E6: - cmp r0, 0x9 - beq _0801390E - cmp r0, 0xA - beq _08013916 - b _0801391C -_080138F0: - adds r0, r5, 0 - bl MoveMenuCursorUp - b _080138FE -_080138F8: - adds r0, r5, 0 - bl MoveMenuCursorDown -_080138FE: - movs r1, 0x18 - ldrsh r0, [r5, r1] - cmp r6, r0 - beq _0801391C - movs r0, 0x3 - bl PlayMenuSoundEffect - b _0801391C -_0801390E: - adds r0, r5, 0 - bl sub_8013A7C - b _0801391C -_08013916: - adds r0, r5, 0 - bl sub_8013A54 -_0801391C: - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r7, r0 - bne _08013928 - movs r0, 0 - b _08013930 -_08013928: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x1 -_08013930: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80138B8 - - thumb_func_start sub_8013938 -sub_8013938: - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x1E - ldrsh r5, [r4, r0] - movs r0, 0 - strh r0, [r4, 0x1A] - strh r0, [r4, 0x14] - adds r0, r4, 0 - bl AddMenuCursorSprite - adds r0, r4, 0 - bl GetKeyPress - cmp r0, 0x9 - beq _0801395C - cmp r0, 0xA - beq _08013964 - b _0801396A -_0801395C: - adds r0, r4, 0 - bl sub_8013A7C - b _0801396A -_08013964: - adds r0, r4, 0 - bl sub_8013A54 -_0801396A: - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r5, r0 - bne _08013976 - movs r0, 0 - b _0801397E -_08013976: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x1 -_0801397E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8013938 - - thumb_func_start sub_8013984 -sub_8013984: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r1, [r4] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 3 - ldr r1, _08013A20 - adds r6, r0, r1 - ldrh r1, [r4, 0x1C] - movs r2, 0x1C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080139A2 - adds r0, r1, 0x1 - strh r0, [r4, 0x1C] -_080139A2: - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x1C - ldrsh r1, [r4, r2] - bl __divsi3 - adds r5, r0, 0 - strh r5, [r4, 0x20] - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x1C - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - beq _080139C6 - adds r0, r5, 0x1 - strh r0, [r4, 0x20] -_080139C6: - movs r0, 0x1E - ldrsh r1, [r4, r0] - movs r2, 0x20 - ldrsh r0, [r4, r2] - subs r0, 0x1 - ldrh r5, [r4, 0x20] - cmp r1, r0 - ble _080139DA - subs r0, r5, 0x1 - strh r0, [r4, 0x1E] -_080139DA: - movs r0, 0x1E - ldrsh r1, [r4, r0] - movs r2, 0x20 - ldrsh r0, [r4, r2] - subs r0, 0x1 - cmp r1, r0 - bne _080139F8 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x1C - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _080139FA -_080139F8: - ldrh r0, [r4, 0x1C] -_080139FA: - strh r0, [r4, 0x1A] - movs r0, 0x18 - ldrsh r1, [r4, r0] - movs r2, 0x1A - ldrsh r0, [r4, r2] - subs r0, 0x1 - cmp r1, r0 - ble _08013A10 - ldrh r0, [r4, 0x1A] - subs r0, 0x1 - strh r0, [r4, 0x18] -_08013A10: - movs r1, 0 - strh r1, [r4, 0x4] - ldr r0, [r6, 0xC] - cmp r0, 0x6 - bne _08013A24 - movs r0, 0x10 - strh r0, [r4, 0x6] - b _08013A26 - .align 2, 0 -_08013A20: .4byte gUnknown_2027370 -_08013A24: - strh r1, [r4, 0x6] -_08013A26: - lsls r0, r5, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _08013A32 - movs r0, 0 - b _08013A40 -_08013A32: - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0x4 - ldrsh r1, [r6, r2] - adds r0, r1 - subs r0, 0x2 - lsls r0, 3 -_08013A40: - strh r0, [r4, 0xC] - movs r1, 0x2 - ldrsh r0, [r6, r1] - adds r0, 0x1 - lsls r0, 3 - subs r0, 0x2 - strh r0, [r4, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8013984 - - thumb_func_start sub_8013A54 -sub_8013A54: - push {lr} - adds r2, r0, 0 - movs r0, 0x1E - ldrsh r1, [r2, r0] - movs r3, 0x20 - ldrsh r0, [r2, r3] - subs r0, 0x1 - cmp r1, r0 - bge _08013A6C - ldrh r0, [r2, 0x1E] - adds r0, 0x1 - b _08013A6E -_08013A6C: - movs r0, 0 -_08013A6E: - strh r0, [r2, 0x1E] - adds r0, r2, 0 - bl sub_8013984 - pop {r0} - bx r0 - thumb_func_end sub_8013A54 - - thumb_func_start sub_8013A7C -sub_8013A7C: - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x1E] - movs r3, 0x1E - ldrsh r0, [r1, r3] - cmp r0, 0 - bgt _08013A90 - ldrh r0, [r1, 0x20] - subs r0, 0x1 - b _08013A92 -_08013A90: - subs r0, r2, 0x1 -_08013A92: - strh r0, [r1, 0x1E] - adds r0, r1, 0 - bl sub_8013984 - pop {r0} - bx r0 - thumb_func_end sub_8013A7C - - thumb_func_start sub_8013AA0 -sub_8013AA0: - push {r4,r5,lr} - sub sp, 0x28 - adds r5, r0, 0 - ldrh r1, [r5, 0x28] - ldr r0, _08013B9C - ands r0, r1 - ldr r1, _08013BA0 - ands r0, r1 - ldr r4, _08013BA4 - ands r0, r4 - ldr r1, _08013BA8 - ands r0, r1 - ldr r1, _08013BAC - ands r0, r1 - movs r1, 0x80 - lsls r1, 7 - ldr r3, _08013BB0 - ands r0, r3 - orrs r0, r1 - strh r0, [r5, 0x28] - movs r1, 0x80 - lsls r1, 6 - ldrh r0, [r5, 0x2A] - ldr r2, _08013BB4 - ands r2, r0 - orrs r2, r1 - ands r2, r3 - movs r3, 0xFC - lsls r3, 2 - ldrh r1, [r5, 0x2C] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r3 - ands r0, r4 - movs r3, 0xF - movs r4, 0xF0 - lsls r4, 8 - ldr r1, _08013BB8 - ands r0, r1 - orrs r0, r4 - strh r0, [r5, 0x2C] - movs r0, 0xFE - lsls r0, 8 - ands r2, r0 - movs r0, 0xF0 - orrs r2, r0 - strh r2, [r5, 0x2A] - subs r1, 0xFF - ldrh r0, [r5, 0x2E] - ands r3, r0 - movs r0, 0 - orrs r3, r1 - strh r3, [r5, 0x2E] - adds r1, r5, 0 - adds r1, 0x26 - strb r0, [r1] - ldr r1, [r5, 0xC] - ldr r2, [r5, 0x10] - mov r0, sp - bl ConvertToDecimal - ldr r0, [r5, 0x10] - adds r1, r5, 0 - adds r1, 0x25 - strb r0, [r1] - ldrb r2, [r1] - subs r0, r2, 0x1 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - bne _08013B50 - cmp r2, 0x1 - bls _08013B50 - adds r2, r1, 0 -_08013B38: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - ldrb r1, [r2] - subs r0, r1, 0x1 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - bne _08013B50 - cmp r1, 0x1 - bhi _08013B38 -_08013B50: - ldr r1, [r5, 0x4] - str r1, [r5] - ldr r2, [r5, 0x10] - mov r0, sp - bl ConvertToDecimal - adds r0, r5, 0 - adds r0, 0x25 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r5, 0 - adds r1, 0x24 - strb r0, [r1] - ldrb r2, [r1] - lsls r0, r2, 2 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - bne _08013B92 - cmp r2, 0 - beq _08013B92 - adds r2, r1, 0 -_08013B7C: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - ldrb r1, [r2] - lsls r0, r1, 2 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - bne _08013B92 - cmp r1, 0 - bne _08013B7C -_08013B92: - add sp, 0x28 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08013B9C: .4byte 0x0000feff -_08013BA0: .4byte 0x0000fdff -_08013BA4: .4byte 0x0000f3ff -_08013BA8: .4byte 0x0000efff -_08013BAC: .4byte 0x0000dfff -_08013BB0: .4byte 0x00003fff -_08013BB4: .4byte 0x0000c1ff -_08013BB8: .4byte 0x00000fff - thumb_func_end sub_8013AA0 - - thumb_func_start sub_8013BBC -sub_8013BBC: - push {r4-r7,lr} - adds r7, r0, 0 - adds r4, r7, 0 - adds r4, 0x26 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r0, r7, 0 - bl sub_8013D10 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08013C26 - movs r2, 0x80 - lsls r2, 6 - ldrh r1, [r7, 0x2A] - ldr r4, _08013C38 - adds r0, r4, 0 - ands r0, r1 - orrs r0, r2 - strh r0, [r7, 0x2A] - adds r5, r7, 0 - adds r5, 0x28 - movs r6, 0x80 - lsls r6, 1 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite - ldrh r0, [r7, 0x2A] - ands r4, r0 - strh r4, [r7, 0x2A] - ldrh r1, [r7, 0x2E] - ldr r0, _08013C3C - lsrs r1, 4 - adds r1, 0x10 - ands r1, r0 - lsls r1, 4 - ldrh r2, [r7, 0x2E] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r7, 0x2E] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite -_08013C26: - adds r0, r7, 0 - bl sub_8013DD0 - lsls r0, 24 - cmp r0, 0 - beq _08013C40 - movs r0, 0x1 - b _08013C62 - .align 2, 0 -_08013C38: .4byte 0x0000c1ff -_08013C3C: .4byte 0x00000fff -_08013C40: - bl sub_8012AE8 - cmp r0, 0x1 - beq _08013C56 - cmp r0, 0x2 - bne _08013C60 - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _08013C62 -_08013C56: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _08013C62 -_08013C60: - movs r0, 0 -_08013C62: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8013BBC - - thumb_func_start sub_8013C68 -sub_8013C68: - push {r4-r6,lr} - sub sp, 0x2C - adds r5, r0, 0 - ldr r1, [r5] - ldr r2, [r5, 0x10] - add r0, sp, 0x4 - bl ConvertToDecimal - ldr r0, [r5, 0x10] - subs r4, r0, 0x1 - cmp r4, 0 - ble _08013CA0 - lsls r0, r4, 2 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - ldr r0, [r1] - cmp r0, 0 - bne _08013CA0 - movs r2, 0xFF -_08013C90: - str r2, [r1] - subs r1, 0x4 - subs r4, 0x1 - cmp r4, 0 - ble _08013CA0 - ldr r0, [r1] - cmp r0, 0 - beq _08013C90 -_08013CA0: - movs r4, 0 - adds r0, r5, 0 - adds r0, 0x25 - adds r6, r0, 0 - b _08013CDA -_08013CAA: - lsls r0, r4, 2 - add r0, sp - adds r0, 0x4 - ldr r0, [r0] - cmp r0, 0xFF - bne _08013CBA - movs r3, 0x2A - b _08013CC0 -_08013CBA: - adds r0, 0x30 - lsls r0, 24 - lsrs r3, r0, 24 -_08013CC0: - adds r4, 0x1 - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - ldr r0, [r5, 0x1C] - subs r0, r1 - ldr r1, [r5, 0x20] - ldr r2, [r5, 0x14] - str r2, [sp] - adds r2, r3, 0 - movs r3, 0x7 - bl sub_8012C60 -_08013CDA: - ldrb r0, [r6] - cmp r4, r0 - blt _08013CAA - movs r4, 0 - b _08013D02 -_08013CE4: - ldr r0, [r5, 0x14] - adds r4, 0x1 - lsls r2, r4, 1 - adds r2, r4 - lsls r2, 2 - ldr r1, [r5, 0x1C] - subs r1, r2 - subs r1, 0x1 - ldr r2, [r5, 0x20] - adds r2, 0xA - movs r3, 0x5 - str r3, [sp] - movs r3, 0xB - bl sub_800792C -_08013D02: - ldr r0, [r5, 0x10] - cmp r4, r0 - blt _08013CE4 - add sp, 0x2C - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8013C68 - - thumb_func_start sub_8013D10 -sub_8013D10: - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [r6, 0x14] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 3 - ldr r0, _08013D34 - adds r7, r1, r0 - adds r4, r6, 0 - adds r4, 0x24 - ldrb r5, [r4] - bl sub_8012AE8 - cmp r0, 0x9 - beq _08013D38 - cmp r0, 0xA - beq _08013D4E - b _08013D62 - .align 2, 0 -_08013D34: .4byte gUnknown_2027370 -_08013D38: - ldrb r1, [r4] - adds r0, r6, 0 - adds r0, 0x25 - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bge _08013D4A - adds r0, r1, 0x1 - b _08013D5C -_08013D4A: - movs r0, 0 - b _08013D60 -_08013D4E: - ldrb r0, [r4] - cmp r0, 0 - bne _08013D5A - adds r0, r6, 0 - adds r0, 0x25 - ldrb r0, [r0] -_08013D5A: - subs r0, 0x1 -_08013D5C: - lsls r0, 24 - lsrs r0, 24 -_08013D60: - adds r5, r0, 0 -_08013D62: - adds r4, r6, 0 - adds r4, 0x24 - ldrb r0, [r4] - cmp r5, r0 - beq _08013D7C - strb r5, [r4] - movs r0, 0x3 - bl PlayMenuSoundEffect - adds r1, r6, 0 - adds r1, 0x26 - movs r0, 0x8 - strb r0, [r1] -_08013D7C: - ldrb r0, [r4] - adds r0, 0x1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, [r6, 0x1C] - subs r2, r1 - movs r1, 0 - ldrsh r0, [r7, r1] - lsls r0, 3 - adds r2, r0 - subs r2, 0x3 - ldr r0, _08013DC8 - ands r2, r0 - ldrh r1, [r6, 0x2A] - movs r0, 0xFE - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - strh r0, [r6, 0x2A] - movs r1, 0x2 - ldrsh r0, [r7, r1] - lsls r0, 3 - ldr r1, [r6, 0x20] - adds r1, r0 - subs r1, 0x7 - ldr r0, _08013DCC - ands r1, r0 - lsls r1, 4 - ldrh r2, [r6, 0x2E] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r6, 0x2E] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08013DC8: .4byte 0x000001ff -_08013DCC: .4byte 0x00000fff - thumb_func_end sub_8013D10 - - thumb_func_start sub_8013DD0 -sub_8013DD0: - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8012AE8 - cmp r0, 0x7 - beq _08013DE4 - cmp r0, 0x8 - beq _08013E10 - movs r0, 0 - b _08013E4C -_08013DE4: - ldr r2, [r4] - ldr r0, [r4, 0xC] - cmp r2, r0 - beq _08013E18 - ldr r1, _08013E0C - adds r0, r4, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - adds r5, r2, r0 - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r0, [r4, 0xC] - cmp r5, r0 - bgt _08013E3E - b _08013E48 - .align 2, 0 -_08013E0C: .4byte gUnknown_80D4830 -_08013E10: - ldr r2, [r4] - ldr r0, [r4, 0x8] - cmp r2, r0 - bne _08013E22 -_08013E18: - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0 - b _08013E4C -_08013E22: - ldr r1, _08013E44 - adds r0, r4, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - subs r5, r2, r0 - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r0, [r4, 0x8] - cmp r5, r0 - bge _08013E48 -_08013E3E: - str r0, [r4] - b _08013E4A - .align 2, 0 -_08013E44: .4byte gUnknown_80D4830 -_08013E48: - str r5, [r4] -_08013E4A: - movs r0, 0x1 -_08013E4C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8013DD0 - - thumb_func_start sub_8013E54 -sub_8013E54: - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08013F60 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r0, [r0] - ldr r1, _08013F64 - ands r1, r0 - ldr r3, _08013F68 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013F6C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r5, _08013F70 - adds r0, r5, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013F74 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013F78 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - movs r4, 0x80 - lsls r4, 7 - mov r0, sp - ldrh r1, [r0] - ldr r0, _08013F7C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - orrs r4, r0 - ands r3, r1 - orrs r3, r4 - str r3, [sp] - mov r3, sp - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r5 - movs r2, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _08013F80 - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - movs r1, 0x2 - ldrsh r0, [r6, r1] - lsls r0, 3 - adds r0, 0x80 - ands r0, r4 - lsls r0, 4 - ldrh r1, [r3, 0x6] - ands r2, r1 - orrs r2, r0 - strh r2, [r3, 0x6] - movs r0, 0x70 - strh r0, [r3, 0x2] - movs r1, 0x80 - lsls r1, 1 - mov r0, sp - movs r2, 0 - movs r3, 0 - bl AddSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08013F60: .4byte gUnknown_2027370 -_08013F64: .4byte 0x0000feff -_08013F68: .4byte 0xffff0000 -_08013F6C: .4byte 0x0000fdff -_08013F70: .4byte 0x0000f3ff -_08013F74: .4byte 0x0000efff -_08013F78: .4byte 0x0000dfff -_08013F7C: .4byte 0x00003fff -_08013F80: .4byte 0x00000fff - thumb_func_end sub_8013E54 - - thumb_func_start sub_8013F84 -sub_8013F84: - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08014090 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r0, [r0] - ldr r1, _08014094 - ands r1, r0 - ldr r3, _08014098 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _0801409C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r5, _080140A0 - adds r0, r5, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080140A4 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080140A8 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - movs r4, 0x80 - lsls r4, 7 - mov r0, sp - ldrh r1, [r0] - ldr r0, _080140AC - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - orrs r4, r0 - ands r3, r1 - orrs r3, r4 - str r3, [sp] - mov r3, sp - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r5 - movs r2, 0xF - movs r1, 0xF0 - lsls r1, 8 - ldr r4, _080140B0 - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - movs r1, 0x2 - ldrsh r0, [r6, r1] - lsls r0, 3 - adds r0, 0x60 - ands r0, r4 - lsls r0, 4 - ldrh r1, [r3, 0x6] - ands r2, r1 - orrs r2, r0 - strh r2, [r3, 0x6] - movs r0, 0x70 - strh r0, [r3, 0x2] - movs r1, 0x80 - lsls r1, 1 - mov r0, sp - movs r2, 0 - movs r3, 0 - bl AddSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014090: .4byte gUnknown_2027370 -_08014094: .4byte 0x0000feff -_08014098: .4byte 0xffff0000 -_0801409C: .4byte 0x0000fdff -_080140A0: .4byte 0x0000f3ff -_080140A4: .4byte 0x0000efff -_080140A8: .4byte 0x0000dfff -_080140AC: .4byte 0x00003fff -_080140B0: .4byte 0x00000fff - thumb_func_end sub_8013F84 - - thumb_func_start sub_80140B4 -sub_80140B4: - push {r4-r7,lr} - ldr r4, _080140D8 - adds r2, r0, 0 - movs r3, 0x3 -_080140BC: - adds r1, r2, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r4, 0x18 - adds r2, 0x18 - subs r3, 0x1 - cmp r3, 0 - bge _080140BC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080140D8: .4byte gUnknown_80D47C8 - thumb_func_end sub_80140B4 - - thumb_func_start sub_80140DC -sub_80140DC: - push {lr} - sub sp, 0x4 - ldr r0, _080140F4 - str r0, [sp] - mov r0, sp - bl SetSavingIconCoords - bl sub_8011830 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080140F4: .4byte 0x008000c8 - thumb_func_end sub_80140DC - - thumb_func_start sub_80140F8 -sub_80140F8: - push {lr} - sub sp, 0x4 - ldr r0, _08014110 - str r0, [sp] - mov r0, sp - bl SetSavingIconCoords - bl sub_8011830 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08014110: .4byte 0x004000bc - thumb_func_end sub_80140F8 - - thumb_func_start sub_8014114 -sub_8014114: - push {lr} - bl xxx_call_start_bg_music - movs r0, 0 - bl SetSavingIconCoords - pop {r0} - bx r0 - thumb_func_end sub_8014114 - - thumb_func_start nullsub_201 -nullsub_201: - bx lr - thumb_func_end nullsub_201 - - thumb_func_start sub_8014128 -sub_8014128: - push {lr} - bl sub_8012AE8 - cmp r0, 0x2 - beq _08014136 - movs r0, 0x1 - b _08014138 -_08014136: - movs r0, 0 -_08014138: - pop {r1} - bx r1 - thumb_func_end sub_8014128 - - thumb_func_start sub_801413C -sub_801413C: - movs r0, 0 - bx lr - thumb_func_end sub_801413C - - thumb_func_start sub_8014140 -sub_8014140: - movs r0, 0 - bx lr - thumb_func_end sub_8014140 - - thumb_func_start sub_8014144 -sub_8014144: - ldr r0, _0801415C - movs r2, 0 - str r2, [r0] - ldr r0, _08014160 - movs r1, 0x3C - str r1, [r0] - ldr r0, _08014164 - str r1, [r0] - ldr r0, _08014168 - str r2, [r0] - bx lr - .align 2, 0 -_0801415C: .4byte gUnknown_202E744 -_08014160: .4byte gUnknown_202E738 -_08014164: .4byte gUnknown_202E73C -_08014168: .4byte gUnknown_202E740 - thumb_func_end sub_8014144 - - thumb_func_start sub_801416C -sub_801416C: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bge _0801418C - ldr r0, _08014184 - str r3, [r0] - ldr r1, _08014188 - negs r0, r2 - b _08014194 - .align 2, 0 -_08014184: .4byte gUnknown_202E738 -_08014188: .4byte gUnknown_202E740 -_0801418C: - ldr r0, _080141A8 - str r2, [r0] - ldr r1, _080141AC - movs r0, 0 -_08014194: - str r0, [r1] - ldr r0, _080141B0 - adds r1, r3, 0 - cmp r1, 0 - bge _080141A0 - movs r1, 0 -_080141A0: - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080141A8: .4byte gUnknown_202E738 -_080141AC: .4byte gUnknown_202E740 -_080141B0: .4byte gUnknown_202E73C - thumb_func_end sub_801416C - - thumb_func_start sub_80141B4 -sub_80141B4: - push {r4-r6,lr} - sub sp, 0x14 - lsls r3, 16 - lsrs r3, 16 - movs r6, 0x1 - negs r6, r6 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r2, [sp, 0xC] - str r3, [sp, 0x10] - adds r2, r6, 0 - movs r3, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80141B4 - - thumb_func_start sub_80141E0 -sub_80141E0: - push {r4-r6,lr} - sub sp, 0x14 - lsls r6, r2, 16 - movs r2, 0x1 - negs r2, r2 - ldr r3, _08014210 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r1, [sp, 0xC] - movs r1, 0xC0 - lsls r1, 18 - orrs r1, r6 - lsrs r1, 16 - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014210: .4byte gUnknown_80D485C - thumb_func_end sub_80141E0 - - thumb_func_start sub_8014214 -sub_8014214: - push {r4-r6,lr} - sub sp, 0x14 - lsls r6, r2, 16 - movs r2, 0x1 - negs r2, r2 - ldr r3, _08014244 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r1, [sp, 0xC] - movs r1, 0xC0 - lsls r1, 18 - orrs r1, r6 - lsrs r1, 16 - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014244: .4byte gUnknown_80D4880 - thumb_func_end sub_8014214 - - thumb_func_start sub_8014248 -sub_8014248: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r1, 0 - mov r9, r2 - mov r8, r3 - ldr r5, [sp, 0x28] - ldr r7, [sp, 0x30] - ldr r1, [sp, 0x34] - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - movs r1, 0 - str r1, [sp] - ldr r4, _080142B8 - ldr r3, _080142BC - adds r2, r4, r3 - adds r1, r4, 0 - mov r3, r10 - bl xxx_format_string - ldr r0, _080142C0 - str r4, [r0] - ldr r0, _080142C4 - str r6, [r0, 0x24] - ldr r0, _080142C8 - str r5, [r0] - ldr r0, _080142CC - mov r4, r8 - str r4, [r0] - ldr r0, _080142D0 - ldr r5, [sp, 0x24] - str r5, [r0] - ldr r0, _080142D4 - mov r6, r9 - str r6, [r0] - ldr r0, _080142D8 - bl sub_801317C - movs r0, 0x10 - mov r1, r10 - ands r0, r1 - cmp r0, 0 - beq _080142E4 - ldr r2, _080142DC - adds r1, r2, 0 - ldr r0, _080142E0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - b _080142F2 - .align 2, 0 -_080142B8: .4byte gUnknown_202E798 -_080142BC: .4byte 0x000003e7 -_080142C0: .4byte gUnknown_202E794 -_080142C4: .4byte gUnknown_202E748 -_080142C8: .4byte gUnknown_202EC10 -_080142CC: .4byte gUnknown_202EC14 -_080142D0: .4byte gUnknown_202EC18 -_080142D4: .4byte gUnknown_202EC1C -_080142D8: .4byte gUnknown_202EC28 -_080142DC: .4byte gUnknown_203B198 -_080142E0: .4byte gUnknown_80D48DC -_080142E4: - ldr r2, _08014358 - adds r1, r2, 0 - ldr r0, _0801435C - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} -_080142F2: - adds r4, r2, 0 - movs r0, 0 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - strh r0, [r4, 0x28] - movs r0, 0x40 - strb r0, [r4, 0x18] - cmp r7, 0 - beq _08014368 - ldr r1, [r7, 0x4] - cmp r1, 0 - beq _08014368 - ldrb r0, [r7, 0xC] - lsls r0, 3 - adds r1, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - beq _08014368 - ldrh r0, [r7, 0x8] - strh r0, [r4, 0x20] - ldrh r0, [r7, 0xA] - strh r0, [r4, 0x22] - movs r0, 0x5 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - strh r0, [r4, 0x28] - movs r4, 0 -_0801432A: - adds r0, r4, 0 - adds r0, 0xE0 - ldr r2, [r7, 0x4] - ldrb r1, [r7, 0xC] - lsls r1, 3 - adds r2, r1 - lsls r3, r4, 2 - ldr r1, [r2] - adds r1, r3 - bl SetBGPaletteBufferColorArray - adds r4, 0x1 - cmp r4, 0xF - ble _0801432A - movs r0, 0x1 - str r0, [sp] - ldrb r0, [r7, 0xE] - cmp r0, 0 - beq _08014360 - ldr r1, _08014358 - movs r0, 0x7 - b _08014364 - .align 2, 0 -_08014358: .4byte gUnknown_203B198 -_0801435C: .4byte gUnknown_80D48C4 -_08014360: - ldr r1, _080143E8 - movs r0, 0x5 -_08014364: - str r0, [r1, 0x1C] - adds r4, r1, 0 -_08014368: - ldr r2, _080143EC - adds r1, r4, 0 - adds r1, 0x30 - adds r0, r2, 0 - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - adds r0, r4, 0 - adds r0, 0x48 - ldm r2!, {r1,r3,r5} - stm r0!, {r1,r3,r5} - ldm r2!, {r1,r3,r6} - stm r0!, {r1,r3,r6} - bl ResetUnusedInputStruct - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, _080143F0 - movs r4, 0 - movs r2, 0 - movs r0, 0x4 - strh r0, [r1] - strh r0, [r1, 0x2] - movs r0, 0x70 - strh r0, [r1, 0x8] - ldr r0, _080143F4 - movs r5, 0x2 - ldrsh r0, [r0, r5] - lsls r0, 3 - adds r0, 0x22 - strh r0, [r1, 0xA] - movs r0, 0x7 - str r0, [r1, 0x10] - str r2, [r1, 0x1C] - adds r1, 0x20 - strb r4, [r1] - movs r0, 0x10 - mov r6, r10 - ands r0, r6 - movs r1, 0x3 - cmp r0, 0 - beq _080143C6 - movs r1, 0x8 -_080143C6: - adds r0, r1, 0 - bl sub_80063D8 - ldr r0, _080143F8 - movs r1, 0x1 - str r1, [r0] - ldr r0, _080143FC - mov r2, r10 - strh r2, [r0] - movs r0, 0x20 - mov r3, r10 - ands r0, r3 - cmp r0, 0 - beq _08014404 - ldr r0, _08014400 - strb r1, [r0] - b _08014408 - .align 2, 0 -_080143E8: .4byte gUnknown_203B198 -_080143EC: .4byte gUnknown_80D48AC -_080143F0: .4byte gUnknown_202E748 -_080143F4: .4byte gUnknown_2027370 -_080143F8: .4byte gUnknown_202E744 -_080143FC: .4byte gUnknown_202E77C -_08014400: .4byte gUnknown_202E790 -_08014404: - ldr r0, _0801445C - strb r4, [r0] -_08014408: - movs r0, 0x80 - lsls r0, 3 - mov r4, r10 - ands r0, r4 - cmp r0, 0 - beq _08014418 - bl SetWindowBGColor -_08014418: - ldr r0, _08014460 - movs r1, 0x1 - str r1, [r0] - ldr r0, _08014464 - str r1, [r0] - bl UnpressButtons - ldr r1, _08014468 - movs r0, 0 - strb r0, [r1] - ldr r1, _0801446C - movs r0, 0 - str r0, [r1] - ldr r5, [sp] - cmp r5, 0 - beq _08014480 - ldr r0, [r7, 0x4] - ldrb r1, [r7, 0xC] - lsls r1, 3 - adds r0, 0x4 - adds r0, r1 - ldr r4, [r0] - movs r0, 0x1 - bl sub_80073B8 - ldrb r0, [r7, 0xD] - cmp r0, 0 - bne _08014470 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xE - bl sub_8008274 - b _0801447A - .align 2, 0 -_0801445C: .4byte gUnknown_202E790 -_08014460: .4byte gUnknown_202E788 -_08014464: .4byte gUnknown_202E78C -_08014468: .4byte gUnknown_202E791 -_0801446C: .4byte gUnknown_202E784 -_08014470: - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xE - bl sub_800836C -_0801447A: - movs r0, 0x1 - bl sub_80073E0 -_08014480: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8014248 - - thumb_func_start sub_8014490 -sub_8014490: - ldr r0, _0801449C - movs r1, 0 - str r1, [r0] - ldr r0, _080144A0 - str r1, [r0] - bx lr - .align 2, 0 -_0801449C: .4byte gUnknown_202E744 -_080144A0: .4byte gUnknown_202EC1C - thumb_func_end sub_8014490 - - thumb_func_start sub_80144A4 -sub_80144A4: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - beq _080144B2 - ldr r0, _080144BC - ldr r0, [r0] - str r0, [r1] -_080144B2: - ldr r0, _080144C0 - ldr r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_080144BC: .4byte gUnknown_202EC1C -_080144C0: .4byte gUnknown_202E744 - thumb_func_end sub_80144A4 - - thumb_func_start xxx_draw_string_80144C4 -xxx_draw_string_80144C4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0x1 - mov r10, r0 - ldr r1, _080144F4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080144DC: - ldr r0, _080144F8 - ldr r1, [r0] - adds r3, r0, 0 - cmp r1, 0xB - bls _080144E8 - b _08014A6A -_080144E8: - lsls r0, r1, 2 - ldr r1, _080144FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080144F4: .4byte gUnknown_202E784 -_080144F8: .4byte gUnknown_202E744 -_080144FC: .4byte _08014500 - .align 2, 0 -_08014500: - .4byte _08014A72 - .4byte _08014530 - .4byte _08014708 - .4byte _08014A38 - .4byte _08014A48 - .4byte _08014A60 - .4byte _08014778 - .4byte _080147E2 - .4byte _080147E2 - .4byte _080147E2 - .4byte _080149D8 - .4byte _08014A04 -_08014530: - ldr r0, _08014540 - ldr r6, [r0] - ldr r0, _08014544 - ldrb r0, [r0] - cmp r0, 0 - beq _0801457C - ldr r7, _08014548 - b _08014580 - .align 2, 0 -_08014540: .4byte gUnknown_202E794 -_08014544: .4byte gUnknown_202E790 -_08014548: .4byte 0x0001869f -_0801454C: - str r2, [r3, 0x1C] - adds r1, r3, 0 - adds r1, 0x20 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0801456C - movs r0, 0x8 - str r0, [r1] - ldr r0, _08014570 - strb r2, [r0] - ldr r1, _08014574 - ldr r0, _08014578 - ldr r0, [r0] - str r0, [r1] - b _0801466C - .align 2, 0 -_0801456C: .4byte gUnknown_202E744 -_08014570: .4byte gUnknown_202E791 -_08014574: .4byte gUnknown_202E780 -_08014578: .4byte gUnknown_202E738 -_0801457C: - ldr r0, _08014594 - ldr r7, [r0] -_08014580: - ldr r1, _08014598 - movs r0, 0 - str r0, [r1, 0x2C] - bl sub_80073B8 - ldr r1, _0801459C - mov r8, r1 - ldr r2, _080145A0 - mov r9, r2 - b _08014652 - .align 2, 0 -_08014594: .4byte gUnknown_202E788 -_08014598: .4byte gUnknown_202E748 -_0801459C: .4byte gUnknown_202E744 -_080145A0: .4byte gUnknown_202E780 -_080145A4: - adds r0, r4, 0 - adds r0, 0x20 - ldrb r5, [r0] - cmp r5, 0 - beq _080145EC - movs r3, 0x2 - ldrsh r0, [r4, r3] - cmp r0, 0x22 - ble _080145CC - movs r0, 0x8 - mov r4, r8 - str r0, [r4] - ldr r0, _080145C8 - ldr r0, [r0] - mov r1, r9 - str r0, [r1] - b _080145DA - .align 2, 0 -_080145C8: .4byte gUnknown_202E738 -_080145CC: - movs r0, 0x7 - mov r2, r8 - str r0, [r2] - ldr r0, _080145E4 - ldr r0, [r0] - mov r3, r9 - str r0, [r3] -_080145DA: - ldr r1, _080145E8 - movs r0, 0 - strb r0, [r1] - b _0801466C - .align 2, 0 -_080145E4: .4byte gUnknown_202E73C -_080145E8: .4byte gUnknown_202E791 -_080145EC: - ldrb r0, [r6] - cmp r0, 0 - beq _0801466C - cmp r0, 0xD - beq _080145FA - cmp r0, 0xA - bne _08014608 -_080145FA: - movs r0, 0x4 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0xB - strh r0, [r4, 0x2] - adds r6, 0x1 - b _08014630 -_08014608: - adds r0, r6, 0 - add r1, sp, 0x4 - bl xxx_get_next_char_from_string - adds r6, r0, 0 - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0x2 - ldrsh r1, [r4, r2] - ldr r2, [sp, 0x4] - ldr r3, [r4, 0x10] - str r5, [sp] - bl xxx_call_draw_char - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - ldr r0, _08014694 - ldr r0, [r0] - str r0, [r4, 0x2C] -_08014630: - ldr r3, _08014698 - movs r4, 0x2 - ldrsh r0, [r3, r4] - cmp r0, 0x22 - ble _08014650 - ldr r0, _0801469C - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - bne _0801464C - b _0801454C -_0801464C: - movs r0, 0x4 - strh r0, [r3, 0x2] -_08014650: - subs r7, 0x1 -_08014652: - cmp r7, 0 - ble _0801466C - ldr r4, _08014698 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8009190 - adds r6, r0, 0 - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0 - beq _080145A4 -_0801466C: - movs r0, 0 - bl sub_80073E0 - ldr r4, _080146A0 - str r6, [r4] - ldr r0, _080146A4 - bl sub_801317C - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - bne _080146BC - ldr r0, _080146A8 - ldr r0, [r0] - cmp r0, 0 - beq _080146B0 - ldr r1, _080146AC - movs r0, 0x3 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014694: .4byte gUnknown_202E78C -_08014698: .4byte gUnknown_202E748 -_0801469C: .4byte gUnknown_202E77C -_080146A0: .4byte gUnknown_202E794 -_080146A4: .4byte gUnknown_202EC28 -_080146A8: .4byte gUnknown_202EC14 -_080146AC: .4byte gUnknown_202E744 -_080146B0: - ldr r1, _080146B8 - movs r0, 0x6 - str r0, [r1] - b _08014A72 - .align 2, 0 -_080146B8: .4byte gUnknown_202E744 -_080146BC: - ldr r0, _080146E8 - movs r2, 0 - str r2, [r0, 0x30] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _080146FC - ldr r1, _080146EC - ldr r0, [r1] - cmp r0, 0x1 - beq _080146D4 - b _08014A72 -_080146D4: - movs r0, 0x7 - str r0, [r1] - ldr r0, _080146F0 - strb r2, [r0] - ldr r1, _080146F4 - ldr r0, _080146F8 - ldr r0, [r0] - str r0, [r1] - b _08014A72 - .align 2, 0 -_080146E8: .4byte gUnknown_202E748 -_080146EC: .4byte gUnknown_202E744 -_080146F0: .4byte gUnknown_202E791 -_080146F4: .4byte gUnknown_202E780 -_080146F8: .4byte gUnknown_202E738 -_080146FC: - ldr r1, _08014704 - movs r0, 0x2 - b _08014A68 - .align 2, 0 -_08014704: .4byte gUnknown_202E744 -_08014708: - ldr r4, _08014760 - ldrh r1, [r4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08014718 - bl sub_8011A04 -_08014718: - ldrh r1, [r4] - movs r0, 0x2 - ands r0, r1 - ldr r2, _08014764 - cmp r0, 0 - bne _08014742 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08014742 - ldr r0, _08014768 - ldrh r1, [r0, 0x2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08014742 - ldr r0, _0801476C - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08014770 - str r0, [r2, 0x30] -_08014742: - ldr r1, [r2, 0x30] - adds r1, 0x1 - str r1, [r2, 0x30] - ldr r0, [r2, 0x2C] - cmp r1, r0 - bgt _08014750 - b _08014A72 -_08014750: - ldr r1, _08014774 - movs r0, 0x1 - str r0, [r1] - adds r1, r2, 0 - adds r1, 0x21 - movs r0, 0 - strb r0, [r1] - b _08014A6A - .align 2, 0 -_08014760: .4byte gUnknown_202E77C -_08014764: .4byte gUnknown_202E748 -_08014768: .4byte gRealInputs -_0801476C: .4byte gUnknown_202E790 -_08014770: .4byte 0x0001869f -_08014774: .4byte gUnknown_202E744 -_08014778: - ldr r0, _080147B4 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080147DC - movs r0, 0x9 - str r0, [r3] - ldr r1, _080147B8 - movs r0, 0 - strb r0, [r1] - ldr r0, _080147BC - ldr r1, [r0] - cmp r1, 0 - ble _080147C8 - ldr r2, _080147C0 - ldr r0, _080147C4 - ldr r0, [r0] - subs r0, r1, r0 - str r0, [r2] - cmp r0, 0 - blt _080147A8 - b _08014A6A -_080147A8: - movs r0, 0xB - str r0, [r3] - movs r0, 0 - str r0, [r2] - b _08014A6A - .align 2, 0 -_080147B4: .4byte gUnknown_202E77C -_080147B8: .4byte gUnknown_202E791 -_080147BC: .4byte gUnknown_202E740 -_080147C0: .4byte gUnknown_202E780 -_080147C4: .4byte gUnknown_202E784 -_080147C8: - ldr r0, _080147D4 - ldr r1, _080147D8 - ldr r1, [r1] - str r1, [r0] - b _08014A6A - .align 2, 0 -_080147D4: .4byte gUnknown_202E780 -_080147D8: .4byte gUnknown_202E738 -_080147DC: - movs r0, 0xB - str r0, [r3] - b _08014A6A -_080147E2: - movs r5, 0 - ldr r0, _0801481C - adds r0, 0x20 - strb r5, [r0] - ldr r4, _08014820 - adds r0, r4, 0 - movs r1, 0 - bl nullsub_34 - ldr r0, _08014824 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08014802 - b _0801494C -_08014802: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801482C - ldr r1, _08014828 - ldr r0, [r1] - cmp r0, 0 - bgt _08014814 - b _0801494C -_08014814: - subs r0, 0x1 - str r0, [r1] - b _08014856 - .align 2, 0 -_0801481C: .4byte gUnknown_202E748 -_08014820: .4byte gUnknown_202EC28 -_08014824: .4byte gUnknown_202E77C -_08014828: .4byte gUnknown_202E780 -_0801482C: - ldr r2, _080148E4 - ldrh r1, [r2, 0x2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0801483A - b _0801494C -_0801483A: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08014842 - b _0801494C -_08014842: - ldrh r1, [r2] - movs r0, 0xF2 - ands r0, r1 - cmp r0, 0x2 - bne _0801484E - b _0801494C -_0801484E: - ldrb r0, [r4, 0x5] - cmp r0, 0 - beq _08014856 - movs r5, 0x1 -_08014856: - cmp r5, 0 - bne _0801494C - ldr r1, _080148E8 - ldrb r0, [r1] - adds r2, r0, 0x1 - strb r2, [r1] - ldr r0, _080148EC - ldrh r7, [r0] - movs r0, 0x2 - ands r0, r7 - cmp r0, 0 - beq _08014870 - b _08014A72 -_08014870: - movs r0, 0x8 - ands r2, r0 - cmp r2, 0 - bne _0801487A - b _08014A72 -_0801487A: - ldr r3, _080148F0 - ldrh r1, [r3] - ldr r0, _080148F4 - ands r0, r1 - ldr r1, _080148F8 - ands r0, r1 - ldr r4, _080148FC - ands r0, r4 - ldr r1, _08014900 - ands r0, r1 - ldr r1, _08014904 - ands r0, r1 - movs r1, 0x80 - lsls r1, 7 - ldr r2, _08014908 - ands r0, r2 - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r3, 0x2] - ldr r5, _0801490C - ands r5, r0 - ands r5, r2 - strh r5, [r3, 0x2] - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r6, 0xF - lsls r1, r6, 12 - ldr r2, _08014910 - ands r0, r2 - movs r4, 0 - mov r8, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - movs r0, 0x10 - ands r0, r7 - adds r4, r3, 0 - cmp r0, 0 - beq _08014914 - movs r2, 0xF0 - lsls r2, 3 - ldrh r1, [r4, 0x6] - adds r0, r6, 0 - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x6] - movs r0, 0x70 - b _08014932 - .align 2, 0 -_080148E4: .4byte gRealInputs -_080148E8: .4byte gUnknown_202E791 -_080148EC: .4byte gUnknown_202E77C -_080148F0: .4byte gUnknown_202E6E0 -_080148F4: .4byte 0x0000feff -_080148F8: .4byte 0x0000fdff -_080148FC: .4byte 0x0000f3ff -_08014900: .4byte 0x0000efff -_08014904: .4byte 0x0000dfff -_08014908: .4byte 0x00003fff -_0801490C: .4byte 0x0000c1ff -_08014910: .4byte 0x00000fff -_08014914: - ldr r3, _08014944 - movs r0, 0xA - ldrsh r1, [r3, r0] - adds r1, 0x1 - ands r1, r2 - lsls r1, 4 - ldrh r2, [r4, 0x6] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x6] - movs r1, 0x8 - ldrsh r0, [r3, r1] - ldr r1, _08014948 - ands r0, r1 -_08014932: - strh r0, [r4, 0x2] - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite - b _08014A72 - .align 2, 0 -_08014944: .4byte gUnknown_202E748 -_08014948: .4byte 0x000001ff -_0801494C: - ldr r0, _08014960 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - bne _08014968 - ldr r1, _08014964 - movs r0, 0xB - str r0, [r1] - b _080149BA - .align 2, 0 -_08014960: .4byte gUnknown_202E794 -_08014964: .4byte gUnknown_202E744 -_08014968: - ldr r4, _08014974 - ldr r0, [r4] - cmp r0, 0x9 - bne _08014978 - movs r0, 0xB - b _080149B8 - .align 2, 0 -_08014974: .4byte gUnknown_202E744 -_08014978: - cmp r0, 0x8 - bne _080149B6 - ldr r2, _080149A0 - movs r1, 0x4 - strh r1, [r2] - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0x22 - ble _080149B6 - strh r1, [r2, 0x2] - ldr r0, _080149A4 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080149A8 -_08014998: - movs r0, 0 - bl sub_8008C54 - b _080149B6 - .align 2, 0 -_080149A0: .4byte gUnknown_202E748 -_080149A4: .4byte gUnknown_202E77C -_080149A8: - ldr r1, [r2, 0x1C] - cmp r1, 0 - bne _08014998 - movs r0, 0xA - str r0, [r4] - str r1, [r2, 0x28] - b _080149BA -_080149B6: - movs r0, 0x1 -_080149B8: - str r0, [r4] -_080149BA: - ldr r1, _080149D0 - movs r0, 0x70 - strh r0, [r1, 0x8] - ldr r0, _080149D4 - movs r4, 0x2 - ldrsh r0, [r0, r4] - lsls r0, 3 - adds r0, 0x22 - strh r0, [r1, 0xA] - b _08014A72 - .align 2, 0 -_080149D0: .4byte gUnknown_202E748 -_080149D4: .4byte gUnknown_2027370 -_080149D8: - ldr r4, _080149F8 - ldr r0, [r4, 0x28] - adds r0, 0x1 - str r0, [r4, 0x28] - ldr r0, _080149FC - ldr r1, [r0] - movs r0, 0 - bl _call_via_r1 - ldr r0, [r4, 0x28] - cmp r0, 0x11 - ble _08014A72 - ldr r1, _08014A00 - movs r0, 0x1 - str r0, [r1] - b _08014A72 - .align 2, 0 -_080149F8: .4byte gUnknown_202E748 -_080149FC: .4byte gUnknown_203B088 -_08014A00: .4byte gUnknown_202E744 -_08014A04: - ldr r0, _08014A2C - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08014A34 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, _08014A30 - movs r0, 0 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A2C: .4byte gUnknown_202E77C -_08014A30: .4byte gUnknown_202E744 -_08014A34: - str r0, [r3] - b _08014A72 -_08014A38: - bl sub_8014A88 - ldr r1, _08014A44 - movs r0, 0x4 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A44: .4byte gUnknown_202E744 -_08014A48: - bl sub_8014B94 - lsls r0, 24 - cmp r0, 0 - beq _08014A72 - ldr r1, _08014A5C - movs r0, 0x5 - str r0, [r1] - b _08014A72 - .align 2, 0 -_08014A5C: .4byte gUnknown_202E744 -_08014A60: - bl nullsub_35 - ldr r1, _08014A84 - movs r0, 0xB -_08014A68: - str r0, [r1] -_08014A6A: - mov r0, r10 - cmp r0, 0 - beq _08014A72 - b _080144DC -_08014A72: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08014A84: .4byte gUnknown_202E744 - thumb_func_end xxx_draw_string_80144C4 - - thumb_func_start sub_8014A88 -sub_8014A88: - push {r4-r7,lr} - sub sp, 0x88 - ldr r0, _08014A98 - ldr r4, [r0] - movs r5, 0 - movs r7, 0 - movs r6, 0 - b _08014ABE - .align 2, 0 -_08014A98: .4byte gUnknown_202EC14 -_08014A9C: - adds r5, 0xC - ldr r0, [r4] - add r1, sp, 0x8 - add r2, sp, 0x88 - movs r3, 0 - bl xxx_format_string - add r0, sp, 0x8 - bl sub_8008ED0 - cmp r7, r0 - bge _08014AB6 - adds r7, r0, 0 -_08014AB6: - adds r4, 0x8 - adds r6, 0x1 - cmp r6, 0x9 - bgt _08014AC4 -_08014ABE: - ldr r0, [r4] - cmp r0, 0 - bne _08014A9C -_08014AC4: - adds r0, r5, 0 - cmp r5, 0 - bge _08014ACC - adds r0, r5, 0x7 -_08014ACC: - asrs r2, r0, 3 - movs r0, 0x7 - ands r5, r0 - cmp r5, 0 - beq _08014AD8 - adds r2, 0x1 -_08014AD8: - ldr r4, _08014B74 - ldr r0, _08014B78 - ldr r0, [r0] - str r0, [r4, 0x34] - adds r1, r7, 0 - cmp r1, 0 - bge _08014AE8 - adds r1, 0x7 -_08014AE8: - asrs r1, 3 - adds r1, 0x2 - strh r1, [r4, 0x3C] - adds r0, r4, 0 - adds r0, 0x40 - strh r2, [r0] - strh r2, [r4, 0x3E] - movs r0, 0x1C - subs r0, r1 - strh r0, [r4, 0x38] - movs r0, 0xE - subs r0, r2 - strh r0, [r4, 0x3A] - movs r0, 0x80 - strb r0, [r4] - movs r0, 0xC0 - strb r0, [r4, 0x18] - ldr r5, _08014B7C - ldr r0, [r5] - cmp r0, 0 - beq _08014B1E - adds r1, r4, 0 - adds r1, 0x48 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} -_08014B1E: - bl ResetUnusedInputStruct - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_800641C - ldr r0, _08014B80 - ldr r1, _08014B84 - ldr r1, [r1] - ldr r2, _08014B88 - ldr r3, _08014B8C - ldr r3, [r3] - ldr r4, _08014B90 - ldr r4, [r4] - str r4, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - bl sub_8012D60 - ldr r0, [r5] - cmp r0, 0 - beq _08014B6A - movs r0, 0x3 - bl sub_80073B8 - ldr r0, [r5] - ldr r2, [r0, 0x18] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - movs r1, 0x2 - movs r3, 0x3 - bl xxx_call_draw_string - movs r0, 0x3 - bl sub_80073E0 -_08014B6A: - add sp, 0x88 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08014B74: .4byte gUnknown_203B198 -_08014B78: .4byte gUnknown_202EC10 -_08014B7C: .4byte gUnknown_202EC20 -_08014B80: .4byte gUnknown_202EBC0 -_08014B84: .4byte gUnknown_202EC14 -_08014B88: .4byte gUnknown_80D48A0 -_08014B8C: .4byte gUnknown_202EC18 -_08014B90: .4byte gUnknown_202EC1C - thumb_func_end sub_8014A88 - - thumb_func_start sub_8014B94 -sub_8014B94: - push {r4,lr} - ldr r4, _08014BA8 - adds r0, r4, 0 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - beq _08014BAC - movs r0, 0 - b _08014BB6 - .align 2, 0 -_08014BA8: .4byte gUnknown_202EBC0 -_08014BAC: - ldr r1, _08014BBC - adds r0, r4, 0 - bl sub_8013114 - movs r0, 0x1 -_08014BB6: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08014BBC: .4byte gUnknown_202EC1C - thumb_func_end sub_8014B94 - - thumb_func_start nullsub_35 -nullsub_35: - bx lr - thumb_func_end nullsub_35 - - thumb_func_start xxx_format_string -xxx_format_string: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - adds r5, r0, 0 - str r1, [sp, 0x3C] - adds r7, r2, 0 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - movs r0, 0x1 - mov r10, r0 - mov r9, r0 - subs r7, 0x1 - b _08014F62 -_08014BE6: - movs r1, 0x1 - b _08014C2C -_08014BEA: - mov r0, r10 - cmp r0, 0 - beq _08014C24 - movs r1, 0 - mov r10, r1 - mov r9, r1 - movs r0, 0x8 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _08014C2E - ldr r0, _08014C1C - add r4, sp, 0x3C - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - ldr r0, _08014C20 - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - b _08014C2E - .align 2, 0 -_08014C1C: .4byte gUnknown_202E5D8 -_08014C20: .4byte gUnknown_80D48F4 -_08014C24: - mov r0, r9 - cmp r0, 0 - beq _08014C2E - movs r1, 0 -_08014C2C: - mov r9, r1 -_08014C2E: - cmp r6, 0x23 - bne _08014C5A - ldrb r3, [r5, 0x1] - cmp r3, 0x50 - beq _08014C3C - cmp r3, 0x70 - bne _08014C42 -_08014C3C: - movs r0, 0x1 - mov r10, r0 - mov r9, r0 -_08014C42: - ldr r1, [sp, 0x3C] - adds r2, r1, 0x1 - cmp r2, r7 - bcs _08014C56 - movs r0, 0x23 - strb r0, [r1] - str r2, [sp, 0x3C] - strb r3, [r1, 0x1] - adds r0, r2, 0x1 - str r0, [sp, 0x3C] -_08014C56: - adds r5, 0x2 - b _08014F62 -_08014C5A: - cmp r6, 0x24 - beq _08014C60 - b _08014F26 -_08014C60: - movs r4, 0 - adds r5, 0x1 - ldrb r0, [r5] - subs r0, 0x24 - cmp r0, 0x52 - bls _08014C6E - b _08014F0E -_08014C6E: - lsls r0, 2 - ldr r1, _08014C78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08014C78: .4byte _08014C7C - .align 2, 0 -_08014C7C: - .4byte _08014F04 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0C - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014EC4 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E60 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E54 - .4byte _08014DC8 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014DDC - .4byte _08014E10 - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014F0E - .4byte _08014E24 - .4byte _08014F0E - .4byte _08014E84 -_08014DC8: - adds r5, 0x1 - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014DD8 - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014DD8: .4byte gUnknown_202CF58 -_08014DDC: - adds r5, 0x1 - ldrb r0, [r5] - cmp r0, 0x6D - bne _08014DFC - bl sub_808D3BC - adds r1, r0, 0 - ldr r4, _08014DF8 - adds r0, r4, 0 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - b _08014F0E - .align 2, 0 -_08014DF8: .4byte gUnknown_202EB80 -_08014DFC: - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014E0C - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014E0C: .4byte gUnknown_202D098 -_08014E10: - adds r5, 0x1 - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08014E20 - adds r4, r1, r0 - b _08014F0C - .align 2, 0 -_08014E20: .4byte gFileCache + 0x110 -_08014E24: - adds r5, 0x1 - movs r0, 0 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _08014E40 - ldr r0, _08014E3C - bl sub_80920D8 - b _08014E48 - .align 2, 0 -_08014E3C: .4byte gTeamName -_08014E40: - ldr r0, _08014E4C - ldr r1, _08014E50 - bl strcpy -_08014E48: - ldr r4, _08014E4C - b _08014F0E - .align 2, 0 -_08014E4C: .4byte gTeamName -_08014E50: .4byte gUnknown_80D48F8 -_08014E54: - adds r5, 0x1 - ldr r4, _08014E5C - b _08014F0E - .align 2, 0 -_08014E5C: .4byte gUnknown_202E628 -_08014E60: - adds r5, 0x1 - ldr r1, _08014E7C - ldr r2, _08014E80 - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r2 - adds r5, 0x1 - ldr r2, [r0] - mov r0, sp - bl sprintfStatic -_08014E78: - mov r4, sp - b _08014F0E - .align 2, 0 -_08014E7C: .4byte gUnknown_80D4900 -_08014E80: .4byte gUnknown_202DE30 -_08014E84: - adds r5, 0x1 - ldr r1, _08014EBC - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r5, 0x1 - ldr r1, _08014EC0 - ldrb r2, [r5] - subs r2, 0x30 - adds r5, 0x1 - mov r0, sp - bl sprintfStatic - mov r0, sp - ldrb r1, [r0] - cmp r1, 0 - beq _08014E78 - movs r2, 0x60 -_08014EAC: - cmp r1, 0x20 - bne _08014EB2 - strb r2, [r0] -_08014EB2: - adds r0, 0x1 - ldrb r1, [r0] - cmp r1, 0 - bne _08014EAC - b _08014E78 - .align 2, 0 -_08014EBC: .4byte gUnknown_202DE30 -_08014EC0: .4byte gUnknown_80D4904 -_08014EC4: - adds r5, 0x1 - ldr r1, _08014EFC - ldrb r0, [r5] - subs r0, 0x30 - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r5, 0x1 - ldr r1, _08014F00 - ldrb r2, [r5] - subs r2, 0x30 - adds r5, 0x1 - mov r0, sp - bl sprintfStatic - mov r0, sp - ldrb r1, [r0] - cmp r1, 0 - beq _08014E78 - movs r2, 0x60 -_08014EEC: - cmp r1, 0x20 - bne _08014EF2 - strb r2, [r0] -_08014EF2: - adds r0, 0x1 - ldrb r1, [r0] - cmp r1, 0 - bne _08014EEC - b _08014E78 - .align 2, 0 -_08014EFC: .4byte gUnknown_202DE30 -_08014F00: .4byte gUnknown_80D4908 -_08014F04: - ldr r4, _08014F08 - b _08014F0E - .align 2, 0 -_08014F08: .4byte gUnknown_80D4910 -_08014F0C: - adds r5, 0x1 -_08014F0E: - cmp r4, 0 - beq _08014F62 - add r1, sp, 0x3C - adds r0, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014FA8 - lsls r0, 24 - cmp r0, 0 - bne _08014F7E - b _08014F62 -_08014F26: - adds r0, r6, 0 - adds r0, 0x7F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08014F36 - cmp r6, 0x87 - bne _08014F54 -_08014F36: - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F42 - strb r6, [r0] - adds r0, 0x1 - str r0, [sp, 0x3C] -_08014F42: - adds r5, 0x1 - ldrb r1, [r5] - cmp r1, 0 - beq _08014F7E - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F60 - strb r1, [r0] - b _08014F5C -_08014F54: - ldr r0, [sp, 0x3C] - cmp r0, r7 - bcs _08014F60 - strb r6, [r0] -_08014F5C: - adds r0, 0x1 - str r0, [sp, 0x3C] -_08014F60: - adds r5, 0x1 -_08014F62: - ldrb r6, [r5] - cmp r6, 0 - beq _08014F7E - cmp r6, 0xD - beq _08014F72 - cmp r6, 0xA - beq _08014F72 - b _08014BEA -_08014F72: - movs r0, 0x80 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _08014F7E - b _08014BE6 -_08014F7E: - ldr r0, [sp, 0x3C] - movs r1, 0 - strb r1, [r0] - ldrb r0, [r5] - cmp r0, 0xD - bne _08014F8C - adds r5, 0x1 -_08014F8C: - ldrb r0, [r5] - cmp r0, 0xA - bne _08014F94 - adds r5, 0x1 -_08014F94: - adds r0, r5, 0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end xxx_format_string - - thumb_func_start sub_8014FA8 -sub_8014FA8: - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r3, 16 - lsrs r3, 16 - ldr r2, [r5] - ldrb r1, [r4] - cmp r1, 0 - beq _08014FE4 - movs r0, 0x80 - ands r0, r3 - lsls r0, 16 - lsrs r3, r0, 16 -_08014FC4: - cmp r3, 0 - beq _08014FD2 - cmp r1, 0xD - bne _08014FD2 - str r2, [r5] - movs r0, 0x1 - b _08014FE8 -_08014FD2: - cmp r2, r6 - bcs _08014FDC - ldrb r0, [r4] - strb r0, [r2] - adds r2, 0x1 -_08014FDC: - adds r4, 0x1 - ldrb r1, [r4] - cmp r1, 0 - bne _08014FC4 -_08014FE4: - str r2, [r5] - movs r0, 0 -_08014FE8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8014FA8 - - thumb_func_start xxx_format_and_draw -xxx_format_and_draw: - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x1F8 - adds r5, r0, 0 - adds r6, r1, 0 - adds r0, r2, 0 - mov r8, r3 - ldr r4, [sp, 0x20C] - add r2, sp, 0x1F8 - add r1, sp, 0x4 - movs r3, 0 - bl xxx_format_string - ldr r1, _08015030 - add r1, sp - movs r0, 0 - strb r0, [r1] - str r4, [sp] - adds r0, r5, 0 - adds r1, r6, 0 - add r2, sp, 0x4 - mov r3, r8 - bl xxx_call_draw_string - add sp, 0x1F8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08015030: .4byte 0x000001f7 - thumb_func_end xxx_format_and_draw - - thumb_func_start sub_8015034 -sub_8015034: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x1FC - adds r6, r0, 0 - mov r8, r1 - adds r0, r2, 0 - mov r9, r3 - ldr r4, [sp, 0x214] - ldr r5, [sp, 0x218] - add r2, sp, 0x1FC - add r1, sp, 0x8 - movs r3, 0 - bl xxx_format_string - ldr r1, _0801507C - add r1, sp - movs r0, 0 - strb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - adds r0, r6, 0 - mov r1, r8 - add r2, sp, 0x8 - mov r3, r9 - bl sub_8008F8C - add sp, 0x1FC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801507C: .4byte 0x000001fb - thumb_func_end sub_8015034 - - thumb_func_start sub_8015080 -sub_8015080: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r8, r0 - mov r9, r1 - ldr r4, _08015158 - ldr r0, _0801515C - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - movs r1, 0 - str r1, [r0] - mov r12, r4 - ldr r0, _08015160 - mov r10, r0 - mov r5, r12 - movs r3, 0 - movs r2, 0x3 -_080150AC: - mov r4, r12 - ldr r1, [r4] - adds r1, r3 - adds r1, 0x54 - mov r0, r10 - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _080150AC - movs r4, 0 - ldr r1, [r5] - adds r1, 0x54 - ldr r0, _08015164 - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldr r1, [r5] - adds r1, 0x84 - ldr r0, _08015168 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r5] - adds r0, 0x84 - mov r1, r9 - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x54 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_80073B8 - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0xB4 - ldr r6, _0801515C - adds r2, r6 - mov r0, r8 - movs r3, 0 - bl xxx_format_string - ldr r2, [r5] - adds r2, 0xB4 - str r4, [sp] - movs r0, 0x4 - movs r1, 0x4 - movs r3, 0 - bl xxx_call_draw_string - movs r0, 0 - bl sub_80073E0 - ldr r0, [r5] - adds r0, 0x4 - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - mov r1, r9 - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - movs r0, 0x1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08015158: .4byte gUnknown_203B1F8 -_0801515C: .4byte 0x000004b4 -_08015160: .4byte gUnknown_80DAF70 -_08015164: .4byte gUnknown_80DAF88 -_08015168: .4byte gUnknown_80DAFA0 - thumb_func_end sub_8015080 - - thumb_func_start sub_801516C -sub_801516C: - push {r4,lr} - ldr r4, _08015184 - ldr r0, [r4] - adds r0, 0x4 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - beq _08015188 - movs r0, 0 - b _08015192 - .align 2, 0 -_08015184: .4byte gUnknown_203B1F8 -_08015188: - ldr r1, [r4] - adds r0, r1, 0x4 - bl sub_8013114 - movs r0, 0x3 -_08015192: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_801516C - - thumb_func_start sub_8015198 -sub_8015198: - ldr r0, _080151A0 - ldr r0, [r0] - ldr r0, [r0] - bx lr - .align 2, 0 -_080151A0: .4byte gUnknown_203B1F8 - thumb_func_end sub_8015198 - - thumb_func_start sub_80151A4 -sub_80151A4: - push {r4,lr} - ldr r4, _080151BC - ldr r0, [r4] - cmp r0, 0 - beq _080151B6 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_080151B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080151BC: .4byte gUnknown_203B1F8 - thumb_func_end sub_80151A4 - - thumb_func_start sub_80151C0 -sub_80151C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, _080151FC - movs r0, 0xCC - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r5, [r0] - movs r1, 0 - strb r1, [r0, 0x19] - ldr r0, [r4] - strb r1, [r0, 0x18] - ldr r0, [r4] - strb r1, [r0, 0x4] - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0x5 - bhi _0801524C - lsls r0, 2 - ldr r1, _08015200 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080151FC: .4byte gUnknown_203B1FC -_08015200: .4byte _08015204 - .align 2, 0 -_08015204: - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801521C - .4byte _08015234 -_0801521C: - ldr r1, _08015230 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x36 - b _08015258 - .align 2, 0 -_08015230: .4byte gUnknown_203B1FC -_08015234: - ldr r1, _08015248 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x18 - b _08015258 - .align 2, 0 -_08015248: .4byte gUnknown_203B1FC -_0801524C: - ldr r1, _08015374 - ldr r2, [r1] - movs r0, 0x6 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0xA -_08015258: - strb r0, [r2, 0x1B] - mov r8, r1 - mov r0, r8 - ldr r2, [r0] - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - str r6, [r0] - adds r1, r2, 0 - adds r1, 0xF8 - adds r0, r2, 0 - adds r0, 0xFC - str r0, [r1] - movs r2, 0 - mov r1, r8 - movs r3, 0 -_08015278: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x35 - ble _08015278 - ldr r5, _08015374 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0xF8 - ldr r0, [r0] - movs r3, 0x9A - lsls r3, 1 - adds r1, r2, r3 - ldr r1, [r1] - ldrb r2, [r2, 0x1B] - bl MemoryCopy8 - movs r2, 0 - ldr r0, [r5] - ldrb r3, [r0, 0x1B] - cmp r2, r3 - bge _080152EA - adds r1, r0, 0 - adds r1, 0xF8 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r5 - cmp r0, 0 - beq _080152C8 -_080152B8: - adds r2, 0x1 - cmp r2, r3 - bge _080152EA - ldr r0, [r1] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080152B8 -_080152C8: - mov r4, r8 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - bge _080152EA - mov r1, r8 - movs r3, 0 -_080152D6: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - ldr r0, [r1] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - blt _080152D6 -_080152EA: - bl sub_8015F44 - ldr r2, _08015374 - ldr r1, [r2] - strb r0, [r1, 0x1C] - ldr r1, [r2] - ldrb r0, [r1, 0x1C] - ldrb r5, [r1, 0x1B] - cmp r0, r5 - bne _08015302 - subs r0, 0x1 - strb r0, [r1, 0x1C] -_08015302: - movs r6, 0x1 - mov r12, r6 - ldr r6, [r2] - adds r5, r6, 0x6 - ldrh r1, [r6, 0x6] - ldr r0, _08015378 - ands r0, r1 - ldr r1, _0801537C - ands r0, r1 - ldr r2, _08015380 - ands r0, r2 - ldr r1, _08015384 - ands r0, r1 - ldr r1, _08015388 - ands r0, r1 - strh r0, [r6, 0x6] - ldrh r0, [r5, 0x4] - adds r3, r2, 0 - ands r3, r0 - movs r1, 0xF - movs r2, 0xF0 - lsls r2, 8 - ldr r0, _0801538C - ands r3, r0 - orrs r3, r2 - strh r3, [r5, 0x4] - ldrh r0, [r5, 0x2] - movs r4, 0xFE - lsls r4, 8 - ands r4, r0 - movs r0, 0xF0 - orrs r4, r0 - strh r4, [r5, 0x2] - movs r2, 0xF0 - lsls r2, 4 - ldrh r0, [r5, 0x6] - ands r1, r0 - movs r7, 0 - orrs r1, r2 - strh r1, [r5, 0x6] - ldrb r0, [r6, 0x4] - cmp r0, 0 - beq _0801539C - ldr r0, _08015390 - ands r4, r0 - ldr r1, _08015394 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _08015398 - ands r4, r0 - strh r4, [r5, 0x2] - mov r7, r12 - b _080153BE - .align 2, 0 -_08015374: .4byte gUnknown_203B1FC -_08015378: .4byte 0x0000feff -_0801537C: .4byte 0x0000fdff -_08015380: .4byte 0x0000f3ff -_08015384: .4byte 0x0000efff -_08015388: .4byte 0x0000dfff -_0801538C: .4byte 0x00000fff -_08015390: .4byte 0x0000c1ff -_08015394: .4byte 0x000003f6 -_08015398: .4byte 0x00003fff -_0801539C: - movs r1, 0x80 - lsls r1, 6 - ldr r0, _08015468 - ands r4, r0 - orrs r4, r1 - orrs r4, r7 - movs r1, 0xFC - lsls r1, 2 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _0801546C - ands r4, r0 - strh r4, [r5, 0x2] - mov r1, r12 -_080153BE: - movs r2, 0x80 - lsls r2, 7 - ldrh r1, [r6, 0x6] - ands r0, r1 - orrs r0, r2 - strh r0, [r6, 0x6] - ldr r5, _08015470 - ldr r1, [r5] - movs r0, 0x4 - strb r0, [r1, 0x16] - ldr r4, [r5] - adds r6, r4, 0 - adds r6, 0xE - ldrh r1, [r4, 0xE] - ldr r0, _08015474 - ands r0, r1 - ldr r1, _08015478 - ands r0, r1 - ldr r3, _0801547C - ands r0, r3 - ldr r1, _08015480 - ands r0, r1 - ldr r1, _08015484 - ands r0, r1 - ldr r1, _0801546C - ands r0, r1 - strh r0, [r4, 0xE] - movs r2, 0xFD - lsls r2, 2 - ldrh r1, [r6, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r3 - movs r2, 0xF - movs r3, 0xF0 - lsls r3, 8 - ldr r1, _08015488 - ands r0, r1 - orrs r0, r3 - strh r0, [r6, 0x4] - movs r0, 0xF0 - strh r0, [r6, 0x2] - subs r1, 0xFF - ldrh r0, [r6, 0x6] - ands r2, r0 - movs r0, 0 - orrs r2, r1 - strh r2, [r6, 0x6] - strb r0, [r4, 0x17] - mov r8, r5 - ldr r2, _0801548C - mov r10, r2 - mov r12, r8 - movs r3, 0x9C - lsls r3, 1 - mov r9, r3 - ldr r4, _08015490 - movs r3, 0 - movs r2, 0x3 -_08015438: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - add r1, r9 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _08015438 - mov r6, r8 - ldr r1, [r6] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08015498 - movs r7, 0xA8 - lsls r7, 1 - adds r1, r7 - ldr r0, _08015494 - b _080154A0 - .align 2, 0 -_08015468: .4byte 0x0000c1ff -_0801546C: .4byte 0x00003fff -_08015470: .4byte gUnknown_203B1FC -_08015474: .4byte 0x0000feff -_08015478: .4byte 0x0000fdff -_0801547C: .4byte 0x0000f3ff -_08015480: .4byte 0x0000efff -_08015484: .4byte 0x0000dfff -_08015488: .4byte 0x00000fff -_0801548C: .4byte gUnknown_80DB550 -_08015490: .4byte gUnknown_80DB538 -_08015494: .4byte gUnknown_80DB580 -_08015498: - movs r0, 0xA8 - lsls r0, 1 - adds r1, r0 - ldr r0, _080154EC -_080154A0: - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - mov r0, r8 - ldr r1, [r0] - movs r4, 0x9C - lsls r4, 1 - adds r1, r4 - mov r0, r10 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl ResetUnusedInputStruct - mov r3, r8 - ldr r0, [r3] - adds r0, r4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0x1 - bl sub_8015A08 - bl sub_8015C1C - bl sub_8015F84 - movs r0, 0x1 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080154EC: .4byte gUnknown_80DB568 - thumb_func_end sub_80151C0 - - thumb_func_start sub_80154F0 -sub_80154F0: - push {r4,r5,lr} - ldr r4, _08015558 - ldr r1, [r4] - ldrb r0, [r1, 0x16] - adds r0, 0x1 - strb r0, [r1, 0x16] - bl sub_80157D8 - ldr r2, [r4] - ldrb r1, [r2, 0x16] - movs r5, 0x8 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0801551C - adds r0, r2, 0x6 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_0801551C: - ldr r1, [r4] - ldrb r0, [r1, 0x17] - adds r0, 0x1 - strb r0, [r1, 0x17] - bl sub_80158BC - ldr r2, [r4] - ldrb r1, [r2, 0x17] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08015544 - adds r0, r2, 0 - adds r0, 0xE - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_08015544: - bl sub_8012AE8 - subs r0, 0x1 - cmp r0, 0x5 - bhi _080155E2 - lsls r0, 2 - ldr r1, _0801555C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015558: .4byte gUnknown_203B1FC -_0801555C: .4byte _08015560 - .align 2, 0 -_08015560: - .4byte _080155C0 - .4byte _080155C6 - .4byte _080155E2 - .4byte _080155D4 - .4byte _08015578 - .4byte _0801558C -_08015578: - ldr r0, _08015588 - ldr r1, [r0] - ldrb r0, [r1, 0x1C] - cmp r0, 0 - beq _080155B8 - subs r0, 0x1 - b _080155A8 - .align 2, 0 -_08015588: .4byte gUnknown_203B1FC -_0801558C: - ldr r5, _080155B4 - ldr r0, [r5] - ldrb r4, [r0, 0x1C] - ldrb r0, [r0, 0x1B] - subs r0, 0x1 - cmp r4, r0 - beq _080155B8 - bl sub_8015F44 - cmp r4, r0 - bge _080155B8 - ldr r1, [r5] - ldrb r0, [r1, 0x1C] - adds r0, 0x1 -_080155A8: - strb r0, [r1, 0x1C] - movs r0, 0x3 - bl PlayMenuSoundEffect - b _080155E2 - .align 2, 0 -_080155B4: .4byte gUnknown_203B1FC -_080155B8: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _080155E2 -_080155C0: - bl sub_801560C - b _080155E4 -_080155C6: - bl sub_8015748 - lsls r0, 24 - cmp r0, 0 - beq _080155E2 - movs r0, 0x2 - b _080155E4 -_080155D4: - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r0, _080155EC - ldr r1, [r0] - movs r0, 0x5 - strb r0, [r1, 0x1A] -_080155E2: - movs r0, 0 -_080155E4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080155EC: .4byte gUnknown_203B1FC - thumb_func_end sub_80154F0 - - thumb_func_start sub_80155F0 -sub_80155F0: - push {r4,lr} - ldr r4, _08015608 - ldr r0, [r4] - cmp r0, 0 - beq _08015602 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_08015602: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08015608: .4byte gUnknown_203B1FC - thumb_func_end sub_80155F0 - - thumb_func_start sub_801560C -sub_801560C: - push {r4-r6,lr} - ldr r3, _08015640 - ldr r4, _08015644 - ldr r5, [r4] - ldrb r0, [r5, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r5, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r3, 0x8 - adds r0, r3 - ldr r6, [r0] - movs r0, 0x83 - lsls r0, 1 - cmp r6, r0 - beq _0801567A - cmp r6, r0 - bgt _08015648 - subs r0, 0x1 - cmp r6, r0 - beq _0801566C - b _080156BC - .align 2, 0 -_08015640: .4byte gUnknown_80DB0F8 -_08015644: .4byte gUnknown_203B1FC -_08015648: - ldr r0, _08015668 - cmp r6, r0 - bne _080156BC - movs r1, 0 - ldrb r0, [r5, 0x18] - cmp r0, 0 - bne _08015658 - movs r1, 0x1 -_08015658: - strb r1, [r5, 0x18] - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0 - bl sub_8015A08 - b _0801573E - .align 2, 0 -_08015668: .4byte 0x00000107 -_0801566C: - bl sub_8015748 - lsls r0, 24 - cmp r0, 0 - beq _0801573E - movs r0, 0x2 - b _08015740 -_0801567A: - bl sub_8015F44 - cmp r0, 0 - beq _080156D4 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015696 - bl sub_8015F44 - ldr r1, [r4] - ldrb r1, [r1, 0x1B] - cmp r0, r1 - bne _080156D4 -_08015696: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r0, _080156B8 - ldr r2, [r0] - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - adds r1, r2, 0 - adds r1, 0xF8 - ldr r1, [r1] - ldrb r2, [r2, 0x1B] - bl MemoryCopy8 - movs r0, 0x3 - b _08015740 - .align 2, 0 -_080156B8: .4byte gUnknown_203B1FC -_080156BC: - ldr r0, [r4] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080156DC - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_803D0F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080156DC -_080156D4: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _0801573E -_080156DC: - ldr r0, _08015728 - ldr r3, [r0] - ldrb r1, [r3, 0x18] - adds r4, r0, 0 - cmp r1, 0x1 - bne _0801570A - ldrb r0, [r3, 0x1B] - subs r2, r0, 0x2 - ldrb r3, [r3, 0x1C] - cmp r2, r3 - blt _0801570A - adds r3, r4, 0 -_080156F4: - ldr r0, [r3] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - ldrb r1, [r0] - strb r1, [r0, 0x1] - subs r2, 0x1 - ldr r0, [r3] - ldrb r0, [r0, 0x1C] - cmp r2, r0 - bge _080156F4 -_0801570A: - ldr r0, [r4] - ldrb r1, [r0, 0x1C] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - strb r6, [r0] - ldr r1, [r4] - ldrb r2, [r1, 0x1C] - ldrb r0, [r1, 0x1B] - subs r0, 0x1 - cmp r2, r0 - bge _0801572C - adds r0, r2, 0x1 - strb r0, [r1, 0x1C] - b _08015730 - .align 2, 0 -_08015728: .4byte gUnknown_203B1FC -_0801572C: - movs r0, 0x5 - strb r0, [r1, 0x1A] -_08015730: - movs r0, 0 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 -_0801573E: - movs r0, 0 -_08015740: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801560C - - thumb_func_start sub_8015748 -sub_8015748: - push {r4,lr} - ldr r4, _0801576C - ldr r2, [r4] - ldrb r1, [r2, 0x1C] - adds r0, r2, 0 - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _08015790 - cmp r1, 0 - bne _08015770 - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x1 - b _080157CE - .align 2, 0 -_0801576C: .4byte gUnknown_203B1FC -_08015770: - subs r0, r1, 0x1 - strb r0, [r2, 0x1C] - ldr r0, [r4] - ldrb r1, [r0, 0x1C] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r1 - strb r3, [r0] - movs r0, 0x1 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 - b _080157CC -_08015790: - bl sub_8015F44 - subs r3, r0, 0x1 - ldr r0, [r4] - ldrb r2, [r0, 0x1C] - cmp r2, r3 - bge _080157B0 -_0801579E: - ldr r0, [r4] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - ldrb r1, [r0, 0x1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r3 - blt _0801579E -_080157B0: - ldr r0, _080157D4 - ldr r0, [r0] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r3 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - bl PlayMenuSoundEffect - bl sub_8015C1C - bl sub_8015F84 -_080157CC: - movs r0, 0 -_080157CE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080157D4: .4byte gUnknown_203B1FC - thumb_func_end sub_8015748 - - thumb_func_start sub_80157D8 -sub_80157D8: - push {r4,r5,lr} - ldr r5, _080157EC - ldr r0, _080157F0 - ldr r0, [r0] - mov r12, r0 - ldr r0, [r0] - cmp r0, 0x4 - bne _080157F8 - ldr r3, _080157F4 - b _080157FE - .align 2, 0 -_080157EC: .4byte gUnknown_20273B8 -_080157F0: .4byte gUnknown_203B1FC -_080157F4: .4byte gUnknown_80DAFC0 -_080157F8: - cmp r0, 0x5 - bne _0801585C - ldr r3, _08015850 -_080157FE: - mov r1, r12 - ldrb r0, [r1, 0x1C] - lsls r0, 2 - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, r0 - ldr r0, _08015854 - ands r1, r0 - mov r4, r12 - adds r4, 0x6 - ldrh r2, [r4, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x2] - mov r1, r12 - ldrb r0, [r1, 0x1C] - lsls r0, 2 - adds r0, r3 - movs r2, 0x2 - ldrsh r1, [r0, r2] - movs r3, 0x2 - ldrsh r0, [r5, r3] - lsls r0, 3 - adds r1, r0 - adds r1, 0x5 - ldr r0, _08015858 - ands r1, r0 - lsls r1, 4 - ldrh r2, [r4, 0x6] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x6] - b _080158B0 - .align 2, 0 -_08015850: .4byte gUnknown_80DB098 -_08015854: .4byte 0x000001ff -_08015858: .4byte 0x00000fff -_0801585C: - mov r0, r12 - ldrb r1, [r0, 0x1C] - lsls r1, 1 - mov r2, r12 - adds r2, 0x1E - adds r2, r1 - adds r0, 0x8A - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r2, [r2] - adds r1, r2 - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r0, 0x1E - adds r1, r0 - lsls r1, 23 - lsrs r1, 23 - mov r3, r12 - adds r3, 0x6 - ldrh r2, [r3, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x2] - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r1, 3 - adds r1, 0x22 - ldr r0, _080158B8 - ands r1, r0 - lsls r1, 4 - ldrh r2, [r3, 0x6] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x6] -_080158B0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080158B8: .4byte 0x00000fff - thumb_func_end sub_80157D8 - - thumb_func_start sub_80158BC -sub_80158BC: - push {r4-r6,lr} - ldr r6, _080158D4 - bl sub_8012AE8 - cmp r0, 0x8 - beq _08015908 - cmp r0, 0x8 - bgt _080158D8 - cmp r0, 0x7 - beq _080158E2 - b _08015980 - .align 2, 0 -_080158D4: .4byte gUnknown_2027370 -_080158D8: - cmp r0, 0x9 - beq _08015930 - cmp r0, 0xA - beq _08015958 - b _08015980 -_080158E2: - ldr r4, _08015900 - ldr r3, _08015904 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015900: .4byte gUnknown_80DB0F8 -_08015904: .4byte gUnknown_203B1FC -_08015908: - ldr r4, _08015928 - ldr r3, _0801592C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x1] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015928: .4byte gUnknown_80DB0F8 -_0801592C: .4byte gUnknown_203B1FC -_08015930: - ldr r4, _08015950 - ldr r3, _08015954 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x2] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015950: .4byte gUnknown_80DB0F8 -_08015954: .4byte gUnknown_203B1FC -_08015958: - ldr r4, _08015978 - ldr r3, _0801597C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015978: .4byte gUnknown_80DB0F8 -_0801597C: .4byte gUnknown_203B1FC -_08015980: - ldr r1, _080159F8 - ldr r0, [r1] - ldrb r0, [r0, 0x1A] - adds r5, r1, 0 -_08015988: - adds r4, r5, 0 - ldr r1, [r4] - ldrb r2, [r1, 0x1A] - cmp r0, r2 - beq _080159A0 - strb r0, [r1, 0x1A] - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r1, [r4] - movs r0, 0x8 - strb r0, [r1, 0x17] -_080159A0: - ldr r3, _080159FC - ldr r4, [r5] - ldrb r0, [r4, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r4, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r3, 0 - ldrsh r1, [r6, r3] - lsls r1, 3 - ldrb r2, [r0, 0x4] - adds r1, r2 - subs r1, 0x5 - movs r3, 0x2 - ldrsh r2, [r6, r3] - lsls r2, 3 - ldrb r0, [r0, 0x5] - adds r2, r0 - adds r2, 0x1 - ldr r0, _08015A00 - ands r1, r0 - adds r4, 0xE - ldrh r3, [r4, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r3 - orrs r0, r1 - strh r0, [r4, 0x2] - ldr r0, _08015A04 - ands r2, r0 - lsls r2, 4 - ldrh r1, [r4, 0x6] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080159F8: .4byte gUnknown_203B1FC -_080159FC: .4byte gUnknown_80DB0F8 -_08015A00: .4byte 0x000001ff -_08015A04: .4byte 0x00000fff - thumb_func_end sub_80158BC - - thumb_func_start sub_8015A08 -sub_8015A08: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - movs r0, 0 - bl sub_8008C54 - movs r0, 0 - bl sub_80073B8 - ldr r3, _08015A68 - ldr r2, _08015A6C - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015A70 - cmp r4, r0 - bne _08015A3E - b _08015BC0 -_08015A3E: - mov r8, r2 - adds r7, r3, 0 - add r0, sp, 0x14 - mov r10, r0 - movs r6, 0 - mov r9, r6 -_08015A4A: - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r0, r3 - ldrb r0, [r0, 0x6] - cmp r0, 0x2 - beq _08015AAA - cmp r0, 0x2 - bgt _08015A74 - cmp r0, 0x1 - beq _08015A7A - b _08015A82 - .align 2, 0 -_08015A68: .4byte gUnknown_80DB0F8 -_08015A6C: .4byte gUnknown_203B1FC -_08015A70: .4byte 0x00000109 -_08015A74: - cmp r0, 0x3 - beq _08015A7E - b _08015A82 -_08015A7A: - movs r5, 0x5 - b _08015AAC -_08015A7E: - movs r5, 0x7 - b _08015AAC -_08015A82: - movs r5, 0x7 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015AAC - cmp r4, 0xFF - bgt _08015AA4 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_803D0F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08015AAC - b _08015AAA -_08015AA4: - ldr r0, _08015ADC - cmp r4, r0 - bgt _08015AAC -_08015AAA: - movs r5, 0x2 -_08015AAC: - movs r0, 0x84 - lsls r0, 1 - cmp r4, r0 - beq _08015B9E - subs r0, 0x1 - cmp r4, r0 - bne _08015B04 - mov r2, r8 - ldr r0, [r2] - ldrb r2, [r0, 0x18] - cmp r2, 0 - bne _08015AE4 - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - str r2, [sp] - ldr r2, _08015AE0 - b _08015B6A - .align 2, 0 -_08015ADC: .4byte 0x00000101 -_08015AE0: .4byte gUnknown_80DB598 -_08015AE4: - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r3, r9 - str r3, [sp] - ldr r2, _08015B00 - b _08015B6A - .align 2, 0 -_08015B00: .4byte gUnknown_80DB5A4 -_08015B04: - cmp r4, 0x20 - bne _08015B34 - add r0, sp, 0x4 - ldr r1, _08015B30 - adds r2, r5, 0 - bl sprintfStatic - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x1 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - add r2, sp, 0x4 - b _08015B6A - .align 2, 0 -_08015B30: .4byte gUnknown_80DB5B0 -_08015B34: - cmp r4, 0xFF - ble _08015B7C - ldr r1, _08015B74 - movs r0, 0xFF - ands r4, r0 - lsls r0, r4, 2 - adds r0, r1 - ldr r3, [r0] - mov r0, r10 - ldr r1, _08015B78 - adds r2, r5, 0 - bl sprintfStatic - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - mov r2, r10 -_08015B6A: - movs r3, 0 - bl xxx_call_draw_string - b _08015B9E - .align 2, 0 -_08015B74: .4byte gUnknown_80DB4F4 -_08015B78: .4byte gUnknown_80DB5B8 -_08015B7C: - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - lsls r2, r4, 24 - lsrs r2, 24 - mov r3, r9 - str r3, [sp] - adds r3, r5, 0 - bl sub_8012C60 -_08015B9E: - adds r6, 0xC - ldr r3, _08015C10 - ldr r2, _08015C14 - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015C18 - cmp r4, r0 - beq _08015BC0 - b _08015A4A -_08015BC0: - movs r4, 0xE - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x47 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - str r4, [sp] - movs r0, 0 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - movs r0, 0 - bl sub_80073E0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015C10: .4byte gUnknown_80DB0F8 -_08015C14: .4byte gUnknown_203B1FC -_08015C18: .4byte 0x00000109 - thumb_func_end sub_8015A08 - - thumb_func_start sub_8015C1C -sub_8015C1C: - push {r4,r5,lr} - sub sp, 0x54 - movs r0, 0x1 - bl sub_8008C54 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _08015C74 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015C78 - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x37 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - b _08015CB2 - .align 2, 0 -_08015C74: .4byte gUnknown_203B1FC -_08015C78: - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x27 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xAF - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 -_08015CB2: - ldr r0, _08015CC8 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x5 - bhi _08015D50 - lsls r0, 2 - ldr r1, _08015CCC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015CC8: .4byte gUnknown_203B1FC -_08015CCC: .4byte _08015CD0 - .align 2, 0 -_08015CD0: - .4byte _08015CE8 - .4byte _08015D18 - .4byte _08015CF8 - .4byte _08015D08 - .4byte _08015D28 - .4byte _08015D40 -_08015CE8: - ldr r2, _08015CF4 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015CF4: .4byte gUnknown_80DB5C0 -_08015CF8: - ldr r2, _08015D04 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D04: .4byte gUnknown_80DB5D4 -_08015D08: - ldr r2, _08015D14 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D14: .4byte gUnknown_80DB5F8 -_08015D18: - ldr r2, _08015D24 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D24: .4byte gUnknown_80DB61C -_08015D28: - ldr r2, _08015D3C - movs r0, 0 - str r0, [sp] - movs r0, 0x36 - movs r1, 0x2 -_08015D32: - movs r3, 0x1 - bl xxx_call_draw_string - b _08015D50 - .align 2, 0 -_08015D3C: .4byte gUnknown_80DB638 -_08015D40: - ldr r2, _08015D64 - movs r0, 0 - str r0, [sp] - movs r0, 0x30 - movs r1, 0x4 - movs r3, 0x1 - bl xxx_call_draw_string -_08015D50: - ldr r5, _08015D68 - ldr r0, [r5] - ldr r1, [r0] - cmp r1, 0x4 - beq _08015D6C - cmp r1, 0x4 - bcc _08015D88 - cmp r1, 0x5 - beq _08015D7A - b _08015DFE - .align 2, 0 -_08015D64: .4byte gUnknown_80DB638 -_08015D68: .4byte gUnknown_203B1FC -_08015D6C: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015E10 - b _08015DFE -_08015D7A: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015EB4 - b _08015DFE -_08015D88: - bl sub_8016028 - adds r3, r0, 0 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x26 - movs r2, 0x21 - bl sub_80078A4 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0xF8 - ldr r0, [r0] - ldrb r1, [r1, 0x1B] - bl sub_8015FEC - adds r4, r0, 0 - bl sub_8016028 - cmp r4, r0 - ble _08015DC0 - ldr r1, _08015DBC - ldr r0, [r5] - b _08015DD0 - .align 2, 0 -_08015DBC: .4byte gUnknown_80DB654 -_08015DC0: - bl sub_8015F44 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - cmp r0, r1 - bne _08015DE0 - ldr r1, _08015DDC - adds r0, r2, 0 -_08015DD0: - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic - b _08015DEE - .align 2, 0 -_08015DDC: .4byte gUnknown_80DB65C -_08015DE0: - ldr r1, _08015E0C - adds r0, r2, 0 - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic -_08015DEE: - movs r0, 0 - str r0, [sp] - movs r0, 0x26 - movs r1, 0x16 - add r2, sp, 0x4 - movs r3, 0x1 - bl xxx_call_draw_string -_08015DFE: - movs r0, 0x1 - bl sub_80073E0 - add sp, 0x54 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08015E0C: .4byte gUnknown_80DB664 - thumb_func_end sub_8015C1C - - thumb_func_start sub_8015E10 -sub_8015E10: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015EB0 - movs r4, 0x35 -_08015E24: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xB - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015E24 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015EA4 - mov r5, r8 -_08015E52: - movs r3, 0x7 - cmp r4, 0x4 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0xC - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x11 - ble _08015E7E - cmp r4, 0x16 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0x1E - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x23 - ble _08015E7E - cmp r4, 0x28 - ble _08015E7E - cmp r4, 0x30 - bgt _08015E7E - movs r3, 0x6 -_08015E7E: - ldr r0, _08015EB0 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x35 - bgt _08015EA4 - ldrb r0, [r5] - cmp r0, 0 - bne _08015E52 -_08015EA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015EB0: .4byte gUnknown_80DAFC0 - thumb_func_end sub_8015E10 - - thumb_func_start sub_8015EB4 -sub_8015EB4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015F40 - movs r4, 0x17 -_08015EC8: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xC - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015EC8 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015F34 - mov r5, r8 -_08015EF6: - movs r3, 0x7 - cmp r4, 0x3 - ble _08015F0E - movs r3, 0x6 - cmp r4, 0x7 - ble _08015F0E - movs r3, 0x7 - cmp r4, 0xF - ble _08015F0E - cmp r4, 0x13 - bgt _08015F0E - movs r3, 0x6 -_08015F0E: - ldr r0, _08015F40 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x17 - bgt _08015F34 - ldrb r0, [r5] - cmp r0, 0 - bne _08015EF6 -_08015F34: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015F40: .4byte gUnknown_80DB098 - thumb_func_end sub_8015EB4 - - thumb_func_start sub_8015F44 -sub_8015F44: - push {r4,lr} - movs r2, 0 - ldr r0, _08015F78 - ldr r0, [r0] - ldrb r4, [r0, 0x1B] - cmp r2, r4 - bge _08015F7C - adds r3, r0, 0 - adds r3, 0xF8 - ldr r0, [r3] - ldrb r0, [r0] - cmp r0, 0 - beq _08015F7C - movs r2, 0x1 - movs r1, 0x1 -_08015F62: - cmp r1, r4 - bge _08015F7C - ldr r0, [r3] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08015F7C - adds r2, r1, 0x1 - adds r1, r2, 0 - b _08015F62 - .align 2, 0 -_08015F78: .4byte gUnknown_203B1FC -_08015F7C: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8015F44 - - thumb_func_start sub_8015F84 -sub_8015F84: - push {r4-r7,lr} - movs r6, 0 - movs r5, 0 - ldr r3, _08015FBC - ldr r0, [r3] - ldrb r0, [r0, 0x1B] - cmp r5, r0 - bge _08015FE4 - adds r7, r3, 0 -_08015F96: - ldr r1, [r7] - lsls r4, r5, 1 - adds r0, r1, 0 - adds r0, 0x1E - adds r0, r4 - strh r6, [r0] - adds r0, r1, 0 - adds r0, 0xF8 - ldr r0, [r0] - adds r2, r0, r5 - ldrb r0, [r2] - cmp r0, 0 - bne _08015FC0 - adds r0, r1, 0 - adds r0, 0x8A - adds r0, r4 - movs r1, 0x8 - strh r1, [r0] - b _08015FE4 - .align 2, 0 -_08015FBC: .4byte gUnknown_203B1FC -_08015FC0: - ldrb r0, [r2] - bl ReturnIntFromChar2 - bl GetCharacter - ldr r3, [r7] - adds r1, r3, 0 - adds r1, 0x8A - adds r1, r4 - ldrh r2, [r0, 0x6] - strh r2, [r1] - movs r1, 0x6 - ldrsh r0, [r0, r1] - adds r6, r0 - adds r5, 0x1 - ldrb r3, [r3, 0x1B] - cmp r5, r3 - blt _08015F96 -_08015FE4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8015F84 .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_80130A8.s b/asm/code_80130A8.s new file mode 100644 index 000000000..93f2eaa6a --- /dev/null +++ b/asm/code_80130A8.s @@ -0,0 +1,6025 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + + thumb_func_start sub_8013134 +sub_8013134: + push {r4,lr} + adds r4, r0, 0 + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 3 + ldr r3, _0801315C + adds r0, r3 + str r2, [r4] + movs r2, 0 + strh r2, [r4, 0x18] + strh r1, [r4, 0x1A] + strh r1, [r4, 0x1C] + strh r2, [r4, 0x1E] + strh r2, [r4, 0x4] + ldr r0, [r0, 0xC] + cmp r0, 0x6 + bne _08013160 + movs r0, 0x10 + b _08013162 + .align 2, 0 +_0801315C: .4byte gUnknown_2027370 +_08013160: + movs r0, 0x2 +_08013162: + strh r0, [r4, 0x6] + movs r0, 0 + strh r0, [r4, 0xC] + strh r0, [r4, 0xE] + strh r0, [r4, 0x14] + strh r0, [r4, 0x24] + adds r0, r4, 0 + adds r0, 0x28 + bl sub_801317C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8013134 + + thumb_func_start sub_801317C +sub_801317C: + push {lr} + movs r1, 0 + strb r1, [r0] + strb r1, [r0, 0x1] + strb r1, [r0, 0x2] + strb r1, [r0, 0x4] + strb r1, [r0, 0x3] + ldr r1, _080131A4 + strh r1, [r0, 0x8] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0xA] + adds r0, 0x8 + bl nullsub_7 + bl ResetUnusedInputStruct + pop {r0} + bx r0 + .align 2, 0 +_080131A4: .4byte 0x0000ffff + thumb_func_end sub_801317C + + thumb_func_start AddMenuCursorSprite +AddMenuCursorSprite: + push {lr} + movs r1, 0 + bl AddMenuCursorSprite_ + pop {r0} + bx r0 + thumb_func_end AddMenuCursorSprite + + thumb_func_start AddMenuCursorSprite_ +AddMenuCursorSprite_: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + movs r1, 0x1A + ldrsh r0, [r6, r1] + cmp r0, 0 + bgt _080131CC + b _080132D6 +_080131CC: + adds r0, r6, 0 + bl UpdateMenuCursorSpriteCoords + ldrh r1, [r6, 0x24] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080132D6 + mov r0, sp + ldrh r0, [r0] + ldr r1, _080132FC + ands r1, r0 + ldr r3, _08013300 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013304 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r4, _08013308 + adds r0, r4, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _0801330C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013310 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013314 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + ands r3, r1 + orrs r3, r0 + str r3, [sp] + mov r3, sp + movs r2, 0xFD + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r4 + movs r5, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _08013318 + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x6] + ldr r1, _0801331C + ands r1, r0 + ldr r0, _08013320 + ands r1, r0 + movs r2, 0x8 + ldrsh r0, [r6, r2] + ldr r2, _08013324 + ands r0, r2 + strh r0, [r3, 0x2] + movs r2, 0xA + ldrsh r0, [r6, r2] + adds r0, 0x1 + ands r0, r4 + lsls r0, 4 + ands r1, r5 + orrs r1, r0 + strh r1, [r3, 0x6] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + movs r3, 0 + bl AddSprite +_080132D6: + adds r0, r6, 0 + bl sub_8013470 + movs r1, 0x14 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080132EC + adds r0, r6, 0 + adds r0, 0x14 + bl sub_801332C +_080132EC: + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080132FC: .4byte 0x0000feff +_08013300: .4byte 0xffff0000 +_08013304: .4byte 0x0000fdff +_08013308: .4byte 0x0000f3ff +_0801330C: .4byte 0x0000efff +_08013310: .4byte 0x0000dfff +_08013314: .4byte 0x00003fff +_08013318: .4byte 0x00000fff +_0801331C: .4byte 0x0000fffe +_08013320: .4byte 0x0000fffd +_08013324: .4byte 0x000001ff + thumb_func_end AddMenuCursorSprite_ + + thumb_func_start nullsub_34 +nullsub_34: + bx lr + thumb_func_end nullsub_34 + + thumb_func_start sub_801332C +sub_801332C: + push {r4-r6,lr} + sub sp, 0x8 + movs r1, 0 + movs r2, 0 + str r1, [sp] + str r2, [sp, 0x4] + mov r1, sp + ldrh r1, [r1] + ldr r2, _08013440 + ands r2, r1 + ldr r4, _08013444 + ldr r1, [sp] + ands r1, r4 + orrs r1, r2 + str r1, [sp] + mov r2, sp + ldrh r2, [r2] + adds r3, r4, 0 + ands r3, r1 + orrs r3, r2 + str r3, [sp] + mov r1, sp + ldrh r2, [r1] + ldr r1, _08013448 + ands r1, r2 + adds r2, r4, 0 + ands r2, r3 + orrs r2, r1 + str r2, [sp] + mov r1, sp + ldrh r1, [r1] + adds r3, r4, 0 + ands r3, r2 + orrs r3, r1 + str r3, [sp] + movs r5, 0x80 + lsls r5, 3 + mov r1, sp + ldrh r2, [r1] + ldr r6, _0801344C + adds r1, r6, 0 + ands r1, r2 + adds r2, r4, 0 + ands r2, r3 + orrs r2, r1 + str r2, [sp] + mov r1, sp + ldrh r1, [r1] + orrs r5, r1 + adds r3, r4, 0 + ands r3, r2 + orrs r3, r5 + str r3, [sp] + mov r1, sp + ldrh r2, [r1] + ldr r1, _08013450 + ands r1, r2 + adds r2, r4, 0 + ands r2, r3 + orrs r2, r1 + str r2, [sp] + mov r1, sp + ldrh r1, [r1] + adds r3, r4, 0 + ands r3, r2 + orrs r3, r1 + str r3, [sp] + mov r1, sp + ldrh r2, [r1] + ldr r1, _08013454 + ands r1, r2 + adds r2, r4, 0 + ands r2, r3 + orrs r2, r1 + str r2, [sp] + mov r1, sp + ldrh r1, [r1] + adds r3, r4, 0 + ands r3, r2 + orrs r3, r1 + str r3, [sp] + mov r1, sp + ldrh r2, [r1] + ldr r1, _08013458 + ands r1, r2 + adds r2, r4, 0 + ands r2, r3 + orrs r2, r1 + str r2, [sp] + mov r1, sp + ldrh r1, [r1] + ands r4, r2 + orrs r4, r1 + str r4, [sp] + mov r4, sp + ldr r3, _0801345C + ldrh r2, [r4, 0x4] + movs r1, 0xFC + lsls r1, 8 + ands r1, r2 + orrs r1, r3 + ands r1, r6 + movs r6, 0xF + movs r2, 0xF0 + lsls r2, 8 + ldr r5, _08013460 + ands r1, r5 + orrs r1, r2 + strh r1, [r4, 0x4] + ldrh r1, [r4, 0x6] + ldr r2, _08013464 + ands r2, r1 + ldr r1, _08013468 + ands r2, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + ldr r3, _0801346C + ands r1, r3 + strh r1, [r4, 0x2] + movs r1, 0x2 + ldrsh r0, [r0, r1] + adds r0, 0x1 + ands r0, r5 + lsls r0, 4 + ands r2, r6 + orrs r2, r0 + strh r2, [r4, 0x6] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + movs r3, 0 + bl AddSprite + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08013440: .4byte 0x0000feff +_08013444: .4byte 0xffff0000 +_08013448: .4byte 0x0000fdff +_0801344C: .4byte 0x0000f3ff +_08013450: .4byte 0x0000efff +_08013454: .4byte 0x0000dfff +_08013458: .4byte 0x00003fff +_0801345C: .4byte 0x000003f5 +_08013460: .4byte 0x00000fff +_08013464: .4byte 0x0000fffe +_08013468: .4byte 0x0000fffd +_0801346C: .4byte 0x000001ff + thumb_func_end sub_801332C + + thumb_func_start sub_8013470 +sub_8013470: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08013488 + b _08013624 +_08013488: + movs r2, 0x1E + ldrsh r0, [r6, r2] + cmp r0, 0 + beq _08013586 + mov r0, sp + ldrh r0, [r0] + ldr r1, _0801362C + ands r1, r0 + ldr r3, _08013630 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013634 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r4, _08013638 + adds r0, r4, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _0801363C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013640 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013644 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + ands r3, r1 + orrs r3, r0 + str r3, [sp] + mov r3, sp + ldr r2, _08013648 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r4 + movs r5, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _0801364C + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x6] + ldr r1, _08013650 + ands r1, r0 + ldr r0, _08013654 + ands r1, r0 + movs r2, 0xC + ldrsh r0, [r6, r2] + ldr r2, _08013658 + ands r0, r2 + strh r0, [r3, 0x2] + movs r2, 0xE + ldrsh r0, [r6, r2] + ands r0, r4 + lsls r0, 4 + ands r1, r5 + orrs r1, r0 + strh r1, [r3, 0x6] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + movs r3, 0 + bl AddSprite +_08013586: + movs r1, 0x20 + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _08013624 + adds r1, r0, 0 + movs r2, 0x1E + ldrsh r0, [r6, r2] + adds r0, 0x1 + cmp r1, r0 + beq _08013624 + mov r0, sp + ldrh r0, [r0] + ldr r1, _0801362C + ands r1, r0 + mov r0, sp + strh r1, [r0] + strh r1, [r0] + ldr r0, _08013634 + ands r0, r1 + mov r1, sp + strh r0, [r1] + strh r0, [r1] + ldr r4, _08013638 + ands r0, r4 + strh r0, [r1] + strh r0, [r1] + ldr r1, _0801363C + ands r1, r0 + mov r0, sp + strh r1, [r0] + strh r1, [r0] + ldr r2, _08013640 + ands r2, r1 + strh r2, [r0] + strh r2, [r0] + ldr r0, _08013644 + ands r0, r2 + mov r1, sp + strh r0, [r1] + strh r0, [r1] + mov r3, sp + ldr r2, _0801365C + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r4 + movs r5, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _0801364C + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x6] + ldr r1, _08013650 + ands r1, r0 + ldr r0, _08013654 + ands r1, r0 + movs r2, 0xC + ldrsh r0, [r6, r2] + adds r0, 0xA + ldr r2, _08013658 + ands r0, r2 + strh r0, [r3, 0x2] + movs r2, 0xE + ldrsh r0, [r6, r2] + ands r0, r4 + lsls r0, 4 + ands r1, r5 + orrs r1, r0 + strh r1, [r3, 0x6] + mov r0, sp + movs r1, 0xFF + movs r2, 0 + movs r3, 0 + bl AddSprite +_08013624: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801362C: .4byte 0x0000feff +_08013630: .4byte 0xffff0000 +_08013634: .4byte 0x0000fdff +_08013638: .4byte 0x0000f3ff +_0801363C: .4byte 0x0000efff +_08013640: .4byte 0x0000dfff +_08013644: .4byte 0x00003fff +_08013648: .4byte 0x000003f2 +_0801364C: .4byte 0x00000fff +_08013650: .4byte 0x0000fffe +_08013654: .4byte 0x0000fffd +_08013658: .4byte 0x000001ff +_0801365C: .4byte 0x000003f3 + thumb_func_end sub_8013470 + + thumb_func_start sub_8013660 +sub_8013660: + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x1A + ldrsh r0, [r4, r1] + cmp r0, 0 + ble _0801367A + adds r0, r4, 0 + bl UpdateMenuCursorSpriteCoords + adds r0, r4, 0 + adds r0, 0x8 + bl sub_801332C +_0801367A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8013660 + + thumb_func_start UpdateMenuCursorSpriteCoords +UpdateMenuCursorSpriteCoords: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, [r5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 3 + ldr r0, _080136B8 + adds r4, r0 + movs r1, 0 + ldrsh r0, [r4, r1] + lsls r0, 3 + ldrh r2, [r5, 0x4] + adds r0, r2 + strh r0, [r5, 0x8] + movs r0, 0x18 + ldrsh r1, [r5, r0] + adds r0, r5, 0 + bl sub_8013800 + movs r2, 0x2 + ldrsh r1, [r4, r2] + lsls r1, 3 + adds r1, r0 + strh r1, [r5, 0xA] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080136B8: .4byte gUnknown_2027370 + thumb_func_end UpdateMenuCursorSpriteCoords + + thumb_func_start MoveMenuCursorDown +MoveMenuCursorDown: + push {lr} + adds r1, r0, 0 + movs r3, 0 + strh r3, [r1, 0x24] + movs r0, 0x1A + ldrsh r2, [r1, r0] + cmp r2, 0 + ble _080136DA + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + lsls r0, 16 + asrs r0, 16 + cmp r0, r2 + blt _080136DC +_080136DA: + strh r3, [r1, 0x18] +_080136DC: + pop {r0} + bx r0 + thumb_func_end MoveMenuCursorDown + + thumb_func_start sub_80136E0 +sub_80136E0: + push {r4,r5,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + movs r1, 0 + strh r1, [r2, 0x24] + ldrh r4, [r2, 0x1A] + movs r0, 0x1A + ldrsh r3, [r2, r0] + cmp r3, 0 + ble _08013708 + ldrh r0, [r2, 0x18] + adds r0, 0x1 + strh r0, [r2, 0x18] + lsls r0, 16 + asrs r0, 16 + cmp r0, r3 + blt _08013710 + cmp r5, 0 + beq _0801370C +_08013708: + strh r1, [r2, 0x18] + b _08013710 +_0801370C: + subs r0, r4, 0x1 + strh r0, [r2, 0x18] +_08013710: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80136E0 + + thumb_func_start MoveMenuCursorUp +MoveMenuCursorUp: + push {r4,lr} + adds r1, r0, 0 + movs r2, 0 + strh r2, [r1, 0x24] + ldrh r3, [r1, 0x1A] + movs r4, 0x1A + ldrsh r0, [r1, r4] + cmp r0, 0 + bgt _0801372E + strh r2, [r1, 0x18] + b _0801373E +_0801372E: + ldrh r0, [r1, 0x18] + subs r0, 0x1 + strh r0, [r1, 0x18] + lsls r0, 16 + cmp r0, 0 + bge _0801373E + subs r0, r3, 0x1 + strh r0, [r1, 0x18] +_0801373E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end MoveMenuCursorUp + + thumb_func_start sub_8013744 +sub_8013744: + push {r4-r6,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r5, r1, 0 + movs r3, 0 + strh r3, [r2, 0x24] + ldrh r4, [r2, 0x1A] + movs r6, 0x1A + ldrsh r0, [r2, r6] + cmp r0, 0 + bgt _08013760 + strh r3, [r2, 0x18] + b _08013778 +_08013760: + ldrh r0, [r2, 0x18] + subs r0, 0x1 + strh r0, [r2, 0x18] + lsls r0, 16 + cmp r0, 0 + bge _08013778 + cmp r1, 0 + beq _08013776 + subs r0, r4, 0x1 + strh r0, [r2, 0x18] + b _08013778 +_08013776: + strh r5, [r2, 0x18] +_08013778: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8013744 + + thumb_func_start sub_8013780 +sub_8013780: + push {lr} + adds r2, r0, 0 + cmp r1, 0 + bge _0801378E + movs r0, 0 + strh r0, [r2, 0x18] + b _080137A0 +_0801378E: + movs r3, 0x1A + ldrsh r0, [r2, r3] + cmp r1, r0 + blt _0801379E + ldrh r0, [r2, 0x1A] + subs r0, 0x1 + strh r0, [r2, 0x18] + b _080137A0 +_0801379E: + strh r1, [r2, 0x18] +_080137A0: + movs r0, 0 + strh r0, [r2, 0x24] + pop {r0} + bx r0 + thumb_func_end sub_8013780 + + thumb_func_start sub_80137A8 +sub_80137A8: + movs r1, 0x18 + ldrsh r0, [r0, r1] + bx lr + thumb_func_end sub_80137A8 + + thumb_func_start sub_80137B0 +sub_80137B0: + push {r4,lr} + adds r4, r0, 0 + cmp r1, 0 + ble _080137BC + lsls r0, r1, 8 + b _080137E2 +_080137BC: + ldr r3, _080137F4 + ldr r1, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r1, r0, 3 + adds r0, r3, 0 + adds r0, 0xC + adds r0, r1, r0 + ldr r0, [r0] + movs r2, 0 + cmp r0, 0x6 + bne _080137D6 + movs r2, 0x10 +_080137D6: + adds r0, r1, r3 + movs r1, 0x6 + ldrsh r0, [r0, r1] + lsls r0, 3 + subs r0, r2 + lsls r0, 8 +_080137E2: + movs r2, 0x1C + ldrsh r1, [r4, r2] + bl __divsi3 + str r0, [r4, 0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080137F4: .4byte gUnknown_2027370 + thumb_func_end sub_80137B0 + + thumb_func_start sub_80137F8 +sub_80137F8: + lsls r1, 8 + str r1, [r0, 0x10] + bx lr + thumb_func_end sub_80137F8 + + thumb_func_start sub_8013800 +sub_8013800: + push {lr} + movs r3, 0x6 + ldrsh r2, [r0, r3] + ldr r0, [r0, 0x10] + muls r0, r1 + cmp r0, 0 + bge _08013810 + adds r0, 0xFF +_08013810: + asrs r0, 8 + adds r0, r2, r0 + pop {r1} + bx r1 + thumb_func_end sub_8013800 + + thumb_func_start sub_8013818 +sub_8013818: + push {r4,lr} + adds r4, r0, 0 + str r3, [r4] + movs r0, 0 + strh r1, [r4, 0x22] + strh r2, [r4, 0x1C] + strh r0, [r4, 0x14] + strh r0, [r4, 0x24] + strh r0, [r4, 0x18] + strh r0, [r4, 0x1E] + adds r0, r4, 0 + adds r0, 0x28 + bl sub_801317C + adds r0, r4, 0 + bl sub_8013984 + adds r0, r4, 0 + movs r1, 0xC + bl sub_80137F8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8013818 + + thumb_func_start sub_8013848 +sub_8013848: + push {r4,lr} + adds r4, r0, 0 + str r3, [r4] + movs r0, 0 + strh r1, [r4, 0x22] + strh r2, [r4, 0x1C] + strh r0, [r4, 0x14] + strh r0, [r4, 0x24] + strh r0, [r4, 0x18] + strh r0, [r4, 0x1E] + adds r0, r4, 0 + adds r0, 0x28 + bl sub_801317C + adds r0, r4, 0 + bl sub_8013984 + adds r0, r4, 0 + movs r1, 0x18 + bl sub_80137F8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8013848 + + thumb_func_start sub_8013878 +sub_8013878: + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + cmp r6, 0 + bge _08013886 + movs r6, 0 + b _08013890 +_08013886: + movs r1, 0x22 + ldrsh r0, [r5, r1] + cmp r6, r0 + blt _08013890 + subs r6, r0, 0x1 +_08013890: + movs r0, 0x1C + ldrsh r1, [r5, r0] + adds r0, r6, 0 + bl __divsi3 + movs r4, 0 + strh r0, [r5, 0x1E] + movs r0, 0x1C + ldrsh r1, [r5, r0] + adds r0, r6, 0 + bl __modsi3 + strh r0, [r5, 0x18] + strh r4, [r5, 0x24] + adds r0, r5, 0 + bl sub_8013984 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8013878 + + thumb_func_start sub_80138B8 +sub_80138B8: + push {r4-r7,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + movs r0, 0x1E + ldrsh r7, [r5, r0] + movs r1, 0x18 + ldrsh r6, [r5, r1] + adds r0, r5, 0 + bl AddMenuCursorSprite + cmp r4, 0 + beq _0801391C + adds r0, r5, 0 + bl GetKeyPress + cmp r0, 0x8 + beq _080138F8 + cmp r0, 0x8 + bgt _080138E6 + cmp r0, 0x7 + beq _080138F0 + b _0801391C +_080138E6: + cmp r0, 0x9 + beq _0801390E + cmp r0, 0xA + beq _08013916 + b _0801391C +_080138F0: + adds r0, r5, 0 + bl MoveMenuCursorUp + b _080138FE +_080138F8: + adds r0, r5, 0 + bl MoveMenuCursorDown +_080138FE: + movs r1, 0x18 + ldrsh r0, [r5, r1] + cmp r6, r0 + beq _0801391C + movs r0, 0x3 + bl PlayMenuSoundEffect + b _0801391C +_0801390E: + adds r0, r5, 0 + bl sub_8013A7C + b _0801391C +_08013916: + adds r0, r5, 0 + bl sub_8013A54 +_0801391C: + movs r1, 0x1E + ldrsh r0, [r5, r1] + cmp r7, r0 + bne _08013928 + movs r0, 0 + b _08013930 +_08013928: + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0x1 +_08013930: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80138B8 + + thumb_func_start sub_8013938 +sub_8013938: + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x1E + ldrsh r5, [r4, r0] + movs r0, 0 + strh r0, [r4, 0x1A] + strh r0, [r4, 0x14] + adds r0, r4, 0 + bl AddMenuCursorSprite + adds r0, r4, 0 + bl GetKeyPress + cmp r0, 0x9 + beq _0801395C + cmp r0, 0xA + beq _08013964 + b _0801396A +_0801395C: + adds r0, r4, 0 + bl sub_8013A7C + b _0801396A +_08013964: + adds r0, r4, 0 + bl sub_8013A54 +_0801396A: + movs r1, 0x1E + ldrsh r0, [r4, r1] + cmp r5, r0 + bne _08013976 + movs r0, 0 + b _0801397E +_08013976: + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0x1 +_0801397E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8013938 + + thumb_func_start sub_8013984 +sub_8013984: + push {r4-r6,lr} + adds r4, r0, 0 + ldr r1, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 3 + ldr r1, _08013A20 + adds r6, r0, r1 + ldrh r1, [r4, 0x1C] + movs r2, 0x1C + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080139A2 + adds r0, r1, 0x1 + strh r0, [r4, 0x1C] +_080139A2: + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x1C + ldrsh r1, [r4, r2] + bl __divsi3 + adds r5, r0, 0 + strh r5, [r4, 0x20] + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x1C + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + beq _080139C6 + adds r0, r5, 0x1 + strh r0, [r4, 0x20] +_080139C6: + movs r0, 0x1E + ldrsh r1, [r4, r0] + movs r2, 0x20 + ldrsh r0, [r4, r2] + subs r0, 0x1 + ldrh r5, [r4, 0x20] + cmp r1, r0 + ble _080139DA + subs r0, r5, 0x1 + strh r0, [r4, 0x1E] +_080139DA: + movs r0, 0x1E + ldrsh r1, [r4, r0] + movs r2, 0x20 + ldrsh r0, [r4, r2] + subs r0, 0x1 + cmp r1, r0 + bne _080139F8 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x1C + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _080139FA +_080139F8: + ldrh r0, [r4, 0x1C] +_080139FA: + strh r0, [r4, 0x1A] + movs r0, 0x18 + ldrsh r1, [r4, r0] + movs r2, 0x1A + ldrsh r0, [r4, r2] + subs r0, 0x1 + cmp r1, r0 + ble _08013A10 + ldrh r0, [r4, 0x1A] + subs r0, 0x1 + strh r0, [r4, 0x18] +_08013A10: + movs r1, 0 + strh r1, [r4, 0x4] + ldr r0, [r6, 0xC] + cmp r0, 0x6 + bne _08013A24 + movs r0, 0x10 + strh r0, [r4, 0x6] + b _08013A26 + .align 2, 0 +_08013A20: .4byte gUnknown_2027370 +_08013A24: + strh r1, [r4, 0x6] +_08013A26: + lsls r0, r5, 16 + asrs r0, 16 + cmp r0, 0x1 + bgt _08013A32 + movs r0, 0 + b _08013A40 +_08013A32: + movs r1, 0 + ldrsh r0, [r6, r1] + movs r2, 0x4 + ldrsh r1, [r6, r2] + adds r0, r1 + subs r0, 0x2 + lsls r0, 3 +_08013A40: + strh r0, [r4, 0xC] + movs r1, 0x2 + ldrsh r0, [r6, r1] + adds r0, 0x1 + lsls r0, 3 + subs r0, 0x2 + strh r0, [r4, 0xE] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8013984 + + thumb_func_start sub_8013A54 +sub_8013A54: + push {lr} + adds r2, r0, 0 + movs r0, 0x1E + ldrsh r1, [r2, r0] + movs r3, 0x20 + ldrsh r0, [r2, r3] + subs r0, 0x1 + cmp r1, r0 + bge _08013A6C + ldrh r0, [r2, 0x1E] + adds r0, 0x1 + b _08013A6E +_08013A6C: + movs r0, 0 +_08013A6E: + strh r0, [r2, 0x1E] + adds r0, r2, 0 + bl sub_8013984 + pop {r0} + bx r0 + thumb_func_end sub_8013A54 + + thumb_func_start sub_8013A7C +sub_8013A7C: + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x1E] + movs r3, 0x1E + ldrsh r0, [r1, r3] + cmp r0, 0 + bgt _08013A90 + ldrh r0, [r1, 0x20] + subs r0, 0x1 + b _08013A92 +_08013A90: + subs r0, r2, 0x1 +_08013A92: + strh r0, [r1, 0x1E] + adds r0, r1, 0 + bl sub_8013984 + pop {r0} + bx r0 + thumb_func_end sub_8013A7C + + thumb_func_start sub_8013AA0 +sub_8013AA0: + push {r4,r5,lr} + sub sp, 0x28 + adds r5, r0, 0 + ldrh r1, [r5, 0x28] + ldr r0, _08013B9C + ands r0, r1 + ldr r1, _08013BA0 + ands r0, r1 + ldr r4, _08013BA4 + ands r0, r4 + ldr r1, _08013BA8 + ands r0, r1 + ldr r1, _08013BAC + ands r0, r1 + movs r1, 0x80 + lsls r1, 7 + ldr r3, _08013BB0 + ands r0, r3 + orrs r0, r1 + strh r0, [r5, 0x28] + movs r1, 0x80 + lsls r1, 6 + ldrh r0, [r5, 0x2A] + ldr r2, _08013BB4 + ands r2, r0 + orrs r2, r1 + ands r2, r3 + movs r3, 0xFC + lsls r3, 2 + ldrh r1, [r5, 0x2C] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r3 + ands r0, r4 + movs r3, 0xF + movs r4, 0xF0 + lsls r4, 8 + ldr r1, _08013BB8 + ands r0, r1 + orrs r0, r4 + strh r0, [r5, 0x2C] + movs r0, 0xFE + lsls r0, 8 + ands r2, r0 + movs r0, 0xF0 + orrs r2, r0 + strh r2, [r5, 0x2A] + subs r1, 0xFF + ldrh r0, [r5, 0x2E] + ands r3, r0 + movs r0, 0 + orrs r3, r1 + strh r3, [r5, 0x2E] + adds r1, r5, 0 + adds r1, 0x26 + strb r0, [r1] + ldr r1, [r5, 0xC] + ldr r2, [r5, 0x10] + mov r0, sp + bl ConvertToDecimal + ldr r0, [r5, 0x10] + adds r1, r5, 0 + adds r1, 0x25 + strb r0, [r1] + ldrb r2, [r1] + subs r0, r2, 0x1 + lsls r0, 2 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _08013B50 + cmp r2, 0x1 + bls _08013B50 + adds r2, r1, 0 +_08013B38: + ldrb r0, [r2] + subs r0, 0x1 + strb r0, [r2] + ldrb r1, [r2] + subs r0, r1, 0x1 + lsls r0, 2 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _08013B50 + cmp r1, 0x1 + bhi _08013B38 +_08013B50: + ldr r1, [r5, 0x4] + str r1, [r5] + ldr r2, [r5, 0x10] + mov r0, sp + bl ConvertToDecimal + adds r0, r5, 0 + adds r0, 0x25 + ldrb r0, [r0] + subs r0, 0x1 + adds r1, r5, 0 + adds r1, 0x24 + strb r0, [r1] + ldrb r2, [r1] + lsls r0, r2, 2 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _08013B92 + cmp r2, 0 + beq _08013B92 + adds r2, r1, 0 +_08013B7C: + ldrb r0, [r2] + subs r0, 0x1 + strb r0, [r2] + ldrb r1, [r2] + lsls r0, r1, 2 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _08013B92 + cmp r1, 0 + bne _08013B7C +_08013B92: + add sp, 0x28 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08013B9C: .4byte 0x0000feff +_08013BA0: .4byte 0x0000fdff +_08013BA4: .4byte 0x0000f3ff +_08013BA8: .4byte 0x0000efff +_08013BAC: .4byte 0x0000dfff +_08013BB0: .4byte 0x00003fff +_08013BB4: .4byte 0x0000c1ff +_08013BB8: .4byte 0x00000fff + thumb_func_end sub_8013AA0 + + thumb_func_start sub_8013BBC +sub_8013BBC: + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r7, 0 + adds r4, 0x26 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r0, r7, 0 + bl sub_8013D10 + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08013C26 + movs r2, 0x80 + lsls r2, 6 + ldrh r1, [r7, 0x2A] + ldr r4, _08013C38 + adds r0, r4, 0 + ands r0, r1 + orrs r0, r2 + strh r0, [r7, 0x2A] + adds r5, r7, 0 + adds r5, 0x28 + movs r6, 0x80 + lsls r6, 1 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0 + bl AddSprite + ldrh r0, [r7, 0x2A] + ands r4, r0 + strh r4, [r7, 0x2A] + ldrh r1, [r7, 0x2E] + ldr r0, _08013C3C + lsrs r1, 4 + adds r1, 0x10 + ands r1, r0 + lsls r1, 4 + ldrh r2, [r7, 0x2E] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r7, 0x2E] + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0 + bl AddSprite +_08013C26: + adds r0, r7, 0 + bl sub_8013DD0 + lsls r0, 24 + cmp r0, 0 + beq _08013C40 + movs r0, 0x1 + b _08013C62 + .align 2, 0 +_08013C38: .4byte 0x0000c1ff +_08013C3C: .4byte 0x00000fff +_08013C40: + bl sub_8012AE8 + cmp r0, 0x1 + beq _08013C56 + cmp r0, 0x2 + bne _08013C60 + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 + b _08013C62 +_08013C56: + movs r0, 0 + bl PlayMenuSoundEffect + movs r0, 0x3 + b _08013C62 +_08013C60: + movs r0, 0 +_08013C62: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8013BBC + + thumb_func_start sub_8013C68 +sub_8013C68: + push {r4-r6,lr} + sub sp, 0x2C + adds r5, r0, 0 + ldr r1, [r5] + ldr r2, [r5, 0x10] + add r0, sp, 0x4 + bl ConvertToDecimal + ldr r0, [r5, 0x10] + subs r4, r0, 0x1 + cmp r4, 0 + ble _08013CA0 + lsls r0, r4, 2 + mov r1, sp + adds r1, r0 + adds r1, 0x4 + ldr r0, [r1] + cmp r0, 0 + bne _08013CA0 + movs r2, 0xFF +_08013C90: + str r2, [r1] + subs r1, 0x4 + subs r4, 0x1 + cmp r4, 0 + ble _08013CA0 + ldr r0, [r1] + cmp r0, 0 + beq _08013C90 +_08013CA0: + movs r4, 0 + adds r0, r5, 0 + adds r0, 0x25 + adds r6, r0, 0 + b _08013CDA +_08013CAA: + lsls r0, r4, 2 + add r0, sp + adds r0, 0x4 + ldr r0, [r0] + cmp r0, 0xFF + bne _08013CBA + movs r3, 0x2A + b _08013CC0 +_08013CBA: + adds r0, 0x30 + lsls r0, 24 + lsrs r3, r0, 24 +_08013CC0: + adds r4, 0x1 + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + ldr r0, [r5, 0x1C] + subs r0, r1 + ldr r1, [r5, 0x20] + ldr r2, [r5, 0x14] + str r2, [sp] + adds r2, r3, 0 + movs r3, 0x7 + bl sub_8012C60 +_08013CDA: + ldrb r0, [r6] + cmp r4, r0 + blt _08013CAA + movs r4, 0 + b _08013D02 +_08013CE4: + ldr r0, [r5, 0x14] + adds r4, 0x1 + lsls r2, r4, 1 + adds r2, r4 + lsls r2, 2 + ldr r1, [r5, 0x1C] + subs r1, r2 + subs r1, 0x1 + ldr r2, [r5, 0x20] + adds r2, 0xA + movs r3, 0x5 + str r3, [sp] + movs r3, 0xB + bl sub_800792C +_08013D02: + ldr r0, [r5, 0x10] + cmp r4, r0 + blt _08013CE4 + add sp, 0x2C + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8013C68 + + thumb_func_start sub_8013D10 +sub_8013D10: + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, [r6, 0x14] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 3 + ldr r0, _08013D34 + adds r7, r1, r0 + adds r4, r6, 0 + adds r4, 0x24 + ldrb r5, [r4] + bl sub_8012AE8 + cmp r0, 0x9 + beq _08013D38 + cmp r0, 0xA + beq _08013D4E + b _08013D62 + .align 2, 0 +_08013D34: .4byte gUnknown_2027370 +_08013D38: + ldrb r1, [r4] + adds r0, r6, 0 + adds r0, 0x25 + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bge _08013D4A + adds r0, r1, 0x1 + b _08013D5C +_08013D4A: + movs r0, 0 + b _08013D60 +_08013D4E: + ldrb r0, [r4] + cmp r0, 0 + bne _08013D5A + adds r0, r6, 0 + adds r0, 0x25 + ldrb r0, [r0] +_08013D5A: + subs r0, 0x1 +_08013D5C: + lsls r0, 24 + lsrs r0, 24 +_08013D60: + adds r5, r0, 0 +_08013D62: + adds r4, r6, 0 + adds r4, 0x24 + ldrb r0, [r4] + cmp r5, r0 + beq _08013D7C + strb r5, [r4] + movs r0, 0x3 + bl PlayMenuSoundEffect + adds r1, r6, 0 + adds r1, 0x26 + movs r0, 0x8 + strb r0, [r1] +_08013D7C: + ldrb r0, [r4] + adds r0, 0x1 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r2, [r6, 0x1C] + subs r2, r1 + movs r1, 0 + ldrsh r0, [r7, r1] + lsls r0, 3 + adds r2, r0 + subs r2, 0x3 + ldr r0, _08013DC8 + ands r2, r0 + ldrh r1, [r6, 0x2A] + movs r0, 0xFE + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + strh r0, [r6, 0x2A] + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 3 + ldr r1, [r6, 0x20] + adds r1, r0 + subs r1, 0x7 + ldr r0, _08013DCC + ands r1, r0 + lsls r1, 4 + ldrh r2, [r6, 0x2E] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r6, 0x2E] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08013DC8: .4byte 0x000001ff +_08013DCC: .4byte 0x00000fff + thumb_func_end sub_8013D10 + + thumb_func_start sub_8013DD0 +sub_8013DD0: + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8012AE8 + cmp r0, 0x7 + beq _08013DE4 + cmp r0, 0x8 + beq _08013E10 + movs r0, 0 + b _08013E4C +_08013DE4: + ldr r2, [r4] + ldr r0, [r4, 0xC] + cmp r2, r0 + beq _08013E18 + ldr r1, _08013E0C + adds r0, r4, 0 + adds r0, 0x24 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + adds r5, r2, r0 + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r0, [r4, 0xC] + cmp r5, r0 + bgt _08013E3E + b _08013E48 + .align 2, 0 +_08013E0C: .4byte gUnknown_80D4830 +_08013E10: + ldr r2, [r4] + ldr r0, [r4, 0x8] + cmp r2, r0 + bne _08013E22 +_08013E18: + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0 + b _08013E4C +_08013E22: + ldr r1, _08013E44 + adds r0, r4, 0 + adds r0, 0x24 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + subs r5, r2, r0 + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r0, [r4, 0x8] + cmp r5, r0 + bge _08013E48 +_08013E3E: + str r0, [r4] + b _08013E4A + .align 2, 0 +_08013E44: .4byte gUnknown_80D4830 +_08013E48: + str r5, [r4] +_08013E4A: + movs r0, 0x1 +_08013E4C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8013DD0 + + thumb_func_start sub_8013E54 +sub_8013E54: + push {r4-r6,lr} + sub sp, 0x8 + ldr r6, _08013F60 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r0, [r0] + ldr r1, _08013F64 + ands r1, r0 + ldr r3, _08013F68 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013F6C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r5, _08013F70 + adds r0, r5, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013F74 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013F78 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + movs r4, 0x80 + lsls r4, 7 + mov r0, sp + ldrh r1, [r0] + ldr r0, _08013F7C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + orrs r4, r0 + ands r3, r1 + orrs r3, r4 + str r3, [sp] + mov r3, sp + movs r2, 0xFC + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r5 + movs r2, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _08013F80 + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + movs r1, 0x2 + ldrsh r0, [r6, r1] + lsls r0, 3 + adds r0, 0x80 + ands r0, r4 + lsls r0, 4 + ldrh r1, [r3, 0x6] + ands r2, r1 + orrs r2, r0 + strh r2, [r3, 0x6] + movs r0, 0x70 + strh r0, [r3, 0x2] + movs r1, 0x80 + lsls r1, 1 + mov r0, sp + movs r2, 0 + movs r3, 0 + bl AddSprite + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08013F60: .4byte gUnknown_2027370 +_08013F64: .4byte 0x0000feff +_08013F68: .4byte 0xffff0000 +_08013F6C: .4byte 0x0000fdff +_08013F70: .4byte 0x0000f3ff +_08013F74: .4byte 0x0000efff +_08013F78: .4byte 0x0000dfff +_08013F7C: .4byte 0x00003fff +_08013F80: .4byte 0x00000fff + thumb_func_end sub_8013E54 + + thumb_func_start sub_8013F84 +sub_8013F84: + push {r4-r6,lr} + sub sp, 0x8 + ldr r6, _08014090 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r0, [r0] + ldr r1, _08014094 + ands r1, r0 + ldr r3, _08014098 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _0801409C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r5, _080140A0 + adds r0, r5, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080140A4 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _080140A8 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + movs r4, 0x80 + lsls r4, 7 + mov r0, sp + ldrh r1, [r0] + ldr r0, _080140AC + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + orrs r4, r0 + ands r3, r1 + orrs r3, r4 + str r3, [sp] + mov r3, sp + movs r2, 0xFC + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r5 + movs r2, 0xF + movs r1, 0xF0 + lsls r1, 8 + ldr r4, _080140B0 + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + movs r1, 0x2 + ldrsh r0, [r6, r1] + lsls r0, 3 + adds r0, 0x60 + ands r0, r4 + lsls r0, 4 + ldrh r1, [r3, 0x6] + ands r2, r1 + orrs r2, r0 + strh r2, [r3, 0x6] + movs r0, 0x70 + strh r0, [r3, 0x2] + movs r1, 0x80 + lsls r1, 1 + mov r0, sp + movs r2, 0 + movs r3, 0 + bl AddSprite + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08014090: .4byte gUnknown_2027370 +_08014094: .4byte 0x0000feff +_08014098: .4byte 0xffff0000 +_0801409C: .4byte 0x0000fdff +_080140A0: .4byte 0x0000f3ff +_080140A4: .4byte 0x0000efff +_080140A8: .4byte 0x0000dfff +_080140AC: .4byte 0x00003fff +_080140B0: .4byte 0x00000fff + thumb_func_end sub_8013F84 + + thumb_func_start sub_80140B4 +sub_80140B4: + push {r4-r7,lr} + ldr r4, _080140D8 + adds r2, r0, 0 + movs r3, 0x3 +_080140BC: + adds r1, r2, 0 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r4, 0x18 + adds r2, 0x18 + subs r3, 0x1 + cmp r3, 0 + bge _080140BC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080140D8: .4byte gUnknown_80D47C8 + thumb_func_end sub_80140B4 + + thumb_func_start sub_80140DC +sub_80140DC: + push {lr} + sub sp, 0x4 + ldr r0, _080140F4 + str r0, [sp] + mov r0, sp + bl SetSavingIconCoords + bl sub_8011830 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080140F4: .4byte 0x008000c8 + thumb_func_end sub_80140DC + + thumb_func_start sub_80140F8 +sub_80140F8: + push {lr} + sub sp, 0x4 + ldr r0, _08014110 + str r0, [sp] + mov r0, sp + bl SetSavingIconCoords + bl sub_8011830 + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08014110: .4byte 0x004000bc + thumb_func_end sub_80140F8 + + thumb_func_start sub_8014114 +sub_8014114: + push {lr} + bl xxx_call_start_bg_music + movs r0, 0 + bl SetSavingIconCoords + pop {r0} + bx r0 + thumb_func_end sub_8014114 + + thumb_func_start nullsub_201 +nullsub_201: + bx lr + thumb_func_end nullsub_201 + + thumb_func_start sub_8014128 +sub_8014128: + push {lr} + bl sub_8012AE8 + cmp r0, 0x2 + beq _08014136 + movs r0, 0x1 + b _08014138 +_08014136: + movs r0, 0 +_08014138: + pop {r1} + bx r1 + thumb_func_end sub_8014128 + + thumb_func_start sub_801413C +sub_801413C: + movs r0, 0 + bx lr + thumb_func_end sub_801413C + + thumb_func_start sub_8014140 +sub_8014140: + movs r0, 0 + bx lr + thumb_func_end sub_8014140 + + thumb_func_start sub_8014144 +sub_8014144: + ldr r0, _0801415C + movs r2, 0 + str r2, [r0] + ldr r0, _08014160 + movs r1, 0x3C + str r1, [r0] + ldr r0, _08014164 + str r1, [r0] + ldr r0, _08014168 + str r2, [r0] + bx lr + .align 2, 0 +_0801415C: .4byte gUnknown_202E744 +_08014160: .4byte gUnknown_202E738 +_08014164: .4byte gUnknown_202E73C +_08014168: .4byte gUnknown_202E740 + thumb_func_end sub_8014144 + + thumb_func_start sub_801416C +sub_801416C: + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bge _0801418C + ldr r0, _08014184 + str r3, [r0] + ldr r1, _08014188 + negs r0, r2 + b _08014194 + .align 2, 0 +_08014184: .4byte gUnknown_202E738 +_08014188: .4byte gUnknown_202E740 +_0801418C: + ldr r0, _080141A8 + str r2, [r0] + ldr r1, _080141AC + movs r0, 0 +_08014194: + str r0, [r1] + ldr r0, _080141B0 + adds r1, r3, 0 + cmp r1, 0 + bge _080141A0 + movs r1, 0 +_080141A0: + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080141A8: .4byte gUnknown_202E738 +_080141AC: .4byte gUnknown_202E740 +_080141B0: .4byte gUnknown_202E73C + thumb_func_end sub_801416C + + thumb_func_start sub_80141B4 +sub_80141B4: + push {r4-r6,lr} + sub sp, 0x14 + lsls r3, 16 + lsrs r3, 16 + movs r6, 0x1 + negs r6, r6 + movs r5, 0 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r2, [sp, 0xC] + str r3, [sp, 0x10] + adds r2, r6, 0 + movs r3, 0 + bl sub_8014248 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80141B4 + + thumb_func_start sub_80141E0 +sub_80141E0: + push {r4-r6,lr} + sub sp, 0x14 + lsls r6, r2, 16 + movs r2, 0x1 + negs r2, r2 + ldr r3, _08014210 + movs r5, 0 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r1, [sp, 0xC] + movs r1, 0xC0 + lsls r1, 18 + orrs r1, r6 + lsrs r1, 16 + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08014210: .4byte gUnknown_80D485C + thumb_func_end sub_80141E0 + + thumb_func_start sub_8014214 +sub_8014214: + push {r4-r6,lr} + sub sp, 0x14 + lsls r6, r2, 16 + movs r2, 0x1 + negs r2, r2 + ldr r3, _08014244 + movs r5, 0 + str r5, [sp] + movs r4, 0x3 + str r4, [sp, 0x4] + str r5, [sp, 0x8] + str r1, [sp, 0xC] + movs r1, 0xC0 + lsls r1, 18 + orrs r1, r6 + lsrs r1, 16 + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + add sp, 0x14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08014244: .4byte gUnknown_80D4880 + thumb_func_end sub_8014214 + + thumb_func_start sub_8014248 +sub_8014248: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r1, 0 + mov r9, r2 + mov r8, r3 + ldr r5, [sp, 0x28] + ldr r7, [sp, 0x30] + ldr r1, [sp, 0x34] + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + movs r1, 0 + str r1, [sp] + ldr r4, _080142B8 + ldr r3, _080142BC + adds r2, r4, r3 + adds r1, r4, 0 + mov r3, r10 + bl xxx_format_string + ldr r0, _080142C0 + str r4, [r0] + ldr r0, _080142C4 + str r6, [r0, 0x24] + ldr r0, _080142C8 + str r5, [r0] + ldr r0, _080142CC + mov r4, r8 + str r4, [r0] + ldr r0, _080142D0 + ldr r5, [sp, 0x24] + str r5, [r0] + ldr r0, _080142D4 + mov r6, r9 + str r6, [r0] + ldr r0, _080142D8 + bl sub_801317C + movs r0, 0x10 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _080142E4 + ldr r2, _080142DC + adds r1, r2, 0 + ldr r0, _080142E0 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldm r0!, {r3,r4,r6} + stm r1!, {r3,r4,r6} + b _080142F2 + .align 2, 0 +_080142B8: .4byte gUnknown_202E798 +_080142BC: .4byte 0x000003e7 +_080142C0: .4byte gUnknown_202E794 +_080142C4: .4byte gUnknown_202E748 +_080142C8: .4byte gUnknown_202EC10 +_080142CC: .4byte gUnknown_202EC14 +_080142D0: .4byte gUnknown_202EC18 +_080142D4: .4byte gUnknown_202EC1C +_080142D8: .4byte gUnknown_202EC28 +_080142DC: .4byte gUnknown_203B198 +_080142E0: .4byte gUnknown_80D48DC +_080142E4: + ldr r2, _08014358 + adds r1, r2, 0 + ldr r0, _0801435C + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r4-r6} + stm r1!, {r4-r6} +_080142F2: + adds r4, r2, 0 + movs r0, 0 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + strh r0, [r4, 0x28] + movs r0, 0x40 + strb r0, [r4, 0x18] + cmp r7, 0 + beq _08014368 + ldr r1, [r7, 0x4] + cmp r1, 0 + beq _08014368 + ldrb r0, [r7, 0xC] + lsls r0, 3 + adds r1, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _08014368 + ldrh r0, [r7, 0x8] + strh r0, [r4, 0x20] + ldrh r0, [r7, 0xA] + strh r0, [r4, 0x22] + movs r0, 0x5 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + strh r0, [r4, 0x28] + movs r4, 0 +_0801432A: + adds r0, r4, 0 + adds r0, 0xE0 + ldr r2, [r7, 0x4] + ldrb r1, [r7, 0xC] + lsls r1, 3 + adds r2, r1 + lsls r3, r4, 2 + ldr r1, [r2] + adds r1, r3 + bl SetBGPaletteBufferColorArray + adds r4, 0x1 + cmp r4, 0xF + ble _0801432A + movs r0, 0x1 + str r0, [sp] + ldrb r0, [r7, 0xE] + cmp r0, 0 + beq _08014360 + ldr r1, _08014358 + movs r0, 0x7 + b _08014364 + .align 2, 0 +_08014358: .4byte gUnknown_203B198 +_0801435C: .4byte gUnknown_80D48C4 +_08014360: + ldr r1, _080143E8 + movs r0, 0x5 +_08014364: + str r0, [r1, 0x1C] + adds r4, r1, 0 +_08014368: + ldr r2, _080143EC + adds r1, r4, 0 + adds r1, 0x30 + adds r0, r2, 0 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + adds r0, r4, 0 + adds r0, 0x48 + ldm r2!, {r1,r3,r5} + stm r0!, {r1,r3,r5} + ldm r2!, {r1,r3,r6} + stm r0!, {r1,r3,r6} + bl ResetUnusedInputStruct + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, _080143F0 + movs r4, 0 + movs r2, 0 + movs r0, 0x4 + strh r0, [r1] + strh r0, [r1, 0x2] + movs r0, 0x70 + strh r0, [r1, 0x8] + ldr r0, _080143F4 + movs r5, 0x2 + ldrsh r0, [r0, r5] + lsls r0, 3 + adds r0, 0x22 + strh r0, [r1, 0xA] + movs r0, 0x7 + str r0, [r1, 0x10] + str r2, [r1, 0x1C] + adds r1, 0x20 + strb r4, [r1] + movs r0, 0x10 + mov r6, r10 + ands r0, r6 + movs r1, 0x3 + cmp r0, 0 + beq _080143C6 + movs r1, 0x8 +_080143C6: + adds r0, r1, 0 + bl sub_80063D8 + ldr r0, _080143F8 + movs r1, 0x1 + str r1, [r0] + ldr r0, _080143FC + mov r2, r10 + strh r2, [r0] + movs r0, 0x20 + mov r3, r10 + ands r0, r3 + cmp r0, 0 + beq _08014404 + ldr r0, _08014400 + strb r1, [r0] + b _08014408 + .align 2, 0 +_080143E8: .4byte gUnknown_203B198 +_080143EC: .4byte gUnknown_80D48AC +_080143F0: .4byte gUnknown_202E748 +_080143F4: .4byte gUnknown_2027370 +_080143F8: .4byte gUnknown_202E744 +_080143FC: .4byte gUnknown_202E77C +_08014400: .4byte gUnknown_202E790 +_08014404: + ldr r0, _0801445C + strb r4, [r0] +_08014408: + movs r0, 0x80 + lsls r0, 3 + mov r4, r10 + ands r0, r4 + cmp r0, 0 + beq _08014418 + bl SetWindowBGColor +_08014418: + ldr r0, _08014460 + movs r1, 0x1 + str r1, [r0] + ldr r0, _08014464 + str r1, [r0] + bl UnpressButtons + ldr r1, _08014468 + movs r0, 0 + strb r0, [r1] + ldr r1, _0801446C + movs r0, 0 + str r0, [r1] + ldr r5, [sp] + cmp r5, 0 + beq _08014480 + ldr r0, [r7, 0x4] + ldrb r1, [r7, 0xC] + lsls r1, 3 + adds r0, 0x4 + adds r0, r1 + ldr r4, [r0] + movs r0, 0x1 + bl sub_80073B8 + ldrb r0, [r7, 0xD] + cmp r0, 0 + bne _08014470 + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0xE + bl sub_8008274 + b _0801447A + .align 2, 0 +_0801445C: .4byte gUnknown_202E790 +_08014460: .4byte gUnknown_202E788 +_08014464: .4byte gUnknown_202E78C +_08014468: .4byte gUnknown_202E791 +_0801446C: .4byte gUnknown_202E784 +_08014470: + movs r0, 0x1 + adds r1, r4, 0 + movs r2, 0xE + bl sub_800836C +_0801447A: + movs r0, 0x1 + bl sub_80073E0 +_08014480: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8014248 + + thumb_func_start sub_8014490 +sub_8014490: + ldr r0, _0801449C + movs r1, 0 + str r1, [r0] + ldr r0, _080144A0 + str r1, [r0] + bx lr + .align 2, 0 +_0801449C: .4byte gUnknown_202E744 +_080144A0: .4byte gUnknown_202EC1C + thumb_func_end sub_8014490 + + thumb_func_start sub_80144A4 +sub_80144A4: + push {lr} + adds r1, r0, 0 + cmp r1, 0 + beq _080144B2 + ldr r0, _080144BC + ldr r0, [r0] + str r0, [r1] +_080144B2: + ldr r0, _080144C0 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080144BC: .4byte gUnknown_202EC1C +_080144C0: .4byte gUnknown_202E744 + thumb_func_end sub_80144A4 + + thumb_func_start xxx_draw_string_80144C4 +xxx_draw_string_80144C4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0x1 + mov r10, r0 + ldr r1, _080144F4 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080144DC: + ldr r0, _080144F8 + ldr r1, [r0] + adds r3, r0, 0 + cmp r1, 0xB + bls _080144E8 + b _08014A6A +_080144E8: + lsls r0, r1, 2 + ldr r1, _080144FC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080144F4: .4byte gUnknown_202E784 +_080144F8: .4byte gUnknown_202E744 +_080144FC: .4byte _08014500 + .align 2, 0 +_08014500: + .4byte _08014A72 + .4byte _08014530 + .4byte _08014708 + .4byte _08014A38 + .4byte _08014A48 + .4byte _08014A60 + .4byte _08014778 + .4byte _080147E2 + .4byte _080147E2 + .4byte _080147E2 + .4byte _080149D8 + .4byte _08014A04 +_08014530: + ldr r0, _08014540 + ldr r6, [r0] + ldr r0, _08014544 + ldrb r0, [r0] + cmp r0, 0 + beq _0801457C + ldr r7, _08014548 + b _08014580 + .align 2, 0 +_08014540: .4byte gUnknown_202E794 +_08014544: .4byte gUnknown_202E790 +_08014548: .4byte 0x0001869f +_0801454C: + str r2, [r3, 0x1C] + adds r1, r3, 0 + adds r1, 0x20 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0801456C + movs r0, 0x8 + str r0, [r1] + ldr r0, _08014570 + strb r2, [r0] + ldr r1, _08014574 + ldr r0, _08014578 + ldr r0, [r0] + str r0, [r1] + b _0801466C + .align 2, 0 +_0801456C: .4byte gUnknown_202E744 +_08014570: .4byte gUnknown_202E791 +_08014574: .4byte gUnknown_202E780 +_08014578: .4byte gUnknown_202E738 +_0801457C: + ldr r0, _08014594 + ldr r7, [r0] +_08014580: + ldr r1, _08014598 + movs r0, 0 + str r0, [r1, 0x2C] + bl sub_80073B8 + ldr r1, _0801459C + mov r8, r1 + ldr r2, _080145A0 + mov r9, r2 + b _08014652 + .align 2, 0 +_08014594: .4byte gUnknown_202E788 +_08014598: .4byte gUnknown_202E748 +_0801459C: .4byte gUnknown_202E744 +_080145A0: .4byte gUnknown_202E780 +_080145A4: + adds r0, r4, 0 + adds r0, 0x20 + ldrb r5, [r0] + cmp r5, 0 + beq _080145EC + movs r3, 0x2 + ldrsh r0, [r4, r3] + cmp r0, 0x22 + ble _080145CC + movs r0, 0x8 + mov r4, r8 + str r0, [r4] + ldr r0, _080145C8 + ldr r0, [r0] + mov r1, r9 + str r0, [r1] + b _080145DA + .align 2, 0 +_080145C8: .4byte gUnknown_202E738 +_080145CC: + movs r0, 0x7 + mov r2, r8 + str r0, [r2] + ldr r0, _080145E4 + ldr r0, [r0] + mov r3, r9 + str r0, [r3] +_080145DA: + ldr r1, _080145E8 + movs r0, 0 + strb r0, [r1] + b _0801466C + .align 2, 0 +_080145E4: .4byte gUnknown_202E73C +_080145E8: .4byte gUnknown_202E791 +_080145EC: + ldrb r0, [r6] + cmp r0, 0 + beq _0801466C + cmp r0, 0xD + beq _080145FA + cmp r0, 0xA + bne _08014608 +_080145FA: + movs r0, 0x4 + strh r0, [r4] + ldrh r0, [r4, 0x2] + adds r0, 0xB + strh r0, [r4, 0x2] + adds r6, 0x1 + b _08014630 +_08014608: + adds r0, r6, 0 + add r1, sp, 0x4 + bl xxx_get_next_char_from_string + adds r6, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + movs r2, 0x2 + ldrsh r1, [r4, r2] + ldr r2, [sp, 0x4] + ldr r3, [r4, 0x10] + str r5, [sp] + bl xxx_call_draw_char + ldrh r1, [r4] + adds r1, r0 + strh r1, [r4] + ldr r0, _08014694 + ldr r0, [r0] + str r0, [r4, 0x2C] +_08014630: + ldr r3, _08014698 + movs r4, 0x2 + ldrsh r0, [r3, r4] + cmp r0, 0x22 + ble _08014650 + ldr r0, _0801469C + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + bne _0801464C + b _0801454C +_0801464C: + movs r0, 0x4 + strh r0, [r3, 0x2] +_08014650: + subs r7, 0x1 +_08014652: + cmp r7, 0 + ble _0801466C + ldr r4, _08014698 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8009190 + adds r6, r0, 0 + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _080145A4 +_0801466C: + movs r0, 0 + bl sub_80073E0 + ldr r4, _080146A0 + str r6, [r4] + ldr r0, _080146A4 + bl sub_801317C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, 0 + bne _080146BC + ldr r0, _080146A8 + ldr r0, [r0] + cmp r0, 0 + beq _080146B0 + ldr r1, _080146AC + movs r0, 0x3 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014694: .4byte gUnknown_202E78C +_08014698: .4byte gUnknown_202E748 +_0801469C: .4byte gUnknown_202E77C +_080146A0: .4byte gUnknown_202E794 +_080146A4: .4byte gUnknown_202EC28 +_080146A8: .4byte gUnknown_202EC14 +_080146AC: .4byte gUnknown_202E744 +_080146B0: + ldr r1, _080146B8 + movs r0, 0x6 + str r0, [r1] + b _08014A72 + .align 2, 0 +_080146B8: .4byte gUnknown_202E744 +_080146BC: + ldr r0, _080146E8 + movs r2, 0 + str r2, [r0, 0x30] + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _080146FC + ldr r1, _080146EC + ldr r0, [r1] + cmp r0, 0x1 + beq _080146D4 + b _08014A72 +_080146D4: + movs r0, 0x7 + str r0, [r1] + ldr r0, _080146F0 + strb r2, [r0] + ldr r1, _080146F4 + ldr r0, _080146F8 + ldr r0, [r0] + str r0, [r1] + b _08014A72 + .align 2, 0 +_080146E8: .4byte gUnknown_202E748 +_080146EC: .4byte gUnknown_202E744 +_080146F0: .4byte gUnknown_202E791 +_080146F4: .4byte gUnknown_202E780 +_080146F8: .4byte gUnknown_202E738 +_080146FC: + ldr r1, _08014704 + movs r0, 0x2 + b _08014A68 + .align 2, 0 +_08014704: .4byte gUnknown_202E744 +_08014708: + ldr r4, _08014760 + ldrh r1, [r4] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08014718 + bl sub_8011A04 +_08014718: + ldrh r1, [r4] + movs r0, 0x2 + ands r0, r1 + ldr r2, _08014764 + cmp r0, 0 + bne _08014742 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08014742 + ldr r0, _08014768 + ldrh r1, [r0, 0x2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _08014742 + ldr r0, _0801476C + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08014770 + str r0, [r2, 0x30] +_08014742: + ldr r1, [r2, 0x30] + adds r1, 0x1 + str r1, [r2, 0x30] + ldr r0, [r2, 0x2C] + cmp r1, r0 + bgt _08014750 + b _08014A72 +_08014750: + ldr r1, _08014774 + movs r0, 0x1 + str r0, [r1] + adds r1, r2, 0 + adds r1, 0x21 + movs r0, 0 + strb r0, [r1] + b _08014A6A + .align 2, 0 +_08014760: .4byte gUnknown_202E77C +_08014764: .4byte gUnknown_202E748 +_08014768: .4byte gRealInputs +_0801476C: .4byte gUnknown_202E790 +_08014770: .4byte 0x0001869f +_08014774: .4byte gUnknown_202E744 +_08014778: + ldr r0, _080147B4 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080147DC + movs r0, 0x9 + str r0, [r3] + ldr r1, _080147B8 + movs r0, 0 + strb r0, [r1] + ldr r0, _080147BC + ldr r1, [r0] + cmp r1, 0 + ble _080147C8 + ldr r2, _080147C0 + ldr r0, _080147C4 + ldr r0, [r0] + subs r0, r1, r0 + str r0, [r2] + cmp r0, 0 + blt _080147A8 + b _08014A6A +_080147A8: + movs r0, 0xB + str r0, [r3] + movs r0, 0 + str r0, [r2] + b _08014A6A + .align 2, 0 +_080147B4: .4byte gUnknown_202E77C +_080147B8: .4byte gUnknown_202E791 +_080147BC: .4byte gUnknown_202E740 +_080147C0: .4byte gUnknown_202E780 +_080147C4: .4byte gUnknown_202E784 +_080147C8: + ldr r0, _080147D4 + ldr r1, _080147D8 + ldr r1, [r1] + str r1, [r0] + b _08014A6A + .align 2, 0 +_080147D4: .4byte gUnknown_202E780 +_080147D8: .4byte gUnknown_202E738 +_080147DC: + movs r0, 0xB + str r0, [r3] + b _08014A6A +_080147E2: + movs r5, 0 + ldr r0, _0801481C + adds r0, 0x20 + strb r5, [r0] + ldr r4, _08014820 + adds r0, r4, 0 + movs r1, 0 + bl nullsub_34 + ldr r0, _08014824 + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08014802 + b _0801494C +_08014802: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801482C + ldr r1, _08014828 + ldr r0, [r1] + cmp r0, 0 + bgt _08014814 + b _0801494C +_08014814: + subs r0, 0x1 + str r0, [r1] + b _08014856 + .align 2, 0 +_0801481C: .4byte gUnknown_202E748 +_08014820: .4byte gUnknown_202EC28 +_08014824: .4byte gUnknown_202E77C +_08014828: .4byte gUnknown_202E780 +_0801482C: + ldr r2, _080148E4 + ldrh r1, [r2, 0x2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0801483A + b _0801494C +_0801483A: + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08014842 + b _0801494C +_08014842: + ldrh r1, [r2] + movs r0, 0xF2 + ands r0, r1 + cmp r0, 0x2 + bne _0801484E + b _0801494C +_0801484E: + ldrb r0, [r4, 0x5] + cmp r0, 0 + beq _08014856 + movs r5, 0x1 +_08014856: + cmp r5, 0 + bne _0801494C + ldr r1, _080148E8 + ldrb r0, [r1] + adds r2, r0, 0x1 + strb r2, [r1] + ldr r0, _080148EC + ldrh r7, [r0] + movs r0, 0x2 + ands r0, r7 + cmp r0, 0 + beq _08014870 + b _08014A72 +_08014870: + movs r0, 0x8 + ands r2, r0 + cmp r2, 0 + bne _0801487A + b _08014A72 +_0801487A: + ldr r3, _080148F0 + ldrh r1, [r3] + ldr r0, _080148F4 + ands r0, r1 + ldr r1, _080148F8 + ands r0, r1 + ldr r4, _080148FC + ands r0, r4 + ldr r1, _08014900 + ands r0, r1 + ldr r1, _08014904 + ands r0, r1 + movs r1, 0x80 + lsls r1, 7 + ldr r2, _08014908 + ands r0, r2 + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r3, 0x2] + ldr r5, _0801490C + ands r5, r0 + ands r5, r2 + strh r5, [r3, 0x2] + movs r2, 0xFC + lsls r2, 2 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r4 + movs r6, 0xF + lsls r1, r6, 12 + ldr r2, _08014910 + ands r0, r2 + movs r4, 0 + mov r8, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + movs r0, 0x10 + ands r0, r7 + adds r4, r3, 0 + cmp r0, 0 + beq _08014914 + movs r2, 0xF0 + lsls r2, 3 + ldrh r1, [r4, 0x6] + adds r0, r6, 0 + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x6] + movs r0, 0x70 + b _08014932 + .align 2, 0 +_080148E4: .4byte gRealInputs +_080148E8: .4byte gUnknown_202E791 +_080148EC: .4byte gUnknown_202E77C +_080148F0: .4byte gUnknown_202E6E0 +_080148F4: .4byte 0x0000feff +_080148F8: .4byte 0x0000fdff +_080148FC: .4byte 0x0000f3ff +_08014900: .4byte 0x0000efff +_08014904: .4byte 0x0000dfff +_08014908: .4byte 0x00003fff +_0801490C: .4byte 0x0000c1ff +_08014910: .4byte 0x00000fff +_08014914: + ldr r3, _08014944 + movs r0, 0xA + ldrsh r1, [r3, r0] + adds r1, 0x1 + ands r1, r2 + lsls r1, 4 + ldrh r2, [r4, 0x6] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x6] + movs r1, 0x8 + ldrsh r0, [r3, r1] + ldr r1, _08014948 + ands r0, r1 +_08014932: + strh r0, [r4, 0x2] + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0 + bl AddSprite + b _08014A72 + .align 2, 0 +_08014944: .4byte gUnknown_202E748 +_08014948: .4byte 0x000001ff +_0801494C: + ldr r0, _08014960 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, 0 + bne _08014968 + ldr r1, _08014964 + movs r0, 0xB + str r0, [r1] + b _080149BA + .align 2, 0 +_08014960: .4byte gUnknown_202E794 +_08014964: .4byte gUnknown_202E744 +_08014968: + ldr r4, _08014974 + ldr r0, [r4] + cmp r0, 0x9 + bne _08014978 + movs r0, 0xB + b _080149B8 + .align 2, 0 +_08014974: .4byte gUnknown_202E744 +_08014978: + cmp r0, 0x8 + bne _080149B6 + ldr r2, _080149A0 + movs r1, 0x4 + strh r1, [r2] + movs r3, 0x2 + ldrsh r0, [r2, r3] + cmp r0, 0x22 + ble _080149B6 + strh r1, [r2, 0x2] + ldr r0, _080149A4 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080149A8 +_08014998: + movs r0, 0 + bl sub_8008C54 + b _080149B6 + .align 2, 0 +_080149A0: .4byte gUnknown_202E748 +_080149A4: .4byte gUnknown_202E77C +_080149A8: + ldr r1, [r2, 0x1C] + cmp r1, 0 + bne _08014998 + movs r0, 0xA + str r0, [r4] + str r1, [r2, 0x28] + b _080149BA +_080149B6: + movs r0, 0x1 +_080149B8: + str r0, [r4] +_080149BA: + ldr r1, _080149D0 + movs r0, 0x70 + strh r0, [r1, 0x8] + ldr r0, _080149D4 + movs r4, 0x2 + ldrsh r0, [r0, r4] + lsls r0, 3 + adds r0, 0x22 + strh r0, [r1, 0xA] + b _08014A72 + .align 2, 0 +_080149D0: .4byte gUnknown_202E748 +_080149D4: .4byte gUnknown_2027370 +_080149D8: + ldr r4, _080149F8 + ldr r0, [r4, 0x28] + adds r0, 0x1 + str r0, [r4, 0x28] + ldr r0, _080149FC + ldr r1, [r0] + movs r0, 0 + bl _call_via_r1 + ldr r0, [r4, 0x28] + cmp r0, 0x11 + ble _08014A72 + ldr r1, _08014A00 + movs r0, 0x1 + str r0, [r1] + b _08014A72 + .align 2, 0 +_080149F8: .4byte gUnknown_202E748 +_080149FC: .4byte gUnknown_203B088 +_08014A00: .4byte gUnknown_202E744 +_08014A04: + ldr r0, _08014A2C + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08014A34 + bl ResetUnusedInputStruct + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, _08014A30 + movs r0, 0 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A2C: .4byte gUnknown_202E77C +_08014A30: .4byte gUnknown_202E744 +_08014A34: + str r0, [r3] + b _08014A72 +_08014A38: + bl sub_8014A88 + ldr r1, _08014A44 + movs r0, 0x4 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A44: .4byte gUnknown_202E744 +_08014A48: + bl sub_8014B94 + lsls r0, 24 + cmp r0, 0 + beq _08014A72 + ldr r1, _08014A5C + movs r0, 0x5 + str r0, [r1] + b _08014A72 + .align 2, 0 +_08014A5C: .4byte gUnknown_202E744 +_08014A60: + bl nullsub_35 + ldr r1, _08014A84 + movs r0, 0xB +_08014A68: + str r0, [r1] +_08014A6A: + mov r0, r10 + cmp r0, 0 + beq _08014A72 + b _080144DC +_08014A72: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08014A84: .4byte gUnknown_202E744 + thumb_func_end xxx_draw_string_80144C4 + + thumb_func_start sub_8014A88 +sub_8014A88: + push {r4-r7,lr} + sub sp, 0x88 + ldr r0, _08014A98 + ldr r4, [r0] + movs r5, 0 + movs r7, 0 + movs r6, 0 + b _08014ABE + .align 2, 0 +_08014A98: .4byte gUnknown_202EC14 +_08014A9C: + adds r5, 0xC + ldr r0, [r4] + add r1, sp, 0x8 + add r2, sp, 0x88 + movs r3, 0 + bl xxx_format_string + add r0, sp, 0x8 + bl sub_8008ED0 + cmp r7, r0 + bge _08014AB6 + adds r7, r0, 0 +_08014AB6: + adds r4, 0x8 + adds r6, 0x1 + cmp r6, 0x9 + bgt _08014AC4 +_08014ABE: + ldr r0, [r4] + cmp r0, 0 + bne _08014A9C +_08014AC4: + adds r0, r5, 0 + cmp r5, 0 + bge _08014ACC + adds r0, r5, 0x7 +_08014ACC: + asrs r2, r0, 3 + movs r0, 0x7 + ands r5, r0 + cmp r5, 0 + beq _08014AD8 + adds r2, 0x1 +_08014AD8: + ldr r4, _08014B74 + ldr r0, _08014B78 + ldr r0, [r0] + str r0, [r4, 0x34] + adds r1, r7, 0 + cmp r1, 0 + bge _08014AE8 + adds r1, 0x7 +_08014AE8: + asrs r1, 3 + adds r1, 0x2 + strh r1, [r4, 0x3C] + adds r0, r4, 0 + adds r0, 0x40 + strh r2, [r0] + strh r2, [r4, 0x3E] + movs r0, 0x1C + subs r0, r1 + strh r0, [r4, 0x38] + movs r0, 0xE + subs r0, r2 + strh r0, [r4, 0x3A] + movs r0, 0x80 + strb r0, [r4] + movs r0, 0xC0 + strb r0, [r4, 0x18] + ldr r5, _08014B7C + ldr r0, [r5] + cmp r0, 0 + beq _08014B1E + adds r1, r4, 0 + adds r1, 0x48 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} +_08014B1E: + bl ResetUnusedInputStruct + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_800641C + ldr r0, _08014B80 + ldr r1, _08014B84 + ldr r1, [r1] + ldr r2, _08014B88 + ldr r3, _08014B8C + ldr r3, [r3] + ldr r4, _08014B90 + ldr r4, [r4] + str r4, [sp] + movs r4, 0x2 + str r4, [sp, 0x4] + bl sub_8012D60 + ldr r0, [r5] + cmp r0, 0 + beq _08014B6A + movs r0, 0x3 + bl sub_80073B8 + ldr r0, [r5] + ldr r2, [r0, 0x18] + movs r0, 0 + str r0, [sp] + movs r0, 0x4 + movs r1, 0x2 + movs r3, 0x3 + bl xxx_call_draw_string + movs r0, 0x3 + bl sub_80073E0 +_08014B6A: + add sp, 0x88 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08014B74: .4byte gUnknown_203B198 +_08014B78: .4byte gUnknown_202EC10 +_08014B7C: .4byte gUnknown_202EC20 +_08014B80: .4byte gUnknown_202EBC0 +_08014B84: .4byte gUnknown_202EC14 +_08014B88: .4byte gUnknown_80D48A0 +_08014B8C: .4byte gUnknown_202EC18 +_08014B90: .4byte gUnknown_202EC1C + thumb_func_end sub_8014A88 + + thumb_func_start sub_8014B94 +sub_8014B94: + push {r4,lr} + ldr r4, _08014BA8 + adds r0, r4, 0 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + beq _08014BAC + movs r0, 0 + b _08014BB6 + .align 2, 0 +_08014BA8: .4byte gUnknown_202EBC0 +_08014BAC: + ldr r1, _08014BBC + adds r0, r4, 0 + bl sub_8013114 + movs r0, 0x1 +_08014BB6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08014BBC: .4byte gUnknown_202EC1C + thumb_func_end sub_8014B94 + + thumb_func_start nullsub_35 +nullsub_35: + bx lr + thumb_func_end nullsub_35 + + thumb_func_start xxx_format_string +xxx_format_string: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + adds r5, r0, 0 + str r1, [sp, 0x3C] + adds r7, r2, 0 + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + movs r0, 0x1 + mov r10, r0 + mov r9, r0 + subs r7, 0x1 + b _08014F62 +_08014BE6: + movs r1, 0x1 + b _08014C2C +_08014BEA: + mov r0, r10 + cmp r0, 0 + beq _08014C24 + movs r1, 0 + mov r10, r1 + mov r9, r1 + movs r0, 0x8 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08014C2E + ldr r0, _08014C1C + add r4, sp, 0x3C + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + ldr r0, _08014C20 + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + b _08014C2E + .align 2, 0 +_08014C1C: .4byte gUnknown_202E5D8 +_08014C20: .4byte gUnknown_80D48F4 +_08014C24: + mov r0, r9 + cmp r0, 0 + beq _08014C2E + movs r1, 0 +_08014C2C: + mov r9, r1 +_08014C2E: + cmp r6, 0x23 + bne _08014C5A + ldrb r3, [r5, 0x1] + cmp r3, 0x50 + beq _08014C3C + cmp r3, 0x70 + bne _08014C42 +_08014C3C: + movs r0, 0x1 + mov r10, r0 + mov r9, r0 +_08014C42: + ldr r1, [sp, 0x3C] + adds r2, r1, 0x1 + cmp r2, r7 + bcs _08014C56 + movs r0, 0x23 + strb r0, [r1] + str r2, [sp, 0x3C] + strb r3, [r1, 0x1] + adds r0, r2, 0x1 + str r0, [sp, 0x3C] +_08014C56: + adds r5, 0x2 + b _08014F62 +_08014C5A: + cmp r6, 0x24 + beq _08014C60 + b _08014F26 +_08014C60: + movs r4, 0 + adds r5, 0x1 + ldrb r0, [r5] + subs r0, 0x24 + cmp r0, 0x52 + bls _08014C6E + b _08014F0E +_08014C6E: + lsls r0, 2 + ldr r1, _08014C78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014C78: .4byte _08014C7C + .align 2, 0 +_08014C7C: + .4byte _08014F04 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0C + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014EC4 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E60 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E54 + .4byte _08014DC8 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014DDC + .4byte _08014E10 + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014F0E + .4byte _08014E24 + .4byte _08014F0E + .4byte _08014E84 +_08014DC8: + adds r5, 0x1 + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014DD8 + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014DD8: .4byte gUnknown_202CF58 +_08014DDC: + adds r5, 0x1 + ldrb r0, [r5] + cmp r0, 0x6D + bne _08014DFC + bl sub_808D3BC + adds r1, r0, 0 + ldr r4, _08014DF8 + adds r0, r4, 0 + movs r2, 0 + bl PrintColoredPokeNameToBuffer + b _08014F0E + .align 2, 0 +_08014DF8: .4byte gUnknown_202EB80 +_08014DFC: + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014E0C + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014E0C: .4byte gUnknown_202D098 +_08014E10: + adds r5, 0x1 + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08014E20 + adds r4, r1, r0 + b _08014F0C + .align 2, 0 +_08014E20: .4byte gFileCache + 0x110 +_08014E24: + adds r5, 0x1 + movs r0, 0 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _08014E40 + ldr r0, _08014E3C + bl sub_80920D8 + b _08014E48 + .align 2, 0 +_08014E3C: .4byte gTeamName +_08014E40: + ldr r0, _08014E4C + ldr r1, _08014E50 + bl strcpy +_08014E48: + ldr r4, _08014E4C + b _08014F0E + .align 2, 0 +_08014E4C: .4byte gTeamName +_08014E50: .4byte gUnknown_80D48F8 +_08014E54: + adds r5, 0x1 + ldr r4, _08014E5C + b _08014F0E + .align 2, 0 +_08014E5C: .4byte gUnknown_202E628 +_08014E60: + adds r5, 0x1 + ldr r1, _08014E7C + ldr r2, _08014E80 + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r2 + adds r5, 0x1 + ldr r2, [r0] + mov r0, sp + bl sprintfStatic +_08014E78: + mov r4, sp + b _08014F0E + .align 2, 0 +_08014E7C: .4byte gUnknown_80D4900 +_08014E80: .4byte gUnknown_202DE30 +_08014E84: + adds r5, 0x1 + ldr r1, _08014EBC + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r5, 0x1 + ldr r1, _08014EC0 + ldrb r2, [r5] + subs r2, 0x30 + adds r5, 0x1 + mov r0, sp + bl sprintfStatic + mov r0, sp + ldrb r1, [r0] + cmp r1, 0 + beq _08014E78 + movs r2, 0x60 +_08014EAC: + cmp r1, 0x20 + bne _08014EB2 + strb r2, [r0] +_08014EB2: + adds r0, 0x1 + ldrb r1, [r0] + cmp r1, 0 + bne _08014EAC + b _08014E78 + .align 2, 0 +_08014EBC: .4byte gUnknown_202DE30 +_08014EC0: .4byte gUnknown_80D4904 +_08014EC4: + adds r5, 0x1 + ldr r1, _08014EFC + ldrb r0, [r5] + subs r0, 0x30 + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r5, 0x1 + ldr r1, _08014F00 + ldrb r2, [r5] + subs r2, 0x30 + adds r5, 0x1 + mov r0, sp + bl sprintfStatic + mov r0, sp + ldrb r1, [r0] + cmp r1, 0 + beq _08014E78 + movs r2, 0x60 +_08014EEC: + cmp r1, 0x20 + bne _08014EF2 + strb r2, [r0] +_08014EF2: + adds r0, 0x1 + ldrb r1, [r0] + cmp r1, 0 + bne _08014EEC + b _08014E78 + .align 2, 0 +_08014EFC: .4byte gUnknown_202DE30 +_08014F00: .4byte gUnknown_80D4908 +_08014F04: + ldr r4, _08014F08 + b _08014F0E + .align 2, 0 +_08014F08: .4byte gUnknown_80D4910 +_08014F0C: + adds r5, 0x1 +_08014F0E: + cmp r4, 0 + beq _08014F62 + add r1, sp, 0x3C + adds r0, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014FA8 + lsls r0, 24 + cmp r0, 0 + bne _08014F7E + b _08014F62 +_08014F26: + adds r0, r6, 0 + adds r0, 0x7F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08014F36 + cmp r6, 0x87 + bne _08014F54 +_08014F36: + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F42 + strb r6, [r0] + adds r0, 0x1 + str r0, [sp, 0x3C] +_08014F42: + adds r5, 0x1 + ldrb r1, [r5] + cmp r1, 0 + beq _08014F7E + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F60 + strb r1, [r0] + b _08014F5C +_08014F54: + ldr r0, [sp, 0x3C] + cmp r0, r7 + bcs _08014F60 + strb r6, [r0] +_08014F5C: + adds r0, 0x1 + str r0, [sp, 0x3C] +_08014F60: + adds r5, 0x1 +_08014F62: + ldrb r6, [r5] + cmp r6, 0 + beq _08014F7E + cmp r6, 0xD + beq _08014F72 + cmp r6, 0xA + beq _08014F72 + b _08014BEA +_08014F72: + movs r0, 0x80 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _08014F7E + b _08014BE6 +_08014F7E: + ldr r0, [sp, 0x3C] + movs r1, 0 + strb r1, [r0] + ldrb r0, [r5] + cmp r0, 0xD + bne _08014F8C + adds r5, 0x1 +_08014F8C: + ldrb r0, [r5] + cmp r0, 0xA + bne _08014F94 + adds r5, 0x1 +_08014F94: + adds r0, r5, 0 + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end xxx_format_string + + thumb_func_start sub_8014FA8 +sub_8014FA8: + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r3, 16 + lsrs r3, 16 + ldr r2, [r5] + ldrb r1, [r4] + cmp r1, 0 + beq _08014FE4 + movs r0, 0x80 + ands r0, r3 + lsls r0, 16 + lsrs r3, r0, 16 +_08014FC4: + cmp r3, 0 + beq _08014FD2 + cmp r1, 0xD + bne _08014FD2 + str r2, [r5] + movs r0, 0x1 + b _08014FE8 +_08014FD2: + cmp r2, r6 + bcs _08014FDC + ldrb r0, [r4] + strb r0, [r2] + adds r2, 0x1 +_08014FDC: + adds r4, 0x1 + ldrb r1, [r4] + cmp r1, 0 + bne _08014FC4 +_08014FE4: + str r2, [r5] + movs r0, 0 +_08014FE8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8014FA8 + + thumb_func_start xxx_format_and_draw +xxx_format_and_draw: + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x1F8 + adds r5, r0, 0 + adds r6, r1, 0 + adds r0, r2, 0 + mov r8, r3 + ldr r4, [sp, 0x20C] + add r2, sp, 0x1F8 + add r1, sp, 0x4 + movs r3, 0 + bl xxx_format_string + ldr r1, _08015030 + add r1, sp + movs r0, 0 + strb r0, [r1] + str r4, [sp] + adds r0, r5, 0 + adds r1, r6, 0 + add r2, sp, 0x4 + mov r3, r8 + bl xxx_call_draw_string + add sp, 0x1F8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08015030: .4byte 0x000001f7 + thumb_func_end xxx_format_and_draw + + thumb_func_start sub_8015034 +sub_8015034: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x1FC + adds r6, r0, 0 + mov r8, r1 + adds r0, r2, 0 + mov r9, r3 + ldr r4, [sp, 0x214] + ldr r5, [sp, 0x218] + add r2, sp, 0x1FC + add r1, sp, 0x8 + movs r3, 0 + bl xxx_format_string + ldr r1, _0801507C + add r1, sp + movs r0, 0 + strb r0, [r1] + str r4, [sp] + str r5, [sp, 0x4] + adds r0, r6, 0 + mov r1, r8 + add r2, sp, 0x8 + mov r3, r9 + bl sub_8008F8C + add sp, 0x1FC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801507C: .4byte 0x000001fb + thumb_func_end sub_8015034 + + thumb_func_start sub_8015080 +sub_8015080: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r8, r0 + mov r9, r1 + ldr r4, _08015158 + ldr r0, _0801515C + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + movs r1, 0 + str r1, [r0] + mov r12, r4 + ldr r0, _08015160 + mov r10, r0 + mov r5, r12 + movs r3, 0 + movs r2, 0x3 +_080150AC: + mov r4, r12 + ldr r1, [r4] + adds r1, r3 + adds r1, 0x54 + mov r0, r10 + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _080150AC + movs r4, 0 + ldr r1, [r5] + adds r1, 0x54 + ldr r0, _08015164 + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldr r1, [r5] + adds r1, 0x84 + ldr r0, _08015168 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r5] + adds r0, 0x84 + mov r1, r9 + bl sub_8012CAC + bl ResetUnusedInputStruct + ldr r0, [r5] + adds r0, 0x54 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + bl sub_80073B8 + ldr r2, [r5] + adds r1, r2, 0 + adds r1, 0xB4 + ldr r6, _0801515C + adds r2, r6 + mov r0, r8 + movs r3, 0 + bl xxx_format_string + ldr r2, [r5] + adds r2, 0xB4 + str r4, [sp] + movs r0, 0x4 + movs r1, 0x4 + movs r3, 0 + bl xxx_call_draw_string + movs r0, 0 + bl sub_80073E0 + ldr r0, [r5] + adds r0, 0x4 + movs r1, 0x1 + negs r1, r1 + str r1, [sp] + movs r1, 0x2 + str r1, [sp, 0x4] + mov r1, r9 + movs r2, 0 + movs r3, 0 + bl sub_8012D60 + movs r0, 0x1 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08015158: .4byte gUnknown_203B1F8 +_0801515C: .4byte 0x000004b4 +_08015160: .4byte gUnknown_80DAF70 +_08015164: .4byte gUnknown_80DAF88 +_08015168: .4byte gUnknown_80DAFA0 + thumb_func_end sub_8015080 + + thumb_func_start sub_801516C +sub_801516C: + push {r4,lr} + ldr r4, _08015184 + ldr r0, [r4] + adds r0, 0x4 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + beq _08015188 + movs r0, 0 + b _08015192 + .align 2, 0 +_08015184: .4byte gUnknown_203B1F8 +_08015188: + ldr r1, [r4] + adds r0, r1, 0x4 + bl sub_8013114 + movs r0, 0x3 +_08015192: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_801516C + + thumb_func_start sub_8015198 +sub_8015198: + ldr r0, _080151A0 + ldr r0, [r0] + ldr r0, [r0] + bx lr + .align 2, 0 +_080151A0: .4byte gUnknown_203B1F8 + thumb_func_end sub_8015198 + + thumb_func_start sub_80151A4 +sub_80151A4: + push {r4,lr} + ldr r4, _080151BC + ldr r0, [r4] + cmp r0, 0 + beq _080151B6 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080151B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080151BC: .4byte gUnknown_203B1F8 + thumb_func_end sub_80151A4 + + thumb_func_start sub_80151C0 +sub_80151C0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, _080151FC + movs r0, 0xCC + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + str r5, [r0] + movs r1, 0 + strb r1, [r0, 0x19] + ldr r0, [r4] + strb r1, [r0, 0x18] + ldr r0, [r4] + strb r1, [r0, 0x4] + ldr r0, [r4] + ldr r0, [r0] + cmp r0, 0x5 + bhi _0801524C + lsls r0, 2 + ldr r1, _08015200 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080151FC: .4byte gUnknown_203B1FC +_08015200: .4byte _08015204 + .align 2, 0 +_08015204: + .4byte _0801524C + .4byte _0801524C + .4byte _0801524C + .4byte _0801524C + .4byte _0801521C + .4byte _08015234 +_0801521C: + ldr r1, _08015230 + ldr r2, [r1] + movs r0, 0x9 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0x1 + strb r0, [r2, 0x4] + ldr r2, [r1] + movs r0, 0x36 + b _08015258 + .align 2, 0 +_08015230: .4byte gUnknown_203B1FC +_08015234: + ldr r1, _08015248 + ldr r2, [r1] + movs r0, 0x9 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0x1 + strb r0, [r2, 0x4] + ldr r2, [r1] + movs r0, 0x18 + b _08015258 + .align 2, 0 +_08015248: .4byte gUnknown_203B1FC +_0801524C: + ldr r1, _08015374 + ldr r2, [r1] + movs r0, 0x6 + strb r0, [r2, 0x1A] + ldr r2, [r1] + movs r0, 0xA +_08015258: + strb r0, [r2, 0x1B] + mov r8, r1 + mov r0, r8 + ldr r2, [r0] + movs r1, 0x9A + lsls r1, 1 + adds r0, r2, r1 + str r6, [r0] + adds r1, r2, 0 + adds r1, 0xF8 + adds r0, r2, 0 + adds r0, 0xFC + str r0, [r1] + movs r2, 0 + mov r1, r8 + movs r3, 0 +_08015278: + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + strb r3, [r0] + adds r2, 0x1 + cmp r2, 0x35 + ble _08015278 + ldr r5, _08015374 + ldr r2, [r5] + adds r0, r2, 0 + adds r0, 0xF8 + ldr r0, [r0] + movs r3, 0x9A + lsls r3, 1 + adds r1, r2, r3 + ldr r1, [r1] + ldrb r2, [r2, 0x1B] + bl MemoryCopy8 + movs r2, 0 + ldr r0, [r5] + ldrb r3, [r0, 0x1B] + cmp r2, r3 + bge _080152EA + adds r1, r0, 0 + adds r1, 0xF8 + ldr r0, [r1] + ldrb r0, [r0] + mov r8, r5 + cmp r0, 0 + beq _080152C8 +_080152B8: + adds r2, 0x1 + cmp r2, r3 + bge _080152EA + ldr r0, [r1] + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080152B8 +_080152C8: + mov r4, r8 + ldr r0, [r4] + ldrb r0, [r0, 0x1B] + cmp r2, r0 + bge _080152EA + mov r1, r8 + movs r3, 0 +_080152D6: + ldr r0, [r1] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + strb r3, [r0] + adds r2, 0x1 + ldr r0, [r1] + ldrb r0, [r0, 0x1B] + cmp r2, r0 + blt _080152D6 +_080152EA: + bl sub_8015F44 + ldr r2, _08015374 + ldr r1, [r2] + strb r0, [r1, 0x1C] + ldr r1, [r2] + ldrb r0, [r1, 0x1C] + ldrb r5, [r1, 0x1B] + cmp r0, r5 + bne _08015302 + subs r0, 0x1 + strb r0, [r1, 0x1C] +_08015302: + movs r6, 0x1 + mov r12, r6 + ldr r6, [r2] + adds r5, r6, 0x6 + ldrh r1, [r6, 0x6] + ldr r0, _08015378 + ands r0, r1 + ldr r1, _0801537C + ands r0, r1 + ldr r2, _08015380 + ands r0, r2 + ldr r1, _08015384 + ands r0, r1 + ldr r1, _08015388 + ands r0, r1 + strh r0, [r6, 0x6] + ldrh r0, [r5, 0x4] + adds r3, r2, 0 + ands r3, r0 + movs r1, 0xF + movs r2, 0xF0 + lsls r2, 8 + ldr r0, _0801538C + ands r3, r0 + orrs r3, r2 + strh r3, [r5, 0x4] + ldrh r0, [r5, 0x2] + movs r4, 0xFE + lsls r4, 8 + ands r4, r0 + movs r0, 0xF0 + orrs r4, r0 + strh r4, [r5, 0x2] + movs r2, 0xF0 + lsls r2, 4 + ldrh r0, [r5, 0x6] + ands r1, r0 + movs r7, 0 + orrs r1, r2 + strh r1, [r5, 0x6] + ldrb r0, [r6, 0x4] + cmp r0, 0 + beq _0801539C + ldr r0, _08015390 + ands r4, r0 + ldr r1, _08015394 + movs r0, 0xFC + lsls r0, 8 + ands r3, r0 + orrs r3, r1 + strh r3, [r5, 0x4] + ldr r0, _08015398 + ands r4, r0 + strh r4, [r5, 0x2] + mov r7, r12 + b _080153BE + .align 2, 0 +_08015374: .4byte gUnknown_203B1FC +_08015378: .4byte 0x0000feff +_0801537C: .4byte 0x0000fdff +_08015380: .4byte 0x0000f3ff +_08015384: .4byte 0x0000efff +_08015388: .4byte 0x0000dfff +_0801538C: .4byte 0x00000fff +_08015390: .4byte 0x0000c1ff +_08015394: .4byte 0x000003f6 +_08015398: .4byte 0x00003fff +_0801539C: + movs r1, 0x80 + lsls r1, 6 + ldr r0, _08015468 + ands r4, r0 + orrs r4, r1 + orrs r4, r7 + movs r1, 0xFC + lsls r1, 2 + movs r0, 0xFC + lsls r0, 8 + ands r3, r0 + orrs r3, r1 + strh r3, [r5, 0x4] + ldr r0, _0801546C + ands r4, r0 + strh r4, [r5, 0x2] + mov r1, r12 +_080153BE: + movs r2, 0x80 + lsls r2, 7 + ldrh r1, [r6, 0x6] + ands r0, r1 + orrs r0, r2 + strh r0, [r6, 0x6] + ldr r5, _08015470 + ldr r1, [r5] + movs r0, 0x4 + strb r0, [r1, 0x16] + ldr r4, [r5] + adds r6, r4, 0 + adds r6, 0xE + ldrh r1, [r4, 0xE] + ldr r0, _08015474 + ands r0, r1 + ldr r1, _08015478 + ands r0, r1 + ldr r3, _0801547C + ands r0, r3 + ldr r1, _08015480 + ands r0, r1 + ldr r1, _08015484 + ands r0, r1 + ldr r1, _0801546C + ands r0, r1 + strh r0, [r4, 0xE] + movs r2, 0xFD + lsls r2, 2 + ldrh r1, [r6, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r3 + movs r2, 0xF + movs r3, 0xF0 + lsls r3, 8 + ldr r1, _08015488 + ands r0, r1 + orrs r0, r3 + strh r0, [r6, 0x4] + movs r0, 0xF0 + strh r0, [r6, 0x2] + subs r1, 0xFF + ldrh r0, [r6, 0x6] + ands r2, r0 + movs r0, 0 + orrs r2, r1 + strh r2, [r6, 0x6] + strb r0, [r4, 0x17] + mov r8, r5 + ldr r2, _0801548C + mov r10, r2 + mov r12, r8 + movs r3, 0x9C + lsls r3, 1 + mov r9, r3 + ldr r4, _08015490 + movs r3, 0 + movs r2, 0x3 +_08015438: + mov r5, r12 + ldr r1, [r5] + adds r1, r3 + add r1, r9 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _08015438 + mov r6, r8 + ldr r1, [r6] + ldrb r0, [r1, 0x4] + cmp r0, 0 + beq _08015498 + movs r7, 0xA8 + lsls r7, 1 + adds r1, r7 + ldr r0, _08015494 + b _080154A0 + .align 2, 0 +_08015468: .4byte 0x0000c1ff +_0801546C: .4byte 0x00003fff +_08015470: .4byte gUnknown_203B1FC +_08015474: .4byte 0x0000feff +_08015478: .4byte 0x0000fdff +_0801547C: .4byte 0x0000f3ff +_08015480: .4byte 0x0000efff +_08015484: .4byte 0x0000dfff +_08015488: .4byte 0x00000fff +_0801548C: .4byte gUnknown_80DB550 +_08015490: .4byte gUnknown_80DB538 +_08015494: .4byte gUnknown_80DB580 +_08015498: + movs r0, 0xA8 + lsls r0, 1 + adds r1, r0 + ldr r0, _080154EC +_080154A0: + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + mov r0, r8 + ldr r1, [r0] + movs r4, 0x9C + lsls r4, 1 + adds r1, r4 + mov r0, r10 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + bl ResetUnusedInputStruct + mov r3, r8 + ldr r0, [r3] + adds r0, r4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0x1 + bl sub_8015A08 + bl sub_8015C1C + bl sub_8015F84 + movs r0, 0x1 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080154EC: .4byte gUnknown_80DB568 + thumb_func_end sub_80151C0 + + thumb_func_start sub_80154F0 +sub_80154F0: + push {r4,r5,lr} + ldr r4, _08015558 + ldr r1, [r4] + ldrb r0, [r1, 0x16] + adds r0, 0x1 + strb r0, [r1, 0x16] + bl sub_80157D8 + ldr r2, [r4] + ldrb r1, [r2, 0x16] + movs r5, 0x8 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0801551C + adds r0, r2, 0x6 + movs r1, 0x80 + lsls r1, 1 + movs r2, 0 + movs r3, 0 + bl AddSprite +_0801551C: + ldr r1, [r4] + ldrb r0, [r1, 0x17] + adds r0, 0x1 + strb r0, [r1, 0x17] + bl sub_80158BC + ldr r2, [r4] + ldrb r1, [r2, 0x17] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08015544 + adds r0, r2, 0 + adds r0, 0xE + movs r1, 0x80 + lsls r1, 1 + movs r2, 0 + movs r3, 0 + bl AddSprite +_08015544: + bl sub_8012AE8 + subs r0, 0x1 + cmp r0, 0x5 + bhi _080155E2 + lsls r0, 2 + ldr r1, _0801555C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015558: .4byte gUnknown_203B1FC +_0801555C: .4byte _08015560 + .align 2, 0 +_08015560: + .4byte _080155C0 + .4byte _080155C6 + .4byte _080155E2 + .4byte _080155D4 + .4byte _08015578 + .4byte _0801558C +_08015578: + ldr r0, _08015588 + ldr r1, [r0] + ldrb r0, [r1, 0x1C] + cmp r0, 0 + beq _080155B8 + subs r0, 0x1 + b _080155A8 + .align 2, 0 +_08015588: .4byte gUnknown_203B1FC +_0801558C: + ldr r5, _080155B4 + ldr r0, [r5] + ldrb r4, [r0, 0x1C] + ldrb r0, [r0, 0x1B] + subs r0, 0x1 + cmp r4, r0 + beq _080155B8 + bl sub_8015F44 + cmp r4, r0 + bge _080155B8 + ldr r1, [r5] + ldrb r0, [r1, 0x1C] + adds r0, 0x1 +_080155A8: + strb r0, [r1, 0x1C] + movs r0, 0x3 + bl PlayMenuSoundEffect + b _080155E2 + .align 2, 0 +_080155B4: .4byte gUnknown_203B1FC +_080155B8: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _080155E2 +_080155C0: + bl sub_801560C + b _080155E4 +_080155C6: + bl sub_8015748 + lsls r0, 24 + cmp r0, 0 + beq _080155E2 + movs r0, 0x2 + b _080155E4 +_080155D4: + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r0, _080155EC + ldr r1, [r0] + movs r0, 0x5 + strb r0, [r1, 0x1A] +_080155E2: + movs r0, 0 +_080155E4: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080155EC: .4byte gUnknown_203B1FC + thumb_func_end sub_80154F0 + + thumb_func_start sub_80155F0 +sub_80155F0: + push {r4,lr} + ldr r4, _08015608 + ldr r0, [r4] + cmp r0, 0 + beq _08015602 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_08015602: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08015608: .4byte gUnknown_203B1FC + thumb_func_end sub_80155F0 + + thumb_func_start sub_801560C +sub_801560C: + push {r4-r6,lr} + ldr r3, _08015640 + ldr r4, _08015644 + ldr r5, [r4] + ldrb r0, [r5, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r5, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r3, 0x8 + adds r0, r3 + ldr r6, [r0] + movs r0, 0x83 + lsls r0, 1 + cmp r6, r0 + beq _0801567A + cmp r6, r0 + bgt _08015648 + subs r0, 0x1 + cmp r6, r0 + beq _0801566C + b _080156BC + .align 2, 0 +_08015640: .4byte gUnknown_80DB0F8 +_08015644: .4byte gUnknown_203B1FC +_08015648: + ldr r0, _08015668 + cmp r6, r0 + bne _080156BC + movs r1, 0 + ldrb r0, [r5, 0x18] + cmp r0, 0 + bne _08015658 + movs r1, 0x1 +_08015658: + strb r1, [r5, 0x18] + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0 + bl sub_8015A08 + b _0801573E + .align 2, 0 +_08015668: .4byte 0x00000107 +_0801566C: + bl sub_8015748 + lsls r0, 24 + cmp r0, 0 + beq _0801573E + movs r0, 0x2 + b _08015740 +_0801567A: + bl sub_8015F44 + cmp r0, 0 + beq _080156D4 + ldr r0, [r4] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015696 + bl sub_8015F44 + ldr r1, [r4] + ldrb r1, [r1, 0x1B] + cmp r0, r1 + bne _080156D4 +_08015696: + movs r0, 0 + bl PlayMenuSoundEffect + ldr r0, _080156B8 + ldr r2, [r0] + movs r1, 0x9A + lsls r1, 1 + adds r0, r2, r1 + ldr r0, [r0] + adds r1, r2, 0 + adds r1, 0xF8 + ldr r1, [r1] + ldrb r2, [r2, 0x1B] + bl MemoryCopy8 + movs r0, 0x3 + b _08015740 + .align 2, 0 +_080156B8: .4byte gUnknown_203B1FC +_080156BC: + ldr r0, [r4] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080156DC + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_803D0F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080156DC +_080156D4: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _0801573E +_080156DC: + ldr r0, _08015728 + ldr r3, [r0] + ldrb r1, [r3, 0x18] + adds r4, r0, 0 + cmp r1, 0x1 + bne _0801570A + ldrb r0, [r3, 0x1B] + subs r2, r0, 0x2 + ldrb r3, [r3, 0x1C] + cmp r2, r3 + blt _0801570A + adds r3, r4, 0 +_080156F4: + ldr r0, [r3] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + ldrb r1, [r0] + strb r1, [r0, 0x1] + subs r2, 0x1 + ldr r0, [r3] + ldrb r0, [r0, 0x1C] + cmp r2, r0 + bge _080156F4 +_0801570A: + ldr r0, [r4] + ldrb r1, [r0, 0x1C] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + strb r6, [r0] + ldr r1, [r4] + ldrb r2, [r1, 0x1C] + ldrb r0, [r1, 0x1B] + subs r0, 0x1 + cmp r2, r0 + bge _0801572C + adds r0, r2, 0x1 + strb r0, [r1, 0x1C] + b _08015730 + .align 2, 0 +_08015728: .4byte gUnknown_203B1FC +_0801572C: + movs r0, 0x5 + strb r0, [r1, 0x1A] +_08015730: + movs r0, 0 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 +_0801573E: + movs r0, 0 +_08015740: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_801560C + + thumb_func_start sub_8015748 +sub_8015748: + push {r4,lr} + ldr r4, _0801576C + ldr r2, [r4] + ldrb r1, [r2, 0x1C] + adds r0, r2, 0 + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + ldrb r3, [r0] + cmp r3, 0 + bne _08015790 + cmp r1, 0 + bne _08015770 + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x1 + b _080157CE + .align 2, 0 +_0801576C: .4byte gUnknown_203B1FC +_08015770: + subs r0, r1, 0x1 + strb r0, [r2, 0x1C] + ldr r0, [r4] + ldrb r1, [r0, 0x1C] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r1 + strb r3, [r0] + movs r0, 0x1 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 + b _080157CC +_08015790: + bl sub_8015F44 + subs r3, r0, 0x1 + ldr r0, [r4] + ldrb r2, [r0, 0x1C] + cmp r2, r3 + bge _080157B0 +_0801579E: + ldr r0, [r4] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r2 + ldrb r1, [r0, 0x1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r3 + blt _0801579E +_080157B0: + ldr r0, _080157D4 + ldr r0, [r0] + adds r0, 0xF8 + ldr r0, [r0] + adds r0, r3 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + bl PlayMenuSoundEffect + bl sub_8015C1C + bl sub_8015F84 +_080157CC: + movs r0, 0 +_080157CE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080157D4: .4byte gUnknown_203B1FC + thumb_func_end sub_8015748 + + thumb_func_start sub_80157D8 +sub_80157D8: + push {r4,r5,lr} + ldr r5, _080157EC + ldr r0, _080157F0 + ldr r0, [r0] + mov r12, r0 + ldr r0, [r0] + cmp r0, 0x4 + bne _080157F8 + ldr r3, _080157F4 + b _080157FE + .align 2, 0 +_080157EC: .4byte gUnknown_20273B8 +_080157F0: .4byte gUnknown_203B1FC +_080157F4: .4byte gUnknown_80DAFC0 +_080157F8: + cmp r0, 0x5 + bne _0801585C + ldr r3, _08015850 +_080157FE: + mov r1, r12 + ldrb r0, [r1, 0x1C] + lsls r0, 2 + adds r0, r3 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r1, r0 + ldr r0, _08015854 + ands r1, r0 + mov r4, r12 + adds r4, 0x6 + ldrh r2, [r4, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x2] + mov r1, r12 + ldrb r0, [r1, 0x1C] + lsls r0, 2 + adds r0, r3 + movs r2, 0x2 + ldrsh r1, [r0, r2] + movs r3, 0x2 + ldrsh r0, [r5, r3] + lsls r0, 3 + adds r1, r0 + adds r1, 0x5 + ldr r0, _08015858 + ands r1, r0 + lsls r1, 4 + ldrh r2, [r4, 0x6] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x6] + b _080158B0 + .align 2, 0 +_08015850: .4byte gUnknown_80DB098 +_08015854: .4byte 0x000001ff +_08015858: .4byte 0x00000fff +_0801585C: + mov r0, r12 + ldrb r1, [r0, 0x1C] + lsls r1, 1 + mov r2, r12 + adds r2, 0x1E + adds r2, r1 + adds r0, 0x8A + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r2, [r2] + adds r1, r2 + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 3 + adds r0, 0x1E + adds r1, r0 + lsls r1, 23 + lsrs r1, 23 + mov r3, r12 + adds r3, 0x6 + ldrh r2, [r3, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r1, 3 + adds r1, 0x22 + ldr r0, _080158B8 + ands r1, r0 + lsls r1, 4 + ldrh r2, [r3, 0x6] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x6] +_080158B0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080158B8: .4byte 0x00000fff + thumb_func_end sub_80157D8 + + thumb_func_start sub_80158BC +sub_80158BC: + push {r4-r6,lr} + ldr r6, _080158D4 + bl sub_8012AE8 + cmp r0, 0x8 + beq _08015908 + cmp r0, 0x8 + bgt _080158D8 + cmp r0, 0x7 + beq _080158E2 + b _08015980 + .align 2, 0 +_080158D4: .4byte gUnknown_2027370 +_080158D8: + cmp r0, 0x9 + beq _08015930 + cmp r0, 0xA + beq _08015958 + b _08015980 +_080158E2: + ldr r4, _08015900 + ldr r3, _08015904 + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015900: .4byte gUnknown_80DB0F8 +_08015904: .4byte gUnknown_203B1FC +_08015908: + ldr r4, _08015928 + ldr r3, _0801592C + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x1] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015928: .4byte gUnknown_80DB0F8 +_0801592C: .4byte gUnknown_203B1FC +_08015930: + ldr r4, _08015950 + ldr r3, _08015954 + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x2] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015950: .4byte gUnknown_80DB0F8 +_08015954: .4byte gUnknown_203B1FC +_08015958: + ldr r4, _08015978 + ldr r3, _0801597C + ldr r2, [r3] + ldrb r0, [r2, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r2, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x3] + adds r5, r3, 0 + b _08015988 + .align 2, 0 +_08015978: .4byte gUnknown_80DB0F8 +_0801597C: .4byte gUnknown_203B1FC +_08015980: + ldr r1, _080159F8 + ldr r0, [r1] + ldrb r0, [r0, 0x1A] + adds r5, r1, 0 +_08015988: + adds r4, r5, 0 + ldr r1, [r4] + ldrb r2, [r1, 0x1A] + cmp r0, r2 + beq _080159A0 + strb r0, [r1, 0x1A] + movs r0, 0x3 + bl PlayMenuSoundEffect + ldr r1, [r4] + movs r0, 0x8 + strb r0, [r1, 0x17] +_080159A0: + ldr r3, _080159FC + ldr r4, [r5] + ldrb r0, [r4, 0x1A] + lsls r1, r0, 1 + adds r1, r0 + ldrb r2, [r4, 0x19] + lsls r0, r2, 8 + subs r0, r2 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r3, 0 + ldrsh r1, [r6, r3] + lsls r1, 3 + ldrb r2, [r0, 0x4] + adds r1, r2 + subs r1, 0x5 + movs r3, 0x2 + ldrsh r2, [r6, r3] + lsls r2, 3 + ldrb r0, [r0, 0x5] + adds r2, r0 + adds r2, 0x1 + ldr r0, _08015A00 + ands r1, r0 + adds r4, 0xE + ldrh r3, [r4, 0x2] + movs r0, 0xFE + lsls r0, 8 + ands r0, r3 + orrs r0, r1 + strh r0, [r4, 0x2] + ldr r0, _08015A04 + ands r2, r0 + lsls r2, 4 + ldrh r1, [r4, 0x6] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080159F8: .4byte gUnknown_203B1FC +_080159FC: .4byte gUnknown_80DB0F8 +_08015A00: .4byte 0x000001ff +_08015A04: .4byte 0x00000fff + thumb_func_end sub_80158BC + + thumb_func_start sub_8015A08 +sub_8015A08: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + movs r0, 0 + bl sub_8008C54 + movs r0, 0 + bl sub_80073B8 + ldr r3, _08015A68 + ldr r2, _08015A6C + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + ldr r0, _08015A70 + cmp r4, r0 + bne _08015A3E + b _08015BC0 +_08015A3E: + mov r8, r2 + adds r7, r3, 0 + add r0, sp, 0x14 + mov r10, r0 + movs r6, 0 + mov r9, r6 +_08015A4A: + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r0, r6, r0 + adds r0, r3 + ldrb r0, [r0, 0x6] + cmp r0, 0x2 + beq _08015AAA + cmp r0, 0x2 + bgt _08015A74 + cmp r0, 0x1 + beq _08015A7A + b _08015A82 + .align 2, 0 +_08015A68: .4byte gUnknown_80DB0F8 +_08015A6C: .4byte gUnknown_203B1FC +_08015A70: .4byte 0x00000109 +_08015A74: + cmp r0, 0x3 + beq _08015A7E + b _08015A82 +_08015A7A: + movs r5, 0x5 + b _08015AAC +_08015A7E: + movs r5, 0x7 + b _08015AAC +_08015A82: + movs r5, 0x7 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015AAC + cmp r4, 0xFF + bgt _08015AA4 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_803D0F0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _08015AAC + b _08015AAA +_08015AA4: + ldr r0, _08015ADC + cmp r4, r0 + bgt _08015AAC +_08015AAA: + movs r5, 0x2 +_08015AAC: + movs r0, 0x84 + lsls r0, 1 + cmp r4, r0 + beq _08015B9E + subs r0, 0x1 + cmp r4, r0 + bne _08015B04 + mov r2, r8 + ldr r0, [r2] + ldrb r2, [r0, 0x18] + cmp r2, 0 + bne _08015AE4 + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + str r2, [sp] + ldr r2, _08015AE0 + b _08015B6A + .align 2, 0 +_08015ADC: .4byte 0x00000101 +_08015AE0: .4byte gUnknown_80DB598 +_08015AE4: + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + mov r3, r9 + str r3, [sp] + ldr r2, _08015B00 + b _08015B6A + .align 2, 0 +_08015B00: .4byte gUnknown_80DB5A4 +_08015B04: + cmp r4, 0x20 + bne _08015B34 + add r0, sp, 0x4 + ldr r1, _08015B30 + adds r2, r5, 0 + bl sprintfStatic + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x1 + ldrb r1, [r1, 0x5] + mov r2, r9 + str r2, [sp] + add r2, sp, 0x4 + b _08015B6A + .align 2, 0 +_08015B30: .4byte gUnknown_80DB5B0 +_08015B34: + cmp r4, 0xFF + ble _08015B7C + ldr r1, _08015B74 + movs r0, 0xFF + ands r4, r0 + lsls r0, r4, 2 + adds r0, r1 + ldr r3, [r0] + mov r0, r10 + ldr r1, _08015B78 + adds r2, r5, 0 + bl sprintfStatic + mov r3, r8 + ldr r0, [r3] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + adds r0, 0x3 + ldrb r1, [r1, 0x5] + mov r2, r9 + str r2, [sp] + mov r2, r10 +_08015B6A: + movs r3, 0 + bl xxx_call_draw_string + b _08015B9E + .align 2, 0 +_08015B74: .4byte gUnknown_80DB4F4 +_08015B78: .4byte gUnknown_80DB5B8 +_08015B7C: + mov r3, r8 + ldr r0, [r3] + ldrb r0, [r0, 0x19] + lsls r1, r0, 8 + subs r1, r0 + lsls r1, 2 + adds r1, r6, r1 + adds r1, r7 + ldrb r0, [r1, 0x4] + ldrb r1, [r1, 0x5] + lsls r2, r4, 24 + lsrs r2, 24 + mov r3, r9 + str r3, [sp] + adds r3, r5, 0 + bl sub_8012C60 +_08015B9E: + adds r6, 0xC + ldr r3, _08015C10 + ldr r2, _08015C14 + ldr r0, [r2] + ldrb r1, [r0, 0x19] + lsls r0, r1, 8 + subs r0, r1 + lsls r0, 2 + adds r0, r6, r0 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + ldr r0, _08015C18 + cmp r4, r0 + beq _08015BC0 + b _08015A4A +_08015BC0: + movs r4, 0xE + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x47 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0x48 + bl sub_8007A78 + str r4, [sp] + movs r0, 0 + movs r1, 0xDF + movs r2, 0 + movs r3, 0x48 + bl sub_8007A78 + movs r0, 0 + bl sub_80073E0 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015C10: .4byte gUnknown_80DB0F8 +_08015C14: .4byte gUnknown_203B1FC +_08015C18: .4byte 0x00000109 + thumb_func_end sub_8015A08 + + thumb_func_start sub_8015C1C +sub_8015C1C: + push {r4,r5,lr} + sub sp, 0x54 + movs r0, 0x1 + bl sub_8008C54 + movs r0, 0x1 + bl sub_80073B8 + ldr r0, _08015C74 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _08015C78 + movs r4, 0xE + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x37 + movs r3, 0xE0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x38 + bl sub_8007A78 + str r4, [sp] + movs r0, 0x1 + movs r1, 0xDF + movs r2, 0 + movs r3, 0x38 + bl sub_8007A78 + b _08015CB2 + .align 2, 0 +_08015C74: .4byte gUnknown_203B1FC +_08015C78: + movs r4, 0xE + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0xB0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x27 + movs r3, 0xB0 + bl sub_800792C + str r4, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + movs r3, 0x28 + bl sub_8007A78 + str r4, [sp] + movs r0, 0x1 + movs r1, 0xAF + movs r2, 0 + movs r3, 0x28 + bl sub_8007A78 +_08015CB2: + ldr r0, _08015CC8 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x5 + bhi _08015D50 + lsls r0, 2 + ldr r1, _08015CCC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015CC8: .4byte gUnknown_203B1FC +_08015CCC: .4byte _08015CD0 + .align 2, 0 +_08015CD0: + .4byte _08015CE8 + .4byte _08015D18 + .4byte _08015CF8 + .4byte _08015D08 + .4byte _08015D28 + .4byte _08015D40 +_08015CE8: + ldr r2, _08015CF4 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015CF4: .4byte gUnknown_80DB5C0 +_08015CF8: + ldr r2, _08015D04 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D04: .4byte gUnknown_80DB5D4 +_08015D08: + ldr r2, _08015D14 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D14: .4byte gUnknown_80DB5F8 +_08015D18: + ldr r2, _08015D24 + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r1, 0x5 + b _08015D32 + .align 2, 0 +_08015D24: .4byte gUnknown_80DB61C +_08015D28: + ldr r2, _08015D3C + movs r0, 0 + str r0, [sp] + movs r0, 0x36 + movs r1, 0x2 +_08015D32: + movs r3, 0x1 + bl xxx_call_draw_string + b _08015D50 + .align 2, 0 +_08015D3C: .4byte gUnknown_80DB638 +_08015D40: + ldr r2, _08015D64 + movs r0, 0 + str r0, [sp] + movs r0, 0x30 + movs r1, 0x4 + movs r3, 0x1 + bl xxx_call_draw_string +_08015D50: + ldr r5, _08015D68 + ldr r0, [r5] + ldr r1, [r0] + cmp r1, 0x4 + beq _08015D6C + cmp r1, 0x4 + bcc _08015D88 + cmp r1, 0x5 + beq _08015D7A + b _08015DFE + .align 2, 0 +_08015D64: .4byte gUnknown_80DB638 +_08015D68: .4byte gUnknown_203B1FC +_08015D6C: + adds r0, 0xF8 + ldr r0, [r0] + movs r1, 0x1 + movs r2, 0 + bl sub_8015E10 + b _08015DFE +_08015D7A: + adds r0, 0xF8 + ldr r0, [r0] + movs r1, 0x1 + movs r2, 0 + bl sub_8015EB4 + b _08015DFE +_08015D88: + bl sub_8016028 + adds r3, r0, 0 + movs r0, 0x4 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x26 + movs r2, 0x21 + bl sub_80078A4 + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0xF8 + ldr r0, [r0] + ldrb r1, [r1, 0x1B] + bl sub_8015FEC + adds r4, r0, 0 + bl sub_8016028 + cmp r4, r0 + ble _08015DC0 + ldr r1, _08015DBC + ldr r0, [r5] + b _08015DD0 + .align 2, 0 +_08015DBC: .4byte gUnknown_80DB654 +_08015DC0: + bl sub_8015F44 + ldr r2, [r5] + ldrb r1, [r2, 0x1B] + cmp r0, r1 + bne _08015DE0 + ldr r1, _08015DDC + adds r0, r2, 0 +_08015DD0: + adds r0, 0xF8 + ldr r2, [r0] + add r0, sp, 0x4 + bl sprintfStatic + b _08015DEE + .align 2, 0 +_08015DDC: .4byte gUnknown_80DB65C +_08015DE0: + ldr r1, _08015E0C + adds r0, r2, 0 + adds r0, 0xF8 + ldr r2, [r0] + add r0, sp, 0x4 + bl sprintfStatic +_08015DEE: + movs r0, 0 + str r0, [sp] + movs r0, 0x26 + movs r1, 0x16 + add r2, sp, 0x4 + movs r3, 0x1 + bl xxx_call_draw_string +_08015DFE: + movs r0, 0x1 + bl sub_80073E0 + add sp, 0x54 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08015E0C: .4byte gUnknown_80DB664 + thumb_func_end sub_8015C1C + + thumb_func_start sub_8015E10 +sub_8015E10: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r7, r1, 0 + lsls r2, 16 + asrs r6, r2, 16 + ldr r5, _08015EB0 + movs r4, 0x35 +_08015E24: + movs r0, 0 + ldrsh r1, [r5, r0] + movs r0, 0x2 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + adds r0, 0xB + adds r2, r0 + movs r0, 0x5 + str r0, [sp] + adds r0, r7, 0 + movs r3, 0xB + bl sub_80078A4 + adds r5, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _08015E24 + movs r4, 0 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0 + beq _08015EA4 + mov r5, r8 +_08015E52: + movs r3, 0x7 + cmp r4, 0x4 + ble _08015E7E + movs r3, 0x6 + cmp r4, 0xC + ble _08015E7E + movs r3, 0x7 + cmp r4, 0x11 + ble _08015E7E + cmp r4, 0x16 + ble _08015E7E + movs r3, 0x6 + cmp r4, 0x1E + ble _08015E7E + movs r3, 0x7 + cmp r4, 0x23 + ble _08015E7E + cmp r4, 0x28 + ble _08015E7E + cmp r4, 0x30 + bgt _08015E7E + movs r3, 0x6 +_08015E7E: + ldr r0, _08015EB0 + lsls r1, r4, 2 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + adds r1, r6 + ldrb r2, [r5] + str r7, [sp] + bl sub_8012C60 + adds r5, 0x1 + adds r4, 0x1 + cmp r4, 0x35 + bgt _08015EA4 + ldrb r0, [r5] + cmp r0, 0 + bne _08015E52 +_08015EA4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015EB0: .4byte gUnknown_80DAFC0 + thumb_func_end sub_8015E10 + + thumb_func_start sub_8015EB4 +sub_8015EB4: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r7, r1, 0 + lsls r2, 16 + asrs r6, r2, 16 + ldr r5, _08015F40 + movs r4, 0x17 +_08015EC8: + movs r0, 0 + ldrsh r1, [r5, r0] + movs r0, 0x2 + ldrsh r2, [r5, r0] + adds r0, r6, 0 + adds r0, 0xB + adds r2, r0 + movs r0, 0x5 + str r0, [sp] + adds r0, r7, 0 + movs r3, 0xC + bl sub_80078A4 + adds r5, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _08015EC8 + movs r4, 0 + mov r1, r8 + ldrb r0, [r1] + cmp r0, 0 + beq _08015F34 + mov r5, r8 +_08015EF6: + movs r3, 0x7 + cmp r4, 0x3 + ble _08015F0E + movs r3, 0x6 + cmp r4, 0x7 + ble _08015F0E + movs r3, 0x7 + cmp r4, 0xF + ble _08015F0E + cmp r4, 0x13 + bgt _08015F0E + movs r3, 0x6 +_08015F0E: + ldr r0, _08015F40 + lsls r1, r4, 2 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + adds r1, r6 + ldrb r2, [r5] + str r7, [sp] + bl sub_8012C60 + adds r5, 0x1 + adds r4, 0x1 + cmp r4, 0x17 + bgt _08015F34 + ldrb r0, [r5] + cmp r0, 0 + bne _08015EF6 +_08015F34: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08015F40: .4byte gUnknown_80DB098 + thumb_func_end sub_8015EB4 + + thumb_func_start sub_8015F44 +sub_8015F44: + push {r4,lr} + movs r2, 0 + ldr r0, _08015F78 + ldr r0, [r0] + ldrb r4, [r0, 0x1B] + cmp r2, r4 + bge _08015F7C + adds r3, r0, 0 + adds r3, 0xF8 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, 0 + beq _08015F7C + movs r2, 0x1 + movs r1, 0x1 +_08015F62: + cmp r1, r4 + bge _08015F7C + ldr r0, [r3] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08015F7C + adds r2, r1, 0x1 + adds r1, r2, 0 + b _08015F62 + .align 2, 0 +_08015F78: .4byte gUnknown_203B1FC +_08015F7C: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8015F44 + + thumb_func_start sub_8015F84 +sub_8015F84: + push {r4-r7,lr} + movs r6, 0 + movs r5, 0 + ldr r3, _08015FBC + ldr r0, [r3] + ldrb r0, [r0, 0x1B] + cmp r5, r0 + bge _08015FE4 + adds r7, r3, 0 +_08015F96: + ldr r1, [r7] + lsls r4, r5, 1 + adds r0, r1, 0 + adds r0, 0x1E + adds r0, r4 + strh r6, [r0] + adds r0, r1, 0 + adds r0, 0xF8 + ldr r0, [r0] + adds r2, r0, r5 + ldrb r0, [r2] + cmp r0, 0 + bne _08015FC0 + adds r0, r1, 0 + adds r0, 0x8A + adds r0, r4 + movs r1, 0x8 + strh r1, [r0] + b _08015FE4 + .align 2, 0 +_08015FBC: .4byte gUnknown_203B1FC +_08015FC0: + ldrb r0, [r2] + bl ReturnIntFromChar2 + bl GetCharacter + ldr r3, [r7] + adds r1, r3, 0 + adds r1, 0x8A + adds r1, r4 + ldrh r2, [r0, 0x6] + strh r2, [r1] + movs r1, 0x6 + ldrsh r0, [r0, r1] + adds r6, r0 + adds r5, 0x1 + ldrb r3, [r3, 0x1B] + cmp r5, r3 + blt _08015F96 +_08015FE4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8015F84 + + .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index 298c0018f..04ed30945 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -90,6 +90,8 @@ SECTIONS { src/code_8012A18.o(.text); src/more_input.o(.text); asm/code_8012A18.o(.text); + src/menu_input.o(.text); + asm/code_80130A8.o(.text); src/code_8012A18_1.o(.text); src/felicity_bank.o(.text); asm/felicity_bank.o(.text); diff --git a/src/menu_input.c b/src/menu_input.c new file mode 100644 index 000000000..39c7f2375 --- /dev/null +++ b/src/menu_input.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "menu.h" + +extern void PlayMenuSoundEffect(u32); +extern s32 GetKeyPress(u32 *); +extern u32 sub_80137A8(u32 *); +extern void sub_8012EBC(void *); + +u8 sub_80130A8(struct MenuStruct *param_1) { + int keyPress; + int index; + int menuAction; + u8 *ptr; + u32 unused; // needed for matching + struct MenuItem *menuItem; + + ptr = ¶m_1->unk4C; + if (*ptr != 0) { + keyPress = GetKeyPress(¶m_1->unk14); + + switch(keyPress) + { + // A_BUTTON + case 1: + index = sub_80137A8(¶m_1->unk14); + menuItem = ¶m_1->menuItems[index]; + param_1->menuAction = menuItem->menuAction; + unused = 0; + *ptr = 0; + param_1->unk38 = 0; + PlayMenuSoundEffect(0); + break; + // B_BUTTON + case 2: + if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) { + param_1->menuAction = menuAction; + unused = 0; + *ptr = 0; + PlayMenuSoundEffect(0); + } + break; + } + } + sub_8012EBC(param_1); + return param_1->unk4C; +} + +bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction){ + if(param_1->unk4C != 0){ + return TRUE; + } + if (menuAction != NULL){ + *menuAction = param_1->menuAction; + } + return FALSE; +} From 4b666d8421f71bbc9b65782fa08603cec6b395f6 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 13 Feb 2023 21:58:39 -0800 Subject: [PATCH 09/21] jiang with the classic and saves the day --- asm/code_8012A18.s | 108 --------------------------------------------- src/menu_input.c | 61 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 108 deletions(-) diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index d06b5327a..e553b3afc 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -566,112 +566,4 @@ _08012FC8: bx r0 thumb_func_end sub_8012EBC - thumb_func_start sub_8012FD8 -sub_8012FD8: - push {r4-r7,lr} - adds r4, r0, 0 - movs r0, 0x2C - ldrsh r7, [r4, r0] - adds r6, r4, 0 - adds r6, 0x4C - ldrb r0, [r6] - cmp r0, 0 - beq _08013094 - adds r5, r4, 0 - adds r5, 0x14 - adds r0, r5, 0 - bl GetKeyPress - cmp r0, 0x2 - beq _08013078 - cmp r0, 0x2 - bgt _08013002 - cmp r0, 0x1 - beq _08013028 - b _08013094 -_08013002: - cmp r0, 0x7 - beq _08013012 - cmp r0, 0x8 - bne _08013094 - adds r0, r5, 0 - bl MoveMenuCursorDown - b _08013018 -_08013012: - adds r0, r5, 0 - bl MoveMenuCursorUp -_08013018: - movs r1, 0x2C - ldrsh r0, [r4, r1] - cmp r7, r0 - beq _08013094 - movs r0, 0x3 - bl PlayMenuSoundEffect - b _08013094 -_08013028: - adds r0, r5, 0 - bl sub_80137A8 - adds r2, r0, 0 - lsls r1, r2, 3 - ldr r0, [r4, 0x4] - adds r0, r1 - ldr r3, [r0, 0x4] - cmp r3, 0 - blt _08013068 - ldr r1, [r4, 0xC] - cmp r1, 0 - beq _0801304C - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x1 - beq _08013068 -_0801304C: - str r3, [r4, 0x48] - adds r1, r4, 0 - adds r1, 0x4C - movs r0, 0 - strb r0, [r1] - strh r0, [r4, 0x38] - ldr r1, [r4, 0xC] - cmp r1, 0 - beq _08013070 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x2 - bne _08013070 -_08013068: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _08013094 -_08013070: - movs r0, 0 - bl PlayMenuSoundEffect - b _08013094 -_08013078: - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldr r1, [r4, 0x4] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0, 0x4] - cmp r0, 0 - blt _08013094 - str r0, [r4, 0x48] - movs r0, 0 - strb r0, [r6] - movs r0, 0x1 - bl PlayMenuSoundEffect -_08013094: - adds r0, r4, 0 - bl sub_8012EBC - adds r0, r4, 0 - adds r0, 0x4C - ldrb r0, [r0] - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8012FD8 - - .align 2, 0 @ Don't pad with nop. diff --git a/src/menu_input.c b/src/menu_input.c index 39c7f2375..787f3ff6f 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -5,6 +5,67 @@ extern void PlayMenuSoundEffect(u32); extern s32 GetKeyPress(u32 *); extern u32 sub_80137A8(u32 *); extern void sub_8012EBC(void *); +void MoveMenuCursorUp(u32 *); +void MoveMenuCursorDown(u32 *); + +u8 sub_8012FD8(struct MenuStruct *param_1) { + u32 sVar1; + int index; + struct MenuItem *item; + + sVar1 = param_1->menuIndex; + if (param_1->unk4C != 0) { + switch(GetKeyPress(¶m_1->unk14)) + { + // DPAD DOWN + case 8: + MoveMenuCursorDown(¶m_1->unk14); + if (sVar1 != param_1->menuIndex) { + PlayMenuSoundEffect(3); + } + break; + // DPAD UP + case 7: + MoveMenuCursorUp(¶m_1->unk14); + if (sVar1 != param_1->menuIndex) { + PlayMenuSoundEffect(3); + } + break; + // A BUTTON + case 1: + index = sub_80137A8(¶m_1->unk14); + item = ¶m_1->menuItems[index]; + if ((-1 < item->menuAction) && + ((param_1->unkC == 0x0 || (param_1->unkC[index] != 1)))) { + param_1->menuAction = item->menuAction; + ++param_1; --param_1; + param_1->unk4C = 0; + param_1->unk38 = 0; + } + else + { + PlayMenuSoundEffect(2); + break; + } + if ((param_1->unkC != 0x0) && (param_1->unkC[index] == 2)) { + PlayMenuSoundEffect(2); + } + else + PlayMenuSoundEffect(0); + break; + // B BUTTON + case 2: + if (-1 < param_1->menuItems[param_1->unk2E].menuAction) { + param_1->menuAction = param_1->menuItems[param_1->unk2E].menuAction; + param_1->unk4C = 0; + PlayMenuSoundEffect(1); + } + break; + } + } + sub_8012EBC(param_1); + return param_1->unk4C; +} u8 sub_80130A8(struct MenuStruct *param_1) { int keyPress; From 651630106068dafea6a35ee447b8a0ab2444f2e4 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 16 Feb 2023 07:52:11 -0800 Subject: [PATCH 10/21] more menu input work and constant-ify key press functions --- asm/code_8012A18.s | 160 -------------------------------------- include/constants/input.h | 25 ++++++ include/menu.h | 9 ++- include/text.h | 4 +- src/adventure_log.c | 6 +- src/code_8012A18_1.c | 14 ++-- src/code_801D760.c | 5 +- src/code_801EE10.c | 5 +- src/code_8023144.c | 7 +- src/kecleon_items_1.c | 26 +++---- src/makuhita_dojo_1.c | 5 +- src/menu_input.c | 141 +++++++++++++++++++++++++-------- src/more_input.c | 41 +++++----- src/personality_test.c | 8 +- src/wonder_mail_2_mid.c | 7 +- src/wonder_mail_3_mid.c | 5 +- 16 files changed, 210 insertions(+), 258 deletions(-) create mode 100644 include/constants/input.h diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index e553b3afc..f534b9260 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -406,164 +406,4 @@ _08012E72: _08012EA0: .4byte gUnknown_80D47B8 thumb_func_end sub_8012E04 - thumb_func_start sub_8012EA4 -sub_8012EA4: - push {lr} - adds r2, r0, 0 - adds r2, 0x4C - strb r1, [r2] - adds r2, 0x1 - movs r1, 0x1 - strb r1, [r2] - bl sub_8012EBC - pop {r0} - bx r0 - thumb_func_end sub_8012EA4 - - thumb_func_start sub_8012EBC -sub_8012EBC: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x164 - adds r5, r0, 0 - movs r0, 0x4D - adds r0, r5 - mov r8, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _08012F9E - ldr r0, [r5, 0x10] - bl sub_80073B8 - ldr r2, [r5, 0x10] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 3 - ldr r1, _08012F54 - adds r0, r1 - ldr r0, [r0, 0xC] - cmp r0, 0x6 - bne _08012F24 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - mov r4, sp - adds r4, r0 - adds r4, 0x4 - add r0, sp, 0x4 - bl sub_8006518 - ldr r0, [r5] - bl sub_8008ED0 - adds r1, r0, 0 - ldr r0, [r4, 0x14] - ldrb r0, [r0, 0x2] - lsls r0, 3 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0x8 - ldr r2, [r5] - ldr r3, [r5, 0x10] - movs r1, 0 - str r1, [sp] - bl xxx_format_and_draw -_08012F24: - ldr r7, [r5, 0x8] - ldr r4, [r5, 0x4] - ldr r6, [r5, 0xC] - movs r1, 0 - mov r9, r1 - ldr r0, [r4] - mov r10, r8 - cmp r0, 0 - beq _08012F92 - add r0, sp, 0x64 - mov r8, r0 -_08012F3A: - ldr r3, [r4] - ldrb r0, [r3] - cmp r0, 0x2A - bne _08012F44 - adds r3, 0x1 -_08012F44: - cmp r6, 0 - beq _08012F58 - ldrh r0, [r6] - lsls r0, 2 - adds r0, r7 - ldr r2, [r0] - adds r6, 0x2 - b _08012F64 - .align 2, 0 -_08012F54: .4byte gUnknown_2027370 -_08012F58: - ldr r0, [r4, 0x4] - cmp r0, 0 - bge _08012F62 - ldr r2, [r7, 0x4] - b _08012F64 -_08012F62: - ldr r2, [r7] -_08012F64: - mov r0, r8 - ldr r1, _08012FBC - bl sprintfStatic - adds r0, r5, 0 - adds r0, 0x14 - mov r1, r9 - bl sub_8013800 - adds r1, r0, 0 - ldr r3, [r5, 0x10] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - mov r2, r8 - bl xxx_format_and_draw - adds r4, 0x8 - movs r1, 0x1 - add r9, r1 - ldr r0, [r4] - cmp r0, 0 - bne _08012F3A -_08012F92: - ldr r0, [r5, 0x10] - bl sub_80073E0 - movs r0, 0 - mov r1, r10 - strb r0, [r1] -_08012F9E: - adds r0, r5, 0 - adds r0, 0x4E - ldrb r0, [r0] - cmp r0, 0 - beq _08012FC8 - adds r0, r5, 0 - adds r0, 0x4C - ldrb r0, [r0] - cmp r0, 0 - beq _08012FC0 - adds r0, r5, 0 - adds r0, 0x14 - bl AddMenuCursorSprite - b _08012FC8 - .align 2, 0 -_08012FBC: .4byte gUnknown_80D4828 -_08012FC0: - adds r0, r5, 0 - adds r0, 0x14 - bl sub_8013660 -_08012FC8: - add sp, 0x164 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8012EBC - .align 2, 0 @ Don't pad with nop. diff --git a/include/constants/input.h b/include/constants/input.h new file mode 100644 index 000000000..e7d42ad79 --- /dev/null +++ b/include/constants/input.h @@ -0,0 +1,25 @@ +#ifndef GUARD_CONSTANTS_INPUT_H +#define GUARD_CONSTANTS_INPUT_H + +#define INPUT_NONE 0 +#define INPUT_A_BUTTON 1 +#define INPUT_B_BUTTON 2 +#define INPUT_SELECT_BUTTON 3 +#define INPUT_START_BUTTON 4 +#define INPUT_L_BUTTON 5 +#define INPUT_R_BUTTON 6 +#define INPUT_DPAD_UP 7 +#define INPUT_DPAD_DOWN 8 +#define INPUT_DPAD_LEFT 9 +#define INPUT_DPAD_RIGHT 10 + +// When R button is pressed in combination with other keys +#define INPUT_R_A_BUTTONS 11 +#define INPUT_R_DPAD_UP_BUTTONS 12 +#define INPUT_R_DPAD_DOWN_BUTTONS 13 +#define INPUT_R_DPAD_LEFT_BUTTONS 14 +#define INPUT_R_DPAD_RIGHT_BUTTONS 15 + + +#endif // GUARD_CONSTANTS_INPUT_H + diff --git a/include/menu.h b/include/menu.h index 965b334db..a53a5c598 100644 --- a/include/menu.h +++ b/include/menu.h @@ -10,11 +10,11 @@ struct MenuItem struct MenuStruct { // size: 0x50 - u32 unk0; + u8 *unk0; /* 0x4 */ struct MenuItem *menuItems; - u32 unk8; + u32 *unk8; u16 *unkC; - s32 fill10; + /* 0x10 */ s32 index; /* 0x14 */ u32 unk14; u8 fill18[0x2C - 0x18]; /* 0x2C */ s16 menuIndex; @@ -22,9 +22,10 @@ struct MenuStruct u8 fill30[0x38 - 0x30]; u16 unk38; u8 fill3A[0x48 - 0x3A]; - s32 menuAction; + /* 0x48 */ s32 menuAction; u8 unk4C; u8 unk4D; + u8 unk4E; }; #endif // GUARD_MENU_H diff --git a/include/text.h b/include/text.h index eaf2ffc1b..6027d23d8 100644 --- a/include/text.h +++ b/include/text.h @@ -6,7 +6,9 @@ struct UnkTextStruct1 { u16 unk04; u8 fill06[2]; u16 unk08; - u8 fill04[0x3c]; + u16 fillA; + u32 unkC; + u8 fill04[0x36]; u8 unk46; }; diff --git a/src/adventure_log.c b/src/adventure_log.c index 8829b062b..546134de4 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -1,6 +1,6 @@ #include "global.h" +#include "constants/input.h" #include "input.h" -#include "gba/io_reg.h" #include "memory.h" #include "text.h" @@ -94,10 +94,10 @@ u32 HandleAdventureLogInput(u8 param_1) else { switch(GetKeyPress(gAdventureLog)) { - case B_BUTTON: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case A_BUTTON: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; default: diff --git a/src/code_8012A18_1.c b/src/code_8012A18_1.c index d654e5761..6e7104ccc 100644 --- a/src/code_8012A18_1.c +++ b/src/code_8012A18_1.c @@ -67,10 +67,10 @@ s32 sub_8015FEC(u8 *buffer, s32 size) { struct unkChar *iVar2; s32 currLength; - s32 iVar4; + s32 length; u8 *bufferPtr; - iVar4 = 0; + length = 0; currLength = 0; if(currLength < size && *buffer != '\0') @@ -78,12 +78,12 @@ s32 sub_8015FEC(u8 *buffer, s32 size) bufferPtr = buffer; // Had to have another variable to match.. do { iVar2 = GetCharacter(ReturnIntFromChar2(*bufferPtr)); - iVar4 += iVar2->unk6; + length += iVar2->unk6; bufferPtr++; currLength++; } while (currLength < size && *bufferPtr != '\0'); } - return iVar4; + return length; } s32 sub_8016028(void) @@ -205,7 +205,7 @@ void CreateConfirmNameMenu(void) void sub_80161F8(void) { - s32 iVar2; + s32 length; s32 maxLength; if (sub_80154F0() == 3) { @@ -214,9 +214,9 @@ void sub_80161F8(void) sub_80160F4(3); } else{ - iVar2 = sub_8015FEC(gUnknown_203B200->pokeName, POKEMON_NAME_LENGTH); + length = sub_8015FEC(gUnknown_203B200->pokeName, POKEMON_NAME_LENGTH); maxLength = sub_8016028(); // returns 60 - if (iVar2 > maxLength) { + if (length > maxLength) { sub_80160F4(2); } else { diff --git a/src/code_801D760.c b/src/code_801D760.c index 61d30d501..33ae1b37f 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -1,6 +1,7 @@ #include "global.h" #include "friend_area.h" #include "constants/friend_area.h" +#include "constants/input.h" #include "file_system.h" #include "item.h" #include "team_inventory.h" @@ -394,10 +395,10 @@ u32 sub_801DA78(void) { switch(GetKeyPress(gUnknown_203B258)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: return 3; default: if(sub_80138B8(gUnknown_203B258, 1) != 0) diff --git a/src/code_801EE10.c b/src/code_801EE10.c index e62e05e71..ec3f969d6 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/input.h" #include "code_800D090.h" #include "pokemon.h" #include "input.h" @@ -244,10 +245,10 @@ u8 sub_80244E4(void) { switch(GetKeyPress(gUnknown_203B2AC)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; default: diff --git a/src/code_8023144.c b/src/code_8023144.c index 735b328a0..afb1745c1 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -1,3 +1,4 @@ +#include "constants/input.h" #include "global.h" #include "constants/iq_skill.h" #include "memory.h" @@ -299,13 +300,13 @@ u8 sub_8023278(u8 param_1) } switch(GetKeyPress(&gUnknown_3001B5C->unk35C)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; - case 3: + case INPUT_SELECT_BUTTON: PlayMenuSoundEffect(5); if (temp = gUnknown_3001B5C->unk4, iVar3 = 1, temp < 2) { iVar3 = temp + 1; diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index ea9d3623c..d08ccac6a 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/input.h" #include "file_system.h" #include "memory.h" #include "pokemon.h" @@ -527,10 +528,10 @@ u32 sub_8019EDC(u8 r0) { switch(GetKeyPress(gUnknown_203B214)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: item = GetKecleonShopItem(sub_8019FB0()); slot.id = item->id; slot.quantity = item->quantity; @@ -543,7 +544,7 @@ u32 sub_8019EDC(u8 r0) PlayMenuSoundEffect(0); } return 3; - case 4: + case INPUT_START_BUTTON: PlayMenuSoundEffect(4); return 4; default: @@ -737,13 +738,12 @@ u32 sub_801A2A8(u8 r0) { switch(GetKeyPress(gUnknown_203B21C)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: item = GetKecleonWareItem(sub_801A37C()); - // NOTE: needs seperate vars to match slot.id = item->id; slot.quantity = item->quantity; @@ -756,7 +756,7 @@ u32 sub_801A2A8(u8 r0) PlayMenuSoundEffect(0); } return 3; - case 4: + case INPUT_START_BUTTON: PlayMenuSoundEffect(4); return 4; default: @@ -958,10 +958,10 @@ u32 sub_801A6E8(u8 param_1) return 0; } switch(GetKeyPress(&gUnknown_203B224->unk54)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: switch(gUnknown_203B224->unk0) { case 0: case 1: @@ -989,11 +989,11 @@ u32 sub_801A6E8(u8 param_1) break; } return 3; - case 4: + case INPUT_START_BUTTON: PlayMenuSoundEffect(4); return 4; - case 5: - case 6: + case INPUT_L_BUTTON: + case INPUT_R_BUTTON: if (gUnknown_203B224->unk0 != 3) goto _0801A87C; index = sub_801A8AC(); if ((gUnknown_203B224->unk4[index] != 0) || (sub_801ADA0(index) != 0)) { @@ -1008,7 +1008,7 @@ u32 sub_801A6E8(u8 param_1) PlayMenuSoundEffect(2); goto _0801A87C; } - case 3: + case INPUT_SELECT_BUTTON: if (gUnknown_203B224->unk0 != 2) { PlayMenuSoundEffect(5); Kecleon_SortItems(); diff --git a/src/makuhita_dojo_1.c b/src/makuhita_dojo_1.c index 8a849f9f9..e0fb0e1b0 100644 --- a/src/makuhita_dojo_1.c +++ b/src/makuhita_dojo_1.c @@ -1,6 +1,7 @@ #include "global.h" #include "constants/colors.h" #include "constants/dungeon.h" +#include "constants/input.h" #include "code_800D090.h" #include "dungeon.h" #include "input.h" @@ -215,10 +216,10 @@ u32 sub_80303AC(u8 param_1) } switch(GetKeyPress(&gUnknown_203B31C->unk30)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; default: diff --git a/src/menu_input.c b/src/menu_input.c index 787f3ff6f..c0149dec4 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -1,42 +1,127 @@ #include "global.h" +#include "constants/input.h" #include "menu.h" +#include "text.h" + +extern struct UnkTextStruct1 gUnknown_2027370[4]; +extern u8 gUnknown_80D4828[]; extern void PlayMenuSoundEffect(u32); extern s32 GetKeyPress(u32 *); extern u32 sub_80137A8(u32 *); -extern void sub_8012EBC(void *); void MoveMenuCursorUp(u32 *); void MoveMenuCursorDown(u32 *); +extern void sub_80073B8(u32); +extern s32 sub_8008ED0(u8 *); +extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); +void sprintfStatic(char *buffer, const char *text, ...); +extern s32 sub_8013800(u32 *, s32); +extern void sub_80073E0(u32); +extern void sub_8013660(u32 *); +void AddMenuCursorSprite(void *); + +void sub_8012EBC(struct MenuStruct *param_1); + +void sub_8012EA4(struct MenuStruct *param_1, u32 r1) +{ + param_1->unk4C = r1; + param_1->unk4D = 1; + sub_8012EBC(param_1); +} + +void sub_8012EBC(struct MenuStruct *param_1) +{ + s32 x; + s32 y; + u32 uVar1; + const u8 *textPtr; + struct MenuItem *menuItemsPtr; + u16 *_puVar2; + u32 *puVar3; + s32 counter; + s32 index; + struct UnkTextStruct2 textStack[4]; + u8 buffer [256]; + struct UnkTextStruct1 *ptr_text; + struct UnkTextStruct2 *ptr_text2; + + if (param_1->unk4D != 0) { + sub_80073B8(param_1->index); + index = param_1->index; + ptr_text = &gUnknown_2027370[index]; + if ((ptr_text->unkC) == 6) { + ptr_text2 = &textStack[index]; + sub_8006518(textStack); + x = sub_8008ED0(param_1->unk0); + xxx_format_and_draw((((ptr_text2->unk14[2]) * 8 - x) /2) + 8, + 0,*(u8 **)param_1, param_1->index, 0); + } + puVar3 = param_1->unk8; + menuItemsPtr = param_1->menuItems; + _puVar2 = param_1->unkC; + counter = 0; + if (menuItemsPtr->text != NULL) { + do { + textPtr = menuItemsPtr->text; + if (*textPtr == '*') { + textPtr++; + } + if (_puVar2 != NULL) { + uVar1 = puVar3[*_puVar2]; + _puVar2++; + } + else if (menuItemsPtr->menuAction < 0) { + uVar1 = puVar3[1]; + } + else { + uVar1 = puVar3[0]; + } + sprintfStatic(buffer,gUnknown_80D4828,uVar1,textPtr); + y = sub_8013800(¶m_1->unk14,counter); + xxx_format_and_draw(8,y,buffer,param_1->index,0); + menuItemsPtr++; + counter++; + } while (menuItemsPtr->text != NULL); + } + sub_80073E0(param_1->index); + param_1->unk4D = 0; + } + if (param_1->unk4E != 0) { + if (param_1->unk4C != 0) { + AddMenuCursorSprite(¶m_1->unk14); + } + else { + sub_8013660(¶m_1->unk14); + } + } +} u8 sub_8012FD8(struct MenuStruct *param_1) { - u32 sVar1; - int index; + u32 prevMenuIndex; + s32 index; struct MenuItem *item; - sVar1 = param_1->menuIndex; + prevMenuIndex = param_1->menuIndex; if (param_1->unk4C != 0) { switch(GetKeyPress(¶m_1->unk14)) { - // DPAD DOWN - case 8: + case INPUT_DPAD_DOWN: MoveMenuCursorDown(¶m_1->unk14); - if (sVar1 != param_1->menuIndex) { + if (prevMenuIndex != param_1->menuIndex) { PlayMenuSoundEffect(3); } break; - // DPAD UP - case 7: + case INPUT_DPAD_UP: MoveMenuCursorUp(¶m_1->unk14); - if (sVar1 != param_1->menuIndex) { + if (prevMenuIndex != param_1->menuIndex) { PlayMenuSoundEffect(3); } break; - // A BUTTON - case 1: + case INPUT_A_BUTTON: index = sub_80137A8(¶m_1->unk14); item = ¶m_1->menuItems[index]; if ((-1 < item->menuAction) && - ((param_1->unkC == 0x0 || (param_1->unkC[index] != 1)))) { + ((param_1->unkC == NULL || (param_1->unkC[index] != 1)))) { param_1->menuAction = item->menuAction; ++param_1; --param_1; param_1->unk4C = 0; @@ -47,14 +132,13 @@ u8 sub_8012FD8(struct MenuStruct *param_1) { PlayMenuSoundEffect(2); break; } - if ((param_1->unkC != 0x0) && (param_1->unkC[index] == 2)) { + if ((param_1->unkC != NULL) && (param_1->unkC[index] == 2)) { PlayMenuSoundEffect(2); } else PlayMenuSoundEffect(0); break; - // B BUTTON - case 2: + case INPUT_B_BUTTON: if (-1 < param_1->menuItems[param_1->unk2E].menuAction) { param_1->menuAction = param_1->menuItems[param_1->unk2E].menuAction; param_1->unk4C = 0; @@ -68,35 +152,26 @@ u8 sub_8012FD8(struct MenuStruct *param_1) { } u8 sub_80130A8(struct MenuStruct *param_1) { - int keyPress; - int index; - int menuAction; - u8 *ptr; - u32 unused; // needed for matching + s32 index; + s32 menuAction; struct MenuItem *menuItem; - ptr = ¶m_1->unk4C; - if (*ptr != 0) { - keyPress = GetKeyPress(¶m_1->unk14); + if (param_1->unk4C != 0) { - switch(keyPress) + switch(GetKeyPress(¶m_1->unk14)) { - // A_BUTTON - case 1: + case INPUT_A_BUTTON: index = sub_80137A8(¶m_1->unk14); menuItem = ¶m_1->menuItems[index]; param_1->menuAction = menuItem->menuAction; - unused = 0; - *ptr = 0; + param_1->unk4C = 0; param_1->unk38 = 0; PlayMenuSoundEffect(0); break; - // B_BUTTON - case 2: + case INPUT_B_BUTTON: if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) { param_1->menuAction = menuAction; - unused = 0; - *ptr = 0; + param_1->unk4C = 0; PlayMenuSoundEffect(0); } break; diff --git a/src/more_input.c b/src/more_input.c index cd8dd5b4e..4d02d4bed 100644 --- a/src/more_input.c +++ b/src/more_input.c @@ -1,3 +1,4 @@ +#include "constants/input.h" #include "global.h" #include "input.h" @@ -34,19 +35,19 @@ u32 GetKeyPress(struct UnkInputStruct *r0) { if(r0->a_button != 0) { - return 1; + return INPUT_A_BUTTON; } if(r0->b_button != 0) { - return 2; + return INPUT_B_BUTTON; } if(r0->dpad_left != 0) { - return 9; + return INPUT_DPAD_LEFT; } if(r0->dpad_right != 0) { - return 10; + return INPUT_DPAD_RIGHT; } } return sub_8012AE8(); @@ -56,54 +57,54 @@ u32 sub_8012AE8(void) { if ((gRealInputs.held & R_BUTTON) != 0) { if ((gRealInputs.pressed & A_BUTTON) != 0) { - return 11; + return INPUT_R_A_BUTTONS; } if ((gRealInputs.repeated & DPAD_UP) != 0) { - return 12; + return INPUT_R_DPAD_UP_BUTTONS; } if ((gRealInputs.repeated & DPAD_DOWN) != 0) { - return 13; + return INPUT_R_DPAD_DOWN_BUTTONS; } if ((gRealInputs.repeated & DPAD_LEFT) != 0) { - return 14; + return INPUT_R_DPAD_LEFT_BUTTONS; } if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { - return 15; + return INPUT_R_DPAD_RIGHT_BUTTONS; } if ((gRealInputs.repeated & R_BUTTON) != 0) { - return 6; + return INPUT_R_BUTTON; } } else { if ((gRealInputs.pressed & A_BUTTON) != 0) { - return 1; + return INPUT_A_BUTTON; } if ((gRealInputs.pressed & B_BUTTON) != 0) { - return 2; + return INPUT_B_BUTTON; } if ((gRealInputs.pressed & SELECT_BUTTON) != 0) { - return 3; + return INPUT_SELECT_BUTTON; } if ((gRealInputs.pressed & START_BUTTON) != 0) { - return 4; + return INPUT_START_BUTTON; } if ((gRealInputs.repeated & DPAD_UP) != 0) { - return 7; + return INPUT_DPAD_UP; } if ((gRealInputs.repeated & DPAD_DOWN) != 0) { - return 8; + return INPUT_DPAD_DOWN; } if ((gRealInputs.repeated & DPAD_LEFT) != 0) { - return 9; + return INPUT_DPAD_LEFT; } if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { - return 10; + return INPUT_DPAD_RIGHT; } if ((gRealInputs.repeated & L_BUTTON) != 0) { - return 5; + return INPUT_L_BUTTON; } } - return 0; + return INPUT_NONE; } diff --git a/src/personality_test.c b/src/personality_test.c index 870a28a92..8937fb22d 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -1,6 +1,8 @@ #include "global.h" #include "personality_test.h" #include "constants/emotions.h" +#include "constants/input.h" +#include "constants/type.h" #include "random.h" #include "file_system.h" #include "pokemon.h" @@ -801,7 +803,7 @@ u16 HandlePartnerSelectionInput(void) partnerID = gUnknown_203B404->currPartnerSelection; gUnknown_203B404->unk16 = 0; - if (GetKeyPress(&gUnknown_203B404->unk18) == A_BUTTON) { + if (GetKeyPress(&gUnknown_203B404->unk18) == INPUT_A_BUTTON) { PlayMenuSoundEffect(0); return gUnknown_203B404->PartnerArray[gUnknown_203B404->currPartnerSelection]; } @@ -1034,8 +1036,8 @@ s32 GetValidPartners(void) CurrentPartnerID = gPartners[counter]; currentPartnerTypes[0] = GetPokemonType(CurrentPartnerID, 0); currentPartnerTypes[1] = GetPokemonType(CurrentPartnerID, 1); - if (((currentPartnerTypes[0] == '\0') || ((currentPartnerTypes[0] != PlayerType[0] && (currentPartnerTypes[0] != PlayerType[1])))) - && ((currentPartnerTypes[1] == '\0' || ((currentPartnerTypes[1] != PlayerType[0] && (currentPartnerTypes[1] != PlayerType[1]))) + if (((currentPartnerTypes[0] == TYPE_NONE) || ((currentPartnerTypes[0] != PlayerType[0] && (currentPartnerTypes[0] != PlayerType[1])))) + && ((currentPartnerTypes[1] == TYPE_NONE || ((currentPartnerTypes[1] != PlayerType[0] && (currentPartnerTypes[1] != PlayerType[1]))) ))) { gUnknown_203B404->PartnerArray[ValidPartnerCounter] = CurrentPartnerID; ValidPartnerCounter++; diff --git a/src/wonder_mail_2_mid.c b/src/wonder_mail_2_mid.c index 2ab0d7a75..8b15dd368 100644 --- a/src/wonder_mail_2_mid.c +++ b/src/wonder_mail_2_mid.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/input.h" #include "constants/mailbox.h" #include "code_800D090.h" #include "input.h" @@ -196,13 +197,13 @@ u32 sub_802C1E4(u8 param_1) else { switch(GetKeyPress(&gUnknown_203B2E0->unk8)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; - case 4: + case INPUT_START_BUTTON: PlayMenuSoundEffect(4); return 4; default: diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 69acf1e96..f3ca04798 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/input.h" #include "memory.h" #include "text.h" #include "input.h" @@ -798,10 +799,10 @@ u32 sub_802F8A0(u8 r0) { switch(GetKeyPress(&gUnknown_203B314->unkBC)) { - case 2: + case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; - case 1: + case INPUT_A_BUTTON: PlayMenuSoundEffect(0); return 3; default: From 7ff740363396a2ba47431e2c292d37bc45806b8b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 17 Feb 2023 16:51:50 -0800 Subject: [PATCH 11/21] document more music --- include/dungeon_global_data.h | 2 +- src/code_8057824_1.c | 168 +++++++++++++++++----------------- src/code_8086A3C.c | 4 +- src/dungeon_music.c | 94 ++++++++++--------- src/music.c | 22 ++--- 5 files changed, 147 insertions(+), 143 deletions(-) diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index 8a18c7d73..17be84fbb 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -96,7 +96,7 @@ struct Dungeon u8 fill662[0x666 - 0x662]; /* 0x666 */ u16 windTurns; // Turns remaining before getting swept out of the dungeon. u8 fill668[0x66A - 0x668]; - u16 unk66A; + u16 bossSongIndex; u8 unk66C; u8 unk66D; /* 0x66E */ u8 unk66E; diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 3cbc3f7f0..35a3b80fb 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -392,7 +392,7 @@ extern u8 JirachiFriendAreaSearch(void); extern u8 sub_80860A8(u32); extern void sub_8049ED4(); extern void sub_8092578(u8 *buffer, u8 index, u8 r2); -extern void sub_8052D44(u8 *, struct Entity *, struct Entity *); +extern void sub_8052D44(s16 *, struct Entity *, struct Entity *); extern void sub_8097FD0(u32); extern void SetMessageArgument(u8 *, struct Entity *, u32); extern struct Entity *GetLeader(); @@ -513,7 +513,7 @@ void ZapdosReFightDialogue(void) DisplayDungeonDialogue(&gZapdosReFightDialogue_3); ZapdosScreenFlash(2); DisplayDungeonDialogue(&gZapdosReFightDialogue_4); - SetupBossFightHP(ZapdosEntity,300,0xb); + SetupBossFightHP(ZapdosEntity,300,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -541,7 +541,7 @@ void ZapdosPostStoryPreFightDialogue(void) ZapdosScreenFlash(2); DisplayDungeonDialogue(&gZapdosPostStoryPreFightDialogue_5); sub_803E708(10,0x46); - SetupBossFightHP(ZapdosEntity,300,0xb); + SetupBossFightHP(ZapdosEntity,300,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -719,7 +719,7 @@ void MoltresPreFightDialogue(void) MoltresScreenFlash2(0xb,6); DisplayDungeonDialogue(&gMoltresPreFightDialogue_12); sub_803E708(10,0x46); - SetupBossFightHP(MoltresEntity,400,0xb); + SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -762,7 +762,7 @@ void MoltresReFightDialogue(void) sub_803E708(10,0x46); DisplayDungeonDialogue(&gMoltresReFightDialogue_5); sub_803E708(10,0x46); - SetupBossFightHP(MoltresEntity,400,0xb); + SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -800,7 +800,7 @@ void MoltresPostStoryPreFightDialogue(void) MoltresScreenFlash2(0xb,6); DisplayDungeonDialogue(&gMoltresPostStoryPreFightDialogue_5); sub_803E708(10,0x46); - SetupBossFightHP(MoltresEntity,400,0xb); + SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -1147,7 +1147,7 @@ void ArticunoPreFightDialogue(void) DisplayDungeonDialogue(&gArticunoPreFightDialogue_12); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x10,0x46); - SetupBossFightHP(ArticunoEntity,0x1c2,0xb); + SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -1169,7 +1169,7 @@ void ArticunoReFightDialogue(void) DisplayDungeonDialogue(&gArticunoReFightDialogue_3); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x28,0x46); - SetupBossFightHP(ArticunoEntity,0x1c2,0xb); + SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -1205,7 +1205,7 @@ void ArticunoPostStoryPreFightDialogue(void) DisplayDungeonDialogue(&gArticunoPostStoryPreFightDialogue_5); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x28,0x46); - SetupBossFightHP(ArticunoEntity,0x1c2,0xb); + SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -1468,7 +1468,7 @@ void GroudonPreFightDialogue(void) sub_8086A54(GroudonEntity); sub_8085930(DIRECTION_NORTH); sub_8086764(); - SetupBossFightHP(GroudonEntity,500,0xb); + SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -1500,7 +1500,7 @@ void GroudonReFightDialogue(void) sub_8086A54(GroudonEntity); sub_8085930(DIRECTION_NORTH); sub_8086764(); - SetupBossFightHP(GroudonEntity,500,0xb); + SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -1528,7 +1528,7 @@ void GroudonPostStoryPreFightDialogue(void) GroudonScreenFlash(); DisplayDungeonDialogue(&gGroudonPostStoryPreFightDialogue_4); sub_803E708(10,0x46); - SetupBossFightHP(GroudonEntity,500,0xb); + SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -1672,14 +1672,14 @@ void MagmaCavernMidDialogue(void) struct Entity * PartnerEntity; struct Entity * iVar3; struct Entity * iVar4; - u8 auStack36 [4]; + s16 IDStack [2]; struct Position32 local_20; LeaderEntity = xxx_call_GetLeader(); PartnerEntity = GetPartnerEntity(); iVar3 = GetEntityFromClientType(0xb); iVar4 = GetEntityFromClientType(0xc); - sub_8052D44(auStack36,LeaderEntity,PartnerEntity); + sub_8052D44(IDStack,LeaderEntity,PartnerEntity); sub_8086448(); SpriteLookAroundEffect(PartnerEntity); // Let's see.. @@ -1970,7 +1970,7 @@ void RayquazaPreFightDialogue(void) DisplayDungeonDialogue(&gRayquazaPreFightDialogue_10); RayquazaScreenFlash(); DisplayDungeonDialogue(&gRayquazaPreFightDialogue_11); - SetupBossFightHP(RayquazaEntity,600,0x20); + SetupBossFightHP(RayquazaEntity,600,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -1994,7 +1994,7 @@ void RayquazaReFightDialogue(void) DisplayDungeonDialogue(&gRayquazaReFightDialogue_3); RayquazaScreenFlash(); DisplayDungeonDialogue(&gRayquazaReFightDialogue_4); - SetupBossFightHP(RayquazaEntity,600,0x20); + SetupBossFightHP(RayquazaEntity,600,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2020,7 +2020,7 @@ void RayquazaPostStoryPreFightDialogue(void) DisplayDungeonDialogue(&gRayquazaPostStoryPreFightDialogue_4); RayquazaScreenFlash(); DisplayDungeonDialogue(&gRayquazaPostStoryPreFightDialogue_5); - SetupBossFightHP(RayquazaEntity,600,0xb); + SetupBossFightHP(RayquazaEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -2267,7 +2267,7 @@ void MewtwoPreFightDialogue(void) MewtwoScreenFlash(); DisplayDungeonDialogue(&gMewtwoPreFightDialogue_5); sub_803E708(10,0x46); - SetupBossFightHP(MewtwoEntity,900,0x20); + SetupBossFightHP(MewtwoEntity,900,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2293,7 +2293,7 @@ void MewtwoReFightDialogue(void) DisplayDungeonDialogue(&gMewtwoReFightDialogue_3); MewtwoScreenFlash(); DisplayDungeonDialogue(&gMewtwoReFightDialogue_4); - SetupBossFightHP(MewtwoEntity,900,0x20); + SetupBossFightHP(MewtwoEntity,900,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -2406,7 +2406,7 @@ void EnteiPreFightDialogue(void) EnteiScreenFlash(); DisplayDungeonDialogue(&gEnteiPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(EnteiEntity,600,0xb); + SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2424,7 +2424,7 @@ void EnteiReFightDialogue(void) EnteiScreenFlash(); DisplayDungeonDialogue(&gEnteiReFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(EnteiEntity,600,0xb); + SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2446,7 +2446,7 @@ void EnteiPostStoryPreFightDialogue(void) EnteiScreenFlash(); DisplayDungeonDialogue(&gEnteiPostStoryPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(EnteiEntity,600,0xb); + SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -2559,7 +2559,7 @@ void RaikouPreFightDialogue(void) RaikouScreenFlash(); DisplayDungeonDialogue(&gRaikouPreFightDialogue_6); sub_803E708(10,70); - SetupBossFightHP(RaikouEntity,0x28a,0xb); + SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2579,7 +2579,7 @@ void RaikouReFightDialogue(void) RaikouScreenFlash(); DisplayDungeonDialogue(&gRaikouReFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(RaikouEntity,0x28a,0xb); + SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2602,7 +2602,7 @@ void RaikouPostStoryPreFightDialogue(void) RaikouScreenFlash(); DisplayDungeonDialogue(&gRaikouPostStoryPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(RaikouEntity,0x28a,0xb); + SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -2717,7 +2717,7 @@ void SuicunePreFightDialogue(void) SuicuneScreenFlash(); DisplayDungeonDialogue(&gSuicunePreFightDialogue_7); sub_803E708(10,70); - SetupBossFightHP(SuicuneEntity,0x28a,0xb); + SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2734,7 +2734,7 @@ void SuicuneReFightDialogue(void) SuicuneScreenFlash(); DisplayDungeonDialogue(&gSuicuneReFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(SuicuneEntity,0x28a,0xb); + SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2755,7 +2755,7 @@ void SuicunePostStoryPreFightDialogue(void) SuicuneScreenFlash(); DisplayDungeonDialogue(&gSuicunePostStoryPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(SuicuneEntity,0x28a,0xb); + SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -2898,7 +2898,7 @@ void HoOhPreFightDialogue(void) HoOhScreenFlash(); DisplayDungeonDialogue(&gHoOhPreFightDialogue_6); sub_803E708(10,70); - SetupBossFightHP(HoOhEntity,800,0x20); + SetupBossFightHP(HoOhEntity,800,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -2934,7 +2934,7 @@ void HoOhReFightDialogue(void) HoOhScreenFlash(); DisplayDungeonDialogue(&HoOhReFightDialogue_4); sub_803E708(10,70); - SetupBossFightHP(HoOhEntity,800,0x20); + SetupBossFightHP(HoOhEntity,800,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } } @@ -3071,7 +3071,7 @@ void LatiosPreFightDialogue(void) LatiosScreenFlash(); DisplayDungeonDialogue(&gLatiosPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(LatiosEntity,600,0xb); + SetupBossFightHP(LatiosEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -3090,7 +3090,7 @@ void LatiosReFightDialogue(void) LatiosScreenFlash(); DisplayDungeonDialogue(&gLatiosPreFightDialogue_3); sub_803E708(10,70); - SetupBossFightHP(LatiosEntity,600,0xb); + SetupBossFightHP(LatiosEntity,600,MUS_BOSS_BATTLE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -3207,17 +3207,17 @@ void sub_808ADCC(void) void sub_808AE54(char param_1,char param_2,u32 *param_3) { struct Entity * LeaderEntity; - u8 auStack24 [4]; - struct Item auStack20; + s16 IDStack[2]; + struct Item item; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack24,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x2E) && (param_1 == 0x17)) { sub_808B1CC(0); if (sub_8098100(0x1d) == 0) { - xxx_init_itemslot_8090A8C(&auStack20,ITEM_ROCK_PART,0); - sub_80464C8(GetLeader(),param_3,&auStack20); + xxx_init_itemslot_8090A8C(&item,ITEM_ROCK_PART,0); + sub_80464C8(GetLeader(),param_3,&item); DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT); // Something fell from Regirock's body // Regirock was apparently guarding this item @@ -3230,17 +3230,17 @@ void sub_808AE54(char param_1,char param_2,u32 *param_3) void sub_808AEC8(char param_1,char param_2,u32 *param_3) { struct Entity * LeaderEntity; - u8 auStack24 [4]; - struct Item auStack20; + s16 IDStack[2]; + struct Item item; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack24,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x2F) && (param_1 == 0x18)) { sub_808B1CC(0); if (sub_8098100(0x1d) == 0) { - xxx_init_itemslot_8090A8C(&auStack20,ITEM_ICE_PART,0); - sub_80464C8(GetLeader(),param_3,&auStack20); + xxx_init_itemslot_8090A8C(&item,ITEM_ICE_PART,0); + sub_80464C8(GetLeader(),param_3,&item); DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT); // Something fell from Regice's body // Regice was apparently guarding this item @@ -3252,17 +3252,17 @@ void sub_808AEC8(char param_1,char param_2,u32 *param_3) void sub_808AF3C(char param_1,char param_2,u32 *param_3) { struct Entity * LeaderEntity; - u8 auStack24 [4]; - struct Item auStack20; + s16 IDStack[2]; + struct Item item; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack24,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x30) && (param_1 == 0x19)) { sub_808B1CC(0); if (sub_8098100(0x1d) == 0) { - xxx_init_itemslot_8090A8C(&auStack20,ITEM_STEEL_PART,0); - sub_80464C8(GetLeader(),param_3, &auStack20); + xxx_init_itemslot_8090A8C(&item,ITEM_STEEL_PART,0); + sub_80464C8(GetLeader(),param_3, &item); DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT); // Something fell from Registeel's body // Registeel was apparently guarding this item @@ -3274,10 +3274,10 @@ void sub_808AF3C(char param_1,char param_2,u32 *param_3) void sub_808AFB0(char param_1) { struct Entity * LeaderEntity; - u8 auStack12 [4]; + s16 IDStack [2]; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack12,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_1 == 0x2E) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ROCK_PART) != 0)) { sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames,GetLeader(),0); @@ -3292,10 +3292,10 @@ void sub_808AFB0(char param_1) void sub_808B030(char param_1) { struct Entity * LeaderEntity; - u8 auStack12 [4]; + s16 IDStack [2]; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack12,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_1 == 0x2F) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ICE_PART) != 0)) { sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames,GetLeader(),0); @@ -3310,10 +3310,10 @@ void sub_808B030(char param_1) void sub_808B0B0(char param_1) { struct Entity * LeaderEntity; - u8 auStack12 [4]; + s16 IDStack [2]; LeaderEntity = xxx_call_GetLeader(); - sub_8052D44(auStack12,LeaderEntity,0); + sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_1 == 0x30) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_STEEL_PART) != 0)) { sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames, GetLeader(), 0); @@ -3482,19 +3482,19 @@ void SetupRegiFacingDirection(struct Entity *regiEntity) void SetupRegirockFightHP(struct Entity *r0) { - SetupBossFightHP(r0, 450, 0xB); + SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE); } void SetupRegiceFightHP(struct Entity *r0) { - SetupBossFightHP(r0, 450, 0xB); + SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE); } void SetupRegisteelFightHP(struct Entity *r0) { - SetupBossFightHP(r0, 450, 0xB); + SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE); } void sub_808B2F4(void) @@ -3653,7 +3653,7 @@ void JirachiPreFightDialogue(void) sub_803E708(10,70); DisplayDungeonDialogue(&gJirachiPreFightDialogue_4); sub_803E708(10,70); - SetupBossFightHP(JirachiEntity,0x15e,0x20); + SetupBossFightHP(JirachiEntity,0x15e,MUS_BATTLE_WITH_RAYQUAZA); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -3692,12 +3692,12 @@ void JirachiWish(void) struct Position *LeaderPos; struct Entity *LeaderEntity; s32 wishChoice; - s32 iVar4; - u32 uVar6; - s32 iVar9; - struct Item auStack152 [9]; - struct Item auStack116 [9]; - struct Item auStack80 [9]; + s32 counter; + u32 direction; + s32 index; + struct Item money [9]; + struct Item itemStack [9]; + struct Item strengthItems [9]; s32 local_2c; s32 local_28; s32 local_24; @@ -3751,12 +3751,12 @@ void JirachiWish(void) sub_803E708(10,0x46); JirachiWishGrantDialogue(JirachiEntity); - for(iVar4 = 0; iVar4 < 6; iVar4 = r8) + for(counter = 0; counter < 6; counter = r8) { - r8 = iVar4 + 1; - for(iVar9 = 0; iVar9 < 9; iVar9++) + r8 = counter + 1; + for(index = 0; index < 9; index++) { - sub_8045C28(&auStack152[iVar9], 0x69, 0); + sub_8045C28(&money[index], 0x69, 0); } temp = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16); local_2c &= 0xffff0000; @@ -3768,7 +3768,7 @@ void JirachiWish(void) if ((GetTileSafe((s16)local_2c, local_2c >> 16)->terrainType & 3) != 0) { PlaySoundEffect(0x14c); sub_808BB3C((s16 *)&local_2c); - sub_8046860(JirachiEntity,&local_2c,auStack152,9); + sub_8046860(JirachiEntity,&local_2c,money,9); } } JirachiEntity->info->unk15D = 0; @@ -3779,14 +3779,14 @@ void JirachiWish(void) sub_803E708(10,0x46); JirachiWishGrantDialogue(JirachiEntity); - for(iVar4 = 0; iVar4 < 6; iVar4++) + for(counter = 0; counter < 6; counter++) { #ifndef NONMATCHING asm("":::"sl"); #endif - for(iVar9 = 0; iVar9 < 9; iVar9++) + for(index = 0; index < 9; index++) { - sub_8045C28(&auStack116[iVar9], sub_803D73C(0),0); + sub_8045C28(&itemStack[index], sub_803D73C(0),0); } temp2 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16); local_28 &= 0xffff0000; @@ -3798,7 +3798,7 @@ void JirachiWish(void) if ((GetTileSafe((s16)local_28, local_28 >> 16)->terrainType & 3) != 0) { PlaySoundEffect(400); sub_808BB3C((s16 *)&local_28); - sub_8046860(JirachiEntity,&local_28,auStack116,9); + sub_8046860(JirachiEntity,&local_28,itemStack,9); } } JirachiEntity->info->unk15D = 0; @@ -3838,12 +3838,12 @@ void JirachiWish(void) sub_803E708(10,0x46); JirachiWishGrantDialogue(JirachiEntity); - for(iVar4 = 0; iVar4 < 5; iVar4++) + for(counter = 0; counter < 5; counter++) { - for(iVar9 = 0; iVar9 < 4; iVar9++) + for(index = 0; index < 4; index++) { - sub_8045C28(&auStack80[iVar9],gUnknown_81074FC[DungeonRandInt(8)],0); + sub_8045C28(&strengthItems[index],gUnknown_81074FC[DungeonRandInt(8)],0); } temp3 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16); local_24 &= 0xffff0000; @@ -3855,7 +3855,7 @@ void JirachiWish(void) if ((GetTileSafe((s16)local_24, local_24 >> 16)->terrainType & 3) != 0) { PlaySoundEffect(400); sub_808BB3C((s16 *)&local_24); - sub_8046860(JirachiEntity,&local_24,auStack80,4); + sub_8046860(JirachiEntity,&local_24,strengthItems,4); } } JirachiEntity->info->unk15D = 0; @@ -3871,8 +3871,8 @@ void JirachiWish(void) DisplayDungeonDialogue(&gUnknown_8105D80); sub_803E708(10,0x46); LeaderPos = &GetLeader()->pos; - uVar6 = GetDirectionTowardsPosition(&JirachiEntity->pos,LeaderPos); - SetFacingDirection(JirachiEntity,uVar6); + direction = GetDirectionTowardsPosition(&JirachiEntity->pos,LeaderPos); + SetFacingDirection(JirachiEntity,direction); sub_803E708(10,0x46); DisplayDungeonDialogue(&gUnknown_8105D9C); sub_803E708(10,0x46); @@ -4157,7 +4157,7 @@ void LugiaPreFightDialogue(void) sub_80861D4(LugiaEntity,7,0); DisplayDungeonDialogue(&gLugiaPreFightDialogue_7); LugiaScreenFlash(); - SetupBossFightHP(LugiaEntity,800,0x20); + SetupBossFightHP(LugiaEntity,800,MUS_BATTLE_WITH_RAYQUAZA); DungeonStartNewBGM(MUS_FRIEND_AREA_CRYPTIC_CAVE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -4307,7 +4307,7 @@ void KyogrePreFightDialogue(void) // power! DisplayDungeonDialogue(&gKyogrePreFightDialogue_7); sub_803E708(10,0x46); - SetupBossFightHP(KyogreEntity,600,0xb); + SetupBossFightHP(KyogreEntity,600,MUS_BOSS_BATTLE); DungeonStartNewBGM(MUS_FRIEND_AREA_CRYPTIC_CAVE); ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10); } @@ -4449,7 +4449,7 @@ void SetupDeoxysFacingDirection(struct Entity *deoxysEntity) void SetupDeoxysFightHP(struct Entity *deoxysEntity) { - SetupBossFightHP(deoxysEntity, 950, 0x20); + SetupBossFightHP(deoxysEntity, 950, MUS_BATTLE_WITH_RAYQUAZA); } void sub_808C5C0(void) @@ -4910,13 +4910,13 @@ void sub_808C938(void) void sub_808C948(struct Entity *param_1, u8 param_2) { bool8 flag; - s32 iVar3; + s32 index; struct Entity *iVar2; if (param_2 == 0x37) { flag = FALSE; - for(iVar3 = 0; iVar3 < DUNGEON_MAX_WILD_POKEMON; iVar3++){ - iVar2 = gDungeon->wildPokemon[iVar3]; + for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++){ + iVar2 = gDungeon->wildPokemon[index]; if ((iVar2 != param_1) && (EntityExists(iVar2) != 0)) { flag = TRUE; break; diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c index be38ab767..7ee1402ae 100644 --- a/src/code_8086A3C.c +++ b/src/code_8086A3C.c @@ -57,7 +57,7 @@ void sub_8086A54(struct Entity *pokemon) pokemon->info->unk15E = 0; } -void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 param_3) +void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 songIndex) { // NOTE: needed two of these to match.. very dumb @@ -79,7 +79,7 @@ void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 param_3) entityInfo->HP = newHP; } - gDungeon->unk66A = param_3; + gDungeon->bossSongIndex = songIndex; SetDefaultIQSkills(enityData_1->IQSkillMenuFlags, enityData_1->bossFlag); LoadIQSkills(pokemon); } diff --git a/src/dungeon_music.c b/src/dungeon_music.c index a704fbf87..a88aa284b 100644 --- a/src/dungeon_music.c +++ b/src/dungeon_music.c @@ -28,6 +28,10 @@ extern void sub_80709C8(u8 *buffer, struct EntityInfo *entityInfo); void FadeOutAllMusic(u16); void xxx_call_stop_bgm(void); +// Dungeon Music Player adds in this flag to tell +// the system to fade in rather than immediately playing +#define DUNGEON_MUSIC_FADE_IN 0x8000 + void sub_8083AB0(s16 param_0, struct Entity * target, struct Entity * entity) { u8 *defPtr; @@ -144,48 +148,48 @@ bool8 sub_8083C88(u8 param_1) void sub_8083CE0(u8 param_1) { if ((param_1 == 0) || (1 < gUnknown_202EE10.unk1A)) { - PlayFanfareSE(0x12d,0x100); + PlayFanfareSE(0x12d,MAX_VOLUME); } } void sub_8083D08(void) { - PlayFanfareSE(0x12E, 0x100); + PlayFanfareSE(0x12E, MAX_VOLUME); } void sub_8083D1C(void) { - PlayFanfareSE(0x133, 0x100); + PlayFanfareSE(0x133, MAX_VOLUME); } void sub_8083D30(void) { - PlayFanfareSE(0x12F, 0x100); + PlayFanfareSE(0x12F, MAX_VOLUME); } void sub_8083D44(void) { - PlayFanfareSE(0x130, 0x100); + PlayFanfareSE(0x130, MAX_VOLUME); } void sub_8083D58(void) { - PlayFanfareSE(0xC8, 0x100); + PlayFanfareSE(0xC8, MAX_VOLUME); } void sub_8083D68(void) { - PlayFanfareSE(0xCF, 0x100); + PlayFanfareSE(0xCF, MAX_VOLUME); } void sub_8083D78(void) { - PlayFanfareSE(0xD3, 0x100); + PlayFanfareSE(0xD3, MAX_VOLUME); } void sub_8083D88(void) { - PlayFanfareSE(0xCC, 0x100); + PlayFanfareSE(0xCC, MAX_VOLUME); } void PlayDungeonFailBGM(void) @@ -194,7 +198,7 @@ void PlayDungeonFailBGM(void) gDungeon->unk66F = 0; gDungeon->unk672 = 0; gDungeon->unk699 = 0; - gDungeon->unk66A = 999; + gDungeon->bossSongIndex = STOP_BGM; } void PlayDungeonCompleteBGM(void) @@ -203,25 +207,25 @@ void PlayDungeonCompleteBGM(void) gDungeon->unk66F = 0; gDungeon->unk672 = 0; gDungeon->unk699 = 0; - gDungeon->unk66A = 999; + gDungeon->bossSongIndex = STOP_BGM; } void sub_8083E28(void) { - PlayFanfareSE(0xCF, 0x100); + PlayFanfareSE(0xCF, MAX_VOLUME); } void PlaySoundEffect(u32 songIndex) { u16 songIndex_u32 = songIndex; - if(songIndex_u32 != 0x3E5) - PlayFanfareSE(songIndex_u32, 0x100); + if(songIndex_u32 != STOP_SOUND_EFFECT) + PlayFanfareSE(songIndex_u32, MAX_VOLUME); } void StopSoundEffect(u32 songIndex) { u16 songIndex_u32 = songIndex; - if(songIndex_u32 != 0x3E5) + if(songIndex_u32 != STOP_SOUND_EFFECT) StopFanfareSE(songIndex_u32); } @@ -238,16 +242,16 @@ void DungeonStartNewBGM(u16 songIndex) void DungeonFadeInNewBGM(u16 songIndex, u32 fadeInSpeed) { - gDungeon->musPlayer.queuedSongIndex = 0x80 << 8 | songIndex; + gDungeon->musPlayer.queuedSongIndex = DUNGEON_MUSIC_FADE_IN | songIndex; gDungeon->musPlayer.fadeInSpeed = fadeInSpeed; } void DungeonFadeOutBGM(u16 speed) { FadeOutAllMusic(speed); - gDungeon->musPlayer.songIndex = 999; - gDungeon->musPlayer.pastSongIndex = 999; - gDungeon->musPlayer.queuedSongIndex = 999; + gDungeon->musPlayer.songIndex = STOP_BGM; + gDungeon->musPlayer.pastSongIndex = STOP_BGM; + gDungeon->musPlayer.queuedSongIndex = STOP_BGM; } void DungeonStopBGM(void) @@ -266,50 +270,50 @@ void StopDungeonBGM(void) struct DungeonMusicPlayer *temp = &gDungeon->musPlayer; temp->state = 0; temp->fadeOutSpeed = 0; - temp->songIndex = 999; - temp->pastSongIndex = 999; - temp->queuedSongIndex = 999; + temp->songIndex = STOP_BGM; + temp->pastSongIndex = STOP_BGM; + temp->queuedSongIndex = STOP_BGM; } void UpdateDungeonMusic(void) { #ifndef NONMATCHING - register s32 uVar1 asm("r1"); - register u16 *uVar3 asm("r3"); + register s32 currSongIndex asm("r1"); + register u16 *bossSongIndex asm("r3"); #else - s32 uVar1; - u16 *uVar3; + s32 currSongIndex; + u16 *bossSongIndex; #endif - s32 songIndex1; + s32 newSongIndex; struct DungeonMusicPlayer *musPlayer; musPlayer = &gDungeon->musPlayer; - uVar3 = &gDungeon->unk66A; - songIndex1 = *uVar3; - if (songIndex1 == 999) { + bossSongIndex = &gDungeon->bossSongIndex; + newSongIndex = *bossSongIndex; + if (newSongIndex == STOP_BGM) { if (gDungeon->unk66F != 0) { - songIndex1 = MUS_STOP_THIEF; + newSongIndex = MUS_STOP_THIEF; } else if (gDungeon->unk672 != 0) { - songIndex1 = MUS_MONSTER_HOUSE; + newSongIndex = MUS_MONSTER_HOUSE; } else if (gDungeon->unk699 != 0) { - songIndex1 = MUS_KECLEON_SHOP; + newSongIndex = MUS_KECLEON_SHOP; } else { - songIndex1 = musPlayer->queuedSongIndex; + newSongIndex = musPlayer->queuedSongIndex; } } if (musPlayer->state == 4) { - if (songIndex1 != musPlayer->pastSongIndex) { + if (newSongIndex != musPlayer->pastSongIndex) { musPlayer->state = 2; - musPlayer->songIndex = songIndex1; + musPlayer->songIndex = newSongIndex; } } - else if ((songIndex1 != 999) && (musPlayer->songIndex == 999)) { + else if ((newSongIndex != STOP_BGM) && (musPlayer->songIndex == STOP_BGM)) { musPlayer->state = 1; - musPlayer->songIndex = songIndex1; + musPlayer->songIndex = newSongIndex; } switch(musPlayer->state) { case 0: @@ -317,21 +321,21 @@ void UpdateDungeonMusic(void) default: break; case 1: - uVar1 = musPlayer->songIndex; - if (uVar1 == 999) { + currSongIndex = musPlayer->songIndex; + if (currSongIndex == STOP_BGM) { musPlayer->state = 0; } else { - if ((uVar1 & 0x8000) != 0) { - StartNewBGM(uVar1 & 0x7fff); + if ((currSongIndex & DUNGEON_MUSIC_FADE_IN)) { + StartNewBGM(currSongIndex & ~(DUNGEON_MUSIC_FADE_IN)); } else { - FadeInNewBGM(uVar1 & 0x7fff, musPlayer->fadeInSpeed); + FadeInNewBGM(currSongIndex & ~(DUNGEON_MUSIC_FADE_IN), musPlayer->fadeInSpeed); } musPlayer->pastSongIndex = musPlayer->songIndex; musPlayer->state = 4; } - musPlayer->songIndex = 999; + musPlayer->songIndex = STOP_BGM; break; case 2: FadeOutBGM(0x1e); @@ -342,7 +346,7 @@ void UpdateDungeonMusic(void) if ((musPlayer->fadeOutSpeed != 0) && (musPlayer->fadeOutSpeed--, musPlayer->fadeOutSpeed != 0)) { break; } - if (musPlayer->songIndex == 999) { + if (musPlayer->songIndex == STOP_BGM) { StopBGM(); musPlayer->state = 0; } diff --git a/src/music.c b/src/music.c index cfa436294..469de1325 100644 --- a/src/music.c +++ b/src/music.c @@ -61,7 +61,7 @@ struct PMDMusicPlayer u16 unk0; u16 songIndex; u16 volume; - bool8 unk6; + bool8 isNotMaxVolume; }; extern struct PMDMusicPlayer gUnknown_3000FD8[8]; @@ -418,7 +418,7 @@ void InitMusic(void) musicPlayer->unk0 = 0; musicPlayer->songIndex = STOP_SOUND_EFFECT; musicPlayer->volume = 0; - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; } nullsub_19(); } @@ -677,11 +677,11 @@ void PlayFanfareSE(u16 songIndex, u16 volume) musicPlayer->songIndex = songIndex; if(volume == MAX_VOLUME) { - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; } else { - musicPlayer->unk6 = TRUE; + musicPlayer->isNotMaxVolume = TRUE; } musicPlayer->volume = volume; if (interrupt_flag2) @@ -739,7 +739,7 @@ void StopFanfareSE(u16 songIndex) musicPlayer1->unk0 = 0; musicPlayer1->songIndex = STOP_SOUND_EFFECT; musicPlayer1->volume = 0; - musicPlayer1->unk6 = FALSE; + musicPlayer1->isNotMaxVolume = FALSE; } if (cVar1 != '\0') { EnableInterrupts(); @@ -760,7 +760,7 @@ void StopFanfareSE(u16 songIndex) musicPlayer->unk0 = 0; musicPlayer->songIndex = STOP_SOUND_EFFECT; musicPlayer->volume = 0; - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; } if (cVar2 != '\0') { EnableInterrupts(); @@ -834,7 +834,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed) musicPlayer1->unk0 = 0; musicPlayer1->songIndex = STOP_SOUND_EFFECT; musicPlayer1->volume = 0; - musicPlayer1->unk6 = FALSE; + musicPlayer1->isNotMaxVolume = FALSE; } } } @@ -856,7 +856,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed) musicPlayer->unk0 = 0; musicPlayer->songIndex = STOP_SOUND_EFFECT; musicPlayer->volume = 0; - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; } } if (cVar2 != '\0') { @@ -1089,9 +1089,9 @@ void UpdateSound(void) case 2: if (IsMusicPlayerPlaying(musicPlayerIndex)) { - if(musicPlayer->unk6) + if(musicPlayer->isNotMaxVolume) { - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; m4aMPlayVolumeControl(gMPlayTable[musicPlayerIndex].info,0xff,musicPlayer->volume); } } @@ -1100,7 +1100,7 @@ void UpdateSound(void) musicPlayer->unk0 = 0; musicPlayer->songIndex = STOP_SOUND_EFFECT; musicPlayer->volume = 0; - musicPlayer->unk6 = FALSE; + musicPlayer->isNotMaxVolume = FALSE; } break; case 3: From a9049a261f74c8e8ad13df4f0dff02ad1245bc88 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 24 Feb 2023 09:07:32 -0800 Subject: [PATCH 12/21] match 8012E04 w/ jiang and more changes to UnkTextStruct2 --- asm/code_8012A18.s | 177 ---------------------------------- asm/code_807CABC.s | 64 ------------ include/status_checks_1.h | 1 + include/text.h | 3 +- src/adventure_log.c | 4 +- src/debug_menu.c | 4 +- src/dungeon_ai_attack.c | 30 ++++++ src/friend_area_action_menu.c | 10 +- src/load_screen.c | 8 +- src/mailbox.c | 8 +- src/main_menu.c | 20 ++-- src/makuhita_dojo.c | 2 +- src/makuhita_dojo_1.c | 4 +- src/menu_input.c | 98 +++++++++++++++++++ src/pelipper_board.c | 8 +- src/personality_test.c | 8 +- src/post_office_guide.c | 4 +- src/save_menu.c | 4 +- src/status_checks_1.c | 2 +- src/thank_you_wonder_mail.c | 6 +- src/trade_items_menu.c | 6 +- src/wonder_mail.c | 4 +- src/wonder_mail_2.c | 16 +-- src/wonder_mail_2_1.c | 14 +-- src/wonder_mail_3.c | 10 +- src/wonder_mail_3_mid.c | 14 +-- src/wonder_mail_4.c | 4 +- src/wonder_mail_5.c | 4 +- src/wonder_mail_6.c | 6 +- src/wonder_mail_802DF88.c | 6 +- 30 files changed, 219 insertions(+), 330 deletions(-) diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index f534b9260..b2a7b4f86 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -229,181 +229,4 @@ _08012D50: bx r0 thumb_func_end sub_8012D34 - thumb_func_start sub_8012D60 -sub_8012D60: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - adds r5, r3, 0 - ldr r7, [sp, 0x20] - movs r3, 0 - movs r6, 0x1 - negs r6, r6 - mov r12, r3 - ldr r0, [sp, 0x24] - str r0, [r4, 0x10] - str r1, [r4, 0x4] - str r2, [r4, 0x8] - cmp r2, 0 - bne _08012D88 - ldr r0, _08012E00 - str r0, [r4, 0x8] -_08012D88: - str r5, [r4, 0xC] - ldr r0, [r1] - adds r5, r4, 0 - adds r5, 0x14 - movs r2, 0x4C - adds r2, r4 - mov r8, r2 - movs r2, 0x4D - adds r2, r4 - mov r9, r2 - movs r2, 0x4E - adds r2, r4 - mov r10, r2 - cmp r0, 0 - beq _08012DC6 -_08012DA6: - cmp r7, 0 - blt _08012DB2 - ldr r0, [r1, 0x4] - cmp r7, r0 - bne _08012DB2 - adds r6, r3, 0 -_08012DB2: - ldr r0, [r1] - ldrb r0, [r0] - cmp r0, 0x2A - bne _08012DBC - mov r12, r3 -_08012DBC: - adds r1, 0x8 - adds r3, 0x1 - ldr r0, [r1] - cmp r0, 0 - bne _08012DA6 -_08012DC6: - cmp r6, 0 - bge _08012DCC - mov r6, r12 -_08012DCC: - adds r0, r5, 0 - adds r1, r3, 0 - ldr r2, [sp, 0x24] - bl sub_8013134 - strh r6, [r4, 0x2C] - adds r0, r5, 0 - movs r1, 0 - bl sub_80137B0 - movs r0, 0x1 - mov r1, r8 - strb r0, [r1] - mov r2, r9 - strb r0, [r2] - mov r1, r10 - strb r0, [r1] - subs r0, 0x2 - str r0, [r4, 0x48] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08012E00: .4byte gUnknown_80D47B8 - thumb_func_end sub_8012D60 - - thumb_func_start sub_8012E04 -sub_8012E04: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - adds r7, r1, 0 - mov r8, r2 - mov r9, r3 - ldr r3, [sp, 0x1C] - movs r1, 0 - movs r6, 0x1 - negs r6, r6 - movs r4, 0 - ldr r0, [r7] - cmp r0, 0 - beq _08012E46 - adds r2, r7, 0 -_08012E26: - cmp r3, 0 - blt _08012E32 - ldr r0, [r2, 0x4] - cmp r3, r0 - bne _08012E32 - adds r6, r1, 0 -_08012E32: - ldr r0, [r2] - ldrb r0, [r0] - cmp r0, 0x2A - bne _08012E3C - adds r4, r1, 0 -_08012E3C: - adds r2, 0x8 - adds r1, 0x1 - ldr r0, [r2] - cmp r0, 0 - bne _08012E26 -_08012E46: - cmp r6, 0 - bge _08012E4C - adds r6, r4, 0 -_08012E4C: - adds r4, r5, 0 - adds r4, 0x14 - adds r0, r4, 0 - ldr r2, [sp, 0x20] - bl sub_8013134 - strh r6, [r5, 0x2C] - adds r0, r4, 0 - movs r1, 0 - bl sub_80137B0 - ldr r0, [sp, 0x20] - str r0, [r5, 0x10] - mov r0, r8 - str r0, [r5, 0x8] - cmp r0, 0 - bne _08012E72 - ldr r0, _08012EA0 - str r0, [r5, 0x8] -_08012E72: - mov r0, r9 - str r0, [r5, 0xC] - str r7, [r5, 0x4] - adds r1, r5, 0 - adds r1, 0x4E - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0x4C - movs r1, 0x1 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r0, [r5, 0x48] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08012EA0: .4byte gUnknown_80D47B8 - thumb_func_end sub_8012E04 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_807CABC.s b/asm/code_807CABC.s index 9735b7161..d97abc6c7 100644 --- a/asm/code_807CABC.s +++ b/asm/code_807CABC.s @@ -5,70 +5,6 @@ .text - thumb_func_start sub_807CABC -sub_807CABC: - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r6, 0 - b _0807CADC -_0807CAC6: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0807CB0A - ldr r1, _0807CB38 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0807CB0A - adds r6, 0x1 -_0807CADC: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r6, r0 - bge _0807CB0A - ldr r5, [r4, 0x70] - adds r0, r5, 0 - adds r0, 0x48 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8055A00 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807CAC6 -_0807CB0A: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8057588 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807CB2A - ldr r0, [r4, 0x70] - adds r0, 0x48 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_806A9B4 -_0807CB2A: - adds r0, r4, 0 - bl sub_806A1B0 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807CB38: .4byte 0x00000159 - thumb_func_end sub_807CABC - thumb_func_start sub_807CB3C sub_807CB3C: push {r4-r7,lr} diff --git a/include/status_checks_1.h b/include/status_checks_1.h index 6d0c3e999..e469c6988 100644 --- a/include/status_checks_1.h +++ b/include/status_checks_1.h @@ -6,5 +6,6 @@ bool8 HasNegativeStatus(struct Entity *pokemon); bool8 IsSleeping(struct Entity *pokemon); bool8 HasLowHealth(struct Entity *pokemon); +s32 sub_8070828(struct Entity *pokemon, bool8 displayMessage); #endif diff --git a/include/text.h b/include/text.h index 6027d23d8..25ba15e78 100644 --- a/include/text.h +++ b/include/text.h @@ -21,7 +21,8 @@ struct UnkTextStruct2_sub }; struct UnkTextStruct2 { - u8 fill00[0x08]; + u8 fill00[0x04]; + s32 unk4; struct UnkTextStruct2_sub unk08; s16 unk0c; s16 unkE; diff --git a/src/adventure_log.c b/src/adventure_log.c index 546134de4..a8b622116 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -23,7 +23,7 @@ extern struct AdventureLog *gAdventureLog; const struct UnkTextStruct2 gUnknown_80E1FF0 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -31,7 +31,7 @@ const struct UnkTextStruct2 gUnknown_80E1FF0 = { }; const struct UnkTextStruct2 gUnknown_80E2008 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x04, 0x06, 0x00, diff --git a/src/debug_menu.c b/src/debug_menu.c index 192845134..c5c8d6d4a 100644 --- a/src/debug_menu.c +++ b/src/debug_menu.c @@ -15,7 +15,7 @@ extern struct DebugMenu *gUnknown_203B3EC; const struct UnkTextStruct2 gUnknown_80E7D40 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25,7 +25,7 @@ const struct UnkTextStruct2 gUnknown_80E7D40 = const struct UnkTextStruct2 gUnknown_80E7D58 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x09, 0x0b, 0x0b, 0x00, diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index 3234f2e19..9da995229 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -40,6 +40,13 @@ extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS]; extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS]; extern struct Entity *gPotentialTargets[NUM_DIRECTIONS]; +extern void sub_8055A00(struct Entity *, u8, u32, u32, u32); +extern void sub_806A9B4(struct Entity *, u8); +extern bool8 sub_8044B28(void); +extern void sub_8057588(struct Entity *, u32); +extern void sub_806A1B0(struct Entity *); + + void DecideAttack(struct Entity *pokemon) { struct EntityInfo *pokemonInfo = pokemon->info; @@ -922,3 +929,26 @@ bool8 IsTargetInRange(struct Entity *pokemon, struct Entity *targetPokemon, s32 } return FALSE; } + +void sub_807CABC(struct Entity *target) +{ + struct EntityInfo *entityInfo; + s32 counter; + + counter = 0; + while (1) { + if(counter >= sub_8070828(target, TRUE)) break; + entityInfo = target->info; + sub_8055A00(target,(entityInfo->action).actionUseIndex,1,0,0); + if(!EntityExists(target)) break; + if(sub_8044B28()) break; + if(entityInfo->unk159) break; + counter++; + } + + sub_8057588(target,1); + if (EntityExists(target)) { + sub_806A9B4(target,(target->info->action).actionUseIndex); + } + sub_806A1B0(target); +} diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index 731513025..2f7ba3fe7 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -53,7 +53,7 @@ extern void sub_80276A8(); const struct UnkTextStruct2 gUnknown_80DD6EC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -64,7 +64,7 @@ const struct UnkTextStruct2 gUnknown_80DD6EC = const struct UnkTextStruct2 gUnknown_80DD704 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x13, 0x00, 0x04, 0x00, 0x09, 0x03, 0x03, 0x00, @@ -74,7 +74,7 @@ const struct UnkTextStruct2 gUnknown_80DD704 = const struct UnkTextStruct2 gUnknown_80DD71C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x14, 0x00, 0x04, 0x00, 0x06, 0x03, 0x03, 0x00, @@ -84,7 +84,7 @@ const struct UnkTextStruct2 gUnknown_80DD71C = const struct UnkTextStruct2 gUnknown_80DD734 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x16, 0x00, 0x04, 0x00, 0x06, 0x03, 0x03, 0x00, @@ -94,7 +94,7 @@ const struct UnkTextStruct2 gUnknown_80DD734 = const struct UnkTextStruct2 gUnknown_80DD74C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x11, 0x00, 0x1A, 0x02, 0x02, 0x00, diff --git a/src/load_screen.c b/src/load_screen.c index 042cc9973..45b0f2a25 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -66,7 +66,7 @@ extern void sub_8007E20(s32, s32, s32, u32, u32, s32, u32); const struct UnkTextStruct2 gUnknown_80E75F8 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -75,7 +75,7 @@ const struct UnkTextStruct2 gUnknown_80E75F8 = { const struct UnkTextStruct2 gUnknown_80E7610 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x0B, 0x0B, 0x00, @@ -86,7 +86,7 @@ const u8 gUnkData_80E7628[] = {0x20, 0x00, 0x00, 0x00}; const struct UnkTextStruct2 gUnknown_80E762C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x0F, 0x00, 0x13, 0x03, 0x03, 0x00, @@ -131,7 +131,7 @@ const struct MenuItem gDeleteSaveConfirmMenuItems[3] = const struct UnkTextStruct2 gUnknown_80E7784 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x17, 0x00, 0x0F, 0x00, 0x05, 0x03, 0x03, 0x00, diff --git a/src/mailbox.c b/src/mailbox.c index 0c5d537e9..d511f9865 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -23,7 +23,7 @@ extern void sub_802E1AC(void); const struct UnkTextStruct2 gUnknown_80E0284 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33,7 +33,7 @@ const struct UnkTextStruct2 gUnknown_80E0284 = const struct UnkTextStruct2 gUnknown_80E029C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x03, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -43,7 +43,7 @@ const struct UnkTextStruct2 gUnknown_80E029C = const struct UnkTextStruct2 gUnknown_80E02B4 = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x06, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -53,7 +53,7 @@ const struct UnkTextStruct2 gUnknown_80E02B4 = const struct UnkTextStruct2 gUnknown_80E02CC = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x0f, 0x00, 0x06, 0x03, 0x03, 0x00, diff --git a/src/main_menu.c b/src/main_menu.c index 080a60f07..03ea15cb5 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -95,7 +95,7 @@ static const u8 sUnknown_80E6070[]; const struct UnkTextStruct2 gUnknown_80E59A8 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -106,7 +106,7 @@ static const char main_menu_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E59C8 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -115,7 +115,7 @@ const struct UnkTextStruct2 gUnknown_80E59C8 = { const struct UnkTextStruct2 gUnknown_80E59E0 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x03, 0x03, 0x00, @@ -131,7 +131,7 @@ const struct MenuItem gUnknown_80E59F8[] = const struct UnkTextStruct2 gUnknown_80E5A29 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x02, 0x02, 0x00, @@ -146,7 +146,7 @@ const struct MenuItem gUnknown_80E5A44[] = const struct UnkTextStruct2 gUnknown_80E5A60 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x08, 0x08, 0x00, @@ -155,7 +155,7 @@ const struct UnkTextStruct2 gUnknown_80E5A60 = { const struct UnkTextStruct2 gUnknown_80E5A78 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0B, 0x09, 0x09, 0x00, @@ -185,7 +185,7 @@ const struct MenuItem gUnknown_80E5AFC[] = const struct UnkTextStruct2 gUnknown_80E5B34 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x08, 0x08, 0x00, @@ -215,7 +215,7 @@ const struct MenuItem gUnknown_80E5B8C[] = const struct UnkTextStruct2 gUnknown_80E5BC4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x08, 0x08, 0x00, @@ -245,7 +245,7 @@ const struct MenuItem gUnknown_80E5C18[] = const struct UnkTextStruct2 gUnknown_80E5C50 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x03, 0x03, 0x00, @@ -268,7 +268,7 @@ const struct MenuItem gUnknown_80E5C9C[] = const struct UnkTextStruct2 gUnknown_80E5CB4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x0F, 0x00, 0x1A, 0x03, 0x03, 0x00, diff --git a/src/makuhita_dojo.c b/src/makuhita_dojo.c index b34ccc3ee..b98f3a5ff 100644 --- a/src/makuhita_dojo.c +++ b/src/makuhita_dojo.c @@ -17,7 +17,7 @@ ALIGNED(4) const u8 gUnknown_80E0754[] = {0x83, 0xC0}; static const u8 makuhita_dojo_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E0760 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/src/makuhita_dojo_1.c b/src/makuhita_dojo_1.c index e0fb0e1b0..290857ba8 100644 --- a/src/makuhita_dojo_1.c +++ b/src/makuhita_dojo_1.c @@ -36,7 +36,7 @@ static const u8 makuhita_dojo_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E07EC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -44,7 +44,7 @@ const struct UnkTextStruct2 gUnknown_80E07EC = { }; const struct UnkTextStruct2 gUnknown_80E0804 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x0E, 0x0E, 0x00, diff --git a/src/menu_input.c b/src/menu_input.c index c0149dec4..30f3e9ff6 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -22,6 +22,104 @@ void AddMenuCursorSprite(void *); void sub_8012EBC(struct MenuStruct *param_1); +extern u32 gUnknown_80D47B8; +extern void sub_8013134(u32 *, u32, u32); +extern void sub_80137B0(u32 *, u32); + +extern s16 sub_8009614(u32, u32); + +void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *param_3,u16 *param_4,s32 param_5, + s32 index) +{ + const u8 *textPtr; + s32 counter; + s32 menuIndex; + s32 iVar1; + + counter = 0; + menuIndex = -1; + iVar1 = 0; + param_1->index = index; + param_1->menuItems = menuItems; + param_1->unk8 = param_3; + if (param_3 == 0) { + param_1->unk8 = &gUnknown_80D47B8; + } + param_1->unkC = param_4; + textPtr = menuItems->text; + if(textPtr) + { + while (textPtr != 0) { + if ((0 <= param_5) && (param_5 == menuItems->menuAction)) { + menuIndex = counter; + } + if (*menuItems->text == '*') { + iVar1 = counter; + } + menuItems++; + counter++; + textPtr = menuItems->text; + } + } + if (menuIndex < 0) { + menuIndex = iVar1; + } + sub_8013134(¶m_1->unk14,counter,index); + param_1->menuIndex = menuIndex; + sub_80137B0(¶m_1->unk14,0); + param_1->unk4C = 1; + param_1->unk4D = 1; + param_1->unk4E = 1; + param_1->menuAction = -1; +} + +void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *param_3,u16 *param_4,s32 param_5, + s32 index) +{ + const u8 *textPtr; + s32 counter; + struct MenuItem *menuItemPtr; + s32 iVar1; + s32 menuIndex; + + counter = 0; + menuIndex = -1; + iVar1 = 0; + textPtr = menuItems->text; + if (textPtr) { + menuItemPtr = menuItems; + while (textPtr != NULL) { + if ((0 <= param_5) && (param_5 == menuItemPtr->menuAction)) { + menuIndex = counter; + } + if (*menuItemPtr->text == '*') { + iVar1 = counter; + } + menuItemPtr++; + counter++; + textPtr = menuItemPtr->text; + } + } + + if (menuIndex < 0) { + menuIndex = iVar1; + } + sub_8013134(¶m_1->unk14,counter,index); + param_1->menuIndex = menuIndex; + sub_80137B0(¶m_1->unk14,0); + param_1->index = index; + param_1->unk8 = param_3; + if (param_3 == 0) { + param_1->unk8 = &gUnknown_80D47B8; + } + param_1->unkC = param_4; + param_1->menuItems = menuItems; + param_1->unk4E = 0; + param_1->unk4C = 1; + param_1->unk4D = 1; + param_1->menuAction = -1; +} + void sub_8012EA4(struct MenuStruct *param_1, u32 r1) { param_1->unk4C = r1; diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 1df26c3c0..abe2e395f 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -30,7 +30,7 @@ extern void SetPelipperBoardState(u32); const struct UnkTextStruct2 gUnknown_80E0330 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -40,7 +40,7 @@ const struct UnkTextStruct2 gUnknown_80E0330 = const struct UnkTextStruct2 gUnknown_80E0348 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x03, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -50,7 +50,7 @@ const struct UnkTextStruct2 gUnknown_80E0348 = const struct UnkTextStruct2 gUnknown_80E0360 = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x06, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -60,7 +60,7 @@ const struct UnkTextStruct2 gUnknown_80E0360 = const struct UnkTextStruct2 gUnknown_80E0378 = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x0f, 0x00, 0x06, 0x03, 0x03, 0x00, diff --git a/src/personality_test.c b/src/personality_test.c index 8937fb22d..9333b835c 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -357,7 +357,7 @@ const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] = const struct UnkTextStruct2 gUnknown_80F4244 = { 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, + 0x05, 0x0C, 0x00, 0x06, 0x00, 0x05, 0x05, 0x05, 0x00, @@ -383,7 +383,7 @@ const s16 gPartners[NUM_PARTNERS] = const struct UnkTextStruct2 gUnknown_80F4278 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -393,7 +393,7 @@ const struct UnkTextStruct2 gUnknown_80F4278 = const struct UnkTextStruct2 gUnknown_80F4290 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x09, 0x0B, 0x0D, 0x00, @@ -403,7 +403,7 @@ const struct UnkTextStruct2 gUnknown_80F4290 = const struct UnkTextStruct2 gUnknown_80F42A8 = { 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, + 0x05, 0x0E, 0x00, 0x04, 0x00, 0x05, 0x05, 0x05, 0x00, diff --git a/src/post_office_guide.c b/src/post_office_guide.c index a8740dc0e..1b11151e4 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -144,7 +144,7 @@ ALIGNED(4) const u8 wonder_mail_fill[] = _("pksdir0"); const struct UnkTextStruct2 gUnknown_80E1EFC = { 0, 0, 0, 0, - 3, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, @@ -156,7 +156,7 @@ const u8 gUnkData_80E1F14[] = {1, 0, 8, 0}; const struct UnkTextStruct2 gUnknown_80E1F18 = { 0, 0, 0, 0, - 6, 0, 0, 0, + 6, 2, 0, 2, 0, 0x14, 4, 4, 0, diff --git a/src/save_menu.c b/src/save_menu.c index 040ff543d..185e159cf 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -31,7 +31,7 @@ extern struct unkStruct_203B360 *gUnknown_203B364; const struct UnkTextStruct2 gUnknown_80E6F20 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -41,7 +41,7 @@ const struct UnkTextStruct2 gUnknown_80E6F20 = const struct UnkTextStruct2 gUnknown_80E6F38 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x05, 0x00, 0x08, 0x00, 0x15, 0x05, 0x05, 0x00, diff --git a/src/status_checks_1.c b/src/status_checks_1.c index 3c1871027..028c78708 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -26,7 +26,7 @@ extern u8 *gUnknown_80F8968[]; extern u8 *gUnknown_80F8988[]; extern u8 gUnknown_8106FA4[]; -u8 sub_8070828(struct Entity *pokemon, bool8 displayMessage) +s32 sub_8070828(struct Entity *pokemon, bool8 displayMessage) { bool8 flag; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index dd3ad4837..4ff865ea6 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -55,7 +55,7 @@ extern char gAvailablePokemonNames[0x50]; const struct UnkTextStruct2 gUnknown_80DED48 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x04, 0x00, 0x06, 0x05, 0x05, 0x00, @@ -65,7 +65,7 @@ const struct UnkTextStruct2 gUnknown_80DED48 = const struct UnkTextStruct2 gUnknown_80DED60 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x16, 0x00, 0x07, 0x00, 0x06, 0x05, 0x05, 0x00, @@ -86,7 +86,7 @@ const struct MenuItem gUnknown_80DED78[3] = const struct UnkTextStruct2 gUnknown_80DEDA0 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 2f5dc54b0..35e4b2fde 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -29,7 +29,7 @@ const struct MenuItem gUnknown_80E60D4[3] = { const struct UnkTextStruct2 gUnknown_80E60EC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x04, 0x00, 0x06, 0x05, 0x05, 0x00, @@ -46,7 +46,7 @@ const struct MenuItem gUnknown_80E6104[4] = { static const struct UnkTextStruct2 unused = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x16, 0x00, 0x09, 0x00, 0x05, 0x03, 0x03, 0x00, @@ -63,7 +63,7 @@ const struct MenuItem gUnknown_80E6154[3] = { const struct UnkTextStruct2 gUnknown_80E6174 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x0D, 0x00, 0x06, 0x04, 0x04, 0x00, diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 7244f2cf8..7f9ecbb8f 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -203,7 +203,7 @@ ALIGNED(4) const u8 SendWOPokemon[] = _("Send w/o Pokémon"); const struct UnkTextStruct2 gUnknown_80DDACC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x16, 0x00, 0x07, 0x00, 0x06, 0x04, 0x04, 0x00, @@ -213,7 +213,7 @@ const struct UnkTextStruct2 gUnknown_80DDACC = const struct UnkTextStruct2 gUnknown_80DDAE4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x16, 0x00, 0x06, 0x00, 0x06, 0x04, 0x04, 0x00, diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 8d930e095..6f4ed2bb3 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -199,7 +199,7 @@ ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFBD0 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -211,7 +211,7 @@ const u8 gUnknown_80DFBE8[] = { 0x01, 0x00, 0x0C, 0x00 }; const struct UnkTextStruct2 gUnknown_80DFBEC = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x0E, 0x0E, 0x00, @@ -224,7 +224,7 @@ ALIGNED(4) static const char wonder_mail_2_fill1[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFC18 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -236,7 +236,7 @@ const u8 gUnkData_80DFC30[] = { 0x01, 0x00, 0x16, 0x00 }; const struct UnkTextStruct2 gUnknown_80DFC34 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x10, 0x10, 0x00, @@ -250,7 +250,7 @@ ALIGNED(4) static const char wonder_mail_2_fill2[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFC5C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -260,7 +260,7 @@ const struct UnkTextStruct2 gUnknown_80DFC5C = const struct UnkTextStruct2 gUnknown_80DFC74 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x0E, 0x0E, 0x00, @@ -273,7 +273,7 @@ ALIGNED(4) static const char wonder_mail_2_fill3[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFC9C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -283,7 +283,7 @@ const struct UnkTextStruct2 gUnknown_80DFC9C = const struct UnkTextStruct2 gUnknown_80DFCB4 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x0E, 0x0E, 0x00, diff --git a/src/wonder_mail_2_1.c b/src/wonder_mail_2_1.c index 0ac2e7d04..1a55c3e46 100644 --- a/src/wonder_mail_2_1.c +++ b/src/wonder_mail_2_1.c @@ -54,7 +54,7 @@ u16 gUnknown_203B2EC; const struct UnkTextStruct2 gUnknown_80DFCE4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -64,7 +64,7 @@ const struct UnkTextStruct2 gUnknown_80DFCE4 = const struct UnkTextStruct2 gUnknown_80DFCFC = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x0E, 0x0E, 0x00, @@ -77,7 +77,7 @@ static const u8 wonder_mail_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFD28 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -87,7 +87,7 @@ const struct UnkTextStruct2 gUnknown_80DFD28 = const struct UnkTextStruct2 gUnknown_80DFD40 = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x06, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -97,7 +97,7 @@ const struct UnkTextStruct2 gUnknown_80DFD40 = const struct UnkTextStruct2 gUnknown_80DFD58 = { 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, + 0x04, 0x15, 0x00, 0x0f, 0x00, 0x06, 0x03, 0x03, 0x00, @@ -111,7 +111,7 @@ static const u8 wonder_mail_fill0[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80DFD8C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -121,7 +121,7 @@ const struct UnkTextStruct2 gUnknown_80DFD8C = const struct UnkTextStruct2 gUnknown_80DFDA4 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x0e, 0x0e, 0x00, diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 8fd82a046..d8b84a849 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -12,7 +12,7 @@ const struct UnkTextStruct2 gUnknown_80DFDD4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23,7 +23,7 @@ const struct UnkTextStruct2 gUnknown_80DFDD4 = const struct UnkTextStruct2 gUnknown_80DFDEC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x03, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -33,7 +33,7 @@ const struct UnkTextStruct2 gUnknown_80DFDEC = const struct UnkTextStruct2 gUnknown_80DFE04 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x06, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -42,7 +42,7 @@ const struct UnkTextStruct2 gUnknown_80DFE04 = const struct UnkTextStruct2 gUnknown_80DFE1C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x0f, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -53,7 +53,7 @@ const struct UnkTextStruct2 gUnknown_80DFE1C = const struct UnkTextStruct2 gUnknown_80DFE34 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x0f, 0x00, 0x06, 0x03, 0x03, 0x00, diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index f3ca04798..52b1f59c1 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -151,7 +151,7 @@ void HandleMissionReward(void); const struct UnkTextStruct2 gUnknown_80E03C4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -159,7 +159,7 @@ const struct UnkTextStruct2 gUnknown_80E03C4 = { }; const struct UnkTextStruct2 gUnknown_80E03DC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x03, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -167,7 +167,7 @@ const struct UnkTextStruct2 gUnknown_80E03DC = { }; const struct UnkTextStruct2 gUnknown_80E03F4 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x00, 0x06, 0x00, 0x07, 0x03, 0x03, 0x00, @@ -178,7 +178,7 @@ const u8 gUnknown_80E040C[] = "Send"; static const u8 wonder_mail_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E041C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -239,7 +239,7 @@ static const u8 wonder_mail_fill2[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E06FC = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -248,7 +248,7 @@ const struct UnkTextStruct2 gUnknown_80E06FC = { const struct UnkTextStruct2 gUnknown_80E0714 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x0E, 0x0E, 0x00, @@ -256,7 +256,7 @@ const struct UnkTextStruct2 gUnknown_80E0714 = { }; const struct UnkTextStruct2 gUnknown_80E072C = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x10, 0x10, 0x10, 0x00, diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 182858268..305475f5f 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -33,7 +33,7 @@ extern struct unkStruct_203B480 *gUnknown_203B480; const struct UnkTextStruct2 gUnknown_80E083C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -42,7 +42,7 @@ const struct UnkTextStruct2 gUnknown_80E083C = { const struct UnkTextStruct2 gUnknown_80E0854 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x18, 0x11, 0x11, 0x00, diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index cf1e75690..bc06f252b 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -24,7 +24,7 @@ extern struct unkStruct_203B480 *gUnknown_203B480; const struct UnkTextStruct2 gUnknown_80E0900 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -35,7 +35,7 @@ const u8 DATA_80E0918[] = {0x01, 0x00, 0x12, 0x00}; const struct UnkTextStruct2 gUnknown_80E091C = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x10, 0x10, 0x00, diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index 9264d8d9f..0768ea868 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -47,7 +47,7 @@ const struct MenuItem gUnknown_80E0968[] = const struct UnkTextStruct2 gUnknown_80E0990 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -55,7 +55,7 @@ const struct UnkTextStruct2 gUnknown_80E0990 = { }; const struct UnkTextStruct2 gUnknown_80E09A8 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x13, 0x00, 0x0B, 0x00, 0x08, 0x03, 0x03, 0x00, @@ -63,7 +63,7 @@ const struct UnkTextStruct2 gUnknown_80E09A8 = { }; const struct UnkTextStruct2 gUnknown_80E09C0 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x11, 0x00, 0x0F, 0x00, 0x07, 0x03, 0x03, 0x00, diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c index 7140140f4..35ecb8e56 100644 --- a/src/wonder_mail_802DF88.c +++ b/src/wonder_mail_802DF88.c @@ -54,7 +54,7 @@ extern u8 gUnknown_202DE58[]; const struct UnkTextStruct2 gUnknown_80E016C = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -84,7 +84,7 @@ static const u8 wonder_mail_802DF88_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E0248 = { 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -96,7 +96,7 @@ const u8 UnkData_80E0260[] = {0x01, 0x00, 0x12, 0x00}; const struct UnkTextStruct2 gUnknown_80E0264 = { 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x10, 0x10, 0x00, From 08f7182576f2e039acc5b6e4b93c061e685f99eb Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 24 Feb 2023 18:14:21 -0800 Subject: [PATCH 13/21] finish out another file and more documenting --- asm/code_8012A18.s | 232 -------------------------- asm/code_801EE10.s | 142 ---------------- data/data_80D47B8.s | 5 - include/menu.h | 2 +- include/text.h | 2 +- ld_script.txt | 5 +- src/code_801EE10.c | 365 ++++++++--------------------------------- src/code_801EE10_1.c | 312 +++++++++++++++++++++++++++++++++++ src/friend_list_menu.c | 2 +- src/kecleon_items_1.c | 2 +- src/mailbox.c | 2 +- src/menu_input.c | 208 ++++++++++++++++++++--- src/pelipper_board.c | 2 +- src/text.c | 4 +- src/wonder_mail_3.c | 4 +- 15 files changed, 583 insertions(+), 706 deletions(-) delete mode 100644 asm/code_8012A18.s create mode 100644 src/code_801EE10_1.c diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s deleted file mode 100644 index b2a7b4f86..000000000 --- a/asm/code_8012A18.s +++ /dev/null @@ -1,232 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8012BC4 -sub_8012BC4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - mov r10, r0 - mov r9, r1 - adds r1, r2, 0 - adds r7, r3, 0 - movs r0, 0 - mov r8, r0 - add r0, sp, 0x4 - adds r2, r7, 0 - bl ConvertToDecimal - subs r5, r7, 0x1 - cmp r5, 0 - ble _08012C0A - lsls r0, r5, 2 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - ldr r0, [r1] - cmp r0, 0 - bne _08012C0A - movs r2, 0xFF -_08012BFA: - str r2, [r1] - subs r1, 0x4 - subs r5, 0x1 - cmp r5, 0 - ble _08012C0A - ldr r0, [r1] - cmp r0, 0 - beq _08012BFA -_08012C0A: - movs r5, 0 - cmp r5, r7 - bge _08012C50 - ldr r0, [sp, 0x4] - cmp r0, 0xFF - beq _08012C50 - add r6, sp, 0x4 -_08012C18: - ldm r6!, {r0} - adds r0, 0x30 - lsls r0, 24 - lsrs r0, 24 - bl ReturnIntFromChar2 - adds r4, r0, 0 - bl GetCharacter - movs r1, 0x6 - ldrsh r0, [r0, r1] - add r8, r0 - mov r2, r10 - mov r1, r8 - subs r0, r2, r1 - ldr r2, [sp, 0x48] - str r2, [sp] - mov r1, r9 - adds r2, r4, 0 - ldr r3, [sp, 0x44] - bl xxx_call_draw_char - adds r5, 0x1 - cmp r5, r7 - bge _08012C50 - ldr r0, [r6] - cmp r0, 0xFF - bne _08012C18 -_08012C50: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8012BC4 - - thumb_func_start sub_8012C60 -sub_8012C60: - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - adds r0, r2, 0 - adds r7, r3, 0 - lsls r0, 24 - lsrs r0, 24 - bl ReturnIntFromChar2 - adds r4, r0, 0 - bl GetCharacter - adds r1, r0, 0 - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, 0xB - bgt _08012C90 - movs r1, 0xC - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r0, r1, 1 - b _08012C92 -_08012C90: - movs r0, 0 -_08012C92: - adds r0, r5, r0 - ldr r1, [sp, 0x18] - str r1, [sp] - adds r1, r6, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl xxx_call_draw_char - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8012C60 - - thumb_func_start sub_8012CAC -sub_8012CAC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r4, r1, 0 - movs r7, 0 - movs r6, 0 - ldr r0, [r4] - cmp r0, 0 - beq _08012CE6 - movs r5, 0x80 - lsls r5, 9 -_08012CC4: - adds r0, r5, 0 - movs r1, 0x80 - lsls r1, 9 - adds r5, r1 - asrs r7, r0, 16 - ldr r0, [r4] - bl sub_8008ED0 - lsls r0, 16 - asrs r0, 16 - cmp r0, r6 - ble _08012CDE - adds r6, r0, 0 -_08012CDE: - adds r4, 0x8 - ldr r0, [r4] - cmp r0, 0 - bne _08012CC4 -_08012CE6: - adds r0, r6, 0 - cmp r0, 0 - bge _08012CEE - adds r0, 0x7 -_08012CEE: - asrs r0, 3 - adds r0, 0x2 - mov r1, r8 - strh r0, [r1, 0xC] - mov r0, r8 - adds r1, r7, 0 - bl sub_8012D08 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8012CAC - - thumb_func_start sub_8012D08 -sub_8012D08: - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - movs r1, 0xC - bl sub_80095E4 - lsls r0, 16 - asrs r1, r0, 16 - ldr r0, [r4, 0x4] - cmp r0, 0x6 - bne _08012D24 - adds r0, r1, 0x2 - lsls r0, 16 - asrs r1, r0, 16 -_08012D24: - lsls r0, r1, 16 - lsrs r0, 16 - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8012D08 - - thumb_func_start sub_8012D34 -sub_8012D34: - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - movs r1, 0x18 - bl sub_8009614 - lsls r0, 16 - asrs r1, r0, 16 - ldr r0, [r4, 0x4] - cmp r0, 0x6 - bne _08012D50 - adds r0, r1, 0x2 - lsls r0, 16 - asrs r1, r0, 16 -_08012D50: - lsls r0, r1, 16 - lsrs r0, 16 - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8012D34 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index 44e8102f4..4bbae13c2 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -5,148 +5,6 @@ .text - thumb_func_start sub_801EE10 -sub_801EE10: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - mov r9, r2 - adds r4, r3, 0 - ldr r0, [sp, 0x20] - mov r8, r0 - lsls r1, 16 - asrs r7, r1, 16 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0801EF28 - movs r0, 0xBC - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - movs r2, 0 - strb r4, [r0, 0x4] - ldr r0, [r5] - movs r1, 0x1 - strb r1, [r0, 0x5] - ldr r0, [r5] - strb r1, [r0, 0x6] - ldr r0, [r5] - strb r1, [r0, 0x7] - ldr r0, [r5] - str r6, [r0] - cmp r6, 0x1 - bls _0801EE5E - cmp r6, 0x3 - bhi _0801EE5E - strb r2, [r0, 0x5] - ldr r0, [r5] - strb r2, [r0, 0x6] - ldr r0, [r5] - strb r2, [r0, 0x7] -_0801EE5E: - ldr r4, _0801EF28 - ldr r3, [r4] - ldr r2, _0801EF2C - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - str r0, [r3, 0x8] - ldrb r0, [r0, 0x2] - strb r0, [r3, 0xC] - ldr r0, [r4] - mov r1, r9 - str r1, [r0, 0x10] - adds r0, 0xB8 - ldr r1, [sp, 0x1C] - str r1, [r0] - bl sub_801F3F8 - adds r5, r0, 0 - adds r6, r5, 0 - cmp r5, 0x4 - bge _0801EE8E - movs r6, 0x4 -_0801EE8E: - ldr r0, [r4] - adds r0, 0x58 - bl sub_8006518 - ldr r1, [r4] - mov r2, r8 - str r2, [r1, 0x50] - lsls r0, r2, 1 - add r0, r8 - lsls r0, 3 - adds r1, r0 - adds r1, 0x58 - ldr r0, _0801EF30 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r4] - adds r0, 0xB8 - ldr r0, [r0] - cmp r0, 0 - beq _0801EED8 - mov r0, r8 - bl sub_8006544 - ldr r1, [r4] - str r0, [r1, 0x54] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 3 - adds r1, r2 - adds r1, 0x58 - ldr r0, _0801EF34 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} -_0801EED8: - ldr r0, [r4] - ldr r2, [r0, 0x50] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, 0x58 - adds r0, r1 - adds r1, r6, 0 - bl sub_8012D08 - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x58 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - adds r0, 0x1C - adds r1, r5, 0 - adds r2, r5, 0 - mov r3, r8 - bl sub_8013818 - ldr r0, [r4] - adds r0, 0x1C - movs r1, 0 - bl sub_8013780 - movs r0, 0x1 - bl sub_801F280 - movs r0, 0x1 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801EF28: .4byte gUnknown_203B270 -_0801EF2C: .4byte gRecruitedPokemonRef -_0801EF30: .4byte gUnknown_80DC25C -_0801EF34: .4byte gUnknown_80DC274 - thumb_func_end sub_801EE10 - thumb_func_start sub_801EF38 sub_801EF38: push {r4-r7,lr} diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s index 3f7836b7c..800485966 100644 --- a/data/data_80D47B8.s +++ b/data/data_80D47B8.s @@ -1,10 +1,5 @@ .section .rodata - .global gUnknown_80D47B8 -gUnknown_80D47B8: @ 80D47B8 - .byte 0x07, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 .global UnkData_80D47C4 UnkData_80D47C4: diff --git a/include/menu.h b/include/menu.h index a53a5c598..528954bd8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -12,7 +12,7 @@ struct MenuStruct // size: 0x50 u8 *unk0; /* 0x4 */ struct MenuItem *menuItems; - u32 *unk8; + const u32 *menuTextColorArray; u16 *unkC; /* 0x10 */ s32 index; /* 0x14 */ u32 unk14; diff --git a/include/text.h b/include/text.h index 25ba15e78..13413d659 100644 --- a/include/text.h +++ b/include/text.h @@ -24,7 +24,7 @@ struct UnkTextStruct2 { u8 fill00[0x04]; s32 unk4; struct UnkTextStruct2_sub unk08; - s16 unk0c; + s16 unkC; s16 unkE; s16 unk10; s16 unk12; diff --git a/ld_script.txt b/ld_script.txt index 04ed30945..fc015c968 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -89,7 +89,6 @@ SECTIONS { src/save.o(.text); src/code_8012A18.o(.text); src/more_input.o(.text); - asm/code_8012A18.o(.text); src/menu_input.o(.text); asm/code_80130A8.o(.text); src/code_8012A18_1.o(.text); @@ -119,10 +118,11 @@ SECTIONS { src/gulpin_shop.o(.text); asm/gulpin_shop.o(.text); src/gulpin_shop_1.o(.text); + src/code_801EE10.o(.text); asm/code_801EE10.o(.text); src/code_8023144.o(.text); asm/code_801EE10_1.o(.text); - src/code_801EE10.o(.text); + src/code_801EE10_1.o(.text); src/luminous_cave.o(.text); src/friend_list_menu_1.o(.text); asm/friend_list_menu.o(.text); @@ -423,6 +423,7 @@ SECTIONS { data/data_80B9BB8.o(.rodata); src/debug.o(.rodata); src/save.o(.rodata); + src/menu_input.o(.rodata); data/data_80D47B8.o(.rodata); src/friend_area_action_menu.o(.rodata); src/friend_area_action_menu_1.o(.rodata); diff --git a/src/code_801EE10.c b/src/code_801EE10.c index ec3f969d6..b00ac1ec7 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -1,312 +1,89 @@ #include "global.h" -#include "constants/input.h" -#include "code_800D090.h" #include "pokemon.h" -#include "input.h" -#include "memory.h" #include "text.h" +#include "memory.h" +#include "input.h" -struct unkStruct_203B2AC -{ - u8 unk0[0x1E]; - s16 unk1E; - s16 unk20; - u8 unk22[0x34 - 0x22]; - u32 unk34[3]; - u8 unk40[0x48 - 0x40]; - s16 speciesNum; - u32 unk4C; - u8 unk50[0xB0 - 0x50]; - u32 unkB0; - u8 fillB4[0xE0 - 0xB4]; - u32 unkE0; - struct UnkTextStruct2 *unkE4; - struct UnkTextStruct2 unkE8[4]; - u8 unk148[4]; -}; -extern struct unkStruct_203B2AC *gUnknown_203B2AC; - -struct unkStruct_3001B60 +struct unkStruct_203B270 { + // size 0xBC u32 unk0; - u32 sortMethod; - u32 unk8; - u32 unkC; - u32 unk10; - u8 fill14[0x18 - 0x14]; - s16 unk18; - s16 unk1A[2]; - u8 fill1C[0x370 - 0x1E]; - s16 unk370; - s16 unk372; - s16 unk374; - s16 unk376; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + /* 0x8 */ struct PokemonStruct *pokeStruct; + /* 0xC */ u8 isTeamLeader; + /* 0x10 */ struct Move *moves; + u8 fill14[0x1C - 0x14]; + u32 unk1C; + u8 fill20[0x50 - 0x20]; + u32 unk50; + u32 unk54; + struct UnkTextStruct2 unk58[4]; + u32 unkB8; }; -extern struct unkStruct_3001B60 *gUnknown_3001B60; - -extern struct UnkTextStruct2 gUnknown_80DC9B0; -extern struct UnkTextStruct2 gUnknown_80DC9C8; +extern struct unkStruct_203B270 *gUnknown_203B270; +extern struct UnkTextStruct2 gUnknown_80DC25C; +extern struct UnkTextStruct2 gUnknown_80DC274; +extern void sub_8012D08(void *, u32); extern void sub_8013818(void *, u32, u32, u32); -extern bool8 sub_80023E4(u32); -extern void sub_808FF20(u32 *, struct PokemonStruct *, bool8); -extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32); -extern s32 GetKeyPress(void *); -extern bool8 sub_8013938(void *); -extern void sub_802452C(void); -extern void PlayMenuSoundEffect(u32); -extern void sub_8013984(void *); -void sub_80922B4(u8 *buffer, u8 *string, s32 size); -bool8 ComparePokemonNames(s16 a1, s16 a2); +u32 sub_8006544(u32 index); +s32 sub_801F3F8(void); +void sub_8013780(u32 *, u32); +void sub_801F280(u32); -void sub_8024588(void); -void sub_80245D0(void); -void sub_8024604(void); - -extern u8 gUnknown_80DC9A4[]; - -void SortbyInternalNo(s32 param_1, s32 param_2); -void SortbyAlphabetNo(s32 param_1,s32 param_2); -void SortbyName(s32 param_1,s32 param_2); - -bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area) +u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u32 param_5,u32 param_6) { - if(area == GetFriendArea(pokemon->speciesNum)) - return TRUE; - else - return FALSE; -} - -void sub_80241A8(void) -{ - switch(gUnknown_3001B60->sortMethod) + s32 iVar5; + s32 iVar8; + s32 species_s32; + u8 param_4_u8; + s32 four; + + species_s32 = species; + param_4_u8 = param_4; + gUnknown_203B270 = MemoryAlloc(sizeof(struct unkStruct_203B270), 8); + gUnknown_203B270->unk4 = param_4_u8; + gUnknown_203B270->unk5 = 1; + gUnknown_203B270->unk6 = 1; + gUnknown_203B270->unk7 = 1; + gUnknown_203B270->unk0 = param_1; + switch(param_1) { - case 2: - if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { - SortbyAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); - } - if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { - SortbyAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); - } - break; - case 3: - if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { - SortbyName(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); - } - if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { - SortbyName(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); - } - break; - case 1: - if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { - SortbyInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); - } - if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { - SortbyInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); - } + case 2: + case 3: + gUnknown_203B270->unk5 = 0; + gUnknown_203B270->unk6 = 0; + gUnknown_203B270->unk7 = 0; break; + case 0: + case 1: + break; } -} - - -void SortbyInternalNo(s32 param_1, s32 param_2) -{ - s16 *r4; - s32 iVar4; - s16 *r10; - s16 *r5; - s32 r6; - s32 r1; - s32 r7; - s32 r9; - - r10 = &gUnknown_3001B60->unk18 + param_2; - r7 = param_1; - r1 = param_2 - 1; - if (r7 < r1) { - r9 = r1; - do { - r4 = r10; - r6 = r1; - iVar4 = r7 + 1; - for (; r6 > r7; r6--) { - if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) { - r1 = *r4; - *r4 = *r5; - *r5 = r1; - } - r4 = r5; - } - r7 = iVar4; - r1 = r9; - } while (iVar4 < r1); + gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; + gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader; + gUnknown_203B270->moves = moves; + gUnknown_203B270->unkB8 = param_5; + iVar8 = iVar5 = sub_801F3F8(); + four = 4; + if (iVar8 < four) { + iVar8 = 4; } -} - -void SortbyAlphabetNo(s32 param_1,s32 param_2) -{ - s16 *r4; - s32 iVar4; - s16 *r10; - s16 *r5; - s32 r6; - s32 r1; - s32 r7; - s32 r9; - - r10 = &gUnknown_3001B60->unk18 + param_2; - r7 = param_1; - r1 = param_2 - 1; - if (r7 < r1) { - r9 = r1; - do { - r4 = r10; - r6 = r1; - iVar4 = r7 + 1; - for (; r6 > r7; r6--) { - if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) { - r1 = *r4; - *r4 = *r5; - *r5 = r1; - } - r4 = r5; - } - r7 = iVar4; - r1 = r9; - } while (iVar4 < r1); + sub_8006518(gUnknown_203B270->unk58); + gUnknown_203B270->unk50 = param_6; + gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; + if (gUnknown_203B270->unkB8 != 0) { + gUnknown_203B270->unk54 = sub_8006544(param_6); + gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; } -} - -void SortbyName(s32 param_1,s32 param_2) -{ - s16 *r4; - s32 iVar4; - s16 *r10; - s16 *r5; - s32 r6; - s32 r1; - s32 r7; - s32 r9; - - r10 = &gUnknown_3001B60->unk18 + param_2; - r7 = param_1; - r1 = param_2 - 1; - if (r7 < r1) { - r9 = r1; - do { - r4 = r10; - r6 = r1; - iVar4 = r7 + 1; - for (; r6 > r7; r6--) { - r5 = r4 - 1; - if (ComparePokemonNames(*r5, *r4)) { - r1 = *r4; - *r4 = *r5; - *r5 = r1; - } - r4 = r5; - } - r7 = iVar4; - r1 = r9; - } while (iVar4 < r1); - } -} - -struct PokemonStruct *sub_80243E8(void) -{ - u8 buffer [40]; - u8 nameBuffer [20]; - struct PokemonStruct *pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_3001B60->unk1A[gUnknown_3001B60->unk376 * gUnknown_3001B60->unk374 + gUnknown_3001B60->unk370]]; - - sub_80922B4(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH); - sprintfStatic(buffer, gUnknown_80DC9A4,nameBuffer); // %s - return pokeStruct; -} - -bool8 sub_8024458(s16 speciesNum, s32 param_2) -{ - s32 speciesNum_s32 = speciesNum; - gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8); - gUnknown_203B2AC->speciesNum = speciesNum_s32; - gUnknown_203B2AC->unkE0 = param_2; - gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2]; - sub_8006518(gUnknown_203B2AC->unkE8); - gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9C8; - gUnknown_203B2AC->unkE4->unk14 = gUnknown_203B2AC->unk148; - gUnknown_203B2AC->unk148[2] = 10; - sub_8024604(); - sub_802452C(); - sub_8013984(gUnknown_203B2AC); - return TRUE; -} - -u8 sub_80244E4(void) -{ - switch(GetKeyPress(gUnknown_203B2AC)) - { - case INPUT_B_BUTTON: - PlayMenuSoundEffect(1); - return 2; - case INPUT_A_BUTTON: - PlayMenuSoundEffect(0); - return 3; - default: - if (sub_8013938(gUnknown_203B2AC) != 0) { - sub_802452C(); - return 1; - } - else { - return 0; - } - } -} - -void sub_802452C(void) -{ - sub_8024588(); - sub_80245D0(); -} - -void sub_802453C(void) -{ - if(gUnknown_203B2AC) - { - gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9B0; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B2AC->unkE8, 1, 1); - MemoryFree(gUnknown_203B2AC); - gUnknown_203B2AC = NULL; - } -} - -void sub_8024588(void) -{ - gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20; - gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E; - gUnknown_203B2AC->unk148[3] = 0; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B2AC->unkE8,1,1); -} - -void sub_80245D0(void) -{ - CreatePokemonInfoTabScreen - (gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E], - gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C, - &gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0); -} - -void sub_8024604(void) -{ - struct PokemonStruct *pokeStruct; - u32 *iVar3; - - gUnknown_203B2AC->unk34[0] = 2; - gUnknown_203B2AC->unk34[1] = 3; - gUnknown_203B2AC->unk34[2] = 5; - sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0); - iVar3 = &gUnknown_203B2AC->unk4C; - pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum]; - sub_808FF20(iVar3,pokeStruct, sub_80023E4(7)); + sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B270->unk58,1,1); + sub_8013818(&gUnknown_203B270->unk1C,iVar5,iVar5,param_6); + sub_8013780(&gUnknown_203B270->unk1C,0); + sub_801F280(1); + return 1; } diff --git a/src/code_801EE10_1.c b/src/code_801EE10_1.c new file mode 100644 index 000000000..ec3f969d6 --- /dev/null +++ b/src/code_801EE10_1.c @@ -0,0 +1,312 @@ +#include "global.h" +#include "constants/input.h" +#include "code_800D090.h" +#include "pokemon.h" +#include "input.h" +#include "memory.h" +#include "text.h" + +struct unkStruct_203B2AC +{ + u8 unk0[0x1E]; + s16 unk1E; + s16 unk20; + u8 unk22[0x34 - 0x22]; + u32 unk34[3]; + u8 unk40[0x48 - 0x40]; + s16 speciesNum; + u32 unk4C; + u8 unk50[0xB0 - 0x50]; + u32 unkB0; + u8 fillB4[0xE0 - 0xB4]; + u32 unkE0; + struct UnkTextStruct2 *unkE4; + struct UnkTextStruct2 unkE8[4]; + u8 unk148[4]; +}; +extern struct unkStruct_203B2AC *gUnknown_203B2AC; + +struct unkStruct_3001B60 +{ + u32 unk0; + u32 sortMethod; + u32 unk8; + u32 unkC; + u32 unk10; + u8 fill14[0x18 - 0x14]; + s16 unk18; + s16 unk1A[2]; + u8 fill1C[0x370 - 0x1E]; + s16 unk370; + s16 unk372; + s16 unk374; + s16 unk376; +}; + +extern struct unkStruct_3001B60 *gUnknown_3001B60; + +extern struct UnkTextStruct2 gUnknown_80DC9B0; +extern struct UnkTextStruct2 gUnknown_80DC9C8; + +extern void sub_8013818(void *, u32, u32, u32); +extern bool8 sub_80023E4(u32); +extern void sub_808FF20(u32 *, struct PokemonStruct *, bool8); +extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32); +extern s32 GetKeyPress(void *); +extern bool8 sub_8013938(void *); +extern void sub_802452C(void); +extern void PlayMenuSoundEffect(u32); +extern void sub_8013984(void *); +void sub_80922B4(u8 *buffer, u8 *string, s32 size); +bool8 ComparePokemonNames(s16 a1, s16 a2); + +void sub_8024588(void); +void sub_80245D0(void); +void sub_8024604(void); + +extern u8 gUnknown_80DC9A4[]; + +void SortbyInternalNo(s32 param_1, s32 param_2); +void SortbyAlphabetNo(s32 param_1,s32 param_2); +void SortbyName(s32 param_1,s32 param_2); + +bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area) +{ + if(area == GetFriendArea(pokemon->speciesNum)) + return TRUE; + else + return FALSE; +} + +void sub_80241A8(void) +{ + switch(gUnknown_3001B60->sortMethod) + { + case 2: + if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { + SortbyAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); + } + if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { + SortbyAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); + } + break; + case 3: + if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { + SortbyName(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); + } + if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { + SortbyName(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); + } + break; + case 1: + if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) { + SortbyInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10); + } + if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) { + SortbyInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8); + } + break; + } +} + + +void SortbyInternalNo(s32 param_1, s32 param_2) +{ + s16 *r4; + s32 iVar4; + s16 *r10; + s16 *r5; + s32 r6; + s32 r1; + s32 r7; + s32 r9; + + r10 = &gUnknown_3001B60->unk18 + param_2; + r7 = param_1; + r1 = param_2 - 1; + if (r7 < r1) { + r9 = r1; + do { + r4 = r10; + r6 = r1; + iVar4 = r7 + 1; + for (; r6 > r7; r6--) { + if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) { + r1 = *r4; + *r4 = *r5; + *r5 = r1; + } + r4 = r5; + } + r7 = iVar4; + r1 = r9; + } while (iVar4 < r1); + } +} + +void SortbyAlphabetNo(s32 param_1,s32 param_2) +{ + s16 *r4; + s32 iVar4; + s16 *r10; + s16 *r5; + s32 r6; + s32 r1; + s32 r7; + s32 r9; + + r10 = &gUnknown_3001B60->unk18 + param_2; + r7 = param_1; + r1 = param_2 - 1; + if (r7 < r1) { + r9 = r1; + do { + r4 = r10; + r6 = r1; + iVar4 = r7 + 1; + for (; r6 > r7; r6--) { + if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) { + r1 = *r4; + *r4 = *r5; + *r5 = r1; + } + r4 = r5; + } + r7 = iVar4; + r1 = r9; + } while (iVar4 < r1); + } +} + +void SortbyName(s32 param_1,s32 param_2) +{ + s16 *r4; + s32 iVar4; + s16 *r10; + s16 *r5; + s32 r6; + s32 r1; + s32 r7; + s32 r9; + + r10 = &gUnknown_3001B60->unk18 + param_2; + r7 = param_1; + r1 = param_2 - 1; + if (r7 < r1) { + r9 = r1; + do { + r4 = r10; + r6 = r1; + iVar4 = r7 + 1; + for (; r6 > r7; r6--) { + r5 = r4 - 1; + if (ComparePokemonNames(*r5, *r4)) { + r1 = *r4; + *r4 = *r5; + *r5 = r1; + } + r4 = r5; + } + r7 = iVar4; + r1 = r9; + } while (iVar4 < r1); + } +} + +struct PokemonStruct *sub_80243E8(void) +{ + u8 buffer [40]; + u8 nameBuffer [20]; + struct PokemonStruct *pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_3001B60->unk1A[gUnknown_3001B60->unk376 * gUnknown_3001B60->unk374 + gUnknown_3001B60->unk370]]; + + sub_80922B4(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH); + sprintfStatic(buffer, gUnknown_80DC9A4,nameBuffer); // %s + return pokeStruct; +} + +bool8 sub_8024458(s16 speciesNum, s32 param_2) +{ + s32 speciesNum_s32 = speciesNum; + gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8); + gUnknown_203B2AC->speciesNum = speciesNum_s32; + gUnknown_203B2AC->unkE0 = param_2; + gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2]; + sub_8006518(gUnknown_203B2AC->unkE8); + gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9C8; + gUnknown_203B2AC->unkE4->unk14 = gUnknown_203B2AC->unk148; + gUnknown_203B2AC->unk148[2] = 10; + sub_8024604(); + sub_802452C(); + sub_8013984(gUnknown_203B2AC); + return TRUE; +} + +u8 sub_80244E4(void) +{ + switch(GetKeyPress(gUnknown_203B2AC)) + { + case INPUT_B_BUTTON: + PlayMenuSoundEffect(1); + return 2; + case INPUT_A_BUTTON: + PlayMenuSoundEffect(0); + return 3; + default: + if (sub_8013938(gUnknown_203B2AC) != 0) { + sub_802452C(); + return 1; + } + else { + return 0; + } + } +} + +void sub_802452C(void) +{ + sub_8024588(); + sub_80245D0(); +} + +void sub_802453C(void) +{ + if(gUnknown_203B2AC) + { + gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9B0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2AC->unkE8, 1, 1); + MemoryFree(gUnknown_203B2AC); + gUnknown_203B2AC = NULL; + } +} + +void sub_8024588(void) +{ + gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20; + gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E; + gUnknown_203B2AC->unk148[3] = 0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2AC->unkE8,1,1); +} + +void sub_80245D0(void) +{ + CreatePokemonInfoTabScreen + (gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E], + gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C, + &gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0); +} + +void sub_8024604(void) +{ + struct PokemonStruct *pokeStruct; + u32 *iVar3; + + gUnknown_203B2AC->unk34[0] = 2; + gUnknown_203B2AC->unk34[1] = 3; + gUnknown_203B2AC->unk34[2] = 5; + sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0); + iVar3 = &gUnknown_203B2AC->unk4C; + pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum]; + sub_808FF20(iVar3,pokeStruct, sub_80023E4(7)); +} diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 943beef36..ca6b66495 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -423,7 +423,7 @@ void sub_8026E08(u32 r0) sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum); sprintfStatic(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames); x = sub_8008ED0(buffer1); - xxx_call_draw_string(((gUnknown_80DD370.unk0c << 3) - x) / 2, 3, buffer1, r0, 0); + xxx_call_draw_string(((gUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0); sub_80073E0(r0); } diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index d08ccac6a..fc6476250 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -1169,7 +1169,7 @@ void sub_801A9E0(void) break; } if ((sub_801AED0(teamItemIndex) & 1) != 0) { - sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unk0c - 2) * 8,10); + sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10); } } sub_80073E0(gUnknown_203B224->unk88); diff --git a/src/mailbox.c b/src/mailbox.c index d511f9865..31516219a 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -172,7 +172,7 @@ void sub_802E0A0(void) CreateMailActionMenu(); gUnknown_203B304->unk10C[2] = gUnknown_80E02B4; sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC); - gUnknown_203B304->unk10C[2].unk0c = 6; + gUnknown_203B304->unk10C[2].unkC = 6; gUnknown_203B304->unk10C[3] = gUnknown_80E02CC; break; default: diff --git a/src/menu_input.c b/src/menu_input.c index 30f3e9ff6..77fe1018b 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -1,8 +1,17 @@ #include "global.h" +#include "constants/colors.h" #include "constants/input.h" #include "menu.h" #include "text.h" +#include "util.h" +#include "code_800D090.h" +struct unkChar +{ + u32 unk0; + s16 unk4; + s16 unk6; +}; extern struct UnkTextStruct1 gUnknown_2027370[4]; extern u8 gUnknown_80D4828[]; @@ -12,23 +21,178 @@ extern u32 sub_80137A8(u32 *); void MoveMenuCursorUp(u32 *); void MoveMenuCursorDown(u32 *); extern void sub_80073B8(u32); -extern s32 sub_8008ED0(u8 *); +extern s32 sub_8008ED0(const u8 *); extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); -void sprintfStatic(char *buffer, const char *text, ...); extern s32 sub_8013800(u32 *, s32); extern void sub_80073E0(u32); extern void sub_8013660(u32 *); void AddMenuCursorSprite(void *); - void sub_8012EBC(struct MenuStruct *param_1); - -extern u32 gUnknown_80D47B8; extern void sub_8013134(u32 *, u32, u32); extern void sub_80137B0(u32 *, u32); - extern s16 sub_8009614(u32, u32); +extern u32 ReturnIntFromChar2(u8); +struct unkChar *GetCharacter(u32); +extern void xxx_call_draw_char(u32, u32, u32, u32, u32); -void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *param_3,u16 *param_4,s32 param_5, +const u32 gDefaultMenuTextColors[] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED }; +void sub_8012D08(struct UnkTextStruct2 *, s32); + +void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6) +{ + s32 iVar1; + u32 uVar2; + struct unkChar *iVar3; + s32 counter; + s32 *piVar3; + s32 *piVar4; + s32 total_x; + s32 decimal [8]; + + total_x = 0; + ConvertToDecimal(decimal,n,len); + counter = len - 1; + if (0 < counter) { + piVar3 = &decimal[counter]; + if(*piVar3 == 0) + { + do { + *piVar3 = 0xff; + piVar3--; + counter--; + if (counter <= 0) break; + } while(*piVar3 == 0); + } + } + + counter = 0; + if ((counter < len) && (decimal[0] != 0xFF)) { + piVar4 = &decimal[0]; + do { + iVar1 = *piVar4; + piVar4++; + uVar2 = ReturnIntFromChar2(iVar1 + 0x30U); + iVar3 = GetCharacter(uVar2); + total_x += iVar3->unk6; + xxx_call_draw_char(x - total_x,y,uVar2,param_5,param_6); + counter++; + if (counter >= len) { + break; + } + } while (*piVar4 != 0xff); + } +} + +void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5) +{ + u32 add_x; + struct unkChar *iVar3; + u32 uVar2; + + uVar2 = ReturnIntFromChar2(param_3); + iVar3 = GetCharacter(uVar2); + if (iVar3->unk6 < 0xc) { + add_x = ((0xc - iVar3->unk6) / 2); + } + else { + add_x = 0; + } + xxx_call_draw_char(x + add_x,y,uVar2,param_4,param_5); +} + +void sub_8012CAC(struct UnkTextStruct2 *param_1, struct MenuItem *param_2) +{ + s16 length; + int r5; + int r6; + int r7; + s32 iVar4; +#ifndef NONMATCHING + register s32 r0 asm("r0"); +#else + s32 r0; +#endif + + r7 = 0; + r6 = 0; + if (param_2->text != NULL) { + r5 = 0x10000; + r0 = r5; + do { + r0 = r5; + r5 = r5 + 0x10000; + r7 = r0 >> 0x10; + length = sub_8008ED0(param_2->text); + if (length > r6) { + r6 = length; + } + param_2++; + } while (param_2->text != NULL); + } + if (r6 < 0) + iVar4 = r6 + 7; + else + iVar4 = r6; + param_1->unkC = (iVar4 >> 3) + 2; + sub_8012D08(param_1, r7); +} + +NAKED +void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2) +{ + asm_unified( + "\tpush {r4,lr}\n" + "\tadds r4, r0, 0\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0xC\n" + "\tbl sub_80095E4\n" + "\tlsls r0, 16\n" + "\tasrs r1, r0, 16\n" + "\tldr r0, [r4, 0x4]\n" + "\tcmp r0, 0x6\n" + "\tbne _08012D24\n" + "\tadds r0, r1, 0x2\n" + "\tlsls r0, 16\n" + "\tasrs r1, r0, 16\n" +"_08012D24:\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r4, 0xE]\n" + "\tstrh r0, [r4, 0x10]\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + +// https://decomp.me/scratch/QadfW (200 - 90% matched) - Seth +NAKED +void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2) +{ + asm_unified( + "\tpush {r4,lr}\n" + "\tadds r4, r0, 0\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0x18\n" + "\tbl sub_8009614\n" + "\tlsls r0, 16\n" + "\tasrs r1, r0, 16\n" + "\tldr r0, [r4, 0x4]\n" + "\tcmp r0, 0x6\n" + "\tbne _08012D50\n" + "\tadds r0, r1, 0x2\n" + "\tlsls r0, 16\n" + "\tasrs r1, r0, 16\n" +"_08012D50:\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r4, 0xE]\n" + "\tstrh r0, [r4, 0x10]\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + +void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index) { const u8 *textPtr; @@ -41,9 +205,9 @@ void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *para iVar1 = 0; param_1->index = index; param_1->menuItems = menuItems; - param_1->unk8 = param_3; - if (param_3 == 0) { - param_1->unk8 = &gUnknown_80D47B8; + param_1->menuTextColorArray = colorArray; + if (colorArray == NULL) { + param_1->menuTextColorArray = gDefaultMenuTextColors; } param_1->unkC = param_4; textPtr = menuItems->text; @@ -73,7 +237,7 @@ void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *para param_1->menuAction = -1; } -void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *param_3,u16 *param_4,s32 param_5, +void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index) { const u8 *textPtr; @@ -108,9 +272,9 @@ void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *para param_1->menuIndex = menuIndex; sub_80137B0(¶m_1->unk14,0); param_1->index = index; - param_1->unk8 = param_3; - if (param_3 == 0) { - param_1->unk8 = &gUnknown_80D47B8; + param_1->menuTextColorArray = colorArray; + if (colorArray == NULL) { + param_1->menuTextColorArray = gDefaultMenuTextColors; } param_1->unkC = param_4; param_1->menuItems = menuItems; @@ -131,11 +295,11 @@ void sub_8012EBC(struct MenuStruct *param_1) { s32 x; s32 y; - u32 uVar1; + u32 color; const u8 *textPtr; struct MenuItem *menuItemsPtr; u16 *_puVar2; - u32 *puVar3; + const u32 *colorArray; s32 counter; s32 index; struct UnkTextStruct2 textStack[4]; @@ -154,7 +318,7 @@ void sub_8012EBC(struct MenuStruct *param_1) xxx_format_and_draw((((ptr_text2->unk14[2]) * 8 - x) /2) + 8, 0,*(u8 **)param_1, param_1->index, 0); } - puVar3 = param_1->unk8; + colorArray = param_1->menuTextColorArray; menuItemsPtr = param_1->menuItems; _puVar2 = param_1->unkC; counter = 0; @@ -165,16 +329,18 @@ void sub_8012EBC(struct MenuStruct *param_1) textPtr++; } if (_puVar2 != NULL) { - uVar1 = puVar3[*_puVar2]; + color = colorArray[*_puVar2]; _puVar2++; } else if (menuItemsPtr->menuAction < 0) { - uVar1 = puVar3[1]; + // Color the action red + color = colorArray[1]; } else { - uVar1 = puVar3[0]; + // Use the default white + color = colorArray[0]; } - sprintfStatic(buffer,gUnknown_80D4828,uVar1,textPtr); + sprintfStatic(buffer,gUnknown_80D4828,color,textPtr); y = sub_8013800(¶m_1->unk14,counter); xxx_format_and_draw(8,y,buffer,param_1->index,0); menuItemsPtr++; diff --git a/src/pelipper_board.c b/src/pelipper_board.c index abe2e395f..fc4822484 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -178,7 +178,7 @@ void sub_802E94C(void) sub_802EC10(); gUnknown_203B308->unk10C[2] = gUnknown_80E0360; sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC); - gUnknown_203B308->unk10C[2].unk0c = 6; + gUnknown_203B308->unk10C[2].unkC = 6; gUnknown_203B308->unk10C[3] = gUnknown_80E0378; break; default: diff --git a/src/text.c b/src/text.c index 2c74e537b..4c1d95a8c 100644 --- a/src/text.c +++ b/src/text.c @@ -154,11 +154,11 @@ void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3) for (i = 0; i < 4; i++) { gUnknown_202AFC0[i] = a0[i]; - if (a0[i].unk0c) + if (a0[i].unkC) { sub_8006554(gUnknown_2027370, (void *)VRAM, gUnknown_20274B4, gUnknown_202B038, gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0); sub_80089AC(a0 + i, a3); - r9 += a0[i].unk0c * a0[i].unk10; + r9 += a0[i].unkC * a0[i].unk10; } } #ifdef NONMATCHING diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index d8b84a849..4c3df9c21 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -272,13 +272,13 @@ void sub_802D1B8(void) sub_802D5A4(); gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04; sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], gUnknown_203B2F8->unk118); - gUnknown_203B2F8->unk1A8[2].unk0c = 6; + gUnknown_203B2F8->unk1A8[2].unkC = 6; break; case 0xE: sub_802D63C(); gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C; sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], gUnknown_203B2F8->unk158); - gUnknown_203B2F8->unk1A8[3].unk0c = 6; + gUnknown_203B2F8->unk1A8[3].unkC = 6; break; default: for(iVar2 = 0; iVar2 < 4; iVar2++) From 9aeb855d41eb69d22908fc306170c43d7f2ec042 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 25 Feb 2023 10:21:10 -0800 Subject: [PATCH 14/21] chore: continue to use more MenuStruct around the code --- include/debug_menu.h | 3 +- include/kecleon_items.h | 3 +- include/mailbox.h | 3 +- include/menu.h | 8 ++--- include/menu_input.h | 15 +++++++++ include/wonder_mail_3.h | 6 ++-- src/adventure_log.c | 2 +- src/code_801B3C0.c | 10 ++---- src/debug_menu_2.c | 4 +-- src/debug_menu_mid.c | 11 ++----- src/felicity_bank_1.c | 2 +- src/kecleon_items_1.c | 5 +-- src/load_screen.c | 3 +- src/mailbox.c | 3 +- src/mailbox_1.c | 5 +-- src/main_menu.c | 6 ++-- src/makuhita_dojo_1.c | 3 +- src/menu_input.c | 65 ++++++++++++++++++++------------------- src/pelipper_board_1.c | 8 ++--- src/wonder_mail_2.c | 3 +- src/wonder_mail_2_1.c | 16 ++++------ src/wonder_mail_2_mid.c | 3 +- src/wonder_mail_3.c | 11 +++---- src/wonder_mail_4.c | 2 +- src/wonder_mail_6.c | 12 ++------ src/wonder_mail_802DF88.c | 11 +++---- 26 files changed, 99 insertions(+), 124 deletions(-) create mode 100644 include/menu_input.h diff --git a/include/debug_menu.h b/include/debug_menu.h index 51bdec32c..7e20bcd42 100644 --- a/include/debug_menu.h +++ b/include/debug_menu.h @@ -33,8 +33,7 @@ struct unkStruct_203B3F8 u16 unk6; struct PokemonStruct *pokemon; u32 unkC; - const char *unk10; - u8 fill14[0x60 - 0x14]; + struct MenuStruct unk10; u32 unk60; u32 unk64; u32 unk68; diff --git a/include/kecleon_items.h b/include/kecleon_items.h index db4827c48..b952896b1 100644 --- a/include/kecleon_items.h +++ b/include/kecleon_items.h @@ -25,8 +25,7 @@ struct unkStruct_203B210 u32 unk30; struct MenuItem unk34[8]; u16 unk74[8]; - u32 unk84; - u8 fill88[0xD4 - 0x88]; + struct MenuStruct unk84; struct OpenedFile *faceFile; u8 *unkD8; u16 unkDC; diff --git a/include/mailbox.h b/include/mailbox.h index 22133e0c4..79e4d1e41 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -19,8 +19,7 @@ struct unkStruct_203B304 u8 fill51[0x64 - 0x51]; u32 unk64; u32 unk68; - u32 unk6C; - u8 fill70[0xBC - 0x70]; + struct MenuStruct unk6C; struct MenuItem unkBC[8]; u16 unkFC[8]; struct UnkTextStruct2 unk10C[4]; diff --git a/include/menu.h b/include/menu.h index 528954bd8..bf663e5e4 100644 --- a/include/menu.h +++ b/include/menu.h @@ -11,7 +11,7 @@ struct MenuStruct { // size: 0x50 u8 *unk0; - /* 0x4 */ struct MenuItem *menuItems; + /* 0x4 */ const struct MenuItem *menuItems; const u32 *menuTextColorArray; u16 *unkC; /* 0x10 */ s32 index; @@ -23,9 +23,9 @@ struct MenuStruct u16 unk38; u8 fill3A[0x48 - 0x3A]; /* 0x48 */ s32 menuAction; - u8 unk4C; - u8 unk4D; - u8 unk4E; + bool8 unk4C; + bool8 unk4D; + bool8 unk4E; }; #endif // GUARD_MENU_H diff --git a/include/menu_input.h b/include/menu_input.h new file mode 100644 index 000000000..bed65b0e5 --- /dev/null +++ b/include/menu_input.h @@ -0,0 +1,15 @@ +#include "menu.h" + +void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6); +void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5); +void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2); +void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2); +void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2); +void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index); +void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index); +void sub_8012EA4(struct MenuStruct *param_1, bool8 r1); +void sub_8012EBC(struct MenuStruct *param_1); +u8 sub_8012FD8(struct MenuStruct *param_1); +u8 sub_80130A8(struct MenuStruct *param_1); +bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction); + diff --git a/include/wonder_mail_3.h b/include/wonder_mail_3.h index ceac36012..3d161c449 100644 --- a/include/wonder_mail_3.h +++ b/include/wonder_mail_3.h @@ -1,3 +1,4 @@ +#include "menu.h" struct unkStruct_203B2F4 { u8 fill0[0x1A]; @@ -50,9 +51,8 @@ struct unkStruct_203B2F8 u32 unk6C; u32 unk70; u32 unk74; - u8 unk78[0xC8 - 0x78]; - u8 unkC8[4]; - u8 fillCC[0x118 - 0xCC]; + struct MenuStruct unk78; + struct MenuStruct unkC8; struct MenuItem unk118[8]; struct MenuItem unk158[8]; u16 unk198[8]; diff --git a/src/adventure_log.c b/src/adventure_log.c index a8b622116..05e5dabd9 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -3,6 +3,7 @@ #include "input.h" #include "memory.h" #include "text.h" +#include "menu_input.h" struct AdventureLog { @@ -62,7 +63,6 @@ extern void xxx_call_draw_string(s32, u32, const u8 *, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void xxx_format_and_draw(u32, u32, const char *, u32, u32); const u8 *GetAdventureLogLine(u8 index); extern s32 sub_8013800(void *, s32); diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index b7e915560..6b7f3952e 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -7,6 +7,7 @@ #include "menu.h" #include "pokemon.h" #include "team_inventory.h" +#include "menu_input.h" struct subStruct_203B240 { @@ -45,10 +46,8 @@ struct unkStruct_203B234 struct unkStruct_8090F58 unk14; struct Item unk20; u32 unk24; - u32 unk28; - u8 fill2C[0x78 - 0x2C]; - u32 unk78; - u8 fill7C[0xC8 - 0x7C]; + struct MenuStruct unk28; + struct MenuStruct unk78; u32 unkC8; struct MenuItem unkCC[5]; struct UnkTextStruct2 unkF4[4]; @@ -78,7 +77,6 @@ extern struct UnkTextStruct2 gUnknown_80DBA88; extern struct UnkTextStruct2 gUnknown_80DBA70; extern void sub_801BB5C(void); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern void sub_801B748(u32); extern void sub_8008C54(u32); @@ -90,8 +88,6 @@ extern void sub_8013F84(void); extern u32 sub_8012A64(u32 *, u32); extern s32 sub_80913E0(struct Item *, u32, struct subStruct_203B240 **); extern void sub_80141B4(u8 *, u32, u32 *, u32); -extern void sub_8012EA4(u32 *, u32); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_801BB20(void); extern void sub_801A8D0(u32); extern void sub_801A9E0(void); diff --git a/src/debug_menu_2.c b/src/debug_menu_2.c index 56c73c648..093b6766f 100644 --- a/src/debug_menu_2.c +++ b/src/debug_menu_2.c @@ -5,6 +5,7 @@ #include "input.h" #include "menu.h" #include "debug_menu.h" +#include "menu_input.h" extern struct unkStruct_203B3F8 *gUnknown_203B3F8; extern struct UnkTextStruct2 gUnknown_80E7ED4; @@ -17,7 +18,6 @@ extern void sub_80073B8(u32); extern void sub_8013C68(u32 *); extern void sub_80073E0(u32); extern void sub_8023DA4(void); -extern void sub_8012EA4(const char **, u32); extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); void sub_803ACD0(u32); @@ -35,8 +35,6 @@ extern void sub_803AE58(); extern void sub_801602C(u32, u8 *); extern void sub_803AEB0(); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); -extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32); u32 sub_803AC24(void) { diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c index 27c8bcf6f..976bb8e22 100644 --- a/src/debug_menu_mid.c +++ b/src/debug_menu_mid.c @@ -5,6 +5,7 @@ #include "memory.h" #include "menu.h" #include "text.h" +#include "menu_input.h" struct unkStruct_203B3F0 { @@ -14,8 +15,7 @@ struct unkStruct_203B3F0 u8 fill5[0x8 - 5]; u32 unk8; struct MenuItem menuItems[8]; - u32 unk4C; - u8 fill50[0x9C - 0x50]; + struct MenuStruct unk4C; u32 unk9C; u32 unkA0; u32 unkA4; @@ -39,8 +39,7 @@ struct unkStruct_203B3F4 u8 fill5[0x8 - 5]; u32 unk8; struct MenuItem menuItems[8]; - u32 unk4C; - u8 fill50[0x9C - 0x50]; + struct MenuStruct unk4C; struct UnkTextStruct2 unk9C[4]; }; @@ -63,18 +62,14 @@ extern const char *gUnknown_80D4970[]; extern void sub_801C8C4(u32, u32, u32, u32); extern void sub_801CB5C(u32); extern void sub_801CCD8(); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); -extern void sub_8012EA4(u32 *, u32); extern void sub_80073E0(u32); extern void sub_8013C68(u32 *); extern void xxx_call_draw_string(s32, u32, const char *, u32, u32); extern u32 sub_801CA08(u32); extern u8 sub_801CB24(); extern void sub_801CBB8(); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_8013BBC(u32 *); extern u32 sub_801B410(); extern void sub_801B450(); diff --git a/src/felicity_bank_1.c b/src/felicity_bank_1.c index d9e4fc57d..504e487fd 100644 --- a/src/felicity_bank_1.c +++ b/src/felicity_bank_1.c @@ -2,6 +2,7 @@ #include "item.h" #include "team_inventory.h" #include "felicity_bank.h" +#include "menu_input.h" extern struct unkStruct_203B204 *gUnknown_203B204; @@ -14,7 +15,6 @@ extern u8 *gFelicityDeposit; extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void sub_80073E0(u32); extern void sub_8013C68(u32 *); extern s32 sub_80144A4(s32 *); diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index fc6476250..1feb29807 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -8,6 +8,7 @@ #include "kecleon_items.h" #include "team_inventory.h" #include "code_800D090.h" +#include "menu_input.h" extern struct unkStruct_203B210 *gUnknown_203B210; extern u16 gUnknown_203B218; @@ -35,8 +36,6 @@ extern u32 sub_801B410(void); extern void sub_801B450(void); extern void sub_8099690(u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, u32 *); extern u32 sub_8019EDC(u8); extern u32 sub_801A2A8(u8); extern s32 sub_801A8AC(void); @@ -48,12 +47,10 @@ extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern s32 sub_8013800(void *, u32); extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32); -extern void sub_8012BC4(s32, s32, s32, s32, s32, s32); extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); extern s32 sub_801AED0(s32); void sub_8007B7C(s32, s32, s32, s32, s32); extern void sub_801AE84(void); -extern void sub_8012D08(void *, u32); extern void sub_801A998(void); extern void sub_801A9E0(void); extern void Kecleon_SortItems(void); diff --git a/src/load_screen.c b/src/load_screen.c index 45b0f2a25..23af94777 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -11,6 +11,7 @@ #include "save.h" #include "code_800D090.h" #include "code_8094F88.h" +#include "menu_input.h" extern const struct FileArchive gTitleMenuFileArchive; @@ -41,8 +42,6 @@ void sub_80397B4(void); extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); -extern u8 sub_8012FD8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80920D8(u8 *); extern struct PokemonStruct *GetPlayerPokemonStruct(void); diff --git a/src/mailbox.c b/src/mailbox.c index 31516219a..490341886 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -5,6 +5,7 @@ #include "input.h" #include "mailbox.h" #include "wonder_mail.h" +#include "menu_input.h" extern void HandleMailboxMenu(void); @@ -71,11 +72,9 @@ static const u8 mailbox_fill[] = "pksdir0"; extern struct unkStruct_203B304 *gUnknown_203B304; extern void sub_802E088(u32); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void CreateMailboxMenu(void); extern void CreateMailActionMenu(void); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_802BD14(u32, u32, u32); extern void sub_802BE94(u32); extern void CreateMailMenu(void); diff --git a/src/mailbox_1.c b/src/mailbox_1.c index ec9f0883e..e42d7d45d 100644 --- a/src/mailbox_1.c +++ b/src/mailbox_1.c @@ -5,6 +5,7 @@ #include "input.h" #include "mailbox.h" #include "wonder_mail.h" +#include "menu_input.h" extern struct unkStruct_203B304 *gUnknown_203B304; @@ -12,7 +13,6 @@ extern u8 gMailAccepted[]; extern u8 gUnknown_80E0324[]; extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); @@ -27,8 +27,6 @@ extern u32 sub_802DEE0(void); extern void sub_802DF24(void); extern struct WonderMail *GetMailboxSlotInfo(u8); extern u8 HasNoMailinMailbox(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_802BDEC(u32); extern void sub_8096A78(struct WonderMail *); extern void sub_8096C80(void); @@ -42,7 +40,6 @@ extern void sub_802BEDC(void); extern u8 sub_802BE74(void); extern u8 HasNoAcceptedJobs(void); extern u8 HasNoPKMNNews(void); -extern void sub_8012EA4(u32 *, u32); void HandleMailboxMenu(void) { diff --git a/src/main_menu.c b/src/main_menu.c index 03ea15cb5..1936d64a2 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -638,7 +638,7 @@ SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, s32 ind else { sub_8012E04(¶m_1[index],menuItems,0,0,0,index); } - param_1[index].unk4C = 1; + param_1[index].unk4C = TRUE; } void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index) @@ -649,7 +649,7 @@ void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index) sub_800641C(dataArray, 1, 1); } -void sub_8035CF4(struct MenuStruct * Menu, u32 index, u8 r2) +void sub_8035CF4(struct MenuStruct * Menu, u32 index, bool8 r2) { Menu[index].unk4C = r2; Menu[index].unk4D = 1; @@ -881,7 +881,7 @@ u32 UpdateMainMenu(void) bool8 SetMainMenuText(void) { u32 menuChoice; - struct MenuItem *preload; + const struct MenuItem *preload; // Have to load the pointer before the index preload = gUnknown_203B34C->unk4[0].menuItems; diff --git a/src/makuhita_dojo_1.c b/src/makuhita_dojo_1.c index 290857ba8..4be0926a8 100644 --- a/src/makuhita_dojo_1.c +++ b/src/makuhita_dojo_1.c @@ -9,6 +9,7 @@ #include "text.h" #include "menu.h" #include "makuhita_dojo.h" +#include "menu_input.h" struct unkStruct_203B31C { @@ -66,7 +67,6 @@ extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern u8 sub_80A2740(s32 r0); extern s16 sub_80A2668(u32 r0); extern s32 sub_8013800(void *, u32); @@ -81,7 +81,6 @@ extern u8 sub_80138B8(void *, u32); extern void PlayMenuSoundEffect(u32); extern s32 GetKeyPress(void *); extern void sub_8013660(void *); -extern void sub_8012D08(void *, u32); extern void sub_8013818(void *, u32, u32, u32); extern void sub_803053C(void); extern u8 sub_80306A4(void); diff --git a/src/menu_input.c b/src/menu_input.c index 77fe1018b..0171b66aa 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -5,6 +5,7 @@ #include "text.h" #include "util.h" #include "code_800D090.h" +#include "menu_input.h" struct unkChar { @@ -36,7 +37,6 @@ struct unkChar *GetCharacter(u32); extern void xxx_call_draw_char(u32, u32, u32, u32, u32); const u32 gDefaultMenuTextColors[] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED }; -void sub_8012D08(struct UnkTextStruct2 *, s32); void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6) { @@ -71,7 +71,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6) do { iVar1 = *piVar4; piVar4++; - uVar2 = ReturnIntFromChar2(iVar1 + 0x30U); + uVar2 = ReturnIntFromChar2(iVar1 + 0x30); iVar3 = GetCharacter(uVar2); total_x += iVar3->unk6; xxx_call_draw_char(x - total_x,y,uVar2,param_5,param_6); @@ -100,7 +100,7 @@ void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5) xxx_call_draw_char(x + add_x,y,uVar2,param_4,param_5); } -void sub_8012CAC(struct UnkTextStruct2 *param_1, struct MenuItem *param_2) +void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2) { s16 length; int r5; @@ -192,7 +192,7 @@ void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2) "\tbx r0"); } -void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, +void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index) { const u8 *textPtr; @@ -231,18 +231,18 @@ void sub_8012D60(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colo sub_8013134(¶m_1->unk14,counter,index); param_1->menuIndex = menuIndex; sub_80137B0(¶m_1->unk14,0); - param_1->unk4C = 1; - param_1->unk4D = 1; - param_1->unk4E = 1; + param_1->unk4C = TRUE; + param_1->unk4D = TRUE; + param_1->unk4E = TRUE; param_1->menuAction = -1; } -void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, +void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index) { const u8 *textPtr; s32 counter; - struct MenuItem *menuItemPtr; + const struct MenuItem *menuItemPtr; s32 iVar1; s32 menuIndex; @@ -278,16 +278,16 @@ void sub_8012E04(struct MenuStruct *param_1,struct MenuItem *menuItems,u32 *colo } param_1->unkC = param_4; param_1->menuItems = menuItems; - param_1->unk4E = 0; - param_1->unk4C = 1; - param_1->unk4D = 1; + param_1->unk4E = FALSE; + param_1->unk4C = TRUE; + param_1->unk4D = TRUE; param_1->menuAction = -1; } -void sub_8012EA4(struct MenuStruct *param_1, u32 r1) +void sub_8012EA4(struct MenuStruct *param_1, bool8 r1) { param_1->unk4C = r1; - param_1->unk4D = 1; + param_1->unk4D = TRUE; sub_8012EBC(param_1); } @@ -297,7 +297,7 @@ void sub_8012EBC(struct MenuStruct *param_1) s32 y; u32 color; const u8 *textPtr; - struct MenuItem *menuItemsPtr; + const struct MenuItem *menuItemsPtr; u16 *_puVar2; const u32 *colorArray; s32 counter; @@ -307,7 +307,7 @@ void sub_8012EBC(struct MenuStruct *param_1) struct UnkTextStruct1 *ptr_text; struct UnkTextStruct2 *ptr_text2; - if (param_1->unk4D != 0) { + if (param_1->unk4D) { sub_80073B8(param_1->index); index = param_1->index; ptr_text = &gUnknown_2027370[index]; @@ -348,10 +348,10 @@ void sub_8012EBC(struct MenuStruct *param_1) } while (menuItemsPtr->text != NULL); } sub_80073E0(param_1->index); - param_1->unk4D = 0; + param_1->unk4D = FALSE; } - if (param_1->unk4E != 0) { - if (param_1->unk4C != 0) { + if (param_1->unk4E) { + if (param_1->unk4C) { AddMenuCursorSprite(¶m_1->unk14); } else { @@ -360,13 +360,14 @@ void sub_8012EBC(struct MenuStruct *param_1) } } -u8 sub_8012FD8(struct MenuStruct *param_1) { +u8 sub_8012FD8(struct MenuStruct *param_1) +{ u32 prevMenuIndex; s32 index; - struct MenuItem *item; + const struct MenuItem *item; prevMenuIndex = param_1->menuIndex; - if (param_1->unk4C != 0) { + if (param_1->unk4C) { switch(GetKeyPress(¶m_1->unk14)) { case INPUT_DPAD_DOWN: @@ -388,7 +389,7 @@ u8 sub_8012FD8(struct MenuStruct *param_1) { ((param_1->unkC == NULL || (param_1->unkC[index] != 1)))) { param_1->menuAction = item->menuAction; ++param_1; --param_1; - param_1->unk4C = 0; + param_1->unk4C = FALSE; param_1->unk38 = 0; } else @@ -405,7 +406,7 @@ u8 sub_8012FD8(struct MenuStruct *param_1) { case INPUT_B_BUTTON: if (-1 < param_1->menuItems[param_1->unk2E].menuAction) { param_1->menuAction = param_1->menuItems[param_1->unk2E].menuAction; - param_1->unk4C = 0; + param_1->unk4C = FALSE; PlayMenuSoundEffect(1); } break; @@ -415,12 +416,13 @@ u8 sub_8012FD8(struct MenuStruct *param_1) { return param_1->unk4C; } -u8 sub_80130A8(struct MenuStruct *param_1) { +u8 sub_80130A8(struct MenuStruct *param_1) +{ s32 index; s32 menuAction; - struct MenuItem *menuItem; + const struct MenuItem *menuItem; - if (param_1->unk4C != 0) { + if (param_1->unk4C) { switch(GetKeyPress(¶m_1->unk14)) { @@ -428,14 +430,14 @@ u8 sub_80130A8(struct MenuStruct *param_1) { index = sub_80137A8(¶m_1->unk14); menuItem = ¶m_1->menuItems[index]; param_1->menuAction = menuItem->menuAction; - param_1->unk4C = 0; + param_1->unk4C = FALSE; param_1->unk38 = 0; PlayMenuSoundEffect(0); break; case INPUT_B_BUTTON: if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) { param_1->menuAction = menuAction; - param_1->unk4C = 0; + param_1->unk4C = FALSE; PlayMenuSoundEffect(0); } break; @@ -445,8 +447,9 @@ u8 sub_80130A8(struct MenuStruct *param_1) { return param_1->unk4C; } -bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction){ - if(param_1->unk4C != 0){ +bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction) +{ + if(param_1->unk4C){ return TRUE; } if (menuAction != NULL){ diff --git a/src/pelipper_board_1.c b/src/pelipper_board_1.c index 011b8c8b7..74b9d3ff8 100644 --- a/src/pelipper_board_1.c +++ b/src/pelipper_board_1.c @@ -7,6 +7,7 @@ #include "text.h" #include "team_inventory.h" #include "wonder_mail.h" +#include "menu_input.h" struct unkStruct_203B308 { @@ -21,8 +22,7 @@ struct unkStruct_203B308 u8 fill51[0x64 - 0x51]; u32 unk64; u32 unk68; - u32 unk6C; - u8 fill70[0xBC - 0x70]; + struct MenuStruct unk6C; struct MenuItem unkBC[8]; u16 unkFC[8]; struct UnkTextStruct2 unk10C[4]; @@ -32,7 +32,6 @@ extern struct unkStruct_203B308 *gUnknown_203B308; extern u8 gPelipperBoard_Accepted[]; extern u8 gPelipperStatusSlash[]; extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); @@ -48,14 +47,11 @@ extern void sub_8096A78(struct WonderMail*); extern void ResetPelipperBoardSlot(u8); extern void sub_80965F4(void); extern void sub_802C2D4(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_802C1E4(u32); extern void PlaySound(u32); extern void SetPelipperBoardState(u32); extern u8 sub_802C26C(void); extern u8 HasNoAcceptedJobs(void); -extern void sub_8012EA4(u32 *, u32); void sub_802ECB4(void) { diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 6f4ed2bb3..4c4b40e07 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -13,6 +13,7 @@ #include "wonder_mail.h" #include "code_800D090.h" #include "code_8094F88.h" +#include "menu_input.h" struct unkStruct_203B2C8 { @@ -155,7 +156,6 @@ extern void sub_80073B8(u32); extern void sub_802BC7C(void); extern void sub_80073E0(u32); extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); extern void sub_803B6B0(u32, u32, u32, u32); extern s32 sub_8013800(u32 *, s32); @@ -166,7 +166,6 @@ extern void sub_801317C(u32 *); extern u8 HasNoMailinMailbox(void); extern void sub_802BF30(void); extern void CreateMailMenu(void); -extern void sub_8012D34(struct UnkTextStruct2 *, u32); extern s32 CountEmptyMailSlots(void); extern void sub_8013848(u32 *, s32, u32, u32); diff --git a/src/wonder_mail_2_1.c b/src/wonder_mail_2_1.c index 1a55c3e46..70664e93b 100644 --- a/src/wonder_mail_2_1.c +++ b/src/wonder_mail_2_1.c @@ -5,6 +5,7 @@ #include "text.h" #include "menu.h" #include "code_802C39C.h" +#include "menu_input.h" struct unkStruct_203B2E8 { @@ -37,8 +38,8 @@ struct unkStruct_203B2F0 u32 unk10; u8 fill14[0x68 - 0x14]; u32 unk68; - u8 fill6C[0xBC - 0x6C]; - u8 unkBC[0x10C - 0xBC]; + struct MenuStruct unk6C; + struct MenuStruct unkBC; struct MenuItem unk10C[8]; struct MenuItem unk14C[8]; u8 fill18C[0x19C - 0x18C]; @@ -131,7 +132,6 @@ const struct UnkTextStruct2 gUnknown_80DFDA4 = const u8 gUnknown_80DFDBC[] = "RESCUE EVENT"; static const u8 wonder_mail_fill1[] = "pksdir0"; -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_802CAA4(void); extern u8 IsJobSlotEmpty(u8); extern void sub_8008C54(u32); @@ -142,7 +142,6 @@ extern struct WonderMail* GetJobSlotInfo(u8); extern s32 sub_8013800(void *, u32); extern void sub_803B35C(void *, u32 *); extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void CreateRescueTitle(void *); extern void sub_8013984(u32 *); @@ -154,7 +153,6 @@ extern s32 GetKeyPress(void *); extern void PlayMenuSoundEffect(u32); extern void sub_8013660(void *); extern void sub_8013848(u32 *, s32, u32, u32); -extern void sub_8012D34(struct UnkTextStruct2 *, u32); extern bool8 IsPelipperBoardSlotEmpty(u8); extern void sub_802C910(u32); extern void sub_802CC00(void); @@ -163,9 +161,7 @@ extern void sub_802CD38(void); extern void sub_802CDB8(void); extern void sub_802C928(void); extern void sub_802C9D8(void); -extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_802DE84(u32 *); -extern void sub_8012EA4(u8 *, u32); extern void sub_802CBAC(void); s32 CountAcceptedJobs(void); @@ -499,13 +495,13 @@ void sub_802C9D8(void) break; case 2: sub_802C750(); - sub_8012D60(gUnknown_203B2F0->fill6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2); + sub_8012D60(&gUnknown_203B2F0->unk6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2); break; case 3: sub_802CBAC(); sub_802C750(); - sub_8012EA4(gUnknown_203B2F0->fill6C, 0); - sub_8012D60(gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3); + sub_8012EA4(&gUnknown_203B2F0->unk6C, 0); + sub_8012D60(&gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3); break; case 4: sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10); diff --git a/src/wonder_mail_2_mid.c b/src/wonder_mail_2_mid.c index 8b15dd368..8f4db0157 100644 --- a/src/wonder_mail_2_mid.c +++ b/src/wonder_mail_2_mid.c @@ -8,12 +8,12 @@ #include "pokemon_mail.h" #include "wonder_mail.h" #include "code_802C39C.h" +#include "menu_input.h" bool8 IsMailSlotEmpty(u8); extern void sub_8013984(void *); extern void sub_8013848(u32 *, s32, u32, u32); extern s32 sub_802C474(void); -extern void sub_8012D34(struct UnkTextStruct2 *, u32); extern void sub_802C328(void); extern void sub_802C39C(void); extern void PlayMenuSoundEffect(u32); @@ -33,7 +33,6 @@ extern u8 gBulletinBoardText[]; extern bool8 IsMailinJobSlot(struct WonderMail *); extern void CreateRescueTitle(void *); extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32); -extern void sub_8012BC4(s32, s32, s32, s32 ,s32 ,s32); struct unkStruct_203B2D8 diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 4c3df9c21..f6e97b5e8 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -8,6 +8,7 @@ #include "wonder_mail.h" #include "wonder_mail_3.h" #include "code_802C39C.h" +#include "menu_input.h" const struct UnkTextStruct2 gUnknown_80DFDD4 = { @@ -104,7 +105,6 @@ ALIGNED(4) const u8 gUnknown_80E014C[] = "New Mail"; ALIGNED(4) const u8 gUnknown_80E0158[] = "Old Mail"; static const u8 wonder_mail_3_fill[] = "pksdir0"; -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_802D63C(void); extern void sub_802D5A4(void); @@ -131,7 +131,6 @@ extern u8 *sub_8096DD8(void); extern u8 sub_8096C08(u8 *); extern void sub_802C750(void); extern void sub_802D1A0(u32); -extern void sub_8012EA4(u8 *, u32); extern struct WonderMail* GetJobSlotInfo(u8); extern void sub_803B35C(void *, u32*); extern void sub_802DE84(u32 *); @@ -143,13 +142,11 @@ extern void sub_802D690(void); extern void sub_8096C80(void); extern void sub_8096D24(void); extern void sub_80141B4(const u8 *, u32, u32, u32); -extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32); extern u8 *sub_8096DE8(void); extern void sub_8096A78(struct unkSubStruct_203B2F8 *); extern void sub_8014248(const char *text, u32, u32, struct MenuItem *r0, u32, u32, u32, u32, u32); struct unkStruct_803B344 *sub_803B344(u8); extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); @@ -391,13 +388,13 @@ void sub_802D2A8(void) break; case 0xd: sub_802C750(); - sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198, + sub_8012D60(&gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198, gUnknown_203B2F8->unk6C,2); break; case 0xe: sub_802C750(); - sub_8012EA4(gUnknown_203B2F8->unk78,0); - sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3); + sub_8012EA4(&gUnknown_203B2F8->unk78,0); + sub_8012D60(&gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3); break; case 0xf: sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex),&gUnknown_203B2F8->unk14); diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 305475f5f..d5608e381 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -7,6 +7,7 @@ #include "code_8094F88.h" #include "constants/wonder_mail.h" #include "code_802C39C.h" +#include "menu_input.h" struct unkStruct_203B320 { @@ -96,7 +97,6 @@ extern void sub_8013984(u32 *); extern void AddMenuCursorSprite(u32 *); extern s32 sub_8013800(void *, u32); extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); -extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index 0768ea868..65db98e1e 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -6,6 +6,7 @@ #include "pokemon.h" #include "menu.h" #include "code_8094F88.h" +#include "menu_input.h" extern bool8 HasNoWonderMailType(u32); @@ -14,10 +15,8 @@ struct unkStruct_203B328 // size: 0x11C u32 state; u8 mailIndex; - u32 unk8; - u8 fillC[0x58 - 0xC]; - u32 unk58; - u8 fill5C[0xA8 - 0x5C]; + struct MenuStruct unk8; + struct MenuStruct unk58; struct UnkTextStruct2 unkA8[4]; /* 0x108 */ struct OpenedFile *faceFile; /* 0x10C */ u8 *faceData; @@ -79,7 +78,6 @@ ALIGNED(4) const u8 gUnknown_80E0A0C[] = _( "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}."); const u8 wonder_mail_6_fill[] = "pksdir0"; -extern void sub_8012CAC(struct UnkTextStruct2 *, const struct MenuItem *); extern void sub_80306A8(s32, u32, u32, u32); extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void sub_8031300(void); @@ -97,10 +95,6 @@ extern void sub_8030DE4(); extern void sub_8030810(u32); extern void sub_803092C(void); extern void sub_8030D40(u8, u32); -extern void sub_8012EA4(u32 *, u32); -extern void sub_8012D60(u32 *, const struct MenuItem *, u32, u32, u32, u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern void sub_8095240(u8); bool8 sub_8030F58(u32 wonderMailType) diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c index 35ecb8e56..1e201dedc 100644 --- a/src/wonder_mail_802DF88.c +++ b/src/wonder_mail_802DF88.c @@ -9,6 +9,7 @@ #include "wonder_mail.h" #include "wonder_mail_3.h" #include "code_80958E8.h" +#include "menu_input.h" struct unkStruct_203B2FC { @@ -123,8 +124,6 @@ struct WonderMail *GetJobSlotInfo(u8); extern void sub_8096AF8(u8 *, u32, u32); extern void sub_8096EEC(void); extern void sub_803C21C(struct WonderMail *, u32 *); -extern u8 sub_8012FD8(u8 *); -extern void sub_8013114(u8 *r0, s32 *r1); extern u32 sub_802C598(s32); extern void sub_802C688(void); extern void sub_8096C80(void); @@ -227,7 +226,7 @@ void sub_802D940(void) menuAction = 0; sub_802C598(0); - if ((sub_8012FD8(gUnknown_203B2F8->unk78) == 0) && (sub_8013114(gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) { + if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) { gUnknown_203B2F8->unk6C = menuAction; } @@ -258,9 +257,9 @@ void sub_802D9F0(void) menuAction = 0; sub_802C598(0); - sub_8012FD8(gUnknown_203B2F8->unk78); - if (sub_8012FD8(gUnknown_203B2F8->unkC8) == 0) { - sub_8013114(gUnknown_203B2F8->unkC8,&menuAction); + sub_8012FD8(&gUnknown_203B2F8->unk78); + if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) { + sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction); } switch(menuAction) From e9b94680da9e384d14e906b9085fd1d655d7a3ff Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 25 Feb 2023 11:46:53 -0800 Subject: [PATCH 15/21] chore: continue to add more MenuStruct types --- include/kangaskhan_storage.h | 6 ++---- include/menu_input.h | 11 +++++------ src/code_801D760.c | 6 +++--- src/code_8023144.c | 13 +++++-------- src/debug_menu.c | 3 +-- src/friend_rescue_1.c | 3 +-- src/kangaskhan_storage_1.c | 2 +- src/kangaskhan_storage_2.c | 6 +----- src/kangaskhan_storage_3.c | 4 +--- src/main_menu.c | 6 +----- src/menu_input.c | 4 ++-- src/other_menus.c | 3 +-- src/thank_you_wonder_mail.c | 3 +-- src/trade_items_menu.c | 3 +-- src/wonder_mail.c | 3 +-- 15 files changed, 27 insertions(+), 49 deletions(-) diff --git a/include/kangaskhan_storage.h b/include/kangaskhan_storage.h index 2ef0cfc7b..3833e9a82 100644 --- a/include/kangaskhan_storage.h +++ b/include/kangaskhan_storage.h @@ -20,8 +20,7 @@ struct unkStruct_203B208 u32 unk20; struct MenuItem unk24[5]; u16 unk4C[5]; - u32 unk58; - u8 unk5C[0xA8 - 0x5C]; + struct MenuStruct unk58; u32 unkA8; u8 unkAC[0xBC - 0xAC]; u32 unkBC; @@ -51,8 +50,7 @@ struct unkStruct_203B20C u32 unk1C; struct MenuItem unk20[8]; u16 unk60[8]; - u32 unk70; - u8 fill74[0xC0 - 0x74]; + struct MenuStruct unk70; u32 unkC0; u32 unkC4; u32 unkC8; diff --git a/include/menu_input.h b/include/menu_input.h index bed65b0e5..bf14abb22 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -1,15 +1,14 @@ #include "menu.h" void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6); -void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5); +void sub_8012C60(u32 x, u32 y, u32 param_3, u32 param_4, u32 param_5); void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2); void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2); void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2); -void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index); -void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5, s32 index); +void sub_8012D60(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index); +void sub_8012E04(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index); void sub_8012EA4(struct MenuStruct *param_1, bool8 r1); void sub_8012EBC(struct MenuStruct *param_1); -u8 sub_8012FD8(struct MenuStruct *param_1); -u8 sub_80130A8(struct MenuStruct *param_1); +bool8 sub_8012FD8(struct MenuStruct *param_1); +bool8 sub_80130A8(struct MenuStruct *param_1); bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction); - diff --git a/src/code_801D760.c b/src/code_801D760.c index 33ae1b37f..59063f118 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -4,12 +4,14 @@ #include "constants/input.h" #include "file_system.h" #include "item.h" +#include "menu.h" #include "team_inventory.h" #include "memory.h" #include "input.h" #include "text.h" #include "rescue_team_info.h" #include "code_800D090.h" +#include "menu_input.h" struct unkStruct_203B258 { @@ -64,8 +66,6 @@ extern u32 sub_80270A4(); extern u32 sub_802C898(void); extern void sub_802C8F4(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern const char *sub_8098FB4(); extern void xxx_format_string(const char *, u8 *, u32 **, u32); extern s32 sub_8008ED0(u8 *); @@ -99,7 +99,7 @@ struct unk_203B250 u8 unk9; u8 fillA[0x14 - 0xA]; u32 unk14; - u32 unk18; // an input struct?? + struct MenuStruct unk18; }; struct unk_203B250 *gUnknown_203B250; diff --git a/src/code_8023144.c b/src/code_8023144.c index afb1745c1..278d455b2 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -2,11 +2,13 @@ #include "global.h" #include "constants/iq_skill.h" #include "memory.h" +#include "menu.h" #include "pokemon.h" #include "team_inventory.h" #include "text.h" #include "input.h" #include "item.h" +#include "menu_input.h" struct unkStruct_3001B5C { @@ -40,8 +42,7 @@ extern u16 gUnknown_203B29E; extern struct UnkTextStruct2 gUnknown_80DC91C; extern struct UnkTextStruct2 gUnknown_80DC904; -extern u8 sub_8023704(); -extern void sub_8012D08(void *, u32); +extern u8 sub_8023704(u8); extern void sub_8013818(void *, u32, u32, u32); extern void sub_8013984(u8 *); extern void sub_8023420(void); @@ -67,10 +68,8 @@ struct unkStruct_203B294 /* 0x48 */ struct PokemonStruct *pokeStruct; u32 unk4C; struct Item unk50; - u32 unk54; - u8 fill58[0xA4 - 0x58]; - u32 unkA4; - u8 fillA8[0xF4 - 0xA8]; + struct MenuStruct unk54; + struct MenuStruct unkA4; u32 unkF4; u32 unkF8; u16 unkFC; @@ -87,8 +86,6 @@ extern void sub_801B048(void); extern u32 sub_801B410(void); extern void sub_801B450(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_801A6E8(u32); extern void sub_8099690(u32); extern void sub_801A928(void); diff --git a/src/debug_menu.c b/src/debug_menu.c index c5c8d6d4a..fccfd1e6b 100644 --- a/src/debug_menu.c +++ b/src/debug_menu.c @@ -9,6 +9,7 @@ #include "pokemon.h" #include "save.h" #include "text_util.h" +#include "menu_input.h" extern struct DebugMenu *gUnknown_203B3EC; @@ -54,8 +55,6 @@ ALIGNED(4) static const char debug_menu_fill6[] = "pksdir0"; -extern u8 sub_8012FD8(struct MenuStruct*); -extern void sub_8013114(struct MenuStruct*, s32 *); extern void sub_80976F8(u8); extern void sub_803A3BC(void); extern void sub_803A3A0(void); diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index fa8ee75ea..25fe93abc 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -12,6 +12,7 @@ #include "save.h" #include "menu.h" #include "rescue_password_menu.h" +#include "menu_input.h" extern struct TeamInventory *gTeamInventory_203B460; @@ -46,8 +47,6 @@ extern void sub_80155F0(); extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32); extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); -extern u8 sub_8012FD8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, s32 *); extern u32 sub_801CA08(u32); extern void sub_801CBB8(void); extern void sub_801CB5C(u32); diff --git a/src/kangaskhan_storage_1.c b/src/kangaskhan_storage_1.c index 539788bdd..685beb005 100644 --- a/src/kangaskhan_storage_1.c +++ b/src/kangaskhan_storage_1.c @@ -4,6 +4,7 @@ #include "input.h" #include "item.h" #include "kangaskhan_storage.h" +#include "menu_input.h" extern struct unkStruct_203B208 *gUnknown_203B208; @@ -12,7 +13,6 @@ extern u8 gUnknown_80DB7A8; extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32); extern void sub_801CCD8(); extern void sub_801AD34(u32); -extern void sub_8012EA4(u32 *, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_8013C68(u32 *); diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c index 1eea97e9b..ceffe6d45 100644 --- a/src/kangaskhan_storage_2.c +++ b/src/kangaskhan_storage_2.c @@ -7,6 +7,7 @@ #include "team_inventory.h" #include "input.h" #include "kangaskhan_storage.h" +#include "menu_input.h" extern struct unkStruct_203B208 *gUnknown_203B208; @@ -30,8 +31,6 @@ extern s32 sub_80144A4(s32 *); extern void sub_801B450(); extern u32 sub_801B410(void); -extern u8 sub_8012FD8(u32 *r0); -extern void sub_8013114(u32 *, s32 *); extern void sub_801CBB8(); extern bool8 sub_801ADA0(u32); @@ -47,13 +46,11 @@ extern u32 sub_801A6E8(u32); extern u32 sub_801AEA8(void); extern u32 sub_801A8AC(void); extern void sub_801A928(void); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_80182E4(void); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_8013C68(u32 *); extern void sub_80073E0(u32); -extern void sub_8012EA4(u32 *, u32); extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32); extern void sub_801A9E0(); @@ -65,7 +62,6 @@ extern void sub_8013AA0(u32 *); extern void sub_801B3C0(struct Item *); extern void sub_801A5D8(u32, u32, u32, u32); extern void sub_801C8C4(u32, u32, u32, u32); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_801CB5C(u32); extern void sub_801A8D0(u32); extern u32 sub_801CFE0(u8); diff --git a/src/kangaskhan_storage_3.c b/src/kangaskhan_storage_3.c index f9a0f27e3..c0a611dd1 100644 --- a/src/kangaskhan_storage_3.c +++ b/src/kangaskhan_storage_3.c @@ -2,6 +2,7 @@ #include "item.h" #include "kangaskhan_storage.h" #include "team_inventory.h" +#include "menu_input.h" extern struct unkStruct_203B20C *gUnknown_203B20C; @@ -11,11 +12,8 @@ extern void sub_8017F10(u32); extern u8 sub_801CF14(u32); -extern u8 sub_8012FD8(u32 *r0); -extern void sub_8013114(u32 *, s32 *); extern void sub_801CBB8(void); extern void sub_8017F10(u32); -extern void sub_8012EA4(u32 *, u32); extern u8 sub_801ADA0(s32); extern void sub_801A928(void); diff --git a/src/main_menu.c b/src/main_menu.c index 1936d64a2..8973d35fe 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -2,6 +2,7 @@ #include "text.h" #include "menu.h" #include "input.h" +#include "menu_input.h" #include "adventure_log.h" #include "debug_menu.h" @@ -57,12 +58,7 @@ extern void sub_80370D4(void); extern void CleanWonderMailMenu(void); extern void sub_80383A8(void); extern void CleanSaveMenu(void); -extern u8 sub_8012FD8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, s32 *); extern u8 sub_803D0D8(); -extern void sub_8012D60(struct MenuStruct *, const struct MenuItem *, u32, u32, u32, u32); -extern void sub_8012E04(struct MenuStruct *, const struct MenuItem *, u32, u32, u32, u32); -void sub_8012EBC(struct MenuStruct *); void CleanMainMenu(void); void DrawMainMenu(void); diff --git a/src/menu_input.c b/src/menu_input.c index 0171b66aa..979aee9f5 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -360,7 +360,7 @@ void sub_8012EBC(struct MenuStruct *param_1) } } -u8 sub_8012FD8(struct MenuStruct *param_1) +bool8 sub_8012FD8(struct MenuStruct *param_1) { u32 prevMenuIndex; s32 index; @@ -416,7 +416,7 @@ u8 sub_8012FD8(struct MenuStruct *param_1) return param_1->unk4C; } -u8 sub_80130A8(struct MenuStruct *param_1) +bool8 sub_80130A8(struct MenuStruct *param_1) { s32 index; s32 menuAction; diff --git a/src/other_menus.c b/src/other_menus.c index 182f67302..851a4a4d6 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -7,6 +7,7 @@ #include "menu.h" #include "memory.h" #include "text.h" +#include "menu_input.h" struct unkStruct_203B35C { @@ -59,8 +60,6 @@ extern void sub_8035CF4(struct MenuStruct *,u32, u32); extern void sub_80376CC(); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); -extern u8 sub_80130A8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, u32 *); extern u32 sub_8037C10(u32); extern void sub_8037748(void); extern void sub_80371B8(void); diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 4ff865ea6..bdee3a07b 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -13,6 +13,7 @@ #include "text.h" #include "team_inventory.h" #include "code_800D090.h" +#include "menu_input.h" extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; @@ -155,7 +156,6 @@ const struct MenuItem gUnknown_80DEEE4[4] = extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32); -extern u8 sub_8012FD8(struct MenuStruct *r0); extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32); extern void sub_8030810(u32); extern u32 sub_8031DCC(void); @@ -167,7 +167,6 @@ extern u32 sub_8030768(u32); extern s8 sub_80307EC(void); extern void sub_8030D40(u8, u32); extern u32 sub_8030DA0(); -extern void sub_8013114(struct MenuStruct *r0, s32 *r1); extern void HandleThankYouMailPelipperMainMenu(); extern void sub_802AAC8(); extern void ReturnToThankYouMailMainMenu(); diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 35e4b2fde..e17d25d75 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -8,6 +8,7 @@ #include "memory.h" #include "save.h" #include "menu.h" +#include "menu_input.h" extern struct TradeItemsMenu *gTradeItemsMenu; @@ -87,8 +88,6 @@ extern u32 sub_801CA08(u32); extern void sub_801CBB8(); extern u8 sub_801CB24(); extern void sub_801B3C0(struct Item *); -extern u8 sub_8012FD8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, s32 *); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); extern void sub_801CCD8(); extern u32 sub_801B410(); diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 7f9ecbb8f..2cc3c97f4 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -11,6 +11,7 @@ #include "text.h" #include "team_inventory.h" #include "rescue_password_menu.h" +#include "menu_input.h" extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; @@ -36,7 +37,6 @@ extern void sub_803084C(); extern u32 sub_8030768(u32); extern s8 sub_80307EC(); extern void sub_8030D40(u8, u32); -extern u8 sub_8012FD8(struct MenuStruct *r0); extern void sub_8030810(u32); extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32); extern void sub_8035CF4(struct MenuStruct *r0, u32, u32); @@ -50,7 +50,6 @@ extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32 extern void sub_8095274(u32); extern void sub_80155F0(); extern void sub_80951BC(struct unkStruct_203B480 *r0); -extern void sub_8013114(struct MenuStruct *r0, s32 *r1); extern void sub_8023C60(); extern u32 sub_8023A94(u32); extern void sub_8024458(s16, u32); From 371316ae49e58011113f2c451a4efe6fe5d95699 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 26 Feb 2023 08:36:23 -0800 Subject: [PATCH 16/21] chore: add more MenuStruct defs --- include/debug_menu.h | 1 + include/friend_area_action_menu.h | 7 ++++--- include/gulpin_shop.h | 4 ++-- include/menu.h | 2 +- src/code_801DCC4.c | 14 +++++--------- src/debug_menu_1.c | 2 -- src/friend_area_action_menu.c | 3 +-- src/friend_area_action_menu_1.c | 3 +-- src/friend_list_menu.c | 9 ++++----- src/gulpin_shop_1.c | 3 +-- src/luminous_cave.c | 8 +++----- src/rescue_password_menu.c | 3 +-- src/save_menu.c | 4 +--- src/unk_menu_203B360.c | 3 +-- src/wonder_mail_3_mid.c | 9 ++------- 15 files changed, 28 insertions(+), 47 deletions(-) diff --git a/include/debug_menu.h b/include/debug_menu.h index 7e20bcd42..ceeca6511 100644 --- a/include/debug_menu.h +++ b/include/debug_menu.h @@ -3,6 +3,7 @@ #include "text.h" #include "menu.h" +#include "menu_input.h" enum DebugMenuOptions { diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index a57429025..01d76cfd4 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -1,6 +1,7 @@ #ifndef GUARD_FRIEND_AREA_ACTION_MENU_H #define GUARD_FRIEND_AREA_ACTION_MENU_H +#include "menu.h" struct unkStruct_203B2BC { // size: 0x1E0 @@ -21,15 +22,15 @@ struct unkStruct_203B2BC u32 unk70; s32 unk74; u32 unk78; - u32 unk7C; - u8 fill80[0xFD - 0x80]; + struct MenuStruct unk7C; + u8 fill80[0xFD - 0xCC]; u32 unkFD; u8 fill101[0x11C - 0x104]; struct MenuItem menuItems[4]; u8 fill120[0x16C - 0x13C]; // Structure of some sort - u32 unk16C; + u16 unk16C; u8 fill170[0x180 - 0x170]; struct UnkTextStruct2 unk180[4]; diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index bf6055972..1f5421e56 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -18,8 +18,8 @@ struct unkStruct_203B26C u32 unk24; struct MenuItem unk28[8]; u16 unk68[8]; - u32 unk78; - u8 fill7C[0x118 - 0x7C]; + struct MenuStruct unk78; + u8 fillC8[0x118 - 0xC8]; /* 0x118 */ struct OpenedFile *faceFile; /* 0x11C */ u8 *faceData; /* 0x120 */ u16 unk120; diff --git a/include/menu.h b/include/menu.h index bf663e5e4..4c8a93ba7 100644 --- a/include/menu.h +++ b/include/menu.h @@ -10,7 +10,7 @@ struct MenuItem struct MenuStruct { // size: 0x50 - u8 *unk0; + const u8 *unk0; // header text? /* 0x4 */ const struct MenuItem *menuItems; const u32 *menuTextColorArray; u16 *unkC; diff --git a/src/code_801DCC4.c b/src/code_801DCC4.c index d5e331aab..62c3b5319 100644 --- a/src/code_801DCC4.c +++ b/src/code_801DCC4.c @@ -3,6 +3,7 @@ #include "menu.h" #include "game_options.h" #include "text.h" +#include "menu_input.h" struct unkStruct_203B25C { @@ -11,8 +12,7 @@ struct unkStruct_203B25C u32 chosenHintIndex; struct GameOptions newOptions; u32 unk18; - const char *unk1C; - u8 fill20[0x6C - 0x20]; + struct MenuStruct unk1C; struct MenuItem menuItems[8]; u16 unkAC[8]; struct UnkTextStruct2 unkBC[4]; @@ -28,15 +28,12 @@ extern void sub_801E0FC(); extern void HandleChangeSettingsMenu(); extern void sub_801DD84(); extern void sub_801DED0(); -extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32); extern u32 sub_801E198(struct GameOptions *); extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32); extern void CreateHintDisplayScreen(u32); extern void sub_801E3F0(u32); extern void CreateHintSelectionScreen(u32); extern void CreateChangeSettingsConfirmMenu(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, u32 *); extern u32 sub_801E474(u32); extern u32 GetChosenHintIndex(void); extern void sub_801E54C(void); @@ -47,7 +44,6 @@ extern void sub_801E2C4(void); extern s32 sub_80144A4(s32 *); extern void SetWindowBGColor(void); extern void sub_8099690(u32); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern struct GameOptions *gGameOptionsRef; extern struct unkStruct_203B25C *gUnknown_203B25C; @@ -350,7 +346,7 @@ void sub_801DED0(void) switch(gUnknown_203B25C->state) { case 0: case 1: - gUnknown_203B25C->unk1C = gOthers_MenuOption; + gUnknown_203B25C->unk1C.unk0 = gOthers_MenuOption; sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->menuItems,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0); break; case 3: @@ -420,8 +416,8 @@ void HandleOthersMenu(void) s32 menuAction; menuAction = 0; - if (sub_8012FD8((u32 *)&gUnknown_203B25C->unk1C) == '\0') { - sub_8013114((u32 *)&gUnknown_203B25C->unk1C,&menuAction); + if (sub_8012FD8(&gUnknown_203B25C->unk1C) == '\0') { + sub_8013114(&gUnknown_203B25C->unk1C,&menuAction); gUnknown_203B25C->unk18 = menuAction; } switch(menuAction) diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c index 950ad7464..cfa79fe38 100644 --- a/src/debug_menu_1.c +++ b/src/debug_menu_1.c @@ -4,12 +4,10 @@ extern struct unkStruct_203B3F8 *gUnknown_203B3F8; extern u32 sub_8013BBC(u32 *); -extern u8 sub_8012FD8(void *); extern void sub_803AE58(void); extern u32 sub_8016080(void); extern void sub_803ACD0(u32); extern void sub_80160D8(void); -extern void sub_8013114(void *, s32 *); extern u32 sub_8023A94(u32); extern s16 sub_8023B44(void); diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index 2f7ba3fe7..865fdfea7 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -7,12 +7,12 @@ #include "pokemon.h" #include "team_inventory.h" #include "friend_area_action_menu.h" +#include "menu_input.h" extern struct unkStruct_203B2BC *gUnknown_203B2BC; extern void sub_80141B4(const char *r0, u32, u32 *r1, u32); extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32 *, u32, u32); extern void sub_8027D40(u32, struct BulkItem *); extern void sub_8023868(u32, u32, u32, u32); extern void sub_8023B7C(u32); @@ -30,7 +30,6 @@ extern void sub_801B3C0(struct Item *); extern void unk_CopyMoves4To8(struct Move *, struct Move *); extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void SetFriendAreaActionMenuState(u32); extern void ResetSprites(u8 ); extern void sub_802719C(); diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index a3e5070d0..ae673096f 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -6,6 +6,7 @@ #include "team_inventory.h" #include "pokemon.h" #include "friend_area_action_menu.h" +#include "menu_input.h" extern struct unkStruct_203B2BC *gUnknown_203B2BC; extern struct TeamInventory *gTeamInventory_203B460; @@ -16,8 +17,6 @@ extern u32 sub_801EF38(u8 r0); extern void sub_801F214(); extern void SetFriendAreaActionMenuState(u32); -extern u8 sub_8012FD8(u32 *r0); -extern void sub_8013114(u32 *, s32 *); extern void PlaySound(u32); extern void nullsub_104(); extern void sub_801A928(); diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index ca6b66495..db0eff817 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -1,11 +1,13 @@ #include "global.h" #include "constants/dungeon.h" #include "item.h" +#include "menu.h" #include "pokemon.h" #include "text.h" #include "team_inventory.h" #include "constants/move.h" #include "code_800D090.h" +#include "menu_input.h" struct unkStruct_203B2B8 { @@ -26,9 +28,8 @@ struct unkStruct_203B2B8 u32 unk70; u32 unk74; u32 unk78; - u32 unk7C; - u8 fill80[0xCC - 0x80]; - u32 unkCC; + struct MenuStruct unk7C; + struct MenuStruct unkCC; }; extern struct unkStruct_203B2B8 *gUnknown_203B2B8; extern u8 gAvailablePokemonNames[0x58]; @@ -69,8 +70,6 @@ extern void nullsub_104(void); extern void sub_801A928(void); extern void sub_8099690(u32); extern u32 sub_801A6E8(u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_801A8AC(void); extern u32 sub_8022860(void); diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c index 8752c06f5..1e3df6f10 100644 --- a/src/gulpin_shop_1.c +++ b/src/gulpin_shop_1.c @@ -6,6 +6,7 @@ #include "input.h" #include "menu.h" #include "gulpin_shop.h" +#include "menu_input.h" extern struct unkStruct_203B26C *gUnknown_203B26C; extern void UpdateGulpinShopState(u32); @@ -14,8 +15,6 @@ extern void sub_801F214(void); extern s32 sub_80144A4(s32 *); extern u32 sub_801F890(void); extern void sub_801F8D0(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, u32 *); extern u8 IsNextMoveLinked(u32, struct Move *); extern void PlaySound(u32); extern void sub_801EF38(u32); diff --git a/src/luminous_cave.c b/src/luminous_cave.c index 44ef0cb5b..5ba77795e 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -9,6 +9,7 @@ #include "random.h" #include "text.h" #include "team_inventory.h" +#include "menu_input.h" struct unkStruct_203B2B0 { @@ -32,8 +33,8 @@ struct unkStruct_203B2B0 u32 unk30; struct MenuItem unk34[8]; u16 unk74[0x8]; - u32 unk84; - u8 fill88[0x104 - 0x88]; + struct MenuStruct unk84; + u8 fillD4[0x104 - 0xD4]; struct OpenedFile *unk104; u8 *unk108; u16 unk10C; @@ -111,7 +112,6 @@ extern void nullsub_104(); void sub_8024DBC(void); void sub_8024E30(void); void sub_801AEE4(u32, u32); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); void sub_808F734(struct PokemonStruct *, s16); void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size); u32 sub_801602C(u32 r0, u8 *name); @@ -121,8 +121,6 @@ extern s32 sub_801A8AC(void); extern void sub_8099690(u32); extern void sub_801A928(void); extern void PlayMenuSoundEffect(u32); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, u32 *); extern u32 sub_801B410(void); extern void sub_801B450(void); extern u32 sub_8016080(void); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 9274924f8..08da6d89b 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -10,6 +10,7 @@ #include "rescue_password_menu.h" #include "code_8094F88.h" #include "wonder_mail.h" +#include "menu_input.h" extern u8 gRescuePasswordBuffer[]; extern u32 gUnknown_202EC4C; @@ -34,8 +35,6 @@ extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0); extern void sub_80951BC(struct unkStruct_203B480 *r0); extern bool8 sub_80951FC(struct unkStruct_203B480 *r0); -extern u8 sub_8012FD8(struct MenuStruct *r0); -extern void sub_8013114(struct MenuStruct *, s32 *); extern u32 sub_80154F0(void); extern void sub_8095274(u32); extern u32 sub_8031DCC(void); diff --git a/src/save_menu.c b/src/save_menu.c index 185e159cf..18bd592df 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -6,6 +6,7 @@ #include "memory.h" #include "text.h" #include "save.h" +#include "menu_input.h" struct unkSprite { @@ -136,12 +137,9 @@ extern void ResetSprites(u32); extern void sub_8038440(); extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); -extern u8 sub_80130A8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80384D0(); extern void sub_8038830(); extern void sub_80388C4(void); -extern u8 sub_8012FD8(struct MenuStruct *); extern void sub_8014114(); extern void sub_80140F8(void); extern void sub_8035CC0(struct UnkTextStruct2 *, u32); diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 8bfe5efc7..1ae4ac76d 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -4,6 +4,7 @@ #include "memory.h" #include "menu.h" #include "text.h" +#include "menu_input.h" struct unkSprite { @@ -33,8 +34,6 @@ extern void AddSprite(struct unkSprite *, u32, u32, u32); extern void sub_8038440(); extern void sub_8035CF4(struct MenuStruct *, u32, u32); extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); -extern u8 sub_80130A8(struct MenuStruct *); -extern void sub_8013114(struct MenuStruct *, u32 *); extern void sub_80384D0(); void sub_80382E4(s32 param_1) diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 52b1f59c1..a3918e39c 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -9,6 +9,7 @@ #include "rescue_team_info.h" #include "friend_area.h" #include "item.h" +#include "menu_input.h" struct unkStruct_803B344 { @@ -34,8 +35,7 @@ struct unkStruct_203B30C u8 fill4D[0x58 - 0x4D]; u8 *unk58; u32 unk5C; - u32 unk60; - u8 fill64[0xB0 - 0x64]; + struct MenuStruct unk60; struct MenuItem unkB0[8]; struct UnkTextStruct2 unkF0[4]; }; @@ -101,7 +101,6 @@ extern struct unkStruct_203B314 *gUnknown_203B314; extern u8 sub_802FCF0(u32); extern void sub_802F9C0(void); extern void sub_802FA50(void); -extern void sub_8012D08(struct UnkTextStruct2 *, u32); extern void sub_8013818(u32 *, u32, u32, u32); extern u32 sub_802FBF4(void); extern void sub_8013878(u32 *, s32); @@ -119,18 +118,14 @@ extern void sub_801B72C(void); extern u32 sub_801B6AC(void); extern void sub_802F108(void); extern s32 sub_80144A4(s32 *); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_803B35C(struct WonderMail*, u32 *); extern void sub_802DE84(u32 *); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_802CDD4(u32); extern void sub_802CED8(u32); extern void sub_802CFD0(void); extern u8 sub_802CEBC(void); extern u32 sub_802CE5C(u32); extern void sub_802CF14(void); -extern u8 sub_8012FD8(u32 *r0); -extern void sub_8013114(u32 *, s32 *); extern u32 sub_802DEE0(void); extern void sub_802DF24(void); extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); From 6122d3f6eacefe585cb4629b105e60a388948c00 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 26 Feb 2023 09:13:22 -0800 Subject: [PATCH 17/21] chore: more MenuStruct stuff --- src/friend_list_menu_1.c | 22 +++++++++------------- src/gulpin_shop.c | 2 +- src/pelipper_board.c | 6 ++---- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/friend_list_menu_1.c b/src/friend_list_menu_1.c index 1d60ce4ac..19f1ae683 100644 --- a/src/friend_list_menu_1.c +++ b/src/friend_list_menu_1.c @@ -6,6 +6,7 @@ #include "item.h" #include "pokemon.h" #include "moves.h" +#include "menu_input.h" // there might be more overlap with unkStruct_203B2BC @@ -19,10 +20,10 @@ struct unkStruct_203B2B4 u32 unk8; u8 unkC; u8 unkD; - s16 unkE; + s16 species; u32 unk10; struct BulkItem unk14; - u32 unk18; + struct BulkItem unk18; /* 0x1C */ struct PokemonStruct *pokeStruct; u32 moveIndex; // some sort of move index u16 moveID; @@ -30,9 +31,7 @@ struct unkStruct_203B2B4 u16 moveIDs[4]; // some list of move IDs u32 unk70; s32 unk74; - u32 unk78; - u32 unk7C; - u8 fill7C[0xC8 - 0x80]; + struct MenuStruct unk78; struct MenuItem unkC8[4]; u8 fillE8[0x108 - 0xE8]; s16 unk108[8]; @@ -70,7 +69,6 @@ extern void sub_8025E24(void); extern void sub_8025E44(void); extern void sub_802544C(void); extern void sub_8025518(void); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_8025728(void); extern void sub_802591C(void); extern u32 sub_801B3C0(struct Item *param_1); @@ -80,19 +78,17 @@ extern void sub_801A5D8(u32,u32, u32, u32); extern void sub_801A8D0(u32); extern void sub_801A9E0(void); extern void PlaySound(u32); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, s16 *, u32, u32); extern void sub_8024458(s16, u32); extern void sub_801BEEC(s16); extern void sub_8023B7C(u32); extern void sub_8023DA4(void); -extern void unk_CopyMoves4To8(struct Move *, struct Move *); // TODO convert arg 0 to PokemonMove struct * +extern void unk_CopyMoves4To8(struct Move *, struct Move *); extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32); extern void GetLinkedSequence(u32, struct Move *, u16*); extern void sub_801F808(u16 *); u32 sub_801602C(u32 r0, u8 *name); -extern void sub_8025E68(u32 , u32 *); +extern void sub_8025E68(u32 , struct BulkItem *); bool8 sub_80252F0(s32 param_1) { @@ -246,10 +242,10 @@ void sub_8025518(void) sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->unk70,2); break; case 4: - sub_8024458(gUnknown_203B2B4->unkE,2); + sub_8024458(gUnknown_203B2B4->species,2); break; case 5: - sub_801BEEC(gUnknown_203B2B4->unkE); + sub_801BEEC(gUnknown_203B2B4->species); break; case 0xb: sub_801A5D8(1,0,0,10); @@ -284,7 +280,7 @@ void sub_8025518(void) break; case 0xf: unk_CopyMoves4To8(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves); - sub_801EE10(3,gUnknown_203B2B4->unkE,gUnknown_203B2B4->moves,0,0,0); + sub_801EE10(3,gUnknown_203B2B4->species,gUnknown_203B2B4->moves,0,0,0); break; case 0x10: sub_801F1B0(1,0); diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 4d087e8dd..8ef689fb1 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -6,6 +6,7 @@ #include "input.h" #include "menu.h" #include "gulpin_shop.h" +#include "menu_input.h" extern struct unkStruct_203B26C *gUnknown_203B26C; extern const struct UnkTextStruct2 gUnknown_80DC11C; @@ -18,7 +19,6 @@ extern void sub_801EDA4(); extern void sub_801EDC0(); extern void sub_801E980(); extern void sub_801EA28(); -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_801EBC4(); u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct Move *param_3) diff --git a/src/pelipper_board.c b/src/pelipper_board.c index fc4822484..92c2b1b30 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -3,6 +3,7 @@ #include "text.h" #include "menu.h" #include "input.h" +#include "menu_input.h" // Guessing based off of 203B304 struct unkStruct_203B308 @@ -18,8 +19,7 @@ struct unkStruct_203B308 u8 fill51[0x64 - 0x51]; u32 unk64; u32 unk68; - u32 unk6C; - u8 fill70[0xBC - 0x70]; + struct MenuStruct unk6C; struct MenuItem unkBC[8]; u16 unkFC[8]; struct UnkTextStruct2 unk10C[4]; @@ -73,7 +73,6 @@ const u8 gPelipperBoard_Accepted[] = "Accepted"; const u8 gPelipperStatusSlash[] = "/"; static const u8 gPelipperfill[] = "pksdir0"; -extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_802ECB4(void); extern void nullsub_134(void); extern void sub_802ED4C(void); @@ -85,7 +84,6 @@ extern void sub_802EA58(void); extern void CreatePelipperBoardMenu(void); extern void sub_802EC10(void); -extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_802C10C(u32, u32, u32); extern void sub_802C28C(u32); extern void sub_802C39C(void); From d57a3d4d3eed63b7a1665dec6cca69ef37975af4 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 3 Mar 2023 15:19:40 -0800 Subject: [PATCH 18/21] more decomp --- asm/code_801B3C0.s | 1240 -------------------------------------------- src/code_801B3C0.c | 21 +- src/code_801C620.c | 721 +++++++++++++++++++++++++- 3 files changed, 718 insertions(+), 1264 deletions(-) diff --git a/asm/code_801B3C0.s b/asm/code_801B3C0.s index 9b840723e..9aeef9e0b 100644 --- a/asm/code_801B3C0.s +++ b/asm/code_801B3C0.s @@ -109,1244 +109,4 @@ _0801BC1C: bx r0 thumb_func_end sub_801BB5C - thumb_func_start sub_801BC24 -sub_801BC24: - ldr r0, _0801BC58 - ldr r0, [r0] - mov r12, r0 - movs r3, 0 - mov r1, r12 - adds r1, 0xCC - ldr r0, _0801BC5C - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _0801BC60 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x3 - str r0, [r1] - mov r0, r12 - adds r0, 0xDC - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - bx lr - .align 2, 0 -_0801BC58: .4byte gUnknown_203B234 -_0801BC5C: .4byte gUnknown_80D4920 -_0801BC60: .4byte gUnknown_80D4928 - thumb_func_end sub_801BC24 - - thumb_func_start sub_801BC64 -sub_801BC64: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BC8C - ldr r0, [sp] - cmp r0, 0x4 - beq _0801BC7E - cmp r0, 0x5 - beq _0801BC86 - b _0801BC8C -_0801BC7E: - movs r0, 0x8 - bl sub_801B748 - b _0801BC8C -_0801BC86: - movs r0, 0x7 - bl sub_801B748 -_0801BC8C: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_801BC64 - - thumb_func_start sub_801BC94 -sub_801BC94: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BCC6 - ldr r0, [sp] - cmp r0, 0x2 - beq _0801BCB8 - cmp r0, 0x2 - bgt _0801BCB2 - cmp r0, 0x1 - beq _0801BCC0 - b _0801BCC6 -_0801BCB2: - cmp r0, 0x3 - beq _0801BCC0 - b _0801BCC6 -_0801BCB8: - movs r0, 0xD - bl sub_801B748 - b _0801BCC6 -_0801BCC0: - movs r0, 0x6 - bl sub_801B748 -_0801BCC6: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_801BC94 - - thumb_func_start sub_801BCCC -sub_801BCCC: - push {lr} - movs r0, 0x1 - bl sub_801A6E8 - cmp r0, 0x4 - bhi _0801BD7A - lsls r0, 2 - ldr r1, _0801BCE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BCE4: .4byte _0801BCE8 - .align 2, 0 -_0801BCE8: - .4byte _0801BD7A - .4byte _0801BD7A - .4byte _0801BD70 - .4byte _0801BCFC - .4byte _0801BD34 -_0801BCFC: - bl sub_801A8AC - ldr r1, _0801BD28 - ldr r2, [r1] - str r0, [r2, 0x24] - ldr r1, _0801BD2C - ldr r1, [r1] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x20] - ldr r0, _0801BD30 - adds r1, r2, 0 - adds r1, 0x20 - adds r2, 0x14 - bl sub_8090E14 - movs r0, 0xA - bl sub_801B748 - b _0801BD7A - .align 2, 0 -_0801BD28: .4byte gUnknown_203B234 -_0801BD2C: .4byte gTeamInventory_203B460 -_0801BD30: .4byte gUnknown_202DEA8 -_0801BD34: - bl sub_801A8AC - ldr r1, _0801BD64 - ldr r2, [r1] - str r0, [r2, 0x24] - ldr r1, _0801BD68 - ldr r1, [r1] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x20] - ldr r0, _0801BD6C - adds r1, r2, 0 - adds r1, 0x20 - adds r2, 0x14 - bl sub_8090E14 - movs r0, 0 - bl sub_8099690 - movs r0, 0xB - bl sub_801B748 - b _0801BD7A - .align 2, 0 -_0801BD64: .4byte gUnknown_203B234 -_0801BD68: .4byte gTeamInventory_203B460 -_0801BD6C: .4byte gUnknown_202DEA8 -_0801BD70: - bl sub_801A928 - movs r0, 0x6 - bl sub_801B748 -_0801BD7A: - pop {r0} - bx r0 - thumb_func_end sub_801BCCC - - thumb_func_start sub_801BD80 -sub_801BD80: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801A6E8 - ldr r4, _0801BDC4 - ldr r0, [r4] - adds r0, 0x28 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801BDB2 - ldr r0, [r4] - adds r0, 0x28 - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _0801BDB2 - ldr r0, [r4] - adds r0, 0xC8 - str r1, [r0] -_0801BDB2: - ldr r0, [sp] - cmp r0, 0x6 - beq _0801BDD2 - cmp r0, 0x6 - bgt _0801BDC8 - cmp r0, 0x1 - beq _0801BE22 - b _0801BE28 - .align 2, 0 -_0801BDC4: .4byte gUnknown_203B234 -_0801BDC8: - cmp r0, 0x7 - beq _0801BE0C - cmp r0, 0x8 - beq _0801BE14 - b _0801BE28 -_0801BDD2: - ldr r4, _0801BE08 - ldr r0, [r4] - adds r0, 0x20 - bl MoveToStorage - ldr r0, [r4] - ldr r0, [r0, 0x24] - bl ShiftItemsDownFrom - ldr r0, [r4] - adds r0, 0x10 - bl AddItemToInventory - bl FillInventoryGaps - movs r0, 0xCB - bl PlaySound - movs r0, 0 - bl sub_8099690 - bl sub_801A928 - movs r0, 0xE - bl sub_801B748 - b _0801BE28 - .align 2, 0 -_0801BE08: .4byte gUnknown_203B234 -_0801BE0C: - movs r0, 0xC - bl sub_801B748 - b _0801BE28 -_0801BE14: - movs r0, 0 - bl sub_8099690 - movs r0, 0xB - bl sub_801B748 - b _0801BE28 -_0801BE22: - movs r0, 0x9 - bl sub_801B748 -_0801BE28: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801BD80 - - thumb_func_start sub_801BE30 -sub_801BE30: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801A6E8 - ldr r4, _0801BE70 - ldr r0, [r4] - adds r0, 0x28 - bl sub_8012FD8 - ldr r0, [r4] - adds r0, 0x78 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801BE5E - ldr r0, [r4] - adds r0, 0x78 - mov r1, sp - bl sub_8013114 -_0801BE5E: - ldr r0, [sp] - cmp r0, 0x2 - beq _0801BE80 - cmp r0, 0x2 - bgt _0801BE74 - cmp r0, 0x1 - beq _0801BE78 - b _0801BEA4 - .align 2, 0 -_0801BE70: .4byte gUnknown_203B234 -_0801BE74: - cmp r0, 0x3 - bne _0801BEA4 -_0801BE78: - movs r0, 0x9 - bl sub_801B748 - b _0801BEA4 -_0801BE80: - ldr r0, [r4] - ldr r0, [r0, 0x24] - bl ShiftItemsDownFrom - ldr r0, [r4] - adds r0, 0x10 - bl AddItemToInventory - bl FillInventoryGaps - movs r0, 0xCB - bl PlaySound - bl sub_801A928 - movs r0, 0xF - bl sub_801B748 -_0801BEA4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801BE30 - - thumb_func_start sub_801BEAC -sub_801BEAC: - push {lr} - bl sub_801B410 - cmp r0, 0x1 - bls _0801BEC4 - cmp r0, 0x3 - bhi _0801BEC4 - bl sub_801B450 - movs r0, 0x9 - bl sub_801B748 -_0801BEC4: - pop {r0} - bx r0 - thumb_func_end sub_801BEAC - - thumb_func_start sub_801BEC8 -sub_801BEC8: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BEE0 - ldr r0, _0801BEE8 - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_801B748 -_0801BEE0: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0801BEE8: .4byte gUnknown_203B234 - thumb_func_end sub_801BEC8 - - thumb_func_start sub_801BEEC -sub_801BEEC: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - adds r0, r5, 0 - bl HasNoAvailIQSkills - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0801BF40 - ldr r4, _0801BF38 - movs r0, 0x92 - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r6, [r0, 0x30] - strh r5, [r0, 0x4] - ldr r3, _0801BF3C - movs r1, 0x58 - adds r2, r5, 0 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - str r1, [r0, 0x8] - adds r0, 0xC - movs r2, 0x14 - ldrsh r1, [r1, r2] - bl GetNumAvailableIQSkills - ldr r1, [r4] - str r0, [r1, 0x2C] - movs r0, 0 - bl sub_801BFB4 - movs r0, 0x1 - b _0801BF42 - .align 2, 0 -_0801BF38: .4byte gUnknown_203B238 -_0801BF3C: .4byte gRecruitedPokemonRef -_0801BF40: - movs r0, 0 -_0801BF42: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801BEEC - - thumb_func_start sub_801BF48 -sub_801BF48: - push {lr} - ldr r0, _0801BF60 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x4 - bhi _0801BF90 - lsls r0, 2 - ldr r1, _0801BF64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BF60: .4byte gUnknown_203B238 -_0801BF64: .4byte _0801BF68 - .align 2, 0 -_0801BF68: - .4byte _0801BF80 - .4byte _0801BF80 - .4byte _0801BF86 - .4byte _0801BF8C - .4byte _0801BF7C -_0801BF7C: - movs r0, 0x3 - b _0801BF92 -_0801BF80: - bl sub_801C118 - b _0801BF90 -_0801BF86: - bl sub_801C1A0 - b _0801BF90 -_0801BF8C: - bl sub_801C228 -_0801BF90: - movs r0, 0 -_0801BF92: - pop {r1} - bx r1 - thumb_func_end sub_801BF48 - - thumb_func_start sub_801BF98 -sub_801BF98: - push {r4,lr} - ldr r4, _0801BFB0 - ldr r0, [r4] - cmp r0, 0 - beq _0801BFAA - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801BFAA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801BFB0: .4byte gUnknown_203B238 - thumb_func_end sub_801BF98 - - thumb_func_start sub_801BFB4 -sub_801BFB4: - push {lr} - ldr r1, _0801BFC8 - ldr r1, [r1] - str r0, [r1] - bl sub_801BFCC - bl sub_801C03C - pop {r0} - bx r0 - .align 2, 0 -_0801BFC8: .4byte gUnknown_203B238 - thumb_func_end sub_801BFB4 - - thumb_func_start sub_801BFCC -sub_801BFCC: - push {r4-r7,lr} - ldr r4, _0801BFF0 - ldr r0, [r4] - adds r0, 0xC4 - bl sub_8006518 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, 0x2 - bne _0801BFF8 - adds r1, 0xF4 - ldr r0, _0801BFF4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - b _0801C01A - .align 2, 0 -_0801BFF0: .4byte gUnknown_203B238 -_0801BFF4: .4byte gUnknown_80DBDB0 -_0801BFF8: - mov r12, r4 - ldr r4, _0801C034 - movs r3, 0 - movs r2, 0x3 -_0801C000: - mov r0, r12 - ldr r1, [r0] - adds r1, r3 - adds r1, 0xC4 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0801C000 -_0801C01A: - bl ResetUnusedInputStruct - ldr r0, _0801C038 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C034: .4byte gUnknown_80DBD98 -_0801C038: .4byte gUnknown_203B238 - thumb_func_end sub_801BFCC - - thumb_func_start sub_801C03C -sub_801C03C: - push {lr} - sub sp, 0x8 - ldr r1, _0801C058 - ldr r0, [r1] - ldr r0, [r0] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _0801C0C2 - lsls r0, 2 - ldr r1, _0801C05C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801C058: .4byte gUnknown_203B238 -_0801C05C: .4byte _0801C060 - .align 2, 0 -_0801C060: - .4byte _0801C074 - .4byte _0801C084 - .4byte _0801C08C - .4byte _0801C0B8 - .4byte _0801C0C2 -_0801C074: - ldr r0, [r2] - movs r1, 0x4 - ldrsh r0, [r0, r1] - movs r1, 0 - movs r2, 0x8 - bl sub_801C244 - b _0801C0C2 -_0801C084: - movs r0, 0x1 - bl sub_801C3B0 - b _0801C0C2 -_0801C08C: - bl sub_801C4C8 - bl sub_801C0C8 - ldr r0, _0801C0B4 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x74 - adds r1, r2, 0 - adds r1, 0x34 - ldr r2, [r2, 0x30] - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - b _0801C0C2 - .align 2, 0 -_0801C0B4: .4byte gUnknown_203B238 -_0801C0B8: - ldr r0, [r2] - adds r0, 0x28 - ldrb r0, [r0] - bl sub_801C620 -_0801C0C2: - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_801C03C - - thumb_func_start sub_801C0C8 -sub_801C0C8: - push {r4,r5,lr} - ldr r3, _0801C10C - ldr r1, [r3] - movs r4, 0 - ldr r0, _0801C110 - str r0, [r1, 0x34] - movs r0, 0x2 - str r0, [r1, 0x38] - movs r2, 0x1 - ldr r0, _0801C114 - ldr r0, [r0] - str r0, [r1, 0x3C] - movs r0, 0x3 - str r0, [r1, 0x40] - movs r5, 0x2 - str r4, [r1, 0x44] - str r2, [r1, 0x48] - movs r2, 0 - ldr r4, [r1, 0x30] - adds r1, 0x38 -_0801C0F0: - ldr r0, [r1] - cmp r0, r4 - beq _0801C104 - adds r1, 0x8 - adds r2, 0x1 - cmp r2, r5 - blt _0801C0F0 - ldr r1, [r3] - movs r0, 0x2 - str r0, [r1, 0x30] -_0801C104: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C10C: .4byte gUnknown_203B238 -_0801C110: .4byte gUnknown_80DBDC8 -_0801C114: .4byte gUnknown_80D4970 - thumb_func_end sub_801C0C8 - - thumb_func_start sub_801C118 -sub_801C118: - push {lr} - movs r0, 0x1 - bl sub_801C308 - cmp r0, 0x4 - bhi _0801C19A - lsls r0, 2 - ldr r1, _0801C130 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801C130: .4byte _0801C134 - .align 2, 0 -_0801C134: - .4byte _0801C19A - .4byte _0801C19A - .4byte _0801C190 - .4byte _0801C148 - .4byte _0801C16C -_0801C148: - bl sub_801C390 - ldr r1, _0801C168 - ldr r2, [r1] - str r0, [r2, 0x24] - adds r1, r2, 0 - adds r1, 0xC - adds r1, r0 - ldrb r0, [r1] - adds r2, 0x28 - strb r0, [r2] - movs r0, 0x2 - bl sub_801BFB4 - b _0801C19A - .align 2, 0 -_0801C168: .4byte gUnknown_203B238 -_0801C16C: - bl sub_801C390 - ldr r1, _0801C18C - ldr r2, [r1] - str r0, [r2, 0x24] - adds r1, r2, 0 - adds r1, 0xC - adds r1, r0 - ldrb r0, [r1] - adds r2, 0x28 - strb r0, [r2] - movs r0, 0x3 - bl sub_801BFB4 - b _0801C19A - .align 2, 0 -_0801C18C: .4byte gUnknown_203B238 -_0801C190: - bl sub_801C3F8 - movs r0, 0x4 - bl sub_801BFB4 -_0801C19A: - pop {r0} - bx r0 - thumb_func_end sub_801C118 - - thumb_func_start sub_801C1A0 -sub_801C1A0: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801C308 - ldr r4, _0801C1E0 - ldr r0, [r4] - adds r0, 0x74 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801C1D0 - ldr r0, [r4] - adds r0, 0x74 - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _0801C1D0 - ldr r0, [r4] - str r1, [r0, 0x30] -_0801C1D0: - ldr r0, [sp] - cmp r0, 0x2 - beq _0801C1EA - cmp r0, 0x2 - bgt _0801C1E4 - cmp r0, 0x1 - beq _0801C218 - b _0801C21E - .align 2, 0 -_0801C1E0: .4byte gUnknown_203B238 -_0801C1E4: - cmp r0, 0x3 - beq _0801C210 - b _0801C21E -_0801C1EA: - ldr r0, _0801C208 - bl PlaySound - ldr r0, _0801C20C - ldr r1, [r0] - ldr r0, [r1, 0x8] - adds r0, 0x20 - adds r1, 0x28 - ldrb r1, [r1] - bl ToggleIQSkill - movs r0, 0x1 - bl sub_801BFB4 - b _0801C21E - .align 2, 0 -_0801C208: .4byte 0x00000133 -_0801C20C: .4byte gUnknown_203B238 -_0801C210: - movs r0, 0x3 - bl sub_801BFB4 - b _0801C21E -_0801C218: - movs r0, 0x1 - bl sub_801BFB4 -_0801C21E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801C1A0 - - thumb_func_start sub_801C228 -sub_801C228: - push {lr} - bl sub_801C674 - cmp r0, 0x1 - bls _0801C240 - cmp r0, 0x3 - bhi _0801C240 - bl sub_801C6B4 - movs r0, 0x1 - bl sub_801BFB4 -_0801C240: - pop {r0} - bx r0 - thumb_func_end sub_801C228 - - thumb_func_start sub_801C244 -sub_801C244: - push {r4-r7,lr} - adds r6, r1, 0 - adds r7, r2, 0 - lsls r0, 16 - asrs r0, 16 - adds r4, r0, 0 - bl HasNoAvailIQSkills - lsls r0, 24 - cmp r0, 0 - beq _0801C25E - movs r0, 0 - b _0801C2F6 -_0801C25E: - ldr r5, _0801C2FC - ldr r0, [r5] - cmp r0, 0 - bne _0801C270 - movs r0, 0xC4 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] -_0801C270: - ldr r0, [r5] - strh r4, [r0] - ldr r3, _0801C300 - movs r1, 0x58 - adds r2, r4, 0 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - str r1, [r0, 0x4] - adds r0, 0x8 - movs r2, 0x14 - ldrsh r1, [r1, r2] - bl GetNumAvailableIQSkills - adds r1, r0, 0 - ldr r0, [r5] - str r1, [r0, 0x20] - str r6, [r0, 0x58] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - adds r1, 0x60 - adds r1, r0, r1 - str r1, [r0, 0x5C] - adds r0, 0x60 - bl sub_8006518 - ldr r1, [r5] - ldr r2, [r1, 0x58] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x60 - ldr r0, _0801C304 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r1, [r5] - ldr r0, [r1, 0x5C] - adds r1, 0xC0 - str r1, [r0, 0x14] - adds r1, r7, 0 - bl sub_8012D08 - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x20] - adds r2, r7, 0 - adds r3, r6, 0 - bl sub_8013818 - bl sub_801C440 - bl sub_801C4C8 - movs r0, 0x1 -_0801C2F6: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801C2FC: .4byte gUnknown_203B23C -_0801C300: .4byte gRecruitedPokemonRef -_0801C304: .4byte gUnknown_80DBDF0 - thumb_func_end sub_801C244 - - thumb_func_start sub_801C308 -sub_801C308: - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0801C324 - ldr r0, _0801C320 - ldr r0, [r0] - adds r0, 0x24 - bl sub_8013660 - movs r0, 0 - b _0801C38A - .align 2, 0 -_0801C320: .4byte gUnknown_203B23C -_0801C324: - ldr r0, _0801C33C - ldr r0, [r0] - adds r0, 0x24 - bl GetKeyPress - cmp r0, 0x2 - beq _0801C346 - cmp r0, 0x2 - bgt _0801C340 - cmp r0, 0x1 - beq _0801C350 - b _0801C364 - .align 2, 0 -_0801C33C: .4byte gUnknown_203B23C -_0801C340: - cmp r0, 0x4 - beq _0801C35A - b _0801C364 -_0801C346: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0801C38A -_0801C350: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0801C38A -_0801C35A: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _0801C38A -_0801C364: - ldr r0, _0801C37C - ldr r0, [r0] - adds r0, 0x24 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0801C380 - movs r0, 0 - b _0801C38A - .align 2, 0 -_0801C37C: .4byte gUnknown_203B23C -_0801C380: - bl sub_801C440 - bl sub_801C4C8 - movs r0, 0x1 -_0801C38A: - pop {r1} - bx r1 - thumb_func_end sub_801C308 - - thumb_func_start sub_801C390 -sub_801C390: - ldr r0, _0801C3AC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r1 - movs r3, 0x3C - ldrsh r1, [r2, r3] - adds r0, r1 - bx lr - .align 2, 0 -_0801C3AC: .4byte gUnknown_203B23C - thumb_func_end sub_801C390 - - thumb_func_start sub_801C3B0 -sub_801C3B0: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0801C3F4 - ldr r0, [r5] - adds r0, 0x60 - movs r1, 0 - movs r2, 0 - bl sub_800641C - ldr r0, [r5] - ldr r1, [r0, 0x20] - adds r2, r0, 0 - adds r2, 0x46 - strh r1, [r2] - adds r0, 0x24 - bl sub_8013984 - bl sub_801C440 - bl sub_801C4C8 - cmp r4, 0 - beq _0801C3EE - ldr r0, [r5] - adds r0, 0x24 - bl AddMenuCursorSprite -_0801C3EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C3F4: .4byte gUnknown_203B23C - thumb_func_end sub_801C3B0 - - thumb_func_start sub_801C3F8 -sub_801C3F8: - push {r4,r5,lr} - ldr r4, _0801C438 - ldr r2, [r4] - cmp r2, 0 - beq _0801C432 - ldr r0, [r2, 0x58] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x60 - ldr r0, _0801C43C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801C432: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C438: .4byte gUnknown_203B23C -_0801C43C: .4byte gUnknown_80DBDD8 - thumb_func_end sub_801C3F8 - - thumb_func_start sub_801C440 -sub_801C440: - push {r4,lr} - ldr r4, _0801C4C4 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x44 - ldrh r1, [r1] - adds r0, 0xC0 - movs r2, 0 - strb r1, [r0] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x42 - ldrh r1, [r1] - adds r0, 0xC1 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC2 - movs r1, 0xA - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC3 - strb r2, [r0] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - movs r1, 0x3E - ldrsh r0, [r0, r1] - movs r1, 0xC - bl sub_80095E4 - adds r0, 0x2 - ldr r2, [r4] - ldr r3, [r2, 0x58] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x6E - lsls r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r3, [r2, 0x58] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r2, r1 - adds r2, 0x70 - strh r0, [r2] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801C4C4: .4byte gUnknown_203B23C - thumb_func_end sub_801C440 - - thumb_func_start sub_801C4C8 -sub_801C4C8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r6, _0801C594 - ldr r0, [r6] - ldr r0, [r0, 0x58] - bl sub_8008C54 - ldr r0, [r6] - ldr r0, [r0, 0x58] - bl sub_80073B8 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x42 - movs r2, 0 - ldrsh r4, [r1, r2] - lsls r4, 3 - adds r5, r4, 0 - adds r5, 0xA - ldr r2, _0801C598 - ldr r3, [r0, 0x58] - movs r0, 0 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - bl xxx_call_draw_string - adds r4, 0x4 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xC2 - ldrb r0, [r0] - lsls r0, 3 - adds r5, r4, r0 - adds r0, r1, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r2, 0x1 - movs r0, 0x7 - str r0, [sp] - ldr r0, [r1, 0x58] - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0 - movs r3, 0x1 - bl sub_8012BC4 - movs r5, 0 - ldr r0, [r6] - movs r1, 0x3E - ldrsh r0, [r0, r1] - cmp r5, r0 - bge _0801C5CC - ldr r2, _0801C59C - mov r8, r2 -_0801C53C: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r1, r0 - adds r1, r5 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1 - ldrb r4, [r0] - adds r0, r2, 0 - adds r0, 0x24 - adds r1, r5, 0 - bl sub_8013800 - adds r7, r0, 0 - adds r0, r4, 0 - bl GetIQSkillName - adds r1, r0, 0 - mov r0, r8 - movs r2, 0x50 - bl strncpy - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, 0x20 - movs r1, 0x1 - lsls r1, r4 - bl IsIQSkillSet - lsls r0, 24 - cmp r0, 0 - beq _0801C5A4 - mov r0, r8 - subs r0, 0x50 - ldr r1, _0801C5A0 - bl strcpy - b _0801C5AE - .align 2, 0 -_0801C594: .4byte gUnknown_203B23C -_0801C598: .4byte gUnknown_80DBE08 -_0801C59C: .4byte gUnknown_202DEA8 -_0801C5A0: .4byte gUnknown_80DBE14 -_0801C5A4: - mov r0, r8 - subs r0, 0x50 - ldr r1, _0801C5E4 - bl strcpy -_0801C5AE: - ldr r0, [r6] - ldr r3, [r0, 0x58] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r1, r7, 0 - ldr r2, _0801C5E8 - bl xxx_format_and_draw - adds r5, 0x1 - ldr r0, [r6] - movs r1, 0x3E - ldrsh r0, [r0, r1] - cmp r5, r0 - blt _0801C53C -_0801C5CC: - ldr r0, _0801C5EC - ldr r0, [r0] - ldr r0, [r0, 0x58] - bl sub_80073E0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C5E4: .4byte gUnknown_80DBE18 -_0801C5E8: .4byte gUnknown_80DBE1C -_0801C5EC: .4byte gUnknown_203B23C - thumb_func_end sub_801C4C8 - .align 2,0 diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 6b7f3952e..e13caa43b 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -39,9 +39,8 @@ struct unkStruct_203B234 // size: 0x154 u32 unk0; u32 state; - u32 unk8; + u32 fallbackState; u8 unkC; - u8 fillD[0x10 - 0xD]; struct Item unk10; struct unkStruct_8090F58 unk14; struct Item unk20; @@ -371,7 +370,7 @@ void sub_801B874(void) { case 0: if (gUnknown_203B234->unk10.id == ITEM_WEAVILE_FIG) { - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; if(sub_8001784(0,0x47,1) != 0) { AddToTeamMoney(1000); @@ -385,7 +384,7 @@ void sub_801B874(void) } else if (gUnknown_203B234->unk10.id == ITEM_MIME_JR_FIG) { - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; if(sub_8001784(0, 0x47, 0) != 0) { AddToTeamMoney(1000); @@ -406,13 +405,13 @@ void sub_801B874(void) if((gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] + gUnknown_203B234->unkC) > 0x3e7) { store: - gUnknown_203B234->unk8 = 6; + gUnknown_203B234->fallbackState = 6; } else { gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] += gUnknown_203B234->unkC; PlaySound(0xCB); - gUnknown_203B234->unk8 = 5; + gUnknown_203B234->fallbackState = 5; } } else @@ -425,7 +424,7 @@ void sub_801B874(void) AddItemToInventory(&gUnknown_203B234->unk10); FillInventoryGaps(); PlaySound(0xCB); - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; } if(gUnknown_203B234->unk0 == 1) sub_801B748(2); @@ -452,7 +451,7 @@ void sub_801B874(void) sub_80141B4(gUnknown_80DBB9C,0,0,0x101); break; case 5: - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; sub_80141B4(gUnknown_80DBC28,0,0,0x101); break; case 6: @@ -484,15 +483,15 @@ void sub_801B874(void) sub_8012D60(&gUnknown_203B234->unk78,gUnknown_203B234->unkCC,0,0,3,1); break; case 0xd: - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; sub_80141B4(gUnknown_80DBCC4,0,0,0x101); break; case 0xe: - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; sub_80141B4(gUnknown_80DBCE8,0,0,0x101); break; case 0xf: - gUnknown_203B234->unk8 = 0x10; + gUnknown_203B234->fallbackState = 0x10; sub_80141B4(gUnknown_80DBD24,0,0,0x101); break; case 0x10: diff --git a/src/code_801C620.c b/src/code_801C620.c index 1e02c268c..eff453107 100644 --- a/src/code_801C620.c +++ b/src/code_801C620.c @@ -3,15 +3,81 @@ #include "input.h" #include "memory.h" #include "pokemon.h" +#include "pokemon_3.h" +#include "team_inventory.h" #include "text.h" #include "subStruct_203B240.h" +#include "menu_input.h" + +struct unkStruct_203B234 +{ + // size: 0x154 + u32 unk0; + u32 state; + u32 fallbackState; + u8 unkC; + struct Item unk10; + struct unkStruct_8090F58 unk14; + struct Item unk20; + u32 unk24; + struct MenuStruct unk28; + struct MenuStruct unk78; + u32 unkC8; + struct MenuItem unkCC[5]; + struct UnkTextStruct2 unkF4[4]; +}; + +extern struct unkStruct_203B234 *gUnknown_203B234; + + +struct unkStruct_203B238 +{ + // size: 0x124 + u32 state; + s16 species; + struct PokemonStruct *pokeStruct; + u8 iqSkills[NUM_IQ_SKILLS]; + u32 unk24; + u8 iqSkillIndex; + u32 numIQSkills; + s32 unk30; + struct MenuItem unk34[8]; + struct MenuStruct unk74; + struct UnkTextStruct2 unkC4[4]; +}; + +struct unkStruct_203B23C +{ + // size: 0xC4 + /* 0x0 */ s16 species; + /* 0x4 */ struct PokemonStruct *pokeStruct; + /* 0x8 */ u8 iqSkills[NUM_IQ_SKILLS]; + /* 0x20 */ s32 numIQSkills; + /* 0x24 */ u32 unk24; + u8 fill28[0x3C - 0x28]; + s16 unk3C; + s16 unk3E; + s16 unk40; + s16 unk42; + s16 unk44; + s16 unk46; + u8 fill48[0x52 - 0x48]; + u8 unk52; + u8 fill52[0x58 - 0x53]; + u32 unk58; + /* 0x5C */ struct UnkTextStruct2 *unk5C; + /* 0x60 */ struct UnkTextStruct2 unk60[4]; + u8 unkC0; + u8 unkC1; + u8 unkC2; + u8 unkC3; +}; struct unkStruct_203B240 { // size: 0x94 s32 state; u8 chosenIQSkill; - u8 fill5[3]; s32 unk8; s32 unkC; struct subStruct_203B240 *unk10[2]; @@ -43,51 +109,680 @@ struct unkStruct_203B244 }; extern const struct UnkTextStruct2 gUnknown_80DBE54; +extern struct UnkTextStruct2 gUnknown_80DBDD8; +extern struct UnkTextStruct2 gUnknown_80DBDF0; +extern struct UnkTextStruct2 gUnknown_80DBDB0; +extern struct UnkTextStruct2 gUnknown_80DBD98; -extern struct unkStruct_203B244 *gUnknown_203B244; +extern struct unkStruct_203B238 *gUnknown_203B238; +extern struct unkStruct_203B23C *gUnknown_203B23C; extern struct unkStruct_203B240 *gUnknown_203B240; +extern struct unkStruct_203B244 *gUnknown_203B244; + extern u32 gUnknown_203B248; extern u16 gUnknown_203B24C; extern u16 gUnknown_203B24E; - -extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0} -extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0} extern u8 gUnknown_202DE58[0x58]; extern u8 gAvailablePokemonNames[0x58]; +extern u8 gUnknown_80DBE18[]; +extern u8 gUnknown_80DBE14[]; +extern u8 gUnknown_202DEA8[]; +extern u8 gUnknown_202DE58[]; +extern u8 gUnknown_80DBE08[]; +extern u8 gUnknown_80DBE1C[]; +extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0} +extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0} +extern u8 gUnknown_80DBDC8[]; +extern u8 *gUnknown_80D4970[]; + + extern bool8 sub_801CF14(u32); -extern void sub_8012D08(struct UnkTextStruct2 *, u32); extern void sub_8013818(u32 *, u32, u32, u32); extern u32 sub_801CE58(void); extern void sub_8013984(void *); extern void sub_801CC38(void); extern void sub_801CCD8(void); extern void sub_801CF94(void); - - extern void ResetSprites(u32); extern void sub_801317C(u32 *); extern void sub_80140B4(struct UnkTextStruct2 *); - - -extern void xxx_format_and_draw(u32, u32, char *, u32, u32); extern void sub_8008C54(u32); extern void sub_80073B8(u32); -extern void xxx_call_draw_string(u32, u32, char *, u32, u32); extern void sub_80073E0(u32); extern u32 sub_8097DF0(char *, struct subStruct_203B240 **); extern u32 sub_8012A64(u32 *, u32); extern void sub_8013F84(); extern void PlayMenuSoundEffect(u32); -extern char * GetIQSkillName(u8 r0); extern char * GetIQSkillDescription(u8 r0); extern s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ); +extern void sub_8013C68(u32 *); +extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); +extern char * GetIQSkillName(u8 r0); +extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); +extern s32 sub_8013800(u32 *, s32); +extern u32 sub_80095E4(s16, u32); +extern void sub_801C440(void); +extern void sub_801C4C8(void); +extern void AddMenuCursorSprite(u32 *); +extern u8 sub_80138B8(u32 *, u32); +extern void sub_8013660(u32 *); +extern s32 GetKeyPress(u32 *); +extern bool8 HasNoAvailIQSkills(s16 species); +extern u32 sub_801C674(void); +extern void sub_801C6B4(void); +void sub_801BFB4(s32); void sub_801C6D0(s32); void sub_801C7D4(); void sub_801C6E4(); void sub_801C848(); +u32 sub_801C308(u8); +extern void PlaySound(u32); +void ToggleIQSkill(u8 *param_1, u32 skillIndex); +s32 sub_801C390(void); +void sub_801C3F8(void); + +bool8 sub_801C244(s16 species, u32 index, u32 param_3); +void sub_801C0C8(void); +u32 sub_801C620(u8 iqSkill); +void sub_801C3B0(u8); +void sub_801BFCC(void); +void sub_801C03C(void); + +void sub_801C118(); +void sub_801C1A0(); +void sub_801C228(); + +void sub_801B748(u32); + + +extern s32 sub_80144A4(s32 *); +extern u32 sub_801B410(void); +extern void sub_801B450(void); +extern u32 sub_801A6E8(u32); +extern void sub_801A928(void); +extern void sub_8099690(u32); +extern u32 sub_801A8AC(); + +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; + +void sub_801BC24(void) +{ + struct unkStruct_203B234 *puVar1; + u8 *nullText; + u32 menuAction; + + puVar1 = gUnknown_203B234; + nullText = NULL; + puVar1->unkCC[0].text = *gUnknown_80D4920; + gUnknown_203B234->unkCC[0].menuAction = 2; + menuAction = 1; + gUnknown_203B234->unkCC[1].text = *gUnknown_80D4928; + gUnknown_203B234->unkCC[1].menuAction = 3; + gUnknown_203B234->unkCC[2].text = nullText; + gUnknown_203B234->unkCC[2].menuAction = menuAction; +} + +void sub_801BC64(void) +{ + s32 temp; + if(sub_80144A4(&temp)== 0) + { + switch(temp) + { + case 4: + sub_801B748(0x8); + break; + case 5: + sub_801B748(0x7); + break; + } + } +} + +void sub_801BC94(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 2: + sub_801B748(0xD); + break; + case 1: + case 3: + sub_801B748(0x6); + break; + } + } +} + +void sub_801BCCC(void) +{ + switch(sub_801A6E8(1)) + { + case 0: + case 1: + break; + case 3: + gUnknown_203B234->unk24 = sub_801A8AC(); + gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24]; + sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14); + sub_801B748(0xA); + break; + case 4: + gUnknown_203B234->unk24 = sub_801A8AC(); + gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24]; + sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14); + sub_8099690(0); + sub_801B748(0xB); + break; + case 2: + sub_801A928(); + sub_801B748(6); + break; + } +} + +void sub_801BD80(void) +{ + s32 menuAction; + + menuAction = 0; + sub_801A6E8(0); + if (sub_8012FD8(&gUnknown_203B234->unk28) == '\0') { + sub_8013114(&gUnknown_203B234->unk28,&menuAction); + if (menuAction != 1) gUnknown_203B234->unkC8 = menuAction; + } + switch(menuAction) + { + case 6: + MoveToStorage(&gUnknown_203B234->unk20); + ShiftItemsDownFrom(gUnknown_203B234->unk24); + AddItemToInventory(&gUnknown_203B234->unk10); + FillInventoryGaps(); + PlaySound(0xcb); + sub_8099690(0); + sub_801A928(); + sub_801B748(0xE); + break; + case 7: + sub_801B748(0xC); + break; + case 8: + sub_8099690(0); + sub_801B748(0xB); + break; + case 1: + sub_801B748(0x9); + break; + } +} + +void sub_801BE30(void) +{ + s32 menuAction; + + menuAction = 0; + sub_801A6E8(0); + sub_8012FD8(&gUnknown_203B234->unk28); + if (sub_8012FD8(&gUnknown_203B234->unk78) == '\0') { + sub_8013114(&gUnknown_203B234->unk78,&menuAction); + } + switch(menuAction) + { + case 1: + case 3: + sub_801B748(9); + break; + case 2: + ShiftItemsDownFrom(gUnknown_203B234->unk24); + AddItemToInventory(&gUnknown_203B234->unk10); + FillInventoryGaps(); + PlaySound(0xcb); + sub_801A928(); + sub_801B748(0xf); + break; + } +} + +void sub_801BEAC(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + sub_801B748(9); + case 0: + case 1: + break; + } +} + +void sub_801BEC8(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_801B748(gUnknown_203B234->fallbackState); + } +} + +bool8 sub_801BEEC(s16 species) +{ + s32 species_s32 = species; + if (HasNoAvailIQSkills(species_s32)) { + return FALSE; + } + else { + gUnknown_203B238 = MemoryAlloc(sizeof(struct unkStruct_203B238),8); + gUnknown_203B238->unk30 = 0; + gUnknown_203B238->species = species_s32; + gUnknown_203B238->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; + gUnknown_203B238->numIQSkills = GetNumAvailableIQSkills(gUnknown_203B238->iqSkills,gUnknown_203B238->pokeStruct->IQ); + sub_801BFB4(0); + return TRUE; + } +} + +u32 sub_801BF48(void) +{ + switch(gUnknown_203B238->state) + { + case 4: + return 3; + case 0: + case 1: + sub_801C118(); + break; + case 2: + sub_801C1A0(); + break; + case 3: + sub_801C228(); + break; + } + return 0; +} + +void sub_801BF98(void) +{ + if(gUnknown_203B238 != NULL) + { + MemoryFree(gUnknown_203B238); + gUnknown_203B238 = NULL; + } +} + +void sub_801BFB4(s32 newState) +{ + gUnknown_203B238->state = newState; + sub_801BFCC(); + sub_801C03C(); +} + +void sub_801BFCC(void) +{ + s32 index; + + sub_8006518(gUnknown_203B238->unkC4); + if(gUnknown_203B238->state == 2) + { + gUnknown_203B238->unkC4[2] = gUnknown_80DBDB0; + } + else + { + for(index = 0; index < 4; index++) + { + gUnknown_203B238->unkC4[index] = gUnknown_80DBD98; + } + + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B238->unkC4, 1, 1); +} + +void sub_801C03C(void) +{ + switch(gUnknown_203B238->state) { + case 0: + sub_801C244(gUnknown_203B238->species,0,8); + break; + case 1: + sub_801C3B0(1); + break; + case 2: + sub_801C4C8(); + sub_801C0C8(); + sub_8012D60(&gUnknown_203B238->unk74,gUnknown_203B238->unk34,0,0,gUnknown_203B238->unk30,2); + break; + case 3: + sub_801C620(gUnknown_203B238->iqSkillIndex); + break; + case 4: + break; + } +} + +void sub_801C0C8(void) +{ + struct unkStruct_203B238 *puVar1; + int index; + u8 *nullText; + u32 menuAction; + s32 max; + + puVar1 = gUnknown_203B238; + nullText = NULL; + gUnknown_203B238->unk34[0].text = gUnknown_80DBDC8; + puVar1->unk34[0].menuAction = 2; + menuAction = 1; + puVar1->unk34[1].text = *gUnknown_80D4970; + puVar1->unk34[1].menuAction = 3; + + max = 2; + puVar1->unk34[2].text = nullText; + puVar1->unk34[2].menuAction = menuAction; + + for(index = 0; index < max; index++) + { + if(gUnknown_203B238->unk34[index].menuAction == gUnknown_203B238->unk30) + return; + } + gUnknown_203B238->unk30 = 2; +} + +void sub_801C118(void) +{ + switch(sub_801C308(1)) { + case 3: + gUnknown_203B238->unk24 = sub_801C390(); + gUnknown_203B238->iqSkillIndex = gUnknown_203B238->iqSkills[gUnknown_203B238->unk24]; + sub_801BFB4(2); + break; + case 4: + gUnknown_203B238->unk24 = sub_801C390(); + gUnknown_203B238->iqSkillIndex = gUnknown_203B238->iqSkills[gUnknown_203B238->unk24]; + sub_801BFB4(3); + break; + case 2: + sub_801C3F8(); + sub_801BFB4(4); + break; + case 0: + case 1: + break; + } +} + +void sub_801C1A0(void) +{ + s32 menuAction; + + menuAction = 0; + sub_801C308(0); + if (!(sub_8012FD8(&gUnknown_203B238->unk74)) && (sub_8013114(&gUnknown_203B238->unk74,&menuAction), menuAction != 1)) { + gUnknown_203B238->unk30 = menuAction; + } + + switch(menuAction) + { + case 2: + PlaySound(0x133); + ToggleIQSkill((u8 *)&gUnknown_203B238->pokeStruct->IQSkills,gUnknown_203B238->iqSkillIndex); + sub_801BFB4(1); + break; + case 3: + sub_801BFB4(3); + break; + case 1: + sub_801BFB4(1); + break; + } +} + +void sub_801C228(void) +{ + switch(sub_801C674()) + { + case 2: + case 3: + sub_801C6B4(); + sub_801BFB4(1); + case 0: + case 1: + break; + } +} + +bool8 sub_801C244(s16 species, u32 index, u32 param_3) +{ +#ifndef NONMATCHING + register s32 species_s32 asm("r4"); +#else + s32 species_s32; +#endif + + species_s32 = species; + + if (HasNoAvailIQSkills(species)) { + return FALSE; + } + else + { + if (gUnknown_203B23C == NULL) { + gUnknown_203B23C = MemoryAlloc(sizeof(struct unkStruct_203B23C),8); + } + gUnknown_203B23C->species = species_s32; + gUnknown_203B23C->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; + gUnknown_203B23C->numIQSkills = GetNumAvailableIQSkills(gUnknown_203B23C->iqSkills,gUnknown_203B23C->pokeStruct->IQ); + gUnknown_203B23C->unk58 = index; + gUnknown_203B23C->unk5C = &gUnknown_203B23C->unk60[index]; + sub_8006518(gUnknown_203B23C->unk60); + gUnknown_203B23C->unk60[gUnknown_203B23C->unk58] = gUnknown_80DBDF0; + gUnknown_203B23C->unk5C->unk14 = &gUnknown_203B23C->unkC0; + sub_8012D08(gUnknown_203B23C->unk5C,param_3); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B23C->unk60,1,1); + sub_8013818(&gUnknown_203B23C->unk24,gUnknown_203B23C->numIQSkills,param_3,index); + sub_801C440(); + sub_801C4C8(); + return TRUE; + } +} + +u32 sub_801C308(u8 r0) +{ + if(r0 == 0) + { + sub_8013660(&gUnknown_203B23C->unk24); + return 0; + } + switch(GetKeyPress(&gUnknown_203B23C->unk24)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + case 4: + PlayMenuSoundEffect(4); + return 4; + default: + if(sub_80138B8(&gUnknown_203B23C->unk24, 1) != 0) + { + sub_801C440(); + sub_801C4C8(); + return 1; + } + else + return 0; + } +} + +s32 sub_801C390(void) +{ + return (gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40) + gUnknown_203B23C->unk3C; +} + +void sub_801C3B0(u8 r0) +{ + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B23C->unk60, 0, 0); + gUnknown_203B23C->unk46 = gUnknown_203B23C->numIQSkills; + sub_8013984(&gUnknown_203B23C->unk24); + sub_801C440(); + sub_801C4C8(); + if(r0) + AddMenuCursorSprite(&gUnknown_203B23C->unk24); +} + +void sub_801C3F8(void) +{ + if(gUnknown_203B23C != NULL) + { + gUnknown_203B23C->unk60[gUnknown_203B23C->unk58] = gUnknown_80DBDD8; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B23C->unk60, 1, 1); + MemoryFree(gUnknown_203B23C); + gUnknown_203B23C = NULL; + } +} + +#ifdef NONMATCHING +// https://decomp.me/scratch/NdDP3 (98.06% matching) - Seth +void sub_801C440(void) +{ + u16 sVar2; + + gUnknown_203B23C->unkC0 = gUnknown_203B23C->unk44; + gUnknown_203B23C->unkC1 = gUnknown_203B23C->unk42; + gUnknown_203B23C->unkC2 = 0xA; + gUnknown_203B23C->unkC3 = 0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B23C->unk60, 1, 1); + sVar2 = sub_80095E4(gUnknown_203B23C->unk3E, 0xc) + 2; + gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unkE = sVar2; + gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unk10 = sVar2; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B23C->unk60, 1, 1); +} +#else +NAKED +void sub_801C440(void) +{ + asm_unified( + "\tpush {r4,lr}\n" + "\tldr r4, _0801C4C4\n" + "\tldr r0, [r4]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0x44\n" + "\tldrh r1, [r1]\n" + "\tadds r0, 0xC0\n" + "\tmovs r2, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0x42\n" + "\tldrh r1, [r1]\n" + "\tadds r0, 0xC1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xC2\n" + "\tmovs r1, 0xA\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xC3\n" + "\tstrb r2, [r0]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x60\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tldr r0, [r4]\n" + "\tmovs r1, 0x3E\n" + "\tldrsh r0, [r0, r1]\n" + "\tmovs r1, 0xC\n" + "\tbl sub_80095E4\n" + "\tadds r0, 0x2\n" + "\tldr r2, [r4]\n" + "\tldr r3, [r2, 0x58]\n" + "\tlsls r1, r3, 1\n" + "\tadds r1, r3\n" + "\tlsls r1, 3\n" + "\tadds r1, r2, r1\n" + "\tadds r1, 0x6E\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r1]\n" + "\tldr r3, [r2, 0x58]\n" + "\tlsls r1, r3, 1\n" + "\tadds r1, r3\n" + "\tlsls r1, 3\n" + "\tadds r2, r1\n" + "\tadds r2, 0x70\n" + "\tstrh r0, [r2]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x60\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0801C4C4: .4byte gUnknown_203B23C" + ); +} +#endif + + +void sub_801C4C8(void) +{ + u32 y; + s32 x; + s32 x2; + u32 skillIndex; + s32 counter; + + sub_8008C54(gUnknown_203B23C->unk58); + sub_80073B8(gUnknown_203B23C->unk58); + x = gUnknown_203B23C->unk42 * 8; + x2 = x; + x2 += 10; + xxx_call_draw_string(x2,0,gUnknown_80DBE08,gUnknown_203B23C->unk58,0); + x += 4; + x2 = x + gUnknown_203B23C->unkC2 * 8; + sub_8012BC4(x2,0,gUnknown_203B23C->unk42 + 1,1,7, + gUnknown_203B23C->unk58); + counter = 0; + if (counter < gUnknown_203B23C->unk3E) { + do { + skillIndex = gUnknown_203B23C->iqSkills + [gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40 + counter]; + y = sub_8013800(&gUnknown_203B23C->unk24,counter); + strncpy(gUnknown_202DEA8,GetIQSkillName(skillIndex),0x50); + if (IsIQSkillSet((u8 *)&gUnknown_203B23C->pokeStruct->IQSkills,1 << skillIndex)) { + strcpy(gUnknown_202DEA8 - 0x50,gUnknown_80DBE14); + } + else { + strcpy(gUnknown_202DEA8 - 0x50,gUnknown_80DBE18); + } + xxx_format_and_draw(0xc,y,gUnknown_80DBE1C,gUnknown_203B23C->unk58,0); + counter++; + } while (counter < gUnknown_203B23C->unk3E); + } + sub_80073E0(gUnknown_203B23C->unk58); +} + bool8 HasNoAvailIQSkills(s16 species) { s32 species_s32; From ea47f799e4ae7accb6138a703bbfea045631c3f8 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 3 Mar 2023 16:48:26 -0800 Subject: [PATCH 19/21] finish decomp of options menu --- asm/code_801DCC4.s | 311 ------------------------- ld_script.txt | 3 +- src/{code_801DCC4.c => options_menu.c} | 167 ++++++++++++- 3 files changed, 165 insertions(+), 316 deletions(-) delete mode 100644 asm/code_801DCC4.s rename src/{code_801DCC4.c => options_menu.c} (71%) diff --git a/asm/code_801DCC4.s b/asm/code_801DCC4.s deleted file mode 100644 index 9ac7c8ab9..000000000 --- a/asm/code_801DCC4.s +++ /dev/null @@ -1,311 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_801E198 -sub_801E198: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _0801E210 - movs r0, 0xAC - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - stm r0!, {r5} - bl sub_801317C - ldr r1, [r4] - movs r0, 0 - str r0, [r1, 0x44] - adds r0, r1, 0 - adds r0, 0x4C - str r0, [r1, 0x48] - bl sub_8006518 - ldr r1, [r4] - ldr r2, [r1, 0x44] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x4C - ldr r0, _0801E214 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r4] - ldr r0, [r0, 0x48] - movs r1, 0x1 - bl sub_8012D08 - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x4C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x10 - ldr r3, [r1, 0x44] - movs r1, 0x1 - movs r2, 0x1 - bl sub_8013818 - bl nullsub_38 - bl CreateOptionsMenu - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0801E210: .4byte gUnknown_203B260 -_0801E214: .4byte gUnknown_80DC03C - thumb_func_end sub_801E198 - - thumb_func_start sub_801E218 -sub_801E218: - push {r4,lr} - movs r4, 0 - bl sub_8012AE8 - cmp r0, 0x2 - beq _0801E238 - cmp r0, 0x2 - bgt _0801E22E - cmp r0, 0x1 - beq _0801E242 - b _0801E294 -_0801E22E: - cmp r0, 0x9 - beq _0801E24C - cmp r0, 0xA - beq _0801E26C - b _0801E294 -_0801E238: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0801E2BE -_0801E242: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0801E2BE -_0801E24C: - ldr r0, _0801E264 - ldr r1, [r0] - movs r2, 0x28 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0801E294 - ldr r1, [r1] - ldrb r0, [r1, 0x8] - cmp r0, 0 - bne _0801E268 - movs r0, 0x2 - b _0801E28A - .align 2, 0 -_0801E264: .4byte gUnknown_203B260 -_0801E268: - subs r0, 0x1 - b _0801E28A -_0801E26C: - ldr r0, _0801E284 - ldr r1, [r0] - movs r2, 0x28 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0801E294 - ldr r1, [r1] - ldrb r0, [r1, 0x8] - cmp r0, 0x1 - bls _0801E288 - strb r4, [r1, 0x8] - b _0801E28C - .align 2, 0 -_0801E284: .4byte gUnknown_203B260 -_0801E288: - adds r0, 0x1 -_0801E28A: - strb r0, [r1, 0x8] -_0801E28C: - movs r0, 0x3 - bl PlayMenuSoundEffect - movs r4, 0x1 -_0801E294: - ldr r0, _0801E2B8 - ldr r0, [r0] - adds r0, 0x10 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0801E2AA - cmp r4, 0x1 - bne _0801E2BC -_0801E2AA: - bl nullsub_38 - bl CreateOptionsMenu - movs r0, 0x1 - b _0801E2BE - .align 2, 0 -_0801E2B8: .4byte gUnknown_203B260 -_0801E2BC: - movs r0, 0 -_0801E2BE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_801E218 - - thumb_func_start sub_801E2C4 -sub_801E2C4: - push {r4,r5,lr} - ldr r4, _0801E304 - ldr r2, [r4] - cmp r2, 0 - beq _0801E2FE - ldr r0, [r2, 0x44] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x4C - ldr r0, _0801E308 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x4C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801E2FE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801E304: .4byte gUnknown_203B260 -_0801E308: .4byte gUnknown_80DC020 - thumb_func_end sub_801E2C4 - - thumb_func_start nullsub_38 -nullsub_38: - bx lr - thumb_func_end nullsub_38 - - thumb_func_start CreateOptionsMenu -CreateOptionsMenu: - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _0801E368 - ldr r0, [r5] - ldr r0, [r0, 0x44] - bl sub_8008C54 - ldr r0, [r5] - ldr r0, [r0, 0x44] - bl sub_80073B8 - ldr r2, _0801E36C - ldr r0, [r5] - ldr r3, [r0, 0x44] - movs r4, 0 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - bl xxx_call_draw_string - ldr r0, [r5] - adds r0, 0x10 - movs r1, 0 - bl sub_8013800 - adds r6, r0, 0 - ldr r2, _0801E370 - ldr r0, [r5] - ldr r3, [r0, 0x44] - str r4, [sp] - movs r0, 0x8 - adds r1, r6, 0 - bl xxx_call_draw_string - ldr r0, [r5] - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - beq _0801E384 - cmp r0, 0x1 - bgt _0801E374 - cmp r0, 0 - beq _0801E37A - b _0801E3D6 - .align 2, 0 -_0801E368: .4byte gUnknown_203B260 -_0801E36C: .4byte gWindowBGTitle -_0801E370: .4byte gUnknown_80DC064 -_0801E374: - cmp r0, 0x2 - beq _0801E3B0 - b _0801E3D6 -_0801E37A: - ldr r0, _0801E380 - b _0801E386 - .align 2, 0 -_0801E380: .4byte gWindowBGBlueString -_0801E384: - ldr r0, _0801E3AC -_0801E386: - bl sub_8008ED0 - adds r4, r0, 0 - ldr r1, [r5] - ldr r0, [r1, 0x44] - ldr r1, [r1] - ldrb r2, [r1, 0x8] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, 0x50 - adds r2, r6, 0 - adds r2, 0xA - movs r3, 0x7 - str r3, [sp] - adds r3, r4, 0 - bl sub_80078A4 - b _0801E3D6 - .align 2, 0 -_0801E3AC: .4byte gWindowBGRedString -_0801E3B0: - ldr r0, _0801E3E8 - bl sub_8008ED0 - adds r4, r0, 0 - ldr r1, [r5] - ldr r0, [r1, 0x44] - ldr r1, [r1] - ldrb r2, [r1, 0x8] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, 0x50 - adds r2, r6, 0 - adds r2, 0xA - movs r3, 0x7 - str r3, [sp] - adds r3, r4, 0 - bl sub_80078A4 -_0801E3D6: - ldr r0, _0801E3EC - ldr r0, [r0] - ldr r0, [r0, 0x44] - bl sub_80073E0 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801E3E8: .4byte gWindowBGGreenString -_0801E3EC: .4byte gUnknown_203B260 - thumb_func_end CreateOptionsMenu - - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index fc015c968..e46f2abee 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -112,8 +112,7 @@ SECTIONS { asm/code_801C620.o(.text); src/code_801D760.o(.text); asm/code_801D760.o(.text); - src/code_801DCC4.o(.text); - asm/code_801DCC4.o(.text); + src/options_menu.o(.text); src/hints_menu.o(.text); src/gulpin_shop.o(.text); asm/gulpin_shop.o(.text); diff --git a/src/code_801DCC4.c b/src/options_menu.c similarity index 71% rename from src/code_801DCC4.c rename to src/options_menu.c index 62c3b5319..465884e26 100644 --- a/src/code_801DCC4.c +++ b/src/options_menu.c @@ -1,10 +1,51 @@ #include "global.h" +#include "constants/input.h" +#include "input.h" #include "memory.h" -#include "menu.h" -#include "game_options.h" #include "text.h" +#include "game_options.h" #include "menu_input.h" +struct unkStruct_203B260 +{ + struct GameOptions *optionsMenu; + u32 unk4; + u8 unk8; + u8 fill9[0x10 - 0x9]; + u32 unk10; + u8 fill14[0x28 - 0x14]; + s16 unk28; + u8 fill2A[0x44 - 0x2A]; + u32 unk44; + struct UnkTextStruct2 * unk48; + struct UnkTextStruct2 unk4C[4]; +}; +struct unkStruct_203B260 *gUnknown_203B260; +extern struct UnkTextStruct2 gUnknown_80DC020; +extern struct UnkTextStruct2 gUnknown_80DC03C; + +extern u8 gWindowBGTitle[]; +extern u8 gUnknown_80DC064[]; +extern u8 gWindowBGGreenString[]; +extern u8 gWindowBGRedString[]; +extern u8 gWindowBGBlueString[]; + +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); +extern s32 sub_8008ED0(u8 *); +extern s32 sub_8013800(u32 *, u32); +extern void sub_80078A4(u32, u32, u32, u32, u32); +extern u8 sub_80138B8(u32 *, u32); +void PlayMenuSoundEffect(u32); +s32 sub_8012AE8(void); +void sub_801317C(u32 *); +extern void sub_8013818(void *, u32, u32, u32); + +void CreateOptionsMenu(void); +void nullsub_38(void); + struct unkStruct_203B25C { // size: 0x11C @@ -28,7 +69,7 @@ extern void sub_801E0FC(); extern void HandleChangeSettingsMenu(); extern void sub_801DD84(); extern void sub_801DED0(); -extern u32 sub_801E198(struct GameOptions *); +extern bool8 sub_801E198(struct GameOptions *); extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32); extern void CreateHintDisplayScreen(u32); extern void sub_801E3F0(u32); @@ -515,3 +556,123 @@ void HandleChangeSettingsMenu(void) } } } + +bool8 sub_801E198(struct GameOptions *optionsMenu) +{ + gUnknown_203B260 = MemoryAlloc(sizeof(struct unkStruct_203B260), 8); + gUnknown_203B260->optionsMenu = optionsMenu; + sub_801317C(&gUnknown_203B260->unk4); + gUnknown_203B260->unk44 = 0; + gUnknown_203B260->unk48 = &gUnknown_203B260->unk4C[0]; + sub_8006518(gUnknown_203B260->unk4C); + gUnknown_203B260->unk4C[gUnknown_203B260->unk44] = gUnknown_80DC03C; + sub_8012D08(gUnknown_203B260->unk48,1); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B260->unk4C,1,1); + sub_8013818(&gUnknown_203B260->unk10,1,1,gUnknown_203B260->unk44); + nullsub_38(); + CreateOptionsMenu(); + return TRUE; +} + +u32 sub_801E218(void) +{ + bool32 flag; + + flag = FALSE; + + switch(sub_8012AE8()) + { + case INPUT_B_BUTTON: + PlayMenuSoundEffect(1); + return 2; + case INPUT_A_BUTTON: + PlayMenuSoundEffect(0); + return 3; + case INPUT_DPAD_LEFT: + if (gUnknown_203B260->unk28 == 0) + { + if (gUnknown_203B260->optionsMenu->windowColor == WINDOW_COLOR_BLUE) { + gUnknown_203B260->optionsMenu->windowColor = WINDOW_COLOR_GREEN; + } + else { + gUnknown_203B260->optionsMenu->windowColor--; + } + PlayMenuSoundEffect(3); + flag = TRUE; + } + break; + case INPUT_DPAD_RIGHT: + if(gUnknown_203B260->unk28 == 0) + { + if (gUnknown_203B260->optionsMenu->windowColor > WINDOW_COLOR_RED) { + gUnknown_203B260->optionsMenu->windowColor = WINDOW_COLOR_BLUE; + } + else + gUnknown_203B260->optionsMenu->windowColor++; + PlayMenuSoundEffect(3); + flag = TRUE; + } + break; + } + + // == 1 is needed for matching + if ((sub_80138B8(&gUnknown_203B260->unk10,1) != 0) || (flag == TRUE)) { + nullsub_38(); + CreateOptionsMenu(); + return 1; + } + else { + return 0; + } +} + +void sub_801E2C4(void) +{ + if(gUnknown_203B260 != NULL) + { + gUnknown_203B260->unk4C[gUnknown_203B260->unk44] = gUnknown_80DC020; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B260->unk4C, 1, 1); + MemoryFree(gUnknown_203B260); + gUnknown_203B260 = NULL; + } +} + + +void nullsub_38(void) +{ + +} + +void CreateOptionsMenu(void) +{ + u32 uVar2; + u32 y; + + sub_8008C54(gUnknown_203B260->unk44); + sub_80073B8(gUnknown_203B260->unk44); + xxx_call_draw_string(0x10,0,gWindowBGTitle,gUnknown_203B260->unk44,0); + y = sub_8013800(&gUnknown_203B260->unk10,0); + xxx_call_draw_string(8,y,gUnknown_80DC064,gUnknown_203B260->unk44,0); + + switch(gUnknown_203B260->optionsMenu->windowColor) + { + case WINDOW_COLOR_BLUE: + uVar2 = sub_8008ED0(gWindowBGBlueString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, + y + 0xA,uVar2,7); + break; + case WINDOW_COLOR_RED: + uVar2 = sub_8008ED0(gWindowBGRedString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, + y + 0xA,uVar2,7); + break; + case WINDOW_COLOR_GREEN: + uVar2 = sub_8008ED0(gWindowBGGreenString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, + y + 0xA,uVar2,7); + break; + } + sub_80073E0(gUnknown_203B260->unk44); +} From f22345cf39f24ebfbae68d76c8111fd52ceea84f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 3 Mar 2023 19:40:11 -0800 Subject: [PATCH 20/21] chore: label variable and move some stuff --- src/options_menu.c | 123 ++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 64 deletions(-) diff --git a/src/options_menu.c b/src/options_menu.c index 465884e26..522c986a0 100644 --- a/src/options_menu.c +++ b/src/options_menu.c @@ -6,46 +6,6 @@ #include "game_options.h" #include "menu_input.h" -struct unkStruct_203B260 -{ - struct GameOptions *optionsMenu; - u32 unk4; - u8 unk8; - u8 fill9[0x10 - 0x9]; - u32 unk10; - u8 fill14[0x28 - 0x14]; - s16 unk28; - u8 fill2A[0x44 - 0x2A]; - u32 unk44; - struct UnkTextStruct2 * unk48; - struct UnkTextStruct2 unk4C[4]; -}; -struct unkStruct_203B260 *gUnknown_203B260; -extern struct UnkTextStruct2 gUnknown_80DC020; -extern struct UnkTextStruct2 gUnknown_80DC03C; - -extern u8 gWindowBGTitle[]; -extern u8 gUnknown_80DC064[]; -extern u8 gWindowBGGreenString[]; -extern u8 gWindowBGRedString[]; -extern u8 gWindowBGBlueString[]; - -extern void sub_8008C54(u32); -extern void sub_80073B8(u32); -extern void sub_80073E0(u32); -extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); -extern s32 sub_8008ED0(u8 *); -extern s32 sub_8013800(u32 *, u32); -extern void sub_80078A4(u32, u32, u32, u32, u32); -extern u8 sub_80138B8(u32 *, u32); -void PlayMenuSoundEffect(u32); -s32 sub_8012AE8(void); -void sub_801317C(u32 *); -extern void sub_8013818(void *, u32, u32, u32); - -void CreateOptionsMenu(void); -void nullsub_38(void); - struct unkStruct_203B25C { // size: 0x11C @@ -59,9 +19,57 @@ struct unkStruct_203B25C struct UnkTextStruct2 unkBC[4]; }; +struct unkStruct_203B260 +{ + struct GameOptions *optionsMenu; + u32 unk4; + u8 unk8; + u8 fill9[0x10 - 0x9]; + u32 unk10; + u8 fill14[0x28 - 0x14]; + s16 unk28; + u8 fill2A[0x44 - 0x2A]; + u32 unk44; + struct UnkTextStruct2 * unk48; + struct UnkTextStruct2 unk4C[4]; +}; +struct unkStruct_203B260 *gUnknown_203B260; +extern struct GameOptions *gGameOptionsRef; +extern struct unkStruct_203B25C *gUnknown_203B25C; +extern const struct UnkTextStruct2 gUnknown_80DBFB0; +extern const struct UnkTextStruct2 gUnknown_80DBFCC; +extern const struct UnkTextStruct2 gUnknown_80DC020; +extern const struct UnkTextStruct2 gUnknown_80DC03C; + +extern u8 gWindowBGTitle[]; +extern u8 gUnknown_80DC064[]; +extern u8 gWindowBGGreenString[]; +extern u8 gWindowBGRedString[]; +extern u8 gWindowBGBlueString[]; + +extern const char gOthers_MenuOption[]; +extern const char gUnknown_80DBFEC[]; +extern const char gOthers_GameOptions[]; +extern const char gOthers_Hints[]; +extern const char *gUnknown_80D4920[]; +extern const char *gUnknown_80D4928[]; + +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); +extern s32 sub_8008ED0(u8 *); +extern s32 sub_8013800(u32 *, u32); +extern void sub_80078A4(u32, u32, u32, u32, u32); +extern u8 sub_80138B8(u32 *, u32); +void PlayMenuSoundEffect(u32); +s32 sub_8012AE8(void); +void sub_801317C(u32 *); +extern void sub_8013818(void *, u32, u32, u32); +void CreateOptionsMenu(void); +void nullsub_38(void); extern void sub_801DD6C(u32); - extern void HandleOthersMenu(); extern void sub_801E088(); extern void sub_801E0E0(); @@ -86,19 +94,6 @@ extern s32 sub_80144A4(s32 *); extern void SetWindowBGColor(void); extern void sub_8099690(u32); -extern struct GameOptions *gGameOptionsRef; -extern struct unkStruct_203B25C *gUnknown_203B25C; -extern const struct UnkTextStruct2 gUnknown_80DBFCC; -extern const struct UnkTextStruct2 gUnknown_80DBFB0; - -extern const char gOthers_MenuOption[]; -extern const char gUnknown_80DBFEC[]; -extern const char gOthers_GameOptions[]; -extern const char gOthers_Hints[]; -extern const char *gUnknown_80D4920[]; -extern const char *gUnknown_80D4928[]; - - enum { MENU_OPTION_DEFAULT = 1, @@ -647,7 +642,7 @@ void nullsub_38(void) void CreateOptionsMenu(void) { - u32 uVar2; + u32 length; u32 y; sub_8008C54(gUnknown_203B260->unk44); @@ -659,19 +654,19 @@ void CreateOptionsMenu(void) switch(gUnknown_203B260->optionsMenu->windowColor) { case WINDOW_COLOR_BLUE: - uVar2 = sub_8008ED0(gWindowBGBlueString); - sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, - y + 0xA,uVar2,7); + length = sub_8008ED0(gWindowBGBlueString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50, + y + 0xA,length,7); break; case WINDOW_COLOR_RED: - uVar2 = sub_8008ED0(gWindowBGRedString); - sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, - y + 0xA,uVar2,7); + length = sub_8008ED0(gWindowBGRedString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50, + y + 0xA,length,7); break; case WINDOW_COLOR_GREEN: - uVar2 = sub_8008ED0(gWindowBGGreenString); - sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * '(' + 0x50, - y + 0xA,uVar2,7); + length = sub_8008ED0(gWindowBGGreenString); + sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50, + y + 0xA,length,7); break; } sub_80073E0(gUnknown_203B260->unk44); From 5c5437f69fe2f9f6a4697dae74fe5ec5538c0a44 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 3 Mar 2023 18:39:33 -0600 Subject: [PATCH 21/21] address review comments --- src/friend_area.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/friend_area.c b/src/friend_area.c index 4f0f76246..2e6c52808 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/dungeon.h" #include "constants/friend_area.h" #include "friend_area.h" #include "pokemon.h" @@ -361,7 +362,7 @@ void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3) { if((pokemon->isTeamLeader == 0) || r2) { - flag = pokemon->dungeonLocation.id == 65; + flag = pokemon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER; if(!flag || r3) { if(sub_80923D4(counter) == r0) @@ -479,7 +480,7 @@ void sub_809249C(u8 friendArea, u8 clear) { if(sub_80923D4(index) == friendArea) { - dungeonCheck = pokemon->dungeonLocation.id == 65; + dungeonCheck = pokemon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER; if(dungeonCheck || (isTeamLeader = pokemon->isTeamLeader != FALSE, isTeamLeader)) clear = FALSE; else