small functions

This commit is contained in:
jiangzhengwenjz
2019-06-05 13:25:28 +08:00
parent 1ffb8f667c
commit 66b8dafbfc
2 changed files with 87 additions and 194 deletions
+3 -184
View File
@@ -5,187 +5,6 @@
.text
thumb_func_start TeachyTvBackToOptionList
TeachyTvBackToOptionList: @ 815B92C
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r6, r1, 3
ldr r7, _0815B9DC @ =gTasks+0x8
adds r5, r6, r7
movs r1, 0x4
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815B94C
movs r0, 0xAD
lsls r0, 1
bl PlayNewMapMusic
_0815B94C:
bl TeachyTvBg2AnimController
ldrh r0, [r5, 0x4]
adds r0, 0x1
strh r0, [r5, 0x4]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3F
ble _0815B9D4
movs r4, 0
strh r4, [r5, 0x4]
strh r4, [r5, 0x6]
bl TeachyTvSetupWindow
lsls r0, 24
lsrs r0, 24
strh r0, [r5]
adds r0, r7, 0
subs r0, 0x8
adds r0, r6, r0
ldr r1, _0815B9E0 @ =TeachyTvOptionListController
str r1, [r0]
movs r0, 0
bl PutWindowTilemap
bl TeachyTvSetupScrollIndicatorArrowPair
bl TeachyTvSetWindowRegs
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
movs r0, 0x3
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x3
movs r1, 0
movs r2, 0
bl ChangeBgY
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 r2, _0815B9E4 @ =gUnknown_203F450
ldr r0, [r2]
ldr r1, _0815B9E8 @ =0x00004004
adds r0, r1
strb r4, [r0]
ldr r0, [r2]
adds r1, 0x1
adds r0, r1
movs r1, 0x3
strb r1, [r0]
ldr r0, [r2]
ldr r1, _0815B9EC @ =0x00004006
adds r0, r1
strb r4, [r0]
_0815B9D4:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0815B9DC: .4byte gTasks+0x8
_0815B9E0: .4byte TeachyTvOptionListController
_0815B9E4: .4byte gUnknown_203F450
_0815B9E8: .4byte 0x00004004
_0815B9EC: .4byte 0x00004006
thumb_func_end TeachyTvBackToOptionList
thumb_func_start sub_815B9F0
sub_815B9F0: @ 815B9F0
push {lr}
lsls r0, 24
lsrs r1, r0, 24
adds r2, r1, 0
ldr r0, _0815BA0C @ =gTeachyTV_StaticResources
ldrb r0, [r0, 0x5]
cmp r0, 0
blt _0815BA22
cmp r0, 0x3
bgt _0815BA10
adds r0, r1, 0
bl sub_815BC90
b _0815BA22
.align 2, 0
_0815BA0C: .4byte gTeachyTV_StaticResources
_0815BA10:
cmp r0, 0x5
bgt _0815BA22
ldr r0, _0815BA28 @ =gUnknown_203F450
ldr r1, [r0]
ldr r0, _0815BA2C @ =sub_815BA30
str r0, [r1]
adds r0, r2, 0
bl TeachyTvQuitBeginFade
_0815BA22:
pop {r0}
bx r0
.align 2, 0
_0815BA28: .4byte gUnknown_203F450
_0815BA2C: .4byte sub_815BA30
thumb_func_end sub_815B9F0
thumb_func_start sub_815BA30
sub_815BA30: @ 815BA30
push {lr}
ldr r0, _0815BA44 @ =gTeachyTV_StaticResources
ldrb r0, [r0, 0x5]
cmp r0, 0x4
bne _0815BA48
movs r0, 0xA
bl sub_810B108
b _0815BA4E
.align 2, 0
_0815BA44: .4byte gTeachyTV_StaticResources
_0815BA48:
movs r0, 0x9
bl sub_810B108
_0815BA4E:
pop {r0}
bx r0
thumb_func_end sub_815BA30
thumb_func_start TeachyTvPostBattleFadeControl
TeachyTvPostBattleFadeControl: @ 815BA54
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r2, r1, 3
ldr r4, _0815BA8C @ =gTasks+0x8
adds r3, r2, r4
ldr r0, _0815BA90 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0815BA86
ldr r1, _0815BA94 @ =gUnknown_8479390
ldr r0, _0815BA98 @ =gTeachyTV_StaticResources
ldrb r0, [r0, 0x5]
adds r0, r1
ldrb r0, [r0]
strh r0, [r3, 0x6]
adds r0, r4, 0
subs r0, 0x8
adds r0, r2, r0
ldr r1, _0815BA9C @ =TeachyTvRenderMsgAndSwitchClusterFuncs
str r1, [r0]
_0815BA86:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0815BA8C: .4byte gTasks+0x8
_0815BA90: .4byte gPaletteFade
_0815BA94: .4byte gUnknown_8479390
_0815BA98: .4byte gTeachyTV_StaticResources
_0815BA9C: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs
thumb_func_end TeachyTvPostBattleFadeControl
thumb_func_start TeachyTvGrassAnimationMain
TeachyTvGrassAnimationMain: @ 815BAA0
push {r4-r7,lr}
@@ -436,8 +255,8 @@ _0815BC88: .4byte 0x00004005
_0815BC8C: .4byte 0x00004004
thumb_func_end sub_815BC40
thumb_func_start sub_815BC90
sub_815BC90: @ 815BC90
thumb_func_start TeachyTvPrepBattle
TeachyTvPrepBattle: @ 815BC90
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
@@ -488,7 +307,7 @@ _0815BCE2:
.align 2, 0
_0815BCFC: .4byte gTasks
_0815BD00: .4byte sub_815BD04
thumb_func_end sub_815BC90
thumb_func_end TeachyTvPrepBattle
thumb_func_start sub_815BD04
sub_815BD04: @ 815BD04
+84 -10
View File
@@ -45,15 +45,16 @@ extern struct SpritePalette gUnknown_83A5348;
extern void (**gUnknown_8479548)(u8);
extern char * gUnknown_8479560;
extern char * gUnknown_8479578;
extern void *gUnknown_203F450; // tilemap pointer location
extern u8 gUnknown_8E86240; // tilemap
extern void *gUnknown_203F450;
extern u8 gUnknown_8E86240;
extern u8 gUnknown_8E86BE8;
extern u8 gUnknown_8E86D6C;
extern u8 gUnknown_8E86F98; // pal
extern u8 gUnknown_8E86F98;
extern struct ListMenuTemplate gUnknown_8479368;
extern struct ListMenuItem gUnknown_8479340;
extern struct WindowTemplate gUnknown_84792F0;
extern u8 gUnknown_8479590;
extern u8 gUnknown_8479390;
void C2TeachyTv();
void C2TeachyTvMainCallback();
@@ -75,17 +76,21 @@ void TeachyTvOptionListController(u8);
void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
void TeachyTvQuitFadeControlAndTaskDel(u8 taskId);
void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId);
void TeachyTvClearBg1EndGraphicalText();
void TeachyTvClearBg1EndGraphicText();
void TeachyTvBackToOptionList(u8 taskId);
void TeachyTvSetupBagItemsByOptionChosen();
void TeachyTvPrepBattle(u8 taskId);
void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16);
extern void sub_815BD80(void *);
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
extern void sub_8055DC4();
extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
extern bool16 sub_80BF518(u8 textPrinterId);
extern void _call_via_r1(s32 arg, void *func);
extern void TeachyTvBackToOptionList(u8 taskId);
extern void sub_810B108(u8);
void C2TeachyTv()
{
@@ -638,7 +643,7 @@ void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
TeachyTvSetSpriteCoordsAndSwitchFrame(*((char *)data + 2), 0, 0, 0);
FillWindowPixelBuffer(0, 0xCCu);
CopyWindowToVram(0, 2u);
TeachyTvClearBg1EndGraphicalText();
TeachyTvClearBg1EndGraphicText();
data[2] = v4;
data[3] = v4;
gTasks[taskId].func = TeachyTvBackToOptionList;
@@ -796,14 +801,83 @@ void TeachyTvClusFuncRenderAndRemoveBg1EndGraphic(u8 taskId)
data[2] = temp;
if ( (s16)temp > 126 )
{
TeachyTvClearBg1EndGraphicalText();
TeachyTvClearBg1EndGraphicText();
(u16)data[2] = 0;
++(u16)data[3];
}
}
void TeachyTvClearBg1EndGraphicalText()
void TeachyTvClearBg1EndGraphicText()
{
FillBgTilemapBufferRect_Palette0(1u, 0, 0x14u, 0xAu, 8u, 2u);
schedule_bg_copy_tilemap_to_vram(1u);
}
}
void TeachyTvBackToOptionList(u8 taskId)
{
s16 *data;
s32 temp;
data = gTasks[taskId].data;
if ( !data[2] )
PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
TeachyTvBg2AnimController();
temp = (u16)data[2] + 1;
data[2] = temp;
if ( (s16)temp > 0x3F )
{
data[2] = 0;
data[3] = 0;
*data = TeachyTvSetupWindow();
gTasks[taskId].func = TeachyTvOptionListController;
PutWindowTilemap(0);
TeachyTvSetupScrollIndicatorArrowPair();
TeachyTvSetWindowRegs();
schedule_bg_copy_tilemap_to_vram(0);
ChangeBgX(3u, 0, 0);
ChangeBgY(3u, 0, 0);
ChangeBgX(3u, 0x1000u, 2u);
ChangeBgY(3u, 0x2800u, 1u);
((u8*)gUnknown_203F450)[0x4004] = 0;
((u8*)gUnknown_203F450)[0x4005] = 3;
((u8*)gUnknown_203F450)[0x4006] = 0;
}
}
void TeachyTvChainTaskBattleOrFadeByOptionChosen(u8 taskId)
{
int op = gTeachyTV_StaticResources.optionChosen;
if( op < 0 )
return;
if ( op <= 3 )
{
TeachyTvPrepBattle(taskId);
}
else if ( op <= 5 )
{
*((void(**)())gUnknown_203F450) = TeachyTvSetupBagItemsByOptionChosen;
TeachyTvQuitBeginFade(taskId);
}
}
void TeachyTvSetupBagItemsByOptionChosen()
{
if ( gTeachyTV_StaticResources.optionChosen == 4 )
sub_810B108(0xAu);
else
sub_810B108(9u);
}
void TeachyTvPostBattleFadeControl(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if ( !(gPaletteFade.active) )
{
u8* funcIdx = &gUnknown_8479390;
int arg = funcIdx[gTeachyTV_StaticResources.optionChosen];
data[3] = arg;
gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs;
}
}