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_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9 #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. // Return value for IsRunningFromBattleImpossible.
#define BATTLE_RUN_SUCCESS 0 #define BATTLE_RUN_SUCCESS 0
+1 -1
View File
@@ -4877,7 +4877,7 @@ extern const u32 gUnionRoomChatIcons[];
//battle_bg //battle_bg
extern const u32 gFile_graphics_battle_transitions_vs_frame_sheet[]; 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_palette[];
extern const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[]; extern const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[];
+79 -68
View File
@@ -16,8 +16,17 @@
#define TAG_VS_LETTERS 10000 #define TAG_VS_LETTERS 10000
static void sub_800F228(void); struct BattleBackground
static u8 sub_800FC2C(void); {
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}; static const u8 gUnknown_824829C[] = {1, 2};
@@ -89,7 +98,7 @@ static const struct SpriteTemplate sVsLetter_S_SpriteTemplate = {
}; };
static const struct CompressedSpriteSheet sVsLettersSpriteSheet = { static const struct CompressedSpriteSheet sVsLettersSpriteSheet = {
gFile_graphics_battle_transitions_vs_sheet, gVsLettersGfx,
0x1000, 0x1000,
TAG_VS_LETTERS 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_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 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_824844C, gUnknown_82489A8, gUnknown_8248C68, gUnknown_8248F58, gUnknown_8248400},
{gUnknown_82490C4, gUnknown_8249620, gUnknown_82498DC, gUnknown_8249E10, gUnknown_8249074}, {gUnknown_82490C4, gUnknown_8249620, gUnknown_82498DC, gUnknown_8249E10, gUnknown_8249074},
{gUnknown_8249FE4, gUnknown_824A37C, gUnknown_824A618, gUnknown_824A844, gUnknown_8249F98}, {gUnknown_8249FE4, gUnknown_824A37C, gUnknown_824A618, gUnknown_824A844, gUnknown_8249F98},
@@ -417,70 +426,72 @@ static const u32 *const gUnknown_824EE34[][5] = {
}; };
static const struct { static const struct {
u8 unk0; u8 mapScene;
u8 unk1; u8 battleTerrain;
} gUnknown_824EFC4[] = { } sMapBattleSceneMapping[] = {
{1, 11}, {MAP_BATTLE_SCENE_GYM, BATTLE_TERRAIN_GYM},
{2, 14}, {MAP_BATTLE_SCENE_INDOOR_1, BATTLE_TERRAIN_INDOOR_1},
{3, 13}, {MAP_BATTLE_SCENE_INDOOR_2, BATTLE_TERRAIN_INDOOR_2},
{4, 15}, {MAP_BATTLE_SCENE_LORELEI, BATTLE_TERRAIN_LORELEI},
{5, 16}, {MAP_BATTLE_SCENE_BRUNO, BATTLE_TERRAIN_BRUNO},
{6, 17}, {MAP_BATTLE_SCENE_AGATHA, BATTLE_TERRAIN_AGATHA},
{7, 18}, {MAP_BATTLE_SCENE_LANCE, BATTLE_TERRAIN_LANCE},
{8, 10} {MAP_BATTLE_SCENE_LINK, BATTLE_TERRAIN_LINK}
}; };
UNUSED void sub_800F1E8(void) UNUSED void CreateUnknownDebugSprite(void)
{ {
u8 spriteId; u8 spriteId;
ResetSpriteData(); ResetSpriteData();
spriteId = CreateSprite(&gUnknown_824EFF0, 0, 0, 0); spriteId = CreateSprite(&gUnknown_824EFF0, 0, 0, 0);
gSprites[spriteId].invisible = TRUE; gSprites[spriteId].invisible = TRUE;
SetMainCallback2(sub_800F228); SetMainCallback2(CB2_unused);
} }
static void sub_800F228(void) static void CB2_unused(void)
{ {
AnimateSprites(); AnimateSprites();
BuildOamBuffer(); BuildOamBuffer();
} }
static u8 sub_800F238(u8 a0) static u8 GetBattleTerrainByMapScene(u8 mapBattleScene)
{ {
int i; int i;
for (i = 0; i < NELEMS(gUnknown_824EFC4); i++) for (i = 0; i < NELEMS(sMapBattleSceneMapping); i++)
{ {
if (a0 == gUnknown_824EFC4[i].unk0) if (mapBattleScene == sMapBattleSceneMapping[i].mapScene)
return gUnknown_824EFC4[i].unk1; return sMapBattleSceneMapping[i].battleTerrain;
} }
return 9; return 9;
} }
static void sub_800F260(u16 envId) static void LoadBattleTerrainGfx(u16 terrain)
{ {
if (envId >= NELEMS(gUnknown_824EE34)) if (terrain >= NELEMS(gUnknown_824EE34))
envId = 9; terrain = 9;
LZDecompressVram(gUnknown_824EE34[envId][0], (void *)BG_CHAR_ADDR(2)); // Copy to bg3
LZDecompressVram(gUnknown_824EE34[envId][1], (void *)BG_SCREEN_ADDR(26)); LZDecompressVram(gUnknown_824EE34[terrain].tileset, (void *)BG_CHAR_ADDR(2));
LoadCompressedPalette(gUnknown_824EE34[envId][4], 0x20, 0x60); 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)) if (terrain >= NELEMS(gUnknown_824EE34))
envId = 9; terrain = 9;
LZDecompressVram(gUnknown_824EE34[envId][2], (void *)BG_CHAR_ADDR(1)); // Copy to bg1
LZDecompressVram(gUnknown_824EE34[envId][3], (void *)BG_SCREEN_ADDR(28)); 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) if (terrain > 9)
envId = 9; terrain = 9;
*tilesPtr = gUnknown_824EE34[envId][0]; *tilesPtr = gUnknown_824EE34[terrain].tileset;
*mapPtr = gUnknown_824EE34[envId][1]; *mapPtr = gUnknown_824EE34[terrain].tilemap;
*palPtr = gUnknown_824EE34[envId][4]; *palPtr = gUnknown_824EE34[terrain].palette;
} }
void sub_800F324(void) void sub_800F324(void)
@@ -521,7 +532,7 @@ void LoadBattleMenuWindowGfx(void)
void DrawMainBattleBackground(void) void DrawMainBattleBackground(void)
{ {
sub_800F260(sub_800FC2C()); LoadBattleTerrainGfx(GetBattleTerrainOverride());
} }
void LoadBattleTextboxAndBackground(void) void LoadBattleTextboxAndBackground(void)
@@ -794,37 +805,37 @@ void DrawBattleEntryBackground(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK) if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{ {
LZDecompressVram(gFile_graphics_battle_transitions_vs_frame_sheet, (void*)(BG_CHAR_ADDR(1))); 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); LoadCompressedPalette(gFile_graphics_battle_transitions_vs_frame_palette, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1); 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(1, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
CopyToBgTilemapBuffer(2, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0); CopyToBgTilemapBuffer(2, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(2);
SetGpuReg(REG_OFFSET_WININ, 0x36); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, 0x36); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
gBattle_BG1_Y = 0xFF5C; gBattle_BG1_Y = -164;
gBattle_BG2_Y = 0xFF5C; gBattle_BG2_Y = -164;
LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet); LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet);
} }
else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) 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)) 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) else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
{ {
if (gGameVersion == VERSION_FIRE_RED) if (gGameVersion == VERSION_FIRE_RED)
{ {
sub_800F2AC(7); LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_CAVE);
} }
else else
{ {
sub_800F2AC(4); LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_WATER);
} }
} }
else else
@@ -834,56 +845,56 @@ void DrawBattleEntryBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == CLASS_LEADER_2) if (trainerClass == CLASS_LEADER_2)
{ {
sub_800F2AC(8); LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
return; return;
} }
else if (trainerClass == CLASS_CHAMPION_2) else if (trainerClass == CLASS_CHAMPION_2)
{ {
sub_800F2AC(8); LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
return; return;
} }
} }
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL) if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
{ {
sub_800F2AC(gBattleTerrain); LoadBattleTerrainEntryGfx(gBattleTerrain);
} }
else else
{ {
sub_800F2AC(8); LoadBattleTerrainEntryGfx(BATTLE_TERRAIN_BUILDING);
} }
} }
} }
static u8 sub_800FC2C(void) static u8 GetBattleTerrainOverride(void)
{ {
u8 battleScene; u8 battleScene;
if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) 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) else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
{ {
gBattleTerrain = 0; gBattleTerrain = BATTLE_TERRAIN_GRASS;
return 0; return BATTLE_TERRAIN_GRASS;
} }
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{ {
if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER_2) if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER_2)
{ {
return 12; return BATTLE_TERRAIN_LEADER;
} }
else if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2) else if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2)
{ {
return 19; return BATTLE_TERRAIN_CHAMPION;
} }
} }
battleScene = GetCurrentMapBattleScene(); battleScene = GetCurrentMapBattleScene();
if (battleScene == 0) if (battleScene == MAP_BATTLE_SCENE_NORMAL)
{ {
return gBattleTerrain; return gBattleTerrain;
} }
return sub_800F238(battleScene); return GetBattleTerrainByMapScene(battleScene);
} }
bool8 LoadChosenBattleElement(u8 caseId) bool8 LoadChosenBattleElement(u8 caseId)
@@ -903,16 +914,16 @@ bool8 LoadChosenBattleElement(u8 caseId)
LoadCompressedPalette(gBattleTextboxPalette, 0x00, 0x40); LoadCompressedPalette(gBattleTextboxPalette, 0x00, 0x40);
break; break;
case 3: case 3:
battleScene = sub_800FC2C(); battleScene = GetBattleTerrainOverride();
LZDecompressVram(gUnknown_824EE34[battleScene][0], (void *)BG_CHAR_ADDR(2)); LZDecompressVram(gUnknown_824EE34[battleScene].tileset, (void *)BG_CHAR_ADDR(2));
// fallthrough // fallthrough
case 4: case 4:
battleScene = sub_800FC2C(); battleScene = GetBattleTerrainOverride();
LZDecompressVram(gUnknown_824EE34[battleScene][1], (void *)BG_SCREEN_ADDR(26)); LZDecompressVram(gUnknown_824EE34[battleScene].tilemap, (void *)BG_SCREEN_ADDR(26));
break; break;
case 5: case 5:
battleScene = sub_800FC2C(); battleScene = GetBattleTerrainOverride();
LoadCompressedPalette(gUnknown_824EE34[battleScene][4], 0x20, 0x60); LoadCompressedPalette(gUnknown_824EE34[battleScene].palette, 0x20, 0x60);
break; break;
case 6: case 6:
LoadBattleMenuWindowGfx(); 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_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_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" #include "data/graphics/battle_terrain.h"