summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tm_case.s331
-rw-r--r--include/item_menu.h1
-rw-r--r--include/teachy_tv.h1
-rw-r--r--src/tm_case.c131
4 files changed, 133 insertions, 331 deletions
diff --git a/asm/tm_case.s b/asm/tm_case.s
index 94ae0db6c..d175ace3d 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -5,337 +5,6 @@
.text
- thumb_func_start sub_8132F60
-sub_8132F60: @ 8132F60
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08132FA4 @ =gTasks+0x8
- adds r6, r0, r1
- ldr r0, _08132FA8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08132F8E
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- cmp r0, 0x14
- bgt _08132F8E
- movs r0, 0x15
- strh r0, [r6, 0x10]
- bl sub_815AC20
-_08132F8E:
- movs r3, 0x10
- ldrsh r0, [r6, r3]
- cmp r0, 0x15
- bls _08132F98
- b _08133210
-_08132F98:
- lsls r0, 2
- ldr r1, _08132FAC @ =_08132FB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08132FA4: .4byte gTasks+0x8
-_08132FA8: .4byte gMain
-_08132FAC: .4byte _08132FB0
- .align 2, 0
-_08132FB0:
- .4byte _08133008
- .4byte _08133024
- .4byte _08133050
- .4byte _08133050
- .4byte _08133050
- .4byte _08133080
- .4byte _08133080
- .4byte _08133080
- .4byte _081330B0
- .4byte _081330E0
- .4byte _081330F4
- .4byte _08133024
- .4byte _08133050
- .4byte _08133050
- .4byte _08133050
- .4byte _08133080
- .4byte _08133080
- .4byte _08133080
- .4byte _0813312C
- .4byte _081330E0
- .4byte _0813315C
- .4byte _08133170
-_08133008:
- ldr r0, _08133020 @ =0xffff8405
- movs r1, 0
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x6
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl sub_8131F64
- b _081331EA
- .align 2, 0
-_08133020: .4byte 0xffff8405
-_08133024:
- ldr r0, _0813304C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08133036
- b _08133232
-_08133036:
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bgt _08133046
- b _08133232
-_08133046:
- strh r1, [r6, 0x12]
- b _081331EA
- .align 2, 0
-_0813304C: .4byte gPaletteFade
-_08133050:
- movs r0, 0x12
- ldrsh r1, [r6, r0]
- cmp r1, 0
- bne _08133066
- ldr r0, _0813307C @ =gMain
- strh r1, [r0, 0x2E]
- movs r1, 0x80
- strh r1, [r0, 0x30]
- ldrb r0, [r6]
- bl ListMenuHandleInput
-_08133066:
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bgt _08133076
- b _08133232
-_08133076:
- movs r0, 0
- strh r0, [r6, 0x12]
- b _081331EA
- .align 2, 0
-_0813307C: .4byte gMain
-_08133080:
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- cmp r1, 0
- bne _08133096
- ldr r0, _081330AC @ =gMain
- strh r1, [r0, 0x2E]
- movs r1, 0x40
- strh r1, [r0, 0x30]
- ldrb r0, [r6]
- bl ListMenuHandleInput
-_08133096:
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bgt _081330A6
- b _08133232
-_081330A6:
- movs r0, 0
- strh r0, [r6, 0x12]
- b _081331EA
- .align 2, 0
-_081330AC: .4byte gMain
-_081330B0:
- movs r0, 0x1
- bl sub_8131F64
- ldr r2, _081330D4 @ =gUnknown_841C587
- adds r0, r4, 0
- movs r1, 0x4
- movs r3, 0
- bl sub_813337C
- ldr r1, _081330D8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081330DC @ =sub_8132F60
- str r1, [r0]
- b _081331EA
- .align 2, 0
-_081330D4: .4byte gUnknown_841C587
-_081330D8: .4byte gTasks
-_081330DC: .4byte sub_8132F60
-_081330E0:
- bl RunTextPrinters
- movs r0, 0x6
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- beq _081330F2
- b _08133232
-_081330F2:
- b _081331EA
-_081330F4:
- ldr r0, _08133128 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08133102
- b _08133232
-_08133102:
- movs r0, 0
- bl sub_8131F64
- movs r0, 0x80
- lsls r0, 3
- movs r1, 0
- str r1, [sp]
- movs r2, 0x6
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x6
- movs r1, 0
- bl sub_810F260
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- b _081331EA
- .align 2, 0
-_08133128: .4byte gMain
-_0813312C:
- movs r0, 0x1
- bl sub_8131F64
- ldr r2, _08133150 @ =gUnknown_841C693
- adds r0, r4, 0
- movs r1, 0x4
- movs r3, 0
- bl sub_813337C
- ldr r1, _08133154 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08133158 @ =sub_8132F60
- str r1, [r0]
- b _081331EA
- .align 2, 0
-_08133150: .4byte gUnknown_841C693
-_08133154: .4byte gTasks
-_08133158: .4byte sub_8132F60
-_0813315C:
- ldr r0, _0813316C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08133232
- b _081331EA
- .align 2, 0
-_0813316C: .4byte gMain
-_08133170:
- ldr r0, _081331F4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- bne _08133232
- ldr r5, _081331F8 @ =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r1, _081331FC @ =0x00000464
- adds r0, r1
- ldr r4, _08133200 @ =gUnknown_203B11C
- ldr r1, [r4]
- movs r2, 0xE8
- bl memcpy
- ldr r0, [r5]
- movs r3, 0xEE
- lsls r3, 2
- adds r0, r3
- ldr r1, [r4]
- adds r1, 0xE8
- movs r2, 0x78
- bl memcpy
- ldrb r0, [r6]
- movs r1, 0
- movs r2, 0
- bl sub_810713C
- ldr r2, _08133204 @ =gUnknown_203B10C
- ldr r0, [r4]
- movs r3, 0xB0
- lsls r3, 1
- adds r1, r0, r3
- ldrh r1, [r1]
- strh r1, [r2, 0x8]
- adds r3, 0x2
- adds r1, r0, r3
- ldrh r1, [r1]
- strh r1, [r2, 0xA]
- bl Free
- ldr r0, _08133208 @ =gPlttBufferFaded
- ldr r1, _0813320C @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 1
- bl CpuFastSet
- bl sub_8108CF0
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- str r7, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_081331EA:
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
- b _08133232
- .align 2, 0
-_081331F4: .4byte gPaletteFade
-_081331F8: .4byte gSaveBlock1Ptr
-_081331FC: .4byte 0x00000464
-_08133200: .4byte gUnknown_203B11C
-_08133204: .4byte gUnknown_203B10C
-_08133208: .4byte gPlttBufferFaded
-_0813320C: .4byte gPlttBufferUnfaded
-_08133210:
- ldr r0, _0813323C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08133232
- ldr r0, _08133240 @ =gUnknown_203B10C
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_813208C
- bl sub_81321D4
- adds r0, r4, 0
- bl DestroyTask
-_08133232:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813323C: .4byte gPaletteFade
-_08133240: .4byte gUnknown_203B10C
- thumb_func_end sub_8132F60
-
thumb_func_start sub_8133244
sub_8133244: @ 8133244
push {r4,lr}
diff --git a/include/item_menu.h b/include/item_menu.h
index a6128b9fb..9ebe3918a 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -12,6 +12,7 @@ extern u16 gSpecialVar_ItemId;
// Exported ROM declarations
void sub_81AAC50(void);
void sub_81AAC70(void);
+void sub_8108CF0(void);
void UseFameCheckerFromMenu(void);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
index 3eeaa3a98..382ad117d 100644
--- a/include/teachy_tv.h
+++ b/include/teachy_tv.h
@@ -2,5 +2,6 @@
#define GUARD_TEACHY_TV_H
void sub_815ABFC(void);
+void sub_815AC20(void);
#endif //GUARD_TEACHY_TV_H
diff --git a/src/tm_case.c b/src/tm_case.c
index b63260aaf..0f709afea 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -131,6 +131,8 @@ extern const u8 gUnknown_84168F1[];
extern const u8 gUnknown_8416911[];
extern const u8 gUnknown_8416936[];
extern const u8 gUnknown_8416959[];
+extern const u8 gUnknown_841C587[];
+extern const u8 gUnknown_841C693[];
// my rodata
extern const struct BgTemplate gUnknown_8463134[3];
@@ -1043,3 +1045,132 @@ void sub_8132F20(u8 taskId)
gTasks[taskId].func = sub_8132F60;
}
}
+
+void sub_8132F60(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (JOY_NEW(B_BUTTON))
+ {
+ if (data[8] < 21)
+ {
+ data[8] = 21;
+ sub_815AC20();
+ }
+ }
+
+ switch (data[8])
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFF8405, 4, 0, 6, 0);
+ sub_8131F64(1);
+ data[8]++;
+ break;
+ case 1:
+ case 11:
+ if (!gPaletteFade.active)
+ {
+ data[9]++;
+ if (data[9] > 0x65)
+ {
+ data[9] = 0;
+ data[8]++;
+ }
+ }
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 12:
+ case 13:
+ case 14:
+ if (data[9] == 0)
+ {
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_DOWN;
+ ListMenuHandleInput(data[0]);
+ }
+ data[9]++;
+ if (data[9] > 0x65)
+ {
+ data[9] = 0;
+ data[8]++;
+ }
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 15:
+ case 16:
+ case 17:
+ if (data[9] == 0)
+ {
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = DPAD_UP;
+ ListMenuHandleInput(data[0]);
+ }
+ data[9]++;
+ if (data[9] > 0x65)
+ {
+ data[9] = 0;
+ data[8]++;
+ }
+ break;
+ case 8:
+ sub_8131F64(1);
+ sub_813337C(taskId, 4, gUnknown_841C587, 0);
+ gTasks[taskId].func = sub_8132F60;
+ data[8]++;
+ break;
+ case 9:
+ case 19:
+ RunTextPrinters();
+ if (!IsTextPrinterActive(6))
+ data[8]++;
+ break;
+ case 10:
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ sub_8131F64(0);
+ BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0);
+ sub_810F260(6, 0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ data[8]++;
+ }
+ break;
+ case 18:
+ sub_8131F64(1);
+ sub_813337C(taskId, 4, gUnknown_841C693, 0);
+ gTasks[taskId].func = sub_8132F60;
+ data[8]++;
+ break;
+ case 20:
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ data[8]++;
+ break;
+ case 21:
+ if (!gPaletteFade.active)
+ {
+ memcpy(gSaveBlock1Ptr->bagPocket_TMHM, gUnknown_203B11C->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
+ memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, gUnknown_203B11C->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
+ sub_810713C(data[0], NULL, NULL);
+ gUnknown_203B10C.unk_08 = gUnknown_203B11C->unk_160;
+ gUnknown_203B10C.unk_0a = gUnknown_203B11C->unk_162;
+ Free(gUnknown_203B11C);
+ CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ sub_8108CF0();
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
+ data[8]++;
+ }
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gUnknown_203B10C.unk_00);
+ sub_813208C();
+ sub_81321D4();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}