mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-01 00:40:01 +01:00
added battle bg's and platforms and a function LoadBattleBg to change them
This commit is contained in:
parent
ef01c401f7
commit
44121b041c
@ -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] =
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user