goobye, goto!

This commit is contained in:
jiangzhengwenjz
2019-06-09 04:37:34 +08:00
parent 5110cafe24
commit ec5dd73767
+58 -60
View File
@@ -63,6 +63,15 @@ extern struct SpriteTemplate *gUnknown_83A0010;
extern u8 gUnknown_84795C8; extern u8 gUnknown_84795C8;
extern struct MapData Route1_Layout; extern struct MapData Route1_Layout;
extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16);
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
extern void sub_8055DC4();
extern bool16 sub_80BF518(u8 textPrinterId);
extern void _call_via_r1(s32 arg, void *func);
extern void sub_810B108(u8);
extern void sub_8159F40();
void TeachyTvCallback(); void TeachyTvCallback();
void TeachyTvMainCallback(); void TeachyTvMainCallback();
void TeachyTvVblankHandler(); void TeachyTvVblankHandler();
@@ -97,15 +106,6 @@ void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile); u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
void TeachyTvLoadMapPalette(struct MapData *mStruct, u8 *palIndexArray); void TeachyTvLoadMapPalette(struct MapData *mStruct, u8 *palIndexArray);
extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16);
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
extern void sub_8055DC4();
extern bool16 sub_80BF518(u8 textPrinterId);
extern void _call_via_r1(s32 arg, void *func);
extern void sub_810B108(u8);
extern void sub_8159F40();
void TeachyTvCallback() void TeachyTvCallback()
{ {
RunTasks(); RunTasks();
@@ -161,59 +161,57 @@ void TeachyTvMainCallback()
u32 x; u32 x;
state = gMain.state; state = gMain.state;
if ( !state ) switch(state)
goto RESETANDLOAD;
else if ( state == 1 )
goto SETDMATOVRAM;
else
return;
RESETANDLOAD:
memBuf = (u8 **)&gUnknown_203F450;
(*memBuf) = (u8*)AllocZeroed(0x4008u);
*(u32*)gUnknown_203F450 = (u32)state;
*((u8*)gUnknown_203F450 + 0x4006) = state;
*((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
VblankHblankHandlerSetZero();
clear_scheduled_bg_copies_to_vram();
ScanlineEffect_Stop();
FreeAllSpritePalettes();
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
TeachyTvSetupBg();
TeachyTvLoadGraphic();
++gMain.state;
return;
SETDMATOVRAM:
if( free_temp_tile_data_buffers_if_possible() == 1 )
return;
TeachyTvCreateAndRenderRbox();
TeachyTvInitIo();
if ( gTeachyTV_StaticResources.mode == 2 )
{ {
taskId = CreateTask(TeachyTvPostBattleFadeControl, 0); case 0:
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam(); memBuf = (u8 **)&gUnknown_203F450;
TeachyTvSetupPostBattleWindowAndObj(taskId); (*memBuf) = (u8*)AllocZeroed(0x4008u);
*(u32*)gUnknown_203F450 = (u32)state;
*((u8*)gUnknown_203F450 + 0x4006) = state;
*((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
VblankHblankHandlerSetZero();
clear_scheduled_bg_copies_to_vram();
ScanlineEffect_Stop();
FreeAllSpritePalettes();
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
TeachyTvSetupBg();
TeachyTvLoadGraphic();
++gMain.state;
break;
case 1:
if( free_temp_tile_data_buffers_if_possible() == 1 )
return;
TeachyTvCreateAndRenderRbox();
TeachyTvInitIo();
if ( gTeachyTV_StaticResources.mode == 2 )
{
taskId = CreateTask(TeachyTvPostBattleFadeControl, 0);
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
TeachyTvSetupPostBattleWindowAndObj(taskId);
}
else
{
taskId = CreateTask(TeachyTvOptionListController, 0);
x = (u32)TeachyTvSetupWindow();
gTasks[taskId].data[0] = (x << 24) >> 24;
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
TeachyTvSetupScrollIndicatorArrowPair();
PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
TeachyTvSetWindowRegs();
}
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1u);
schedule_bg_copy_tilemap_to_vram(2u);
schedule_bg_copy_tilemap_to_vram(3u);
sub_812B1E0(9); // help system something
BlendPalettes(0xFFFFFFFF, 0x10u, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10u, 0, 0);
SetVBlankCallback(TeachyTvVblankHandler);
SetMainCallback2(TeachyTvCallback);
break;
} }
else
{
taskId = CreateTask(TeachyTvOptionListController, 0);
x = (u32)TeachyTvSetupWindow();
gTasks[taskId].data[0] = (x << 24) >> 24;
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
TeachyTvSetupScrollIndicatorArrowPair();
PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
TeachyTvSetWindowRegs();
}
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1u);
schedule_bg_copy_tilemap_to_vram(2u);
schedule_bg_copy_tilemap_to_vram(3u);
sub_812B1E0(9); // help system something
BlendPalettes(0xFFFFFFFF, 0x10u, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10u, 0, 0);
SetVBlankCallback(TeachyTvVblankHandler);
SetMainCallback2(TeachyTvCallback);
} }
void TeachyTvSetupBg() void TeachyTvSetupBg()