diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-04 13:45:58 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-04 13:45:58 +0800 |
commit | a9c9388cdd51216bdf5a5db125eaab0fc3163c67 (patch) | |
tree | b264e2cb6e5401361dd59d9262f7369c9452f4d8 | |
parent | f9f66ddeb428857f3e7c3d920fcce807948ef8ab (diff) |
killed by large function
-rw-r--r-- | asm/teachy_tv.s | 155 | ||||
-rw-r--r-- | src/teachy_tv.c | 66 |
2 files changed, 72 insertions, 149 deletions
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 53ca52ccb..1d00e57cf 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -5,127 +5,8 @@ .text - thumb_func_start sub_815B1DC -sub_815B1DC: @ 815B1DC - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - ldr r2, _0815B21C @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0xC - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParameterized2 - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815B21C: .4byte gTextFlags - thumb_func_end sub_815B1DC - - thumb_func_start sub_815B220 -sub_815B220: @ 815B220 - push {r4,lr} - ldr r4, _0815B238 @ =gUnknown_203F450 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - bl FreeAllWindowBuffers - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815B238: .4byte gUnknown_203F450 - thumb_func_end sub_815B220 - - thumb_func_start sub_815B23C -sub_815B23C: @ 815B23C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0815B26C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0815B270 @ =sub_815B274 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815B26C: .4byte gTasks -_0815B270: .4byte sub_815B274 - thumb_func_end sub_815B23C - - thumb_func_start sub_815B274 -sub_815B274: @ 815B274 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0815B298 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0815B2B6 - ldr r0, _0815B29C @ =gUnknown_203F450 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _0815B2A0 - bl SetMainCallback2 - b _0815B2AC - .align 2, 0 -_0815B298: .4byte gPaletteFade -_0815B29C: .4byte gUnknown_203F450 -_0815B2A0: - bl sub_8055DC4 - ldr r0, _0815B2BC @ =gTeachyTV_StaticResources - ldr r0, [r0] - bl SetMainCallback2 -_0815B2AC: - bl sub_815B220 - adds r0, r4, 0 - bl DestroyTask -_0815B2B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815B2BC: .4byte gTeachyTV_StaticResources - thumb_func_end sub_815B274 - - thumb_func_start sub_815B2C0 -sub_815B2C0: @ 815B2C0 + thumb_func_start TeachyTvOptionListController +TeachyTvOptionListController: @ 815B2C0 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 @@ -179,7 +60,7 @@ _0815B330: movs r0, 0x5 bl PlaySE adds r0, r7, 0 - bl sub_815B23C + bl TeachyTvQuitBeginFade b _0815B37A _0815B33E: movs r0, 0x5 @@ -204,7 +85,7 @@ _0815B33E: adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _0815B388 @ =sub_815B4EC + ldr r1, _0815B388 @ =TeachyTvRenderMsgAndSwitchClusterFuncs str r1, [r0] _0815B37A: pop {r4-r7} @@ -213,8 +94,8 @@ _0815B37A: .align 2, 0 _0815B380: .4byte gTeachyTV_StaticResources _0815B384: .4byte gTasks -_0815B388: .4byte sub_815B4EC - thumb_func_end sub_815B2C0 +_0815B388: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs + thumb_func_end TeachyTvOptionListController thumb_func_start sub_815B38C sub_815B38C: @ 815B38C @@ -355,7 +236,7 @@ _0815B48C: movs r1, 0 bl StartSpriteAnim ldr r0, _0815B4B0 @ =gUnknown_841B83D - bl sub_815B1DC + bl TeachyTvInitTextPrinter movs r0, 0 strh r0, [r4, 0x4] ldrh r0, [r4, 0x6] @@ -399,8 +280,8 @@ _0815B4E2: _0815B4E8: .4byte gTasks+0x8 thumb_func_end sub_815B4C0 - thumb_func_start sub_815B4EC -sub_815B4EC: @ 815B4EC + thumb_func_start TeachyTvRenderMsgAndSwitchClusterFuncs +TeachyTvRenderMsgAndSwitchClusterFuncs: @ 815B4EC push {r4-r7,lr} lsls r0, 24 lsrs r2, r0, 24 @@ -469,7 +350,7 @@ _0815B578: .align 2, 0 _0815B580: .4byte gUnknown_8479548 _0815B584: .4byte gTeachyTV_StaticResources - thumb_func_end sub_815B4EC + thumb_func_end TeachyTvRenderMsgAndSwitchClusterFuncs thumb_func_start sub_815B588 sub_815B588: @ 815B588 @@ -487,7 +368,7 @@ sub_815B588: @ 815B588 lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl sub_815B1DC + bl TeachyTvInitTextPrinter ldrh r0, [r4, 0x6] adds r0, 0x1 strh r0, [r4, 0x6] @@ -516,7 +397,7 @@ sub_815B5C0: @ 815B5C0 lsls r0, 2 adds r0, r1 ldr r0, [r0] - bl sub_815B1DC + bl TeachyTvInitTextPrinter ldrh r0, [r4, 0x6] adds r0, 0x1 strh r0, [r4, 0x6] @@ -990,7 +871,7 @@ _0815B94C: adds r0, r7, 0 subs r0, 0x8 adds r0, r6, r0 - ldr r1, _0815B9E0 @ =sub_815B2C0 + ldr r1, _0815B9E0 @ =TeachyTvOptionListController str r1, [r0] movs r0, 0 bl PutWindowTilemap @@ -1036,7 +917,7 @@ _0815B9D4: bx r0 .align 2, 0 _0815B9DC: .4byte gTasks+0x8 -_0815B9E0: .4byte sub_815B2C0 +_0815B9E0: .4byte TeachyTvOptionListController _0815B9E4: .4byte gUnknown_203F450 _0815B9E8: .4byte 0x00004004 _0815B9EC: .4byte 0x00004006 @@ -1067,7 +948,7 @@ _0815BA10: ldr r0, _0815BA2C @ =sub_815BA30 str r0, [r1] adds r0, r2, 0 - bl sub_815B23C + bl TeachyTvQuitBeginFade _0815BA22: pop {r0} bx r0 @@ -1121,7 +1002,7 @@ TeachyTvPostBattleFadeControl: @ 815BA54 adds r0, r4, 0 subs r0, 0x8 adds r0, r2, r0 - ldr r1, _0815BA9C @ =sub_815B4EC + ldr r1, _0815BA9C @ =TeachyTvRenderMsgAndSwitchClusterFuncs str r1, [r0] _0815BA86: pop {r4} @@ -1132,7 +1013,7 @@ _0815BA8C: .4byte gTasks+0x8 _0815BA90: .4byte gPaletteFade _0815BA94: .4byte gUnknown_8479390 _0815BA98: .4byte gTeachyTV_StaticResources -_0815BA9C: .4byte sub_815B4EC +_0815BA9C: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs thumb_func_end TeachyTvPostBattleFadeControl thumb_func_start TeachyTvGrassAnimationMain @@ -1395,7 +1276,7 @@ sub_815BC90: @ 815BC90 lsls r0, 3 ldr r1, _0815BCCC @ =gTasks+0x8 adds r5, r0, r1 - bl sub_815B220 + bl TeachyTvFree ldr r1, _0815BCD0 @ =gSpecialVar_0x8004 ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources ldrb r0, [r4, 0x5] diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 48b72c995..f70f1d130 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -5,6 +5,7 @@ #include "palette.h" #include "sprite.h" #include "menu_helpers.h" +#include "new_menu_helpers.h" #include "sound.h" #include "malloc.h" #include "sprite.h" @@ -14,6 +15,7 @@ #include "decompress.h" #include "window.h" #include "list_menu.h" +#include "item_menu.h" #include "item.h" #include "menu_indicators.h" #include "field_map_obj.h" @@ -50,7 +52,7 @@ void TeachyTvSetWindowRegs(); void TeachyTvSetupBg(); void TeachyTvLoadGraphic(); extern void TeachyTvPostBattleFadeControl(u8); -extern void sub_815B2C0(u8); +extern void TeachyTvOptionListController(u8); extern void VblankHblankHandlerSetZero(); extern void sub_812B1E0(u16); extern struct BgTemplate gUnknown_84792E0; @@ -63,6 +65,15 @@ extern struct SpritePalette gUnknown_83A5348; extern void sub_815BD80(void *); typedef struct Task Task; extern struct WindowTemplate gUnknown_84792F0; +extern void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId); +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 *); +extern void sub_8055DC4(); +extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode); +extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380; +extern void TeachyTvQuitFadeControlAndTaskDel(u8 taskId); void C2TeachyTv() @@ -156,7 +167,7 @@ void C2TeachyTvMainCallback() } else { - taskId = CreateTask(sub_815B2C0, 0); + taskId = CreateTask(TeachyTvOptionListController, 0); x = (u32)TeachyTvSetupWindow(); gTasks[taskId].data[0] = (x << 24) >> 24; gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam(); @@ -219,11 +230,6 @@ void TeachyTvCreateAndRenderRbox() 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; @@ -244,8 +250,6 @@ u8 TeachyTvSetupWindow() gTeachyTV_StaticResources.selectedRow); } -extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380; - void TeachyTvSetupScrollIndicatorArrowPair() { int hasItem; @@ -344,8 +348,6 @@ void TeachyTvBg2AnimController() schedule_bg_copy_tilemap_to_vram(2u); } -extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode); - void TeachyTvSetupPostBattleWindowAndObj(u8 taskId) { u16 *v2 = gTasks[taskId].data; @@ -372,4 +374,44 @@ void TeachyTvSetupPostBattleWindowAndObj(u8 taskId) v2[4] = 0; v2[5] = 0; TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u); -}
\ No newline at end of file +} + +void TeachyTvInitTextPrinter(char *text) +{ + u8 spd; + gTextFlags.autoScroll = 0; + spd = GetTextSpeedSetting(); + AddTextPrinterParameterized2(0, 4u, (const u8 *)text, spd, 0, 1u, 0xCu, 3u); +} + +void TeachyTvFree() +{ + Free(gUnknown_203F450); + gUnknown_203F450 = NULL; + FreeAllWindowBuffers(); +} + +void TeachyTvQuitBeginFade(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10u, 0); + gTasks[taskId].func = TeachyTvQuitFadeControlAndTaskDel; +} + +void TeachyTvQuitFadeControlAndTaskDel(u8 taskId) +{ + if ( !(gPaletteFade.active) ) + { + if ( *(u32 *)gUnknown_203F450 ) + { + SetMainCallback2(*(void (**)())gUnknown_203F450); + } + else + { + sub_8055DC4(); + SetMainCallback2((void (*)())gTeachyTV_StaticResources.callback); + } + TeachyTvFree(); + DestroyTask(taskId); + } +} + |