summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-05 13:25:28 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-05 13:25:28 +0800
commit66b8dafbfce85a5976f97db464c5001a4347a8fb (patch)
treedfcbf9176572a8516f793da096ea2edcd2559df1
parent1ffb8f667ca0408a84e79203146bc20b2b6e0412 (diff)
small functions
-rw-r--r--asm/teachy_tv.s187
-rw-r--r--src/teachy_tv.c94
2 files changed, 87 insertions, 194 deletions
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index 6efed0c4d..52d3683c2 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -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
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 0513360cb..d274e18ec 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -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);
-} \ No newline at end of file
+}
+
+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;
+ }
+}
+