diff --git a/asm/code_80130A8.s b/asm/code_80130A8.s index 93f2eaa6a..da6218bc2 100644 --- a/asm/code_80130A8.s +++ b/asm/code_80130A8.s @@ -5,79 +5,6 @@ .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} diff --git a/include/input.h b/include/input.h index 083c4ccc5..a1cdb3b34 100644 --- a/include/input.h +++ b/include/input.h @@ -48,26 +48,39 @@ struct UnusedInputStruct /* 0x2A..0x2B - padding */ }; +struct UnkInputStructSub +{ + u8 unk0; + /* 0x1 */ u8 a_button; + /* 0x2 */ u8 b_button; + /* 0x3 */ u8 dpad_right; + /* 0x4 */ u8 dpad_left; + u8 fill5[3]; + u16 unk8; + s16 unkA; +}; + struct UnkInputStruct { - /* 0x0 */ u8 unk0; - /* 0x1 */ u8 unk1; - /* 0x2 */ u8 unk2; - /* 0x3 */ u8 unk3; - /* 0x4 */ u8 unk4; - /* 0x8 */ u32 unk8; - /* 0xC */ u32 unkC; + s32 unk0; + /* 0x4 */ u16 unk4; + /* 0x6 */ u16 unk6; + /* 0x8 */ u16 unk8; + /* 0x8 */ u16 unkA; + /* 0xC */ u16 unkC; + /* 0xE */ u16 unkE; /* 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; - /* 0x2B */ u8 dpad_right; - /* 0x2C */ u8 dpad_left; + /* 0x14 */ u16 unk14; + /* 0x16 */ u16 unk16; + /* 0x18 */ s16 menuIndex; + /* 0x1A */ s16 unk1A; + /* 0x1C */ s16 unk1C; + /* 0x1E */ s16 unk1E; + /* 0x20 */ u16 unk20; + /* 0x20 */ u16 unk22; + /* 0x24 */ u16 unk24; + u16 unk26; + /* 0x28 */ struct UnkInputStructSub unk28; }; diff --git a/include/kecleon_items.h b/include/kecleon_items.h index c489b983c..fd530609a 100644 --- a/include/kecleon_items.h +++ b/include/kecleon_items.h @@ -41,17 +41,8 @@ struct unkStruct_203B224 { // size: 0xF4 u32 unk0; - u32 unk4[INVENTORY_SIZE]; - u32 unk54; - u8 fill58[0x6C - 0x58]; - s16 unk6C; - s16 unk6E; - s16 unk70; - s16 unk72; - u16 unk74; - u16 unk76; - u8 fill78[0x88 - 0x78]; + /* 0x54 */ struct UnkInputStruct input; u32 unk88; struct UnkTextStruct2 *unk8C; struct UnkTextStruct2 unk90[4]; diff --git a/include/menu.h b/include/menu.h index 4c8a93ba7..0cd6a4cab 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,6 +1,8 @@ #ifndef GUARD_MENU_H #define GUARD_MENU_H +#include "input.h" + struct MenuItem { const u8 *text; @@ -15,13 +17,7 @@ struct MenuStruct const u32 *menuTextColorArray; u16 *unkC; /* 0x10 */ s32 index; - /* 0x14 */ u32 unk14; - u8 fill18[0x2C - 0x18]; - /* 0x2C */ s16 menuIndex; - s16 unk2E; - u8 fill30[0x38 - 0x30]; - u16 unk38; - u8 fill3A[0x48 - 0x3A]; + /* 0x14 */ struct UnkInputStruct input; /* 0x48 */ s32 menuAction; bool8 unk4C; bool8 unk4D; diff --git a/src/adventure_log.c b/src/adventure_log.c index 4aad16264..2f97c0037 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -8,12 +8,7 @@ struct AdventureLog { // size: 0xA0 - u8 fill0[0x1A]; - /* 0x1A */ s16 unk1A; - /* 0x1C */ s16 unk1C; - /* 0x1E */ s16 currPage; - s16 unk20; - u8 fill22[0x34 - 0x22]; + struct UnkInputStruct input; u32 unk34; struct UnkTextStruct2 *unk38; struct UnkTextStruct2 unk3C[4]; @@ -47,10 +42,10 @@ const u8 fill_adven[] = "pksdir0"; void sub_8032084(); void DisplayAdventureLog(); extern void sub_8013818(void *, u32, u32, u32); -extern bool8 sub_8013938(void *); -extern void sub_8013660(void *); +extern bool8 sub_8013938(struct UnkInputStruct *); +extern void sub_8013660(struct UnkInputStruct *); extern void PlayMenuSoundEffect(u32); -extern u32 GetKeyPress(void *); +extern u32 GetKeyPress(struct UnkInputStruct *); extern bool8 sub_8097710(u8); extern s16 sub_80978B8(); @@ -88,11 +83,11 @@ u32 CreateAdventureLogScreen(u32 param_1) u32 HandleAdventureLogInput(u8 param_1) { if (param_1 == 0) { - sub_8013660(gAdventureLog); + sub_8013660(&gAdventureLog->input); return 0; } else { - switch(GetKeyPress(gAdventureLog)) + switch(GetKeyPress(&gAdventureLog->input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); @@ -101,7 +96,7 @@ u32 HandleAdventureLogInput(u8 param_1) PlayMenuSoundEffect(0); return 3; default: - if (sub_8013938(gAdventureLog)) { + if (sub_8013938(&gAdventureLog->input)) { sub_8032084(); DisplayAdventureLog(); return 1; @@ -131,11 +126,11 @@ void sub_8032084(void) u32 sVar2; gAdventureLog->unk9C[0] = gAdventureLog->unk20; - gAdventureLog->unk9C[1]= gAdventureLog->currPage; + gAdventureLog->unk9C[1]= gAdventureLog->unk0.unk1E; gAdventureLog->unk9C[2]= 0xb; gAdventureLog->unk9C[3]= 0; // So a sign extend.. - sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10; + sVar2 = sub_80095E4(gAdventureLog->unk0.unk1A,0xc) + 2 << 0x10; // TODO needs asr r3, r0, r16 // and lsr r0, r0, r16 gAdventureLog->unk3C[gAdventureLog->unk34].unkE = sVar2; @@ -215,7 +210,7 @@ void DisplayAdventureLog(void) sub_8008C54(gAdventureLog->unk34); sub_80073B8(gAdventureLog->unk34); - r4 = gAdventureLog->currPage * 8; + r4 = gAdventureLog->input.unk1E * 8; r6 = r4; r6 += 10; // Draw Header @@ -223,11 +218,11 @@ void DisplayAdventureLog(void) r4 += 4; r6 = r4 + gAdventureLog->unk9C[2] * 8; // Draw Page # - sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34); + sub_8012BC4(r6, 0, gAdventureLog->input.unk1E + 1, 1, 7, gAdventureLog->unk34); - for(counter = 0; counter < gAdventureLog->unk1A; counter++) + for(counter = 0; counter < gAdventureLog->input.unk1A; counter++) { - temp = gAdventureLog->currPage * gAdventureLog->unk1C + counter; + temp = gAdventureLog->input.unk1E * gAdventureLog->input.unk1C + counter; if(sub_8097710(temp)){ switch(temp) { case 0xc: diff --git a/src/hints_menu.c b/src/hints_menu.c index 789e58489..58aae01cb 100644 --- a/src/hints_menu.c +++ b/src/hints_menu.c @@ -14,11 +14,7 @@ struct Hints struct unkStruct_203B268 { // size: 0xA0 - u32 unk0; - u8 fill4[0x1E - 0x4]; - s16 helpPageIndex; - u16 unk20; - u8 fill22[0x34 - 0x22]; + struct UnkInputStruct input; u32 unk34; struct UnkTextStruct2 *unk38; struct UnkTextStruct2 unk3C[4]; @@ -28,14 +24,7 @@ struct unkStruct_203B268 struct unkStruct_203B264 { // size: 0x9C - u32 unk0; - u8 fill4[0x18 - 0x4]; - s16 unk18; - s16 unk1A; - s16 unk1C; - s16 unk1E; - u16 unk20; - u8 fill22[0x34 - 0x22]; + struct UnkInputStruct input; u32 unk34; struct UnkTextStruct2 *unk38; struct UnkTextStruct2 unk3C[4]; @@ -68,9 +57,9 @@ extern void sub_8008C54(u32); void DrawHintSelectionMenu(void); void sub_801E594(void); void sub_8013984(void *); -void AddMenuCursorSprite(void *); -extern u8 sub_80138B8(void *, u32); -extern void sub_8013660(void *); +void AddMenuCursorSprite(struct UnkInputStruct *); +extern u8 sub_80138B8(struct UnkInputStruct *, u32); +extern void sub_8013660(struct UnkInputStruct *); extern void sub_8012D08(struct UnkTextStruct2 *, u32); u32 sub_801E3F0(u32 r0) @@ -94,10 +83,10 @@ u32 sub_801E474(u8 r0) { if(r0 == 0) { - sub_8013660(gUnknown_203B264); + sub_8013660(&gUnknown_203B264->input); return 0; } - switch(GetKeyPress(gUnknown_203B264)) + switch(GetKeyPress(&gUnknown_203B264->input)) { case 2: PlayMenuSoundEffect(1); @@ -109,7 +98,7 @@ u32 sub_801E474(u8 r0) PlayMenuSoundEffect(4); return 4; default: - if(sub_80138B8(gUnknown_203B264, 1)) + if(sub_80138B8(&gUnknown_203B264->input, 1)) { sub_801E594(); DrawHintSelectionMenu(); @@ -122,7 +111,7 @@ u32 sub_801E474(u8 r0) s32 GetChosenHintIndex(void) { - return (gUnknown_203B264->unk1E * gUnknown_203B264->unk1C) + gUnknown_203B264->unk18; + return (gUnknown_203B264->input.unk1E * gUnknown_203B264->input.unk1C) + gUnknown_203B264->input.menuIndex; } void CreateHintSelectionScreen(u8 r0) @@ -133,7 +122,7 @@ void CreateHintSelectionScreen(u8 r0) sub_801E594(); DrawHintSelectionMenu(); if(r0) - AddMenuCursorSprite(gUnknown_203B264); + AddMenuCursorSprite(&gUnknown_203B264->input); } void sub_801E54C(void) @@ -219,7 +208,7 @@ u32 CreateHintDisplayScreen(u32 index) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B268->unk3C, 1, 1); sub_8013818(gUnknown_203B268, 5, 1, gUnknown_203B268->unk34); - gUnknown_203B268->helpPageIndex = index; + gUnknown_203B268->input.unk1E = index; sub_801E714(); return 1; @@ -265,8 +254,8 @@ void DestroyHintDisplayScreen(void) void sub_801E76C(void) { - gUnknown_203B268->unk9C[0] = gUnknown_203B268->unk20; - gUnknown_203B268->unk9C[1] = gUnknown_203B268->helpPageIndex; + gUnknown_203B268->unk9C[0] = gUnknown_203B268->input.unk20; + gUnknown_203B268->unk9C[1] = gUnknown_203B268->input.unk1E; gUnknown_203B268->unk9C[2] = 0xF; gUnknown_203B268->unk9C[3] = 0; ResetUnusedInputStruct(); @@ -276,7 +265,7 @@ void sub_801E76C(void) void DisplayChosenHint(void) { sub_80073B8(gUnknown_203B268->unk34); - xxx_call_draw_string((gUnknown_203B268->helpPageIndex << 3) + 0x10, 0, gGameHints[gUnknown_203B268->helpPageIndex].heading, gUnknown_203B268->unk34, 0); - xxx_call_draw_string(0xA, 0x14, gGameHints[gUnknown_203B268->helpPageIndex].body, gUnknown_203B268->unk34, 0); + xxx_call_draw_string((gUnknown_203B268->input.unk1E << 3) + 0x10, 0, gGameHints[gUnknown_203B268->input.unk1E].heading, gUnknown_203B268->unk34, 0); + xxx_call_draw_string(0xA, 0x14, gGameHints[gUnknown_203B268->input.unk1E].body, gUnknown_203B268->unk34, 0); sub_80073E0(gUnknown_203B268->unk34); } diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index 54de26d19..50896b998 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -1049,10 +1049,10 @@ u32 sub_801A5D8(u32 param_1,int param_2,struct UnkTextStruct2_sub *param_3,u32 p sub_8099690(1); ResetUnusedInputStruct(); sub_800641C(gUnknown_203B224->unk90,1,1); - sub_8013818(&gUnknown_203B224->unk54,GetNumberOfFilledInventorySlots(),param_4,param_2); - gUnknown_203B224->unk6C = gUnknown_203B228; - gUnknown_203B224->unk72 = gUnknown_203B22A; - sub_8013984((u8 *)&gUnknown_203B224->unk54); + sub_8013818(&gUnknown_203B224->input,GetNumberOfFilledInventorySlots(),param_4,param_2); + gUnknown_203B224->input.menuIndex = gUnknown_203B228; + gUnknown_203B224->input.unk1E = gUnknown_203B22A; + sub_8013984((u8 *)&gUnknown_203B224->input); sub_801A998(); sub_801A9E0(); return 1; @@ -1065,10 +1065,10 @@ u32 sub_801A6E8(u8 param_1) struct Item item; if (param_1 == 0) { - sub_8013660(&gUnknown_203B224->unk54); + sub_8013660(&gUnknown_203B224->input); return 0; } - switch(GetKeyPress(&gUnknown_203B224->unk54)) { + switch(GetKeyPress(&gUnknown_203B224->input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -1110,7 +1110,7 @@ u32 sub_801A6E8(u8 param_1) if ((gUnknown_203B224->unk4[index] != 0) || (sub_801ADA0(index) != 0)) { PlayMenuSoundEffect(6); gUnknown_203B224->unk4[index] ^= 1; - sub_80138B8(&gUnknown_203B224->unk54,0); + sub_80138B8(&gUnknown_203B224->input,0); sub_801A9E0(); return 1; } @@ -1128,7 +1128,7 @@ u32 sub_801A6E8(u8 param_1) // NOTE: fallthrough needed here default: _0801A87C: - if (sub_80138B8(&gUnknown_203B224->unk54,1) != '\0') { + if (sub_80138B8(&gUnknown_203B224->input,1) != '\0') { sub_801A998(); sub_801A9E0(); return 1; @@ -1142,7 +1142,7 @@ _0801A87C: s32 sub_801A8AC(void) { - return (gUnknown_203B224->unk72 * gUnknown_203B224->unk70) + gUnknown_203B224->unk6C; + return (gUnknown_203B224->input.unk1E * gUnknown_203B224->input.unk1C) + gUnknown_203B224->input.menuIndex; } void sub_801A8D0(u8 r0) @@ -1151,20 +1151,20 @@ void sub_801A8D0(u8 r0) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B224->unk90, 0, 0); FillInventoryGaps(); - gUnknown_203B224->unk76 = GetNumberOfFilledInventorySlots(); - sub_8013984((u8 *)&gUnknown_203B224->unk54); + gUnknown_203B224->input.unk22 = GetNumberOfFilledInventorySlots(); + sub_8013984((u8 *)&gUnknown_203B224->input); sub_801A998(); sub_801A9E0(); if(r0) - AddMenuCursorSprite((u8 *)&gUnknown_203B224->unk54); + AddMenuCursorSprite((u8 *)&gUnknown_203B224->input); } void sub_801A928(void) { if(gUnknown_203B224 != NULL) { - gUnknown_203B228 = gUnknown_203B224->unk6C; - gUnknown_203B22A = gUnknown_203B224->unk72; + gUnknown_203B228 = gUnknown_203B224->input.menuIndex; + gUnknown_203B22A = gUnknown_203B224->input.unk1E; gUnknown_203B224->unk90[gUnknown_203B224->unk88] = gUnknown_80DB944; sub_8099690(0); ResetUnusedInputStruct(); @@ -1176,8 +1176,8 @@ void sub_801A928(void) void sub_801A998(void) { - gUnknown_203B224->unkF0[0] = gUnknown_203B224->unk74; - gUnknown_203B224->unkF0[1] = gUnknown_203B224->unk72; + gUnknown_203B224->unkF0[0] = gUnknown_203B224->input.unk20; + gUnknown_203B224->unkF0[1] = gUnknown_203B224->input.unk1E; gUnknown_203B224->unkF0[2] = 0xB; gUnknown_203B224->unkF0[3] = 0; ResetUnusedInputStruct(); @@ -1201,21 +1201,21 @@ void sub_801A9E0(void) sub_8008C54(gUnknown_203B224->unk88); sub_80073B8(gUnknown_203B224->unk88); - x = gUnknown_203B224->unk72 * 8 + 10; - if (gUnknown_203B224->unk72 == 0) { + x = gUnknown_203B224->input.unk1E * 8 + 10; + if (gUnknown_203B224->input.unk1E == 0) { xxx_call_draw_string(x,0,gTeamToolboxA,gUnknown_203B224->unk88,0); } else { xxx_call_draw_string(x,0,gTeamToolboxB,gUnknown_203B224->unk88,0); } - for(r7 = 0; r7 < gUnknown_203B224->unk6E; r7++) + for(r7 = 0; r7 < gUnknown_203B224->input.unk1A; r7++) { - teamItemIndex = (gUnknown_203B224->unk72 * gUnknown_203B224->unk70) + r7; + teamItemIndex = (gUnknown_203B224->input.unk1E * gUnknown_203B224->input.unk1C) + r7; item = gTeamInventory_203B460->teamItems[teamItemIndex]; switch(gUnknown_203B224->unk0) { case 0: sub_8090E14(buffer1,&item,0); - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0); + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0); break; case 1: case 2: @@ -1224,7 +1224,7 @@ void sub_801A9E0(void) stack.unk8 = 1; item.flags = 1; sub_8090E14(buffer1,&item, &stack); - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0); + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0); break; case 3: stack1.unk0 = 0; @@ -1233,12 +1233,12 @@ void sub_801A9E0(void) item.flags = 1; sub_8090E14(buffer1,&item,&stack1); if (gUnknown_203B224->unk4[teamItemIndex] != 0 || sub_801ADA0(teamItemIndex) != '\0'){ - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0); + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0); } else { strncpy(gUnknown_202DE58,buffer1,0x50); - xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); + xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); } break; case 4: @@ -1252,15 +1252,15 @@ void sub_801A9E0(void) if (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney > MAX_TEAM_MONEY){ // very dumb but this matches... sprintfStatic((char *)&stack3,gUnknown_80DB9A0,buffer1); - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),(u8 *)&stack3,gUnknown_203B224->unk88,0); + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),(u8 *)&stack3,gUnknown_203B224->unk88,0); } else - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);; + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);; } else { sub_8090E14(buffer1,&item, 0); strncpy(gUnknown_202DE58,buffer1,0x50); - xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); + xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); } break; case 5: @@ -1270,17 +1270,17 @@ void sub_801A9E0(void) item.flags = 1; sub_8090E14(buffer1,&item,&stack3); if (IsGummiItem(item.id)) { - xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0); + xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0); } else { strncpy(gUnknown_202DE58,buffer1,0x50); - xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); + xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0); } break; } if ((sub_801AED0(teamItemIndex) & 1) != 0) { - sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10); + sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->input,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10); } } sub_80073E0(gUnknown_203B224->unk88); diff --git a/src/main_menu.c b/src/main_menu.c index 1e5842db0..10ca9c985 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -881,7 +881,7 @@ bool8 SetMainMenuText(void) // Have to load the pointer before the index preload = gUnknown_203B34C->unk4[0].menuItems; - menuChoice = preload[gUnknown_203B34C->unk4[0].menuIndex].menuAction; // chosen menu action? + menuChoice = preload[gUnknown_203B34C->unk4[0].input.menuIndex].menuAction; // chosen menu action? if (gUnknown_203B34C->currMenuChoice == menuChoice) { return FALSE; } diff --git a/src/makuhita_dojo_1.c b/src/makuhita_dojo_1.c index e2b7536b7..73ded2fc5 100644 --- a/src/makuhita_dojo_1.c +++ b/src/makuhita_dojo_1.c @@ -15,15 +15,7 @@ struct unkStruct_203B31C { // Size: 0xD0 s16 unk0[NUM_DUNGEON_MAZE]; - u32 unk30; - u8 fill34[0x48 - 0x34]; - s16 unk48; - s16 unk4A; - s16 unk4C; - s16 unk4E; - u16 unk50; - u16 unk52; - u8 fill54[0x64 - 0x54]; + struct UnkInputStruct unk30; u32 unk64; struct UnkTextStruct2 *unk68; struct UnkTextStruct2 unk6C[4]; @@ -72,9 +64,9 @@ extern s16 sub_80A2668(u32 r0); extern s32 sub_8013800(void *, u32); extern bool8 IsMazeCompleted(s32); extern s32 sub_8030668(void); -extern void sub_8013984(u32 *); +extern void sub_8013984(void *); extern void sub_80304C8(); -extern void AddMenuCursorSprite(u32 *); +extern void AddMenuCursorSprite(struct UnkInputStruct *); extern void DrawDojoCourseList(void); extern u8 sub_80138B8(void *, u32); @@ -234,11 +226,11 @@ u32 sub_80303AC(u8 param_1) } s16 sub_8030418(void) { - return gUnknown_203B31C->unk0[(gUnknown_203B31C->unk4E * gUnknown_203B31C->unk4C) + gUnknown_203B31C->unk48]; + return gUnknown_203B31C->unk0[(gUnknown_203B31C->unk30.unk1E * gUnknown_203B31C->unk30.unk1C) + gUnknown_203B31C->unk30.menuIndex]; } void sub_8030444(u8 r0) { - gUnknown_203B31C->unk52 = sub_8030668(); + gUnknown_203B31C->unk30.unk22 = sub_8030668(); sub_8013984(&gUnknown_203B31C->unk30); sub_80304C8(); DrawDojoCourseList(); @@ -331,10 +323,10 @@ void DrawDojoCourseList(void) sub_80073B8(gUnknown_203B31C->unk64); xxx_call_draw_string(10,0,gMakuhitaDojoHeader,gUnknown_203B31C->unk64,0); // Courses sub_8012BC4(gUnknown_203B31C->unkCC[2] * 8 + 4,0, - gUnknown_203B31C->unk4E + 1,2,7,gUnknown_203B31C->unk64); - for (index = 0; index < gUnknown_203B31C->unk4A; index++) + gUnknown_203B31C->unk30.unk1E + 1,2,7,gUnknown_203B31C->unk64); + for (index = 0; index < gUnknown_203B31C->unk30.unk1A; index++) { - iVar6 = gUnknown_203B31C->unk0[gUnknown_203B31C->unk4E * gUnknown_203B31C->unk4C + index]; + iVar6 = gUnknown_203B31C->unk0[gUnknown_203B31C->unk30.unk1E * gUnknown_203B31C->unk30.unk1C + index]; dungeonIndex = sub_80A2740(iVar6); mazeIndex = sub_80A2668(iVar6); diff --git a/src/menu_input.c b/src/menu_input.c index 780e610c9..810940993 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -17,24 +17,27 @@ extern struct UnkTextStruct1 gUnknown_2027370[4]; extern u8 gUnknown_80D4828[]; extern void PlayMenuSoundEffect(u32); -extern s32 GetKeyPress(u32 *); -extern u32 sub_80137A8(u32 *); -void MoveMenuCursorUp(u32 *); -void MoveMenuCursorDown(u32 *); +extern s32 GetKeyPress(struct UnkInputStruct *); +extern u32 sub_80137A8(struct UnkInputStruct *); +void MoveMenuCursorUp(struct UnkInputStruct *); +void MoveMenuCursorDown(struct UnkInputStruct *); extern void sub_80073B8(u32); extern s32 sub_8008ED0(const u8 *); extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); -extern s32 sub_8013800(u32 *, s32); +extern s32 sub_8013800(struct UnkInputStruct *, s32); extern void sub_80073E0(u32); -extern void sub_8013660(u32 *); -void AddMenuCursorSprite(void *); +extern void sub_8013660(struct UnkInputStruct *); +void AddMenuCursorSprite(struct UnkInputStruct *); +void AddMenuCursorSprite_(struct UnkInputStruct *, u32); void sub_8012EBC(struct MenuStruct *param_1); -extern void sub_8013134(u32 *, u32, u32); -extern void sub_80137B0(u32 *, u32); +extern void sub_8013134(struct UnkInputStruct *, u32, u32); +extern void sub_80137B0(struct UnkInputStruct *, 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); +extern void sub_801317C(struct UnkInputStructSub *); +extern void nullsub_7(u16 *); const u32 gDefaultMenuTextColors[] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED }; @@ -228,9 +231,9 @@ void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 if (menuIndex < 0) { menuIndex = iVar1; } - sub_8013134(¶m_1->unk14,counter,index); - param_1->menuIndex = menuIndex; - sub_80137B0(¶m_1->unk14,0); + sub_8013134(¶m_1->input,counter,index); + param_1->input.menuIndex = menuIndex; + sub_80137B0(¶m_1->input,0); param_1->unk4C = TRUE; param_1->unk4D = TRUE; param_1->unk4E = TRUE; @@ -268,9 +271,9 @@ void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 if (menuIndex < 0) { menuIndex = iVar1; } - sub_8013134(¶m_1->unk14,counter,index); - param_1->menuIndex = menuIndex; - sub_80137B0(¶m_1->unk14,0); + sub_8013134(¶m_1->input,counter,index); + param_1->input.menuIndex = menuIndex; + sub_80137B0(¶m_1->input,0); param_1->index = index; param_1->menuTextColorArray = colorArray; if (colorArray == NULL) { @@ -341,7 +344,7 @@ void sub_8012EBC(struct MenuStruct *param_1) color = colorArray[0]; } sprintfStatic(buffer,gUnknown_80D4828,color,textPtr); - y = sub_8013800(¶m_1->unk14,counter); + y = sub_8013800(¶m_1->input,counter); xxx_format_and_draw(8,y,buffer,param_1->index,0); menuItemsPtr++; counter++; @@ -352,10 +355,10 @@ void sub_8012EBC(struct MenuStruct *param_1) } if (param_1->unk4E) { if (param_1->unk4C) { - AddMenuCursorSprite(¶m_1->unk14); + AddMenuCursorSprite(¶m_1->input); } else { - sub_8013660(¶m_1->unk14); + sub_8013660(¶m_1->input); } } } @@ -366,31 +369,31 @@ bool8 sub_8012FD8(struct MenuStruct *param_1) s32 index; const struct MenuItem *item; - prevMenuIndex = param_1->menuIndex; + prevMenuIndex = param_1->input.menuIndex; if (param_1->unk4C) { - switch(GetKeyPress(¶m_1->unk14)) + switch(GetKeyPress(¶m_1->input)) { case INPUT_DPAD_DOWN: - MoveMenuCursorDown(¶m_1->unk14); - if (prevMenuIndex != param_1->menuIndex) { + MoveMenuCursorDown(¶m_1->input); + if (prevMenuIndex != param_1->input.menuIndex) { PlayMenuSoundEffect(3); } break; case INPUT_DPAD_UP: - MoveMenuCursorUp(¶m_1->unk14); - if (prevMenuIndex != param_1->menuIndex) { + MoveMenuCursorUp(¶m_1->input); + if (prevMenuIndex != param_1->input.menuIndex) { PlayMenuSoundEffect(3); } break; case INPUT_A_BUTTON: - index = sub_80137A8(¶m_1->unk14); + index = sub_80137A8(¶m_1->input); item = ¶m_1->menuItems[index]; if ((-1 < item->menuAction) && ((param_1->unkC == NULL || (param_1->unkC[index] != 1)))) { param_1->menuAction = item->menuAction; ++param_1; --param_1; param_1->unk4C = FALSE; - param_1->unk38 = 0; + param_1->input.unk24 = 0; } else { @@ -404,8 +407,8 @@ bool8 sub_8012FD8(struct MenuStruct *param_1) PlayMenuSoundEffect(0); break; case INPUT_B_BUTTON: - if (-1 < param_1->menuItems[param_1->unk2E].menuAction) { - param_1->menuAction = param_1->menuItems[param_1->unk2E].menuAction; + if (-1 < param_1->menuItems[param_1->input.unk1A].menuAction) { + param_1->menuAction = param_1->menuItems[param_1->input.unk1A].menuAction; param_1->unk4C = FALSE; PlayMenuSoundEffect(1); } @@ -424,18 +427,18 @@ bool8 sub_80130A8(struct MenuStruct *param_1) if (param_1->unk4C) { - switch(GetKeyPress(¶m_1->unk14)) + switch(GetKeyPress(¶m_1->input)) { case INPUT_A_BUTTON: - index = sub_80137A8(¶m_1->unk14); + index = sub_80137A8(¶m_1->input); menuItem = ¶m_1->menuItems[index]; param_1->menuAction = menuItem->menuAction; param_1->unk4C = FALSE; - param_1->unk38 = 0; + param_1->input.unk24 = 0; PlayMenuSoundEffect(0); break; case INPUT_B_BUTTON: - if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) { + if(menuAction = param_1->menuItems[param_1->input.unk1A].menuAction, -1 < menuAction) { param_1->menuAction = menuAction; param_1->unk4C = FALSE; PlayMenuSoundEffect(0); @@ -457,3 +460,51 @@ bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction) } return FALSE; } + +void sub_8013134(struct UnkInputStruct *param_1, u32 menuItemCounter, u32 index) { + + struct UnkTextStruct1 *temp; + + temp = &gUnknown_2027370[index]; + + param_1->unk0 = index; + param_1->menuIndex = 0; + param_1->unk1A = menuItemCounter; + param_1->unk1C = menuItemCounter; + param_1->unk1E = 0; + param_1->unk4 = 0; + + if(temp->unkC == 6) + { + param_1->unk6 = 0x10; + } + else + { + param_1->unk6 = 0x2; + } + + + param_1->unkC = 0; + param_1->unkE = 0; + param_1->unk14 = 0; + param_1->unk24 = 0; + sub_801317C(¶m_1->unk28); +} + +void sub_801317C(struct UnkInputStructSub *param_1) +{ + param_1->unk0 = 0; + param_1->a_button = 0; + param_1->b_button = 0; + param_1->dpad_left = 0; + param_1->dpad_right = 0; + param_1->unk8 = -1; + param_1->unkA = -1; + nullsub_7(¶m_1->unk8); + ResetUnusedInputStruct(); +} + +void AddMenuCursorSprite(struct UnkInputStruct *param_1) +{ + AddMenuCursorSprite_(param_1, 0); +} diff --git a/src/more_input.c b/src/more_input.c index 4d02d4bed..379a81c7b 100644 --- a/src/more_input.c +++ b/src/more_input.c @@ -1,12 +1,12 @@ -#include "constants/input.h" #include "global.h" +#include "constants/input.h" #include "input.h" -extern void nullsub_34(struct UnkInputStruct *r0); +extern void nullsub_34(struct UnkInputStructSub *r0); u32 sub_8012AE8(void); -u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1) +u32 sub_8012A64(struct UnkInputStructSub *r0, u32 r1) { if(r0 == NULL) { @@ -16,36 +16,39 @@ u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1) { nullsub_34(r0); } - if(r0->unk1 != 0) + if(r0->a_button != 0) { - r0->unk1 = 0; - return 1; + r0->a_button = 0; + return INPUT_A_BUTTON; } - if(r0->unk2 == 0) + else if(r0->b_button == 0) { return sub_8012AE8(); } - r0->unk2 = r0->unk1; - return 2; + else + { + r0->b_button = 0; + return INPUT_B_BUTTON; + } } u32 GetKeyPress(struct UnkInputStruct *r0) { if(r0 != NULL) { - if(r0->a_button != 0) + if(r0->unk28.a_button != 0) { return INPUT_A_BUTTON; } - if(r0->b_button != 0) + if(r0->unk28.b_button != 0) { return INPUT_B_BUTTON; } - if(r0->dpad_left != 0) + if(r0->unk28.dpad_left != 0) { return INPUT_DPAD_LEFT; } - if(r0->dpad_right != 0) + if(r0->unk28.dpad_right != 0) { return INPUT_DPAD_RIGHT; } diff --git a/src/pokemon_news.c b/src/pokemon_news.c index 457c92fbf..af963e530 100644 --- a/src/pokemon_news.c +++ b/src/pokemon_news.c @@ -14,22 +14,8 @@ struct unkStruct_203B2CC { // size: 0xD4; u8 receivedNewsletters[NUM_POKEMON_NEWS]; - - u32 unk38; - u8 fill3C[0x50 - 0x3C]; - - s16 unk50; - s16 unk52; - s16 unk54; - s16 unk56; - - u16 unk58; - u16 numPKMNNews; - - u8 fill5C[0x6C - 0x5C]; - + struct UnkInputStruct input; u32 unk6C; - struct UnkTextStruct2 *unk70; struct UnkTextStruct2 unk74[4]; }; @@ -55,15 +41,7 @@ struct unkStruct_203B2D8 { // size: 0xA4 u8 unk0[4]; - u32 unk4; - u8 fill8[0x1C - 0x8]; - s16 unk1C; - s16 unk1E; - s16 unk20; - s16 unk22; - s16 fill24; - /* 0x26 */ s16 emptyMailSlots; - u8 fill28[0x38 - 0x28]; + struct UnkInputStruct input; u32 unk38; struct UnkTextStruct2 *unk3C; struct UnkTextStruct2 unk40[4]; @@ -180,9 +158,9 @@ extern void CreatePKMNNewsMenu(void); extern void sub_8013818(void *, u32, u32, u32); extern u8 sub_80138B8(void *, u32); extern void PlayMenuSoundEffect(u32); -extern s32 GetKeyPress(u32 *); -extern void sub_8013660(u32 *); -extern void AddMenuCursorSprite(u32 *); +extern s32 GetKeyPress(struct UnkInputStruct *); +extern void sub_8013660(struct UnkInputStruct *); +extern void AddMenuCursorSprite(struct UnkInputStruct *); extern void sub_802BCC4(void); extern void sub_802BB14(u32); extern void sub_801317C(u32 *); @@ -190,7 +168,7 @@ extern u8 HasNoMailinMailbox(void); extern void sub_802BF30(void); extern void CreateMailMenu(void); extern s32 CountEmptyMailSlots(void); -extern void sub_8013848(u32 *, s32, u32, u32); +extern void sub_8013848(struct UnkInputStruct*, s32, u32, u32); void sub_802BB28(void); extern void sub_802BB98(void); extern void sub_802BC08(void); @@ -206,8 +184,8 @@ extern void sub_80073E0(u32); extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, 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); -extern void sub_8013984(u32 *); +extern s32 sub_8013800(struct UnkInputStruct *, s32); +extern void sub_8013984(struct UnkInputStruct *); extern struct PokemonStruct *sub_808D3BC(void); extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); @@ -240,12 +218,12 @@ u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2CC->unk74, 1, 1); - sub_8013818(&gUnknown_203B2CC->unk38, GetNumPKMNNews(), r2, r0); + sub_8013818(&gUnknown_203B2CC->input, GetNumPKMNNews(), r2, r0); - gUnknown_203B2CC->unk50 = gUnknown_203B2D0; - gUnknown_203B2CC->unk56 = gUnknown_203B2D2; + gUnknown_203B2CC->input.menuIndex = gUnknown_203B2D0; + gUnknown_203B2CC->input.unk1E = gUnknown_203B2D2; - sub_8013984(&gUnknown_203B2CC->unk38); + sub_8013984(&gUnknown_203B2CC->input); sub_802B880(); CreatePKMNNewsMenu(); @@ -257,12 +235,12 @@ u32 sub_802B720(u8 r0) { if(r0 == 0) { - sub_8013660(&gUnknown_203B2CC->unk38); + sub_8013660(&gUnknown_203B2CC->input); return 0; } else { - switch(GetKeyPress(&gUnknown_203B2CC->unk38)) + switch(GetKeyPress(&gUnknown_203B2CC->input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); @@ -274,7 +252,7 @@ u32 sub_802B720(u8 r0) PlayMenuSoundEffect(4); return 4; } - if(sub_80138B8(&gUnknown_203B2CC->unk38, 1) != 0) + if(sub_80138B8(&gUnknown_203B2CC->input, 1) != 0) { sub_802B880(); CreatePKMNNewsMenu(); @@ -287,7 +265,7 @@ u32 sub_802B720(u8 r0) u8 GetPokemonNewsIndex(void) { - return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50]; + return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->input.unk1E * gUnknown_203B2CC->input.unk1C) + gUnknown_203B2CC->input.menuIndex]; } void sub_802B7D0(u8 r0) @@ -295,14 +273,14 @@ void sub_802B7D0(u8 r0) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2CC->unk74, 0, 0); - gUnknown_203B2CC->numPKMNNews = GetNumPKMNNews(); - sub_8013984(&gUnknown_203B2CC->unk38); + gUnknown_203B2CC->input.unk22 = GetNumPKMNNews(); + sub_8013984(&gUnknown_203B2CC->input); sub_802B880(); CreatePKMNNewsMenu(); if(r0 != 0) { - AddMenuCursorSprite(&gUnknown_203B2CC->unk38); + AddMenuCursorSprite(&gUnknown_203B2CC->input); } } @@ -310,9 +288,9 @@ void sub_802B81C(void) { if(gUnknown_203B2CC != NULL) { - gUnknown_203B2D0 = gUnknown_203B2CC->unk50; + gUnknown_203B2D0 = gUnknown_203B2CC->input.menuIndex; - gUnknown_203B2D2 = gUnknown_203B2CC->unk56; + gUnknown_203B2D2 = gUnknown_203B2CC->input.unk1E; gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBD0; @@ -380,11 +358,11 @@ void CreatePKMNNewsMenu(void) sub_8008C54(gUnknown_203B2CC->unk6C); sub_80073B8(gUnknown_203B2CC->unk6C); xxx_call_draw_string(0xA, 0, gUnknown_80DFC04, gUnknown_203B2CC->unk6C, 0); - sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C); - for(index = 0; index < gUnknown_203B2CC->unk52; index++) + sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->input.unk1E + 1, 2, 7, gUnknown_203B2CC->unk6C); + for(index = 0; index < gUnknown_203B2CC->input.unk1A; index++) { - y = sub_8013800(&gUnknown_203B2CC->unk38, index); - new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + index; + y = sub_8013800(&gUnknown_203B2CC->input, index); + new_index = (gUnknown_203B2CC->input.unk1E * gUnknown_203B2CC->input.unk1C) + index; mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index]; sub_803B6B0(0xA, y, 6, gUnknown_203B2CC->unk6C); sub_802BC7C(); @@ -607,9 +585,9 @@ u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3) sub_8012D34(gUnknown_203B2D8->unk3C,param_3); ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2D8->unk40,1,1); - sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1); - gUnknown_203B2D8->unk1C = gUnknown_203B2DC; - sub_8013984(&gUnknown_203B2D8->unk4); + sub_8013848(&gUnknown_203B2D8->input,CountEmptyMailSlots(),param_3,param_1); + gUnknown_203B2D8->input.menuIndex = gUnknown_203B2DC; + sub_8013984(&gUnknown_203B2D8->input); sub_802BF30(); CreateMailMenu(); return 1; @@ -620,10 +598,10 @@ u32 sub_802BDEC(u8 r0) { if(r0 == 0) { - sub_8013660(&gUnknown_203B2D8->unk4); + sub_8013660(&gUnknown_203B2D8->input); return 0; } - switch(GetKeyPress(&gUnknown_203B2D8->unk4)) + switch(GetKeyPress(&gUnknown_203B2D8->input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); @@ -635,7 +613,7 @@ u32 sub_802BDEC(u8 r0) PlayMenuSoundEffect(4); return 4; default: - if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0) + if(sub_80138B8(&gUnknown_203B2D8->input, 1) != 0) { sub_802BF30(); CreateMailMenu(); @@ -647,7 +625,7 @@ u32 sub_802BDEC(u8 r0) } u8 sub_802BE74(void) { - return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C]; + return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->input.unk1E * gUnknown_203B2D8->input.unk1C) + gUnknown_203B2D8->input.menuIndex]; } void sub_802BE94(u8 r0) @@ -655,14 +633,14 @@ void sub_802BE94(u8 r0) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2D8->unk40, 0, 0); - gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots(); - sub_8013984(&gUnknown_203B2D8->unk4); + gUnknown_203B2D8->input.unk22 = CountEmptyMailSlots(); + sub_8013984(&gUnknown_203B2D8->input); sub_802BF30(); CreateMailMenu(); if(r0 != 0) { - AddMenuCursorSprite(&gUnknown_203B2D8->unk4); + AddMenuCursorSprite(&gUnknown_203B2D8->input); } } @@ -670,7 +648,7 @@ void sub_802BEDC(void) { if(gUnknown_203B2D8 != NULL) { - gUnknown_203B2DC = gUnknown_203B2D8->unk1C; + gUnknown_203B2DC = gUnknown_203B2D8->input.menuIndex; gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C; ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2D8->unk40, 1, 1); diff --git a/src/post_office_guide.c b/src/post_office_guide.c index 8b662ecb8..0838c5019 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -29,8 +29,7 @@ EWRAM_DATA_2 struct PostOfficeHelper *gPostOfficeHelper = {0}; struct unkStruct_203B330 { // size: 0x78 - struct UnkInputStruct *unk0; - u8 fill4[0x8]; + struct UnkInputStructSub input; u8 unkC; u8 dungeonIndex; u8 fillE[2]; @@ -179,7 +178,7 @@ extern u8 gAvailablePokemonNames[]; 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 u32 sub_8012A64(struct UnkInputStruct**, u32); +extern u32 sub_8012A64(struct UnkInputStructSub *, u32); extern void PlayMenuSoundEffect(u32); extern void sub_8031A84(); extern void DisplayMissionObjectives(); @@ -536,7 +535,7 @@ u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3) gUnknown_203B330 = MemoryAlloc(sizeof(struct unkStruct_203B330),8); gUnknown_203B330->unkC = param_1; gUnknown_203B330->dungeonIndex = dungeon; - sub_801317C(&gUnknown_203B330->unk0); + sub_801317C(&gUnknown_203B330->input); gUnknown_203B330->unk10 = param_3; gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3]; sub_8031A2C(); @@ -545,7 +544,7 @@ u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3) u32 sub_80319F8(void) { - switch(sub_8012A64(&gUnknown_203B330->unk0, gUnknown_203B330->unk10)) + switch(sub_8012A64(&gUnknown_203B330->input, gUnknown_203B330->unk10)) { case 2: PlayMenuSoundEffect(1); diff --git a/src/wonder_mail_2_mid.c b/src/wonder_mail_2_mid.c index 345dd3c99..d00f6515d 100644 --- a/src/wonder_mail_2_mid.c +++ b/src/wonder_mail_2_mid.c @@ -12,21 +12,21 @@ bool8 IsMailSlotEmpty(u8); extern void sub_8013984(void *); -extern void sub_8013848(u32 *, s32, u32, u32); +extern void sub_8013848(struct UnkInputStruct *, s32, u32, u32); extern s32 CountPelipperBoardSlots(void); extern void sub_802C328(void); extern void DrawPelipperBoardJobMenu(void); extern void PlayMenuSoundEffect(u32); -extern void sub_8013660(u32 *); -extern s32 GetKeyPress(u32 *); -extern bool8 sub_80138B8(u32 *, u32); -extern void AddMenuCursorSprite(u32 *); +extern void sub_8013660(struct UnkInputStruct *); +extern s32 GetKeyPress(struct UnkInputStruct *); +extern bool8 sub_80138B8(struct UnkInputStruct *, u32); +extern void AddMenuCursorSprite(struct UnkInputStruct *); extern u8 HasNoPelipperBoardJobs(void); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); -extern s32 sub_8013800(u32 *, s32); +extern s32 sub_8013800(struct UnkInputStruct *, s32); extern struct WonderMail *GetPelipperBoardSlotInfo(u32); extern void sub_803B35C(struct WonderMail *, u32 *); extern u8 gBulletinBoardText[]; @@ -39,37 +39,20 @@ struct unkStruct_203B2D8 { // size: 0xA4 u8 unk0[4]; - u32 unk4; - u8 fill8[0x1C - 0x8]; - s16 unk1C; - s16 unk1E; - s16 unk20; - s16 unk22; - s16 fill24; - /* 0x26 */ s16 emptyMailSlots; - u8 fill28[0x38 - 0x28]; + struct UnkInputStruct input; u32 unk38; struct UnkTextStruct2 *unk3C; struct UnkTextStruct2 unk40[4]; u8 unkA0[4]; }; - extern struct unkStruct_203B2D8 *gUnknown_203B2D8; struct unkStruct_203B2E0 { // size: 0xA8 u8 unk0[0x8]; - u32 unk8; - u8 unkC[0x20 - 0xC]; - s16 unk20; - s16 unk22; - s16 unk24; - s16 unk26; - s16 unk28; - s16 pelipperBoardSlots; - u8 fill22[0x3C - 0x2C]; + struct UnkInputStruct input; s32 unk3C; struct UnkTextStruct2 *unk40; struct UnkTextStruct2 unk44[4]; @@ -99,13 +82,13 @@ void CreateMailMenu(void) sub_8008C54(gUnknown_203B2D8->unk38); sub_80073B8(gUnknown_203B2D8->unk38); - xxx_call_draw_string(gUnknown_203B2D8->unk22 * 8 + 10,0,gMailboxText,gUnknown_203B2D8->unk38,0); - for (index = 0; index < gUnknown_203B2D8->unk1E; index++) { - mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + index]); + xxx_call_draw_string(gUnknown_203B2D8->input.unk1E * 8 + 10,0,gMailboxText,gUnknown_203B2D8->unk38,0); + for (index = 0; index < gUnknown_203B2D8->input.unk1A; index++) { + mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->input.unk1E * gUnknown_203B2D8->input.unk1C) + index]); local.unk0[0] = gUnknown_203B2D8->unk38; - local.y = sub_8013800(&gUnknown_203B2D8->unk4, index); + local.y = sub_8013800(&gUnknown_203B2D8->input, index); if (mail->mailType == MAIL_TYPE_UNK1) { - y = sub_8013800(&gUnknown_203B2D8->unk4, index); + y = sub_8013800(&gUnknown_203B2D8->input, index); sub_803B6B0(10,y,6,gUnknown_203B2D8->unk38); PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct()); sprintfStatic(buffer, GetPokemonMailHeadline(mail->dungeon.floor), gAvailablePokemonNames); @@ -173,9 +156,9 @@ bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3) sub_8012D34(gUnknown_203B2E0->unk40,param_3); ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2E0->unk44,1,1); - sub_8013848(&gUnknown_203B2E0->unk8,CountPelipperBoardSlots(),param_3,param_1); - gUnknown_203B2E0->unk20 = gUnknown_203B2E4; - sub_8013984(&gUnknown_203B2E0->unk8); + sub_8013848(&gUnknown_203B2E0->input,CountPelipperBoardSlots(),param_3,param_1); + gUnknown_203B2E0->input.menuIndex = gUnknown_203B2E4; + sub_8013984(&gUnknown_203B2E0->input); sub_802C328(); DrawPelipperBoardJobMenu(); return TRUE; @@ -185,11 +168,11 @@ bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3) u32 sub_802C1E4(u8 param_1) { if (param_1 == '\0') { - sub_8013660(&gUnknown_203B2E0->unk8); + sub_8013660(&gUnknown_203B2E0->input); return 0; } else { - switch(GetKeyPress(&gUnknown_203B2E0->unk8)) + switch(GetKeyPress(&gUnknown_203B2E0->input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); @@ -201,7 +184,7 @@ u32 sub_802C1E4(u8 param_1) PlayMenuSoundEffect(4); return 4; default: - if (sub_80138B8(&gUnknown_203B2E0->unk8,1)) { + if (sub_80138B8(&gUnknown_203B2E0->input,1)) { sub_802C328(); DrawPelipperBoardJobMenu(); return 1; @@ -215,26 +198,26 @@ u32 sub_802C1E4(u8 param_1) u8 sub_802C26C(void) { - return gUnknown_203B2E0->unk0[(gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24) + gUnknown_203B2E0->unk20]; + return gUnknown_203B2E0->unk0[(gUnknown_203B2E0->input.unk1E * gUnknown_203B2E0->input.unk1C) + gUnknown_203B2E0->input.menuIndex]; } void sub_802C28C(u8 r0) { ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2E0->unk44, 0, 0); - gUnknown_203B2E0->pelipperBoardSlots = CountPelipperBoardSlots(); - sub_8013984(&gUnknown_203B2E0->unk8); + gUnknown_203B2E0->input.unk22 = CountPelipperBoardSlots(); + sub_8013984(&gUnknown_203B2E0->input); sub_802C328(); DrawPelipperBoardJobMenu(); if(r0) - AddMenuCursorSprite(&gUnknown_203B2E0->unk8); + AddMenuCursorSprite(&gUnknown_203B2E0->input); } void sub_802C2D4(void) { if(gUnknown_203B2E0 != NULL) { - gUnknown_203B2E4 = gUnknown_203B2E0->unk20; + gUnknown_203B2E4 = gUnknown_203B2E0->input.menuIndex; gUnknown_203B2E0->unk44[gUnknown_203B2E0->unk3C] = gUnknown_80DFC9C; ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2E0->unk44, 1, 1); @@ -314,20 +297,20 @@ void DrawPelipperBoardJobMenu(void) sub_8008C54(gUnknown_203B2E0->unk3C); sub_80073B8(gUnknown_203B2E0->unk3C); - iVar4 = gUnknown_203B2E0->unk26 * 8; + iVar4 = gUnknown_203B2E0->input.unk1E * 8; x = iVar4; x += 10; xxx_call_draw_string(x,0,gBulletinBoardText,gUnknown_203B2E0->unk3C,0); iVar4 += 4; x = iVar4 + gUnknown_203B2E0->unkA4[2] * 8; - sub_8012BC4(x,0,gUnknown_203B2E0->unk26 + 1,2,7,gUnknown_203B2E0->unk3C); + sub_8012BC4(x,0,gUnknown_203B2E0->input.unk1E + 1,2,7,gUnknown_203B2E0->unk3C); - for(index = 0; index < gUnknown_203B2E0->unk22; index++) + for(index = 0; index < gUnknown_203B2E0->input.unk1A; index++) { - slotIndex = (gUnknown_203B2E0->unk0[gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24 + index]); + slotIndex = (gUnknown_203B2E0->unk0[gUnknown_203B2E0->input.unk1E * gUnknown_203B2E0->input.unk1C + index]); mail = GetPelipperBoardSlotInfo(slotIndex); local.unk0[0] = gUnknown_203B2E0->unk3C; - local.y = sub_8013800(&gUnknown_203B2E0->unk8,index); + local.y = sub_8013800(&gUnknown_203B2E0->input,index); sub_803B35C(mail,local.unk0); if (IsMailinJobSlot(GetPelipperBoardSlotInfo(slotIndex))) { local.unk43 = 2;