2017-12-17 20:10:57 +01:00
|
|
|
#include "global.h"
|
|
|
|
#include "battle.h"
|
|
|
|
#include "sprite.h"
|
2017-12-21 19:26:00 +01:00
|
|
|
#include "constants/trainers.h"
|
2017-12-17 20:10:57 +01:00
|
|
|
#include "graphics.h"
|
|
|
|
#include "decompress.h"
|
|
|
|
#include "bg.h"
|
|
|
|
#include "palette.h"
|
|
|
|
#include "main.h"
|
|
|
|
#include "gpu_regs.h"
|
|
|
|
#include "link.h"
|
|
|
|
#include "battle_message.h"
|
|
|
|
#include "task.h"
|
|
|
|
#include "trig.h"
|
|
|
|
#include "sound.h"
|
2017-12-22 08:46:19 +01:00
|
|
|
#include "constants/songs.h"
|
2017-12-17 20:10:57 +01:00
|
|
|
#include "window.h"
|
|
|
|
#include "text_window.h"
|
2018-02-07 07:07:42 +01:00
|
|
|
#include "menu.h"
|
2018-02-08 00:00:25 +01:00
|
|
|
#include "battle_setup.h"
|
2018-07-13 05:39:38 +02:00
|
|
|
#include "constants/map_types.h"
|
2017-12-17 20:10:57 +01:00
|
|
|
|
|
|
|
struct BattleBackground
|
|
|
|
{
|
|
|
|
const void *tileset;
|
|
|
|
const void *tilemap;
|
|
|
|
const void *entryTileset;
|
|
|
|
const void *entryTilemap;
|
|
|
|
const void *palette;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern const struct SpriteTemplate gUnknown_0831A9D0;
|
|
|
|
extern const struct SpriteTemplate gUnknown_0831A9E8;
|
|
|
|
extern const struct CompressedSpriteSheet gUnknown_0831AA00;
|
2018-06-17 16:48:58 +02:00
|
|
|
extern const struct BgTemplate gBattleBgTemplates[4];
|
|
|
|
extern const struct WindowTemplate *const gBattleWindowTemplates[];
|
2017-12-17 20:10:57 +01:00
|
|
|
extern const struct BattleBackground gBattleTerrainTable[];
|
|
|
|
|
|
|
|
extern u16 gBattle_BG1_X;
|
|
|
|
extern u16 gBattle_BG1_Y;
|
|
|
|
extern u16 gBattle_BG2_X;
|
|
|
|
extern u16 gBattle_BG2_Y;
|
|
|
|
|
|
|
|
extern u8 GetCurrentMapBattleScene(void);
|
|
|
|
|
2018-06-17 16:48:58 +02:00
|
|
|
void BattleInitBgsAndWindows(void)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
ResetBgsAndClearDma3BusyFlags(0);
|
2018-06-17 16:48:58 +02:00
|
|
|
InitBgsFromTemplates(0, gBattleBgTemplates, ARRAY_COUNT(gBattleBgTemplates));
|
2017-12-17 20:10:57 +01:00
|
|
|
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
gBattleScripting.windowsType = 1;
|
2017-12-17 20:10:57 +01:00
|
|
|
SetBgTilemapBuffer(1, gUnknown_02023060);
|
|
|
|
SetBgTilemapBuffer(2, gUnknown_02023060);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
gBattleScripting.windowsType = 0;
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
|
2018-06-17 16:48:58 +02:00
|
|
|
InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]);
|
2017-12-17 20:10:57 +01:00
|
|
|
DeactivateAllTextPrinters();
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_80356D0(void)
|
|
|
|
{
|
|
|
|
DisableInterrupts(INTR_FLAG_HBLANK);
|
|
|
|
EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
2018-06-17 16:48:58 +02:00
|
|
|
BattleInitBgsAndWindows();
|
2017-12-17 20:10:57 +01:00
|
|
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
|
|
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
|
|
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
|
|
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON | DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
|
|
|
}
|
|
|
|
|
2018-06-17 16:48:58 +02:00
|
|
|
void LoadBattleMenuWindowGfx(void)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-07-15 13:23:38 +02:00
|
|
|
LoadUserWindowBorderGfx(2, 0x12, 0x10);
|
|
|
|
LoadUserWindowBorderGfx(2, 0x22, 0x10);
|
2017-12-17 20:10:57 +01:00
|
|
|
LoadCompressedPalette(gUnknown_08D85600, 0x50, 0x20);
|
|
|
|
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
|
|
|
{
|
|
|
|
sub_81978B0(0x70);
|
2018-06-17 16:48:58 +02:00
|
|
|
LoadMessageBoxGfx(0, 0x30, 0x70);
|
2017-12-17 20:10:57 +01:00
|
|
|
gPlttBufferUnfaded[0x76] = 0;
|
|
|
|
CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void DrawMainBattleBackground(void)
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000))
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
|
|
|
{
|
|
|
|
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
|
2017-12-19 17:41:05 +01:00
|
|
|
if (trainerClass == TRAINER_CLASS_LEADER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
|
|
|
|
return;
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (GetCurrentMapBattleScene())
|
|
|
|
{
|
|
|
|
default:
|
|
|
|
case MAP_BATTLE_SCENE_NORMAL:
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GYM:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_MAGMA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_AQUA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_SIDNEY:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_PHOEBE:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GLACIA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_DRAKE:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_FRONTIER:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void LoadBattleTextboxAndBackground(void)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTextboxTiles, (void*)(VRAM));
|
|
|
|
CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0);
|
|
|
|
CopyBgTilemapBufferToVram(0);
|
|
|
|
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
|
2018-06-17 16:48:58 +02:00
|
|
|
LoadBattleMenuWindowGfx();
|
2017-12-17 20:10:57 +01:00
|
|
|
|
|
|
|
DrawMainBattleBackground();
|
|
|
|
}
|
|
|
|
|
2018-06-17 16:48:58 +02:00
|
|
|
static void sub_8035AE4(u8 taskId, u8 battlerId, u8 bgId, u8 destX, u8 destY)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
s32 i;
|
|
|
|
u16 var = 0;
|
|
|
|
u16 src[6];
|
|
|
|
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
|
|
|
{
|
|
|
|
if (gTasks[taskId].data[5] != 0)
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
switch (battlerId)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
var = 0x3F & gTasks[taskId].data[3];
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
var = (0xFC0 & gTasks[taskId].data[4]) >> 6;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var = (0xFC0 & gTasks[taskId].data[3]) >> 6;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
var = 0x3F & gTasks[taskId].data[4];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
switch (battlerId)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
var = 0x3F & gTasks[taskId].data[3];
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
var = 0x3F & gTasks[taskId].data[4];
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
var = (0xFC0 & gTasks[taskId].data[3]) >> 6;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
var = (0xFC0 & gTasks[taskId].data[4]) >> 6;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++)
|
|
|
|
{
|
|
|
|
src[i] = ((var & (3 << (i * 2))) >> (i * 2)) + 0x6001;
|
|
|
|
}
|
|
|
|
|
|
|
|
CopyToBgTilemapBufferRect_ChangePalette(bgId, src, destX, destY, 3, 1, 0x11);
|
|
|
|
CopyBgTilemapBufferToVram(bgId);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
if (battlerId == gBattleScripting.multiplayerId)
|
2017-12-17 20:10:57 +01:00
|
|
|
var = gTasks[taskId].data[3];
|
|
|
|
else
|
|
|
|
var = gTasks[taskId].data[4];
|
|
|
|
|
|
|
|
for (i = 0; i < 6; i++)
|
|
|
|
{
|
|
|
|
src[i] = ((var & (3 << (i * 2))) >> (i * 2)) + 0x6001;
|
|
|
|
}
|
|
|
|
|
|
|
|
CopyToBgTilemapBufferRect_ChangePalette(bgId, src, destX, destY, 6, 1, 0x11);
|
|
|
|
CopyBgTilemapBufferToVram(bgId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void sub_8035C4C(void)
|
|
|
|
{
|
2018-01-16 22:12:38 +01:00
|
|
|
if (gBattleOutcome == B_OUTCOME_DREW)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Draw, 0x15);
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
|
|
|
{
|
2018-01-16 22:12:38 +01:00
|
|
|
if (gBattleOutcome == B_OUTCOME_WON)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-07-22 12:49:49 +02:00
|
|
|
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
case 0:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 1:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 2:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 3:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-07-22 12:49:49 +02:00
|
|
|
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
case 0:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 1:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 2:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 3:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-01-16 22:12:38 +01:00
|
|
|
else if (gBattleOutcome == B_OUTCOME_WON)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-07-22 12:49:49 +02:00
|
|
|
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-07-22 12:49:49 +02:00
|
|
|
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x16);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x17);
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(gText_Win, 0x17);
|
|
|
|
BattlePutTextOnWindow(gText_Loss, 0x16);
|
2017-12-17 20:10:57 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_8035D74(u8 taskId)
|
|
|
|
{
|
|
|
|
struct LinkPlayer *linkPlayer;
|
|
|
|
u8 *name;
|
|
|
|
s32 i, palId;
|
|
|
|
|
|
|
|
switch (gTasks[taskId].data[0])
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
|
|
|
{
|
2018-02-06 02:46:59 +01:00
|
|
|
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
name = gLinkPlayers[i].name;
|
|
|
|
linkPlayer = &gLinkPlayers[i];
|
|
|
|
|
2018-07-22 12:49:49 +02:00
|
|
|
switch (linkPlayer->id)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
case 0:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0x11);
|
2018-07-22 12:49:49 +02:00
|
|
|
sub_8035AE4(taskId, linkPlayer->id, 1, 2, 4);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 1:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0x12);
|
2018-07-22 12:49:49 +02:00
|
|
|
sub_8035AE4(taskId, linkPlayer->id, 2, 2, 4);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 2:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0x13);
|
2018-07-22 12:49:49 +02:00
|
|
|
sub_8035AE4(taskId, linkPlayer->id, 1, 2, 8);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
case 3:
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0x14);
|
2018-07-22 12:49:49 +02:00
|
|
|
sub_8035AE4(taskId, linkPlayer->id, 2, 2, 8);
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
u8 playerId = gBattleScripting.multiplayerId;
|
|
|
|
u8 opponentId = playerId ^ BIT_SIDE;
|
|
|
|
u8 opponentId_copy = opponentId;
|
|
|
|
|
2018-07-22 12:49:49 +02:00
|
|
|
if (gLinkPlayers[playerId].id != 0)
|
2017-12-17 20:10:57 +01:00
|
|
|
opponentId = playerId, playerId = opponentId_copy;
|
|
|
|
|
|
|
|
name = gLinkPlayers[playerId].name;
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0xF);
|
2017-12-17 20:10:57 +01:00
|
|
|
|
|
|
|
name = gLinkPlayers[opponentId].name;
|
2018-06-17 16:48:58 +02:00
|
|
|
BattlePutTextOnWindow(name, 0x10);
|
2017-12-17 20:10:57 +01:00
|
|
|
|
|
|
|
sub_8035AE4(taskId, playerId, 1, 2, 7);
|
|
|
|
sub_8035AE4(taskId, opponentId, 2, 2, 7);
|
|
|
|
}
|
|
|
|
gTasks[taskId].data[0]++;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
palId = AllocSpritePalette(0x2710);
|
|
|
|
gPlttBufferUnfaded[palId * 16 + 0x10F] = gPlttBufferFaded[palId * 16 + 0x10F] = 0x7FFF;
|
|
|
|
gBattleStruct->field_7D = CreateSprite(&gUnknown_0831A9D0, 111, 80, 0);
|
|
|
|
gBattleStruct->field_7E = CreateSprite(&gUnknown_0831A9E8, 129, 80, 0);
|
|
|
|
gSprites[gBattleStruct->field_7D].invisible = 1;
|
|
|
|
gSprites[gBattleStruct->field_7E].invisible = 1;
|
|
|
|
gTasks[taskId].data[0]++;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
if (gTasks[taskId].data[5] != 0)
|
|
|
|
{
|
|
|
|
gBattle_BG1_X = -(20) - (Sin2(gTasks[taskId].data[1]) / 32);
|
|
|
|
gBattle_BG2_X = -(140) - (Sin2(gTasks[taskId].data[2]) / 32);
|
|
|
|
gBattle_BG1_Y = -36;
|
|
|
|
gBattle_BG2_Y = -36;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
gBattle_BG1_X = -(20) - (Sin2(gTasks[taskId].data[1]) / 32);
|
|
|
|
gBattle_BG1_Y = (Cos2(gTasks[taskId].data[1]) / 32) - 164;
|
|
|
|
gBattle_BG2_X = -(140) - (Sin2(gTasks[taskId].data[2]) / 32);
|
|
|
|
gBattle_BG2_Y = (Cos2(gTasks[taskId].data[2]) / 32) - 164;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (gTasks[taskId].data[2] != 0)
|
|
|
|
{
|
|
|
|
gTasks[taskId].data[2] -= 2;
|
|
|
|
gTasks[taskId].data[1] += 2;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gTasks[taskId].data[5] != 0)
|
|
|
|
sub_8035C4C();
|
|
|
|
|
|
|
|
PlaySE(SE_W231);
|
|
|
|
DestroyTask(taskId);
|
|
|
|
gSprites[gBattleStruct->field_7D].invisible = 0;
|
|
|
|
gSprites[gBattleStruct->field_7E].invisible = 0;
|
|
|
|
gSprites[gBattleStruct->field_7E].oam.tileNum += 0x40;
|
|
|
|
gSprites[gBattleStruct->field_7D].data[0] = 0;
|
|
|
|
gSprites[gBattleStruct->field_7E].data[0] = 1;
|
|
|
|
gSprites[gBattleStruct->field_7D].data[1] = gSprites[gBattleStruct->field_7D].pos1.x;
|
|
|
|
gSprites[gBattleStruct->field_7E].data[1] = gSprites[gBattleStruct->field_7E].pos1.x;
|
|
|
|
gSprites[gBattleStruct->field_7D].data[2] = 0;
|
|
|
|
gSprites[gBattleStruct->field_7E].data[2] = 0;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-17 16:48:58 +02:00
|
|
|
void DrawBattleEntryBackground(void)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gUnknown_08D778F0, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gUnknown_08D77B0C, (void*)(VRAM + 0x10000));
|
|
|
|
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
|
|
|
|
SetBgAttribute(1, BG_CTRL_ATTR_MAPBASEINDEX, 1);
|
|
|
|
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
|
|
|
|
CopyToBgTilemapBuffer(1, gUnknown_08D779D8, 0, 0);
|
|
|
|
CopyToBgTilemapBuffer(2, gUnknown_08D779D8, 0, 0);
|
|
|
|
CopyBgTilemapBufferToVram(1);
|
|
|
|
CopyBgTilemapBufferToVram(2);
|
|
|
|
SetGpuReg(REG_OFFSET_WININ, 0x36);
|
|
|
|
SetGpuReg(REG_OFFSET_WINOUT, 0x36);
|
|
|
|
gBattle_BG1_Y = 0xFF5C;
|
|
|
|
gBattle_BG2_Y = 0xFF5C;
|
|
|
|
LoadCompressedObjectPicUsingHeap(&gUnknown_0831AA00);
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
|
|
|
|
{
|
2018-06-30 18:55:34 +02:00
|
|
|
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 2);
|
|
|
|
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 2);
|
|
|
|
CopyToBgTilemapBuffer(1, gUnknown_08D857A8, 0, 0);
|
|
|
|
CopyToBgTilemapBuffer(2, gUnknown_08D85A1C, 0, 0);
|
|
|
|
CopyBgTilemapBufferToVram(1);
|
|
|
|
CopyBgTilemapBufferToVram(2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
|
|
|
{
|
|
|
|
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
|
2017-12-19 17:41:05 +01:00
|
|
|
if (trainerClass == TRAINER_CLASS_LEADER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
|
|
|
|
return;
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
|
|
|
|
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool8 LoadChosenBattleElement(u8 caseId)
|
|
|
|
{
|
|
|
|
bool8 ret = FALSE;
|
|
|
|
|
|
|
|
switch (caseId)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
LZDecompressVram(gBattleTextboxTiles, (void*)(VRAM));
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0);
|
|
|
|
CopyBgTilemapBufferToVram(0);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
|
|
|
{
|
|
|
|
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
|
2017-12-19 17:41:05 +01:00
|
|
|
if (trainerClass == TRAINER_CLASS_LEADER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (GetCurrentMapBattleScene())
|
|
|
|
{
|
|
|
|
default:
|
|
|
|
case MAP_BATTLE_SCENE_NORMAL:
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GYM:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_MAGMA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_AQUA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_SIDNEY:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_PHOEBE:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GLACIA:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_DRAKE:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_FRONTIER:
|
|
|
|
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
|
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
|
|
|
{
|
|
|
|
if (gGameVersion == VERSION_RUBY)
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
|
|
|
|
else
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
|
|
|
{
|
|
|
|
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
|
2017-12-19 17:41:05 +01:00
|
|
|
if (trainerClass == TRAINER_CLASS_LEADER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (GetCurrentMapBattleScene())
|
|
|
|
{
|
|
|
|
default:
|
|
|
|
case MAP_BATTLE_SCENE_NORMAL:
|
|
|
|
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GYM:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_MAGMA:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_AQUA:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_SIDNEY:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_PHOEBE:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GLACIA:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_DRAKE:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_FRONTIER:
|
|
|
|
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
|
|
|
|
{
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
|
|
|
|
}
|
|
|
|
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
|
|
|
{
|
|
|
|
if (gGameVersion == VERSION_RUBY)
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
|
|
|
|
else
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
|
|
|
{
|
|
|
|
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
|
2017-12-19 17:41:05 +01:00
|
|
|
if (trainerClass == TRAINER_CLASS_LEADER)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
}
|
2017-12-19 17:41:05 +01:00
|
|
|
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
2017-12-17 20:10:57 +01:00
|
|
|
{
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (GetCurrentMapBattleScene())
|
|
|
|
{
|
|
|
|
default:
|
|
|
|
case MAP_BATTLE_SCENE_NORMAL:
|
|
|
|
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GYM:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_MAGMA:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_AQUA:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_SIDNEY:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_PHOEBE:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_GLACIA:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_DRAKE:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
case MAP_BATTLE_SCENE_FRONTIER:
|
|
|
|
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 6:
|
2018-06-17 16:48:58 +02:00
|
|
|
LoadBattleMenuWindowGfx();
|
2017-12-17 20:10:57 +01:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
ret = TRUE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|