fixed everything except struct

This commit is contained in:
jiangzhengwenjz
2019-06-10 02:34:06 +08:00
parent 292b5fecab
commit 5ec40a2acd
+190 -191
View File
@@ -30,38 +30,38 @@
#include "global.fieldmap.h" #include "global.fieldmap.h"
#include "teachy_tv.h" #include "teachy_tv.h"
typedef struct { struct TeachyTvCtrlBlk
{
void (*callback)(); void (*callback)();
u8 mode; u8 mode;
u8 optionChosen; u8 optionChosen;
u16 scrollOffset; u16 scrollOffset;
u16 selectedRow; u16 selectedRow;
u16 filler; u16 filler;
} TeachyTv_s; };
extern TeachyTv_s gTeachyTV_StaticResources; extern struct TeachyTvCtrlBlk gTeachyTV_StaticResources;
extern void * gUnknown_203F450; extern void * gUnknown_203F450;
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380; extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
extern char gUnknown_841B83D; extern const char gUnknown_841B83D;
extern struct BgTemplate gUnknown_84792E0; extern const struct BgTemplate gUnknown_84792E0;
extern struct SpritePalette gUnknown_83A5348; extern const struct SpritePalette gUnknown_83A5348;
extern void (**gUnknown_8479548)(u8); extern void (**gUnknown_8479548)(u8);
extern char * gUnknown_8479560; extern const char * const gUnknown_8479560;
extern char * gUnknown_8479578; extern const char * const gUnknown_8479578;
extern void *gUnknown_203F450; extern const u8 gUnknown_8E86240;
extern u8 gUnknown_8E86240; extern const u8 gUnknown_8E86BE8;
extern u8 gUnknown_8E86BE8; extern const u8 gUnknown_8E86D6C;
extern u8 gUnknown_8E86D6C; extern const u8 gUnknown_8E86F98;
extern u8 gUnknown_8E86F98; extern const struct ListMenuTemplate gUnknown_8479368;
extern struct ListMenuTemplate gUnknown_8479368; extern const struct ListMenuItem gUnknown_8479340;
extern struct ListMenuItem gUnknown_8479340; extern const struct WindowTemplate gUnknown_84792F0;
extern struct WindowTemplate gUnknown_84792F0; extern const u8 gUnknown_8479590;
extern u8 gUnknown_8479590; extern const u8 gUnknown_8479390;
extern u8 gUnknown_8479390; extern const struct SubspriteTable gUnknown_84795B8;
extern struct SubspriteTable gUnknown_84795B8; extern const struct SpriteTemplate * const gUnknown_83A0010;
extern struct SpriteTemplate *gUnknown_83A0010; extern const u8 gUnknown_84795C8;
extern u8 gUnknown_84795C8; extern const struct MapData Route1_Layout;
extern struct MapData Route1_Layout;
extern void VblankHblankHandlerSetZero(); extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16); extern void sub_812B1E0(u16);
@@ -104,7 +104,7 @@ void TeachyTvPushBackNewMapPalIndexArrayEntry(struct MapData *mStruct, u16 *buf1
void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blockBuf, u8 *tileset); void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blockBuf, u8 *tileset);
void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile); void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile);
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile); u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
void TeachyTvLoadMapPalette(struct MapData *mStruct, u8 *palIndexArray); void TeachyTvLoadMapPalette(const struct MapData *const mStruct, u8 *palIndexArray);
void TeachyTvCallback() void TeachyTvCallback()
{ {
@@ -124,24 +124,24 @@ void TeachyTvVblankHandler()
void sub_815ABC4(u8 mode, void (*cb)()) void sub_815ABC4(u8 mode, void (*cb)())
{ {
TeachyTv_s *resAddr = &gTeachyTV_StaticResources; struct TeachyTvCtrlBlk *resAddr = &gTeachyTV_StaticResources;
u16 zero = 0; u16 zero = 0;
resAddr->mode = mode; resAddr->mode = mode;
resAddr->callback = cb; resAddr->callback = cb;
if(!mode) if (!mode)
{ {
resAddr->scrollOffset = zero; resAddr->scrollOffset = zero;
resAddr->selectedRow = zero; resAddr->selectedRow = zero;
resAddr->optionChosen = 0; resAddr->optionChosen = 0;
} }
if(mode == 1) if (mode == 1)
resAddr->mode = 0; resAddr->mode = 0;
SetMainCallback2(TeachyTvMainCallback); SetMainCallback2(TeachyTvMainCallback);
} }
void sub_815ABFC() void sub_815ABFC()
{ {
if(gTeachyTV_StaticResources.mode == 1) if (gTeachyTV_StaticResources.mode == 1)
sub_815ABC4(1, gTeachyTV_StaticResources.callback); sub_815ABC4(1, gTeachyTV_StaticResources.callback);
else else
sub_815ABC4(2, gTeachyTV_StaticResources.callback); sub_815ABC4(2, gTeachyTV_StaticResources.callback);
@@ -161,11 +161,11 @@ void TeachyTvMainCallback()
u32 x; u32 x;
state = gMain.state; state = gMain.state;
switch(state) switch (state)
{ {
case 0: case 0:
memBuf = (u8 **)&gUnknown_203F450; memBuf = (u8 **)&gUnknown_203F450;
(*memBuf) = (u8*)AllocZeroed(0x4008u); (*memBuf) = (u8*)AllocZeroed(0x4008);
*(u32*)gUnknown_203F450 = (u32)state; *(u32*)gUnknown_203F450 = (u32)state;
*((u8*)gUnknown_203F450 + 0x4006) = state; *((u8*)gUnknown_203F450 + 0x4006) = state;
*((u8*)gUnknown_203F450 + 0x4007) = 0xFF; *((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
@@ -181,7 +181,7 @@ void TeachyTvMainCallback()
++gMain.state; ++gMain.state;
break; break;
case 1: case 1:
if( free_temp_tile_data_buffers_if_possible() == 1 ) if ( free_temp_tile_data_buffers_if_possible() == 1 )
return; return;
TeachyTvCreateAndRenderRbox(); TeachyTvCreateAndRenderRbox();
TeachyTvInitIo(); TeachyTvInitIo();
@@ -202,12 +202,12 @@ void TeachyTvMainCallback()
TeachyTvSetWindowRegs(); TeachyTvSetWindowRegs();
} }
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1u); schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2u); schedule_bg_copy_tilemap_to_vram(2);
schedule_bg_copy_tilemap_to_vram(3u); schedule_bg_copy_tilemap_to_vram(3);
sub_812B1E0(9); // help system something sub_812B1E0(9); // help system something
BlendPalettes(0xFFFFFFFF, 0x10u, 0); BlendPalettes(0xFFFFFFFF, 0x10, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10u, 0, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
SetVBlankCallback(TeachyTvVblankHandler); SetVBlankCallback(TeachyTvVblankHandler);
SetMainCallback2(TeachyTvCallback); SetMainCallback2(TeachyTvCallback);
break; break;
@@ -218,17 +218,17 @@ void TeachyTvSetupBg()
{ {
InitBgReg(); InitBgReg();
ResetBgsAndClearDma3BusyFlags(0); ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, &gUnknown_84792E0, 4u); InitBgsFromTemplates(0, &gUnknown_84792E0, 4);
SetBgTilemapBuffer(1u, (u8 *)gUnknown_203F450 + 4); SetBgTilemapBuffer(1, (u8 *)gUnknown_203F450 + 4);
SetBgTilemapBuffer(2u, (u8 *)gUnknown_203F450 + 0x1004); SetBgTilemapBuffer(2, (u8 *)gUnknown_203F450 + 0x1004);
SetBgTilemapBuffer(3u, (u8 *)gUnknown_203F450 + 0x2004); SetBgTilemapBuffer(3, (u8 *)gUnknown_203F450 + 0x2004);
SetGpuReg(REG_OFFSET_DISPCNT, 0x3040u); SetGpuReg(REG_OFFSET_DISPCNT, 0x3040);
ShowBg(0); ShowBg(0);
ShowBg(1u); ShowBg(1);
ShowBg(2u); ShowBg(2);
ShowBg(3u); ShowBg(3);
ChangeBgX(3u, 0x1000u, 2u); ChangeBgX(3, 0x1000, 2);
ChangeBgY(3u, 0x2800u, 1u); ChangeBgY(3, 0x2800, 1);
*((u8 *)gUnknown_203F450 + 0x4004) = 0; *((u8 *)gUnknown_203F450 + 0x4004) = 0;
*((u8 *)gUnknown_203F450 + 0x4005) = 3; *((u8 *)gUnknown_203F450 + 0x4005) = 3;
SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDCNT, 0);
@@ -239,12 +239,12 @@ void TeachyTvLoadGraphic()
u16 src; u16 src;
src = 0; src = 0;
reset_temp_tile_data_buffers(); reset_temp_tile_data_buffers();
decompress_and_copy_tile_data_to_vram(1u, &gUnknown_8E86240, 0, 0, 0); decompress_and_copy_tile_data_to_vram(1, &gUnknown_8E86240, 0, 0, 0);
LZDecompressWram((u8 *)&gUnknown_8E86BE8, (*(u8 **)&gUnknown_203F450) + 4); LZDecompressWram(&gUnknown_8E86BE8, (*(u8 **)&gUnknown_203F450) + 0x4);
LZDecompressWram((u8 *)&gUnknown_8E86D6C, (*(u8 **)&gUnknown_203F450) + 0x3004); LZDecompressWram(&gUnknown_8E86D6C, (*(u8 **)&gUnknown_203F450) + 0x3004);
LoadCompressedPalette(&gUnknown_8E86F98, 0, 0x80u); LoadCompressedPalette(&gUnknown_8E86F98, 0, 0x80);
LoadPalette(&src, 0, 2u); LoadPalette(&src, 0, 2);
LoadSpritePalette((struct SpritePalette *)&gUnknown_83A5348); LoadSpritePalette(&gUnknown_83A5348);
TeachyTvLoadBg3Map((u8 *)gUnknown_203F450 + 0x2004); TeachyTvLoadBg3Map((u8 *)gUnknown_203F450 + 0x2004);
} }
@@ -252,10 +252,10 @@ void TeachyTvCreateAndRenderRbox()
{ {
InitWindows(&gUnknown_84792F0); InitWindows(&gUnknown_84792F0);
DeactivateAllTextPrinters(); DeactivateAllTextPrinters();
FillWindowPixelBuffer(0, 0xCCu); FillWindowPixelBuffer(0, 0xCC);
PutWindowTilemap(0); PutWindowTilemap(0);
PutWindowTilemap(1u); PutWindowTilemap(1);
CopyWindowToVram(0, 2u); CopyWindowToVram(0, 2);
} }
u8 TeachyTvSetupWindow() u8 TeachyTvSetupWindow()
@@ -264,7 +264,7 @@ u8 TeachyTvSetupWindow()
gMultiuseListMenuTemplate = gUnknown_8479368; gMultiuseListMenuTemplate = gUnknown_8479368;
gMultiuseListMenuTemplate.windowId = 1; gMultiuseListMenuTemplate.windowId = 1;
gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput; gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u); hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1);
if ( !(hasItem << 24) ) if ( !(hasItem << 24) )
{ {
gMultiuseListMenuTemplate.items = &gUnknown_8479340; gMultiuseListMenuTemplate.items = &gUnknown_8479340;
@@ -281,7 +281,7 @@ u8 TeachyTvSetupWindow()
void TeachyTvSetupScrollIndicatorArrowPair() void TeachyTvSetupScrollIndicatorArrowPair()
{ {
int hasItem; int hasItem;
hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u); hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1);
if ( ! hasItem << 24 ) if ( ! hasItem << 24 )
{ {
u8 * temp = (u8 *)gUnknown_203F450; u8 * temp = (u8 *)gUnknown_203F450;
@@ -316,10 +316,10 @@ void TeachyTvAudioByInput(s32 notUsed, bool8 play, struct ListMenu *notUsedAlt)
void TeachyTvInitIo() void TeachyTvInitIo()
{ {
SetGpuReg(REG_OFFSET_WININ, 0x3Fu); SetGpuReg(REG_OFFSET_WININ, 0x3F);
SetGpuReg(REG_OFFSET_WINOUT, 0x1Fu); SetGpuReg(REG_OFFSET_WINOUT, 0x1F);
SetGpuReg(REG_OFFSET_BLDCNT, 0xCCu); SetGpuReg(REG_OFFSET_BLDCNT, 0xCC);
SetGpuReg(REG_OFFSET_BLDY, 5u); SetGpuReg(REG_OFFSET_BLDY, 5);
} }
u8 TeachyTvSetupObjEventAndOam() u8 TeachyTvSetupObjEventAndOam()
@@ -340,8 +340,8 @@ void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
void TeachyTvSetWindowRegs() void TeachyTvSetWindowRegs()
{ {
SetGpuReg(REG_OFFSET_WIN0V, 0xC64u); SetGpuReg(REG_OFFSET_WIN0V, 0xC64);
SetGpuReg(REG_OFFSET_WIN0H, 0x1CD4u); SetGpuReg(REG_OFFSET_WIN0H, 0x1CD4);
} }
void TeachyTvClearWindowRegs() void TeachyTvClearWindowRegs()
@@ -353,28 +353,26 @@ void TeachyTvClearWindowRegs()
void TeachyTvBg2AnimController() void TeachyTvBg2AnimController()
{ {
u16 *tilemapBuffer; u16 *tilemapBuffer;
u8 counter; u8 i;
u32 offset2; u32 offset, offset2, j;
u32 offset;
u32 counter2;
tilemapBuffer = (u16 *)GetBgTilemapBuffer(2u); tilemapBuffer = (u16 *)GetBgTilemapBuffer(2);
counter = 1; i = 1;
do do
{ {
offset2 = 2; offset2 = 2;
offset = 0x20 * counter; offset = 0x20 * i;
counter2 = counter + 1; j = i + 1;
do do
{ {
tilemapBuffer[offset + offset2] = ((Random() & 3) << 10) + 0x301F; tilemapBuffer[offset + offset2] = ((Random() & 3) << 10) + 0x301F;
offset2 = (offset2 + 1) << 0x18 >> 0x18; offset2 = (offset2 + 1) << 0x18 >> 0x18;
} }
while ( offset2 <= 0x1B ); while ( offset2 <= 0x1B );
counter = counter2; i = j;
} }
while ( counter2 << 0x18 >> 0x18 <= 0xCu ); while ( j << 0x18 >> 0x18 <= 0xC );
schedule_bg_copy_tilemap_to_vram(2u); schedule_bg_copy_tilemap_to_vram(2);
} }
void TeachyTvSetupPostBattleWindowAndObj(u8 taskId) void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
@@ -384,7 +382,7 @@ void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
struct Sprite *v3 = &gSprites[v1]; struct Sprite *v3 = &gSprites[v1];
int op; int op;
ClearWindowTilemap(1u); ClearWindowTilemap(1);
TeachyTvClearWindowRegs(); TeachyTvClearWindowRegs();
op = gTeachyTV_StaticResources.optionChosen; op = gTeachyTV_StaticResources.optionChosen;
if ( op >= 0 ) if ( op >= 0 )
@@ -392,8 +390,8 @@ void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
if ( op <= 3 ) if ( op <= 3 )
{ {
TeachyTvSetSpriteCoordsAndSwitchFrame(((char*)v2)[2], 0x78, 0x38, 0); TeachyTvSetSpriteCoordsAndSwitchFrame(((char*)v2)[2], 0x78, 0x38, 0);
ChangeBgX(3u, 0x3000u, 1u); ChangeBgX(3, 0x3000, 1);
ChangeBgY(3u, 0x3000u, 2u); ChangeBgY(3, 0x3000, 2);
*((u8 *)gUnknown_203F450 + 0x4004) += 3; *((u8 *)gUnknown_203F450 + 0x4004) += 3;
*((u8 *)gUnknown_203F450 + 0x4005) -= 3; *((u8 *)gUnknown_203F450 + 0x4005) -= 3;
} }
@@ -403,15 +401,15 @@ 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, 1);
} }
void TeachyTvInitTextPrinter(char *text) void TeachyTvInitTextPrinter(const char *text)
{ {
u8 spd; u8 spd;
gTextFlags.autoScroll = 0; gTextFlags.autoScroll = 0;
spd = GetTextSpeedSetting(); spd = GetTextSpeedSetting();
AddTextPrinterParameterized2(0, 4u, (const u8 *)text, spd, 0, 1u, 0xCu, 3u); AddTextPrinterParameterized2(0, 4, (const char *)text, spd, 0, 1, 0xC, 3);
} }
void TeachyTvFree() void TeachyTvFree()
@@ -423,7 +421,7 @@ void TeachyTvFree()
void TeachyTvQuitBeginFade(u8 taskId) void TeachyTvQuitBeginFade(u8 taskId)
{ {
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10u, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
gTasks[taskId].func = TeachyTvQuitFadeControlAndTaskDel; gTasks[taskId].func = TeachyTvQuitFadeControlAndTaskDel;
} }
@@ -469,7 +467,7 @@ void TeachyTvOptionListController(u8 taskId)
gTeachyTV_StaticResources.optionChosen = v3; gTeachyTV_StaticResources.optionChosen = v3;
DestroyListMenu(*v2, &gTeachyTV_StaticResources.scrollOffset, &gTeachyTV_StaticResources.selectedRow); DestroyListMenu(*v2, &gTeachyTV_StaticResources.scrollOffset, &gTeachyTV_StaticResources.selectedRow);
TeachyTvClearWindowRegs(); TeachyTvClearWindowRegs();
ClearWindowTilemap(1u); ClearWindowTilemap(1);
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
TeachyTvRemoveScrollIndicatorArrowPair(); TeachyTvRemoveScrollIndicatorArrowPair();
*((u16 *)v2 + 3) = 0; *((u16 *)v2 + 3) = 0;
@@ -587,9 +585,9 @@ void TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId)
data[2] = counter; data[2] = counter;
if ( (s16)counter > 63 ) if ( (s16)counter > 63 )
{ {
CopyToBgTilemapBufferRect_ChangePalette(2u, (u8 *)gUnknown_203F450 + 0x3004, 0, 0, 0x20u, 0x20u, 0x11u); CopyToBgTilemapBufferRect_ChangePalette(2, (u8 *)gUnknown_203F450 + 0x3004, 0, 0, 0x20, 0x20, 0x11);
TeachyTvSetSpriteCoordsAndSwitchFrame(((u8*)data)[2], 8, 0x38, 7u); TeachyTvSetSpriteCoordsAndSwitchFrame(((u8*)data)[2], 8, 0x38, 7);
schedule_bg_copy_tilemap_to_vram(2u); schedule_bg_copy_tilemap_to_vram(2);
data[2] = 0; data[2] = 0;
++data[3]; ++data[3];
PlayNewMapMusic(BGM_FRLG_FOLLOW_ME); PlayNewMapMusic(BGM_FRLG_FOLLOW_ME);
@@ -606,8 +604,8 @@ void TeachyTvClusFuncClearBg2TeachyTvGraphic(u8 taskId)
data[2] = counter; data[2] = counter;
if ( (s16)counter == 134 ) if ( (s16)counter == 134 )
{ {
FillBgTilemapBufferRect_Palette0(2u, 0, 2u, 1u, 0x1Au, 0xCu); FillBgTilemapBufferRect_Palette0(2, 0, 2, 1, 0x1A, 0xC);
schedule_bg_copy_tilemap_to_vram(2u); schedule_bg_copy_tilemap_to_vram(2);
data[2] = 0; data[2] = 0;
++data[3]; ++data[3];
} }
@@ -652,8 +650,8 @@ void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
u32 v4 = 0; u32 v4 = 0;
offset[0] = 1; offset[0] = 1;
TeachyTvSetSpriteCoordsAndSwitchFrame(*((char *)data + 2), 0, 0, 0); TeachyTvSetSpriteCoordsAndSwitchFrame(*((char *)data + 2), 0, 0, 0);
FillWindowPixelBuffer(0, 0xCCu); FillWindowPixelBuffer(0, 0xCC);
CopyWindowToVram(0, 2u); CopyWindowToVram(0, 2);
TeachyTvClearBg1EndGraphicText(); TeachyTvClearBg1EndGraphicText();
data[2] = v4; data[2] = v4;
data[3] = v4; data[3] = v4;
@@ -672,7 +670,7 @@ void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId) void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId)
{ {
u16 *data = (u16 *)gTasks[taskId].data; u16 *data = (u16 *)gTasks[taskId].data;
char ** texts = &gUnknown_8479560; const char * const* texts = &gUnknown_8479560;
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]); TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
++data[3]; ++data[3];
} }
@@ -680,7 +678,7 @@ void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId)
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId) void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId)
{ {
u16 *data = (u16 *)gTasks[taskId].data; u16 *data = (u16 *)gTasks[taskId].data;
char ** texts = &gUnknown_8479578; const char * const* texts = &gUnknown_8479578;
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]); TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
++data[3]; ++data[3];
} }
@@ -698,8 +696,8 @@ void TeachyTvClusFuncEraseTextWindowIfKeyPressed(u8 taskId)
data = (u16 *)gTasks[taskId].data; data = (u16 *)gTasks[taskId].data;
if ( gMain.newKeys & 3 ) if ( gMain.newKeys & 3 )
{ {
FillWindowPixelBuffer(0, 0xCCu); FillWindowPixelBuffer(0, 0xCC);
CopyWindowToVram(0, 2u); CopyWindowToVram(0, 2);
++data[3]; ++data[3];
} }
} }
@@ -708,7 +706,7 @@ void TeachyTvClusFuncStartAnimNpcWalkIntoGrass(u8 taskId)
{ {
u16 *data; u16 *data;
data = (u16 *)gTasks[taskId].data; data = (u16 *)gTasks[taskId].data;
StartSpriteAnim(&gSprites[(s16)data[1]], 5u); StartSpriteAnim(&gSprites[(s16)data[1]], 5);
data[2] = 0; data[2] = 0;
data[4] = 0; data[4] = 0;
data[5] = 1; data[5] = 1;
@@ -718,26 +716,26 @@ void TeachyTvClusFuncStartAnimNpcWalkIntoGrass(u8 taskId)
void TeachyTvClusFuncDudeMoveUp(u8 taskId) void TeachyTvClusFuncDudeMoveUp(u8 taskId)
{ {
s16 *data; s16 *data;
struct Sprite *v3; struct Sprite *obj;
int temp; int temp;
int v4; int counter;
data = gTasks[taskId].data; data = gTasks[taskId].data;
v3 = &gSprites[data[1]]; obj = &gSprites[data[1]];
ChangeBgY(3u, 0x100u, 2u); ChangeBgY(3, 0x100, 2);
v4 = (u16)data[2] + 1; counter = (u16)data[2] + 1;
((u16*)data)[2] = v4; ((u16*)data)[2] = counter;
if ( !( v4 % 16 ) ) if ( !( counter % 16 ) )
{ {
--((u8*)gUnknown_203F450)[0x4005]; --((u8*)gUnknown_203F450)[0x4005];
TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 0); TeachyTvGrassAnimationMain(taskId, obj->pos2.x, obj->pos2.y, 0, 0);
} }
if ( data[2] == 0x30 ) if ( data[2] == 0x30 )
{ {
data[2] = 0; data[2] = 0;
data[4] = -1; data[4] = -1;
data[5] = 0; data[5] = 0;
StartSpriteAnim(v3, 7u); StartSpriteAnim(obj, 7);
++data[3]; ++data[3];
} }
} }
@@ -745,24 +743,24 @@ void TeachyTvClusFuncDudeMoveUp(u8 taskId)
void TeachyTvClusFuncDudeMoveRight(u8 taskId) void TeachyTvClusFuncDudeMoveRight(u8 taskId)
{ {
u16 *data; u16 *data;
struct Sprite *v3; struct Sprite *obj;
int v4; int counter;
data = (u16 *)gTasks[taskId].data; data = (u16 *)gTasks[taskId].data;
v3 = &gSprites[(s16)data[1]]; obj = &gSprites[(s16)data[1]];
ChangeBgX(3u, 0x100u, 1u); ChangeBgX(3, 0x100, 1);
v4 = data[2] + 1; counter = data[2] + 1;
data[2] = v4; data[2] = counter;
if ( !(v4 & 0xF) ) if ( !(counter & 0xF) )
++((u8*)gUnknown_203F450)[0x4004]; ++((u8*)gUnknown_203F450)[0x4004];
if ( !((((s16*)data)[2] + 8) & 0xF) ) if ( !((((s16*)data)[2] + 8) & 0xF) )
TeachyTvGrassAnimationMain(taskId, v3->pos2.x + 8, v3->pos2.y, 0, 0); TeachyTvGrassAnimationMain(taskId, obj->pos2.x + 8, obj->pos2.y, 0, 0);
if ( (s16)data[2] == 0x30 ) if ( (s16)data[2] == 0x30 )
{ {
data[2] = 0; data[2] = 0;
data[4] = 0; data[4] = 0;
data[5] = 0; data[5] = 0;
StartSpriteAnim(v3, 3u); StartSpriteAnim(obj, 3);
++data[3]; ++data[3];
} }
} }
@@ -774,7 +772,7 @@ void TeachyTvClusFuncDudeTurnLeft(u8 taskId)
data = gTasks[taskId].data; data = gTasks[taskId].data;
v3 = &gSprites[data[1]]; v3 = &gSprites[data[1]];
StartSpriteAnim(v3, 6u); StartSpriteAnim(v3, 6);
++(u16)data[3]; ++(u16)data[3];
data[4] = 0; data[4] = 0;
data[5] = 0; data[5] = 0;
@@ -805,8 +803,8 @@ void TeachyTvClusFuncRenderAndRemoveBg1EndGraphic(u8 taskId)
data = gTasks[taskId].data; data = gTasks[taskId].data;
if ( !data[2] ) if ( !data[2] )
{ {
CopyToBgTilemapBufferRect_ChangePalette(1u, &gUnknown_8479590, 0x14u, 0xAu, 8u, 2u, 0x11u); CopyToBgTilemapBufferRect_ChangePalette(1, &gUnknown_8479590, 0x14, 0xA, 8, 2, 0x11);
schedule_bg_copy_tilemap_to_vram(1u); schedule_bg_copy_tilemap_to_vram(1);
} }
temp = (u16)data[2] + 1; temp = (u16)data[2] + 1;
data[2] = temp; data[2] = temp;
@@ -820,8 +818,8 @@ void TeachyTvClusFuncRenderAndRemoveBg1EndGraphic(u8 taskId)
void TeachyTvClearBg1EndGraphicText() void TeachyTvClearBg1EndGraphicText()
{ {
FillBgTilemapBufferRect_Palette0(1u, 0, 0x14u, 0xAu, 8u, 2u); FillBgTilemapBufferRect_Palette0(1, 0, 0x14, 0xA, 8, 2);
schedule_bg_copy_tilemap_to_vram(1u); schedule_bg_copy_tilemap_to_vram(1);
} }
void TeachyTvBackToOptionList(u8 taskId) void TeachyTvBackToOptionList(u8 taskId)
@@ -845,10 +843,10 @@ void TeachyTvBackToOptionList(u8 taskId)
TeachyTvSetupScrollIndicatorArrowPair(); TeachyTvSetupScrollIndicatorArrowPair();
TeachyTvSetWindowRegs(); TeachyTvSetWindowRegs();
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
ChangeBgX(3u, 0, 0); ChangeBgX(3, 0, 0);
ChangeBgY(3u, 0, 0); ChangeBgY(3, 0, 0);
ChangeBgX(3u, 0x1000u, 2u); ChangeBgX(3, 0x1000, 2);
ChangeBgY(3u, 0x2800u, 1u); ChangeBgY(3, 0x2800, 1);
((u8*)gUnknown_203F450)[0x4004] = 0; ((u8*)gUnknown_203F450)[0x4004] = 0;
((u8*)gUnknown_203F450)[0x4005] = 3; ((u8*)gUnknown_203F450)[0x4005] = 3;
((u8*)gUnknown_203F450)[0x4006] = 0; ((u8*)gUnknown_203F450)[0x4006] = 0;
@@ -858,7 +856,7 @@ void TeachyTvBackToOptionList(u8 taskId)
void TeachyTvChainTaskBattleOrFadeByOptionChosen(u8 taskId) void TeachyTvChainTaskBattleOrFadeByOptionChosen(u8 taskId)
{ {
int op = gTeachyTV_StaticResources.optionChosen; int op = gTeachyTV_StaticResources.optionChosen;
if( op < 0 ) if ( op < 0 )
return; return;
if ( op <= 3 ) if ( op <= 3 )
{ {
@@ -875,9 +873,9 @@ void TeachyTvChainTaskBattleOrFadeByOptionChosen(u8 taskId)
void TeachyTvSetupBagItemsByOptionChosen() void TeachyTvSetupBagItemsByOptionChosen()
{ {
if ( gTeachyTV_StaticResources.optionChosen == 4 ) if ( gTeachyTV_StaticResources.optionChosen == 4 )
sub_810B108(0xAu); sub_810B108(10);
else else
sub_810B108(9u); sub_810B108(9);
} }
void TeachyTvPostBattleFadeControl(u8 taskId) void TeachyTvPostBattleFadeControl(u8 taskId)
@@ -885,7 +883,7 @@ void TeachyTvPostBattleFadeControl(u8 taskId)
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
if ( !(gPaletteFade.active) ) if ( !(gPaletteFade.active) )
{ {
u8* funcIdx = &gUnknown_8479390; const u8* funcIdx = &gUnknown_8479390;
int arg = funcIdx[gTeachyTV_StaticResources.optionChosen]; int arg = funcIdx[gTeachyTV_StaticResources.optionChosen];
data[3] = arg; data[3] = arg;
gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs; gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs;
@@ -898,7 +896,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m
int res; int res;
struct Sprite *obj; struct Sprite *obj;
int objId; int objId;
struct SpriteTemplate **objTemAddr; const struct SpriteTemplate *const *objTemAddr;
subprio = subpriority; subprio = subpriority;
if ( ((u8*)gUnknown_203F450)[0x4006] != 1 ) if ( ((u8*)gUnknown_203F450)[0x4006] != 1 )
@@ -917,7 +915,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m
obj->data[0] = taskId; obj->data[0] = taskId;
if ( mode == 1 ) if ( mode == 1 )
{ {
SeekSpriteAnim(obj, 4u); SeekSpriteAnim(obj, 4);
obj->oam.priority = 2; obj->oam.priority = 2;
} }
else else
@@ -935,26 +933,26 @@ void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite)
u32 diff1, diff2; u32 diff1, diff2;
s16 *data = gTasks[sprite->data[0]].data; s16 *data = gTasks[sprite->data[0]].data;
struct Sprite *objAddr = &gSprites[data[1]]; struct Sprite *objAddr = &gSprites[data[1]];
if(((u8*)gUnknown_203F450)[0x4006] == 1) if (((u8*)gUnknown_203F450)[0x4006] == 1)
DestroySprite(sprite); DestroySprite(sprite);
else { else {
if(!sprite->animCmdIndex) if (!sprite->animCmdIndex)
sprite->subspriteTableNum = 1; sprite->subspriteTableNum = 1;
else else
sprite->subspriteTableNum = 0; sprite->subspriteTableNum = 0;
sprite->pos2.x += (u16)data[4]; sprite->pos2.x += (u16)data[4];
sprite->pos2.y += (u16)data[5]; sprite->pos2.y += (u16)data[5];
if(!sprite->animEnded) if (!sprite->animEnded)
return; return;
sprite->subpriority = 0; sprite->subpriority = 0;
diff1 = (u16)(sprite->pos2.x - objAddr->pos2.x); diff1 = (u16)(sprite->pos2.x - objAddr->pos2.x);
diff2 = (u16)(sprite->pos2.y - objAddr->pos2.y); diff2 = (u16)(sprite->pos2.y - objAddr->pos2.y);
diff1 = ((diff1 << 0x10) + 0xF0000) >> 0x10; diff1 = ((diff1 << 0x10) + 0xF0000) >> 0x10;
if(diff1 <= 0x1E) if (diff1 <= 0x1E)
{ {
if((s16)diff2 > -0x10) if ((s16)diff2 > -0x10)
{ {
if((s16)diff2 <= 0x17) if ((s16)diff2 <= 0x17)
return; return;
} }
} }
@@ -964,15 +962,16 @@ void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite)
u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y) u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y)
{ {
u8 * arr, *ptr; const u8 * arr;
int a, b; u8 *ptr;
if( (x < 0) || (y < 0) ) int high, low;
if ( (x < 0) || (y < 0) )
return 0; return 0;
arr = &gUnknown_84795C8; arr = &gUnknown_84795C8;
ptr = gUnknown_203F450; ptr = gUnknown_203F450;
a = ((y >> 4) + ptr[0x4005]) << 4; high = ((y >> 4) + ptr[0x4005]) << 4;
b = ((x >> 4) + ptr[0x4004]); low = ((x >> 4) + ptr[0x4004]);
return arr[a+b]; return arr[high+low];
} }
void TeachyTvPrepBattle(u8 taskId) void TeachyTvPrepBattle(u8 taskId)
@@ -1001,7 +1000,7 @@ void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId)
int temp; int temp;
data = gTasks[taskId].data; data = gTasks[taskId].data;
switch(data[7]) switch (data[7])
{ {
case 0: case 0:
sub_80D08B8(*((u8*)data + 12)); sub_80D08B8(*((u8*)data + 12));
@@ -1055,12 +1054,12 @@ void TeachyTvLoadBg3Map(void *buffer)
md = &Route1_Layout; md = &Route1_Layout;
v14 = (u8 *)buffer; v14 = (u8 *)buffer;
v17 = 0; v17 = 0;
mapArray = (u16 *)AllocZeroed(0x800u); mapArray = (u16 *)AllocZeroed(0x800);
tileset = AllocZeroed(0x8000u); tileset = AllocZeroed(0x8000);
palIndexArray = Alloc(0x10u); palIndexArray = Alloc(0x10);
memset(palIndexArray, 0xFFu, 0x10u); memset(palIndexArray, 0xFF, 0x10);
TeachyTvLoadMapTilesetToBuffer(md->primaryTileset, (u8 *)tileset, 0x280u); TeachyTvLoadMapTilesetToBuffer(md->primaryTileset, (u8 *)tileset, 0x280);
TeachyTvLoadMapTilesetToBuffer(md->secondaryTileset, (u8 *)tileset + 0x5000, 0x180u); TeachyTvLoadMapTilesetToBuffer(md->secondaryTileset, (u8 *)tileset + 0x5000, 0x180);
v2 = 0; v2 = 0;
do do
{ {
@@ -1102,17 +1101,17 @@ LABEL_11:
v7); v7);
v3 = v8; v3 = v8;
} }
while ( (u16)v8 <= 0xFu ); while ( (u16)v8 <= 0xF );
v2 = v18; v2 = v18;
} }
while ( (u16)v18 <= 8u ); while ( (u16)v18 <= 8 );
MapTileBlockBuf = (char *)Alloc(v17 << 7); MapTileBlockBuf = (char *)Alloc(v17 << 7);
FourMapTileBlocksTempBuf = Alloc(0x80u); FourMapTileBlocksTempBuf = Alloc(0x80);
for ( j = 0; j < v17; j = (u16)j + 1 ) for ( j = 0; j < v17; j = (u16)j + 1 )
{ {
memset(FourMapTileBlocksTempBuf, 0, 0x80u); memset(FourMapTileBlocksTempBuf, 0, 0x80);
v13 = &mapArray[j]; v13 = &mapArray[j];
if ( *v13 <= 0x27Fu ) if ( *v13 <= 0x27F )
TeachyTvComputeMapTilesFromTilesetAndMetaTiles( TeachyTvComputeMapTilesFromTilesetAndMetaTiles(
(u16 *)(16 * *v13 + (u16*)(md->primaryTileset->metatiles)), (u16 *)(16 * *v13 + (u16*)(md->primaryTileset->metatiles)),
(u8 *)FourMapTileBlocksTempBuf, (u8 *)FourMapTileBlocksTempBuf,
@@ -1123,9 +1122,9 @@ LABEL_11:
(u8 *)FourMapTileBlocksTempBuf, (u8 *)FourMapTileBlocksTempBuf,
(u8 *)tileset); (u8 *)tileset);
CpuFastSet(FourMapTileBlocksTempBuf, &MapTileBlockBuf[0x80 * j], 0x20u); CpuFastSet(FourMapTileBlocksTempBuf, &MapTileBlockBuf[0x80 * j], 0x20);
} }
LoadBgTiles(3u, MapTileBlockBuf, (u16)v17 << 7, 0); LoadBgTiles(3, MapTileBlockBuf, (u16)v17 << 7, 0);
TeachyTvLoadMapPalette(&Route1_Layout, palIndexArray); TeachyTvLoadMapPalette(&Route1_Layout, palIndexArray);
Free(FourMapTileBlocksTempBuf); Free(FourMapTileBlocksTempBuf);
Free(MapTileBlockBuf); Free(MapTileBlockBuf);
@@ -1378,7 +1377,7 @@ void TeachyTvPushBackNewMapPalIndexArrayEntry(struct MapData *mStruct, u16 *buf1
u16 *metaTileEntryAddr; u16 *metaTileEntryAddr;
int temp = mapEntry; int temp = mapEntry;
if ( temp <= 0x27Fu ) if ( temp <= 0x27F )
{ {
ts = mStruct->primaryTileset; ts = mStruct->primaryTileset;
} }
@@ -1480,54 +1479,54 @@ void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blo
void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile) void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile)
{ {
u8 *buffer; u8 *buffer;
u32 counterV7; u32 i;
u32 counterV8; u32 j;
vu32 src; vu32 src;
buffer = (u8 *)AllocZeroed(0x20u); buffer = (u8 *)AllocZeroed(0x20);
src = ((u32)AllocZeroed(0x20u)); src = ((u32)AllocZeroed(0x20));
CpuFastSet(tileset, buffer, 8u); CpuFastSet(tileset, buffer, 8);
if ( metaTile & 1 ) if ( metaTile & 1 )
{ {
counterV7 = 0; i = 0;
do do
{ {
counterV8 = 0; j = 0;
do do
{ {
u32 offset1 = counterV7 << 2; u32 offset1 = i << 2;
u32 offset2 = counterV8 - 3; u32 offset2 = j - 3;
u32 offset = offset1 - offset2; u32 offset = offset1 - offset2;
u32 value = buffer[offset]; u32 value = buffer[offset];
u32 dstOffset = offset1 + counterV8; u32 dstOffset = offset1 + j;
*(u8*)(src + dstOffset) = ((value & 0xF) << 4) + ((value & 0xF0) >> 4); *(u8*)(src + dstOffset) = ((value & 0xF) << 4) + ((value & 0xF0) >> 4);
} }
while ( ++(u8)counterV8 <= 3u ); while ( ++(u8)j <= 3 );
} }
while ( ++(u8)counterV7 <= 7u ); while ( ++(u8)i <= 7 );
CpuFastSet((u8*)src, buffer, 8u); CpuFastSet((u8*)src, buffer, 8);
} }
if ( metaTile & 2 ) if ( metaTile & 2 )
{ {
counterV8 = 0; j = 0;
do do
{ {
memcpy(&((u8*)src)[4 * counterV8], &buffer[4 * (7 - counterV8)], 4u); memcpy(&((u8*)src)[4 * j], &buffer[4 * (7 - j)], 4);
counterV8 = (u8)(counterV8 + 1); j = (u8)(j + 1);
} }
while ( counterV8 <= 7u ); while ( j <= 7 );
CpuFastSet((u8*)src, buffer, 8u); CpuFastSet((u8*)src, buffer, 8);
} }
counterV8 = 0; j = 0;
do do
{ {
if ( buffer[counterV8] & 0xF0 ) if ( buffer[j] & 0xF0 )
blockBuf[counterV8] = (blockBuf[counterV8] & 0xF) + (buffer[counterV8] & 0xF0); blockBuf[j] = (blockBuf[j] & 0xF) + (buffer[j] & 0xF0);
if ( buffer[counterV8] & 0xF ) if ( buffer[j] & 0xF )
blockBuf[counterV8] = (blockBuf[counterV8] & 0xF0) + (buffer[counterV8] & 0xF); blockBuf[j] = (blockBuf[j] & 0xF0) + (buffer[j] & 0xF);
counterV8 = (u8)(counterV8 + 1); j = (u8)(j + 1);
} }
while ( counterV8 <= 0x1Fu ); while ( j <= 0x1F );
Free((u8*)src); Free((u8*)src);
Free(buffer); Free(buffer);
} }
@@ -1685,12 +1684,12 @@ void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile) u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile)
{ {
u32 pal; u32 pal;
u32 counter; u32 i;
int firstEntry; int firstEntry;
int temp; int temp;
pal = (u32)(metaTile << 16) >> 28; pal = (u32)(metaTile << 16) >> 28;
counter = 0; i = 0;
firstEntry = *palIndexArrayBuf; firstEntry = *palIndexArrayBuf;
if ( firstEntry != pal ) if ( firstEntry != pal )
{ {
@@ -1702,38 +1701,38 @@ u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTi
{ {
while ( 1 ) while ( 1 )
{ {
counter = ((counter + 1) << 0x10) >> 0x10; i = ((i + 1) << 0x10) >> 0x10;
if ( counter > 0xF ) if ( i > 0xF )
break; break;
temp = palIndexArrayBuf[counter]; temp = palIndexArrayBuf[i];
if ( temp == pal ) if ( temp == pal )
break; break;
if ( temp == 0xFF ) if ( temp == 0xFF )
{ {
palIndexArrayBuf[counter] = pal; palIndexArrayBuf[i] = pal;
break; break;
} }
} }
} }
} }
return (u16)(0xF - counter); return (u16)(0xF - i);
} }
#ifdef NONMATCHING #ifdef NONMATCHING
void TeachyTvLoadMapPalette(struct MapData *mStruct, u8 *palIndexArray) void TeachyTvLoadMapPalette(const struct MapData * const mStruct, u8 *palIndexArray)
{ {
u8 counter; u8 i;
struct Tileset *ts; struct Tileset *ts;
for (counter = 0; counter < 16 && palIndexArray[counter] != 0xFF; counter++) for (i = 0; i < 16 && palIndexArray[i] != 0xFF; i++)
{ {
ts = *(palIndexArray + counter) > 6u ? mStruct->secondaryTileset : mStruct->primaryTileset; ts = *(palIndexArray + i) > 6 ? mStruct->secondaryTileset : mStruct->primaryTileset;
LoadPalette((u16 *)ts->palettes + 0x10 * palIndexArray[counter], 0x10 * (0xF - counter), 0x20u); LoadPalette((u16 *)ts->palettes + 0x10 * palIndexArray[i], 0x10 * (0xF - i), 0x20);
} }
} }
#else #else
NAKED NAKED
void TeachyTvLoadMapPalette(struct MapData *mStruct, u8 *palIndexArray) void TeachyTvLoadMapPalette(const struct MapData * const mStruct, u8 *palIndexArray)
{ {
asm_unified("\n\ asm_unified("\n\
push {r4-r6,lr}\n\ push {r4-r6,lr}\n\