summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-10-04 11:18:50 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-10-04 11:18:50 +0200
commitaaa191f0d85e4a6c82a037b471a67cddb4da2c06 (patch)
tree99464c84c8c6375d90c5c637e4dbda8ec888e6d5 /src
parent46fe1f441f1f40633b538c9db7d24aa4439629cf (diff)
parent09d5d81c9cd2295ec1a52323c7a8337313a3b021 (diff)
Merge branch 'master' into decomp_battle2
Diffstat (limited to 'src')
-rw-r--r--src/battle_1.c17
-rw-r--r--src/berry_blender.c18
-rw-r--r--src/dma3_manager.c18
-rw-r--r--src/field_camera.c28
-rw-r--r--src/field_effect.c15
-rw-r--r--src/field_screen.c15
-rw-r--r--src/fldeff_cut.c19
-rw-r--r--src/link.c56
-rw-r--r--src/main.c2
-rw-r--r--src/main_menu.c15
-rw-r--r--src/malloc.c1
-rw-r--r--src/palette.c75
-rw-r--r--src/pokemon_storage_system.c15
-rw-r--r--src/record_mixing.c28
-rw-r--r--src/rom4.c19
-rw-r--r--src/scrcmd.c15
-rw-r--r--src/script_menu.c16
-rw-r--r--src/text.c14
-rw-r--r--src/tileset_anims.c1411
-rw-r--r--src/unk_text_util_2.c219
20 files changed, 1952 insertions, 64 deletions
diff --git a/src/battle_1.c b/src/battle_1.c
new file mode 100644
index 000000000..5e4ef5583
--- /dev/null
+++ b/src/battle_1.c
@@ -0,0 +1,17 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u32 gUnknown_03000DD4;
+IWRAM_DATA u32 gUnknown_03000DD8;
+IWRAM_DATA u32 gUnknown_03000DDC;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/berry_blender.c b/src/berry_blender.c
new file mode 100644
index 000000000..db50fe4c4
--- /dev/null
+++ b/src/berry_blender.c
@@ -0,0 +1,18 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA void *berry_blender_c_unused_03000de4;
+IWRAM_DATA s16 gUnknown_03000DE8[8];
+IWRAM_DATA s16 gUnknown_03000DF8[6];
+IWRAM_DATA s16 gUnknown_03000E04;
+IWRAM_DATA s16 gUnknown_03000E06;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 7cce06c15..bb015c5cf 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -1,12 +1,23 @@
#include "global.h"
#include "dma3.h"
+IWRAM_DATA struct {
+ /* 0x00 */ const u8 *src;
+ /* 0x04 */ u8 *dest;
+ /* 0x08 */ u16 size;
+ /* 0x0A */ u16 mode;
+ /* 0x0C */ u32 value;
+} gDma3Requests[128];
+
+static bool8 gDma3ManagerLocked;
+static u8 gDma3RequestCursor;
+
void ClearDma3Requests(void)
{
int i;
gDma3ManagerLocked = TRUE;
- gDma3RequestCursor = FALSE;
+ gDma3RequestCursor = 0;
for(i = 0; i < (u8)ARRAY_COUNT(gDma3Requests); i++)
{
@@ -22,7 +33,6 @@ void ClearDma3Requests(void)
void ProcessDma3Requests(void)
{
// NOTE: the fillerA member of the DMA struct is actually u32 value;
- // NOTE: gUnknown_0300001C is just a pointer inside the gDma3Requests structure, not a true symbol; feel free to remove
u16 total_size;
if (gDma3ManagerLocked)
@@ -331,7 +341,7 @@ _08000DB2:\n\
mov r5, r12\n\
ldrb r0, [r5]\n\
lsls r0, 4\n\
- ldr r3, =gUnknown_0300001C\n\
+ ldr r3, =gDma3Requests + 0x0C\n\
adds r0, r3\n\
ldr r0, [r0]\n\
strh r0, [r1]\n\
@@ -347,7 +357,7 @@ _08000DB2:\n\
bhi _08000DB2\n\
ldrb r0, [r5]\n\
lsls r0, 4\n\
- ldr r5, =gUnknown_0300001C\n\
+ ldr r5, =gDma3Requests + 0x0C\n\
adds r0, r5\n\
ldr r0, [r0]\n\
strh r0, [r1]\n\
diff --git a/src/field_camera.c b/src/field_camera.c
new file mode 100644
index 000000000..17ced6aa5
--- /dev/null
+++ b/src/field_camera.c
@@ -0,0 +1,28 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+struct FieldCameraUnknownStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ bool8 unk4;
+};
+
+// Static RAM declarations
+
+IWRAM_DATA struct FieldCameraUnknownStruct gUnknown_03000E20;
+IWRAM_DATA s16 gUnknown_03000E28;
+IWRAM_DATA s16 gUnknown_03000E2A;
+IWRAM_DATA u8 gUnknown_03000E2C;
+IWRAM_DATA void (*gUnknown_03000E30)(void);
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/field_effect.c b/src/field_effect.c
new file mode 100644
index 000000000..628dc776a
--- /dev/null
+++ b/src/field_effect.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000F58[32];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/field_screen.c b/src/field_screen.c
new file mode 100644
index 000000000..2d33d237f
--- /dev/null
+++ b/src/field_screen.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA u8 *gUnknown_03000F50;
+IWRAM_DATA u32 filler_03000f54;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
new file mode 100644
index 000000000..9929dd6f9
--- /dev/null
+++ b/src/fldeff_cut.c
@@ -0,0 +1,19 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03001100;
+IWRAM_DATA u8 gUnknown_03001101;
+IWRAM_DATA u8 gUnknown_03001102;
+IWRAM_DATA u32 fldeff_cut_unused_03001104;
+IWRAM_DATA u8 gUnknown_03001108[25];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/link.c b/src/link.c
new file mode 100644
index 000000000..ae2cd1992
--- /dev/null
+++ b/src/link.c
@@ -0,0 +1,56 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+struct BlockTransfer
+{
+ u16 pos;
+ u16 size;
+ void *src;
+ bool8 active;
+ u8 multiplayerId;
+};
+
+struct LinkTestBGInfo
+{
+ u32 screenBaseBlock;
+ u32 paletteNum;
+ u32 dummy_8;
+ u32 dummy_C;
+};
+
+// Static RAM declarations
+
+IWRAM_DATA struct BlockTransfer gUnknown_03000D10;
+IWRAM_DATA u32 link_c_unused_03000d1c;
+IWRAM_DATA struct BlockTransfer gUnknown_03000D20[4];
+IWRAM_DATA u32 gUnknown_03000D50;
+IWRAM_DATA u32 gUnknown_03000D54;
+IWRAM_DATA u8 gUnknown_03000D58;
+IWRAM_DATA u32 gUnknown_03000D5C;
+IWRAM_DATA u32 gUnknown_03000D60;
+IWRAM_DATA u8 gUnknown_03000D64[4]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D68[4];
+IWRAM_DATA u8 gUnknown_03000D6C;
+IWRAM_DATA bool8 gUnknown_03000D6D;
+IWRAM_DATA u16 gUnknown_03000D6E;
+IWRAM_DATA u16 gUnknown_03000D70;
+IWRAM_DATA u8 gUnknown_03000D72;
+IWRAM_DATA u8 gUnknown_03000D73;
+IWRAM_DATA u8 gUnknown_03000D74[4]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D78[8]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D80[16];
+IWRAM_DATA u16 gUnknown_03000D90[8];
+IWRAM_DATA u32 gUnknown_03000DA0;
+IWRAM_DATA u32 gUnknown_03000DA4;
+IWRAM_DATA void *gUnknown_03000DA8;
+IWRAM_DATA void *gUnknown_03000DAC;
+IWRAM_DATA bool32 gUnknown_03000DB0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/main.c b/src/main.c
index 5707e18af..665a4dd84 100644
--- a/src/main.c
+++ b/src/main.c
@@ -77,7 +77,7 @@ const IntrFunc gIntrTableTemplate[] =
#define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc)))
-extern u16 gUnknown_03000000;
+static u16 gUnknown_03000000;
extern u16 gKeyRepeatStartDelay;
extern u8 gUnknown_030022B4;
diff --git a/src/main_menu.c b/src/main_menu.c
new file mode 100644
index 000000000..8608159c2
--- /dev/null
+++ b/src/main_menu.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000DD0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/malloc.c b/src/malloc.c
index ccb2f7d20..1d64351c3 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -2,6 +2,7 @@
static void *sHeapStart;
static u32 sHeapSize;
+static u32 malloc_c_unused_0300000c; // needed to align dma3_manager.o(.bss)
#define MALLOC_SYSTEM_ID 0xA3A3
diff --git a/src/palette.c b/src/palette.c
index aa9a84e4c..d60efdbc5 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -1,5 +1,8 @@
#include "global.h"
+#include "blend_palette.h"
#include "palette.h"
+#include "decompress.h"
+#include "gpu_regs.h"
#include "task.h"
enum
@@ -28,7 +31,7 @@ struct PaletteStructTemplate
struct PaletteStruct
{
- struct PaletteStructTemplate *base;
+ const struct PaletteStructTemplate *base;
u32 ps_field_4_0:1;
u16 ps_field_4_1:1;
u32 baseDestOffset:9;
@@ -38,31 +41,6 @@ struct PaletteStruct
u8 ps_field_9;
};
-extern void LZDecompressWram(const void *src, void *dest);
-extern void SetGpuReg(u8 regOffset, u16 value);
-extern void sub_8149DFC(u8 a1);
-extern void sub_80A1670(u16 a1);
-extern void sub_80A2D54(u8 a1);
-extern void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value);
-extern void _call_via_r1(u32 a1, void *a2);
-
-extern void BlendPalette(u16, u16, u8, u16);
-
-EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0};
-EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0};
-EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
-EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
-EWRAM_DATA u32 gFiller_2037FE0 = 0;
-EWRAM_DATA u32 sPlttBufferTransferPending = 0;
-EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0};
-
-extern struct PaletteStructTemplate gDummyPaletteStructTemplate;
-extern void *gUnknown_0852487C;
-extern u8 gUnknown_0852489C[];
-
-extern u16 gUnknown_03000F3C;
-extern void *gUnknown_03000F44;
-
static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *);
static void unused_sub_80A1E40(struct PaletteStruct *, u32 *);
static void unused_sub_80A1F00(struct PaletteStruct *);
@@ -73,32 +51,29 @@ static u8 UpdateFastPaletteFade(void);
static u8 UpdateHardwarePaletteFade(void);
static void UpdateBlendRegisters(void);
static bool8 IsSoftwarePaletteFadeFinishing(void);
+static void sub_80A2D54(u8 taskId);
-void sub_80A1818(u16 a1)
-{
- void **v1 = &gUnknown_0852487C;
- CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10);
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
- if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF )
- {
- gUnknown_03000F44 = sub_80A1670;
- gUnknown_03000F3C = 0x20;
- }
- return;
-}
+EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0};
+EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0};
+EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
+EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
+static EWRAM_DATA u32 gFiller_2037FE0 = 0;
+static EWRAM_DATA u32 sPlttBufferTransferPending = 0;
+EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0};
-void sub_80A1884(u16 a1)
-{
- void **v1 = &gUnknown_0852487C;
- CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10);
- if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF )
- {
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
- if (!--gUnknown_03000F3C)
- gUnknown_03000F44 = 0;
- }
- return;
-}
+static const struct PaletteStructTemplate gDummyPaletteStructTemplate = {
+ .uid = 0xFFFF,
+ .pst_field_B_5 = 1
+};
+static const u8 gUnknown_0852489C[] = {
+ 0, 0, 0, 0, 0,
+ 5, 5, 5, 5, 5,
+ 11, 11, 11, 11, 11,
+ 16, 16, 16, 16, 16,
+ 21, 21, 21, 21, 21,
+ 27, 27, 27, 27, 27,
+ 31, 31
+};
void LoadCompressedPalette(const void *src, u16 offset, u16 size)
{
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
new file mode 100644
index 000000000..3e409244c
--- /dev/null
+++ b/src/pokemon_storage_system.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000F78[0x188];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/record_mixing.c b/src/record_mixing.c
new file mode 100644
index 000000000..151835e5e
--- /dev/null
+++ b/src/record_mixing.c
@@ -0,0 +1,28 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA bool8 gUnknown_03001130;
+IWRAM_DATA struct SecretBaseRecord *gUnknown_03001134;
+IWRAM_DATA TVShow *gUnknown_03001138;
+IWRAM_DATA struct UnknownSaveStruct2ABC *gUnknown_0300113C;
+IWRAM_DATA OldMan *gUnknown_03001140;
+IWRAM_DATA struct EasyChatPair *gUnknown_03001144;
+IWRAM_DATA struct DaycareData *gUnknown_03001148;
+IWRAM_DATA void *gUnknown_0300114C; // gSaveBlock2Ptr->field_64C
+IWRAM_DATA LilycoveLady *gUnknown_03001150;
+IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
+IWRAM_DATA void *gUnknown_03001158; // gSaveBlock2Ptr->field_64C
+IWRAM_DATA u32 gUnknown_0300115C;
+IWRAM_DATA u8 gUnknown_03001160[8];
+IWRAM_DATA u32 gUnknown_03001168[3];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/rom4.c b/src/rom4.c
new file mode 100644
index 000000000..c538595f2
--- /dev/null
+++ b/src/rom4.c
@@ -0,0 +1,19 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA void *gUnknown_03000E0C;
+IWRAM_DATA u8 gUnknown_03000E10[4];
+IWRAM_DATA u8 (*gUnknown_03000E14)(u32);
+IWRAM_DATA u8 gUnknown_03000E18;
+IWRAM_DATA u8 gUnknown_03000E19;
+IWRAM_DATA void *rom4_c_unused_03000e1c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/scrcmd.c b/src/scrcmd.c
new file mode 100644
index 000000000..b56a53caf
--- /dev/null
+++ b/src/scrcmd.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000F30;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/script_menu.c b/src/script_menu.c
new file mode 100644
index 000000000..04f1e82b7
--- /dev/null
+++ b/src/script_menu.c
@@ -0,0 +1,16 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03001124[6];
+IWRAM_DATA u32 filler_0300112c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/text.c b/src/text.c
index 0081a8244..7cc46cd92 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1,9 +1,9 @@
#include "global.h"
-#include "text.h"
#include "main.h"
#include "palette.h"
#include "string_util.h"
#include "window.h"
+#include "text.h"
extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
@@ -32,11 +32,7 @@ u8 gUnknown_03002FB0[0x20];
u8 gUnknown_03002FD0[0x20];
u8 gUnknown_03002FF0[0x20];
u8 gGlyphDimensions[0x2];
-struct {
- u8 flag_0:1;
- u8 flag_1:1;
- u8 flag_2:1;
-} gTextFlags;
+TextFlags gTextFlags;
const u8 gFontHalfRowOffsets[] = {
0x00, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x03, 0x06, 0x07, 0x08, 0x06, 0x00, 0x01, 0x02, 0x00,
@@ -1972,7 +1968,7 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
}
}
-bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
+bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
{
bool8 result = FALSE;
if (gTextFlags.flag_2 != 0)
@@ -1991,9 +1987,9 @@ bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
return result;
}
-bool8 TextPrinterWait(struct TextPrinter *textPrinter)
+bool16 TextPrinterWait(struct TextPrinter *textPrinter)
{
- bool8 result = FALSE;
+ bool16 result = FALSE;
if (gTextFlags.flag_2 != 0)
{
result = TextPrinterWaitAutoMode(textPrinter);
diff --git a/src/tileset_anims.c b/src/tileset_anims.c
new file mode 100644
index 000000000..4ad787e1c
--- /dev/null
+++ b/src/tileset_anims.c
@@ -0,0 +1,1411 @@
+
+// Includes
+#include "global.h"
+#include "palette.h"
+#include "blend_palette.h"
+#include "battle_transition.h"
+#include "task.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+static EWRAM_DATA struct {
+ const u16 *src;
+ u16 *dest;
+ u16 size;
+} sTilesetDMA3TransferBuffer[20] = {0};
+
+static u8 sTilesetDMA3TransferBufferSize;
+static u16 sPrimaryTilesetCBCounter;
+static u16 sPrimaryTilesetCBBufferSize;
+static u16 sSecondaryTilesetCBCounter;
+static u16 sSecondaryTilesetCBBufferSize;
+static void (*sPrimaryTilesetCB)(u16);
+static void (*sSecondaryTilesetCB)(u16);
+
+// Static ROM declarations
+
+static void cur_mapheader_run_tileset1_func(void);
+static void cur_mapheader_run_tileset2_func(void);
+
+// .rodata
+
+
+const u16 gUnknown_085105C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/1.4bpp");
+
+const u16 gUnknown_08510644[] = INCBIN_U16("data/tilesets/primary/general/anim/0/0.4bpp");
+
+const u16 gUnknown_085106C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/2.4bpp");
+
+const u16 tileset_anims_space_0[16] = {};
+
+const u16 *const gTilesetAnims_General0[] = {
+ gUnknown_08510644,
+ gUnknown_085105C4,
+ gUnknown_08510644,
+ gUnknown_085106C4
+};
+
+const u16 gUnknown_08510774[] = INCBIN_U16("data/tilesets/primary/general/anim/1/0.4bpp");
+
+const u16 gUnknown_08510B34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/1.4bpp");
+
+const u16 gUnknown_08510EF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/2.4bpp");
+
+const u16 gUnknown_085112B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/3.4bpp");
+
+const u16 gUnknown_08511674[] = INCBIN_U16("data/tilesets/primary/general/anim/1/4.4bpp");
+
+const u16 gUnknown_08511A34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/5.4bpp");
+
+const u16 gUnknown_08511DF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/6.4bpp");
+
+const u16 gUnknown_085121B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/7.4bpp");
+
+const u16 *const gTilesetAnims_General1[] = {
+ gUnknown_08510774,
+ gUnknown_08510B34,
+ gUnknown_08510EF4,
+ gUnknown_085112B4,
+ gUnknown_08511674,
+ gUnknown_08511A34,
+ gUnknown_08511DF4,
+ gUnknown_085121B4
+};
+
+const u16 gUnknown_08512594[] = INCBIN_U16("data/tilesets/primary/general/anim/2/0.4bpp");
+
+const u16 gUnknown_085126D4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/1.4bpp");
+
+const u16 gUnknown_08512814[] = INCBIN_U16("data/tilesets/primary/general/anim/2/2.4bpp");
+
+const u16 gUnknown_08512954[] = INCBIN_U16("data/tilesets/primary/general/anim/2/3.4bpp");
+
+const u16 gUnknown_08512A94[] = INCBIN_U16("data/tilesets/primary/general/anim/2/4.4bpp");
+
+const u16 gUnknown_08512BD4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/5.4bpp");
+
+const u16 gUnknown_08512D14[] = INCBIN_U16("data/tilesets/primary/general/anim/2/6.4bpp");
+
+const u16 *const gTilesetAnims_General2[] = {
+ gUnknown_08512594,
+ gUnknown_085126D4,
+ gUnknown_08512814,
+ gUnknown_08512954,
+ gUnknown_08512A94,
+ gUnknown_08512BD4,
+ gUnknown_08512D14,
+ gUnknown_08512594
+};
+
+const u16 gUnknown_08512E74[] = INCBIN_U16("data/tilesets/primary/general/anim/3/0.4bpp");
+
+const u16 gUnknown_08512F34[] = INCBIN_U16("data/tilesets/primary/general/anim/3/1.4bpp");
+
+const u16 gUnknown_08512FF4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/2.4bpp");
+
+const u16 gUnknown_085130B4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/3.4bpp");
+
+const u16 *const gTilesetAnims_General3[] = {
+ gUnknown_08512E74,
+ gUnknown_08512F34,
+ gUnknown_08512FF4,
+ gUnknown_085130B4
+};
+
+const u16 gUnknown_08513184[] = INCBIN_U16("data/tilesets/primary/general/anim/4/0.4bpp");
+
+const u16 gUnknown_085132C4[] = INCBIN_U16("data/tilesets/primary/general/anim/4/1.4bpp");
+
+const u16 gUnknown_08513404[] = INCBIN_U16("data/tilesets/primary/general/anim/4/2.4bpp");
+
+const u16 gUnknown_08513544[] = INCBIN_U16("data/tilesets/primary/general/anim/4/3.4bpp");
+
+const u16 *const gTilesetAnims_General4[] = {
+ gUnknown_08513184,
+ gUnknown_085132C4,
+ gUnknown_08513404,
+ gUnknown_08513544
+};
+
+const u16 gUnknown_08513694[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/0.4bpp");
+
+const u16 gUnknown_08513714[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/1.4bpp");
+
+const u16 gUnknown_08513794[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/2.4bpp");
+
+const u16 gUnknown_08513814[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Lavaridge0[] = {
+ gUnknown_08513694,
+ gUnknown_08513714,
+ gUnknown_08513794,
+ gUnknown_08513814
+};
+
+const u16 gUnknown_085138A4[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
+
+const u16 gUnknown_08513C64[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
+
+const u16 gUnknown_08514024[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
+
+const u16 *const gTilesetAnims_Pacifidlog0[] = {
+ gUnknown_085138A4,
+ gUnknown_08513C64,
+ gUnknown_08514024,
+ gUnknown_08513C64
+};
+
+const u16 gUnknown_085143F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/0.4bpp");
+
+const u16 gUnknown_08514474[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/1.4bpp");
+
+const u16 gUnknown_085144F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/2.4bpp");
+
+const u16 gUnknown_08514574[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Underwater0[] = {
+ gUnknown_085143F4,
+ gUnknown_08514474,
+ gUnknown_085144F4,
+ gUnknown_08514574
+};
+
+const u16 gUnknown_08514604[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
+
+const u16 gUnknown_08514704[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
+
+const u16 gUnknown_08514804[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
+
+const u16 gUnknown_08514904[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
+
+const u16 gUnknown_08514A04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
+
+const u16 gUnknown_08514B04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
+
+const u16 gUnknown_08514C04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
+
+const u16 gUnknown_08514D04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
+
+const u16 *const gTilesetAnims_Pacifidlog1[] = {
+ gUnknown_08514604,
+ gUnknown_08514704,
+ gUnknown_08514804,
+ gUnknown_08514904,
+ gUnknown_08514A04,
+ gUnknown_08514B04,
+ gUnknown_08514C04,
+ gUnknown_08514D04
+};
+
+const u16 gUnknown_08514E24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/0.4bpp");
+
+const u16 gUnknown_08514EA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/1.4bpp");
+
+const u16 gUnknown_08514F24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/2.4bpp");
+
+const u16 gUnknown_08514FA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/3.4bpp");
+
+const u16 gUnknown_08515024[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/a/1.4bpp");
+
+const u16 gUnknown_085150A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/0.4bpp");
+
+const u16 gUnknown_08515124[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/1.4bpp");
+
+const u16 gUnknown_085151A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/2.4bpp");
+
+const u16 gUnknown_08515224[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/3.4bpp");
+
+const u16 gUnknown_085152A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/b/1.4bpp");
+
+const u16 tileset_anims_space_1[16] = {};
+
+u16 *const gTilesetAnims_MauvilleVDests0[] = {
+ (u16 *)(BG_VRAM + 0x4c00),
+ (u16 *)(BG_VRAM + 0x4c80),
+ (u16 *)(BG_VRAM + 0x4d00),
+ (u16 *)(BG_VRAM + 0x4d80),
+ (u16 *)(BG_VRAM + 0x4e00),
+ (u16 *)(BG_VRAM + 0x4e80),
+ (u16 *)(BG_VRAM + 0x4f00),
+ (u16 *)(BG_VRAM + 0x4f80)
+};
+
+u16 *const gTilesetAnims_MauvilleVDests1[] = {
+ (u16 *)(BG_VRAM + 0x5000),
+ (u16 *)(BG_VRAM + 0x5080),
+ (u16 *)(BG_VRAM + 0x5100),
+ (u16 *)(BG_VRAM + 0x5180),
+ (u16 *)(BG_VRAM + 0x5200),
+ (u16 *)(BG_VRAM + 0x5280),
+ (u16 *)(BG_VRAM + 0x5300),
+ (u16 *)(BG_VRAM + 0x5380)
+};
+
+const u16 *const gTilesetAnims_Mauville0a[] = {
+ gUnknown_08514E24,
+ gUnknown_08514E24,
+ gUnknown_08514EA4,
+ gUnknown_08514F24,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514F24,
+ gUnknown_08514EA4
+};
+
+const u16 *const gTilesetAnims_Mauville0b[] = {
+ gUnknown_085150A4,
+ gUnknown_085150A4,
+ gUnknown_08515124,
+ gUnknown_085151A4,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_085151A4,
+ gUnknown_08515124
+};
+
+const u16 *const gTilesetAnims_Mauville1a[] = {
+ gUnknown_08514E24,
+ gUnknown_08514E24,
+ gUnknown_08515024,
+ gUnknown_08515024
+};
+
+const u16 *const gTilesetAnims_Mauville1b[] = {
+ gUnknown_085150A4,
+ gUnknown_085150A4,
+ gUnknown_085152A4,
+ gUnknown_085152A4
+};
+
+const u16 gUnknown_08515404[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
+
+const u16 gUnknown_08515484[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
+
+const u16 gUnknown_08515504[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
+
+const u16 gUnknown_08515584[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
+
+const u16 gUnknown_08515604[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
+
+const u16 gUnknown_08515684[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
+
+const u16 gUnknown_08515704[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
+
+const u16 gUnknown_08515784[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
+
+u16 *const gTilesetAnims_RustboroVDests0[] = {
+ (u16 *)(BG_VRAM + 0x5000),
+ (u16 *)(BG_VRAM + 0x5080),
+ (u16 *)(BG_VRAM + 0x5100),
+ (u16 *)(BG_VRAM + 0x5180),
+ (u16 *)(BG_VRAM + 0x5200),
+ (u16 *)(BG_VRAM + 0x5280),
+ (u16 *)(BG_VRAM + 0x5300),
+ (u16 *)(BG_VRAM + 0x5380)
+};
+
+const u16 *const gTilesetAnims_Rustboro0[] = {
+ gUnknown_08515404,
+ gUnknown_08515484,
+ gUnknown_08515504,
+ gUnknown_08515584,
+ gUnknown_08515604,
+ gUnknown_08515684,
+ gUnknown_08515704,
+ gUnknown_08515784
+};
+
+const u16 gUnknown_08515844[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
+
+const u16 gUnknown_085158C4[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
+
+const u16 tileset_anims_space_2[16] = {};
+
+const u16 *const gTilesetAnims_Rustboro1[] = {
+ gUnknown_08515844,
+ gUnknown_085158C4
+};
+
+const u16 gUnknown_0851596C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/0.4bpp");
+
+const u16 gUnknown_085159EC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/1.4bpp");
+
+const u16 gUnknown_08515A6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/2.4bpp");
+
+const u16 gUnknown_08515AEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/3.4bpp");
+
+const u16 gUnknown_08515B6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/0.4bpp");
+
+const u16 gUnknown_08515BEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/1.4bpp");
+
+const u16 gUnknown_08515C6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/2.4bpp");
+
+const u16 gUnknown_08515CEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/3.4bpp");
+
+const u16 tileset_anims_space_3[16] = {};
+
+const u16 *const gTilesetAnims_Lavaridge1_Cave0[] = {
+ gUnknown_0851596C,
+ gUnknown_085159EC,
+ gUnknown_08515A6C,
+ gUnknown_08515AEC
+};
+
+const u16 gUnknown_08515D9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/0.4bpp");
+
+const u16 gUnknown_08515E1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/1.4bpp");
+
+const u16 gUnknown_08515E9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/2.4bpp");
+
+const u16 gUnknown_08515F1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/3.4bpp");
+
+const u16 gUnknown_08515F9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/4.4bpp");
+
+const u16 gUnknown_0851601C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/5.4bpp");
+
+const u16 gUnknown_0851609C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/6.4bpp");
+
+const u16 gUnknown_0851611C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/7.4bpp");
+
+const u16 tileset_anims_space_4[16] = {};
+
+u16 *const gTilesetAnims_EverGrandeVDests0[] = {
+ (u16 *)(BG_VRAM + 0x5c00),
+ (u16 *)(BG_VRAM + 0x5c80),
+ (u16 *)(BG_VRAM + 0x5d00),
+ (u16 *)(BG_VRAM + 0x5d80),
+ (u16 *)(BG_VRAM + 0x5e00),
+ (u16 *)(BG_VRAM + 0x5e80),
+ (u16 *)(BG_VRAM + 0x5f00),
+ (u16 *)(BG_VRAM + 0x5f80)
+};
+
+const u16 *const gTilesetAnims_EverGrande0[] = {
+ gUnknown_08515D9C,
+ gUnknown_08515E1C,
+ gUnknown_08515E9C,
+ gUnknown_08515F1C,
+ gUnknown_08515F9C,
+ gUnknown_0851601C,
+ gUnknown_0851609C,
+ gUnknown_0851611C
+};
+
+const u16 gUnknown_085161FC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/0.4bpp");
+
+const u16 gUnknown_085162BC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/1.4bpp");
+
+const u16 gUnknown_0851637C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/2.4bpp");
+
+const u16 gUnknown_0851643C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Dewford0[] = {
+ gUnknown_085161FC,
+ gUnknown_085162BC,
+ gUnknown_0851637C,
+ gUnknown_0851643C
+};
+
+const u16 gUnknown_0851650C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp");
+
+const u16 gUnknown_085165CC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp");
+
+const u16 gUnknown_0851668C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp");
+
+const u16 gUnknown_0851674C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[] = {
+ gUnknown_0851650C,
+ gUnknown_085165CC,
+ gUnknown_0851668C,
+ gUnknown_0851674C
+};
+
+const u16 gUnknown_0851681C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp");
+
+const u16 gUnknown_085168DC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp");
+
+const u16 gUnknown_0851699C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp");
+
+const u16 gUnknown_08516A5C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[] = {
+ gUnknown_0851681C,
+ gUnknown_085168DC,
+ gUnknown_0851699C,
+ gUnknown_08516A5C
+};
+
+const u16 gUnknown_08516B2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/0.4bpp");
+
+const u16 gUnknown_08516BAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/1.4bpp");
+
+const u16 gUnknown_08516C2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/2.4bpp");
+
+const u16 gUnknown_08516CAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Slateport0[] = {
+ gUnknown_08516B2C,
+ gUnknown_08516BAC,
+ gUnknown_08516C2C,
+ gUnknown_08516CAC
+};
+
+const u16 gUnknown_08516D3C[] = INCBIN_U16("data/tilesets/primary/building/anim/0.4bpp");
+
+const u16 gUnknown_08516DBC[] = INCBIN_U16("data/tilesets/primary/building/anim/1.4bpp");
+
+const u16 *const gTilesetAnims_InsideBuilding0[] = {
+ gUnknown_08516D3C,
+ gUnknown_08516DBC
+};
+
+const u16 gUnknown_08516E44[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
+
+const u16 gUnknown_08516FC4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
+
+const u16 gUnknown_08517144[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
+
+const u16 gUnknown_085172C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
+
+const u16 gUnknown_08517544[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
+
+const u16 gUnknown_085177C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
+
+const u16 *const gTilesetAnims_SootopolisGym0[] = {
+ gUnknown_08516E44,
+ gUnknown_08516FC4,
+ gUnknown_08517144
+};
+
+const u16 *const gTilesetAnims_SootopolisGym1[] = {
+ gUnknown_085172C4,
+ gUnknown_08517544,
+ gUnknown_085177C4
+};
+
+const u16 gUnknown_08517A5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
+
+const u16 gUnknown_08517ADC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
+
+const u16 gUnknown_08517B5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
+
+const u16 gUnknown_08517B7C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
+
+const u16 gUnknown_08517B9C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
+
+const u16 gUnknown_08517BBC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
+
+const u16 tileset_anims_space_5[16] = {};
+
+const u16 *const gTilesetAnims_EliteFour1[] = {
+ gUnknown_08517B5C,
+ gUnknown_08517B7C,
+ gUnknown_08517B9C,
+ gUnknown_08517BBC
+};
+
+const u16 *const gTilesetAnims_EliteFour0[] = {
+ gUnknown_08517A5C,
+ gUnknown_08517ADC
+};
+
+const u16 gUnknown_08517C14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
+
+const u16 gUnknown_08517E14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
+
+const u16 tileset_anims_space_6[16] = {};
+
+const u16 *const gTilesetAnims_MauvilleGym0[] = {
+ gUnknown_08517C14,
+ gUnknown_08517E14
+};
+
+const u16 gUnknown_0851803C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/0.4bpp");
+
+const u16 gUnknown_0851815C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/1.4bpp");
+
+const u16 tileset_anims_space_7[16] = {};
+
+const u16 *const gTilesetAnims_BikeShop0[] = {
+ gUnknown_0851803C,
+ gUnknown_0851815C
+};
+
+const u16 gUnknown_085182A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/0.4bpp");
+
+const u16 gUnknown_08518EA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/1.4bpp");
+
+const u16 gUnknown_08519AA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/2.4bpp");
+
+const u16 gUnknown_0851A6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/3.4bpp");
+
+const u16 gUnknown_0851B2A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/4.4bpp");
+
+const u16 gUnknown_0851BEA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/5.4bpp");
+
+const u16 gUnknown_0851CAA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/6.4bpp");
+
+const u16 gUnknown_0851D6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/7.4bpp");
+
+const u16 tileset_anims_space_8[16] = {};
+
+const u16 gUnknown_0851E2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp");
+
+const u16 gUnknown_0851EAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/1.4bpp");
+
+const u16 gUnknown_0851F2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/2.4bpp");
+
+const u16 gUnknown_0851FAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/3.4bpp");
+
+const u16 *const gTilesetAnims_Sootopolis0[] = {
+ gUnknown_085182A4,
+ gUnknown_08518EA4,
+ gUnknown_08519AA4,
+ gUnknown_0851A6A4,
+ gUnknown_0851B2A4,
+ gUnknown_0851BEA4,
+ gUnknown_0851CAA4,
+ gUnknown_0851D6A4
+};
+
+const u16 gUnknown_085202E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp");
+
+const u16 gUnknown_085203E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp");
+
+const u16 gUnknown_085204E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp");
+
+const u16 tileset_anims_space_9[16] = {};
+
+const u16 gUnknown_08520604[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp");
+
+const u16 gUnknown_08520704[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp");
+
+const u16 gUnknown_08520804[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp");
+
+const u16 tileset_anims_space_10[7808] = {};
+
+const u16 gUnknown_08524604[] = INCBIN_U16("data/tilesets/secondary/unused_2/0.4bpp");
+
+const u16 tileset_anims_space_11[224] = {};
+
+const u16 gUnknown_08524804[] = INCBIN_U16("data/tilesets/secondary/unused_2/1.4bpp");
+
+const u16 *const gTilesetAnims_BattlePyramid0[] = {
+ gUnknown_085202E4,
+ gUnknown_085203E4,
+ gUnknown_085204E4
+};
+
+const u16 *const gTilesetAnims_BattlePyramid1[] = {
+ gUnknown_08520604,
+ gUnknown_08520704,
+ gUnknown_08520804
+};
+
+extern const u16 gUnknown_08D85640[];
+extern const u16 gUnknown_08D85660[];
+extern const u16 gUnknown_08D85680[];
+extern const u16 gUnknown_08D856A0[];
+
+static const u16 *const gTilesetAnims_BattleDomePals0[] = {
+ gUnknown_08D85640,
+ gUnknown_08D85660,
+ gUnknown_08D85680,
+ gUnknown_08D856A0,
+};
+
+// .text
+
+static void ResetTilesetAnimBuffer(void)
+{
+ sTilesetDMA3TransferBufferSize = 0;
+ CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer);
+}
+
+static void AppendTilesetAnimToBuffer(const u16 *src, u16 *dest, u16 size)
+{
+ if (sTilesetDMA3TransferBufferSize < 20)
+ {
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = src;
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = dest;
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = size;
+ sTilesetDMA3TransferBufferSize ++;
+ }
+}
+
+void TransferTilesetAnimsBuffer(void)
+{
+ int i;
+
+ for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++)
+ {
+ DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size);
+ }
+ sTilesetDMA3TransferBufferSize = 0;
+}
+
+void cur_mapheader_run_tileset_funcs_after_some_cpuset(void)
+{
+ ResetTilesetAnimBuffer();
+ cur_mapheader_run_tileset1_func();
+ cur_mapheader_run_tileset2_func();
+}
+
+void sub_80A0A2C(void)
+{
+ cur_mapheader_run_tileset2_func();
+}
+
+void sub_80A0A38(void)
+{
+ ResetTilesetAnimBuffer();
+ if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize)
+ sPrimaryTilesetCBCounter = 0;
+ if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize)
+ sSecondaryTilesetCBCounter = 0;
+ if (sPrimaryTilesetCB)
+ sPrimaryTilesetCB(sPrimaryTilesetCBCounter);
+ if (sSecondaryTilesetCB)
+ sSecondaryTilesetCB(sSecondaryTilesetCBCounter);
+}
+
+static void cur_mapheader_run_tileset1_func(void)
+{
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0;
+ sPrimaryTilesetCB = NULL;
+ if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback)
+ gMapHeader.mapData->primaryTileset->callback();
+}
+
+static void cur_mapheader_run_tileset2_func(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 0;
+ sSecondaryTilesetCB = NULL;
+ if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback)
+ gMapHeader.mapData->secondaryTileset->callback();
+}
+
+void TilesetCb_General(void)
+{
+ static void sub_80A0B70(u16);
+
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0x100;
+ sPrimaryTilesetCB = sub_80A0B70;
+}
+
+void TilesetCb_InsideBuilding(void)
+{
+ static void sub_80A0BB4(u16);
+
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0x100;
+ sPrimaryTilesetCB = sub_80A0BB4;
+}
+
+static void sub_80A0B70(u16 timer)
+{
+ static void sub_80A0BCC(u16);
+ static void sub_80A0BF4(u16);
+ static void sub_80A0C1C(u16);
+ static void sub_80A0C44(u16);
+ static void sub_80A12AC(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A0BCC(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A0BF4(timer >> 4);
+ if ((timer & 0x0F) == 2)
+ sub_80A0C1C(timer >> 4);
+ if ((timer & 0x0F) == 3)
+ sub_80A0C44(timer >> 4);
+ if ((timer & 0x0F) == 4)
+ sub_80A12AC(timer >> 4);
+}
+
+static void sub_80A0BB4(u16 timer)
+{
+ static void sub_80A1688(u16);
+
+ if ((timer & 0x7) == 0)
+ sub_80A1688(timer >> 3);
+}
+
+static void sub_80A0BCC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80);
+}
+
+static void sub_80A0BF4(u16 timer)
+{
+ u8 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0);
+}
+
+static void sub_80A0C1C(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140);
+}
+
+static void sub_80A0C44(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0);
+}
+
+void TilesetCb_Petalburg(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Rustboro(void)
+{
+ static void sub_80A103C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A103C;
+}
+
+void TilesetCb_Dewford(void)
+{
+ static void sub_80A10B8(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10B8;
+}
+
+void TilesetCb_Slateport(void)
+{
+ static void sub_80A10D0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10D0;
+}
+
+void TilesetCb_Mauville(void)
+{
+ static void sub_80A10E8(u16);
+
+ sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10E8;
+}
+
+void TilesetCb_Lavaridge(void)
+{
+ static void sub_80A115C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A115C;
+}
+
+void TilesetCb_Fallarbor(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Fortree(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Lilycove(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Mossdeep(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_EverGrande(void)
+{
+ static void sub_80A1188(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1188;
+}
+
+void TilesetCb_Pacifidlog(void)
+{
+ static void sub_80A11FC(u16);
+
+ sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A11FC;
+}
+
+void TilesetCb_Sootopolis(void)
+{
+ static void sub_80A122C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A122C;
+}
+
+void TilesetCb_BattleFrontierOutsideWest(void)
+{
+ static void sub_80A127C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A127C;
+}
+
+void TilesetCb_BattleFrontierOutsideEast(void)
+{
+ static void sub_80A1294(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1294;
+}
+
+void TilesetCb_Underwater(void)
+{
+ static void sub_80A1244(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 128;
+ sSecondaryTilesetCB = sub_80A1244;
+}
+
+void TilesetCb_SootopolisGym(void)
+{
+ static void sub_80A15D8(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 240;
+ sSecondaryTilesetCB = sub_80A15D8;
+}
+
+void TilesetCb_Cave(void)
+{
+ static void sub_80A1260(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1260;
+}
+
+void TilesetCb_EliteFour(void)
+{
+ static void sub_80A15F0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 128;
+ sSecondaryTilesetCB = sub_80A15F0;
+}
+
+void TilesetCb_MauvilleGym(void)
+{
+ static void sub_80A15C0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A15C0;
+}
+
+void TilesetCb_BikeShop(void)
+{
+ static void sub_80A161C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A161C;
+}
+
+void TilesetCb_BattlePyramid(void)
+{
+ static void sub_80A1634(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1634;
+}
+
+void TilesetCb_BattleDome(void)
+{
+ static void sub_80A1658(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1658;
+}
+
+static void sub_80A103C(u16 timer)
+{
+ static void sub_80A1434(u16, u8);
+ static void sub_80A1470(u16);
+
+ if ((timer & 0x07) == 0)
+ {
+ sub_80A1434(timer >> 3, 0);
+ sub_80A1470(timer >> 3);
+ }
+ if ((timer & 0x07) == 1)
+ sub_80A1434(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A1434(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A1434(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A1434(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A1434(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A1434(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A1434(timer >> 3, 7);
+}
+
+static void sub_80A10B8(u16 timer)
+{
+ static void sub_80A1520(u16);
+
+ if ((timer & 7) == 0)
+ sub_80A1520(timer >> 3);
+}
+
+static void sub_80A10D0(u16 timer)
+{
+ static void sub_80A1598(u16);
+
+ if ((timer & 15) == 0)
+ sub_80A1598(timer >> 4);
+}
+
+static void sub_80A10E8(u16 timer)
+{
+ static void sub_80A1394(u16, u8);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1394(timer >> 3, 0);
+ if ((timer & 0x07) == 1)
+ sub_80A1394(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A1394(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A1394(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A1394(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A1394(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A1394(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A1394(timer >> 3, 7);
+}
+
+static void sub_80A115C(u16 timer)
+{
+ static void sub_80A12D4(u8);
+ static void sub_80A1498(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A12D4(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A1498(timer >> 4);
+}
+
+static void sub_80A1188(u16 timer)
+{
+ static void sub_80A14C0(u16, u8);
+
+ if ((timer & 0x07) == 0)
+ sub_80A14C0(timer >> 3, 0);
+ if ((timer & 0x07) == 1)
+ sub_80A14C0(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A14C0(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A14C0(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A14C0(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A14C0(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A14C0(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A14C0(timer >> 3, 7);
+}
+
+static void sub_80A11FC(u16 timer)
+{
+ static void sub_80A131C(u8);
+ static void sub_80A136C(u8);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A131C(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A136C(timer >> 4);
+}
+
+static void sub_80A122C(u16 timer)
+{
+ static void sub_80A1798(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A1798(timer >> 4);
+}
+
+static void sub_80A1244(u16 timer)
+{
+ static void sub_80A1344(u8);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A1344(timer >> 4);
+}
+
+static void sub_80A1260(u16 timer)
+{
+ static void sub_80A14F8(u16);
+
+ if ((timer & 0x0F) == 1)
+ sub_80A14F8(timer >> 4);
+}
+
+static void sub_80A127C(u16 timer)
+{
+ static void sub_80A1548(u16);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1548(timer >> 3);
+}
+
+static void sub_80A1294(u16 timer)
+{
+ static void sub_80A1570(u16);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1570(timer >> 3);
+}
+
+static void sub_80A12AC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140);
+}
+
+static void sub_80A12D4(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6400), 0x80);
+
+ idx = (timer + 2) % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6480), 0x80);
+}
+
+static void sub_80A131C(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0);
+}
+
+static void sub_80A1344(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80);
+}
+
+static void sub_80A136C(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100);
+}
+
+static void sub_80A1394(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ if (timer_div < 12) // almost certainly a typo
+ {
+ timer_div %= 12;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ }
+ else
+ {
+ timer_div %= 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ }
+}
+
+static void sub_80A1434(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ timer_div %= 8;
+ if (gTilesetAnims_Rustboro0[timer_div])
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro0[timer_div], gTilesetAnims_RustboroVDests0[timer_mod], 0x80);
+}
+
+static void sub_80A1470(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + 0x7800), 0x80);
+}
+
+static void sub_80A1498(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x5400), 0x80);
+}
+
+static void sub_80A14C0(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ timer_div %= 8;
+
+ AppendTilesetAnimToBuffer(gTilesetAnims_EverGrande0[timer_div], gTilesetAnims_EverGrandeVDests0[timer_mod], 0x80);
+}
+
+static void sub_80A14F8(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x7400), 0x80);
+}
+
+static void sub_80A1520(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0);
+}
+
+static void sub_80A1548(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+}
+
+static void sub_80A1570(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+}
+
+static void sub_80A1598(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80);
+}
+
+static void sub_80A15C0(u16 timer)
+{
+ static void sub_80A1748(u16);
+
+ if ((timer & 1) == 0)
+ sub_80A1748(timer >> 1);
+}
+
+static void sub_80A15D8(u16 timer)
+{
+ static void sub_80A16B0(u16);
+
+ if ((timer & 7) == 0)
+ sub_80A16B0(timer >> 3);
+}
+
+static void sub_80A15F0(u16 timer)
+{
+ static void sub_80A1720(u16);
+ static void sub_80A16F8(u16);
+
+ if ((timer & 0x3f) == 1)
+ sub_80A1720(timer >> 6);
+ if ((timer & 0x07) == 1)
+ sub_80A16F8(timer >> 3);
+}
+static void sub_80A161C(u16 timer)
+{
+ static void sub_80A1770(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1770(timer >> 2);
+}
+
+static void sub_80A1634(u16 timer)
+{
+ static void sub_80A17C0(u16);
+ static void sub_80A17EC(u16);
+
+ if ((timer & 7) == 0)
+ {
+ sub_80A17C0(timer >> 3);
+ sub_80A17EC(timer >> 3);
+ }
+}
+
+static void sub_80A1658(u16 timer)
+{
+ static void sub_80A1818(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1818(timer >> 2);
+}
+
+static void sub_80A1670(u16 timer)
+{
+ static void sub_80A1884(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1884(timer >> 2);
+}
+
+static void sub_80A1688(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80);
+}
+
+static void sub_80A16B0(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280);
+}
+
+static void sub_80A16F8(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20);
+}
+
+static void sub_80A1720(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80);
+}
+
+static void sub_80A1748(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + 0x5200), 0x200);
+}
+
+static void sub_80A1770(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120);
+}
+
+static void sub_80A1798(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00);
+}
+
+static void sub_80A17C0(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100);
+}
+
+static void sub_80A17EC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100);
+}
+
+static void sub_80A1818(u16 a1)
+{
+ CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
+ BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF )
+ {
+ sSecondaryTilesetCB = sub_80A1670;
+ sSecondaryTilesetCBBufferSize = 0x20;
+ }
+}
+
+static void sub_80A1884(u16 a1)
+{
+ CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
+ if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF )
+ {
+ BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ if (!--sSecondaryTilesetCBBufferSize)
+ sSecondaryTilesetCB = NULL;
+ }
+}
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
new file mode 100644
index 000000000..d88af611f
--- /dev/null
+++ b/src/unk_text_util_2.c
@@ -0,0 +1,219 @@
+#include "global.h"
+#include "main.h"
+#include "window.h"
+#include "text.h"
+#include "sound.h"
+
+static const u8 gUnknown_08616124[] = {1, 2, 4};
+static const u16 gFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont");
+
+static void DecompressGlyphFont6(u16);
+
+u16 Font6Func(struct TextPrinter *textPrinter)
+{
+ u16 char_;
+ struct TextPrinterSubStruct *sub;
+
+ sub = &textPrinter->sub_union.sub;
+ switch (textPrinter->state)
+ {
+ case 0:
+ if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper)
+ {
+ textPrinter->delayCounter = 0;
+ }
+ if (textPrinter->delayCounter && textPrinter->text_speed)
+ {
+ textPrinter->delayCounter --;
+ if (gTextFlags.flag_0 && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub->font_type_upper = TRUE;
+ textPrinter->delayCounter = 0;
+ }
+ return 3;
+ }
+ if (gTextFlags.flag_2)
+ {
+ textPrinter->delayCounter = 3;
+ }
+ else
+ {
+ textPrinter->delayCounter = textPrinter->text_speed;
+ }
+ char_ = *textPrinter->subPrinter.current_text_offset ++;
+ switch (char_)
+ {
+ case EOS:
+ return 1;
+ case CHAR_NEWLINE:
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ return 2;
+ case PLACEHOLDER_BEGIN:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case EXT_CTRL_CODE_BEGIN:
+ char_ = *textPrinter->subPrinter.current_text_offset ++;
+ switch (char_)
+ {
+ case 1:
+ textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 2:
+ textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 3:
+ textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 4:
+ textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.bgColor = *++ textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.shadowColor = *++ textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.current_text_offset ++;
+
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 5:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 6:
+ sub->font_type = *textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 7:
+ return 2;
+ case 8:
+ textPrinter->delayCounter = *textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->state = 6;
+ return 2;
+ case 9:
+ textPrinter->state = 1;
+ if (gTextFlags.flag_2)
+ {
+ sub->frames_visible_counter = 0;
+ }
+ return 3;
+ case 10:
+ textPrinter->state = 5;
+ return 3;
+ case 11:
+ case 16:
+ textPrinter->subPrinter.current_text_offset += 2;
+ return 2;
+ case 12:
+ char_ = *++textPrinter->subPrinter.current_text_offset;
+ break;
+ case 13:
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 14:
+ textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 15:
+ FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ return 2;
+ }
+ break;
+ case CHAR_PROMPT_CLEAR:
+ textPrinter->state = 2;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case CHAR_PROMPT_SCROLL:
+ textPrinter->state = 3;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case 0xF9:
+ char_ = *textPrinter->subPrinter.current_text_offset ++ | 0x100;
+ break;
+ case 0xF8:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 0;
+ }
+ DecompressGlyphFont6(char_);
+ CopyGlyphToWindow(textPrinter);
+ textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing;
+ return 0;
+ case 1:
+ if (TextPrinterWait(textPrinter))
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 2:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 3:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ TextPrinterClearDownArrow(textPrinter);
+ textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->state = 4;
+ }
+ return 3;
+ case 4:
+ if (textPrinter->scrollDistance)
+ {
+ if (textPrinter->scrollDistance < gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed])
+ {
+ ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->scrollDistance = 0;
+ }
+ else
+ {
+ ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->scrollDistance -= gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed];
+ }
+ CopyWindowToVram(textPrinter->subPrinter.windowId, 2);
+ }
+ else
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 5:
+ if (!IsSEPlaying())
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 6:
+ if (textPrinter->delayCounter)
+ {
+ textPrinter->delayCounter --;
+ }
+ else
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ }
+ return 1;
+}
+
+static void DecompressGlyphFont6(u16 glyph)
+{
+ const u16 *glyphs;
+
+ glyphs = gFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8);
+ DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
+ DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
+ DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90 + 0x60));
+ gUnknown_03002F90[0x80] = 0x10;
+ gUnknown_03002F90[0x81] = 0x10;
+}
+
+u8 GetGlyphWidthFont6(void)
+{
+ return 0x10;
+}