summaryrefslogtreecommitdiff
path: root/src
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 /src
parent1ffb8f667ca0408a84e79203146bc20b2b6e0412 (diff)
small functions
Diffstat (limited to 'src')
-rw-r--r--src/teachy_tv.c94
1 files changed, 84 insertions, 10 deletions
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;
+ }
+}
+