diff options
-rw-r--r-- | asm/tm_case.s | 178 | ||||
-rw-r--r-- | include/list_menu.h | 2 | ||||
-rw-r--r-- | src/fame_checker.c | 2 | ||||
-rw-r--r-- | src/tm_case.c | 55 |
4 files changed, 56 insertions, 181 deletions
diff --git a/asm/tm_case.s b/asm/tm_case.s index 8f25e43f6..b675019ab 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,184 +5,6 @@ .text - thumb_func_start sub_8132170 -sub_8132170: @ 8132170 - push {r4-r6,lr} - ldr r0, _081321CC @ =gUnknown_203B10C - ldrh r1, [r0, 0x8] - adds r6, r0, 0 - cmp r1, 0x3 - bls _081321C4 - movs r4, 0 - ldrh r0, [r6, 0x8] - subs r0, 0x3 - cmp r4, r0 - bgt _081321C4 - ldrh r1, [r6, 0xA] - ldr r5, _081321D0 @ =gUnknown_203B118 - ldr r2, [r5] - ldrb r0, [r2, 0x5] - adds r1, r0 - ldrb r0, [r2, 0x6] - adds r0, 0x1 - cmp r1, r0 - beq _081321C4 - adds r3, r6, 0 -_0813219A: - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r0, [r3, 0x8] - subs r0, 0x3 - cmp r4, r0 - bgt _081321C4 - ldrh r1, [r6, 0xA] - ldr r2, [r5] - ldrb r0, [r2, 0x5] - adds r1, r0 - ldrb r0, [r2, 0x6] - adds r0, 0x1 - cmp r1, r0 - bne _0813219A -_081321C4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081321CC: .4byte gUnknown_203B10C -_081321D0: .4byte gUnknown_203B118 - thumb_func_end sub_8132170 - - thumb_func_start sub_81321D4 -sub_81321D4: @ 81321D4 - push {lr} - ldr r0, _0813221C @ =gUnknown_203B118 - ldr r0, [r0] - cmp r0, 0 - beq _081321E2 - bl Free -_081321E2: - ldr r0, _08132220 @ =gUnknown_203B120 - ldr r0, [r0] - cmp r0, 0 - beq _081321EE - bl Free -_081321EE: - ldr r0, _08132224 @ =gUnknown_203B124 - ldr r0, [r0] - cmp r0, 0 - beq _081321FA - bl Free -_081321FA: - ldr r0, _08132228 @ =gUnknown_203B128 - ldr r0, [r0] - cmp r0, 0 - beq _08132206 - bl Free -_08132206: - ldr r0, _0813222C @ =gUnknown_203B12C - ldr r0, [r0] - cmp r0, 0 - beq _08132212 - bl Free -_08132212: - bl FreeAllWindowBuffers - pop {r0} - bx r0 - .align 2, 0 -_0813221C: .4byte gUnknown_203B118 -_08132220: .4byte gUnknown_203B120 -_08132224: .4byte gUnknown_203B124 -_08132228: .4byte gUnknown_203B128 -_0813222C: .4byte gUnknown_203B12C - thumb_func_end sub_81321D4 - - thumb_func_start sub_8132230 -sub_8132230: @ 8132230 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08132264 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08132268 @ =sub_813226C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132264: .4byte gTasks -_08132268: .4byte sub_813226C - thumb_func_end sub_8132230 - - thumb_func_start sub_813226C -sub_813226C: @ 813226C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _081322A4 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _081322A8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081322CC - ldrb r0, [r2] - ldr r4, _081322AC @ =gUnknown_203B10C + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl sub_810713C - ldr r0, _081322B0 @ =gUnknown_203B118 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _081322B4 - bl SetMainCallback2 - b _081322BE - .align 2, 0 -_081322A4: .4byte gTasks+0x8 -_081322A8: .4byte gPaletteFade -_081322AC: .4byte gUnknown_203B10C + 10 -_081322B0: .4byte gUnknown_203B118 -_081322B4: - adds r0, r4, 0 - subs r0, 0xA - ldr r0, [r0] - bl SetMainCallback2 -_081322BE: - bl sub_813208C - bl sub_81321D4 - adds r0, r5, 0 - bl DestroyTask -_081322CC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813226C - thumb_func_start sub_81322D4 sub_81322D4: @ 81322D4 push {r4-r7,lr} diff --git a/include/list_menu.h b/include/list_menu.h index 22be687be..56106610d 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -56,7 +56,7 @@ u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); s32 ListMenuHandleInput(u8 id); void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); -void sub_810713C(u8, u8, u8); +void sub_810713C(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); #endif //GUARD_LIST_MENU_H diff --git a/src/fame_checker.c b/src/fame_checker.c index 29b888a32..e98795909 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeQuestionMarkSpriteResources(); FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->listMenuTaskId, 0, 0); + sub_810713C(sFameCheckerData->listMenuTaskId, NULL, NULL); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); diff --git a/src/tm_case.c b/src/tm_case.c index 60f9c5bcb..bc91de20f 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -32,7 +32,7 @@ struct UnkStruct_203B10C struct UnkStruct_203B118 { - u32 unk_00; + void (* unk_00)(void); u8 unk_04; u8 unk_05; u8 unk_06; @@ -76,6 +76,7 @@ void sub_8132018(void); void sub_81320BC(void); void sub_8132120(void); void sub_8132170(void); +void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); void sub_8132F20(u8 taskId); void sub_8133244(void); @@ -512,3 +513,55 @@ void sub_8132120(void) gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; } } + +void sub_8132170(void) +{ + u8 i; + if (gUnknown_203B10C.unk_08 > 3) + { + for (i = 0; i <= gUnknown_203B10C.unk_08 - 3 && gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 != gUnknown_203B118->unk_06 + 1; i++) + { + do {} while (0); + gUnknown_203B10C.unk_08--; + gUnknown_203B10C.unk_0a++; + } + } +} + +void sub_81321D4(void) +{ + if (gUnknown_203B118 != NULL) + Free(gUnknown_203B118); + if (gUnknown_203B120 != NULL) + Free(gUnknown_203B120); + if (gUnknown_203B124 != NULL) + Free(gUnknown_203B124); + if (gUnknown_203B128 != NULL) + Free(gUnknown_203B128); + if (gUnknown_203B12C != NULL) + Free(gUnknown_203B12C); + FreeAllWindowBuffers(); +} + +void sub_8132230(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_813226C; +} + +void sub_813226C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + if (gUnknown_203B118->unk_00 != NULL) + SetMainCallback2(gUnknown_203B118->unk_00); + else + SetMainCallback2(gUnknown_203B10C.unk_00); + sub_813208C(); + sub_81321D4(); + DestroyTask(taskId); + } +} |