diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | asm/berry_pouch.s | 6 | ||||
-rw-r--r-- | asm/field_map_obj.s | 6 | ||||
-rw-r--r-- | asm/field_specials.s | 2 | ||||
-rw-r--r-- | asm/item_menu.s | 26 | ||||
-rw-r--r-- | asm/item_pc.s | 10 | ||||
-rw-r--r-- | asm/learn_move.s | 2 | ||||
-rw-r--r-- | asm/list_menu.s | 6 | ||||
-rw-r--r-- | asm/menu_helpers.s | 14 | ||||
-rw-r--r-- | asm/naming_screen.s | 2 | ||||
-rw-r--r-- | asm/overworld.s | 2 | ||||
-rw-r--r-- | asm/party_menu.s | 8 | ||||
-rw-r--r-- | asm/player_pc.s | 2 | ||||
-rw-r--r-- | asm/pokedex_screen.s | 12 | ||||
-rw-r--r-- | asm/shop.s | 6 | ||||
-rw-r--r-- | asm/teachy_tv.s | 714 | ||||
-rw-r--r-- | include/fame_checker.h | 2 | ||||
-rw-r--r-- | include/field_map_obj.h | 2 | ||||
-rw-r--r-- | include/global.fieldmap.h | 4 | ||||
-rw-r--r-- | include/list_menu.h | 4 | ||||
-rw-r--r-- | include/menu_helpers.h | 4 | ||||
-rw-r--r-- | include/teachy_tv.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/fame_checker.c | 6 | ||||
-rw-r--r-- | src/teachy_tv.c | 346 | ||||
-rw-r--r-- | src/tm_case.c | 8 | ||||
-rw-r--r-- | sym_ewram.txt | 5 |
27 files changed, 440 insertions, 763 deletions
diff --git a/.gitignore b/.gitignore index da2cb317c..fdc668785 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ ld_script_sapphire.txt *.id2 *.nam *.til +.fuse* *.ld tags types_*.taghl diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 7813d1ade..556cccbe0 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -183,7 +183,7 @@ _0813CE84: .4byte _0813CFB0 .4byte _0813CFBE _0813CED0: - bl sub_80BF768 + bl VblankHblankHandlerSetZero bl clear_scheduled_bg_copies_to_vram b _0813CFD2 _0813CEDA: @@ -386,7 +386,7 @@ _0813D078: .4byte gUnknown_203F370 thumb_func_start sub_813D07C sub_813D07C: @ 813D07C push {r4,lr} - bl sub_80BF7C8 + bl InitBgReg ldr r4, _0813D0DC @ =gUnknown_203F36C ldr r0, [r4] adds r0, 0xC @@ -1694,7 +1694,7 @@ _0813DA9E: ldr r4, _0813DAE0 @ =gUnknown_203F37A subs r2, r4, 0x2 adds r1, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r0, _0813DAE4 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x4 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 77df1274b..1275f7471 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1550,8 +1550,8 @@ MakeObjectTemplateFromFieldObjectTemplate: @ 805E960 bx r0 thumb_func_end MakeObjectTemplateFromFieldObjectTemplate - thumb_func_start AddPseudoFieldObject -AddPseudoFieldObject: @ 805E978 + thumb_func_start AddPseudoEventObject +AddPseudoEventObject: @ 805E978 push {r4-r6,lr} sub sp, 0x1C ldr r4, [sp, 0x2C] @@ -1612,7 +1612,7 @@ _0805E9E4: .align 2, 0 _0805E9F0: .4byte 0x0000ffff _0805E9F4: .4byte gSprites - thumb_func_end AddPseudoFieldObject + thumb_func_end AddPseudoEventObject thumb_func_start sprite_new sprite_new: @ 805E9F8 diff --git a/asm/field_specials.s b/asm/field_specials.s index d1302c8d2..7a0221941 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -2753,7 +2753,7 @@ sub_80CBADC: @ 80CBADC ldr r4, _080CBB20 @ =gUnknown_3005378 adds r1, r4, 0 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r1, _080CBB24 @ =gUnknown_2039A18 ldrh r0, [r4] strh r0, [r1] diff --git a/asm/item_menu.s b/asm/item_menu.s index 53c92a8d3..edb342d6b 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -253,7 +253,7 @@ _08107F60: .4byte _081080D8 .4byte _081080DE _08107FB0: - bl sub_80BF768 + bl VblankHblankHandlerSetZero bl clear_scheduled_bg_copies_to_vram b _08108104 _08107FBA: @@ -520,7 +520,7 @@ _081081CC: .4byte gUnknown_203AD1C thumb_func_start sub_81081D0 sub_81081D0: @ 81081D0 push {r4,r5,lr} - bl sub_80BF7C8 + bl InitBgReg ldr r5, _08108230 @ =gUnknown_203AD14 movs r4, 0x80 lsls r4, 4 @@ -2313,7 +2313,7 @@ _08108FA0: adds r4, 0x2 mov r1, sp adds r2, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r0, sp ldrh r1, [r0] ldrh r0, [r4] @@ -2353,7 +2353,7 @@ _08108FE4: adds r3, r5, 0 adds r3, 0x8 adds r2, r3 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow movs r0, 0x2 negs r0, r0 cmp r4, r0 @@ -2830,7 +2830,7 @@ sub_81093B8: @ 81093B8 mov r2, sp adds r2, 0x16 add r1, sp, 0x14 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r2, r8 ldrb r0, [r2] movs r1, 0x10 @@ -2942,7 +2942,7 @@ sub_81094B0: @ 81094B0 adds r1, r2, r1 adds r3, 0x8 adds r2, r3 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldrb r0, [r4] bl ListMenuGetYCoordForPrintingArrowCursor adds r1, r0, 0 @@ -2967,7 +2967,7 @@ sub_81094B0: @ 81094B0 adds r4, 0x2 mov r1, sp adds r2, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r0, sp ldrh r1, [r0] ldrh r0, [r4] @@ -3001,7 +3001,7 @@ _08109558: adds r4, 0x2 mov r1, sp adds r2, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r0, sp ldrh r1, [r0] ldrh r0, [r4] @@ -4573,7 +4573,7 @@ sub_810A288: @ 810A288 adds r6, 0x2 mov r1, sp adds r2, r6, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r0, sp ldrh r0, [r0] ldrh r1, [r6] @@ -6342,11 +6342,11 @@ sub_810B108: @ 810B108 beq _0810B160 cmp r4, 0x8 beq _0810B16C - ldr r2, _0810B15C @ =CB2_ReturnToTeachyTV + ldr r2, _0810B15C @ =sub_815ABFC adds r0, r4, 0 b _0810B170 .align 2, 0 -_0810B15C: .4byte CB2_ReturnToTeachyTV +_0810B15C: .4byte sub_815ABFC _0810B160: ldr r2, _0810B168 @ =sub_8030AEC movs r0, 0x7 @@ -6386,7 +6386,7 @@ _0810B19C: bl sub_815AC20 ldr r0, _0810B1C4 @ =gUnknown_203AD10 ldr r1, [r0] - ldr r0, _0810B1C8 @ =CB2_ReturnToTeachyTV + ldr r0, _0810B1C8 @ =sub_815ABFC str r0, [r1] ldr r1, _0810B1CC @ =gTasks lsls r0, r4, 2 @@ -6402,7 +6402,7 @@ _0810B1BC: bx r1 .align 2, 0 _0810B1C4: .4byte gUnknown_203AD10 -_0810B1C8: .4byte CB2_ReturnToTeachyTV +_0810B1C8: .4byte sub_815ABFC _0810B1CC: .4byte gTasks _0810B1D0: .4byte sub_810B070 thumb_func_end sub_810B180 diff --git a/asm/item_pc.s b/asm/item_pc.s index 87e64619e..93ca91ff9 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -158,7 +158,7 @@ _0810D4E8: .4byte _0810D630 .4byte _0810D668 _0810D53C: - bl sub_80BF768 + bl VblankHblankHandlerSetZero bl clear_scheduled_bg_copies_to_vram b _0810D674 _0810D546: @@ -389,7 +389,7 @@ _0810D718: .4byte gUnknown_203ADCC thumb_func_start sub_810D71C sub_810D71C: @ 810D71C push {r4,r5,lr} - bl sub_80BF7C8 + bl InitBgReg ldr r5, _0810D77C @ =gUnknown_203ADC0 movs r4, 0x80 lsls r4, 4 @@ -1403,7 +1403,7 @@ sub_810DEA0: @ 810DEA0 adds r4, 0x2 mov r1, sp adds r2, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow mov r0, sp ldrh r1, [r0] ldrh r0, [r4] @@ -1436,7 +1436,7 @@ _0810DF20: ldrb r0, [r6] ldr r1, _0810DF44 @ =gUnknown_203ADD0 adds r2, r1, 0x2 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow movs r0, 0x2 negs r0, r0 cmp r4, r0 @@ -1630,7 +1630,7 @@ sub_810E0B4: @ 810E0B4 ldr r7, _0810E120 @ =gUnknown_203ADD0 adds r2, r7, 0x2 adds r1, r7, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow movs r5, 0x20 negs r5, r5 ldrb r0, [r4] diff --git a/asm/learn_move.s b/asm/learn_move.s index 47b5c74fe..e9041a9b2 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -736,7 +736,7 @@ _080E4C7E: adds r1, r2, r3 ldr r6, _080E4CD4 @ =0x00000a6a adds r2, r6 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow bl FreeAllWindowBuffers ldr r0, _080E4CD8 @ =gPlayerParty ldr r5, [r7] diff --git a/asm/list_menu.s b/asm/list_menu.s index 3a215f799..9558ea323 100644 --- a/asm/list_menu.s +++ b/asm/list_menu.s @@ -563,8 +563,8 @@ _081072CA: _081072D0: .4byte gTasks+0x8 thumb_func_end sub_81072AC - thumb_func_start get_coro_args_x18_x1A -get_coro_args_x18_x1A: @ 81072D4 + thumb_func_start ListMenuGetScrollAndRow +ListMenuGetScrollAndRow: @ 81072D4 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -588,7 +588,7 @@ _081072F6: bx r0 .align 2, 0 _081072FC: .4byte gTasks+0x8 - thumb_func_end get_coro_args_x18_x1A + thumb_func_end ListMenuGetScrollAndRow thumb_func_start ListMenuGetYCoordForPrintingArrowCursor ListMenuGetYCoordForPrintingArrowCursor: @ 8107300 diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 69567e0ca..7984a32c4 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -418,8 +418,8 @@ _080BF764: bx r1 thumb_func_end sub_80BF748 - thumb_func_start sub_80BF768 -sub_80BF768: @ 80BF768 + thumb_func_start VblankHblankHandlerSetZero +VblankHblankHandlerSetZero: @ 80BF768 push {lr} movs r0, 0 bl SetVBlankCallback @@ -427,13 +427,13 @@ sub_80BF768: @ 80BF768 bl SetHBlankCallback pop {r0} bx r0 - thumb_func_end sub_80BF768 + thumb_func_end VblankHblankHandlerSetZero thumb_func_start sub_80BF77C sub_80BF77C: @ 80BF77C push {r4,lr} sub sp, 0xC - bl sub_80BF7C8 + bl InitBgReg mov r1, sp movs r0, 0 strh r0, [r1] @@ -465,8 +465,8 @@ _080BF7C0: .4byte 0x05000100 _080BF7C4: .4byte 0x01000200 thumb_func_end sub_80BF77C - thumb_func_start sub_80BF7C8 -sub_80BF7C8: @ 80BF7C8 + thumb_func_start InitBgReg +InitBgReg: @ 80BF7C8 push {lr} movs r0, 0 movs r1, 0 @@ -517,7 +517,7 @@ sub_80BF7C8: @ 80BF7C8 bl ChangeBgY pop {r0} bx r0 - thumb_func_end sub_80BF7C8 + thumb_func_end InitBgReg thumb_func_start sub_80BF848 sub_80BF848: @ 80BF848 diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 36c3b1a75..ef692b052 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -2789,7 +2789,7 @@ sub_809EF54: @ 809EF54 str r2, [sp] movs r2, 0x38 movs r3, 0x25 - bl AddPseudoFieldObject + bl AddPseudoEventObject adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/overworld.s b/asm/overworld.s index 103ed2c46..87f146d39 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -7888,7 +7888,7 @@ _080588C6: movs r2, 0 str r2, [sp] movs r3, 0 - bl AddPseudoFieldObject + bl AddPseudoEventObject strb r0, [r4, 0x4] ldrb r1, [r4, 0x4] lsls r0, r1, 4 diff --git a/asm/party_menu.s b/asm/party_menu.s index bcf65c35b..89feaa035 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -276,7 +276,7 @@ _0811EC24: .4byte _0811EDD0 .4byte _0811EDDE _0811EC80: - bl sub_80BF768 + bl VblankHblankHandlerSetZero bl sub_80BF77C bl clear_scheduled_bg_copies_to_vram b _0811EDFC @@ -565,7 +565,7 @@ _0811EEC8: .4byte gUnknown_203B0B8 thumb_func_start sub_811EECC sub_811EECC: @ 811EECC push {r4,r5,lr} - bl sub_80BF7C8 + bl InitBgReg ldr r5, _0811EF34 @ =gUnknown_203B0BC movs r4, 0x80 lsls r4, 4 @@ -4879,12 +4879,12 @@ sub_8120FB0: @ 8120FB0 bl FreeRestoreBattleData bl LoadPlayerParty bl sub_815AC20 - ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV + ldr r0, _08120FC8 @ =sub_815ABFC bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_08120FC8: .4byte CB2_ReturnToTeachyTV +_08120FC8: .4byte sub_815ABFC thumb_func_end sub_8120FB0 thumb_func_start sub_8120FCC diff --git a/asm/player_pc.s b/asm/player_pc.s index b5149a435..cb6c9f9d0 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -1142,7 +1142,7 @@ sub_80EBF40: @ 80EBF40 mov r8, r1 adds r1, r7, 0 mov r2, r8 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow movs r0, 0x2 negs r0, r0 cmp r6, r0 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 92a6b5f08..80cc1ab5d 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -593,7 +593,7 @@ _081029D0: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow bl sub_806E25C cmp r0, 0 beq _081029F4 @@ -627,7 +627,7 @@ _08102A14: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r0, _08102A4C @ =gMain ldrh r1, [r0, 0x2E] movs r3, 0x1 @@ -1367,7 +1367,7 @@ _0810307C: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow bl sub_81039F0 ldr r1, [r4] adds r1, 0x60 @@ -1385,7 +1385,7 @@ _08103098: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r0, _081030F0 @ =gMain ldrh r1, [r0, 0x2E] movs r3, 0x1 @@ -1687,7 +1687,7 @@ _08103344: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow bl sub_81039F0 ldr r1, [r4] adds r1, 0x60 @@ -1706,7 +1706,7 @@ _08103362: ldrb r0, [r1, 0x17] adds r1, 0x62 movs r2, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r0, _081033C4 @ =gMain ldrh r1, [r0, 0x2E] movs r2, 0x1 diff --git a/asm/shop.s b/asm/shop.s index 33f6bd225..d7188e66e 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -515,7 +515,7 @@ _0809AEA0: .4byte gTasks _0809AEA4: .4byte sub_809AE00 _0809AEA8: .4byte sub_809ADE4 _0809AEAC: - bl sub_80BF768 + bl VblankHblankHandlerSetZero str r4, [sp, 0x8] movs r1, 0xE0 lsls r1, 19 @@ -2017,7 +2017,7 @@ _0809BA56: str r0, [sp] adds r0, r4, 0 ldr r1, _0809BAF4 @ =SpriteCallbackDummy - bl AddPseudoFieldObject + bl AddPseudoEventObject lsls r0, 24 lsrs r0, 24 lsls r2, r0, 4 @@ -2170,7 +2170,7 @@ sub_809BBC0: @ 809BBC0 ldr r7, _0809BC08 @ =gUnknown_2039942 subs r2, r7, 0x2 adds r1, r7, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow movs r0, 0x2 negs r0, r0 cmp r4, r0 diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 418da67dd..f19915d6e 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -5,676 +5,8 @@ .text - thumb_func_start sub_815AB94 -sub_815AB94: @ 815AB94 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl do_scheduled_bg_tilemap_copies_to_vram - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_815AB94 - - thumb_func_start sub_815ABB0 -sub_815ABB0: @ 815ABB0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_815ABB0 - - thumb_func_start sub_815ABC4 -sub_815ABC4: @ 815ABC4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r3, _0815ABF4 @ =gTeachyTV_StaticResources - movs r4, 0 - strb r2, [r3, 0x4] - str r1, [r3] - cmp r2, 0 - bne _0815ABE0 - movs r0, 0 - strh r4, [r3, 0x6] - strh r4, [r3, 0x8] - strb r0, [r3, 0x5] -_0815ABE0: - cmp r2, 0x1 - bne _0815ABE6 - strb r4, [r3, 0x4] -_0815ABE6: - ldr r0, _0815ABF8 @ =sub_815AC2C - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815ABF4: .4byte gTeachyTV_StaticResources -_0815ABF8: .4byte sub_815AC2C - thumb_func_end sub_815ABC4 - - thumb_func_start CB2_ReturnToTeachyTV -CB2_ReturnToTeachyTV: @ 815ABFC - push {lr} - ldr r1, _0815AC10 @ =gTeachyTV_StaticResources - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - bne _0815AC14 - ldr r1, [r1] - movs r0, 0x1 - bl sub_815ABC4 - b _0815AC1C - .align 2, 0 -_0815AC10: .4byte gTeachyTV_StaticResources -_0815AC14: - ldr r1, [r1] - movs r0, 0x2 - bl sub_815ABC4 -_0815AC1C: - pop {r0} - bx r0 - thumb_func_end CB2_ReturnToTeachyTV - - thumb_func_start sub_815AC20 -sub_815AC20: @ 815AC20 - ldr r1, _0815AC28 @ =gTeachyTV_StaticResources - movs r0, 0x1 - strb r0, [r1, 0x4] - bx lr - .align 2, 0 -_0815AC28: .4byte gTeachyTV_StaticResources - thumb_func_end sub_815AC20 - - thumb_func_start sub_815AC2C -sub_815AC2C: @ 815AC2C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0815AC44 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r6, r0, r1 - ldrb r5, [r6] - cmp r5, 0 - beq _0815AC48 - cmp r5, 0x1 - beq _0815AC9C - b _0815AD6E - .align 2, 0 -_0815AC44: .4byte gMain -_0815AC48: - ldr r4, _0815AC90 @ =gUnknown_203F450 - ldr r0, _0815AC94 @ =0x00004008 - bl AllocZeroed - str r0, [r4] - str r5, [r0] - ldr r1, _0815AC98 @ =0x00004006 - adds r0, r1 - strb r5, [r0] - ldr r0, [r4] - adds r1, 0x1 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - bl sub_80BF768 - bl clear_scheduled_bg_copies_to_vram - bl ScanlineEffect_Stop - bl FreeAllSpritePalettes - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl sub_815AD88 - bl sub_815AE38 - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _0815AD6E - .align 2, 0 -_0815AC90: .4byte gUnknown_203F450 -_0815AC94: .4byte 0x00004008 -_0815AC98: .4byte 0x00004006 -_0815AC9C: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0815AD6E - bl sub_815AEB8 - bl sub_815AFEC - ldr r0, _0815ACE0 @ =gTeachyTV_StaticResources - ldrb r0, [r0, 0x4] - cmp r0, 0x2 - bne _0815ACEC - ldr r0, _0815ACE4 @ =sub_815BA54 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_815B014 - ldr r2, _0815ACE8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xA] - adds r0, r5, 0 - bl sub_815B118 - b _0815AD26 - .align 2, 0 -_0815ACE0: .4byte gTeachyTV_StaticResources -_0815ACE4: .4byte sub_815BA54 -_0815ACE8: .4byte gTasks -_0815ACEC: - ldr r0, _0815AD78 @ =sub_815B2C0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_815AEE8 - ldr r1, _0815AD7C @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x8] - bl sub_815B014 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - bl sub_815AF5C - movs r0, 0xAD - lsls r0, 1 - bl PlayNewMapMusic - bl sub_815B094 -_0815AD26: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x3 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x9 - bl sub_812B1E0 - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0815AD80 @ =sub_815ABB0 - bl SetVBlankCallback - ldr r0, _0815AD84 @ =sub_815AB94 - bl SetMainCallback2 -_0815AD6E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815AD78: .4byte sub_815B2C0 -_0815AD7C: .4byte gTasks -_0815AD80: .4byte sub_815ABB0 -_0815AD84: .4byte sub_815AB94 - thumb_func_end sub_815AC2C - - thumb_func_start sub_815AD88 -sub_815AD88: @ 815AD88 - push {r4,lr} - bl sub_80BF7C8 - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0815AE20 @ =gUnknown_84792E0 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r4, _0815AE24 @ =gUnknown_203F450 - ldr r1, [r4] - adds r1, 0x4 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0815AE28 @ =0x00001004 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0815AE2C @ =0x00002004 - adds r1, r0 - movs r0, 0x3 - bl SetBgTilemapBuffer - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x3 - movs r2, 0x2 - bl ChangeBgX - movs r1, 0xA0 - lsls r1, 6 - movs r0, 0x3 - movs r2, 0x1 - bl ChangeBgY - ldr r0, [r4] - ldr r1, _0815AE30 @ =0x00004004 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _0815AE34 @ =0x00004005 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815AE20: .4byte gUnknown_84792E0 -_0815AE24: .4byte gUnknown_203F450 -_0815AE28: .4byte 0x00001004 -_0815AE2C: .4byte 0x00002004 -_0815AE30: .4byte 0x00004004 -_0815AE34: .4byte 0x00004005 - thumb_func_end sub_815AD88 - - thumb_func_start sub_815AE38 -sub_815AE38: @ 815AE38 - push {r4,lr} - sub sp, 0x8 - movs r4, 0 - add r0, sp, 0x4 - strh r4, [r0] - bl reset_temp_tile_data_buffers - ldr r1, _0815AE98 @ =gUnknown_8E86240 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - ldr r0, _0815AE9C @ =gUnknown_8E86BE8 - ldr r4, _0815AEA0 @ =gUnknown_203F450 - ldr r1, [r4] - adds r1, 0x4 - bl LZDecompressWram - ldr r0, _0815AEA4 @ =gUnknown_8E86D6C - ldr r1, [r4] - ldr r2, _0815AEA8 @ =0x00003004 - adds r1, r2 - bl LZDecompressWram - ldr r0, _0815AEAC @ =gUnknown_8E86F98 - movs r1, 0 - movs r2, 0x80 - bl LoadCompressedPalette - add r0, sp, 0x4 - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - ldr r0, _0815AEB0 @ =gUnknown_83A5348 - bl LoadSpritePalette - ldr r0, [r4] - ldr r1, _0815AEB4 @ =0x00002004 - adds r0, r1 - bl sub_815BD80 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815AE98: .4byte gUnknown_8E86240 -_0815AE9C: .4byte gUnknown_8E86BE8 -_0815AEA0: .4byte gUnknown_203F450 -_0815AEA4: .4byte gUnknown_8E86D6C -_0815AEA8: .4byte 0x00003004 -_0815AEAC: .4byte gUnknown_8E86F98 -_0815AEB0: .4byte gUnknown_83A5348 -_0815AEB4: .4byte 0x00002004 - thumb_func_end sub_815AE38 - - thumb_func_start sub_815AEB8 -sub_815AEB8: @ 815AEB8 - push {lr} - ldr r0, _0815AEE4 @ =gUnknown_84792F0 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0 - movs r1, 0xCC - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - pop {r0} - bx r0 - .align 2, 0 -_0815AEE4: .4byte gUnknown_84792F0 - thumb_func_end sub_815AEB8 - - thumb_func_start sub_815AEE8 -sub_815AEE8: @ 815AEE8 - push {r4,r5,lr} - ldr r4, _0815AF48 @ =gMultiuseListMenuTemplate - adds r1, r4, 0 - ldr r0, _0815AF4C @ =gUnknown_8479368 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - movs r0, 0x1 - strb r0, [r4, 0x10] - ldr r0, _0815AF50 @ =sub_815AFD8 - str r0, [r4, 0x4] - movs r0, 0xB6 - lsls r0, 1 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - bne _0815AF30 - ldr r0, _0815AF54 @ =gUnknown_8479340 - str r0, [r4] - movs r0, 0x5 - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - ldrb r2, [r4, 0x14] - lsls r1, r2, 28 - lsrs r1, 28 - adds r1, 0x8 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x14] -_0815AF30: - ldr r0, _0815AF58 @ =gTeachyTV_StaticResources - ldrh r1, [r0, 0x6] - ldrh r2, [r0, 0x8] - adds r0, r4, 0 - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0815AF48: .4byte gMultiuseListMenuTemplate -_0815AF4C: .4byte gUnknown_8479368 -_0815AF50: .4byte sub_815AFD8 -_0815AF54: .4byte gUnknown_8479340 -_0815AF58: .4byte gTeachyTV_StaticResources - thumb_func_end sub_815AEE8 - - thumb_func_start sub_815AF5C -sub_815AF5C: @ 815AF5C - push {lr} - movs r0, 0xB6 - lsls r0, 1 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - bne _0815AF84 - ldr r0, _0815AF7C @ =gUnknown_203F450 - ldr r0, [r0] - ldr r1, _0815AF80 @ =0x00004007 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - b _0815AF96 - .align 2, 0 -_0815AF7C: .4byte gUnknown_203F450 -_0815AF80: .4byte 0x00004007 -_0815AF84: - ldr r0, _0815AF9C @ =gUnknown_8479380 - ldr r1, _0815AFA0 @ =gUnknown_203F44A - bl AddScrollIndicatorArrowPair - ldr r1, _0815AFA4 @ =gUnknown_203F450 - ldr r1, [r1] - ldr r2, _0815AFA8 @ =0x00004007 - adds r1, r2 - strb r0, [r1] -_0815AF96: - pop {r0} - bx r0 - .align 2, 0 -_0815AF9C: .4byte gUnknown_8479380 -_0815AFA0: .4byte gUnknown_203F44A -_0815AFA4: .4byte gUnknown_203F450 -_0815AFA8: .4byte 0x00004007 - thumb_func_end sub_815AF5C - - thumb_func_start sub_815AFAC -sub_815AFAC: @ 815AFAC - push {r4,lr} - ldr r4, _0815AFD0 @ =gUnknown_203F450 - ldr r0, [r4] - ldr r2, _0815AFD4 @ =0x00004007 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0815AFCA - bl RemoveScrollIndicatorArrowPair - ldr r0, [r4] - ldr r1, _0815AFD4 @ =0x00004007 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] -_0815AFCA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815AFD0: .4byte gUnknown_203F450 -_0815AFD4: .4byte 0x00004007 - thumb_func_end sub_815AFAC - - thumb_func_start sub_815AFD8 -sub_815AFD8: @ 815AFD8 - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _0815AFE8 - movs r0, 0x5 - bl PlaySE -_0815AFE8: - pop {r0} - bx r0 - thumb_func_end sub_815AFD8 - - thumb_func_start sub_815AFEC -sub_815AFEC: @ 815AFEC - push {lr} - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x1F - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xCC - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x5 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_815AFEC - - thumb_func_start sub_815B014 -sub_815B014: @ 815B014 - push {lr} - sub sp, 0x4 - ldr r1, _0815B054 @ =SpriteCallbackDummy - movs r0, 0x8 - str r0, [sp] - movs r0, 0x5A - movs r2, 0 - movs r3, 0 - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0815B058 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - movs r3, 0x8 - orrs r1, r3 - strb r1, [r2, 0x5] - adds r2, 0x3E - ldrb r1, [r2] - movs r3, 0x4 - orrs r1, r3 - strb r1, [r2] - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_0815B054: .4byte SpriteCallbackDummy -_0815B058: .4byte gSprites - thumb_func_end sub_815B014 - - thumb_func_start sub_815B05C -sub_815B05C: @ 815B05C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r5, _0815B090 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - strh r1, [r0, 0x24] - strh r2, [r0, 0x26] - adds r4, r0, 0 - adds r4, 0x3E - ldrb r2, [r4] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r4] - adds r1, r3, 0 - bl StartSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815B090: .4byte gSprites - thumb_func_end sub_815B05C - - thumb_func_start sub_815B094 -sub_815B094: @ 815B094 - push {lr} - ldr r1, _0815B0AC @ =0x00000c64 - movs r0, 0x44 - bl SetGpuReg - ldr r1, _0815B0B0 @ =0x00001cd4 - movs r0, 0x40 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_0815B0AC: .4byte 0x00000c64 -_0815B0B0: .4byte 0x00001cd4 - thumb_func_end sub_815B094 - - thumb_func_start sub_815B0B4 -sub_815B0B4: @ 815B0B4 - push {lr} - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_815B0B4 - - thumb_func_start sub_815B0CC -sub_815B0CC: @ 815B0CC - push {r4-r7,lr} - movs r0, 0x2 - bl GetBgTilemapBuffer - adds r7, r0, 0 - movs r0, 0x1 -_0815B0D8: - movs r4, 0x2 - lsls r5, r0, 5 - adds r6, r0, 0x1 -_0815B0DE: - bl Random - adds r2, r5, r4 - lsls r2, 1 - adds r2, r7 - movs r1, 0x3 - ands r1, r0 - lsls r1, 10 - ldr r3, _0815B114 @ =0x0000301f - adds r0, r3, 0 - adds r1, r0 - strh r1, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1B - bls _0815B0DE - lsls r0, r6, 24 - lsrs r0, 24 - cmp r0, 0xC - bls _0815B0D8 - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815B114: .4byte 0x0000301f - thumb_func_end sub_815B0CC - - thumb_func_start sub_815B118 -sub_815B118: @ 815B118 + thumb_func_start TeachyTvSetupPostBattleWindowAndObj +TeachyTvSetupPostBattleWindowAndObj: @ 815B118 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 @@ -693,7 +25,7 @@ sub_815B118: @ 815B118 adds r7, r0, r1 movs r0, 0x1 bl ClearWindowTilemap - bl sub_815B0B4 + bl TeachyTvClearWindowRegs ldr r0, _0815B198 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] cmp r0, 0 @@ -704,7 +36,7 @@ sub_815B118: @ 815B118 movs r1, 0x78 movs r2, 0x38 movs r3, 0 - bl sub_815B05C + bl TeachyTvSetSpriteCoordsAndSwitchFrame movs r4, 0xC0 lsls r4, 6 movs r0, 0x3 @@ -743,7 +75,7 @@ _0815B1A8: movs r1, 0x78 movs r2, 0x38 movs r3, 0 - bl sub_815B05C + bl TeachyTvSetSpriteCoordsAndSwitchFrame _0815B1B8: movs r0, 0 strh r0, [r5, 0x8] @@ -761,7 +93,7 @@ _0815B1B8: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_815B118 + thumb_func_end TeachyTvSetupPostBattleWindowAndObj thumb_func_start sub_815B1DC sub_815B1DC: @ 815B1DC @@ -892,7 +224,7 @@ sub_815B2C0: @ 815B2C0 lsls r0, 3 ldr r1, _0815B31C @ =gTasks+0x8 adds r6, r0, r1 - bl sub_815B0CC + bl TeachyTvBg2AnimController ldr r0, _0815B320 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 @@ -903,10 +235,10 @@ sub_815B2C0: @ 815B2C0 bl ListMenuHandleInput adds r5, r0, 0 ldrb r0, [r6] - ldr r4, _0815B324 @ =gUnknown_203F44A + ldr r4, _0815B324 @ =gTeachyTV_StaticResources+6 adds r2, r4, 0x2 adds r1, r4, 0 - bl get_coro_args_x18_x1A + bl ListMenuGetScrollAndRow ldr r0, _0815B328 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x4 @@ -930,7 +262,7 @@ _0815B30A: .align 2, 0 _0815B31C: .4byte gTasks+0x8 _0815B320: .4byte gPaletteFade -_0815B324: .4byte gUnknown_203F44A +_0815B324: .4byte gTeachyTV_StaticResources+6 _0815B328: .4byte gMain _0815B32C: .4byte UseFameCheckerFromMenu _0815B330: @@ -949,12 +281,12 @@ _0815B33E: adds r1, r2, 0x6 adds r2, 0x8 bl DestroyListMenu - bl sub_815B0B4 + bl TeachyTvClearWindowRegs movs r0, 0x1 bl ClearWindowTilemap movs r0, 0 bl schedule_bg_copy_tilemap_to_vram - bl sub_815AFAC + bl TeachyTvRemoveScrollIndicatorArrowPair strh r4, [r6, 0x6] strh r4, [r6, 0x4] ldr r1, _0815B384 @ =gTasks @@ -985,7 +317,7 @@ sub_815B38C: @ 815B38C lsls r1, 3 ldr r0, _0815B3F8 @ =gTasks+0x8 adds r4, r1, r0 - bl sub_815B0CC + bl TeachyTvBg2AnimController ldrh r0, [r4, 0x4] adds r0, 0x1 strh r0, [r4, 0x4] @@ -1010,7 +342,7 @@ sub_815B38C: @ 815B38C movs r1, 0x8 movs r2, 0x38 movs r3, 0x7 - bl sub_815B05C + bl TeachyTvSetSpriteCoordsAndSwitchFrame movs r0, 0x2 bl schedule_bg_copy_tilemap_to_vram movs r0, 0 @@ -1184,7 +516,7 @@ sub_815B4EC: @ 815B4EC movs r1, 0 movs r2, 0 movs r3, 0 - bl sub_815B05C + bl TeachyTvSetSpriteCoordsAndSwitchFrame movs r0, 0 movs r1, 0xCC bl FillWindowPixelBuffer @@ -1730,7 +1062,7 @@ sub_815B92C: @ 815B92C lsls r0, 1 bl PlayNewMapMusic _0815B94C: - bl sub_815B0CC + bl TeachyTvBg2AnimController ldrh r0, [r5, 0x4] adds r0, 0x1 strh r0, [r5, 0x4] @@ -1741,7 +1073,7 @@ _0815B94C: movs r4, 0 strh r4, [r5, 0x4] strh r4, [r5, 0x6] - bl sub_815AEE8 + bl TeachyTvSetupWindow lsls r0, 24 lsrs r0, 24 strh r0, [r5] @@ -1752,8 +1084,8 @@ _0815B94C: str r1, [r0] movs r0, 0 bl PutWindowTilemap - bl sub_815AF5C - bl sub_815B094 + bl TeachyTvSetupScrollIndicatorArrowPair + bl TeachyTvSetWindowRegs movs r0, 0 bl schedule_bg_copy_tilemap_to_vram movs r0, 0x3 @@ -1854,8 +1186,8 @@ _0815BA4E: bx r0 thumb_func_end sub_815BA30 - thumb_func_start sub_815BA54 -sub_815BA54: @ 815BA54 + thumb_func_start TeachyTvPostBattleFadeControl +TeachyTvPostBattleFadeControl: @ 815BA54 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -1891,7 +1223,7 @@ _0815BA90: .4byte gPaletteFade _0815BA94: .4byte gUnknown_8479390 _0815BA98: .4byte gTeachyTV_StaticResources _0815BA9C: .4byte sub_815B4EC - thumb_func_end sub_815BA54 + thumb_func_end TeachyTvPostBattleFadeControl thumb_func_start sub_815BAA0 sub_815BAA0: @ 815BAA0 @@ -2257,7 +1589,7 @@ _0815BD70: lsls r0, 1 bl PlayNewMapMusic _0815BD78: - bl CB2_ReturnToTeachyTV + bl sub_815ABFC pop {r0} bx r0 thumb_func_end sub_815BD58 diff --git a/include/fame_checker.h b/include/fame_checker.h index 257431d8b..af705e34f 100644 --- a/include/fame_checker.h +++ b/include/fame_checker.h @@ -41,7 +41,7 @@ extern u8 gIconDescriptionBoxIsOpen; void ResetFameChecker(void); void FullyUnlockFameChecker(void); -void UseFameChecker(MainCallback savedCallback); +void UseFameChecker(void (*)()); void SetFlavorTextFlagFromSpecialVars(void); void UpdatePickStateFromSpecialVar8005(void); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 459122d32..d67fc476c 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -46,7 +46,7 @@ void FieldObjectClearAnim(struct MapObject *); void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); void SpawnFieldObjectsInView(s16, s16); u8 sprite_new(u8, u8, s16, s16, u8, u8); -u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8); +u8 AddPseudoEventObject(u16, void (*)(struct Sprite *), s16, s16, u8); u8 show_sprite(u8, u8, u8); u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a14905cc2..3623737ea 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -51,8 +51,8 @@ struct Tileset /*0x04*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ void *metatiles; - /*0x14*/ TilesetCB callback; - /*0x10*/ void *metatileAttributes; + /*0x10*/ TilesetCB callback; + /*0x14*/ void *metatileAttributes; }; struct MapData diff --git a/include/list_menu.h b/include/list_menu.h index 8ff65da0b..fe42651b6 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -43,7 +43,7 @@ struct ListMenu { u16 selectedRow; u8 unk_1C; u8 unk_1D; - u8 unk_1E; + u8 taskId; u8 unk_1F; }; @@ -54,7 +54,7 @@ extern struct ListMenuTemplate gMultiuseListMenuTemplate; 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 ListMenuGetScrollAndRow(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); void DestroyListMenu(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index e27fb4e5d..892636ba0 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -20,8 +20,8 @@ void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); bool8 sub_81221AC(void); bool8 sub_80BF72C(void); bool8 sub_80BF708(void); -void sub_80BF768(void); -void sub_80BF7C8(void); +void VblankHblankHandlerSetZero(void); +void InitBgReg(void); u8 sub_80BF8E4(void); u8 sub_80BF848(s16 * a0, u16 a1); void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); diff --git a/include/teachy_tv.h b/include/teachy_tv.h index 374780c04..382ad117d 100644 --- a/include/teachy_tv.h +++ b/include/teachy_tv.h @@ -1,7 +1,7 @@ #ifndef GUARD_TEACHY_TV_H #define GUARD_TEACHY_TV_H -void CB2_ReturnToTeachyTV(void); +void sub_815ABFC(void); void sub_815AC20(void); #endif //GUARD_TEACHY_TV_H diff --git a/ld_script.txt b/ld_script.txt index ecc924060..838d5f334 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -277,6 +277,7 @@ SECTIONS { src/unk_8159F40.o(.text); src/dodrio_berry_picking_2.o(.text); asm/dodrio_berry_picking_2.o(.text); + src/teachy_tv.o(.text); asm/teachy_tv.o(.text); asm/ereader_helpers.o(.text); src/unk_815C980.o(.text); diff --git a/src/fame_checker.c b/src/fame_checker.c index dea1b2874..740c9b9cf 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1270,7 +1270,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL); + ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL); sFameCheckerData->listMenuTopIdx = listMenuTopIdx; if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { @@ -1339,7 +1339,7 @@ static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit) u16 listY; u16 cursorY; u16 who; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY); + ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY); who = listY + cursorY; AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) @@ -1432,7 +1432,7 @@ static void FreeListMenuSelectorArrowPairResources(void) static u16 FameCheckerGetCursorY(void) { u16 listY, cursorY; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY); + ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY); return listY + cursorY; } diff --git a/src/teachy_tv.c b/src/teachy_tv.c new file mode 100644 index 000000000..750aa0dfb --- /dev/null +++ b/src/teachy_tv.c @@ -0,0 +1,346 @@ +#include "main.h" +#include "global.h" +#include "task.h" +#include "menu.h" +#include "palette.h" +#include "sprite.h" +#include "menu_helpers.h" +#include "sound.h" +#include "malloc.h" +#include "sprite.h" +#include "scanline_effect.h" +#include "bg.h" +#include "gpu_regs.h" +#include "decompress.h" +#include "window.h" +#include "list_menu.h" +#include "item.h" +#include "menu_indicators.h" +#include "field_map_obj.h" +#include "random.h" +#include "text.h" +#include "constants/songs.h" +#include "constants/items.h" + +typedef struct { + void (*callback)(); + u8 mode; + u8 optionChosen; + u16 scrollOffset; + u16 selectedRow; + u8 param4; + u8 filler; +} TeachyTv_s; + +extern TeachyTv_s gTeachyTV_StaticResources; +extern void * gUnknown_203F450; +void C2TeachyTv(); +void C2TeachyTvMainCallback(); +void VblankHandlerTeachyTv(); +void sub_815ABC4(u8 mode, void (*cb)()); +void sub_815ABFC(); +extern void sub_815AC20(); +void TeachyTvCreateAndRenderRbox(); +void TeachyTvInitIo(); +u8 TeachyTvSetupObjEventAndOam(); +extern void TeachyTvSetupPostBattleWindowAndObj(u8); +u8 TeachyTvSetupWindow(); +void TeachyTvSetupScrollIndicatorArrowPair(); +void TeachyTvSetWindowRegs(); +void TeachyTvSetupBg(); +void TeachyTvLoadGraphic(); +extern void TeachyTvPostBattleFadeControl(u8); +extern void sub_815B2C0(u8); +extern void VblankHblankHandlerSetZero(); +extern void sub_812B1E0(u16); +extern struct BgTemplate gUnknown_84792E0; +extern void *gUnknown_203F450; // tilemap pointer location +extern u8 gUnknown_8E86240; // tilemap +extern u8 gUnknown_8E86BE8; +extern u8 gUnknown_8E86D6C; +extern u8 gUnknown_8E86F98; // pal +extern struct SpritePalette gUnknown_83A5348; +extern void sub_815BD80(void *); +typedef struct Task Task; +extern struct WindowTemplate gUnknown_84792F0; + + +void C2TeachyTv() +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void VblankHandlerTeachyTv() +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_815ABC4(u8 mode, void (*cb)()) +{ + TeachyTv_s *v3 = &gTeachyTV_StaticResources; + u16 v4 = 0; + v3->mode = mode; + v3->callback = cb; + if(!mode) { + v3->scrollOffset = v4; + v3->selectedRow = v4; + v3->optionChosen = 0; + } + if(mode == 1) + v3->mode = 0; + SetMainCallback2(C2TeachyTvMainCallback); +} + +void sub_815ABFC() +{ + if(gTeachyTV_StaticResources.mode == 1) + sub_815ABC4(1,gTeachyTV_StaticResources.callback); + else + sub_815ABC4(2,gTeachyTV_StaticResources.callback); +} + +void sub_815AC20() +{ + gTeachyTV_StaticResources.mode = 1; +} + +void C2TeachyTvMainCallback() +{ + int state; + int taskId; + Task *taskAddr; + u8 **v4; + u32 x; + + state = gMain.state; + // tried several ways to reproduce the control flow, but all failed. Now using goto + if ( state == 0 ) + goto section_0; + else if ( state == 1 ) + goto section_1; + else + return; + section_0: + v4 = (u8 **)&gUnknown_203F450; + (*v4) = (u8*)AllocZeroed(0x4008u); + *(u32*)gUnknown_203F450 = (u32)state; + *((u8*)gUnknown_203F450 + 0x4006) = state; + *((u8*)gUnknown_203F450 + 0x4007) = 0xFF; + VblankHblankHandlerSetZero(); + clear_scheduled_bg_copies_to_vram(); + ScanlineEffect_Stop(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + TeachyTvSetupBg(); + TeachyTvLoadGraphic(); + ++gMain.state; + return; + section_1: + if( free_temp_tile_data_buffers_if_possible() == 1 ) + return; + TeachyTvCreateAndRenderRbox(); + TeachyTvInitIo(); + if ( gTeachyTV_StaticResources.mode == 2 ) + { + taskId = CreateTask(TeachyTvPostBattleFadeControl, 0); + gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam(); + TeachyTvSetupPostBattleWindowAndObj(taskId); + } + else + { + taskId = CreateTask(sub_815B2C0, 0); + x = (u32)TeachyTvSetupWindow(); + gTasks[taskId].data[0] = (x << 24) >> 24; + gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam(); + TeachyTvSetupScrollIndicatorArrowPair(); + PlayNewMapMusic(BGM_FRLG_TEACHY_TV); + TeachyTvSetWindowRegs(); + } + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1u); + schedule_bg_copy_tilemap_to_vram(2u); + schedule_bg_copy_tilemap_to_vram(3u); + sub_812B1E0(9); // help system something + BlendPalettes(0xFFFFFFFF, 0x10u, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10u, 0, 0); + SetVBlankCallback(VblankHandlerTeachyTv); + SetMainCallback2(C2TeachyTv); +} + +void TeachyTvSetupBg() +{ + InitBgReg(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, &gUnknown_84792E0, 4u); + SetBgTilemapBuffer(1u, (u8 *)gUnknown_203F450 + 4); + SetBgTilemapBuffer(2u, (u8 *)gUnknown_203F450 + 0x1004); + SetBgTilemapBuffer(3u, (u8 *)gUnknown_203F450 + 0x2004); + SetGpuReg(0, 0x3040u); + ShowBg(0); + ShowBg(1u); + ShowBg(2u); + ShowBg(3u); + ChangeBgX(3u, 0x1000u, 2u); + ChangeBgY(3u, 0x2800u, 1u); + *((u8 *)gUnknown_203F450 + 0x4004) = 0; + *((u8 *)gUnknown_203F450 + 0x4005) = 3; + SetGpuReg(0x50u, 0); +} + +void TeachyTvLoadGraphic() +{ + u16 src; + src = 0; + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1u, &gUnknown_8E86240, 0, 0, 0); + LZDecompressWram((u8 *)&gUnknown_8E86BE8, (*(u8 **)&gUnknown_203F450) + 4); + LZDecompressWram((u8 *)&gUnknown_8E86D6C, (*(u8 **)&gUnknown_203F450) + 0x3004); + LoadCompressedPalette(&gUnknown_8E86F98, 0, 0x80u); + LoadPalette(&src, 0, 2u); + LoadSpritePalette((struct SpritePalette *)&gUnknown_83A5348); + sub_815BD80((u8 *)gUnknown_203F450 + 0x2004); +} + +void TeachyTvCreateAndRenderRbox() +{ + InitWindows(&gUnknown_84792F0); + DeactivateAllTextPrinters(); + FillWindowPixelBuffer(0, 0xCCu); + PutWindowTilemap(0); + PutWindowTilemap(1u); + CopyWindowToVram(0, 2u); +} + +extern struct ListMenuTemplate gUnknown_8479368; +extern struct ListMenuItem gUnknown_8479340; +extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow); +void TeachyTvAudioByInput(s32, bool8, struct ListMenu *); + +u8 TeachyTvSetupWindow() +{ + int hasItem; + gMultiuseListMenuTemplate = gUnknown_8479368; + gMultiuseListMenuTemplate.windowId = 1; + gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput; + hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u); + if ( !(hasItem << 24) ) + { + gMultiuseListMenuTemplate.items = &gUnknown_8479340; + gMultiuseListMenuTemplate.totalItems = 5; + gMultiuseListMenuTemplate.maxShowed = 5; + gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF; + } + return ListMenuInit( + &gMultiuseListMenuTemplate, + gTeachyTV_StaticResources.scrollOffset, + gTeachyTV_StaticResources.selectedRow); +} + +extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380; + +void TeachyTvSetupScrollIndicatorArrowPair() +{ + int hasItem; + hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u); + if ( ! hasItem << 24 ) { + u8 * temp = (u8 *)gUnknown_203F450; + *((u8 *)temp + 0x4007) = 0xFF; + } + + else { + u8 *temp, res; + res = AddScrollIndicatorArrowPair( + &gUnknown_8479380, + &(gTeachyTV_StaticResources.scrollOffset)); + temp = (u8 *)gUnknown_203F450; + *((u8 *)temp + 0x4007) = res; + } +} + +void TeachyTvRemoveScrollIndicatorArrowPair() +{ + u8 *temp = ((u8*)gUnknown_203F450 + 0x4007); + if ( *temp != 0xFF ) + { + RemoveScrollIndicatorArrowPair(*temp); + *((u8*)gUnknown_203F450 + 0x4007) = 0xFF; + } +} + +void TeachyTvAudioByInput(s32 notUsed, bool8 play, struct ListMenu *notUsedAlt) +{ + if ( play != 1 ) + PlaySE(SE_SELECT); +} + +void TeachyTvInitIo() +{ + SetGpuReg(0x48u, 0x3Fu); + SetGpuReg(0x4Au, 0x1Fu); + SetGpuReg(0x50u, 0xCCu); + SetGpuReg(0x54u, 5u); +} + +u8 TeachyTvSetupObjEventAndOam() +{ + u8 temp = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8); + gSprites[temp].oam.priority = 2; + gSprites[temp].invisible = 1; + return temp; +} + +void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame) +{ + gSprites[objId].pos2.x = x; + gSprites[objId].pos2.y = y; + gSprites[objId].invisible = 0; + StartSpriteAnim(&gSprites[objId], frame); +} + +void TeachyTvSetWindowRegs() +{ + SetGpuReg(0x44u, 0xC64u); + SetGpuReg(0x40u, 0x1CD4u); +} + +void TeachyTvClearWindowRegs() +{ + SetGpuReg(0x44u, 0); + SetGpuReg(0x40u, 0); +} + +void TeachyTvBg2AnimController() +{ + u16 *tilemapBuffer; + u8 counter; + u32 offset2; + u32 offset; + u32 counter2; + + tilemapBuffer = (u16 *)GetBgTilemapBuffer(2u); + counter = 1; + do + { + offset2 = 2; + offset = 0x20 * counter; + counter2 = counter + 1; + do + { + tilemapBuffer[offset + offset2] = ((Random() & 3) << 10) + 0x301F; + offset2 = (offset2 + 1) << 0x18 >> 0x18; + } + while ( offset2 <= 0x1B ); + counter = counter2; + } + while ( counter2 << 0x18 >> 0x18 <= 0xCu ); + schedule_bg_copy_tilemap_to_vram(2u); +} + diff --git a/src/tm_case.c b/src/tm_case.c index 08b3c5004..fdcc66a7e 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -321,7 +321,7 @@ static bool8 DoSetUpTMCaseUI(void) switch (gMain.state) { case 0: - sub_80BF768(); + VblankHblankHandlerSetZero(); clear_scheduled_bg_copies_to_vram(); gMain.state++; break; @@ -426,7 +426,7 @@ static void ResetBufferPointers_NoFree(void) static void LoadBGTemplates(void) { void ** ptr; - sub_80BF7C8(); + InitBgReg(); ptr = &sTilemapBuffer; *ptr = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); @@ -737,7 +737,7 @@ static void Task_TMCaseMain(u8 taskId) if (sub_80BF72C() != TRUE) { input = ListMenuHandleInput(data[0]); - get_coro_args_x18_x1A(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1) { PlaySE(SE_SELECT); @@ -1147,7 +1147,7 @@ void PokeDude_InitTMCase(void) AddBagItem(ITEM_TM03, 1); AddBagItem(ITEM_TM09, 1); AddBagItem(ITEM_TM35, 1); - InitTMCase(4, CB2_ReturnToTeachyTV, 0); + InitTMCase(4, sub_815ABFC, 0); } static void Task_TMCaseDude1(u8 taskId) diff --git a/sym_ewram.txt b/sym_ewram.txt index d97599e8c..7d3054653 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1639,10 +1639,7 @@ gUnknown_203F440: @ 203F440 .space 0x4 gTeachyTV_StaticResources: @ 203F444 - .space 0x6 - -gUnknown_203F44A: @ 203F44A - .space 0x6 + .space 12 gUnknown_203F450: @ 203F450 .space 0x4 |