Name battle terrains; address review comments

This commit is contained in:
PikalaxALT
2020-02-23 21:06:59 -05:00
parent 890d85ff02
commit 9e1b0319b2
5 changed files with 833 additions and 812 deletions
+10
View File
@@ -298,6 +298,16 @@
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
#define BATTLE_TERRAIN_LINK 10
#define BATTLE_TERRAIN_GYM 11
#define BATTLE_TERRAIN_LEADER 12
#define BATTLE_TERRAIN_INDOOR_2 13
#define BATTLE_TERRAIN_INDOOR_1 14
#define BATTLE_TERRAIN_LORELEI 15
#define BATTLE_TERRAIN_BRUNO 16
#define BATTLE_TERRAIN_AGATHA 17
#define BATTLE_TERRAIN_LANCE 18
#define BATTLE_TERRAIN_CHAMPION 19
// Return value for IsRunningFromBattleImpossible.
#define BATTLE_RUN_SUCCESS 0
+1 -1
View File
@@ -4877,7 +4877,7 @@ extern const u32 gUnionRoomChatIcons[];
//battle_bg
extern const u32 gFile_graphics_battle_transitions_vs_frame_sheet[];
extern const u32 gFile_graphics_battle_transitions_vs_sheet[];
extern const u32 gVsLettersGfx[];
extern const u32 gFile_graphics_battle_transitions_vs_frame_palette[];
extern const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[];
+79 -68
View File
@@ -16,8 +16,17 @@
#define TAG_VS_LETTERS 10000
static void sub_800F228(void);
static u8 sub_800FC2C(void);
struct BattleBackground
{
const void *tileset;
const void *tilemap;
const void *entryTileset;
const void *entryTilemap;
const void *palette;
};
static void CB2_unused(void);
static u8 GetBattleTerrainOverride(void);
static const u8 gUnknown_824829C[] = {1, 2};
@@ -89,7 +98,7 @@ static const struct SpriteTemplate sVsLetter_S_SpriteTemplate = {
};
static const struct CompressedSpriteSheet sVsLettersSpriteSheet = {
gFile_graphics_battle_transitions_vs_sheet,
gVsLettersGfx,
0x1000,
TAG_VS_LETTERS
};
@@ -393,7 +402,7 @@ static const u32 gUnknown_824E81C[] = INCBIN_U32("graphics/battle/unk_824E81C.gb
static const u32 gUnknown_824E858[] = INCBIN_U32("graphics/battle/unk_824E858.4bpp.lz");
static const u32 gUnknown_824EB90[] = INCBIN_U32("graphics/battle/unk_824EB90.bin.lz");
static const u32 *const gUnknown_824EE34[][5] = {
static const struct BattleBackground gUnknown_824EE34[] = {
{gUnknown_824844C, gUnknown_82489A8, gUnknown_8248C68, gUnknown_8248F58, gUnknown_8248400},
{gUnknown_82490C4, gUnknown_8249620, gUnknown_82498DC, gUnknown_8249E10, gUnknown_8249074},
{gUnknown_8249FE4, gUnknown_824A37C, gUnknown_824A618, gUnknown_824A844, gUnknown_8249F98},
@@ -417,70 +426,72 @@ static const u32 *const gUnknown_824EE34[][5] = {
};
static const struct {
u8 unk0;
u8 unk1;
} gUnknown_824EFC4[] = {
{1, 11},
{2, 14},
{3, 13},
{4, 15},
{5, 16},
{6, 17},
{7, 18},
{8, 10}
u8 mapScene;
u8 battleTerrain;
} sMapBattleSceneMapping[] = {
{MAP_BATTLE_SCENE_GYM, BATTLE_TERRAIN_GYM},
{MAP_BATTLE_SCENE_INDOOR_1, BATTLE_TERRAIN_INDOOR_1},
{MAP_BATTLE_SCENE_INDOOR_2, BATTLE_TERRAIN_INDOOR_2},
{MAP_BATTLE_SCENE_LORELEI, BATTLE_TERRAIN_LORELEI},
{MAP_BATTLE_SCENE_BRUNO, BATTLE_TERRAIN_BRUNO},
{MAP_BATTLE_SCENE_AGATHA, BATTLE_TERRAIN_AGATHA},
{MAP_BATTLE_SCENE_LANCE, BATTLE_TERRAIN_LANCE},
{MAP_BATTLE_SCENE_LINK, BATTLE_TERRAIN_LINK}
};
UNUSED void sub_800F1E8(void)
UNUSED void CreateUnknownDebugSprite(void)
{
u8 spriteId;
ResetSpriteData();
spriteId = CreateSprite(&gUnknown_824EFF0, 0, 0, 0);
gSprites[spriteId].invisible = TRUE;
SetMainCallback2(sub_800F228);
SetMainCallback2(CB2_unused);
}
static void sub_800F228(void)
static void CB2_unused(void)
{
AnimateSprites();
BuildOamBuffer();
}
static u8 sub_800F238(u8 a0)
static u8 GetBattleTerrainByMapScene(u8 mapBattleScene)
{
int i;
for (i = 0; i < NELEMS(gUnknown_824EFC4); i++)
for (i = 0; i < NELEMS(sMapBattleSceneMapping); i++)
{
if (a0 == gUnknown_824EFC4[i].unk0)
return gUnknown_824EFC4[i].unk1;
if (mapBattleScene == sMapBattleSceneMapping[i].mapScene)
return sMapBattleSceneMapping[i].battleTerrain;
}
return 9;
}
static void sub_800F260(u16 envId)
static void LoadBattleTerrainGfx(u16 terrain)
{
if (envId >= NELEMS(gUnknown_824EE34))
envId = 9;
LZDecompressVram(gUnknown_824EE34[envId][0], (void *)BG_CHAR_ADDR(2));
LZDecompressVram(gUnknown_824EE34[envId][1], (void *)BG_SCREEN_ADDR(26));
LoadCompressedPalette(gUnknown_824EE34[envId][4], 0x20, 0x60);
if (terrain >= NELEMS(gUnknown_824EE34))
terrain = 9;
// Copy to bg3
LZDecompressVram(gUnknown_824EE34[terrain].tileset, (void *)BG_CHAR_ADDR(2));
LZDecompressVram(gUnknown_824EE34[terrain].tilemap, (void *)BG_SCREEN_ADDR(26));
LoadCompressedPalette(gUnknown_824EE34[terrain].palette, 0x20, 0x60);
}
static void sub_800F2AC(u16 envId)
static void LoadBattleTerrainEntryGfx(u16 terrain)
{
if (envId >= NELEMS(gUnknown_824EE34))
envId = 9;
LZDecompressVram(gUnknown_824EE34[envId][2], (void *)BG_CHAR_ADDR(1));
LZDecompressVram(gUnknown_824EE34[envId][3], (void *)BG_SCREEN_ADDR(28));
if (terrain >= NELEMS(gUnknown_824EE34))
terrain = 9;
// Copy to bg1
LZDecompressVram(gUnknown_824EE34[terrain].entryTileset, (void *)BG_CHAR_ADDR(1));
LZDecompressVram(gUnknown_824EE34[terrain].entryTilemap, (void *)BG_SCREEN_ADDR(28));
}
UNUSED void sub_800F2EC(u8 envId, const u32 **tilesPtr, const u32 **mapPtr, const u32 **palPtr)
UNUSED void GetBattleTerrainGfxPtrs(u8 terrain, const u32 **tilesPtr, const u32 **mapPtr, const u32 **palPtr)
{
if (envId > 9)
envId = 9;
*tilesPtr = gUnknown_824EE34[envId][0];
*mapPtr = gUnknown_824EE34[envId][1];
*palPtr = gUnknown_824EE34[envId][4];
if (terrain > 9)
terrain = 9;
*tilesPtr = gUnknown_824EE34[terrain].tileset;
*mapPtr = gUnknown_824EE34[terrain].tilemap;
*palPtr = gUnknown_824EE34[terrain].palette;
}
void sub_800F324(void)
@@ -521,7 +532,7 @@ void LoadBattleMenuWindowGfx(void)
void DrawMainBattleBackground(void)
{
sub_800F260(sub_800FC2C());
LoadBattleTerrainGfx(GetBattleTerrainOverride());
}
void LoadBattleTextboxAndBackground(void)
@@ -794,37 +805,37 @@ void DrawBattleEntryBackground(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
LZDecompressVram(gFile_graphics_battle_transitions_vs_frame_sheet, (void*)(BG_CHAR_ADDR(1)));
LZDecompressVram(gFile_graphics_battle_transitions_vs_sheet, (void*)(VRAM + 0x10000));
LZDecompressVram(gVsLettersGfx, (void*)(VRAM + 0x10000));
LoadCompressedPalette(gFile_graphics_battle_transitions_vs_frame_palette, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT512x256);
CopyToBgTilemapBuffer(1, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
CopyToBgTilemapBuffer(2, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
SetGpuReg(REG_OFFSET_WININ, 0x36);
SetGpuReg(REG_OFFSET_WINOUT, 0x36);
gBattle_BG1_Y = 0xFF5C;
gBattle_BG2_Y = 0xFF5C;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
gBattle_BG1_Y = -164;
gBattle_BG2_Y = -164;
LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet);
}
else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
{
sub_800F2AC(0);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_GRASS);
}
else if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))
{
sub_800F2AC(8);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
{
if (gGameVersion == VERSION_FIRE_RED)
{
sub_800F2AC(7);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_CAVE);
}
else
{
sub_800F2AC(4);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_WATER);
}
}
else
@@ -834,56 +845,56 @@ void DrawBattleEntryBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == CLASS_LEADER_2)
{
sub_800F2AC(8);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
return;
}
else if (trainerClass == CLASS_CHAMPION_2)
{
sub_800F2AC(8);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
return;
}
}
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
{
sub_800F2AC(gBattleTerrain);
LoadBattleTerrainEntryGfx(gBattleTerrain);
}
else
{
sub_800F2AC(8);
LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
}
}
}
static u8 sub_800FC2C(void)
static u8 GetBattleTerrainOverride(void)
{
u8 battleScene;
if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))
{
return 10;
return BATTLE_TERRAIN_LINK;
}
else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
{
gBattleTerrain = 0;
return 0;
gBattleTerrain = BATTLE_TERRAIN_GRASS;
return BATTLE_TERRAIN_GRASS;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER_2)
{
return 12;
return BATTLE_TERRAIN_LEADER;
}
else if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2)
{
return 19;
return BATTLE_TERRAIN_CHAMPION;
}
}
battleScene = GetCurrentMapBattleScene();
if (battleScene == 0)
if (battleScene == MAP_BATTLE_SCENE_NORMAL)
{
return gBattleTerrain;
}
return sub_800F238(battleScene);
return GetBattleTerrainByMapScene(battleScene);
}
bool8 LoadChosenBattleElement(u8 caseId)
@@ -903,16 +914,16 @@ bool8 LoadChosenBattleElement(u8 caseId)
LoadCompressedPalette(gBattleTextboxPalette, 0x00, 0x40);
break;
case 3:
battleScene = sub_800FC2C();
LZDecompressVram(gUnknown_824EE34[battleScene][0], (void *)BG_CHAR_ADDR(2));
battleScene = GetBattleTerrainOverride();
LZDecompressVram(gUnknown_824EE34[battleScene].tileset, (void *)BG_CHAR_ADDR(2));
// fallthrough
case 4:
battleScene = sub_800FC2C();
LZDecompressVram(gUnknown_824EE34[battleScene][1], (void *)BG_SCREEN_ADDR(26));
battleScene = GetBattleTerrainOverride();
LZDecompressVram(gUnknown_824EE34[battleScene].tilemap, (void *)BG_SCREEN_ADDR(26));
break;
case 5:
battleScene = sub_800FC2C();
LoadCompressedPalette(gUnknown_824EE34[battleScene][4], 0x20, 0x60);
battleScene = GetBattleTerrainOverride();
LoadCompressedPalette(gUnknown_824EE34[battleScene].palette, 0x20, 0x60);
break;
case 6:
LoadBattleMenuWindowGfx();
+742 -742
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -962,7 +962,7 @@ const u32 gFile_graphics_battle_transitions_vs_frame_sheet[] = INCBIN_U32("graph
const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[] = INCBIN_U32("graphics/battle_transitions/vs_frame.bin.lz");
const u32 gFile_graphics_battle_transitions_vs_frame_palette[] = INCBIN_U32("graphics/battle_transitions/vs_frame.gbapal.lz");
const u32 gFile_graphics_battle_transitions_vs_sheet[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz");
const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz");
#include "data/graphics/battle_terrain.h"