diff options
-rw-r--r-- | include/gba/defines.h | 3 | ||||
-rw-r--r-- | src/tileset_anims.c | 89 | ||||
-rw-r--r-- | tools/mid2agb/agb.cpp | 5 |
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]; |