added battle bg's and platforms and a function LoadBattleBg to change them

This commit is contained in:
TheXaman 2021-12-10 20:40:34 +01:00
parent ef01c401f7
commit 44121b041c
2 changed files with 167 additions and 24 deletions

View File

@ -598,7 +598,11 @@ const struct WindowTemplate * const gBattleWindowTemplates[] =
[B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates, [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates,
}; };
#if P_ENABLE_DEBUG
const struct BattleBackground sBattleTerrainTable[] =
#else
static const struct BattleBackground sBattleTerrainTable[] = static const struct BattleBackground sBattleTerrainTable[] =
#endif
{ {
[BATTLE_TERRAIN_GRASS] = [BATTLE_TERRAIN_GRASS] =
{ {

View File

@ -9,6 +9,7 @@
#include "decompress.h" #include "decompress.h"
#include "field_weather.h" #include "field_weather.h"
#include "gpu_regs.h" #include "gpu_regs.h"
#include "graphics.h"
#include "item.h" #include "item.h"
#include "item_icon.h" #include "item_icon.h"
#include "list_menu.h" #include "list_menu.h"
@ -84,15 +85,56 @@ struct PokemonDebugMenu
struct PokemonDebugModifyArrows modifyArrows; struct PokemonDebugModifyArrows modifyArrows;
u8 animIdBack; u8 animIdBack;
u8 animIdFront; u8 animIdFront;
u8 battleBgType;
u8 battleTerrain;
};
static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 0,
.charBaseIndex = 0,
.mapBaseIndex = 24,
.screenSize = 2,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 1,
.charBaseIndex = 1,
.mapBaseIndex = 28,
.screenSize = 2,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 2,
.charBaseIndex = 1,
.mapBaseIndex = 30,
.screenSize = 1,
.paletteMode = 0,
.priority = 1,
.baseTile = 0
},
{
.bg = 3,
.charBaseIndex = 2,
.mapBaseIndex = 26,
.screenSize = 1,
.paletteMode = 0,
.priority = 3,
.baseTile = 0
},
}; };
//WindowTemplates //WindowTemplates
#define WIN_NAME_NUMBERS 0 #define WIN_NAME_NUMBERS 0
#define WIN_INSTRUCTIONS 1 #define WIN_INSTRUCTIONS 1
#define WIN_BACK_SPRITE_LINE 2 #define WIN_ANIM_INFORMATION_FRONT 2
#define WIN_ANIM_INFORMATION_FRONT 3 #define WIN_ANIM_INFORMATION_BACK 3
#define WIN_ANIM_INFORMATION_BACK 4 #define WIN_END 4
#define WIN_END 5
static const struct WindowTemplate sPokemonDebugWindowTemplate[] = static const struct WindowTemplate sPokemonDebugWindowTemplate[] =
{ {
[WIN_NAME_NUMBERS] = { [WIN_NAME_NUMBERS] = {
@ -113,15 +155,6 @@ static const struct WindowTemplate sPokemonDebugWindowTemplate[] =
.paletteNum = 0xF, .paletteNum = 0xF,
.baseBlock = 1 + 28 .baseBlock = 1 + 28
}, },
[WIN_BACK_SPRITE_LINE] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 14,
.width = 11,
.height = 1,
.paletteNum = 0xF,
.baseBlock = 1 + 28 + 75
},
[WIN_ANIM_INFORMATION_FRONT] = { [WIN_ANIM_INFORMATION_FRONT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 14, .tilemapLeft = 14,
@ -129,7 +162,7 @@ static const struct WindowTemplate sPokemonDebugWindowTemplate[] =
.width = 16, .width = 16,
.height = 3, .height = 3,
.paletteNum = 0xF, .paletteNum = 0xF,
.baseBlock = 1 + 28 + 75 + 11 .baseBlock = 1 + 28 + 75
}, },
[WIN_ANIM_INFORMATION_BACK] = { [WIN_ANIM_INFORMATION_BACK] = {
.bg = 0, .bg = 0,
@ -138,7 +171,7 @@ static const struct WindowTemplate sPokemonDebugWindowTemplate[] =
.width = 16, .width = 16,
.height = 3, .height = 3,
.paletteNum = 0xF, .paletteNum = 0xF,
.baseBlock = 1 + 28 + 75 + 11 + 48 .baseBlock = 1 + 28 + 75 + 48
}, },
DUMMY_WIN_TEMPLATE, DUMMY_WIN_TEMPLATE,
}; };
@ -623,6 +656,107 @@ void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bool8 isS
LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20); LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
} }
//Battle background functions
struct BattleBackground
{
const void *tileset;
const void *tilemap;
const void *entryTileset;
const void *entryTilemap;
const void *palette;
};
extern const struct BattleBackground sBattleTerrainTable[];
#define MAP_BATTLE_SCENE_NORMAL 0
#define MAP_BATTLE_SCENE_GYM 1
#define MAP_BATTLE_SCENE_MAGMA 2
#define MAP_BATTLE_SCENE_AQUA 3
#define MAP_BATTLE_SCENE_SIDNEY 4
#define MAP_BATTLE_SCENE_PHOEBE 5
#define MAP_BATTLE_SCENE_GLACIA 6
#define MAP_BATTLE_SCENE_DRAKE 7
#define MAP_BATTLE_SCENE_FRONTIER 8
#define MAP_BATTLE_SCENE_LEADER 9
#define MAP_BATTLE_SCENE_WALLACE 10
#define MAP_BATTLE_SCENE_GROUDON 11
#define MAP_BATTLE_SCENE_KYOGRE 12
#define MAP_BATTLE_SCENE_RAYQUAZA 13
static void LoadBattleBg(u8 battleBgType, u8 battleTerrain)
{
switch (battleBgType)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
LZDecompressVram(sBattleTerrainTable[battleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(sBattleTerrainTable[battleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(sBattleTerrainTable[battleTerrain].palette, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GYM:
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_MAGMA:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_AQUA:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_SIDNEY:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_PHOEBE:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GLACIA:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_DRAKE:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_FRONTIER:
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_LEADER:
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_WALLACE:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GROUDON:
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
case MAP_BATTLE_SCENE_KYOGRE:
LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_RAYQUAZA:
LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
break;
}
}
// ******************************* // *******************************
// Main functions // Main functions
static void UpdateMonAnimNames(u8 taskId) static void UpdateMonAnimNames(u8 taskId)
@ -657,8 +791,6 @@ static void ResetPokemonDebugWindows(void)
for (i = 0; i < WIN_END + 1; i++) for (i = 0; i < WIN_END + 1; i++)
{ {
if (i == WIN_BACK_SPRITE_LINE)
continue;
FillWindowPixelBuffer(i, PIXEL_FILL(0)); FillWindowPixelBuffer(i, PIXEL_FILL(0));
PutWindowTilemap(i); PutWindowTilemap(i);
CopyWindowToVram(i, 3); CopyWindowToVram(i, 3);
@ -692,10 +824,17 @@ void CB2_Debug_Pokemon(void)
FreeAllSpritePalettes(); FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8; gReservedSpritePaletteCount = 8;
ResetAllPicSprites(); ResetAllPicSprites();
//BlendPalettes(PALETTES_ALL, 16, RGB_BLACK);
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 15);
gMain.state++; gMain.state++;
break; break;
case 2: case 2:
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 15); InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
data->battleTerrain = 0;
data->battleBgType = 0;
LoadBattleBg(data->battleBgType, data->battleTerrain);
ResetPokemonDebugWindows(); ResetPokemonDebugWindows();
gMain.state++; gMain.state++;
break; break;
@ -708,6 +847,8 @@ void CB2_Debug_Pokemon(void)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
ShowBg(0); ShowBg(0);
ShowBg(1); ShowBg(1);
ShowBg(2);
ShowBg(3);
//input task handler //input task handler
taskId = CreateTask(Handle_Input_Debug_Pokemon, 0); taskId = CreateTask(Handle_Input_Debug_Pokemon, 0);
@ -754,11 +895,6 @@ void CB2_Debug_Pokemon(void)
SetUpModifyArrows(data); SetUpModifyArrows(data);
PrintDigitChars(data); PrintDigitChars(data);
//MessageBox line
PutWindowTilemap(WIN_BACK_SPRITE_LINE);
FillWindowPixelRect(WIN_BACK_SPRITE_LINE, PIXEL_FILL(0x2), 0, 0, 90, 4);
CopyWindowToVram(WIN_BACK_SPRITE_LINE, 3);
//Anim names //Anim names
data->animIdBack = GetSpeciesBackAnimSet(species) + 1; data->animIdBack = GetSpeciesBackAnimSet(species) + 1;
data->animIdFront = sMonFrontAnimIdsTable[data->currentmonId - 1]; data->animIdFront = sMonFrontAnimIdsTable[data->currentmonId - 1];
@ -991,6 +1127,9 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data)
AllocateMonSpritesGfx(); AllocateMonSpritesGfx();
LoadMonIconPalette(species); LoadMonIconPalette(species);
//Battle background
LoadBattleBg(data->battleBgType, data->battleTerrain);
//Update instructions //Update instructions
PrintInstructionsOnWindow(WIN_INSTRUCTIONS, data); PrintInstructionsOnWindow(WIN_INSTRUCTIONS, data);