summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-10 09:03:39 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-10 09:03:39 +0800
commit12191612cd7a050283e37278fac1c02a2ef3776d (patch)
tree758f7c1d628cd5405a9fa4b94781ed0a2efdaed0 /src
parent1345bffa2226d6174076338ccbab0dbce04cd082 (diff)
TeachyTvLoadMapPalette and fixes
Diffstat (limited to 'src')
-rw-r--r--src/teachy_tv.c105
1 files changed, 27 insertions, 78 deletions
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index f1d0b2749..28f4fbe8e 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -29,6 +29,9 @@
#include "battle.h"
#include "global.fieldmap.h"
#include "teachy_tv.h"
+#include "help_system.h"
+#include "overworld.h"
+#include "unk_8159F40.h"
struct TeachyTvCtrlBlk
{
@@ -54,7 +57,7 @@ struct TeachyTvBuf
};
EWRAM_DATA struct TeachyTvCtrlBlk gTeachyTV_StaticResources = {0};
-extern struct TeachyTvBuf * gUnknown_203F450;
+EWRAM_DATA struct TeachyTvBuf * gUnknown_203F450;
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
extern const u8 gUnknown_841B83D;
extern const struct BgTemplate gUnknown_84792E0;
@@ -69,19 +72,13 @@ extern const u8 gUnknown_8E86F98;
extern const struct ListMenuTemplate gUnknown_8479368;
extern const struct ListMenuItem gUnknown_8479340;
extern const struct WindowTemplate gUnknown_84792F0;
-extern const u8 gUnknown_8479590;
-extern const u8 gUnknown_8479390;
+extern const u16 gUnknown_8479590[];
+extern const u8 gUnknown_8479390[];
extern const struct SubspriteTable gUnknown_84795B8;
extern const struct SpriteTemplate * const gUnknown_83A0010;
-extern const u8 gUnknown_84795C8;
+extern const u8 gUnknown_84795C8[];
extern const struct MapData Route1_Layout;
-extern void sub_812B1E0(u16);
-extern void sub_8055DC4(void);
-extern bool16 sub_80BF518(u8 textPrinterId);
-extern void sub_810B108(u8);
-extern void sub_8159F40(void);
-
void TeachyTvCallback(void);
void TeachyTvMainCallback(void);
void TeachyTvVblankHandler(void);
@@ -114,7 +111,7 @@ void TeachyTvPushBackNewMapPalIndexArrayEntry(struct MapData *mStruct, u16 *buf1
void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blockBuf, u8 *tileset);
void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile);
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
-void TeachyTvLoadMapPalette(const struct MapData *const mStruct, u8 *palIndexArray);
+void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 *palIndexArray);
void TeachyTvCallback(void)
{
@@ -288,10 +285,8 @@ void TeachyTvSetupScrollIndicatorArrowPair(void)
}
else {
- struct TeachyTvBuf *temp;
u8 res = AddScrollIndicatorArrowPair(&gUnknown_8479380, &(gTeachyTV_StaticResources.scrollOffset));
- temp = gUnknown_203F450;
- temp->var_4007 = res;
+ gUnknown_203F450->var_4007 = res;
}
}
@@ -500,7 +495,7 @@ void TeachyTvClusFuncClearBg2TeachyTvGraphic(u8 taskId)
void TeachyTvClusFuncNpcMoveAndSetupTextPrinter(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- struct Sprite * priteAddr = &gSprites[data[1]];
+ struct Sprite * spriteAddr = &gSprites[data[1]];
if (data[2] != 35)
++data[2];
else {
@@ -518,7 +513,7 @@ void TeachyTvClusFuncNpcMoveAndSetupTextPrinter(u8 taskId)
void TeachyTvClusFuncIdleIfTextPrinterIsActive(u8 taskId)
{
- s16* data = (u16 *)gTasks[taskId].data;
+ s16* data = gTasks[taskId].data;
if (!sub_80BF518(0))
++data[3];
}
@@ -572,8 +567,7 @@ void TeachyTvClusFuncIdleIfTextPrinterIsActive2(u8 taskId)
void TeachyTvClusFuncEraseTextWindowIfKeyPressed(u8 taskId)
{
- s16 *data;
- data = (u16 *)gTasks[taskId].data;
+ s16 *data = (u16 *)gTasks[taskId].data;
if (JOY_NEW(A_BUTTON | B_BUTTON))
{
FillWindowPixelBuffer(0, 0xCC);
@@ -664,7 +658,7 @@ void TeachyTvClusFuncRenderAndRemoveBg1EndGraphic(u8 taskId)
s16 *data = gTasks[taskId].data;
if (!data[2])
{
- CopyToBgTilemapBufferRect_ChangePalette(1, &gUnknown_8479590, 0x14, 0xA, 8, 2, 0x11);
+ CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_8479590, 0x14, 0xA, 8, 2, 0x11);
schedule_bg_copy_tilemap_to_vram(1);
}
if (++data[2] > 126)
@@ -738,7 +732,7 @@ void TeachyTvPostBattleFadeControl(u8 taskId)
s16 *data = gTasks[taskId].data;
if (!(gPaletteFade.active))
{
- const u8* funcIdx = &gUnknown_8479390;
+ const u8* funcIdx = gUnknown_8479390;
int arg = funcIdx[gTeachyTV_StaticResources.optionChosen];
data[3] = arg;
gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs;
@@ -756,9 +750,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m
subprio = subpriority;
if (gUnknown_203F450->var_4006 != 1)
{
- res = TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(
- x - 0x10,
- y);
+ res = TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(x - 0x10, y);
if (res << 24)
{
objTemAddr = &gUnknown_83A0010;
@@ -822,7 +814,7 @@ u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y)
int high, low;
if ((x < 0) || (y < 0))
return 0;
- arr = &gUnknown_84795C8;
+ arr = gUnknown_84795C8;
high = ((y >> 4) + gUnknown_203F450->var_4005) << 4;
low = ((x >> 4) + gUnknown_203F450->var_4004);
return arr[high+low];
@@ -1560,63 +1552,20 @@ u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTi
return (0xF - i);
}
-#ifdef NONMATCHING
-void TeachyTvLoadMapPalette(const struct MapData * const mStruct, u8 *palIndexArray)
+void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 * palIndexArray)
{
u8 i;
- struct Tileset *ts;
+ const struct Tileset * ts;
+ u16 * dest;
- for (i = 0; i < 16 && palIndexArray[i] != 0xFF; i++)
+ for (i = 0; i < 16; i++)
{
- ts = *(palIndexArray + i) > 6 ? mStruct->secondaryTileset : mStruct->primaryTileset;
- LoadPalette((u16 *)ts->palettes + 0x10 * palIndexArray[i], 0x10 * (0xF - i), 0x20);
+ if (palIndexArray[i] == 0xFF)
+ break;
+ if (palIndexArray[i] > 6)
+ dest = (u16 *)mStruct->secondaryTileset->palettes + 0x10 * palIndexArray[i];
+ else
+ dest = (u16 *)mStruct->primaryTileset->palettes + 0x10 * palIndexArray[i];
+ LoadPalette(dest, 0x10 * (15 - i), 0x20);
}
}
-#else
-NAKED
-void TeachyTvLoadMapPalette(const struct MapData * const mStruct, u8 *palIndexArray)
-{
- asm_unified("\n\
- push {r4-r6,lr}\n\
- adds r6, r0, 0\n\
- adds r5, r1, 0\n\
- movs r4, 0\n\
- ldrb r0, [r5]\n\
- cmp r0, 0xFF\n\
- beq _0815C274\n\
- _0815C23E:\n\
- adds r1, r5, r4\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x6\n\
- bls _0815C24A\n\
- ldr r0, [r6, 0x14]\n\
- b _0815C24C\n\
- _0815C24A:\n\
- ldr r0, [r6, 0x10]\n\
- _0815C24C:\n\
- ldrb r1, [r1]\n\
- lsls r1, 5\n\
- ldr r0, [r0, 0x8]\n\
- adds r0, r1\n\
- movs r1, 0xF\n\
- subs r1, r4\n\
- lsls r1, 20\n\
- lsrs r1, 16\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0xF\n\
- bhi _0815C274\n\
- adds r0, r5, r4\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xFF\n\
- bne _0815C23E\n\
- _0815C274:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- ");
-}
-#endif