data decomp
This commit is contained in:
+22
-1
@@ -1903,7 +1903,28 @@ gUnknown_841B76B:: @ 841B76B
|
|||||||
.incbin "baserom.gba", 0x41B76B, 0xE
|
.incbin "baserom.gba", 0x41B76B, 0xE
|
||||||
|
|
||||||
gUnknown_841B779:: @ 841B779
|
gUnknown_841B779:: @ 841B779
|
||||||
.incbin "baserom.gba", 0x41B779, 0xC4
|
.incbin "baserom.gba", 0x41B779, 0x2B
|
||||||
|
|
||||||
|
gUnknown_841B7A4:: @ 841B7A4
|
||||||
|
.string "Teach me how to battle.$"
|
||||||
|
|
||||||
|
gUnknown_841B7BC:: @ 841B7BC
|
||||||
|
.string "What are status problems?$"
|
||||||
|
|
||||||
|
gUnknown_841B7D6:: @ 841B7D6
|
||||||
|
.string "What are type matchups?$"
|
||||||
|
|
||||||
|
gUnknown_841B7EE:: @ 841B7EE
|
||||||
|
.string "I want to catch POKéMON.$"
|
||||||
|
|
||||||
|
gUnknown_841B807:: @ 841B807
|
||||||
|
.string "Teach me about TMs.$"
|
||||||
|
|
||||||
|
gUnknown_841B81B:: @ 841B81B
|
||||||
|
.string "How do I register an item?$"
|
||||||
|
|
||||||
|
gUnknown_841B836:: @ 841B836
|
||||||
|
.string "CANCEL$"
|
||||||
|
|
||||||
gUnknown_841B83D:: @ 841B83D
|
gUnknown_841B83D:: @ 841B83D
|
||||||
.string "Hey, all you TRAINERS out there!\n"
|
.string "Hey, all you TRAINERS out there!\n"
|
||||||
|
|||||||
@@ -215,47 +215,6 @@ gUnknown_84791E8:: @ 84791E8
|
|||||||
gUnknown_84792D0:: @ 84792D0
|
gUnknown_84792D0:: @ 84792D0
|
||||||
.incbin "baserom.gba", 0x4792D0, 0x10
|
.incbin "baserom.gba", 0x4792D0, 0x10
|
||||||
|
|
||||||
gUnknown_84792E0:: @ 84792E0
|
|
||||||
.incbin "baserom.gba", 0x4792E0, 0x10
|
|
||||||
|
|
||||||
gUnknown_84792F0:: @ 84792F0
|
|
||||||
.incbin "baserom.gba", 0x4792F0, 0x50
|
|
||||||
|
|
||||||
gUnknown_8479340:: @ 8479340
|
|
||||||
.incbin "baserom.gba", 0x479340, 0x28
|
|
||||||
|
|
||||||
gUnknown_8479368:: @ 8479368
|
|
||||||
.incbin "baserom.gba", 0x479368, 0x18
|
|
||||||
|
|
||||||
gUnknown_8479380:: @ 8479380
|
|
||||||
.incbin "baserom.gba", 0x479380, 0x10
|
|
||||||
|
|
||||||
gUnknown_8479390:: @ 8479390
|
|
||||||
.incbin "baserom.gba", 0x479390, 0x1B8
|
|
||||||
|
|
||||||
gUnknown_8479548:: @ 8479548
|
|
||||||
.incbin "baserom.gba", 0x479548, 0x18
|
|
||||||
|
|
||||||
gUnknown_8479560:: @ 8479560
|
|
||||||
.4byte gUnknown_841B8BF
|
|
||||||
.4byte gUnknown_841BB40
|
|
||||||
.4byte gUnknown_841BE76
|
|
||||||
.4byte gUnknown_841C23B
|
|
||||||
.4byte gUnknown_841C459
|
|
||||||
.4byte gUnknown_841C82A
|
|
||||||
|
|
||||||
gUnknown_8479578:: @ 8479578
|
|
||||||
.incbin "baserom.gba", 0x479578, 0x18
|
|
||||||
|
|
||||||
gUnknown_8479590:: @ 8479590
|
|
||||||
.incbin "baserom.gba", 0x479590, 0x28
|
|
||||||
|
|
||||||
gUnknown_84795B8:: @ 84795B8
|
|
||||||
.incbin "baserom.gba", 0x4795B8, 0x10
|
|
||||||
|
|
||||||
gUnknown_84795C8:: @ 84795C8
|
|
||||||
.incbin "baserom.gba", 0x4795C8, 0x90
|
|
||||||
|
|
||||||
.section .rodata.8479668
|
.section .rodata.8479668
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
|
|||||||
@@ -450,6 +450,7 @@ SECTIONS {
|
|||||||
src/text_window_graphics.o(.rodata);
|
src/text_window_graphics.o(.rodata);
|
||||||
src/quest_log_8150454.o(.rodata);
|
src/quest_log_8150454.o(.rodata);
|
||||||
data/data_8471F00.o(.rodata);
|
data/data_8471F00.o(.rodata);
|
||||||
|
src/teachy_tv.o(.rodata);
|
||||||
src/unk_815C980.o(.rodata);
|
src/unk_815C980.o(.rodata);
|
||||||
data/data_8471F00.o(.rodata.8479668);
|
data/data_8471F00.o(.rodata.8479668);
|
||||||
src/trainer_tower.o(.rodata);
|
src/trainer_tower.o(.rodata);
|
||||||
|
|||||||
+1
-1
@@ -3,8 +3,8 @@
|
|||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "text_window.h"
|
#include "text_window.h"
|
||||||
|
#include "strings.h"
|
||||||
|
|
||||||
extern const u8 gText_Coins[];
|
|
||||||
extern const u8 gUnknown_8417C2D[];
|
extern const u8 gUnknown_8417C2D[];
|
||||||
|
|
||||||
EWRAM_DATA static u8 sCoinsWindowId = 0;
|
EWRAM_DATA static u8 sCoinsWindowId = 0;
|
||||||
|
|||||||
+432
-37
@@ -1,5 +1,4 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "global.h"
|
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
@@ -58,27 +57,30 @@ struct TeachyTvBuf
|
|||||||
|
|
||||||
EWRAM_DATA struct TeachyTvCtrlBlk gTeachyTV_StaticResources = {0};
|
EWRAM_DATA struct TeachyTvCtrlBlk gTeachyTV_StaticResources = {0};
|
||||||
EWRAM_DATA struct TeachyTvBuf * gUnknown_203F450 = NULL;
|
EWRAM_DATA struct TeachyTvBuf * gUnknown_203F450 = NULL;
|
||||||
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
|
|
||||||
extern const u8 gUnknown_841B83D[];
|
|
||||||
extern const struct BgTemplate gUnknown_84792E0[];
|
|
||||||
extern const struct SpritePalette gUnknown_83A5348;
|
extern const struct SpritePalette gUnknown_83A5348;
|
||||||
extern void (**gUnknown_8479548[])(u8);
|
extern const struct SpriteTemplate * const gUnknown_83A0010[];
|
||||||
extern const u8 * const gUnknown_8479560[];
|
extern const struct MapData Route1_Layout;
|
||||||
extern const u8 * const gUnknown_8479578[];
|
extern const u8 gUnknown_841B7A4[], gUnknown_841B7BC[], gUnknown_841B7D6[], gUnknown_841B7EE[], gUnknown_841B807[], gUnknown_841B81B[], gUnknown_841B836[], gUnknown_841B83D[], gUnknown_841B8BF[], gUnknown_841BB40[], gUnknown_841BE76[], gUnknown_841C23B[], gUnknown_841C459[], gUnknown_841C82A[], gUnknown_841BA41[], gUnknown_841BD10[], gUnknown_841C0AF[], gUnknown_841C384[], gUnknown_841C7B4[], gUnknown_841C994[];
|
||||||
extern const u8 gUnknown_8E86240[];
|
extern const u8 gUnknown_8E86240[];
|
||||||
extern const u8 gUnknown_8E86BE8[];
|
extern const u8 gUnknown_8E86BE8[];
|
||||||
extern const u8 gUnknown_8E86D6C[];
|
extern const u8 gUnknown_8E86D6C[];
|
||||||
extern const u8 gUnknown_8E86F98[];
|
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 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 struct MapData Route1_Layout;
|
|
||||||
|
|
||||||
|
void TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId);
|
||||||
|
void TeachyTvClusFuncClearBg2TeachyTvGraphic(u8 taskId);
|
||||||
|
void TeachyTvClusFuncNpcMoveAndSetupTextPrinter(u8 taskId);
|
||||||
|
void TeachyTvClusFuncIdleIfTextPrinterIsActive(u8 taskId);
|
||||||
|
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId);
|
||||||
|
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId);
|
||||||
|
void TeachyTvClusFuncIdleIfTextPrinterIsActive2(u8 taskId);
|
||||||
|
void TeachyTvClusFuncEraseTextWindowIfKeyPressed(u8 taskId);
|
||||||
|
void TeachyTvClusFuncStartAnimNpcWalkIntoGrass(u8 taskId);
|
||||||
|
void TeachyTvClusFuncDudeMoveUp(u8 taskId);
|
||||||
|
void TeachyTvClusFuncDudeMoveRight(u8 taskId);
|
||||||
|
void TeachyTvClusFuncDudeTurnLeft(u8 taskId);
|
||||||
|
void TeachyTvClusFuncDudeMoveLeft(u8 taskId);
|
||||||
|
void TeachyTvClusFuncRenderAndRemoveBg1EndGraphic(u8 taskId);
|
||||||
|
void TeachyTvClusFuncTaskBattleOrFadeByOptionChosen(u8 taskId);
|
||||||
void TeachyTvCallback(void);
|
void TeachyTvCallback(void);
|
||||||
void TeachyTvMainCallback(void);
|
void TeachyTvMainCallback(void);
|
||||||
void TeachyTvVblankHandler(void);
|
void TeachyTvVblankHandler(void);
|
||||||
@@ -113,6 +115,399 @@ void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *
|
|||||||
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
|
u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
|
||||||
void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 *palIndexArray);
|
void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 *palIndexArray);
|
||||||
|
|
||||||
|
const struct BgTemplate gTeachyTvBgTemplateArray[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.bg = 0x0,
|
||||||
|
.charBaseIndex = 0x0,
|
||||||
|
.mapBaseIndex = 0x1F,
|
||||||
|
.screenSize = 0x0,
|
||||||
|
.paletteMode = 0x0,
|
||||||
|
.priority = 0x1,
|
||||||
|
.baseTile = 0x0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0x1,
|
||||||
|
.charBaseIndex = 0x0,
|
||||||
|
.mapBaseIndex = 0x1E,
|
||||||
|
.screenSize = 0x0,
|
||||||
|
.paletteMode = 0x0,
|
||||||
|
.priority = 0x0,
|
||||||
|
.baseTile = 0x0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0x2,
|
||||||
|
.charBaseIndex = 0x0,
|
||||||
|
.mapBaseIndex = 0x1D,
|
||||||
|
.screenSize = 0x0,
|
||||||
|
.paletteMode = 0x0,
|
||||||
|
.priority = 0x2,
|
||||||
|
.baseTile = 0x0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0x3,
|
||||||
|
.charBaseIndex = 0x2,
|
||||||
|
.mapBaseIndex = 0x1C,
|
||||||
|
.screenSize = 0x0,
|
||||||
|
.paletteMode = 0x0,
|
||||||
|
.priority = 0x3,
|
||||||
|
.baseTile = 0x0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct WindowTemplate gTeachyTvWindowTemplateArray[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.bg = 0x1,
|
||||||
|
.tilemapLeft = 0x2,
|
||||||
|
.tilemapTop = 0xF,
|
||||||
|
.width = 0x1A,
|
||||||
|
.height = 0x4,
|
||||||
|
.paletteNum = 0x3,
|
||||||
|
.baseBlock = 0xEA,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0x0,
|
||||||
|
.tilemapLeft = 0x4,
|
||||||
|
.tilemapTop = 0x1,
|
||||||
|
.width = 0x16,
|
||||||
|
.height = 0xC,
|
||||||
|
.paletteNum = 0x3,
|
||||||
|
.baseBlock = 0x152,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0xFF,
|
||||||
|
.tilemapLeft = 0x0,
|
||||||
|
.tilemapTop = 0x0,
|
||||||
|
.width = 0x0,
|
||||||
|
.height = 0x0,
|
||||||
|
.paletteNum = 0x0,
|
||||||
|
.baseBlock = 0x0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct ListMenuItem gTeachyTvListMenuItemArray[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7A4,
|
||||||
|
.unk_04 = 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7BC,
|
||||||
|
.unk_04 = 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7D6,
|
||||||
|
.unk_04 = 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7EE,
|
||||||
|
.unk_04 = 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B807,
|
||||||
|
.unk_04 = 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B81B,
|
||||||
|
.unk_04 = 5,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B836,
|
||||||
|
.unk_04 = -2,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct ListMenuItem gTeachyTvListMenuItemArray2[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7A4,
|
||||||
|
.unk_04 = 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7BC,
|
||||||
|
.unk_04 = 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7D6,
|
||||||
|
.unk_04 = 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B7EE,
|
||||||
|
.unk_04 = 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.unk_00 = gUnknown_841B836,
|
||||||
|
.unk_04 = -2,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct ListMenuTemplate gTeachyTvListMenuTemplateArray =
|
||||||
|
{
|
||||||
|
.items = gTeachyTvListMenuItemArray,
|
||||||
|
.moveCursorFunc = NULL,
|
||||||
|
.itemPrintFunc = NULL,
|
||||||
|
.totalItems = 0x7,
|
||||||
|
.maxShowed = 0x6,
|
||||||
|
.windowId = 0x0,
|
||||||
|
.header_X = 0x0,
|
||||||
|
.item_X = 0x8,
|
||||||
|
.cursor_X = 0x0,
|
||||||
|
.upText_Y = 0x6,
|
||||||
|
.cursorPal = 0x1,
|
||||||
|
.fillValue = 0x0,
|
||||||
|
.cursorShadowPal = 0x2,
|
||||||
|
.lettersSpacing = 0x0,
|
||||||
|
.itemVerticalPadding = 0x0,
|
||||||
|
.scrollMultiple = 0x1,
|
||||||
|
.fontId = 0x2,
|
||||||
|
.cursorKind = 0x0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct ScrollIndicatorArrowPairTemplate gTeachyTvScrollIndicatorArrowPairTemplateArray =
|
||||||
|
{
|
||||||
|
.unk_00 = 0x2,
|
||||||
|
.unk_01 = 0x78,
|
||||||
|
.unk_02 = 0xC,
|
||||||
|
.unk_03 = 0x3,
|
||||||
|
.unk_04 = 0x78,
|
||||||
|
.unk_05 = 0x64,
|
||||||
|
.unk_06 = 0x0,
|
||||||
|
.unk_08 = 0x1,
|
||||||
|
.unk_0a = 0x800,
|
||||||
|
.unk_0c = 0x800,
|
||||||
|
.unk_0e_0 = 0x0,
|
||||||
|
.unk_0e_4 = 0x0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 gTeachyTvSwitchFuncArray[] =
|
||||||
|
{
|
||||||
|
0xC, 0xC, 0xC, 0xC, 0x9, 0x9, 0x0, 0x0,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster0[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncStartAnimNpcWalkIntoGrass,
|
||||||
|
TeachyTvClusFuncDudeMoveUp,
|
||||||
|
TeachyTvClusFuncDudeMoveRight,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster1[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncStartAnimNpcWalkIntoGrass,
|
||||||
|
TeachyTvClusFuncDudeMoveUp,
|
||||||
|
TeachyTvClusFuncDudeMoveRight,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster2[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncStartAnimNpcWalkIntoGrass,
|
||||||
|
TeachyTvClusFuncDudeMoveUp,
|
||||||
|
TeachyTvClusFuncDudeMoveRight,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster3[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncStartAnimNpcWalkIntoGrass,
|
||||||
|
TeachyTvClusFuncDudeMoveUp,
|
||||||
|
TeachyTvClusFuncDudeMoveRight,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster4[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const gTeachyTvFuncCluster5[])(u8) =
|
||||||
|
{
|
||||||
|
TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos,
|
||||||
|
TeachyTvClusFuncClearBg2TeachyTvGraphic,
|
||||||
|
TeachyTvClusFuncNpcMoveAndSetupTextPrinter,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncTaskBattleOrFadeByOptionChosen,
|
||||||
|
TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2,
|
||||||
|
TeachyTvClusFuncIdleIfTextPrinterIsActive2,
|
||||||
|
TeachyTvClusFuncEraseTextWindowIfKeyPressed,
|
||||||
|
TeachyTvClusFuncDudeTurnLeft,
|
||||||
|
TeachyTvClusFuncDudeMoveLeft,
|
||||||
|
TeachyTvClusFuncRenderAndRemoveBg1EndGraphic,
|
||||||
|
TeachyTvBackToOptionList,
|
||||||
|
};
|
||||||
|
|
||||||
|
void (* const * const gTeachyTvFuncClusterArray[])(u8) =
|
||||||
|
{
|
||||||
|
gTeachyTvFuncCluster0,
|
||||||
|
gTeachyTvFuncCluster1,
|
||||||
|
gTeachyTvFuncCluster2,
|
||||||
|
gTeachyTvFuncCluster3,
|
||||||
|
gTeachyTvFuncCluster4,
|
||||||
|
gTeachyTvFuncCluster5,
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 * const gTeachyTvTextArray1[] =
|
||||||
|
{
|
||||||
|
gUnknown_841B8BF,
|
||||||
|
gUnknown_841BB40,
|
||||||
|
gUnknown_841BE76,
|
||||||
|
gUnknown_841C23B,
|
||||||
|
gUnknown_841C459,
|
||||||
|
gUnknown_841C82A,
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 * const gTeachyTvTextArray2[] =
|
||||||
|
{
|
||||||
|
gUnknown_841BA41,
|
||||||
|
gUnknown_841BD10,
|
||||||
|
gUnknown_841C0AF,
|
||||||
|
gUnknown_841C384,
|
||||||
|
gUnknown_841C7B4,
|
||||||
|
gUnknown_841C994,
|
||||||
|
};
|
||||||
|
|
||||||
|
const u16 gUnknown_8479590[] =
|
||||||
|
{
|
||||||
|
0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8,
|
||||||
|
0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct Subsprite gTeachyTvSubspriteArray[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.x = -0x8,
|
||||||
|
.y = -0x8,
|
||||||
|
.shape = 0x1,
|
||||||
|
.size = 0x0,
|
||||||
|
.tileOffset = 0x0,
|
||||||
|
.priority = 0x3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.x = -0x8,
|
||||||
|
.y = 0x0,
|
||||||
|
.shape = 0x1,
|
||||||
|
.size = 0x0,
|
||||||
|
.tileOffset = 0x2,
|
||||||
|
.priority = 0x2,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SubspriteTable gTeachyTvSubspriteTableArray[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.subspriteCount = 0,
|
||||||
|
.subsprites = NULL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.subspriteCount = 2,
|
||||||
|
.subsprites = gTeachyTvSubspriteArray,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 gTeachyTvGrassAnimArray[] =
|
||||||
|
{
|
||||||
|
0, 0, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 1, 1, 1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
1, 1, 1, 1, 1, 1, 0, 0,
|
||||||
|
};
|
||||||
|
|
||||||
void TeachyTvCallback(void)
|
void TeachyTvCallback(void)
|
||||||
{
|
{
|
||||||
RunTasks();
|
RunTasks();
|
||||||
@@ -219,7 +614,7 @@ void TeachyTvSetupBg(void)
|
|||||||
{
|
{
|
||||||
InitBgReg();
|
InitBgReg();
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
InitBgsFromTemplates(0, gUnknown_84792E0, 4);
|
InitBgsFromTemplates(0, gTeachyTvBgTemplateArray, 4);
|
||||||
SetBgTilemapBuffer(1, gUnknown_203F450->buffer1);
|
SetBgTilemapBuffer(1, gUnknown_203F450->buffer1);
|
||||||
SetBgTilemapBuffer(2, gUnknown_203F450->buffer2);
|
SetBgTilemapBuffer(2, gUnknown_203F450->buffer2);
|
||||||
SetBgTilemapBuffer(3, gUnknown_203F450->buffer3);
|
SetBgTilemapBuffer(3, gUnknown_203F450->buffer3);
|
||||||
@@ -250,7 +645,7 @@ void TeachyTvLoadGraphic(void)
|
|||||||
|
|
||||||
void TeachyTvCreateAndRenderRbox(void)
|
void TeachyTvCreateAndRenderRbox(void)
|
||||||
{
|
{
|
||||||
InitWindows(gUnknown_84792F0);
|
InitWindows(gTeachyTvWindowTemplateArray);
|
||||||
DeactivateAllTextPrinters();
|
DeactivateAllTextPrinters();
|
||||||
FillWindowPixelBuffer(0, 0xCC);
|
FillWindowPixelBuffer(0, 0xCC);
|
||||||
PutWindowTilemap(0);
|
PutWindowTilemap(0);
|
||||||
@@ -260,12 +655,12 @@ void TeachyTvCreateAndRenderRbox(void)
|
|||||||
|
|
||||||
u8 TeachyTvSetupWindow(void)
|
u8 TeachyTvSetupWindow(void)
|
||||||
{
|
{
|
||||||
gMultiuseListMenuTemplate = gUnknown_8479368;
|
gMultiuseListMenuTemplate = gTeachyTvListMenuTemplateArray;
|
||||||
gMultiuseListMenuTemplate.windowId = 1;
|
gMultiuseListMenuTemplate.windowId = 1;
|
||||||
gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
|
gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
|
||||||
if (!CheckBagHasItem(ITEM_TM_CASE, 1))
|
if (!CheckBagHasItem(ITEM_TM_CASE, 1))
|
||||||
{
|
{
|
||||||
gMultiuseListMenuTemplate.items = gUnknown_8479340;
|
gMultiuseListMenuTemplate.items = gTeachyTvListMenuItemArray2;
|
||||||
gMultiuseListMenuTemplate.totalItems = 5;
|
gMultiuseListMenuTemplate.totalItems = 5;
|
||||||
gMultiuseListMenuTemplate.maxShowed = 5;
|
gMultiuseListMenuTemplate.maxShowed = 5;
|
||||||
gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF;
|
gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF;
|
||||||
@@ -285,7 +680,7 @@ void TeachyTvSetupScrollIndicatorArrowPair(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
u8 res = AddScrollIndicatorArrowPair(&gUnknown_8479380, &(gTeachyTV_StaticResources.scrollOffset));
|
u8 res = AddScrollIndicatorArrowPair(&gTeachyTvScrollIndicatorArrowPairTemplateArray, &(gTeachyTV_StaticResources.scrollOffset));
|
||||||
gUnknown_203F450->var_4007 = res;
|
gUnknown_203F450->var_4007 = res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,10 +710,10 @@ void TeachyTvInitIo(void)
|
|||||||
|
|
||||||
u8 TeachyTvSetupObjEventAndOam(void)
|
u8 TeachyTvSetupObjEventAndOam(void)
|
||||||
{
|
{
|
||||||
u8 temp = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8);
|
u8 objId = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8);
|
||||||
gSprites[temp].oam.priority = 2;
|
gSprites[objId].oam.priority = 2;
|
||||||
gSprites[temp].invisible = 1;
|
gSprites[objId].invisible = 1;
|
||||||
return temp;
|
return objId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
|
void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
|
||||||
@@ -536,8 +931,8 @@ void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
void (***array)(u8) = gUnknown_8479548;
|
void (* const * const *array)(u8) = gTeachyTvFuncClusterArray;
|
||||||
void (**cluster)(u8) = array[(u8)gTeachyTV_StaticResources.optionChosen];
|
void (* const * const cluster)(u8) = array[(u8)gTeachyTV_StaticResources.optionChosen];
|
||||||
cluster[data[3]](taskId);
|
cluster[data[3]](taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -545,7 +940,7 @@ void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
|
|||||||
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId)
|
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId)
|
||||||
{
|
{
|
||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
const u8 * const* texts = gUnknown_8479560;
|
const u8 * const* texts = gTeachyTvTextArray1;
|
||||||
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
|
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
|
||||||
++data[3];
|
++data[3];
|
||||||
}
|
}
|
||||||
@@ -553,7 +948,7 @@ void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen(u8 taskId)
|
|||||||
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId)
|
void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId)
|
||||||
{
|
{
|
||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
const u8 * const* texts = gUnknown_8479578;
|
const u8 * const* texts = gTeachyTvTextArray2;
|
||||||
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
|
TeachyTvInitTextPrinter(texts[gTeachyTV_StaticResources.optionChosen]);
|
||||||
++data[3];
|
++data[3];
|
||||||
}
|
}
|
||||||
@@ -701,7 +1096,7 @@ void TeachyTvBackToOptionList(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeachyTvChainTaskBattleOrFadeByOptionChosen(u8 taskId)
|
void TeachyTvClusFuncTaskBattleOrFadeByOptionChosen(u8 taskId)
|
||||||
{
|
{
|
||||||
int op = gTeachyTV_StaticResources.optionChosen;
|
int op = gTeachyTV_StaticResources.optionChosen;
|
||||||
if (op >= 0)
|
if (op >= 0)
|
||||||
@@ -732,7 +1127,7 @@ void TeachyTvPostBattleFadeControl(u8 taskId)
|
|||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
if (!(gPaletteFade.active))
|
if (!(gPaletteFade.active))
|
||||||
{
|
{
|
||||||
const u8 *funcIdx = gUnknown_8479390;
|
const u8 *funcIdx = gTeachyTvSwitchFuncArray;
|
||||||
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;
|
||||||
@@ -767,7 +1162,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetSubspriteTables(obj, gUnknown_84795B8);
|
SetSubspriteTables(obj, gTeachyTvSubspriteTableArray);
|
||||||
obj->subspriteTableNum = 0;
|
obj->subspriteTableNum = 0;
|
||||||
obj->subspriteMode = 1;
|
obj->subspriteMode = 1;
|
||||||
}
|
}
|
||||||
@@ -813,7 +1208,7 @@ u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y)
|
|||||||
int high, low;
|
int high, low;
|
||||||
if ((x < 0) || (y < 0))
|
if ((x < 0) || (y < 0))
|
||||||
return 0;
|
return 0;
|
||||||
arr = gUnknown_84795C8;
|
arr = gTeachyTvGrassAnimArray;
|
||||||
high = ((y >> 4) + gUnknown_203F450->var_4005) << 4;
|
high = ((y >> 4) + gUnknown_203F450->var_4005) << 4;
|
||||||
low = ((x >> 4) + gUnknown_203F450->var_4004);
|
low = ((x >> 4) + gUnknown_203F450->var_4004);
|
||||||
return arr[high+low];
|
return arr[high+low];
|
||||||
@@ -1230,8 +1625,8 @@ void TeachyTvPushBackNewMapPalIndexArrayEntry(struct MapData *mStruct, u16 *buf1
|
|||||||
metaTileEntryAddr = &((u16*)(ts->metatiles))[8 * temp];
|
metaTileEntryAddr = &((u16*)(ts->metatiles))[8 * temp];
|
||||||
buf1[0] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[0]) << 12) + 4 * offset;
|
buf1[0] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[0]) << 12) + 4 * offset;
|
||||||
buf1[1] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[1]) << 12) + 4 * offset + 1;
|
buf1[1] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[1]) << 12) + 4 * offset + 1;
|
||||||
buf1[0x20] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[2]) << 12) + 4 * offset + 2;
|
buf1[32] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[2]) << 12) + 4 * offset + 2;
|
||||||
buf1[0x21] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[3]) << 12) + 4 * offset + 3;
|
buf1[33] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[3]) << 12) + 4 * offset + 3;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
NAKED
|
NAKED
|
||||||
@@ -1327,8 +1722,8 @@ void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *
|
|||||||
{
|
{
|
||||||
for (j = 0; j < 4; ++j)
|
for (j = 0; j < 4; ++j)
|
||||||
{
|
{
|
||||||
u32 offset2 = j - 3;
|
u32 offset = j - 3;
|
||||||
u8 value = buffer[(i << 2) - offset2];
|
u8 value = buffer[(i << 2) - offset];
|
||||||
src[(i << 2) + j] = ((value & 0xF) << 4) + ((value & 0xF0) >> 4);
|
src[(i << 2) + j] = ((value & 0xF) << 4) + ((value & 0xF0) >> 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user