summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/gba/defines.h3
-rw-r--r--src/tileset_anims.c89
-rw-r--r--tools/mid2agb/agb.cpp5
3 files changed, 52 insertions, 45 deletions
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 1eed6303d..16f1315d0 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -61,6 +61,9 @@
#define TILE_SIZE_4BPP 32
#define TILE_SIZE_8BPP 64
+#define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP)
+#define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP)
+
#define TOTAL_OBJ_TILE_COUNT 1024
#define WIN_RANGE(a, b) (((a) << 8) | (b))
diff --git a/src/tileset_anims.c b/src/tileset_anims.c
index d05931dba..7f7a8a3c4 100644
--- a/src/tileset_anims.c
+++ b/src/tileset_anims.c
@@ -1,4 +1,3 @@
-
// Includes
#include "global.h"
#include "palette.h"
@@ -6,6 +5,10 @@
#include "battle_transition.h"
#include "task.h"
#include "battle_transition.h"
+#include "fieldmap.h"
+
+#define SECONDARY_TILESET_VRAM 0x2000
+#define TILE_VRAM(n) (0x20 * (n))
// Static type declarations
@@ -719,22 +722,22 @@ void TilesetCb_InsideBuilding(void)
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);
+ static void gTilesetAnims_Flower(u16);
+ static void gTilesetAnims_Water(u16);
+ static void gTilesetAnims_SandWaterEdge(u16);
+ static void gTilesetAnims_Waterfall(u16);
+ static void gTilesetAnims_LandWaterEdge (u16);
if ((timer & 0x0F) == 0)
- sub_80A0BCC(timer >> 4);
+ gTilesetAnims_Flower(timer >> 4);
if ((timer & 0x0F) == 1)
- sub_80A0BF4(timer >> 4);
+ gTilesetAnims_Water(timer >> 4);
if ((timer & 0x0F) == 2)
- sub_80A0C1C(timer >> 4);
+ gTilesetAnims_SandWaterEdge(timer >> 4);
if ((timer & 0x0F) == 3)
- sub_80A0C44(timer >> 4);
+ gTilesetAnims_Waterfall(timer >> 4);
if ((timer & 0x0F) == 4)
- sub_80A12AC(timer >> 4);
+ gTilesetAnims_LandWaterEdge (timer >> 4);
}
static void sub_80A0BB4(u16 timer)
@@ -745,36 +748,36 @@ static void sub_80A0BB4(u16 timer)
sub_80A1688(timer >> 3);
}
-static void sub_80A0BCC(u16 timer)
+static void gTilesetAnims_Flower(u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80);
}
-static void sub_80A0BF4(u16 timer)
+static void gTilesetAnims_Water(u16 timer)
{
u8 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(432)), 0x3C0);
}
-static void sub_80A0C1C(u16 timer)
+static void gTilesetAnims_SandWaterEdge(u16 timer)
{
u16 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x140);
}
-static void sub_80A0C44(u16 timer)
+static void gTilesetAnims_Waterfall(u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0xc0);
}
void TilesetCb_Petalburg(void)
@@ -1122,12 +1125,12 @@ static void sub_80A1294(u16 timer)
sub_80A1570(timer >> 3);
}
-static void sub_80A12AC(u16 timer)
+static void gTilesetAnims_LandWaterEdge (u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(480)), 0x140);
}
static void sub_80A12D4(u8 timer)
@@ -1135,10 +1138,10 @@ static void sub_80A12D4(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 288)), 0x80);
idx = (timer + 2) % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6480), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 292)), 0x80);
}
static void sub_80A131C(u8 timer)
@@ -1146,7 +1149,7 @@ static void sub_80A131C(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x3C0);
}
static void sub_80A1344(u8 timer)
@@ -1154,7 +1157,7 @@ static void sub_80A1344(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x80);
}
static void sub_80A136C(u8 timer)
@@ -1162,7 +1165,7 @@ static void sub_80A136C(u8 timer)
u8 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x100);
}
static void sub_80A1394(u16 timer_div, u8 timer_mod)
@@ -1195,7 +1198,7 @@ static void sub_80A1470(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + 0x7800), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 448)), 0x80);
}
static void sub_80A1498(u16 timer)
@@ -1203,7 +1206,7 @@ static void sub_80A1498(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x5400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 160)), 0x80);
}
static void sub_80A14C0(u16 timer_div, u8 timer_mod)
@@ -1219,7 +1222,7 @@ static void sub_80A14F8(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x7400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 416)), 0x80);
}
static void sub_80A1520(u16 timer)
@@ -1227,7 +1230,7 @@ static void sub_80A1520(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 170)), 0xC0);
}
static void sub_80A1548(u16 timer)
@@ -1235,7 +1238,7 @@ static void sub_80A1548(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
static void sub_80A1570(u16 timer)
@@ -1243,7 +1246,7 @@ static void sub_80A1570(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
static void sub_80A1598(u16 timer)
@@ -1251,7 +1254,7 @@ static void sub_80A1598(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)), 0x80);
}
static void sub_80A15C0(u16 timer)
@@ -1321,7 +1324,7 @@ static void sub_80A1688(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0x80);
}
static void sub_80A16B0(u16 timer)
@@ -1329,8 +1332,8 @@ 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);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x180);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x280);
}
static void sub_80A16F8(u16 timer)
@@ -1338,7 +1341,7 @@ static void sub_80A16F8(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20);
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 504)), 0x20);
}
static void sub_80A1720(u16 timer)
@@ -1346,7 +1349,7 @@ static void sub_80A1720(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 480)), 0x80);
}
static void sub_80A1748(u16 timer)
@@ -1354,7 +1357,7 @@ static void sub_80A1748(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + 0x5200), 0x200);
+ AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)), 0x200);
}
static void sub_80A1770(u16 timer)
@@ -1362,7 +1365,7 @@ static void sub_80A1770(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x120);
}
static void sub_80A1798(u16 timer)
@@ -1370,7 +1373,7 @@ static void sub_80A1798(u16 timer)
u16 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 240)), 0xc00);
}
static void sub_80A17C0(u16 timer)
@@ -1378,7 +1381,7 @@ static void sub_80A17C0(u16 timer)
u16 idx;
idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 151)), 0x100);
}
static void sub_80A17EC(u16 timer)
@@ -1386,7 +1389,7 @@ static void sub_80A17EC(u16 timer)
u16 idx;
idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 135)), 0x100);
}
static void sub_80A1818(u16 a1)
diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp
index 9ff1efa86..5023455ca 100644
--- a/tools/mid2agb/agb.cpp
+++ b/tools/mid2agb/agb.cpp
@@ -334,8 +334,6 @@ void PrintAgbTrack(std::vector<Event>& events)
{
std::fprintf(g_outputFile, "\n@**************** Track %u (Midi-Chn.%u) ****************@\n\n", g_agbTrack, g_midiChan + 1);
std::fprintf(g_outputFile, "%s_%u:\n", g_asmLabel.c_str(), g_agbTrack);
- PrintWait(g_initialWait);
- PrintByte("KEYSH , %s_key%+d", g_asmLabel.c_str(), 0);
int wholeNoteCount = 0;
int loopEndBlockNum = 0;
@@ -359,6 +357,9 @@ void PrintAgbTrack(std::vector<Event>& events)
if (!foundVolBeforeNote)
PrintByte("\tVOL , 127*%s_mvl/mxv", g_asmLabel.c_str());
+ PrintWait(g_initialWait);
+ PrintByte("KEYSH , %s_key%+d", g_asmLabel.c_str(), 0);
+
for (unsigned i = 0; events[i].type != EventType::EndOfTrack; i++)
{
const Event& event = events[i];