fixed everything except struct
This commit is contained in:
+190
-191
@@ -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\
|
||||||
|
|||||||
Reference in New Issue
Block a user