diff options
author | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-06-14 19:04:24 -0400 |
---|---|---|
committer | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-06-14 19:04:24 -0400 |
commit | 7cabc3d1a51a48a31b02d1c24b26da2a5c654f35 (patch) | |
tree | 22604fd633f5a4b8d76d11642e00940813c806bd | |
parent | bc143a695d54f7ac663b2b3f1ea98c53b21842e2 (diff) |
pokemon_summary_screen.c, part 2.
Also fix prototype of MenuHelpers_CallLinkSomething.
-rw-r--r-- | asm/pokemon_summary_screen.s | 524 | ||||
-rw-r--r-- | include/menu_helpers.h | 2 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 11 | ||||
-rw-r--r-- | src/berry_pouch.c | 6 | ||||
-rw-r--r-- | src/item_menu.c | 8 | ||||
-rw-r--r-- | src/item_pc.c | 2 | ||||
-rw-r--r-- | src/menu_helpers.c | 4 | ||||
-rw-r--r-- | src/option_menu.c | 6 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 278 | ||||
-rw-r--r-- | src/tm_case.c | 6 |
10 files changed, 289 insertions, 558 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 8a29e6ea2..b503a8525 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,530 +5,6 @@ .text - thumb_func_start sub_813476C -sub_813476C: @ 813476C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08134790 @ =gMonSummaryScreen - ldr r1, [r0] - ldr r3, _08134794 @ =0x0000301c - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0813479C - ldr r3, _08134798 @ =0x00003224 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - beq _0813479C - movs r0, 0x1 - b _0813479E - .align 2, 0 -_08134790: .4byte gMonSummaryScreen -_08134794: .4byte 0x0000301c -_08134798: .4byte 0x00003224 -_0813479C: - movs r0, 0 -_0813479E: - pop {r1} - bx r1 - thumb_func_end sub_813476C - - thumb_func_start sub_81347A4 -sub_81347A4: @ 81347A4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081347D4 @ =gMonSummaryScreen - ldr r1, [r0] - movs r2, 0xC8 - lsls r2, 6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08134830 - movs r0, 0xCC - lsls r0, 6 - adds r2, r1, r0 - ldrb r1, [r2] - adds r0, r1, 0 - cmp r0, 0xFF - beq _081347D8 - cmp r0, r4 - bne _081347D8 - movs r0, 0xFF - strb r0, [r2] -_081347D0: - movs r0, 0x1 - b _08134832 - .align 2, 0 -_081347D4: .4byte gMonSummaryScreen -_081347D8: - adds r0, r4, 0 - bl sub_813476C - lsls r0, 24 - cmp r0, 0 - bne _08134830 - cmp r4, 0 - beq _08134810 - cmp r4, 0x1 - bne _08134830 - ldr r0, _08134808 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081347D0 - ldr r0, _0813480C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _08134830 - movs r0, 0x80 - lsls r0, 1 - b _0813482A - .align 2, 0 -_08134808: .4byte gMain -_0813480C: .4byte gSaveBlock2Ptr -_08134810: - ldr r0, _08134838 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _081347D0 - ldr r0, _0813483C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _08134830 - movs r0, 0x80 - lsls r0, 2 -_0813482A: - ands r0, r1 - cmp r0, 0 - bne _081347D0 -_08134830: - movs r0, 0 -_08134832: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08134838: .4byte gMain -_0813483C: .4byte gSaveBlock2Ptr - thumb_func_end sub_81347A4 - - thumb_func_start sub_8134840 -sub_8134840: @ 8134840 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _0813486C @ =gMonSummaryScreen - ldr r0, [r1] - ldr r2, _08134870 @ =0x00003270 - adds r0, r2 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x5 - bls _08134860 - b _08134B88 -_08134860: - lsls r0, 2 - ldr r1, _08134874 @ =_08134878 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813486C: .4byte gMonSummaryScreen -_08134870: .4byte 0x00003270 -_08134874: .4byte _08134878 - .align 2, 0 -_08134878: - .4byte _08134890 - .4byte _081348AC - .4byte _081348E4 - .4byte _08134ADC - .4byte _08134B38 - .4byte _08134B60 -_08134890: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _081348A8 @ =gMonSummaryScreen - ldr r0, [r0] - b _081348D6 - .align 2, 0 -_081348A8: .4byte gMonSummaryScreen -_081348AC: - ldr r0, _081348C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081348D4 - bl sub_813B784 - ldr r0, _081348CC @ =gMonSummaryScreen - ldr r0, [r0] - ldr r2, _081348D0 @ =0x00003270 - adds r0, r2 - b _08134AF6 - .align 2, 0 -_081348C8: .4byte gPaletteFade -_081348CC: .4byte gMonSummaryScreen -_081348D0: .4byte 0x00003270 -_081348D4: - ldr r0, [r4] -_081348D6: - ldr r1, _081348E0 @ =0x00003270 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_081348E0: .4byte 0x00003270 -_081348E4: - bl MenuHelpers_CallLinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081348F2 - b _08134B9A -_081348F2: - bl sub_800B270 - cmp r0, 0x1 - bne _081348FC - b _08134B9A -_081348FC: - ldr r0, _08134940 @ =sub_813B3F0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - beq _0813490C - b _08134B9A -_0813490C: - ldr r5, _08134944 @ =gMonSummaryScreen - ldr r0, [r5] - ldr r6, _08134948 @ =0x00003214 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - beq _081349F8 - movs r0, 0x1 - bl sub_81347A4 - adds r4, r0, 0 - cmp r4, 0x1 - bne _0813498C - ldr r0, _0813494C @ =sub_8134BAC - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08134950 - ldr r0, [r5] - movs r2, 0xCC - lsls r2, 6 - adds r0, r2 - strb r4, [r0] - b _08134B9A - .align 2, 0 -_08134940: .4byte sub_813B3F0 -_08134944: .4byte gMonSummaryScreen -_08134948: .4byte 0x00003214 -_0813494C: .4byte sub_8134BAC -_08134950: - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0813495C - b _08134B9A -_0813495C: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl HideBg - ldr r0, [r5] - ldr r1, _08134988 @ =0x00003224 - adds r0, r1 - strb r4, [r0] - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8138414 - ldr r1, [r5] - adds r1, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r5] - b _08134AA8 - .align 2, 0 -_08134988: .4byte 0x00003224 -_0813498C: - movs r0, 0 - bl sub_81347A4 - cmp r0, 0x1 - bne _081349F8 - ldr r0, _081349B0 @ =sub_8134BAC - bl FuncIsActiveTask - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _081349B4 - ldr r0, [r5] - movs r1, 0xCC - lsls r1, 6 - adds r0, r1 - strb r7, [r0] - b _08134B9A - .align 2, 0 -_081349B0: .4byte sub_8134BAC -_081349B4: - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _081349C0 - b _08134B9A -_081349C0: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl HideBg - ldr r0, [r5] - ldr r2, _081349F0 @ =0x00003224 - adds r0, r2 - strb r4, [r0] - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8138414 - ldr r1, [r5] - adds r1, r6 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - ldr r0, [r5] - ldr r1, _081349F4 @ =0x00003270 - adds r0, r1 - b _08134AAC - .align 2, 0 -_081349F0: .4byte 0x00003224 -_081349F4: .4byte 0x00003270 -_081349F8: - ldr r0, _08134A2C @ =sub_8134BAC - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08134A12 - ldr r0, _08134A30 @ =sub_813B3F0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08134A12 - b _08134B9A -_08134A12: - ldr r0, _08134A34 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08134A38 - movs r1, 0x1 - negs r1, r1 - mov r0, r8 - bl sub_813B120 - b _08134B9A - .align 2, 0 -_08134A2C: .4byte sub_8134BAC -_08134A30: .4byte sub_813B3F0 -_08134A34: .4byte gMain -_08134A38: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08134A4A - mov r0, r8 - movs r1, 0x1 - bl sub_813B120 - b _08134B9A -_08134A4A: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08134ABC - ldr r4, _08134A70 @ =gMonSummaryScreen - ldr r0, [r4] - ldr r5, _08134A74 @ =0x00003214 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _08134A7C - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - ldr r2, _08134A78 @ =0x00003270 - adds r0, r2 - b _08134ACC - .align 2, 0 -_08134A70: .4byte gMonSummaryScreen -_08134A74: .4byte 0x00003214 -_08134A78: .4byte 0x00003270 -_08134A7C: - cmp r0, 0x2 - beq _08134A82 - b _08134B9A -_08134A82: - movs r0, 0x5 - bl PlaySE - ldr r0, [r4] - ldr r1, _08134AB4 @ =0x00003224 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8138414 - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] -_08134AA8: - ldr r2, _08134AB8 @ =0x00003270 - adds r0, r2 -_08134AAC: - movs r1, 0x3 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_08134AB4: .4byte 0x00003224 -_08134AB8: .4byte 0x00003270 -_08134ABC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08134B9A - ldr r0, _08134AD4 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r1, _08134AD8 @ =0x00003270 - adds r0, r1 -_08134ACC: - movs r1, 0x4 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_08134AD4: .4byte gMonSummaryScreen -_08134AD8: .4byte 0x00003270 -_08134ADC: - ldr r3, [r4] - ldr r2, _08134AFC @ =0x00003214 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08134B08 - ldr r0, _08134B00 @ =sub_8134BAC - movs r1, 0 - bl CreateTask - ldr r0, [r4] - ldr r1, _08134B04 @ =0x00003270 - adds r0, r1 -_08134AF6: - movs r1, 0x2 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_08134AFC: .4byte 0x00003214 -_08134B00: .4byte sub_8134BAC -_08134B04: .4byte 0x00003270 -_08134B08: - ldr r2, _08134B28 @ =gTasks - ldr r1, _08134B2C @ =0x00003018 - adds r0, r3, r1 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _08134B30 @ =sub_8134E84 - str r1, [r0] - ldr r2, _08134B34 @ =0x00003270 - adds r1, r3, r2 - movs r0, 0x2 - strb r0, [r1] - b _08134B9A - .align 2, 0 -_08134B28: .4byte gTasks -_08134B2C: .4byte 0x00003018 -_08134B30: .4byte sub_8134E84 -_08134B34: .4byte 0x00003270 -_08134B38: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08134B58 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r1, _08134B5C @ =0x00003270 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_08134B58: .4byte gMonSummaryScreen -_08134B5C: .4byte 0x00003270 -_08134B60: - bl Overworld_LinkRecvQueueLengthMoreThan2 - cmp r0, 0x1 - beq _08134B9A - bl sub_800B270 - cmp r0, 0x1 - beq _08134B9A - ldr r0, _08134B80 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r2, _08134B84 @ =0x00003270 - adds r0, r2 - movs r1, 0x6 - strb r1, [r0] - b _08134B9A - .align 2, 0 -_08134B80: .4byte gMonSummaryScreen -_08134B84: .4byte 0x00003270 -_08134B88: - ldr r0, _08134BA8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08134B9A - mov r0, r8 - bl sub_8137E64 -_08134B9A: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08134BA8: .4byte gPaletteFade - thumb_func_end sub_8134840 - thumb_func_start sub_8134BAC sub_8134BAC: @ 8134BAC push {r4-r7,lr} diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 0c0623cc0..2aeef23e9 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -15,7 +15,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool32 MenuHelpers_CallLinkSomething(void); +bool8 MenuHelpers_CallLinkSomething(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 4dd7881bd..03a10fcde 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -34,6 +34,17 @@ enum PokemonSummaryScreenPage PSS_PAGE_MOVES_INFO, }; +enum PokemonSummaryScreenState3270 +{ + PSS_STATE3270_0, + PSS_STATE3270_1, + PSS_STATE3270_2, + PSS_STATE3270_3, + PSS_STATE3270_4, + PSS_STATE3270_5, + PSS_STATE3270_6 +}; + s32 GetLastViewedMonIndex(void); void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4); void sub_8138B38(u8); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index b6a5763fb..487667ad2 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -457,7 +457,7 @@ static void CB2_InitBerryPouch(void) { while (1) { - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) break; if (RunBerryPouchInit() == TRUE) break; @@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 menuInput; - if (!gPaletteFade.active && (u8)MenuHelpers_CallLinkSomething() != TRUE) + if (!gPaletteFade.active && MenuHelpers_CallLinkSomething() != TRUE) { menuInput = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); @@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId) static void Task_NormalContextMenu_HandleInput(u8 taskId) { s8 input; - if ((u8)MenuHelpers_CallLinkSomething() != TRUE) + if (MenuHelpers_CallLinkSomething() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) diff --git a/src/item_menu.c b/src/item_menu.c index 5ab87c9a0..3002c3970 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -377,7 +377,7 @@ static void CB2_OpenBagMenu(void) { while (1) { - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) break; if (LoadBagMenuGraphics() == TRUE) break; @@ -1050,7 +1050,7 @@ static void Task_BagMenu_HandleInput(u8 taskId) return; if (FuncIsActiveTask(Task_AnimateWin0v) == TRUE) return; - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) return; switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket)) { @@ -1244,7 +1244,7 @@ static void Task_MoveItemInPocket_HandleInput(u8 taskId) s32 input; u16 itemsAbove; u16 cursorPos; - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) return; input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]); @@ -1447,7 +1447,7 @@ static void Task_ItemContext_FieldOrBattle(u8 taskId) static void Task_FieldItemContextMenuHandleInput(u8 taskId) { s8 input; - if ((u8)MenuHelpers_CallLinkSomething() != TRUE) + if (MenuHelpers_CallLinkSomething() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) diff --git a/src/item_pc.c b/src/item_pc.c index 8ce9cd6a9..8f25e90ad 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -379,7 +379,7 @@ static bool8 ItemPc_DoGfxSetup(void) gMain.state++; break; case 20: - if ((u8)MenuHelpers_CallLinkSomething() != TRUE) + if (MenuHelpers_CallLinkSomething() != TRUE) gMain.state++; break; default: diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 6649a543a..01ea44ae5 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -120,7 +120,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool32 MenuHelpers_CallLinkSomething(void) +bool8 MenuHelpers_CallLinkSomething(void) { if (!MenuHelpers_LinkSomething()) return FALSE; @@ -130,7 +130,7 @@ bool32 MenuHelpers_CallLinkSomething(void) bool8 sub_80BF748(void) { - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) return TRUE; else if (sub_800B270() != TRUE) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index 383f21ae1..f011bc1ec 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -3,7 +3,6 @@ #include "scanline_effect.h" #include "text_window_graphics.h" #include "menu.h" -#include "menu_helpers.h" #include "task.h" #include "overworld.h" #include "help_system.h" @@ -12,6 +11,9 @@ #include "field_fadetransition.h" #include "gba/m4a_internal.h" +// can't include the one in menu_helpers.h since Task_OptionMenu needs bool32 for matching +bool32 MenuHelpers_CallLinkSomething(void); + // Menu items enum { @@ -369,7 +371,7 @@ static void Task_OptionMenu(u8 taskId) sOptionMenuPtr->loadState++; break; case 2: - if (MenuHelpers_CallLinkSomething() == TRUE) + if (((bool32)MenuHelpers_CallLinkSomething()) == TRUE) break; switch (OptionMenu_ProcessInput()) { diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index a271c4edf..0ca6b2633 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3,46 +3,110 @@ #include "pokemon.h" #include "pokemon_summary_screen.h" #include "help_system.h" +#include "task.h" +#include "menu_helpers.h" +#include "link.h" +#include "overworld.h" +#include "constants/songs.h" extern void sub_8138B8C(struct Pokemon * mon); extern void sub_8135C34(void); +extern void sub_813B784(void); +extern void sub_8138414(u8 curPageIndex); +extern void sub_8134BAC(u8 taskId); +extern void sub_8134E84(u8 taskId); +extern void sub_813B3F0(u8 taskId); +extern void sub_813B120(u8, s8); +extern void sub_8137E64(u8 taskId); struct PokemonSummaryScreenData { - u8 temp0[0x3024]; + u16 unk0[0x800]; + u16 unk1000[0x800]; + u16 unk2000[0x800]; + u8 ALIGNED(4) unk3000[7]; + + u8 ALIGNED(4) unk3008; + u8 ALIGNED(4) unk300C; + u8 ALIGNED(4) unk3010; + u8 ALIGNED(4) unk3014; + + u8 ALIGNED(4) unk3018; + u8 ALIGNED(4) unk301C; + + u8 ALIGNED(4) unk3020; + bool32 isEnemyParty; /* 0x3024 */ - u8 temp3028[0x1d8]; + struct PokeSummary { + u8 ALIGNED(4) unk3028[POKEMON_NAME_LENGTH]; + u8 ALIGNED(4) unk3034[POKEMON_NAME_LENGTH + 1]; + + u8 ALIGNED(4) unk3040[OT_NAME_LENGTH + 1]; + u8 ALIGNED(4) unk3048[2][OT_NAME_LENGTH + 1]; + + u8 ALIGNED(4) unk3058[5]; + u8 ALIGNED(4) unk3060[7]; + u8 ALIGNED(4) unk3068[16]; + + u8 ALIGNED(4) unk3078[3]; + u8 ALIGNED(4) unk307C[7]; + u8 ALIGNED(4) unk3084[9]; + u8 ALIGNED(4) unk3090[5][5]; + + u8 ALIGNED(4) unk30AC[5][11]; + u8 ALIGNED(4) unk30E4[5][11]; + u8 ALIGNED(4) unk311C[5][13]; + u8 ALIGNED(4) pssd4[5][5]; + u8 ALIGNED(4) pssd5[5][5]; + + u8 ALIGNED(4) pssd6[9]; + u8 ALIGNED(4) pssd7[9]; + + u8 ALIGNED(4) pssd8[13]; + u8 ALIGNED(4) pssd9[20]; + u8 ALIGNED(4) tempPadRemoveLater[0x2c]; + } summary; u8 ALIGNED(4) isEgg; /* 0x3200 */ u8 ALIGNED(4) isBadEgg; /* 0x3204 */ + u8 ALIGNED(4) mode; /* 0x3208 */ u8 ALIGNED(4) unk320C; /* 0x320C */ u8 ALIGNED(4) lastIndex; /* 0x3210 */ u8 ALIGNED(4) curPageIndex; /* 0x3214 */ u8 ALIGNED(4) unk3218; /* 0x3218 */ u8 ALIGNED(4) isBoxMon; /* 0x321C */ - u8 ALIGNED(4) unk3220; /* 0x3220 */ + u8 ALIGNED(4) unk3220[2]; /* 0x3220 */ + u8 ALIGNED(4) unk3224; /* 0x3224 */ u8 ALIGNED(4) unk3228; /* 0x3228 */ u8 ALIGNED(4) unk322C; /* 0x322C */ u8 ALIGNED(4) unk3230; /* 0x3230 */ + u8 ALIGNED(4) lockMovesFlag; /* 0x3234 */ + u8 ALIGNED(4) unk3238; /* 0x3238 */ u8 ALIGNED(4) unk323C; /* 0x323C */ u8 ALIGNED(4) unk3240; /* 0x3240 */ u8 ALIGNED(4) unk3244; /* 0x3244 */ + u8 ALIGNED(4) unk3248; /* 0x3248 */ + s16 ALIGNED(4) unk324C; /* 0x324C */ - u8 temp3248[0x18]; - u16 ALIGNED(4) unk3260; /* 0x3260 */ + u16 unk3250[5]; /* 0x3250 */ + u16 unk325A[5]; /* 0x325A */ + u8 ALIGNED(4) unk3264; /* 0x3264 */ + u8 ALIGNED(4) unk3268; /* 0x3268 */ - u8 temp3264[0xc]; + u8 ALIGNED(4) unk326C; /* 0x326C */ - u8 ALIGNED(4) unk3270; /* 0x3270 */ + u8 ALIGNED(4) state3270; /* 0x3270 */ u8 ALIGNED(4) unk3274; /* 0x3274 */ u8 ALIGNED(4) unk3278; /* 0x3278 */ u8 ALIGNED(4) unk327C; /* 0x327C */ - - u8 temp3280[0x10]; + u8 ALIGNED(4) unk3280; /* 0x3280 */ + u8 ALIGNED(4) unk3284; /* 0x3284 */ + u8 ALIGNED(4) unk3288; /* 0x3288 */ + u8 ALIGNED(4) unk328C; /* 0x328C */ struct Pokemon currentMon; @@ -54,8 +118,8 @@ struct PokemonSummaryScreenData { MainCallback savedCallback; struct Sprite * markingSprite; - u8 ALIGNED(4) unk3300; /* 0x3300 */ - u8 ALIGNED(4) unk3304; /* 0x3304 */ + u8 ALIGNED(4) unk3300[2]; /* 0x3300 */ + u8 ALIGNED(4) unk3304[3]; /* 0x3304 */ }; struct Struct203B144 { @@ -93,7 +157,8 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, gMonSummaryScreen->lastIndex = lastIdx; gMonSummaryScreen->mode = mode; - switch (gMonSummaryScreen->mode) { + switch (gMonSummaryScreen->mode) + { case PSS_MODE_NORMAL: default: SetHelpContext(HELPCONTEXT_POKEMON_INFO); @@ -116,7 +181,7 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, break; } - gMonSummaryScreen->unk3270 = 0; + gMonSummaryScreen->state3270 = 0; gMonSummaryScreen->unk3274 = 0; gMonSummaryScreen->unk3278 = 0; gMonSummaryScreen->unk327C = 0; @@ -133,15 +198,192 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, gMonSummaryScreen->isEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_IS_EGG); gMonSummaryScreen->isBadEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SANITY_IS_BAD_EGG); - if (gMonSummaryScreen->isBadEgg == TRUE) { + if (gMonSummaryScreen->isBadEgg == TRUE) gMonSummaryScreen->isEgg = TRUE; - } - gMonSummaryScreen->unk3300 = 0xff; + gMonSummaryScreen->unk3300[0] = 0xff; SetMainCallback2(sub_8135C34); } -void ShowSelectMovePokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u16 a4) { +void ShowSelectMovePokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u16 a4) +{ ShowPokemonSummaryScreen(party, cursorPos, lastIdx, savedCallback, PSS_MODE_SELECT_MOVE); - gMonSummaryScreen->unk3260 = a4; + gMonSummaryScreen->unk325A[4] = a4; +} + +u8 sub_813476C(u8 a0) +{ + if (gMonSummaryScreen->unk301C == TRUE && gMonSummaryScreen->unk3224 != a0) + return TRUE; + + return FALSE; +} + +u32 sub_81347A4(u8 a0) +{ + if (gMonSummaryScreen->isEgg) + return FALSE; + + if (gMonSummaryScreen->unk3300[0] != 0xff && gMonSummaryScreen->unk3300[0] == a0) + { + gMonSummaryScreen->unk3300[0] = 0xff; + return TRUE; + } + + if (sub_813476C(a0)) + return FALSE; + + switch (a0) + { + case 1: + if (JOY_NEW(DPAD_RIGHT)) + return TRUE; + + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR && JOY_NEW(R_BUTTON)) + return TRUE; + + break; + case 0: + if (JOY_NEW(DPAD_LEFT)) + return TRUE; + + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR && JOY_NEW(L_BUTTON)) + return TRUE; + + break; + } + + return FALSE; +} + +void sub_8134840(u8 taskId) +{ + switch (gMonSummaryScreen->state3270) { + case PSS_STATE3270_0: + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + gMonSummaryScreen->state3270 = PSS_STATE3270_1; + break; + case PSS_STATE3270_1: + if (!gPaletteFade.active) + { + sub_813B784(); + gMonSummaryScreen->state3270 = PSS_STATE3270_2; + return; + } + + gMonSummaryScreen->state3270 = PSS_STATE3270_1; + break; + case PSS_STATE3270_2: + if (MenuHelpers_CallLinkSomething() == TRUE) + return; + else if (sub_800B270() == TRUE) + return; + else if (FuncIsActiveTask(sub_813B3F0)) + return; + + if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) + { + if (sub_81347A4(1) == TRUE) + { + if (FuncIsActiveTask(sub_8134BAC)) + { + gMonSummaryScreen->unk3300[0] = 1; + return; + } + else if (gMonSummaryScreen->curPageIndex < PSS_PAGE_MOVES) + { + PlaySE(SE_SELECT); + HideBg(0); + gMonSummaryScreen->unk3224 = 1; + sub_8138414(gMonSummaryScreen->curPageIndex); + gMonSummaryScreen->curPageIndex++; + gMonSummaryScreen->state3270 = PSS_STATE3270_3; + } + return; + } + else if (sub_81347A4(0) == TRUE) + { + if (FuncIsActiveTask(sub_8134BAC)) + { + gMonSummaryScreen->unk3300[0] = 0; + return; + } + else if (gMonSummaryScreen->curPageIndex > PSS_PAGE_INFO) + { + PlaySE(SE_SELECT); + HideBg(0); + gMonSummaryScreen->unk3224 = 0; + sub_8138414(gMonSummaryScreen->curPageIndex); + gMonSummaryScreen->curPageIndex--; + gMonSummaryScreen->state3270 = PSS_STATE3270_3; + } + return; + } + } + + if ((!FuncIsActiveTask(sub_8134BAC)) || FuncIsActiveTask(sub_813B3F0)) + { + if (JOY_NEW(DPAD_UP)) + { + sub_813B120(taskId, -1); + return; + } + else if (JOY_NEW(DPAD_DOWN)) + { + sub_813B120(taskId, 1); + return; + } + else if (JOY_NEW(A_BUTTON)) + { + if (gMonSummaryScreen->curPageIndex == PSS_PAGE_INFO) + { + PlaySE(SE_SELECT); + gMonSummaryScreen->state3270 = PSS_STATE3270_4; + } + else if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES) + { + PlaySE(SE_SELECT); + gMonSummaryScreen->unk3224 = 1; + sub_8138414(gMonSummaryScreen->curPageIndex); + gMonSummaryScreen->curPageIndex++; + gMonSummaryScreen->state3270 = PSS_STATE3270_3; + } + return; + } + else if (JOY_NEW(B_BUTTON)) + { + gMonSummaryScreen->state3270 = PSS_STATE3270_4; + } + } + break; + case PSS_STATE3270_3: + if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) + { + CreateTask(sub_8134BAC, 0); + gMonSummaryScreen->state3270 = PSS_STATE3270_2; + } + else + { + gTasks[gMonSummaryScreen->unk3018].func = sub_8134E84; + gMonSummaryScreen->state3270 = PSS_STATE3270_2; + } + break; + case PSS_STATE3270_4: + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gMonSummaryScreen->state3270 = PSS_STATE3270_5; + break; + case PSS_STATE3270_5: + if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE) + return; + else if (sub_800B270() == TRUE) + return; + + gMonSummaryScreen->state3270 = PSS_STATE3270_6; + break; + default: + if (!gPaletteFade.active) + sub_8137E64(taskId); + + break; + } } diff --git a/src/tm_case.c b/src/tm_case.c index 060723949..c7aaa29cc 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -298,7 +298,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void) { while (1) { - if ((u8)MenuHelpers_CallLinkSomething() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE) break; if (DoSetUpTMCaseUI() == TRUE) break; @@ -727,7 +727,7 @@ static void Task_TMCaseMain(u8 taskId) if (!gPaletteFade.active) { - if ((u8)MenuHelpers_CallLinkSomething() != TRUE) + if (MenuHelpers_CallLinkSomething() != TRUE) { input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); @@ -808,7 +808,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId) { s8 input; - if ((u8)MenuHelpers_CallLinkSomething() != TRUE) + if (MenuHelpers_CallLinkSomething() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) |