killed by large function

This commit is contained in:
jiangzhengwenjz
2019-06-04 13:45:58 +08:00
parent f9f66ddeb4
commit a9c9388cdd
2 changed files with 72 additions and 149 deletions
+18 -137
View File
@@ -5,127 +5,8 @@
.text .text
thumb_func_start sub_815B1DC thumb_func_start TeachyTvOptionListController
sub_815B1DC: @ 815B1DC TeachyTvOptionListController: @ 815B2C0
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
push {r4-r7,lr} push {r4-r7,lr}
lsls r0, 24 lsls r0, 24
lsrs r7, r0, 24 lsrs r7, r0, 24
@@ -179,7 +60,7 @@ _0815B330:
movs r0, 0x5 movs r0, 0x5
bl PlaySE bl PlaySE
adds r0, r7, 0 adds r0, r7, 0
bl sub_815B23C bl TeachyTvQuitBeginFade
b _0815B37A b _0815B37A
_0815B33E: _0815B33E:
movs r0, 0x5 movs r0, 0x5
@@ -204,7 +85,7 @@ _0815B33E:
adds r0, r7 adds r0, r7
lsls r0, 3 lsls r0, 3
adds r0, r1 adds r0, r1
ldr r1, _0815B388 @ =sub_815B4EC ldr r1, _0815B388 @ =TeachyTvRenderMsgAndSwitchClusterFuncs
str r1, [r0] str r1, [r0]
_0815B37A: _0815B37A:
pop {r4-r7} pop {r4-r7}
@@ -213,8 +94,8 @@ _0815B37A:
.align 2, 0 .align 2, 0
_0815B380: .4byte gTeachyTV_StaticResources _0815B380: .4byte gTeachyTV_StaticResources
_0815B384: .4byte gTasks _0815B384: .4byte gTasks
_0815B388: .4byte sub_815B4EC _0815B388: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs
thumb_func_end sub_815B2C0 thumb_func_end TeachyTvOptionListController
thumb_func_start sub_815B38C thumb_func_start sub_815B38C
sub_815B38C: @ 815B38C sub_815B38C: @ 815B38C
@@ -355,7 +236,7 @@ _0815B48C:
movs r1, 0 movs r1, 0
bl StartSpriteAnim bl StartSpriteAnim
ldr r0, _0815B4B0 @ =gUnknown_841B83D ldr r0, _0815B4B0 @ =gUnknown_841B83D
bl sub_815B1DC bl TeachyTvInitTextPrinter
movs r0, 0 movs r0, 0
strh r0, [r4, 0x4] strh r0, [r4, 0x4]
ldrh r0, [r4, 0x6] ldrh r0, [r4, 0x6]
@@ -399,8 +280,8 @@ _0815B4E2:
_0815B4E8: .4byte gTasks+0x8 _0815B4E8: .4byte gTasks+0x8
thumb_func_end sub_815B4C0 thumb_func_end sub_815B4C0
thumb_func_start sub_815B4EC thumb_func_start TeachyTvRenderMsgAndSwitchClusterFuncs
sub_815B4EC: @ 815B4EC TeachyTvRenderMsgAndSwitchClusterFuncs: @ 815B4EC
push {r4-r7,lr} push {r4-r7,lr}
lsls r0, 24 lsls r0, 24
lsrs r2, r0, 24 lsrs r2, r0, 24
@@ -469,7 +350,7 @@ _0815B578:
.align 2, 0 .align 2, 0
_0815B580: .4byte gUnknown_8479548 _0815B580: .4byte gUnknown_8479548
_0815B584: .4byte gTeachyTV_StaticResources _0815B584: .4byte gTeachyTV_StaticResources
thumb_func_end sub_815B4EC thumb_func_end TeachyTvRenderMsgAndSwitchClusterFuncs
thumb_func_start sub_815B588 thumb_func_start sub_815B588
sub_815B588: @ 815B588 sub_815B588: @ 815B588
@@ -487,7 +368,7 @@ sub_815B588: @ 815B588
lsls r0, 2 lsls r0, 2
adds r0, r1 adds r0, r1
ldr r0, [r0] ldr r0, [r0]
bl sub_815B1DC bl TeachyTvInitTextPrinter
ldrh r0, [r4, 0x6] ldrh r0, [r4, 0x6]
adds r0, 0x1 adds r0, 0x1
strh r0, [r4, 0x6] strh r0, [r4, 0x6]
@@ -516,7 +397,7 @@ sub_815B5C0: @ 815B5C0
lsls r0, 2 lsls r0, 2
adds r0, r1 adds r0, r1
ldr r0, [r0] ldr r0, [r0]
bl sub_815B1DC bl TeachyTvInitTextPrinter
ldrh r0, [r4, 0x6] ldrh r0, [r4, 0x6]
adds r0, 0x1 adds r0, 0x1
strh r0, [r4, 0x6] strh r0, [r4, 0x6]
@@ -990,7 +871,7 @@ _0815B94C:
adds r0, r7, 0 adds r0, r7, 0
subs r0, 0x8 subs r0, 0x8
adds r0, r6, r0 adds r0, r6, r0
ldr r1, _0815B9E0 @ =sub_815B2C0 ldr r1, _0815B9E0 @ =TeachyTvOptionListController
str r1, [r0] str r1, [r0]
movs r0, 0 movs r0, 0
bl PutWindowTilemap bl PutWindowTilemap
@@ -1036,7 +917,7 @@ _0815B9D4:
bx r0 bx r0
.align 2, 0 .align 2, 0
_0815B9DC: .4byte gTasks+0x8 _0815B9DC: .4byte gTasks+0x8
_0815B9E0: .4byte sub_815B2C0 _0815B9E0: .4byte TeachyTvOptionListController
_0815B9E4: .4byte gUnknown_203F450 _0815B9E4: .4byte gUnknown_203F450
_0815B9E8: .4byte 0x00004004 _0815B9E8: .4byte 0x00004004
_0815B9EC: .4byte 0x00004006 _0815B9EC: .4byte 0x00004006
@@ -1067,7 +948,7 @@ _0815BA10:
ldr r0, _0815BA2C @ =sub_815BA30 ldr r0, _0815BA2C @ =sub_815BA30
str r0, [r1] str r0, [r1]
adds r0, r2, 0 adds r0, r2, 0
bl sub_815B23C bl TeachyTvQuitBeginFade
_0815BA22: _0815BA22:
pop {r0} pop {r0}
bx r0 bx r0
@@ -1121,7 +1002,7 @@ TeachyTvPostBattleFadeControl: @ 815BA54
adds r0, r4, 0 adds r0, r4, 0
subs r0, 0x8 subs r0, 0x8
adds r0, r2, r0 adds r0, r2, r0
ldr r1, _0815BA9C @ =sub_815B4EC ldr r1, _0815BA9C @ =TeachyTvRenderMsgAndSwitchClusterFuncs
str r1, [r0] str r1, [r0]
_0815BA86: _0815BA86:
pop {r4} pop {r4}
@@ -1132,7 +1013,7 @@ _0815BA8C: .4byte gTasks+0x8
_0815BA90: .4byte gPaletteFade _0815BA90: .4byte gPaletteFade
_0815BA94: .4byte gUnknown_8479390 _0815BA94: .4byte gUnknown_8479390
_0815BA98: .4byte gTeachyTV_StaticResources _0815BA98: .4byte gTeachyTV_StaticResources
_0815BA9C: .4byte sub_815B4EC _0815BA9C: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs
thumb_func_end TeachyTvPostBattleFadeControl thumb_func_end TeachyTvPostBattleFadeControl
thumb_func_start TeachyTvGrassAnimationMain thumb_func_start TeachyTvGrassAnimationMain
@@ -1395,7 +1276,7 @@ sub_815BC90: @ 815BC90
lsls r0, 3 lsls r0, 3
ldr r1, _0815BCCC @ =gTasks+0x8 ldr r1, _0815BCCC @ =gTasks+0x8
adds r5, r0, r1 adds r5, r0, r1
bl sub_815B220 bl TeachyTvFree
ldr r1, _0815BCD0 @ =gSpecialVar_0x8004 ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
ldrb r0, [r4, 0x5] ldrb r0, [r4, 0x5]
+54 -12
View File
@@ -5,6 +5,7 @@
#include "palette.h" #include "palette.h"
#include "sprite.h" #include "sprite.h"
#include "menu_helpers.h" #include "menu_helpers.h"
#include "new_menu_helpers.h"
#include "sound.h" #include "sound.h"
#include "malloc.h" #include "malloc.h"
#include "sprite.h" #include "sprite.h"
@@ -14,6 +15,7 @@
#include "decompress.h" #include "decompress.h"
#include "window.h" #include "window.h"
#include "list_menu.h" #include "list_menu.h"
#include "item_menu.h"
#include "item.h" #include "item.h"
#include "menu_indicators.h" #include "menu_indicators.h"
#include "field_map_obj.h" #include "field_map_obj.h"
@@ -50,7 +52,7 @@ void TeachyTvSetWindowRegs();
void TeachyTvSetupBg(); void TeachyTvSetupBg();
void TeachyTvLoadGraphic(); void TeachyTvLoadGraphic();
extern void TeachyTvPostBattleFadeControl(u8); extern void TeachyTvPostBattleFadeControl(u8);
extern void sub_815B2C0(u8); extern void TeachyTvOptionListController(u8);
extern void VblankHblankHandlerSetZero(); extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16); extern void sub_812B1E0(u16);
extern struct BgTemplate gUnknown_84792E0; extern struct BgTemplate gUnknown_84792E0;
@@ -63,6 +65,15 @@ extern struct SpritePalette gUnknown_83A5348;
extern void sub_815BD80(void *); extern void sub_815BD80(void *);
typedef struct Task Task; typedef struct Task Task;
extern struct WindowTemplate gUnknown_84792F0; 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() void C2TeachyTv()
@@ -156,7 +167,7 @@ void C2TeachyTvMainCallback()
} }
else else
{ {
taskId = CreateTask(sub_815B2C0, 0); taskId = CreateTask(TeachyTvOptionListController, 0);
x = (u32)TeachyTvSetupWindow(); x = (u32)TeachyTvSetupWindow();
gTasks[taskId].data[0] = (x << 24) >> 24; gTasks[taskId].data[0] = (x << 24) >> 24;
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam(); gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
@@ -219,11 +230,6 @@ void TeachyTvCreateAndRenderRbox()
CopyWindowToVram(0, 2u); 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() u8 TeachyTvSetupWindow()
{ {
int hasItem; int hasItem;
@@ -244,8 +250,6 @@ u8 TeachyTvSetupWindow()
gTeachyTV_StaticResources.selectedRow); gTeachyTV_StaticResources.selectedRow);
} }
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
void TeachyTvSetupScrollIndicatorArrowPair() void TeachyTvSetupScrollIndicatorArrowPair()
{ {
int hasItem; int hasItem;
@@ -344,8 +348,6 @@ void TeachyTvBg2AnimController()
schedule_bg_copy_tilemap_to_vram(2u); schedule_bg_copy_tilemap_to_vram(2u);
} }
extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
void TeachyTvSetupPostBattleWindowAndObj(u8 taskId) void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
{ {
u16 *v2 = gTasks[taskId].data; u16 *v2 = gTasks[taskId].data;
@@ -372,4 +374,44 @@ void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
v2[4] = 0; v2[4] = 0;
v2[5] = 0; v2[5] = 0;
TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u); TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u);
} }
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);
}
}