summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tm_case.s178
-rw-r--r--include/list_menu.h2
-rw-r--r--src/fame_checker.c2
-rw-r--r--src/tm_case.c55
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);
+ }
+}