diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/code_801AFA4.c | 9 | ||||
-rw-r--r-- | src/code_801DCC4.c | 39 | ||||
-rw-r--r-- | src/code_8041AD0.c | 5 | ||||
-rw-r--r-- | src/code_80958E8.c | 1 | ||||
-rw-r--r-- | src/code_80A26CC.c | 49 | ||||
-rw-r--r-- | src/debug_menu_2.c | 3 | ||||
-rw-r--r-- | src/debug_menu_mid.c | 24 | ||||
-rw-r--r-- | src/friend_area_action_menu.c | 10 | ||||
-rw-r--r-- | src/friend_area_action_menu_1.c | 22 | ||||
-rw-r--r-- | src/friend_rescue_1.c | 9 | ||||
-rw-r--r-- | src/gulpin_shop.c | 45 | ||||
-rw-r--r-- | src/gulpin_shop_1.c | 79 | ||||
-rw-r--r-- | src/kangaskhan_storage_2.c | 15 | ||||
-rw-r--r-- | src/personality_test.c | 38 | ||||
-rw-r--r-- | src/rescue_password_menu.c | 93 | ||||
-rw-r--r-- | src/rescue_password_menu_1.c | 33 | ||||
-rw-r--r-- | src/trade_items_menu.c | 26 | ||||
-rw-r--r-- | src/wonder_mail.c | 20 | ||||
-rw-r--r-- | src/wonder_mail_2.c | 456 | ||||
-rw-r--r-- | src/wonder_mail_3.c | 13 | ||||
-rw-r--r-- | src/wonder_mail_3_1.c | 15 | ||||
-rw-r--r-- | src/wonder_mail_main_menu.c | 1 | ||||
-rw-r--r-- | src/wonder_mail_pre.c | 310 |
23 files changed, 1064 insertions, 251 deletions
diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index c9d71dd..b7b9234 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -3,6 +3,7 @@ #include "text.h" #include "item.h" #include "team_inventory.h" +#include "menu.h" extern struct TeamInventory *gTeamInventory_203B460; @@ -30,7 +31,7 @@ extern void sub_801B178(void); extern void sub_8094060(u32 *, u32 *); extern void PlaySound(u32); extern void sub_80141B4(u32 *, u32, u32 ,u32); -extern void sub_8014248(u32 *, u32, u32, u32 *, u32, u32, u32, u32, u32); +extern void sub_8014248(u32 *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32); struct subStruct_203B22C { @@ -51,13 +52,13 @@ struct unkStruct_203B22C u16 unk5A; struct subStruct_203B22C *unk5C; u32 unk60; - u32 unk64; + /* 0x64 */ struct MenuItem menuItems[8]; }; extern struct unkStruct_203B22C *gUnknown_203B22C; u32 sub_801AFA4(u32 r0) { - gUnknown_203B22C = MemoryAlloc(0xA4, 8); + gUnknown_203B22C = MemoryAlloc(sizeof(struct unkStruct_203B22C), 8); gUnknown_203B22C->unk4 = r0; gUnknown_203B22C->unk8 = gTeamInventory_203B460->teamItems[r0].itemIndex; gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8); @@ -122,7 +123,7 @@ void sub_801B080(void) sub_801B178(); // #+Who will learn the move // #+#C5$m7#R? - sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, &gUnknown_203B22C->unk64, 0, 4, 0, 0, 0x20); + sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, gUnknown_203B22C->menuItems, 0, 4, 0, 0, 0x20); break; case 1: DisplayGulpinDialogueSprite(2, gUnknown_203B22C->unk58, &gUnknown_203B22C->unkC); diff --git a/src/code_801DCC4.c b/src/code_801DCC4.c index 0fde1a2..a17b3b9 100644 --- a/src/code_801DCC4.c +++ b/src/code_801DCC4.c @@ -13,8 +13,7 @@ struct unkStruct_203B25C u32 unk18; const char *unk1C; u8 fill20[0x6C - 0x20]; - struct MenuItem unk6C[3]; - u8 fill84[0xAC - 0x84]; + struct MenuItem menuItems[8]; u16 unkAC[8]; struct UnkTextStruct2 unkBC[4]; }; @@ -137,7 +136,7 @@ void sub_801DD84(void) // TODO probably could be cleaned up to actually match iVar3 = 0; if (gUnknown_203B25C->unkAC[iVar3] == 0) { - gUnknown_203B25C->unk18 = gUnknown_203B25C->unk6C[iVar3].menuAction; + gUnknown_203B25C->unk18 = gUnknown_203B25C->menuItems[iVar3].menuAction; } else { do { @@ -145,7 +144,7 @@ void sub_801DD84(void) if(iVar3 > 7) break; if(gUnknown_203B25C->unkAC[iVar3] == 0){ - gUnknown_203B25C->unk18 = gUnknown_203B25C->unk6C[iVar3].menuAction; + gUnknown_203B25C->unk18 = gUnknown_203B25C->menuItems[iVar3].menuAction; break; } } while (iVar3 < 8); @@ -155,7 +154,7 @@ void sub_801DD84(void) gUnknown_203B25C->unkBC[iVar3] = gUnknown_80DBFCC; } gUnknown_203B25C->unkBC[0] = gUnknown_80DBFB0; - sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->unk6C); + sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->menuItems); gUnknown_203B25C->unkBC[0].unk0c = 0xA; break; case 1: @@ -165,7 +164,7 @@ void sub_801DD84(void) gUnknown_203B25C->unkBC[iVar3] = gUnknown_80DBFB0; } gUnknown_203B25C->unkBC[0] = gUnknown_80DBFCC; - sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->unk6C); + sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->menuItems); gUnknown_203B25C->unkBC[0].unk0c = 0xA; break; default: @@ -353,7 +352,7 @@ void sub_801DED0(void) case 0: case 1: gUnknown_203B25C->unk1C = gOthers_MenuOption; - sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->unk6C,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0); + sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->menuItems,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0); break; case 3: sub_801E3F0(0); @@ -372,7 +371,7 @@ void sub_801DED0(void) case 7: CreateChangeSettingsConfirmMenu(); // Change settings? - sub_8014248(gUnknown_80DBFEC,0,4,gUnknown_203B25C->unk6C,0,4,0,0,0x20); + sub_8014248(gUnknown_80DBFEC,0,4,gUnknown_203B25C->menuItems,0,4,0,0,0x20); break; } } @@ -388,13 +387,13 @@ void CreateOthersMenu(void) // This is dumb that I have to squeeze this in like this preload = gUnknown_203B25C; blankText = NULL; - preload->unk6C[0].text = gOthers_GameOptions; - preload->unk6C[0].menuAction = MENU_OPTION_GAMEOPTIONS; + preload->menuItems[0].text = gOthers_GameOptions; + preload->menuItems[0].menuAction = MENU_OPTION_GAMEOPTIONS; defaultAction = MENU_OPTION_DEFAULT; - preload->unk6C[1].text = gOthers_Hints; - preload->unk6C[1].menuAction = MENU_OPTION_HINTS; - preload->unk6C[2].text = blankText; - preload->unk6C[2].menuAction = defaultAction; + preload->menuItems[1].text = gOthers_Hints; + preload->menuItems[1].menuAction = MENU_OPTION_HINTS; + preload->menuItems[2].text = blankText; + preload->menuItems[2].menuAction = defaultAction; } void CreateChangeSettingsConfirmMenu(void) @@ -408,13 +407,13 @@ void CreateChangeSettingsConfirmMenu(void) // This is dumb that I have to squeeze this in like this preload = gUnknown_203B25C; blankText = NULL; - preload->unk6C[0].text = *gUnknown_80D4920; // Yes - preload->unk6C[0].menuAction = MENU_OPTION_YES; + preload->menuItems[0].text = *gUnknown_80D4920; // Yes + preload->menuItems[0].menuAction = MENU_OPTION_YES; defaultAction = MENU_OPTION_DEFAULT; - preload->unk6C[1].text = *gUnknown_80D4928; // No - preload->unk6C[1].menuAction = MENU_OPTION_NO; - preload->unk6C[2].text = blankText; - preload->unk6C[2].menuAction = defaultAction; + preload->menuItems[1].text = *gUnknown_80D4928; // No + preload->menuItems[1].menuAction = MENU_OPTION_NO; + preload->menuItems[2].text = blankText; + preload->menuItems[2].menuAction = defaultAction; } void HandleOthersMenu(void) diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 738b881..b411a26 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -1,5 +1,6 @@ #include "global.h" #include "code_8041D5C.h" +#include "gUnknown_203B418.h" struct unkStruct_80420E8 { @@ -8,7 +9,7 @@ struct unkStruct_80420E8 u32 unk8; }; -extern u8 *gUnknown_203B418; +extern struct unkStruct_203B418 *gUnknown_203B418; extern void sub_803ED30(u8, struct unkDungeon_8041D5C *r0, u8, u8); @@ -593,7 +594,7 @@ void sub_80420E8(struct unkDungeon_8041D5C *r0, struct unkStruct_80420E8 *r1) u32 temp; u32 arg; temp = r1->unk8; - if(gUnknown_203B418[0x16d] != 0) + if(gUnknown_203B418->unk16D != 0) temp = sub_806F62C(r1->unk8); switch(temp) { diff --git a/src/code_80958E8.c b/src/code_80958E8.c index 72cc735..f32a41b 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -3,6 +3,7 @@ #include "item.h" #include "friend_area.h" #include "constants/friend_area.h" +#include "sub_8095228.h" #include "wonder_mail.h" #include "constants/wonder_mail.h" diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c index 110c278..bc5f60e 100644 --- a/src/code_80A26CC.c +++ b/src/code_80A26CC.c @@ -69,24 +69,13 @@ u32 sub_80A2688(u8 r0, u32 r1) // u8 cast is needed for only this compare if ((u8)uVar1 < 0x17) - { return uVar1; - } + else if(r0 == 0x2F) + return 0x17; + else if (r0 == 0x30) + return 0x18; else - { - if(r0 == 0x2F) - { - return 0x17; - } - else if (r0 == 0x30) - { - return 0x18; - } - else - { - return -1; - } - } + return -1; } s16 sub_80A26B8(s16 r0) @@ -151,7 +140,7 @@ u8 sub_80A2740(s16 r0) return temp->unkC; } -u32 sub_80A2750(s16 r0) +s16 sub_80A2750(s16 r0) { struct unkStruct_80A2608 *temp; s32 temp_32; @@ -184,7 +173,7 @@ u32 sub_80A2750(s16 r0) return 2; } -u32 sub_80A27CC(s16 r0) +u8 sub_80A27CC(s16 r0) { s32 temp; s32 temp2; @@ -208,15 +197,13 @@ u32 sub_80A27CC(s16 r0) return 1; } -u32 sub_80A2824(u8 r0) +u8 sub_80A2824(u8 r0) { s32 counter; struct unkStruct_80A2608 *temp; if(sub_80023E4(5) != 0) - { return 0; - } if(sub_80023E4(1) != 0) { for(counter = 0; counter <= 0x2D; counter++) @@ -227,13 +214,9 @@ u32 sub_80A2824(u8 r0) if(temp->unkC == r0) { if(sub_8097384(counter) != 0) - { return 1; - } if(sub_80973F4(counter) != 0) - { return 1; - } } } } @@ -244,15 +227,9 @@ u32 sub_80A2824(u8 r0) { temp = sub_80A2620(counter); if(temp->unk11 != 0) - { if(temp->unkC == r0) - { if(sub_8097384(counter) != 0) - { return 1; - } - } - } } } return 0; @@ -267,13 +244,9 @@ u32 sub_80A28B4(s16 r0) if(temp->unk0 != -1) { if(sub_8097384(r0) == 0 && sub_80973F4(r0) == 0) - { return 0; - } else - { return 1; - } } return 0; } @@ -283,7 +256,7 @@ u32 sub_80A28F0(u8 r0) s32 counter; struct unkStruct_80A2608 *temp; - for(counter = 0; counter <= 0x2D; counter++) + for(counter = 0; counter < 0x2E; counter++) { temp = sub_80A2620(counter); if(temp->unk11 != 0) @@ -291,13 +264,9 @@ u32 sub_80A28F0(u8 r0) if(temp->unkC == r0) { if(sub_8097384(counter) != 0) - { return 1; - } if(sub_80973F4(counter) != 0) - { return 1; - } } } } diff --git a/src/debug_menu_2.c b/src/debug_menu_2.c index dbcb60e..0704581 100644 --- a/src/debug_menu_2.c +++ b/src/debug_menu_2.c @@ -24,8 +24,7 @@ struct unkStruct_203B3F8 u32 unk7C; u32 unk80; u8 fill84[0x90 - 0x84]; - struct MenuItem unk90[3]; - u8 fillA8[0xD0 - 0xA8]; + struct MenuItem unk90[8]; u16 unkD0[8]; struct UnkTextStruct2 unkE0[4]; }; diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c index 5244c4b..a07b6c5 100644 --- a/src/debug_menu_mid.c +++ b/src/debug_menu_mid.c @@ -13,8 +13,7 @@ struct unkStruct_203B3F0 u8 itemIndex; u8 fill5[0x8 - 5]; u32 unk8; - struct MenuItem menus[3]; - u8 fill24[0x4C - 0x24]; + struct MenuItem menuItems[8]; u32 unk4C; u8 fill50[0x9C - 0x50]; u32 unk9C; @@ -39,8 +38,7 @@ struct unkStruct_203B3F4 u8 unk4; u8 fill5[0x8 - 5]; u32 unk8; - struct MenuItem menus[3]; - u8 fill24[0x4C - 0x24]; + struct MenuItem menuItems[8]; u32 unk4C; u8 fill50[0x9C - 0x50]; struct UnkTextStruct2 unk9C[4]; @@ -193,7 +191,7 @@ void sub_803A5A0(void) case 2: sub_801CCD8(); sub_803A6F0(); - sub_8012D60(&gUnknown_203B3F0->unk4C, gUnknown_203B3F0->menus, 0, 0, gUnknown_203B3F0->unk8, 2); + sub_8012D60(&gUnknown_203B3F0->unk4C, gUnknown_203B3F0->menuItems, 0, 0, gUnknown_203B3F0->unk8, 2); break; case 3: gUnknown_203B3F0->unkAC = 3; @@ -232,20 +230,20 @@ void sub_803A6F0(void) s32 temp1; struct unkStruct_203B3F0 *preload; - gUnknown_203B3F0->menus[0].text = &gDebug_NumberText; - gUnknown_203B3F0->menus[0].menuAction = 2; + gUnknown_203B3F0->menuItems[0].text = &gDebug_NumberText; + gUnknown_203B3F0->menuItems[0].menuAction = 2; gUnknown_203B3F0->unk8 = 2; if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->itemIndex)) { - gUnknown_203B3F0->menus[0].menuAction = -1; + gUnknown_203B3F0->menuItems[0].menuAction = -1; gUnknown_203B3F0->unk8 = 3; } preload = gUnknown_203B3F0; // this var gets loaded in between the sets... very dumb temp1 = 1; - preload->menus[1].text = *gUnknown_80D4970; - preload->menus[1].menuAction = 3; - preload->menus[2].text = NULL; - preload->menus[2].menuAction = temp1; + preload->menuItems[1].text = *gUnknown_80D4970; + preload->menuItems[1].menuAction = 3; + preload->menuItems[2].text = NULL; + preload->menuItems[2].menuAction = temp1; } void sub_803A740(void) @@ -403,7 +401,7 @@ void sub_803A9AC(void) case 2: sub_8021494(); sub_803AA34(); - sub_8012D60(&gUnknown_203B3F4->unk4C,gUnknown_203B3F4->menus,0,0,gUnknown_203B3F4->unk8,2); + sub_8012D60(&gUnknown_203B3F4->unk4C,gUnknown_203B3F4->menuItems,0,0,gUnknown_203B3F4->unk8,2); break; case 3: sub_8021774(gUnknown_203B3F4->unk4,1,0); diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index 20beb31..3ffed40 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -20,7 +20,7 @@ extern const char gUnknown_80DD8D0[]; 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, u8 *); +extern void sub_8027D40(u32, struct ItemSlot *); extern void sub_8023868(u32, u32, u32, u32); extern void sub_8023B7C(u32); extern void sub_8023DA4(); @@ -38,7 +38,7 @@ extern void sub_809401C(u32 *, u32 *); extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32); extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); -extern void sub_8027184(u32); +extern void SetFriendAreaActionMenuState(u32); extern void ResetSprites(u8 ); extern void sub_802719C(); extern void sub_8027274(); @@ -65,7 +65,7 @@ u32 sub_8027074(void) gUnknown_203B2BC->unk70 = 0; gUnknown_203B2BC->unk74 = 0; gUnknown_203B2BC->unk78 = 0; - sub_8027184(0); + SetFriendAreaActionMenuState(0); return 1; } @@ -73,7 +73,7 @@ u32 sub_80270A4(void) { switch(gUnknown_203B2BC->state) { case 0: - sub_8027184(1); + SetFriendAreaActionMenuState(1); break; case 1: case 2: @@ -129,7 +129,7 @@ void sub_8027168(void) } } -void sub_8027184(u32 newState) +void SetFriendAreaActionMenuState(u32 newState) { gUnknown_203B2BC->state = newState; sub_802719C(); diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index f35bcfa..a848fff 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -14,14 +14,14 @@ void sub_801B450(); u32 sub_801EF38(u8 r0); void sub_801F214(); -extern void sub_8027184(u32); +extern void SetFriendAreaActionMenuState(u32); extern u8 sub_8012FD8(u32 *r0); extern void sub_8013114(u32 *, s32 *); extern void PlaySound(u32); extern void ShiftItemsDownFrom(u32); extern void FillInventoryGaps(); extern void nullsub_104(); -extern void sub_8091274(u8 *); +extern void sub_8091274(struct ItemSlot *); extern void sub_801A928(); extern void sub_8099690(u32); extern void GivePokemonItem(s16, struct HeldItem *); @@ -41,7 +41,7 @@ void sub_8027AE4(void) { case 1: case 3: - sub_8027184(2); + SetFriendAreaActionMenuState(2); break; case 2: sub_8027EB8(); @@ -59,18 +59,18 @@ void sub_8027B28(void) gUnknown_203B2BC->unkC = sub_801A8AC(); gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex; gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems; - sub_8027184(0xc); + SetFriendAreaActionMenuState(0xc); break; case 4: gUnknown_203B2BC->unkC = sub_801A8AC(); gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex; gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems; sub_8099690(0); - sub_8027184(0xd); + SetFriendAreaActionMenuState(0xd); break; case 2: sub_801A928(); - sub_8027184(2); + SetFriendAreaActionMenuState(2); break; case 0: case 1: @@ -93,20 +93,20 @@ void sub_8027BD8(void) PlaySound(0x14d); ShiftItemsDownFrom(gUnknown_203B2BC->unkC); FillInventoryGaps(); - if (gUnknown_203B2BC->unk14 != 0) { + if (gUnknown_203B2BC->unk14.unk0 != 0) { sub_8091274(&gUnknown_203B2BC->unk14); } GivePokemonItem(gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk10); sub_801A928(); nullsub_104(); - sub_8027184(2); + SetFriendAreaActionMenuState(2); break; case 4: sub_8099690(0); - sub_8027184(0xd); + SetFriendAreaActionMenuState(0xd); break; case 1: - sub_8027184(0xb); + SetFriendAreaActionMenuState(0xb); break; } } @@ -119,5 +119,5 @@ void sub_8027C84() if(temp > 3) return; sub_801B450(); - sub_8027184(0xB); + SetFriendAreaActionMenuState(0xB); } diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index 8c9612c..499ba92 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -28,7 +28,7 @@ extern u8 sub_80953D4(u32); extern u8 sub_801CF14(u32); extern u8 gUnknown_80E48A8[]; -extern u32 gUnknown_80E2440; +extern struct MenuItem gUnknown_80E2440[]; extern u8 gUnknown_80E49C4[]; extern u8 gUnknown_80E4704[]; extern u8 gUnknown_80E48E8[]; @@ -36,7 +36,7 @@ extern u8 gUnknown_80E4928[]; extern u8 gUnknown_80E4964[]; extern u8 gUnknown_80E499C[]; extern u8 gUnknown_80E460C[]; -extern u32 gUnknown_80E2290[]; +extern struct MenuItem gUnknown_80E2290[]; extern u8 gUnknown_80E31FC[]; @@ -44,7 +44,7 @@ extern u32 sub_80154F0(); extern void sub_80155F0(); struct unkStruct_8095228 *sub_8095228(u8); extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32); -extern void sub_8014248(const char *r0, u32, u32, u32 *r4, u32, u32, u32, u32 *r5, u32); +extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); extern u8 sub_8012FD8(u32 *); extern void sub_8013114(u32 *, s32 *); @@ -69,7 +69,6 @@ extern u8 sub_80307EC(void); extern u32 sub_8031DCC(void); extern void sub_8031E10(void); extern void sub_8031E00(void); -extern void PrintFriendRescueError(u32); extern u8 sub_8024108(u32); extern void sub_802452C(void); extern u32 sub_80244E4(void); @@ -1343,7 +1342,7 @@ void sub_8034D74(void) switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp.unk0)) { case 17: - sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2440, 0, 4, 0, 0, 0x101); + sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101); SetFriendRescueMenuState(0x74); break; case 20: diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 0600bef..69c6a52 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -4,38 +4,9 @@ #include "memory.h" #include "text.h" #include "input.h" +#include "menu.h" +#include "gulpin_shop.h" -struct unkStruct_Gulpin -{ - u8 fill0[0x22]; - u16 unk22; -}; - -struct unkStruct_203B26C -{ -// size: 0x18C - u32 unk0; - u32 unk4; - u32 unk8; - s16 unkC; - u8 unkE; - struct unkStruct_Gulpin * unk10; - u8 fill14[0x1C - 0x14]; - u16 unk1C; - u8 fill20[0x28 - 0x20]; - u32 unk28; - u8 fill2C[0x118 - 0x2C]; - /* 0x118 */ struct OpenedFile *faceFile; - /* 0x11C */ u8 *faceData; - /* 0x120 */ u16 unk120; - u16 unk122; - u8 unk124; - u8 unk125; - u8 unk126; - u8 unk127; - struct OpenedFile **unk128; - struct UnkTextStruct2 unk12C[4]; -}; extern struct unkStruct_203B26C *gUnknown_203B26C; extern const struct UnkTextStruct2 gUnknown_80DC11C; extern const struct UnkTextStruct2 gUnknown_80DC134; @@ -47,7 +18,7 @@ extern void sub_801EDA4(); extern void sub_801EDC0(); extern void sub_801E980(); extern void sub_801EA28(); -extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *); +extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_801EBC4(); u32 DisplayGulpinDialogueSprite(s32 param_1,s16 param_2,struct unkStruct_Gulpin *param_3) @@ -85,7 +56,7 @@ u32 DisplayGulpinDialogueSprite(s32 param_1,s16 param_2,struct unkStruct_Gulpin u32 sub_801E8C0(void) { - switch(gUnknown_203B26C->unk4) + switch(gUnknown_203B26C->state) { case 0: case 1: @@ -99,7 +70,7 @@ u32 sub_801E8C0(void) break; case 4: sub_801EDC0(); - if(gUnknown_203B26C->unk4 == 5) + if(gUnknown_203B26C->state == 5) return 3; break; case 5: @@ -127,7 +98,7 @@ void sub_801E93C(void) void UpdateGulpinShopState(u32 newState) { - gUnknown_203B26C->unk4 = newState; + gUnknown_203B26C->state = newState; sub_801E980(); sub_801EA28(); } @@ -137,13 +108,13 @@ void sub_801E980(void) s32 iVar2; sub_8006518(gUnknown_203B26C->unk12C); - switch(gUnknown_203B26C->unk4) + switch(gUnknown_203B26C->state) { case 2: sub_801EBC4(); gUnknown_203B26C->unk12C[1] = gUnknown_80DC11C; gUnknown_203B26C->unk12C[2] = gUnknown_80DC134; - sub_8012CAC(&gUnknown_203B26C->unk12C[2], &gUnknown_203B26C->unk28); + sub_8012CAC(&gUnknown_203B26C->unk12C[2], gUnknown_203B26C->unk28); break; default: for(iVar2 = 0; iVar2 < 4; iVar2++) diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c new file mode 100644 index 0000000..2eadcfe --- /dev/null +++ b/src/gulpin_shop_1.c @@ -0,0 +1,79 @@ +#include "global.h" +#include "file_system.h" +#include "pokemon.h" +#include "memory.h" +#include "text.h" +#include "input.h" +#include "menu.h" +#include "gulpin_shop.h" + +extern struct unkStruct_203B26C *gUnknown_203B26C; +extern void UpdateGulpinShopState(u32); +extern void sub_8093CF8(struct unkStruct_Gulpin *, u32); +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 sub_80934B0(u32, struct unkStruct_Gulpin *); +extern void PlaySound(u32); +extern void sub_801EF38(u32); + +void sub_801ED28(void) +{ + s32 menuAction; + + menuAction = 0; + sub_801EF38(0); + if(sub_8012FD8(&gUnknown_203B26C->unk78) == 0) + sub_8013114(&gUnknown_203B26C->unk78,&menuAction); + switch(menuAction) + { + case 1: + case 5: + UpdateGulpinShopState(1); + break; + case 2: + PlaySound(0x133); + gUnknown_203B26C->unkE = sub_80934B0(gUnknown_203B26C->unk20, gUnknown_203B26C->unk10); + UpdateGulpinShopState(4); + break; + case 3: + UpdateGulpinShopState(3); + } +} + +void sub_801EDA4(void) +{ + switch(sub_801F890()) + { + case 2: + case 3: + sub_801F8D0(); + UpdateGulpinShopState(1); + break; + case 0: + case 1: + break; + } +} + +void sub_801EDC0(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0){ + switch(temp) + { + case 4: + sub_801F214(); + sub_8093CF8(gUnknown_203B26C->unk10, gUnknown_203B26C->unk20); + gUnknown_203B26C->state = 5; + break; + case 1: + case 5: + UpdateGulpinShopState(1); + break; + } + } +} diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c index ea1b804..a1f0c7e 100644 --- a/src/kangaskhan_storage_2.c +++ b/src/kangaskhan_storage_2.c @@ -19,8 +19,7 @@ struct unkStruct_203B20C u32 unk14; u32 unk18; u32 unk1C; - u32 unk20; - u8 fill24[0x60 - 0x24]; + struct MenuItem unk20[8]; u16 unk60[8]; u32 unk70; u8 fill74[0xC0 - 0x74]; @@ -74,7 +73,7 @@ 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 *, u32 *); +extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_80182E4(void); extern void sub_8008C54(u32); extern void sub_80073B8(u32); @@ -93,7 +92,7 @@ extern void sub_8013AA0(u32 *); extern void sub_801B3C0(struct ItemSlot *); extern void sub_801A5D8(u32, u32, u32, u32); extern void sub_801C8C4(u32, u32, u32, u32); -extern void sub_8012D60(u32 *, u32 *, u32, u16 *, u32, u32); +extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32); extern void sub_801CB5C(u32); extern void sub_801A8D0(u32); @@ -376,7 +375,7 @@ void sub_8017F28(void) gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; sub_80182E4(); gUnknown_203B20C->unkF0[2] = gUnknown_80DB7D0; - sub_8012CAC(&gUnknown_203B20C->unkF0[2], &gUnknown_203B20C->unk20); + sub_8012CAC(&gUnknown_203B20C->unkF0[2], gUnknown_203B20C->unk20); break; case 4: case 5: @@ -417,7 +416,7 @@ void sub_8018100(void) switch(gUnknown_203B20C->state) { case 1: - sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk14, 2); + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk14, 2); break; case 4: sub_801A5D8(3, 3, 0, 0xA); @@ -428,7 +427,7 @@ void sub_8018100(void) case 6: sub_801A9E0(); sub_801841C(); - sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk18, 2); + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk18, 2); break; case 7: sub_801B3C0(&gUnknown_203B20C->unk8); @@ -460,7 +459,7 @@ void sub_8018100(void) sub_801CCD8(); sub_801AD34(0); sub_80184D4(); - sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk1C, 2); + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->unk1C, 2); break; case 14: sub_801B3C0(&gUnknown_203B20C->unk8); diff --git a/src/personality_test.c b/src/personality_test.c index 76fc099..2034b7b 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -9,6 +9,7 @@ #include "memory.h" #include "gUnknown_203B46C.h" #include "text.h" +#include "menu.h" extern void sub_801317C(u32 *); extern void sub_8001024(u32 *); @@ -17,7 +18,7 @@ extern void sub_8094D28(s32); extern void sub_8001044(u32 *); extern void sub_80141B4(const char *text, u32 r1, u32 r2, u16 r3); -extern void sub_8014248(const char *text, u32, u32, u32 *r0, u32, u32, u32, u32, u32); +extern void sub_8014248(const char *text, u32, u32, struct MenuItem *r0, u32, u32, u32, u32, u32); extern u32 sub_80144A4(s32 *); @@ -54,7 +55,7 @@ extern struct UnkSaveStruct1 *gUnknown_203B46C; extern const char gStarterReveal[]; extern const char gGenderText[]; -extern u32 gGenderMenu; +extern struct MenuItem gGenderMenu[]; extern const char gPartnerSelectionHeaderText; extern u8 gNatureQuestionTable[NUM_QUIZ_QUESTIONS]; @@ -96,19 +97,19 @@ const char * const gEndIntroTextPtr = gEndIntroText; const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] = { - gHardyDescription, - gDocileDescription, - gBraveDescription, - gJollyDescription, - gImpishDescription, - gNaiveDescription, - gTimidDescription, - gHastyDescription, - gSassyDescription, - gCalmDescription, - gRelaxedDescription, - gLonelyDescription, - gQuirkyDescription + [HARDY] = gHardyDescription, + [DOCILE] = gDocileDescription, + [BRAVE] = gBraveDescription, + [JOLLY] = gJollyDescription, + [IMPISH] = gImpishDescription, + [NAIVE] = gNaiveDescription, + [TIMID] = gTimidDescription, + [HASTY] = gHastyDescription, + [SASSY] = gSassyDescription, + [CALM] = gCalmDescription, + [RELAXED] = gRelaxedDescription, + [LONELY] = gLonelyDescription, + [QUIRKY] = gQuirkyDescription }; #include "data/nature_description.h" @@ -289,7 +290,7 @@ void GenerateNewQuestionOrGender(void) gUnknown_203B400->QuestionCounter++; if (gUnknown_203B400->QuestionCounter > MAX_ASKED_QUESTIONS) { // We've asked enough questions - sub_8014248(gGenderText, 0, 0, &gGenderMenu, 0, 3, 0, 0, 257); + sub_8014248(gGenderText, 0, 0, gGenderMenu, 0, 3, 0, 0, 257); gUnknown_203B400->TestState = 3; } else @@ -335,7 +336,8 @@ void UpdateNatureTotals() { pointArray = gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->effects; // Skip until we get to the one for our answer - pointArray += 16 * answerIndex; + // Each Answer has 16 bytes. 13 are currently used with 3 remaining + pointArray += (NUM_PERSONALITIES + 3) * answerIndex; for (natureIndex = 0; natureIndex < NUM_PERSONALITIES; natureIndex++) { gUnknown_203B400->NatureTotals[natureIndex] += pointArray[natureIndex]; @@ -555,7 +557,7 @@ void PromptNewQuestion(void) { sub_8014248(gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->question, 0, 0, - (void *)gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->answers, + (struct MenuItem *)gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->answers, 0, 3, 0, 0, 0x101); } diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c new file mode 100644 index 0000000..ac2f296 --- /dev/null +++ b/src/rescue_password_menu.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "memory.h" +#include "input.h" +#include "item.h" +#include "sub_8095228.h" +#include "text.h" +#include "main_menu.h" +#include "rescue_password_menu.h" + +extern u8 gUnknown_202EC50[]; +extern u32 gUnknown_202EC4C; + +EWRAM_DATA u8 gUnknown_203B368; +EWRAM_DATA u32 gUnknown_203B36C; +EWRAM_DATA struct RescuePasswordMenu *gRescuePasswordMenu; + +extern struct UnkTextStruct2 gUnknown_80E71E4; +extern s32 sub_8035D74(void); +extern void sub_80151C0(u32, u8 *); +extern void sub_8031D70(u32, u32); +extern u32 ConvertMenutoRescuePasswordState(u32); +extern void sub_8039174(void); +extern void sub_80155F0(void); +extern void sub_8031E10(void); + +void CreateRescuePasswordMenu(u32 currMenu) +{ + struct unkStruct_8095228 *temp; + s32 counter; + + if(gRescuePasswordMenu == NULL) + { + gRescuePasswordMenu = MemoryAlloc(sizeof(struct RescuePasswordMenu), 8); + MemoryFill8((u8 *)gRescuePasswordMenu, 0, sizeof(struct RescuePasswordMenu)); + } + + for(counter = 0; counter < 4; counter++) + gRescuePasswordMenu->unk148[counter] = gUnknown_80E71E4; + + ResetUnusedInputStruct(); + sub_800641C(gRescuePasswordMenu->unk148, 1, 1); + + if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) { + for(counter = 0; counter < 0x36; counter++) + { + gUnknown_202EC50[counter] = 0; + } + gUnknown_203B368 = 0; + } + + gRescuePasswordMenu->currMenu = currMenu; + gUnknown_203B36C = currMenu; + + switch(currMenu) + { + case 0x1B: + case 0x1D: + case 0x1F: + sub_8031D70(sub_8035D74(), 0); + break; + case 0x1C: + case 0x1E: + case 0x20: + sub_80151C0(4, gUnknown_202EC50); + break; + case MENU_DISPLAY_RESCUE_PASSWORD: + temp = sub_8095228(0x1F); + MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_8095228)); + temp->unk0 = 2; + temp->unk20.itemIndex = ITEM_ID_NOTHING; + sub_8031D70(0x1F, 0); + break; + case MENU_RESCUE_PASSWORD_ENTRY: + sub_80151C0(4, gUnknown_202EC50); + break; + } + + gRescuePasswordMenu->state = ConvertMenutoRescuePasswordState(currMenu); + sub_8039174(); +} + +void CleanRescuePasswordMenu(void) +{ + + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + if (gRescuePasswordMenu != NULL) { + sub_80155F0(); + sub_8031E10(); + MemoryFree(gRescuePasswordMenu); + gRescuePasswordMenu = NULL; + } +} diff --git a/src/rescue_password_menu_1.c b/src/rescue_password_menu_1.c new file mode 100644 index 0000000..1058589 --- /dev/null +++ b/src/rescue_password_menu_1.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "memory.h" +#include "input.h" +#include "item.h" +#include "sub_8095228.h" +#include "text.h" +#include "rescue_password_menu.h" + +extern struct RescuePasswordMenu *gRescuePasswordMenu; +extern void AddSprite(struct unkSprite *, u32, u32, u32); +extern void xxx_draw_string_80144C4(void); + +void sub_80391F8(void) +{ + struct unkSprite *iVar2; + u32 temp; + u32 temp2; + + iVar2 = &gRescuePasswordMenu->unk208; + + temp = (iVar2->unk20A & 0xfe00); + iVar2->unk20A = temp | 0x70; + + temp2 = 0x700; + temp = (iVar2->unk20E & 0xf); + iVar2->unk20E = temp | temp2; + + if ((gRescuePasswordMenu->unk210 & 8) != 0) { + AddSprite(iVar2,0x100,0,0); + } + xxx_draw_string_80144C4(); + gRescuePasswordMenu->unk210 += 1; +} diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 44e2b77..e1c2241 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -329,7 +329,7 @@ void sub_8036788(void) case 3: // Confirm # of item gTradeItemsMenu->itemToSend.numItems = gTradeItemsMenu->numItemsToSend; - gTradeItemsMenu->sentItem.itemIndex = gTradeItemsMenu->itemToSend.itemIndex; + gTradeItemsMenu->sentItem.itemIdx.itemIndex = gTradeItemsMenu->itemToSend.itemIndex; gTradeItemsMenu->sentItem.numItems = gTradeItemsMenu->numItemsToSend; sub_801CBB8(); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_CONFIRM); @@ -392,7 +392,7 @@ void sub_80368D4(void) break; case 7: case 0: - if ((gTradeItemsMenu->sentItem.itemIndex != 0) && (gTradeItemsMenu->sentItem.numItems != 0)) + if ((gTradeItemsMenu->sentItem.itemIdx.itemIndex != 0) && (gTradeItemsMenu->sentItem.numItems != 0)) { TradeItem_AddItem(); SetTradeItemMenu(0x11); @@ -430,7 +430,7 @@ void sub_8036950(void) } } else { - if (((gTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (gTradeItemsMenu->sentItem.itemIndex != 0)) + if (((gTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (gTradeItemsMenu->sentItem.itemIdx.itemIndex != 0)) && (gTradeItemsMenu->sentItem.numItems != 0)) { // Link Failure TradeItem_AddItem(); // Add back the item @@ -449,9 +449,9 @@ void TradeItem_AddItem(void) { // Use temp var to get correct statements u16 load; - load = gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIndex]; + load = gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIdx.itemIndex]; load += gTradeItemsMenu->sentItem.numItems; - gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIndex] = load; + gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIdx.itemIndex] = load; } void sub_80369FC(void) @@ -554,9 +554,7 @@ void nullsub_52(void) void sub_8036B28(void) { int iVar3; - u32 uVar4; s32 local_10; - u32 load_1; u32 load_2; struct TradeSubStruct *temp; struct TradeSubStruct *temp2; @@ -612,13 +610,13 @@ void sub_8036B28(void) // Regs mess up here // Needs a mov r2, 0 // and mov r3, 0 + temp = &gTradeItemsMenu->unk244; - temp->itemIndex = 0; + temp->itemIdx.itemIndex_u32 = 0; temp->numItems = 0; - temp += 1; // move to unk24C - - temp->itemIndex = 0; + temp = &gTradeItemsMenu->unk24C; + temp->itemIdx.itemIndex_u32 = 0; temp->numItems = 0; // Regs are fixed back up after @@ -632,7 +630,7 @@ void sub_8036B28(void) temp = &gTradeItemsMenu->unk244; temp2 = &gTradeItemsMenu->sentItem; load_2 = temp2->numItems; - temp->itemIndex = temp2->itemIndex; + temp->itemIdx.itemIndex_u32 = temp2->itemIdx.itemIndex_u32; temp->numItems = load_2; case TRADE_ITEMS_RECEIVE_ITEM_MODE: gTradeItemsMenu->linkStatus = sub_8037D64(gTradeItemsMenu->itemMode,&gTradeItemsMenu->unk244,&gTradeItemsMenu->unk24C); @@ -650,12 +648,12 @@ void sub_8036B28(void) if (gTradeItemsMenu->unk24C.numItems == 0) { gUnknown_202DE30 = gTradeItemsMenu->unk244.numItems; // Cast is needed - sub_8090DC4(&gUnknown_202DE58,(u8)gTradeItemsMenu->unk244.itemIndex,0); + sub_8090DC4(&gUnknown_202DE58,(u8)gTradeItemsMenu->unk244.itemIdx.itemIndex,0); } else { gUnknown_202DE30 = gTradeItemsMenu->unk24C.numItems; // Cast is needed - sub_8090DC4(&gUnknown_202DE58,(u8)gTradeItemsMenu->unk24C.itemIndex,0); + sub_8090DC4(&gUnknown_202DE58,(u8)gTradeItemsMenu->unk24C.itemIdx.itemIndex,0); } sub_80141B4(&gUnknown_80E6314,0,0,0x101); break; diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 45dfb1f..04e9f73 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -3,10 +3,10 @@ #include "pokemon.h" #include "file_system.h" #include "item.h" +#include "sub_8095228.h" #include "wonder_mail.h" #include "memory.h" #include "text.h" -#include "sub_8095228.h" #include "team_inventory.h" extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; @@ -25,7 +25,7 @@ extern u32 sub_8095350(); extern u8 sub_801CF14(u32); extern u32 sub_802F298(); -extern u8 sub_80A2824(u32); +extern u8 sub_80A2824(u8); #include "data/wonder_mail_1.h" @@ -35,7 +35,7 @@ const struct ItemSlot gUnknown_80DED44 = }; -extern u32 gUnknown_80DDA48; +extern struct MenuItem gUnknown_80DDA48[]; extern const char gUnknown_80DEF04[]; extern const char gUnknown_80DEF28[]; extern const char gUnknown_80DEF80[]; @@ -45,7 +45,7 @@ extern const char gUnknown_80DF0A0[]; extern const char gUnknown_80DF0E0[]; extern const char gUnknown_80DF138[]; extern const char gUnknown_80DF194[]; -extern u32 gUnknown_80DEE44; +extern struct MenuItem gUnknown_80DEE44[]; extern const char gUnknown_80DF1C0[]; extern const char gUnknown_80DF208[]; extern const char gUnknown_80DF0A0[]; @@ -74,7 +74,7 @@ extern void sub_803092C(void); extern u32 sub_80154F0(); extern u32 sub_8039068(u32, u8 *r1, u8 *r0); -extern void sub_8014248(const char *r0, u32, u32, u32 *r4, u32, u32, u32, u32 *r5, u32); +extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); extern void sub_8095274(u32); extern void sub_80155F0(); extern void sub_80951BC(u8 *r0); @@ -868,7 +868,7 @@ void sub_80293F4(void) switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0)) { case 17: - sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC); + sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC); sub_8028B04(40); break; case 18: @@ -1533,7 +1533,7 @@ void PrintWonderMailLinkError(u32 param_1) sub_80141B4(gUnknown_80DEF04, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); break; case 15: - sub_80141B4(gUnknown_80DF138,0,(u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + sub_80141B4(gUnknown_80DF138, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); break; case 0: default: @@ -1873,17 +1873,17 @@ void sub_802A50C(void) { case 0x11: // Wrong password - sub_8014248(gUnknown_80DF1C0,0,7,&gUnknown_80DEE44,0,4,0,(u32 *)&gUnknown_203B2C4->faceFile,0xc); + sub_8014248(gUnknown_80DF1C0, 0, 7, gUnknown_80DEE44, 0, 4, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0xc); sub_802B2BC(0x28); break; case 0x14: // Incorrect password - sub_80141B4(gUnknown_80DF208,0,(u32 *)&gUnknown_203B2C4->faceFile,0x10d); + sub_80141B4(gUnknown_80DF208, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); sub_802B2BC(0x1f); break; case 0xB: // Not eligible to receive - sub_80141B4(gUnknown_80DF0A0,0,(u32 *)&gUnknown_203B2C4->faceFile,0x10d); + sub_80141B4(gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); sub_802B2BC(0x1f); break; case 0x18: diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 25e5df0..f5bcd12 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -4,9 +4,10 @@ #include "pokemon.h" #include "memory.h" #include "text.h" +#include "menu.h" #include "save.h" -#include "wonder_mail.h" #include "sub_8095228.h" +#include "wonder_mail.h" extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; @@ -42,8 +43,119 @@ struct unkStruct_203B2C8 u32 fill13C; }; +struct unkStruct_203B2CC +{ + // size: 0xD4; + u8 unk0[0x38]; + + u32 unk38; + u8 fill3C[0x50 - 0x3C]; + + s16 unk50; + s16 unk52; + s16 unk54; + s16 unk56; + + u16 unk58; + u16 unk5A; + + u8 fill5C[0x6C - 0x5C]; + + u32 unk6C; + + struct UnkTextStruct2 *unk70; + struct UnkTextStruct2 unk74[4]; +}; + +extern struct unkStruct_203B2CC *gUnknown_203B2CC; +extern u32 sub_802B9A8(void); +extern void sub_802B880(void); +extern void sub_802B8D4(void); +extern void sub_8013818(void *, u32, u32, u32); +extern void sub_8012D08(struct UnkTextStruct2 *, s32); +extern void sub_8013984(u32 *); +extern u8 sub_802B9D8(void); +extern u16 gUnknown_203B2D0; +extern u16 gUnknown_203B2D2; + +extern u8 sub_80138B8(void *, u32); +extern void PlayMenuSoundEffect(u32); +extern s32 GetKeyPress(u32 *); +extern void sub_8013660(u32 *); +extern void AddMenuCursorSprite(u32 *); + +extern struct UnkTextStruct2 gUnknown_80DFBEC; + +extern struct UnkTextStruct2 gUnknown_80DFBD0; + extern struct unkStruct_203B2C8 *gUnknown_203B2C8; +extern struct MenuItem gUnknown_80DED78[]; +extern struct MenuItem gUnknown_80DEDB8[]; +extern u8 gUnknown_80DF6F0[]; +extern u8 gUnknown_80DF44C[]; +extern u8 gUnknown_80DF380[]; +extern u8 gUnknown_80DF544[]; +extern u8 gUnknown_80DF96C[]; +extern u8 gUnknown_80DF9A4[]; +extern u8 gUnknown_80DF4F4[]; +extern u8 gUnknown_80DF46C[]; +extern u8 gUnknown_80DF94C[]; +extern u8 gUnknown_80DF928[]; +extern u8 gUnknown_80DF8EC[]; +extern u8 gUnknown_80DF7D4[]; +extern u8 gUnknown_80DF8B4[]; +extern u8 gUnknown_80DF3B4[]; +extern u8 gUnknown_80DF63C[]; +extern u8 gUnknown_80DF250[]; +extern u8 gUnknown_80DF594[]; +extern u8 gUnknown_80DF870[]; +extern u8 gUnknown_80DF77C[]; +extern u8 gUnknown_80DF5E4[]; +extern u8 gUnknown_80DF710[]; +extern u8 gUnknown_80DF694[]; +extern u8 gUnknown_80DF73C[]; +extern u8 gUnknown_80DF330[]; +extern u8 gUnknown_80DF418[]; +extern u8 gUnknown_80DF304[]; +extern struct UnkTextStruct2 gUnknown_80DED60; +extern struct UnkTextStruct2 gUnknown_80DED48; +extern struct MenuItem gUnknown_80DEE44[]; +extern struct MenuItem gUnknown_80DEE08[]; +extern struct MenuItem gUnknown_80DEE7C[]; +extern struct MenuItem gUnknown_80DEEBC[]; +extern struct MenuItem gUnknown_80DEEE4[]; +extern struct MenuItem gUnknown_80DEE60[]; + +extern void sub_8031D70(u8, u32); +extern u8 sub_809539C(u32, u32); +extern u8 sub_800D588(void); +extern u32 sub_803C200(u8 *, u32); + +extern struct PokemonStruct *sub_808D33C(void); + +extern void sub_802F204(u8 *, u32); +extern void sub_80151C0(u32, u8 *); +extern void xxx_call_start_bg_music(void); +extern void sub_803092C(void); +extern void sub_801CCD8(void); +extern void sub_8011830(void); +extern void nullsub_23(u32); +extern void sub_80922B4(u8 *, u8 *, u32); +extern s32 sub_8037B28(u32); +extern u32 sub_8030894(void); +extern u32 sub_801D008(void); +extern void sub_80306A8(u32, u32, u32, u32); +extern void sub_8035CF4(u32 *, u32, u32); +extern s32 sub_8037D64(u32, void *, void *); +extern s32 sub_80381F4(u32, void *, void *); +extern void sub_801C8C4(u32, u32, s32 * , u32); + + +void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...); +extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); +extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32); + extern void sub_80920D8(u8 *buffer); extern void sub_8097790(); extern char gUnknown_202E5D8[0x50]; @@ -64,7 +176,7 @@ void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...); extern void sub_802F204(u8 *, u32); extern void sub_803C37C(u8 *, u32, u8 *); extern u32 sub_803C200(u8 *, u32); -extern void sub_80141B4(const char *r0, u32, u32 *r1, u32); +extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern const char gUnknown_80DFAA8[]; extern const char gUnknown_80DFB14[]; extern const char gUnknown_80DF9F0[]; @@ -74,6 +186,223 @@ extern u8 sub_80023E4(u32); extern void nullsub_131(void); extern void sub_802ABF8(void); +void sub_802ABF8(void) +{ + char cVar1; + char *monName; + u8 auStack180 [80]; + u8 auStack100 [80]; + u8 uVar2; + struct PokemonStruct *pokeStruct; + struct PokemonStruct *pokeStruct2; + s32 iVar6; + struct unkStruct_8095228 *puVar4; + + + + switch(gUnknown_203B2C4->state) { + case 5: + pokeStruct = sub_808D33C(); + sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH); + ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180); + sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0xe: + sub_8014248(gUnknown_80DF304,0,7,gUnknown_80DEE60,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 0xf: + sub_80141B4(gUnknown_80DF330,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x10: + if (sub_8030894() != 0) + break; + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_80306A8(5,0,0,6); + break; + case 0x11: + sub_8006518(gUnknown_203B2C4->unk35C); + SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0); + sub_803092C(); + sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + break; + case 0x13: + if (sub_801D008() != 0) + break; + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + // TODO: Probably a macro - Pika + { + struct {u16 a; u16 b;} local_x = {3, 2}; + sub_801C8C4(0, 1, (s32 *)&local_x, 9); + } + break; + case 0x14: + sub_8006518(gUnknown_203B2C4->unk35C); + SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0); + sub_801CCD8(); + sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + break; + case 0x1e: + gUnknown_203B2C4->linkError = 0; + sub_8011830(); + iVar6 = sub_8037B28(gUnknown_203B2C4->unk40); + gUnknown_203B2C4->linkError = iVar6; + if (iVar6 != 0) goto _0802AEE6; + switch(gUnknown_203B2C4->unk40) + { + case 6: + MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228)); + gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->unk218); + gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8); + break; + case 7: + MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228)); + MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_8095228)); + gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8); + break; + } + if (gUnknown_203B2C4->linkError == 0){ + switch(gUnknown_203B2C4->unk40){ + case 6: + case 7: + gUnknown_203B2C4->linkError = sub_80381F4(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8); + if ( sub_800D588() != '\0') { + gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1E8.unk10; + } + else { + gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1B8.unk10; + } + break; + } + } + _0802AEE6: + xxx_call_start_bg_music(); + break; + case 0x26: + sub_80141B4(gUnknown_80DF380,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x27: + sub_8006518(gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_80151C0(4,gUnknown_203B2C4->passwordBuffer); + break; + case 0x1a: + sub_8006518(gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_8031D70(gUnknown_203B2C4->unk218,0); + break; + case 0x1b: + sub_80141B4(gUnknown_80DF3B4,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x19: + sub_80141B4(gUnknown_80DF418,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x24: + sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x20: + sub_80141B4(gUnknown_80DF46C,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x21: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 5: + case 6: + sub_80141B4(gUnknown_80DF4F4,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 4: + break; + } + break; + case 0x22: + monName = GetMonSpecies(SPECIES_PELIPPER); + strcpy(gUnknown_203B2C4->unk53C,monName); + gUnknown_203B2C4->unk550 = 0x130; + gUnknown_203B2C4->unk552 = 2; + gUnknown_203B2C4->unk554 = 0; + uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430); + puVar4 = sub_8095228(uVar2); + cVar1 = puVar4->unk20.itemIndex; + if (cVar1 != '\0') + gUnknown_203B2C4->unk558 = cVar1; + else + gUnknown_203B2C4->unk558 = 0; + gUnknown_203B2C4->unk55B = 1; + gUnknown_203B2C4->unk560 = sub_803C200(&puVar4->unk4, 0); + gUnknown_203B2C4->unk559 = 0; + gUnknown_203B2C4->unk55A = 0; + gUnknown_203B2C4->unk55C = 0; + sub_802F204(gUnknown_203B2C4->unk53C,0); + break; + case 0x16: + nullsub_23(0); + sub_80141B4(gUnknown_80DF544,0,0,0); + break; + case 0x17: + sub_80141B4(gUnknown_80DF594,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x1d: + sub_8014248(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 0xd: + pokeStruct2 = sub_808D33C(); + sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH); + ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100); + sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0xc: + sub_8014248(gUnknown_80DF694,0,7,gUnknown_80DEEE4,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 0x29: + sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0x2a: + sub_80141B4(gUnknown_80DF6F0,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0xb: + sub_80141B4(gUnknown_80DF710,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 10: + sub_8014248(gUnknown_80DF73C,0,0,gUnknown_80DEEBC,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 9: + sub_8014248(gUnknown_80DF77C,0,0,gUnknown_80DEE7C,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 7: + sub_80141B4(gUnknown_80DF7D4,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 8: + sub_8014248(gUnknown_80DF870,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 4: + sub_80141B4(gUnknown_80DF8B4,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 0: + sub_8014248(gUnknown_80DF8EC,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 1: + sub_8014248(gUnknown_80DF928,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 2: + sub_80141B4(gUnknown_80DF94C,0,&gUnknown_203B2C4->faceFile,0x10d); + break; + case 6: + switch(gUnknown_203B2C4->unk538){ + case 1: + sub_8014248(gUnknown_80DF96C,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + case 2: + sub_8014248(gUnknown_80DF9A4,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc); + break; + } + break; + } +} + void sub_802B2BC(u32 newState) { gUnknown_203B2C4->state = newState; @@ -166,7 +495,7 @@ void sub_802B3E0(void) // Print and expand placeholders? ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer); // Display to screen with Pelliper face - sub_80141B4(gUnknown_203B2C8->teamName, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d); + sub_80141B4(gUnknown_203B2C8->teamName, 0, &gUnknown_203B2C8->faceFile, 0x10d); break; case 1: monName = GetMonSpecies(SPECIES_PELIPPER); @@ -187,12 +516,12 @@ void sub_802B3E0(void) case 2: // I hope you will keep on rescuing your friends // I must save your adventure - sub_80141B4(gUnknown_80DFAA8, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d); + sub_80141B4(gUnknown_80DFAA8, 0, &gUnknown_203B2C8->faceFile, 0x10d); break; case 4: // Oh yes, that's right. Please don't forget to send an A-OK Mail // to the friend you just rescued - sub_80141B4(gUnknown_80DFB14, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d); + sub_80141B4(gUnknown_80DFB14, 0, &gUnknown_203B2C8->faceFile, 0x10d); case 3: case 5: break; @@ -266,3 +595,120 @@ void sub_802B624(void) sub_802B548(5); } } + +u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2) +{ + + if(sub_802B9D8()) + { + return 0; + } + else + { + if(gUnknown_203B2CC == NULL) + { + gUnknown_203B2CC = MemoryAlloc(0xD4, 8); + } + gUnknown_203B2CC->unk6C = r0; + gUnknown_203B2CC->unk70 = &gUnknown_203B2CC->unk74[r0]; + + sub_8006518(gUnknown_203B2CC->unk74); + + gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBEC; + + if(r1 != NULL) + { + gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C].unk08 = *r1; + } + + sub_8012D08(gUnknown_203B2CC->unk70, r2); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2CC->unk74, 1, 1); + + sub_8013818(&gUnknown_203B2CC->unk38, sub_802B9A8(), r2, r0); + + gUnknown_203B2CC->unk50 = gUnknown_203B2D0; + gUnknown_203B2CC->unk56 = gUnknown_203B2D2; + + sub_8013984(&gUnknown_203B2CC->unk38); + sub_802B880(); + sub_802B8D4(); + + return 1; + } +} + +u32 sub_802B720(u8 r0) +{ + if(r0 == 0) + { + sub_8013660(&gUnknown_203B2CC->unk38); + return 0; + } + else + { + switch(GetKeyPress(&gUnknown_203B2CC->unk38)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + case 4: + PlayMenuSoundEffect(4); + return 4; + } + if(sub_80138B8(&gUnknown_203B2CC->unk38, 1) != 0) + { + sub_802B880(); + sub_802B8D4(); + return 1; + } + else + return 0; + } +} + +u8 sub_802B7A8(void) +{ + return gUnknown_203B2CC->unk0[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50]; +} + +void sub_802B7D0(u32 r0) +{ + u8 temp; + + temp = r0; + + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2CC->unk74, 0, 0); + + gUnknown_203B2CC->unk5A = sub_802B9A8(); + sub_8013984(&gUnknown_203B2CC->unk38); + sub_802B880(); + sub_802B8D4(); + + if(temp != 0) + { + AddMenuCursorSprite(&gUnknown_203B2CC->unk38); + } +} + +void sub_802B81C(void) +{ + if(gUnknown_203B2CC != NULL) + { + gUnknown_203B2D0 = gUnknown_203B2CC->unk50; + + gUnknown_203B2D2 = gUnknown_203B2CC->unk56; + + gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBD0; + + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2CC->unk74, 1, 1); + + MemoryFree(gUnknown_203B2CC); + gUnknown_203B2CC = NULL; + } +} diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 88fa520..e318d26 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -2,6 +2,7 @@ #include "memory.h" #include "text.h" #include "input.h" +#include "menu.h" struct unkStruct_203B2F8 { @@ -18,10 +19,8 @@ struct unkStruct_203B2F8 u32 unk70; u32 unk74; u8 fill78[0x118 - 0x78]; - u32 unk118; - u8 fill11C[0x158 - 0x11C]; - u32 unk158; - u8 fill15C[0x198 - 0x15C]; + struct MenuItem unk118[8]; + struct MenuItem unk158[8]; u16 unk198[8]; struct UnkTextStruct2 unk1A8[4]; u32 unk1E4; @@ -30,7 +29,7 @@ extern struct unkStruct_203B2F8 *gUnknown_203B2F8; extern struct UnkTextStruct2 gUnknown_80DFE04; extern struct UnkTextStruct2 gUnknown_80DFE1C; extern struct UnkTextStruct2 gUnknown_80DFDD4; -extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *); +extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); extern void sub_802D63C(void); extern void sub_802D5A4(void); @@ -129,13 +128,13 @@ void sub_802D1B8(void) case 0xD: sub_802D5A4(); gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04; - sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], &gUnknown_203B2F8->unk118); + sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], gUnknown_203B2F8->unk118); gUnknown_203B2F8->unk1A8[2].unk0c = 6; break; case 0xE: sub_802D63C(); gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C; - sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], &gUnknown_203B2F8->unk158); + sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], gUnknown_203B2F8->unk158); gUnknown_203B2F8->unk1A8[3].unk0c = 6; break; default: diff --git a/src/wonder_mail_3_1.c b/src/wonder_mail_3_1.c new file mode 100644 index 0000000..c11df89 --- /dev/null +++ b/src/wonder_mail_3_1.c @@ -0,0 +1,15 @@ +#include "global.h" + +u8 sub_80A27CC(s16); + +u8 sub_802FCF0(void) +{ + s32 iVar3; + + for(iVar3 = 0; iVar3 < 0x2E; iVar3++){ + if (sub_80A27CC(iVar3) != '\0') { + return 0; + } + } + return 1; +} diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index d2e1fca..2c8e6bb 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -3,6 +3,7 @@ #include "memory.h" #include "text.h" #include "input.h" +#include "sub_8095228.h" #include "wonder_mail.h" #define WONDER_MAIL_MAIN_SCREEN 4 diff --git a/src/wonder_mail_pre.c b/src/wonder_mail_pre.c index 9e2e5cc..34cbaea 100644 --- a/src/wonder_mail_pre.c +++ b/src/wonder_mail_pre.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "input.h" #include "pokemon.h" +#include "sub_8095228.h" #include "wonder_mail.h" #include "memory.h" @@ -10,57 +11,64 @@ extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; extern char gUnknown_202E5D8[0x50]; extern char gAvailablePokemonNames[0x50]; -extern void sub_8029B34(); -extern void sub_8029AD8(); -extern void sub_8029AF4(); -extern void sub_8029A88(); -extern void sub_8029AB0(); -extern void sub_80297B8(); -extern void sub_80297D4(); -extern void sub_8029884(); -extern void sub_8029944(); -extern void sub_80299AC(); -extern void sub_80299D8(); -extern void sub_8029A6C(); -extern void sub_8028CE0(); -extern void sub_8028BF0(); -extern void sub_8029A18(); -extern void sub_80295A8(); -extern void sub_8029668(); -extern void sub_8029684(); -extern void sub_8029740(); -extern void sub_80295D8(); -extern void sub_802979C(); -extern void sub_8029358(); -extern void sub_8029374(); -extern void sub_802939C(); -extern void sub_8028F58(); -extern void sub_8028F30(); -extern void sub_8028F04(); -extern void sub_8028ED4(); -extern void sub_80293D8(); -extern void sub_80293F4(); +extern void sub_8029B34(void); +extern void sub_8029AD8(void); +extern void sub_8029AF4(void); +extern void sub_8029A88(void); +extern void sub_8029AB0(void); +extern void sub_80297B8(void); +extern void sub_80297D4(void); +extern void sub_8029884(void); +extern void sub_8029944(void); +extern void sub_80299AC(void); +extern void sub_80299D8(void); +extern void sub_8029A6C(void); +extern void sub_8028CE0(void); +extern void sub_8028BF0(void); +extern void sub_8029A18(void); +extern void sub_80295A8(void); +extern void sub_8029668(void); +extern void sub_8029684(void); +extern void sub_8029740(void); +extern void sub_80295D8(void); +extern void sub_802979C(void); +extern void sub_8029358(void); +extern void sub_8029374(void); +extern void sub_802939C(void); +extern void sub_8028F58(void); +extern void sub_8028F30(void); +extern void sub_8028F04(void); +extern void sub_8028ED4(void); +extern void sub_80293D8(void); +extern void sub_80293F4(void); extern void sub_8028DE8(u32); -extern void sub_8028EAC(); -extern void sub_802955C(); -extern void sub_80292A4(); -extern void sub_80292EC(); -extern void sub_802933C(); -extern void sub_802958C(); -extern void sub_8029208(); -extern void sub_8028E84(); -extern void sub_8028F80(); -extern void sub_8028FC0(); -extern void sub_8028FDC(); -extern void sub_8028E54(); -extern void sub_8028E24(); -extern void sub_8028E08(); -extern void sub_80290D4(); -extern void sub_80290F0(); -extern void sub_80291AC(); -extern void sub_8029044(); -extern void sub_8028CFC(); -extern void sub_8028D4C(); +extern void sub_8028EAC(void); +extern void sub_802955C(void); +extern void sub_80292A4(void); +extern void sub_80292EC(void); +extern void sub_802933C(void); +extern void sub_802958C(void); +extern void sub_8029208(void); +extern void sub_8028E84(void); +extern void sub_8028F80(void); +extern void sub_8028FC0(void); +extern void sub_8028FDC(void); +extern void sub_8028E54(void); +extern void sub_8028E24(void); +extern void sub_8028E08(void); +extern void sub_80290D4(void); +extern void sub_80290F0(void); +extern void sub_80291AC(void); +extern void sub_8029044(void); +extern void sub_8028CFC(void); +extern void sub_8028D4C(void); +extern void sub_8031E10(void); +extern void sub_8023C60(void); +extern void sub_803084C(void); +extern void sub_80155F0(void); +extern void sub_80310B4(void); +extern void sub_8030DE4(void); +extern void sub_802453C(void); u32 sub_8027F88(void) { @@ -93,3 +101,205 @@ u32 sub_8027F88(void) sub_8028B04(0); // Set initial state to 0? return 1; } + +u32 sub_8028078(void) +{ + + switch(gUnknown_203B2C0->state) { + case 0x3c: + sub_8029B34(); + break; + case 0x3a: + sub_8029AD8(); + break; + case 0x3b: + sub_8029AF4(); + break; + case 0x38: + sub_8029A88(); + break; + case 0x37: + sub_8029AB0(); + break; + case 0x32: + sub_80297B8(); + break; + case 0x33: + sub_80297D4(); + break; + case 0x34: + sub_8029884(); + break; + case 0x35: + sub_8029944(); + break; + case 0x31: + sub_80299AC(); + break; + case 0x36: + sub_80299D8(); + break; + case 0x30: + sub_8029A6C(); + break; + case 0x2e: + sub_8029A18(); + break; + case 0x2d: + sub_80295A8(); + break; + case 0x29: + sub_8029668(); + break; + case 0x2b: + sub_8029684(); + break; + case 0x2c: + sub_8029740(); + break; + case 0x2a: + sub_80295D8(); + break; + case 0x2f: + sub_802979C(); + break; + case 9: + sub_8029358(); + break; + case 0x23: + sub_8029374(); + break; + case 0x24: + sub_802939C(); + break; + case 0x26: + sub_80293D8(); + break; + case 0x27: + sub_80293F4(); + break; + case 0x28: + sub_802955C(); + break; + case 4: + sub_80292A4(); + break; + case 6: + sub_80292EC(); + break; + case 7: + sub_802933C(); + break; + case 5: + sub_802958C(); + break; + case 8: + sub_8029208(); + break; + case 0x1a: + sub_8028DE8(1); + break; + case 0x1b: + sub_8028F80(); + break; + case 0x1c: + case 0x1d: + sub_8028FC0(); + break; + case 0x22: + sub_8028FDC(); + break; + case 0x1e: + sub_80290D4(); + break; + case 0x20: + sub_80290F0(); + break; + case 0x21: + sub_80291AC(); + break; + case 0x1f: + sub_8029044(); + break; + case 10: + sub_8028CFC(); + break; + case 0xb: + sub_8028D4C(); + break; + case 0xd: + case 0xf: + sub_8028DE8(10); + break; + case 0x11: + sub_8028E08(); + break; + case 0xc: + case 0xe: + case 0x10: + sub_8028DE8(0x19); + break; + case 0x12: + sub_8028E24(); + break; + case 0x13: + sub_8028E54(); + break; + case 0x17: + sub_8028E84(); + break; + case 0x18: + sub_8028EAC(); + break; + case 0x19: + sub_8028ED4(); + break; + case 0x14: + sub_8028F04(); + break; + case 0x15: + sub_8028F30(); + break; + case 0x16: + sub_8028F58(); + break; + case 0: + case 1: + sub_8028BF0(); + break; + case 2: + case 0x25: + case 0x39: + sub_8028CE0(); + break; + case 3: + return 3; + } + return 0; +} + +s32 sub_80282DC(u8 *r0) +{ + *r0 = gUnknown_203B2C0->unk218; + return gUnknown_203B2C0->unk53C; +} + +void sub_80282FC(void) +{ + if (gUnknown_203B2C0 != NULL) { + CloseFile(gUnknown_203B2C0->faceFile); + MemoryFree(gUnknown_203B2C0); + gUnknown_203B2C0 = NULL; + sub_8031E10(); + sub_8023C60(); + sub_803084C(); + sub_80155F0(); + sub_80310B4(); + sub_8030DE4(); + sub_802453C(); + } +} + +void nullsub_130(void) +{ +} |