summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/battle_1.c470
-rw-r--r--src/battle/battle_2.c38
-rw-r--r--src/battle/battle_7.c51
-rw-r--r--src/battle/battle_bg.c863
-rw-r--r--src/battle/battle_interface.c454
-rw-r--r--src/battle/battle_setup.c20
-rw-r--r--src/battle/reshow_battle_screen.c4
7 files changed, 1812 insertions, 88 deletions
diff --git a/src/battle/battle_1.c b/src/battle/battle_1.c
new file mode 100644
index 000000000..9ab9e08c5
--- /dev/null
+++ b/src/battle/battle_1.c
@@ -0,0 +1,470 @@
+#include "global.h"
+#include "data2.h"
+#include "battle_setup.h"
+#include "battle.h"
+#include "trainer.h"
+#include "graphics.h"
+#include "gba/types.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/items.h"
+#include "constants/opponents.h"
+
+const struct MonCoords gTrainerBackPicCoords[] = {
+ {8, 4},
+ {8, 4},
+ {8, 4},
+};
+
+extern const u8 gTrainerBackPic_Brendan[];
+extern const u8 gTrainerBackPic_May[];
+extern const u8 gTrainerBackPic_Wally[];
+
+const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
+ {gTrainerBackPic_Brendan, 0x2000, 0},
+ {gTrainerBackPic_May, 0x2000, 1},
+ {gTrainerBackPic_Wally, 0x2000, 2}
+};
+
+extern const u8 gTrainerPalette_Brendan[];
+extern const u8 gTrainerPalette_May[];
+extern const u8 gTrainerPalette_Wally[];
+
+const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = {
+ {gTrainerPalette_Brendan, 0},
+ {gTrainerPalette_May, 1},
+ {gTrainerPalette_Wally, 2}
+};
+
+// This determines how much higher above the usual position the enemy Pokémon
+// is during battle. Species that float or fly have nonzero values.
+const u8 gEnemyMonElevation[] = {
+ [0] = 0,
+ [SPECIES_BULBASAUR] = 0,
+ [SPECIES_IVYSAUR] = 0,
+ [SPECIES_VENUSAUR] = 0,
+ [SPECIES_CHARMANDER] = 0,
+ [SPECIES_CHARMELEON] = 0,
+ [SPECIES_CHARIZARD] = 0,
+ [SPECIES_SQUIRTLE] = 0,
+ [SPECIES_WARTORTLE] = 0,
+ [SPECIES_BLASTOISE] = 0,
+ [SPECIES_CATERPIE] = 0,
+ [SPECIES_METAPOD] = 0,
+ [SPECIES_BUTTERFREE] = 8,
+ [SPECIES_WEEDLE] = 0,
+ [SPECIES_KAKUNA] = 0,
+ [SPECIES_BEEDRILL] = 8,
+ [SPECIES_PIDGEY] = 16,
+ [SPECIES_PIDGEOTTO] = 0,
+ [SPECIES_PIDGEOT] = 4,
+ [SPECIES_RATTATA] = 0,
+ [SPECIES_RATICATE] = 0,
+ [SPECIES_SPEAROW] = 0,
+ [SPECIES_FEAROW] = 4,
+ [SPECIES_EKANS] = 0,
+ [SPECIES_ARBOK] = 0,
+ [SPECIES_PIKACHU] = 0,
+ [SPECIES_RAICHU] = 0,
+ [SPECIES_SANDSHREW] = 0,
+ [SPECIES_SANDSLASH] = 0,
+ [SPECIES_NIDORAN_F] = 0,
+ [SPECIES_NIDORINA] = 0,
+ [SPECIES_NIDOQUEEN] = 0,
+ [SPECIES_NIDORAN_M] = 0,
+ [SPECIES_NIDORINO] = 0,
+ [SPECIES_NIDOKING] = 0,
+ [SPECIES_CLEFAIRY] = 0,
+ [SPECIES_CLEFABLE] = 0,
+ [SPECIES_VULPIX] = 0,
+ [SPECIES_NINETALES] = 0,
+ [SPECIES_JIGGLYPUFF] = 0,
+ [SPECIES_WIGGLYTUFF] = 0,
+ [SPECIES_ZUBAT] = 8,
+ [SPECIES_GOLBAT] = 8,
+ [SPECIES_ODDISH] = 0,
+ [SPECIES_GLOOM] = 0,
+ [SPECIES_VILEPLUME] = 0,
+ [SPECIES_PARAS] = 0,
+ [SPECIES_PARASECT] = 0,
+ [SPECIES_VENONAT] = 0,
+ [SPECIES_VENOMOTH] = 8,
+ [SPECIES_DIGLETT] = 0,
+ [SPECIES_DUGTRIO] = 0,
+ [SPECIES_MEOWTH] = 0,
+ [SPECIES_PERSIAN] = 0,
+ [SPECIES_PSYDUCK] = 0,
+ [SPECIES_GOLDUCK] = 0,
+ [SPECIES_MANKEY] = 0,
+ [SPECIES_PRIMEAPE] = 0,
+ [SPECIES_GROWLITHE] = 0,
+ [SPECIES_ARCANINE] = 0,
+ [SPECIES_POLIWAG] = 0,
+ [SPECIES_POLIWHIRL] = 0,
+ [SPECIES_POLIWRATH] = 0,
+ [SPECIES_ABRA] = 0,
+ [SPECIES_KADABRA] = 0,
+ [SPECIES_ALAKAZAM] = 0,
+ [SPECIES_MACHOP] = 0,
+ [SPECIES_MACHOKE] = 0,
+ [SPECIES_MACHAMP] = 0,
+ [SPECIES_BELLSPROUT] = 0,
+ [SPECIES_WEEPINBELL] = 0,
+ [SPECIES_VICTREEBEL] = 0,
+ [SPECIES_TENTACOOL] = 0,
+ [SPECIES_TENTACRUEL] = 0,
+ [SPECIES_GEODUDE] = 16,
+ [SPECIES_GRAVELER] = 0,
+ [SPECIES_GOLEM] = 0,
+ [SPECIES_PONYTA] = 0,
+ [SPECIES_RAPIDASH] = 0,
+ [SPECIES_SLOWPOKE] = 0,
+ [SPECIES_SLOWBRO] = 0,
+ [SPECIES_MAGNEMITE] = 16,
+ [SPECIES_MAGNETON] = 8,
+ [SPECIES_FARFETCHD] = 0,
+ [SPECIES_DODUO] = 0,
+ [SPECIES_DODRIO] = 0,
+ [SPECIES_SEEL] = 0,
+ [SPECIES_DEWGONG] = 0,
+ [SPECIES_GRIMER] = 0,
+ [SPECIES_MUK] = 0,
+ [SPECIES_SHELLDER] = 0,
+ [SPECIES_CLOYSTER] = 0,
+ [SPECIES_GASTLY] = 4,
+ [SPECIES_HAUNTER] = 4,
+ [SPECIES_GENGAR] = 0,
+ [SPECIES_ONIX] = 0,
+ [SPECIES_DROWZEE] = 0,
+ [SPECIES_HYPNO] = 0,
+ [SPECIES_KRABBY] = 0,
+ [SPECIES_KINGLER] = 0,
+ [SPECIES_VOLTORB] = 10,
+ [SPECIES_ELECTRODE] = 12,
+ [SPECIES_EXEGGCUTE] = 0,
+ [SPECIES_EXEGGUTOR] = 0,
+ [SPECIES_CUBONE] = 0,
+ [SPECIES_MAROWAK] = 0,
+ [SPECIES_HITMONLEE] = 0,
+ [SPECIES_HITMONCHAN] = 0,
+ [SPECIES_LICKITUNG] = 0,
+ [SPECIES_KOFFING] = 8,
+ [SPECIES_WEEZING] = 6,
+ [SPECIES_RHYHORN] = 0,
+ [SPECIES_RHYDON] = 0,
+ [SPECIES_CHANSEY] = 0,
+ [SPECIES_TANGELA] = 0,
+ [SPECIES_KANGASKHAN] = 0,
+ [SPECIES_HORSEA] = 0,
+ [SPECIES_SEADRA] = 0,
+ [SPECIES_GOLDEEN] = 0,
+ [SPECIES_SEAKING] = 0,
+ [SPECIES_STARYU] = 0,
+ [SPECIES_STARMIE] = 0,
+ [SPECIES_MR_MIME] = 0,
+ [SPECIES_SCYTHER] = 0,
+ [SPECIES_JYNX] = 0,
+ [SPECIES_ELECTABUZZ] = 0,
+ [SPECIES_MAGMAR] = 0,
+ [SPECIES_PINSIR] = 0,
+ [SPECIES_TAUROS] = 0,
+ [SPECIES_MAGIKARP] = 0,
+ [SPECIES_GYARADOS] = 0,
+ [SPECIES_LAPRAS] = 0,
+ [SPECIES_DITTO] = 0,
+ [SPECIES_EEVEE] = 0,
+ [SPECIES_VAPOREON] = 0,
+ [SPECIES_JOLTEON] = 0,
+ [SPECIES_FLAREON] = 0,
+ [SPECIES_PORYGON] = 0,
+ [SPECIES_OMANYTE] = 0,
+ [SPECIES_OMASTAR] = 0,
+ [SPECIES_KABUTO] = 0,
+ [SPECIES_KABUTOPS] = 0,
+ [SPECIES_AERODACTYL] = 6,
+ [SPECIES_SNORLAX] = 0,
+ [SPECIES_ARTICUNO] = 6,
+ [SPECIES_ZAPDOS] = 8,
+ [SPECIES_MOLTRES] = 5,
+ [SPECIES_DRATINI] = 0,
+ [SPECIES_DRAGONAIR] = 0,
+ [SPECIES_DRAGONITE] = 3,
+ [SPECIES_MEWTWO] = 0,
+ [SPECIES_MEW] = 8,
+ [SPECIES_CHIKORITA] = 0,
+ [SPECIES_BAYLEEF] = 0,
+ [SPECIES_MEGANIUM] = 0,
+ [SPECIES_CYNDAQUIL] = 0,
+ [SPECIES_QUILAVA] = 0,
+ [SPECIES_TYPHLOSION] = 0,
+ [SPECIES_TOTODILE] = 0,
+ [SPECIES_CROCONAW] = 0,
+ [SPECIES_FERALIGATR] = 0,
+ [SPECIES_SENTRET] = 0,
+ [SPECIES_FURRET] = 0,
+ [SPECIES_HOOTHOOT] = 0,
+ [SPECIES_NOCTOWL] = 0,
+ [SPECIES_LEDYBA] = 0,
+ [SPECIES_LEDIAN] = 8,
+ [SPECIES_SPINARAK] = 0,
+ [SPECIES_ARIADOS] = 0,
+ [SPECIES_CROBAT] = 6,
+ [SPECIES_CHINCHOU] = 0,
+ [SPECIES_LANTURN] = 0,
+ [SPECIES_PICHU] = 0,
+ [SPECIES_CLEFFA] = 0,
+ [SPECIES_IGGLYBUFF] = 0,
+ [SPECIES_TOGEPI] = 0,
+ [SPECIES_TOGETIC] = 0,
+ [SPECIES_NATU] = 0,
+ [SPECIES_XATU] = 0,
+ [SPECIES_MAREEP] = 0,
+ [SPECIES_FLAAFFY] = 0,
+ [SPECIES_AMPHAROS] = 0,
+ [SPECIES_BELLOSSOM] = 0,
+ [SPECIES_MARILL] = 0,
+ [SPECIES_AZUMARILL] = 0,
+ [SPECIES_SUDOWOODO] = 0,
+ [SPECIES_POLITOED] = 0,
+ [SPECIES_HOPPIP] = 11,
+ [SPECIES_SKIPLOOM] = 12,
+ [SPECIES_JUMPLUFF] = 6,
+ [SPECIES_AIPOM] = 0,
+ [SPECIES_SUNKERN] = 0,
+ [SPECIES_SUNFLORA] = 0,
+ [SPECIES_YANMA] = 8,
+ [SPECIES_WOOPER] = 0,
+ [SPECIES_QUAGSIRE] = 0,
+ [SPECIES_ESPEON] = 0,
+ [SPECIES_UMBREON] = 0,
+ [SPECIES_MURKROW] = 0,
+ [SPECIES_SLOWKING] = 0,
+ [SPECIES_MISDREAVUS] = 8,
+ [SPECIES_UNOWN] = 5,
+ [SPECIES_WOBBUFFET] = 0,
+ [SPECIES_GIRAFARIG] = 0,
+ [SPECIES_PINECO] = 0,
+ [SPECIES_FORRETRESS] = 0,
+ [SPECIES_DUNSPARCE] = 0,
+ [SPECIES_GLIGAR] = 6,
+ [SPECIES_STEELIX] = 0,
+ [SPECIES_SNUBBULL] = 0,
+ [SPECIES_GRANBULL] = 0,
+ [SPECIES_QWILFISH] = 0,
+ [SPECIES_SCIZOR] = 0,
+ [SPECIES_SHUCKLE] = 0,
+ [SPECIES_HERACROSS] = 0,
+ [SPECIES_SNEASEL] = 0,
+ [SPECIES_TEDDIURSA] = 0,
+ [SPECIES_URSARING] = 0,
+ [SPECIES_SLUGMA] = 0,
+ [SPECIES_MAGCARGO] = 0,
+ [SPECIES_SWINUB] = 0,
+ [SPECIES_PILOSWINE] = 0,
+ [SPECIES_CORSOLA] = 0,
+ [SPECIES_REMORAID] = 0,
+ [SPECIES_OCTILLERY] = 0,
+ [SPECIES_DELIBIRD] = 0,
+ [SPECIES_MANTINE] = 0,
+ [SPECIES_SKARMORY] = 0,
+ [SPECIES_HOUNDOUR] = 0,
+ [SPECIES_HOUNDOOM] = 0,
+ [SPECIES_KINGDRA] = 0,
+ [SPECIES_PHANPY] = 0,
+ [SPECIES_DONPHAN] = 0,
+ [SPECIES_PORYGON2] = 0,
+ [SPECIES_STANTLER] = 0,
+ [SPECIES_SMEARGLE] = 0,
+ [SPECIES_TYROGUE] = 0,
+ [SPECIES_HITMONTOP] = 0,
+ [SPECIES_SMOOCHUM] = 0,
+ [SPECIES_ELEKID] = 0,
+ [SPECIES_MAGBY] = 0,
+ [SPECIES_MILTANK] = 0,
+ [SPECIES_BLISSEY] = 0,
+ [SPECIES_RAIKOU] = 0,
+ [SPECIES_ENTEI] = 0,
+ [SPECIES_SUICUNE] = 0,
+ [SPECIES_LARVITAR] = 0,
+ [SPECIES_PUPITAR] = 0,
+ [SPECIES_TYRANITAR] = 0,
+ [SPECIES_LUGIA] = 3,
+ [SPECIES_HO_OH] = 6,
+ [SPECIES_CELEBI] = 15,
+ [SPECIES_OLD_UNOWN_B] = 0,
+ [SPECIES_OLD_UNOWN_C] = 0,
+ [SPECIES_OLD_UNOWN_D] = 0,
+ [SPECIES_OLD_UNOWN_E] = 0,
+ [SPECIES_OLD_UNOWN_F] = 0,
+ [SPECIES_OLD_UNOWN_G] = 0,
+ [SPECIES_OLD_UNOWN_H] = 0,
+ [SPECIES_OLD_UNOWN_I] = 0,
+ [SPECIES_OLD_UNOWN_J] = 0,
+ [SPECIES_OLD_UNOWN_K] = 0,
+ [SPECIES_OLD_UNOWN_L] = 0,
+ [SPECIES_OLD_UNOWN_M] = 0,
+ [SPECIES_OLD_UNOWN_N] = 0,
+ [SPECIES_OLD_UNOWN_O] = 0,
+ [SPECIES_OLD_UNOWN_P] = 0,
+ [SPECIES_OLD_UNOWN_Q] = 0,
+ [SPECIES_OLD_UNOWN_R] = 0,
+ [SPECIES_OLD_UNOWN_S] = 0,
+ [SPECIES_OLD_UNOWN_T] = 0,
+ [SPECIES_OLD_UNOWN_U] = 0,
+ [SPECIES_OLD_UNOWN_V] = 0,
+ [SPECIES_OLD_UNOWN_W] = 0,
+ [SPECIES_OLD_UNOWN_X] = 0,
+ [SPECIES_OLD_UNOWN_Y] = 0,
+ [SPECIES_OLD_UNOWN_Z] = 0,
+ [SPECIES_TREECKO] = 0,
+ [SPECIES_GROVYLE] = 0,
+ [SPECIES_SCEPTILE] = 0,
+ [SPECIES_TORCHIC] = 0,
+ [SPECIES_COMBUSKEN] = 0,
+ [SPECIES_BLAZIKEN] = 0,
+ [SPECIES_MUDKIP] = 0,
+ [SPECIES_MARSHTOMP] = 0,
+ [SPECIES_SWAMPERT] = 0,
+ [SPECIES_POOCHYENA] = 0,
+ [SPECIES_MIGHTYENA] = 0,
+ [SPECIES_ZIGZAGOON] = 0,
+ [SPECIES_LINOONE] = 0,
+ [SPECIES_WURMPLE] = 0,
+ [SPECIES_SILCOON] = 0,
+ [SPECIES_BEAUTIFLY] = 8,
+ [SPECIES_CASCOON] = 0,
+ [SPECIES_DUSTOX] = 10,
+ [SPECIES_LOTAD] = 0,
+ [SPECIES_LOMBRE] = 0,
+ [SPECIES_LUDICOLO] = 0,
+ [SPECIES_SEEDOT] = 0,
+ [SPECIES_NUZLEAF] = 0,
+ [SPECIES_SHIFTRY] = 0,
+ [SPECIES_NINCADA] = 0,
+ [SPECIES_NINJASK] = 10,
+ [SPECIES_SHEDINJA] = 8,
+ [SPECIES_TAILLOW] = 0,
+ [SPECIES_SWELLOW] = 0,
+ [SPECIES_SHROOMISH] = 0,
+ [SPECIES_BRELOOM] = 0,
+ [SPECIES_SPINDA] = 0,
+ [SPECIES_WINGULL] = 16,
+ [SPECIES_PELIPPER] = 8,
+ [SPECIES_SURSKIT] = 0,
+ [SPECIES_MASQUERAIN] = 10,
+ [SPECIES_WAILMER] = 0,
+ [SPECIES_WAILORD] = 0,
+ [SPECIES_SKITTY] = 0,
+ [SPECIES_DELCATTY] = 0,
+ [SPECIES_KECLEON] = 0,
+ [SPECIES_BALTOY] = 4,
+ [SPECIES_CLAYDOL] = 4,
+ [SPECIES_NOSEPASS] = 0,
+ [SPECIES_TORKOAL] = 0,
+ [SPECIES_SABLEYE] = 0,
+ [SPECIES_BARBOACH] = 0,
+ [SPECIES_WHISCASH] = 0,
+ [SPECIES_LUVDISC] = 0,
+ [SPECIES_CORPHISH] = 0,
+ [SPECIES_CRAWDAUNT] = 0,
+ [SPECIES_FEEBAS] = 0,
+ [SPECIES_MILOTIC] = 0,
+ [SPECIES_CARVANHA] = 0,
+ [SPECIES_SHARPEDO] = 0,
+ [SPECIES_TRAPINCH] = 0,
+ [SPECIES_VIBRAVA] = 0,
+ [SPECIES_FLYGON] = 3,
+ [SPECIES_MAKUHITA] = 0,
+ [SPECIES_HARIYAMA] = 0,
+ [SPECIES_ELECTRIKE] = 0,
+ [SPECIES_MANECTRIC] = 0,
+ [SPECIES_NUMEL] = 0,
+ [SPECIES_CAMERUPT] = 0,
+ [SPECIES_SPHEAL] = 0,
+ [SPECIES_SEALEO] = 0,
+ [SPECIES_WALREIN] = 0,
+ [SPECIES_CACNEA] = 0,
+ [SPECIES_CACTURNE] = 0,
+ [SPECIES_SNORUNT] = 0,
+ [SPECIES_GLALIE] = 12,
+ [SPECIES_LUNATONE] = 13,
+ [SPECIES_SOLROCK] = 4,
+ [SPECIES_AZURILL] = 0,
+ [SPECIES_SPOINK] = 0,
+ [SPECIES_GRUMPIG] = 0,
+ [SPECIES_PLUSLE] = 0,
+ [SPECIES_MINUN] = 0,
+ [SPECIES_MAWILE] = 0,
+ [SPECIES_MEDITITE] = 0,
+ [SPECIES_MEDICHAM] = 0,
+ [SPECIES_SWABLU] = 12,
+ [SPECIES_ALTARIA] = 8,
+ [SPECIES_WYNAUT] = 0,
+ [SPECIES_DUSKULL] = 4,
+ [SPECIES_DUSCLOPS] = 0,
+ [SPECIES_ROSELIA] = 0,
+ [SPECIES_SLAKOTH] = 0,
+ [SPECIES_VIGOROTH] = 0,
+ [SPECIES_SLAKING] = 0,
+ [SPECIES_GULPIN] = 0,
+ [SPECIES_SWALOT] = 0,
+ [SPECIES_TROPIUS] = 0,
+ [SPECIES_WHISMUR] = 0,
+ [SPECIES_LOUDRED] = 0,
+ [SPECIES_EXPLOUD] = 0,
+ [SPECIES_CLAMPERL] = 0,
+ [SPECIES_HUNTAIL] = 0,
+ [SPECIES_GOREBYSS] = 0,
+ [SPECIES_ABSOL] = 0,
+ [SPECIES_SHUPPET] = 12,
+ [SPECIES_BANETTE] = 8,
+ [SPECIES_SEVIPER] = 0,
+ [SPECIES_ZANGOOSE] = 0,
+ [SPECIES_RELICANTH] = 0,
+ [SPECIES_ARON] = 0,
+ [SPECIES_LAIRON] = 0,
+ [SPECIES_AGGRON] = 0,
+ [SPECIES_CASTFORM] = 16,
+ [SPECIES_VOLBEAT] = 0,
+ [SPECIES_ILLUMISE] = 0,
+ [SPECIES_LILEEP] = 0,
+ [SPECIES_CRADILY] = 0,
+ [SPECIES_ANORITH] = 0,
+ [SPECIES_ARMALDO] = 0,
+ [SPECIES_RALTS] = 0,
+ [SPECIES_KIRLIA] = 0,
+ [SPECIES_GARDEVOIR] = 0,
+ [SPECIES_BAGON] = 0,
+ [SPECIES_SHELGON] = 0,
+ [SPECIES_SALAMENCE] = 0,
+ [SPECIES_BELDUM] = 8,
+ [SPECIES_METANG] = 0,
+ [SPECIES_METAGROSS] = 0,
+ [SPECIES_REGIROCK] = 0,
+ [SPECIES_REGICE] = 0,
+ [SPECIES_REGISTEEL] = 0,
+ [SPECIES_KYOGRE] = 0,
+ [SPECIES_GROUDON] = 0,
+ [SPECIES_RAYQUAZA] = 6,
+ [SPECIES_LATIAS] = 6,
+ [SPECIES_LATIOS] = 6,
+ [SPECIES_JIRACHI] = 12,
+ [SPECIES_DEOXYS] = 4,
+ [SPECIES_CHIMECHO] = 12,
+};
+
+#include "../data/trainer_parties.h"
+
+#if ENGLISH
+#include "../data/text/trainer_class_names_en.h"
+#include "../data/trainers_en.h"
+#include "../data/text/species_names_en.h"
+#include "../data/text/move_names_en.h"
+#elif GERMAN
+#include "../data/text/trainer_class_names_de.h"
+#include "../data/trainers_de.h"
+#include "../data/text/species_names_de.h"
+#include "../data/text/move_names_de.h"
+#endif
+
+const u32 gUnknown_81F9528 = 0x101;
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 2bbae20dc..73f9223e5 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -75,7 +75,7 @@ extern void sub_802BBD4();
extern struct SpriteTemplate gUnknown_02024E8C;
extern const u8 Str_821F7B8[];
extern u8 gUnknown_02023A14_50;
-extern const u16 gUnknown_08D004E0[];
+extern const u16 gBattleTextboxPalette[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
extern const u8 Str_821F7EA[];
extern const u8 gUnknown_Debug_821F7F3[];
@@ -269,10 +269,10 @@ void InitBattle(void)
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
ResetTasks();
- sub_800E23C();
+ LoadBattleEntryBackground();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
SetVBlankCallback(sub_800FCFC);
@@ -788,16 +788,14 @@ void sub_800F298(void)
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
gBattleCommunication[0]++;
- goto step_2;
- }
- break;
+ // fallthrough
case 2:
- step_2:
- if (IsLinkTaskFinished())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
- gBattleCommunication[0]++;
- }
+ if (IsLinkTaskFinished())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[0]++;
+ }
+ }
break;
case 3:
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
@@ -1069,7 +1067,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
{
case 0:
{
- struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1080,7 +1078,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 1:
{
- struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1097,7 +1095,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 2:
{
- struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1110,7 +1108,7 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
case 3:
{
- struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+ const struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
@@ -1309,11 +1307,11 @@ void c2_8011A1C(void)
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
- LoadCompressedPalette(gUnknown_08D004E0, 0, 64);
- sub_800D74C();
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 64);
+ ApplyPlayerChosenFrameToBattleMenu();
ResetSpriteData();
ResetTasks();
- sub_800E23C();
+ LoadBattleEntryBackground();
REG_WINOUT = 0x37;
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
@@ -2833,7 +2831,7 @@ void debug_sub_8012688(void)
gBattle_BG3_Y = 0;
gBattleTerrain = 9;
sub_800D6D4();
- sub_800DAB8();
+ LoadBattleTextboxAndBackground();
ResetSpriteData();
ResetTasks();
FreeAllSpritePalettes();
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
index 85c1d4aed..564d8b518 100644
--- a/src/battle/battle_7.c
+++ b/src/battle/battle_7.c
@@ -20,6 +20,7 @@
#include "text.h"
#include "gba/m4a_internal.h"
#include "ewram.h"
+#include "graphics.h"
extern u8 gBattleBufferA[][0x200];
extern u8 gActiveBank;
@@ -49,19 +50,47 @@ extern const u8 *const gBattleAnims_Special[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const u8 gSubstituteDollTilemap[];
-extern const u8 gSubstituteDollGfx[];
-extern const u8 gSubstituteDollPal[];
extern const struct CompressedSpriteSheet gUnknown_081FAF24;
extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
-extern const struct CompressedSpriteSheet gUnknown_0820A47C;
-extern const struct CompressedSpriteSheet gUnknown_0820A484;
-extern const struct CompressedSpriteSheet gUnknown_0820A48C[];
-extern const struct CompressedSpriteSheet gUnknown_0820A49C[];
-extern const struct CompressedSpriteSheet gUnknown_0820A4AC;
-extern const struct CompressedSpriteSheet gUnknown_0820A4B4[];
-extern const struct SpritePalette gUnknown_0820A4D4[];
-extern const u8 gUnknown_08D09C48[];
+extern const u8 gSubstituteDollTilemap[]; // graphics.s
+extern const u8 gSubstituteDollGfx[]; // graphics.s
+extern const u8 gSubstituteDollPal[]; // graphics.s
+extern const u8 gUnknown_08D09C48[]; // graphics.s
+
+const struct CompressedSpriteSheet gUnknown_0820A47C =
+{ gBattleWindowLargeGfx, 4096, 0xd6ff };
+
+const struct CompressedSpriteSheet gUnknown_0820A484 =
+{ gBattleWindowSmallGfx, 4096, 0xd701 };
+
+const struct CompressedSpriteSheet gUnknown_0820A48C[] =
+{
+ { gBattleWindowSmall2Gfx, 2048, 0xd6ff },
+ { gBattleWindowSmall2Gfx, 2048, 0xd700 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A49C[] =
+{
+ { gBattleWindowSmall3Gfx, 2048, 0xd701 },
+ { gBattleWindowSmall3Gfx, 2048, 0xd702 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A4AC =
+{ gBattleWindowLarge2Gfx, 4096, 0xd70b };
+
+const struct CompressedSpriteSheet gUnknown_0820A4B4[] =
+{
+ { gBlankGfxCompressed, 256, 0xd704 },
+ { gBlankGfxCompressed, 288, 0xd705 },
+ { gBlankGfxCompressed, 256, 0xd706 },
+ { gBlankGfxCompressed, 288, 0xd707 },
+};
+
+const struct SpritePalette gUnknown_0820A4D4[] =
+{
+ { gUnknown_08D1212C, 0xD6FF },
+ { gUnknown_08D1214C, 0xD704 },
+};
extern void c3_0802FDF4(u8);
extern void sub_80440EC();
diff --git a/src/battle/battle_bg.c b/src/battle/battle_bg.c
new file mode 100644
index 000000000..7474af74b
--- /dev/null
+++ b/src/battle/battle_bg.c
@@ -0,0 +1,863 @@
+#include "global.h"
+#include "battle.h"
+#include "constants/songs.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "graphics.h"
+#include "link.h"
+#include "main.h"
+#include "palette.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
+#include "trainer.h"
+#include "trig.h"
+#include "sound.h"
+
+
+extern u16 gBattleTypeFlags;
+extern u8 gBattleOutcome;
+
+extern struct Window gUnknown_03004210;
+
+extern u8 BattleText_Win[];
+extern u8 BattleText_Loss[];
+extern u8 BattleText_Tie[];
+
+extern void sub_8032A38(void);
+
+#define GetCurrentMapBattleScene sav1_map_get_battletype
+//extern u8 GetCurrentMapBattleScene(void);
+
+extern const u8 gGameVersion;
+extern u16 gBattleTypeFlags;
+extern struct Trainer gTrainers[];
+extern u16 gTrainerBattleOpponent;
+
+extern u8 gBattleTerrain;
+
+extern u16 gBattleTerrainPalette_Groudon[];
+extern u16 gBattleTerrainPalette_Kyogre[];
+extern u16 gBattleTerrainPalette_BuildingLeader[];
+extern u16 gBattleTerrainPalette_StadiumSteven[];
+extern u16 gBattleTerrainPalette_BuildingGym[];
+extern u16 gBattleTerrainPalette_StadiumMagma[];
+extern u16 gBattleTerrainPalette_StadiumAqua[];
+extern u16 gBattleTerrainPalette_StadiumSidney[];
+extern u16 gBattleTerrainPalette_StadiumPhoebe[];
+extern u16 gBattleTerrainPalette_StadiumGlacia[];
+extern u16 gBattleTerrainPalette_StadiumDrake[];
+extern u16 gBattleTerrainPalette_BattleTower[];
+
+extern u8 gVersusFrameGfx[];
+extern u16 gVersusFrameTilemap[];
+extern u16 gVersusFramePal[];
+
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+
+extern u8 sav1_map_get_battletype(void);
+
+struct LinkResultWindow {
+ struct Window *window;
+ u16 offset;
+ u8 left;
+ u8 top;
+ u8 *dest;
+};
+
+#define gLinkResultWindows gUnknown_081F9680
+extern const struct LinkResultWindow gLinkResultWindows[];
+
+extern struct SpriteTemplate gSpriteTemplate_81F96D0;
+
+const struct OamData gOamData_81F952C = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3
+};
+
+const struct OamData gOamData_81F9534 = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3,
+ .tileNum = 64
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F953C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F954C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_81F956C[] = {
+ gSpriteAffineAnim_81F953C,
+ gSpriteAffineAnim_81F954C
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F9574 = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F952C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F958C = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F9534,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+extern const u8 gUnknown_08E5DC2C[];
+
+const struct CompressedSpriteSheet gUnknown_081F95A4[] = {
+ {gUnknown_08E5DC2C, 4096, 0x2710},
+};
+
+struct BattleBackground
+{
+ const void *tileset;
+ const void *tilemap;
+ const void *entryTileset;
+ const void *entryTilemap;
+ const void *palette;
+};
+
+const struct BattleBackground gBattleTerrainTable[] = {
+{
+ .tileset = gBattleTerrainTiles_TallGrass,
+ .tilemap = gBattleTerrainTilemap_TallGrass,
+ .entryTileset = gBattleTerrainAnimTiles_TallGrass,
+ .entryTilemap = gBattleTerrainAnimTilemap_TallGrass,
+ .palette = gBattleTerrainPalette_TallGrass
+},
+{
+ .tileset = gBattleTerrainTiles_LongGrass,
+ .tilemap = gBattleTerrainTilemap_LongGrass,
+ .entryTileset = gBattleTerrainAnimTiles_LongGrass,
+ .entryTilemap = gBattleTerrainAnimTilemap_LongGrass,
+ .palette = gBattleTerrainPalette_LongGrass
+},
+{
+ .tileset = gBattleTerrainTiles_Sand,
+ .tilemap = gBattleTerrainTilemap_Sand,
+ .entryTileset = gBattleTerrainAnimTiles_Sand,
+ .entryTilemap = gBattleTerrainAnimTilemap_Sand,
+ .palette = gBattleTerrainPalette_Sand
+},
+{
+ .tileset = gBattleTerrainTiles_Underwater,
+ .tilemap = gBattleTerrainTilemap_Underwater,
+ .entryTileset = gBattleTerrainAnimTiles_Underwater,
+ .entryTilemap = gBattleTerrainAnimTilemap_Underwater,
+ .palette = gBattleTerrainPalette_Underwater
+},
+{
+ .tileset = gBattleTerrainTiles_Water,
+ .tilemap = gBattleTerrainTilemap_Water,
+ .entryTileset = gBattleTerrainAnimTiles_Water,
+ .entryTilemap = gBattleTerrainAnimTilemap_Water,
+ .palette = gBattleTerrainPalette_Water
+},
+{
+ .tileset = gBattleTerrainTiles_PondWater,
+ .tilemap = gBattleTerrainTilemap_PondWater,
+ .entryTileset = gBattleTerrainAnimTiles_PondWater,
+ .entryTilemap = gBattleTerrainAnimTilemap_PondWater,
+ .palette = gBattleTerrainPalette_PondWater
+},
+{
+ .tileset = gBattleTerrainTiles_Rock,
+ .tilemap = gBattleTerrainTilemap_Rock,
+ .entryTileset = gBattleTerrainAnimTiles_Rock,
+ .entryTilemap = gBattleTerrainAnimTilemap_Rock,
+ .palette = gBattleTerrainPalette_Rock
+},
+{
+ .tileset = gBattleTerrainTiles_Cave,
+ .tilemap = gBattleTerrainTilemap_Cave,
+ .entryTileset = gBattleTerrainAnimTiles_Cave,
+ .entryTilemap = gBattleTerrainAnimTilemap_Cave,
+ .palette = gBattleTerrainPalette_Cave
+},
+{
+ .tileset = gBattleTerrainTiles_Building,
+ .tilemap = gBattleTerrainTilemap_Building,
+ .entryTileset = gBattleTerrainAnimTiles_Building,
+ .entryTilemap = gBattleTerrainAnimTilemap_Building,
+ .palette = gBattleTerrainPalette_Building
+},
+{
+ .tileset = gBattleTerrainTiles_Building,
+ .tilemap = gBattleTerrainTilemap_Building,
+ .entryTileset = gBattleTerrainAnimTiles_Building,
+ .entryTilemap = gBattleTerrainAnimTilemap_Building,
+ .palette = gBattleTerrainPalette_Plain
+ }
+};
+
+static void sub_800D6C4(void);
+
+void unref_sub_800D684(void)
+{
+ u8 spriteId;
+ ResetSpriteData();
+ spriteId = CreateSprite(&gSpriteTemplate_81F96D0, 0, 0, 0);
+ gSprites[spriteId].invisible = TRUE;
+ SetMainCallback2(sub_800D6C4);
+}
+
+static void sub_800D6C4(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void sub_800D6D4(void)
+{
+ u16 ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
+ REG_BG0CNT = 0x9800;
+ REG_BG1CNT = 0x9c04;
+ REG_BG2CNT = 0x5e05;
+ REG_BG3CNT = 0x5a0b;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_DISPCNT = 0xbf40;
+}
+
+void ApplyPlayerChosenFrameToBattleMenu(void)
+{
+ TextWindow_SetBaseTileNum(0x12);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ TextWindow_SetBaseTileNum(0x22);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ gPlttBufferUnfaded[92] = 0x7fe0;
+ gPlttBufferUnfaded[93] = 0x2529;
+ gPlttBufferUnfaded[94] = 0x7fff;
+ gPlttBufferUnfaded[95] = 0x675a;
+ CpuSet(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], 4);
+ sub_8032A38();
+}
+
+void DrawMainBattleBackground(void)
+{
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER /*| BATTLE_TYPE_x2000000*/))
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
+ {
+ if (gGameVersion == VERSION_RUBY)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
+ }
+ else
+ {
+ LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ u8 trainerClass = gTrainers[gTrainerBattleOpponent].trainerClass;
+ if (trainerClass == TRAINER_CLASS_LEADER)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
+ return;
+ }
+ else if (trainerClass == TRAINER_CLASS_CHAMPION)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
+ return;
+ }
+ }
+
+ switch (GetCurrentMapBattleScene())
+ {
+ 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_BATTLE_TOWER:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ }
+}
+
+void LoadBattleTextboxAndBackground(void)
+{
+ LZDecompressVram(gBattleTextboxTiles, (void*)(BG_VRAM));
+ CpuSet(gBattleTextboxTilemap, (void *)(VRAM + 0xC000), 0x800);
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
+ ApplyPlayerChosenFrameToBattleMenu();
+ DrawMainBattleBackground();
+
+ #if DEBUG
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ debug_sub_8008218((void*)(VRAM + 0x600), 0, (void*)(VRAM + 0xC000), 1);
+ debug_sub_8008264(257, 3, 1, 3, 1);
+ debug_sub_8008264(257, 3, 21, 3, 1);
+ debug_sub_8008264(257, 3, 41, 3, 1);
+ }
+ #endif
+}
+
+static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
+{
+ int i;
+ u16 r4 = 0;
+ u16 src[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
+ if (gTasks[taskId].data[5]) {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ }
+ } else {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ }
+ }
+ for (i = 0; i < 3; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 3);
+ } else {
+ if (windowId == gBattleStruct->linkPlayerIndex) {
+ r4 = gTasks[taskId].data[3];
+ } else {
+ r4 = gTasks[taskId].data[4];
+ }
+ for (i = 0; i < 6; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 6);
+ }
+}
+
+
+#if ENGLISH
+#define LEFT_MESSAGE_X 6
+#define RIGHT_MESSAGE_X 21
+#define TILE_OFFSET_LOSS 168
+#elif GERMAN
+#define LEFT_MESSAGE_X 5
+#define RIGHT_MESSAGE_X 20
+#define TILE_OFFSET_LOSS 172
+#endif
+#define TILE_OFFSET_WIN 160
+#define CENTER_MESSAGE_X 13
+#define MESSAGE_Y 2
+
+#define PRINT_MESSAGE(text, tileDataStartOffset, x) \
+{ \
+ Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \
+ Text_PrintWindow8002F44(&gUnknown_03004210); \
+}
+
+#define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X)
+#define PRINT_MESSAGE_RIGHT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, RIGHT_MESSAGE_X)
+
+static void PrintLinkBattleWinLossTie(void)
+{
+
+ if (gBattleOutcome == 3)
+ {
+ PRINT_MESSAGE(BattleText_Tie, TILE_OFFSET_WIN, CENTER_MESSAGE_X);
+ return;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ // Double battle?
+
+ if (gBattleOutcome == 1)
+ {
+
+ // lp_field_18 = player position?
+ switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
+ {
+ case 0:
+ case 2:
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+
+ case 1:
+ case 3:
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN)
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS)
+ return;
+ }
+ }
+ else
+ {
+
+ switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18)
+ {
+ case 1:
+ case 3:
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+
+ case 0:
+ case 2:
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ return;
+ }
+ }
+
+ return;
+ }
+
+
+ if (gBattleOutcome == 1)
+ {
+ if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
+ {
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ else
+ {
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ }
+ else
+ {
+ if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0)
+ {
+ PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ else
+ {
+ PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
+ PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
+ }
+ }
+}
+
+
+void sub_800DE30(u8 taskId)
+{
+ u8 palette;
+ int i;
+
+ switch (gTasks[taskId].data[0]) {
+
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
+ for (i = 0; i < 4; i++) {
+ u8 windowId = (gLinkPlayers[i].lp_field_18 & 3);
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId].window,
+ gLinkPlayers[i].name,
+ gLinkResultWindows[windowId].offset,
+ gLinkResultWindows[windowId].left,
+ gLinkResultWindows[windowId].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId].window);
+ sub_800DAF8(taskId, windowId, gLinkResultWindows[windowId].dest);
+ }
+ } else {
+ u8 windowId = 4;
+
+ u8 playerId = gBattleStruct->linkPlayerIndex;
+ u8 opponentId = gBattleStruct->linkPlayerIndex ^ 1;
+ if (gLinkPlayers[playerId].lp_field_18) {
+ opponentId = gBattleStruct->linkPlayerIndex;
+ playerId = gBattleStruct->linkPlayerIndex ^ 1;
+ }
+
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId].window,
+ gLinkPlayers[playerId].name,
+ gLinkResultWindows[windowId].offset,
+ gLinkResultWindows[windowId].left,
+ gLinkResultWindows[windowId].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId].window);
+ sub_800DAF8(taskId, playerId, gLinkResultWindows[windowId].dest);
+
+ Text_InitWindow8002E4C(
+ gLinkResultWindows[windowId + 1].window,
+ gLinkPlayers[opponentId].name,
+ gLinkResultWindows[windowId + 1].offset,
+ gLinkResultWindows[windowId + 1].left,
+ gLinkResultWindows[windowId + 1].top,
+ 1);
+ Text_PrintWindow8002F44(gLinkResultWindows[windowId + 1].window);
+ sub_800DAF8(taskId, opponentId, gLinkResultWindows[windowId + 1].dest);
+ }
+ gTasks[taskId].data[0]++;
+ break;
+
+ case 1:
+ palette = AllocSpritePalette(10000);
+ gPlttBufferUnfaded[palette * 16 + 0x10f] = gPlttBufferFaded[palette * 16 + 0x10f] = 0x7fff;
+ gBattleStruct->unk1608A = CreateSprite(&gSpriteTemplate_81F9574, 108, 80, 0);
+ gBattleStruct->unk1608B = CreateSprite(&gSpriteTemplate_81F958C, 132, 80, 0);
+ gSprites[gBattleStruct->unk1608A].invisible = TRUE;
+ gSprites[gBattleStruct->unk1608B].invisible = TRUE;
+ gTasks[taskId].data[0]++;
+ break;
+
+ case 2:
+ if (gTasks[taskId].data[5]) {
+ 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 = (-164) + (Cos2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG2_X = (-140) - (Sin2(gTasks[taskId].data[2]) / 32);
+ gBattle_BG2_Y = (-164) + (Cos2(gTasks[taskId].data[2]) / 32);
+ }
+ if (gTasks[taskId].data[2]) {
+ gTasks[taskId].data[2] -= 2;
+ gTasks[taskId].data[1] += 2;
+ } else {
+ if (gTasks[taskId].data[5]) {
+ PrintLinkBattleWinLossTie();
+ }
+ PlaySE(SE_W231);
+ DestroyTask(taskId);
+ gSprites[gBattleStruct->unk1608A].invisible = FALSE;
+ gSprites[gBattleStruct->unk1608B].invisible = FALSE;
+ gSprites[gBattleStruct->unk1608B].oam.tileNum += 0x40;
+ gSprites[gBattleStruct->unk1608A].data[0] = 0;
+ gSprites[gBattleStruct->unk1608B].data[0] = 1;
+ gSprites[gBattleStruct->unk1608A].data[1] = gSprites[gBattleStruct->unk1608A].pos1.x;
+ gSprites[gBattleStruct->unk1608B].data[1] = gSprites[gBattleStruct->unk1608B].pos1.x;
+ gSprites[gBattleStruct->unk1608A].data[2] = 0;
+ gSprites[gBattleStruct->unk1608B].data[2] = 0;
+ }
+ break;
+ }
+}
+
+void LoadBattleEntryBackground(void) {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK) {
+ LZDecompressVram(gVersusFrameGfx, (void *)0x6004000);
+ LZDecompressVram(gVersusFrameTilemap, (void *)0x600e000);
+ LZDecompressVram(gVersusFrameTilemap, (void *)0x600f000);
+ LZDecompressVram(gUnknown_08E5DC2C, (void *)0x6010000);
+ LoadCompressedPalette(gVersusFramePal, 0x60, 0x20);
+ REG_BG1CNT = 0x5c04;
+ REG_WININ = 0x36;
+ REG_WINOUT = 0x36;
+ gBattle_BG1_Y = 0xff5c;
+ gBattle_BG2_Y = 0xff5c;
+ LoadCompressedObjectPic(gUnknown_081F95A4);
+ return;
+ } else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == VERSION_RUBY) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)0x600e000);
+ return;
+ } else {
+ LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)0x600e000);
+ return;
+ }
+ } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ return;
+ }
+ }
+ if (sav1_map_get_battletype() == 0) {
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)0x600e000);
+ return;
+ }
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+}
+
+int LoadChosenBattleElement(u8 type) {
+ int ret = 0;
+ switch (type) {
+ case 0:
+ LZDecompressVram(&gBattleTextboxTiles, (void *)0x6000000);
+ break;
+ case 1:
+ CpuCopy16(gBattleTextboxTilemap, (void *)0x600c000, 0x1000);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
+ break;
+ case 3: // tiles
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == VERSION_RUBY) {
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void *)0x6008000);
+ break;
+ } else {
+ LZDecompressVram(gBattleTerrainTiles_Water, (void *)0x6008000);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)0x6008000);
+ break;
+ case 2:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 3:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 4:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 5:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 7:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ break;
+ case 1:
+ case 8:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ }
+ break;
+ }
+ } else {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ break;
+ }
+ case 4: // tilemap
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == 2) {
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)0x600d000);
+ break;
+ } else {
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void *)0x600d000);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)0x600d000);
+ break;
+ case 2:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 3:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 4:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 5:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 7:
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ break;
+ case 1:
+ case 8:
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ }
+ break;
+ }
+ } else {
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ break;
+ }
+ case 5: // palette
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
+ if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
+ if (gGameVersion == 2) {
+ LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
+ break;
+ } else {
+ LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
+ break;
+ }
+ } else {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
+ if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
+ break;
+ } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
+ break;
+ }
+ }
+ switch (sav1_map_get_battletype()) {
+ case 0:
+ LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
+ break;
+ case 1:
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
+ break;
+ case 3:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
+ break;
+ case 4:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
+ break;
+ case 5:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
+ break;
+ case 6:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
+ break;
+ case 7:
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
+ break;
+ case 8:
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ break;
+ }
+ } else {
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ case 6:
+ ApplyPlayerChosenFrameToBattleMenu();
+ break;
+ default:
+ ret = 1;
+ }
+ return ret;
+}
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 9be026d53..4022f07ce 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -14,6 +14,7 @@
#include "task.h"
#include "text.h"
#include "ewram.h"
+#include "graphics.h"
struct UnknownStruct5
{
@@ -29,6 +30,398 @@ struct UnknownStruct7
u8 filler0[0x180];
};
+static void sub_8043CEC(struct Sprite *sprite);
+static void sub_8045030(struct Sprite *sprite);
+static void sub_804507C(struct Sprite *sprite);
+
+const struct OamData gOamData_820A4E4 =
+{
+ .shape = 1,
+ .size = 3,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A4EC[] =
+{
+ {
+ .tileTag = 55039,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55040,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A51C[] =
+{
+ {
+ .tileTag = 55041,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55042,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A54C =
+{
+ .tileTag = 55051,
+ .paletteTag = 55039,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gOamData_820A564 =
+{
+ .shape = 1,
+ .size = 1,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplates_820A56C[] =
+{
+ {
+ .tileTag = 55044,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55045,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55046,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+ {
+ .tileTag = 55047,
+ .paletteTag = 55044,
+ .oam = &gOamData_820A564,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8043CEC,
+ },
+};
+
+const struct Subsprite gSubspriteTable_820A5CC[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+ { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 48, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 52, .size = 1 }, // size := 32x8
+ { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 56, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A5F4[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 64, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 96, .size = 2 }, // size := 32x32
+ { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =112, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =116, .size = 1 }, // size := 32x8
+ { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =120, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A61C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+};
+
+const struct Subsprite gSubspriteTable_820A62C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32
+ { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32
+};
+
+const struct Subsprite gSubspriteTable_820A63C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A64C[] =
+{
+ { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 8, .size = 0 }, // size := 8x8
+};
+
+const struct SubspriteTable gSubspriteTables_unreferenced[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A5CC), gSubspriteTable_820A5CC },
+ { ARRAY_COUNT(gSubspriteTable_820A61C), gSubspriteTable_820A61C },
+ { ARRAY_COUNT(gSubspriteTable_820A5F4), gSubspriteTable_820A5F4 },
+ { ARRAY_COUNT(gSubspriteTable_820A62C), gSubspriteTable_820A62C },
+};
+
+const struct SubspriteTable gSubspriteTables_820A684[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A63C), gSubspriteTable_820A63C },
+ { ARRAY_COUNT(gSubspriteTable_820A64C), gSubspriteTable_820A64C },
+};
+
+const struct Subsprite gSubspriteTable_820A694[] =
+{
+ { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8
+};
+
+const struct Subsprite gSubspriteTable_820A6B4[] =
+{
+ { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8
+ { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8
+ { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8
+ { .x = 64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8
+};
+
+const struct SubspriteTable gSubspriteTables_820A6E4[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A694), gSubspriteTable_820A694 },
+};
+
+const struct SubspriteTable gSubspriteTables_820A6EC[] =
+{
+ { ARRAY_COUNT(gSubspriteTable_820A6B4), gSubspriteTable_820A6B4 },
+};
+
+// unused dakuten/handakuten tiles
+const u8 gUnusedDakuten[] = INCBIN_U8("graphics/unused/dakuten.4bpp");
+
+const struct CompressedSpriteSheet gUnknown_0820A754[] =
+{
+ { gBattleGfx_BallStatusBar, 512, 0xd70c },
+ { gBattleGfx_BallStatusBar, 512, 0xd70d },
+};
+
+const struct SpritePalette gUnknown_0820A764[] =
+{
+ { gUnknown_08D1212C, 0xd710 },
+ { gUnknown_08D1212C, 0xd711 },
+};
+
+const struct SpritePalette gUnknown_0820A774[] =
+{
+ { gUnknown_08D1214C, 0xd712 },
+ { gUnknown_08D1214C, 0xd713 },
+};
+
+const struct CompressedSpriteSheet gUnknown_0820A784[] =
+{
+ { Tiles_D129AC, 0x80, 0xd714 },
+ { Tiles_D129AC, 0x80, 0xd715 },
+};
+
+const struct OamData gOamData_820A794 =
+{
+ .shape = 1,
+ .size = 3,
+ .priority = 1,
+};
+
+const struct OamData gOamData_820A79C =
+{
+ .shape = 0,
+ .size = 0,
+ .priority = 1,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7A4 =
+{
+ .tileTag = 55052,
+ .paletteTag = 55056,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8045030,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7BC =
+{
+ .tileTag = 55053,
+ .paletteTag = 55057,
+ .oam = &gOamData_820A4E4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8045030,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7D4 =
+{
+ .tileTag = 55060,
+ .paletteTag = 55058,
+ .oam = &gOamData_820A79C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804507C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_820A7EC =
+{
+ .tileTag = 55061,
+ .paletteTag = 55059,
+ .oam = &gOamData_820A79C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804507C,
+};
+
+u8 *const gUnknown_0820A804[2] =
+{
+ OBJ_VRAM0 + 32 * 74,
+ OBJ_VRAM0 + 32 * 75,
+};
+
+u8 *const gUnknown_0820A80C[2] =
+{
+ OBJ_VRAM0 + 32 * 41,
+ OBJ_VRAM0 + 32 * 42,
+};
+
+u8 *const gUnknown_0820A814[2] =
+{
+ OBJ_VRAM0 + 32 * 42,
+ OBJ_VRAM0 + 32 * 43,
+};
+
+const u8 gUnknown_0820A81C[] = __("{COLOR DARK_GREY}{HIGHLIGHT RED} ");
+
+u8 *const gUnknown_0820A83C[3] =
+{
+ OBJ_VRAM0 + 32 * 31,
+ OBJ_VRAM0 + 32 * 88,
+ OBJ_VRAM0 + 32 * 89,
+};
+
+u8 *const gUnknown_0820A848[3] =
+{
+ OBJ_VRAM0 + 32 * 22,
+ OBJ_VRAM0 + 32 * 23,
+ OBJ_VRAM0 + 32 * 48,
+};
+
+u8 *const gUnknown_0820A854[2] =
+{
+ OBJ_VRAM0 + 32 * 90,
+ OBJ_VRAM0 + 32 * 91,
+};
+
+u8 *const gUnknown_0820A85C[2] =
+{
+ OBJ_VRAM0 + 32 * 49,
+ OBJ_VRAM0 + 32 * 50,
+};
+
+const u8 gUnknown_0820A864[] = _("{COLOR DARK_GREY}{HIGHLIGHT RED} /");
+
+u8 *const gUnknown_0820A87C[6] =
+{
+ OBJ_VRAM0 + 32 * 0,
+ OBJ_VRAM0 + 32 * 1,
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+};
+
+u8 *const gUnknown_0820A894[2] =
+{
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+};
+
+const u8 gUnknown_0820A89C[] = __("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT} ");
+const u8 gUnknown_0820A8B0[] = _("{HIGHLIGHT RED}");
+
+u8 *const gUnknown_0820A8B4[10] =
+{
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 64,
+ OBJ_VRAM0 + 32 * 65,
+ OBJ_VRAM0 + 32 * 66,
+ OBJ_VRAM0 + 32 * 67,
+};
+
+u8 *const gUnknown_0820A8DC[10] =
+{
+ OBJ_VRAM0 + 32 * 1,
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 32,
+ OBJ_VRAM0 + 32 * 33,
+ OBJ_VRAM0 + 32 * 34,
+};
+
+u8 *const gUnknown_0820A904[10] =
+{
+ OBJ_VRAM0 + 32 * 2,
+ OBJ_VRAM0 + 32 * 3,
+ OBJ_VRAM0 + 32 * 4,
+ OBJ_VRAM0 + 32 * 5,
+ OBJ_VRAM0 + 32 * 6,
+ OBJ_VRAM0 + 32 * 7,
+ OBJ_VRAM0 + 32 * 32,
+ OBJ_VRAM0 + 32 * 33,
+ OBJ_VRAM0 + 32 * 34,
+ OBJ_VRAM0 + 32 * 35,
+};
+
extern u8 gDisplayedStringBattle[];
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
@@ -37,35 +430,6 @@ extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
-extern const struct SpriteTemplate gSpriteTemplate_820A4EC[];
-extern const struct SpriteTemplate gSpriteTemplate_820A51C[];
-extern const struct SpriteTemplate gSpriteTemplate_820A54C;
-extern const struct SpriteTemplate gSpriteTemplate_820A56C[];
-extern const struct SubspriteTable gSubspriteTables_820A684[];
-extern const struct SubspriteTable gSubspriteTables_820A6E4[];
-extern const struct SubspriteTable gSubspriteTables_820A6EC[];
-extern const struct SpriteSheet gUnknown_0820A754[];
-extern const struct SpritePalette gUnknown_0820A764[];
-extern const struct SpritePalette gUnknown_0820A774[];
-extern const struct SpriteSheet gUnknown_0820A784[];
-extern const struct SpriteTemplate gSpriteTemplate_820A7A4[];
-extern const struct SpriteTemplate gSpriteTemplate_820A7D4[];
-extern void *const gUnknown_0820A804[];
-extern void *const gUnknown_0820A80C[];
-extern void *const gUnknown_0820A814[];
-extern void *const gUnknown_0820A83C[];
-extern void *const gUnknown_0820A848[];
-extern void *const gUnknown_0820A854[];
-extern void *const gUnknown_0820A85C[];
-extern void *const gUnknown_0820A87C[];
-extern void *const gUnknown_0820A894[];
-extern void *const gUnknown_0820A8B4[];
-extern void *const gUnknown_0820A8DC[];
-extern void *const gUnknown_0820A904[];
-extern const u8 gUnknown_0820A81C[];
-extern const u8 gUnknown_0820A864[];
-extern const u8 gUnknown_0820A89C[];
-extern const u8 gUnknown_0820A8B0[];
extern const u8 BattleText_SafariBalls[];
extern const u8 BattleText_SafariBallsLeft[];
extern const u8 BattleText_HighlightRed[];
@@ -421,8 +785,8 @@ u8 battle_make_oam_normal_battle(u8 a)
{
if (GetBankSide(a) == 0)
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[0], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[0], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[0], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[0], 240, 160, 1);
gSprites[spriteId1].oam.shape = 0;
gSprites[spriteId2].oam.shape = 0;
@@ -430,8 +794,8 @@ u8 battle_make_oam_normal_battle(u8 a)
}
else
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[0], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[0], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[0], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[0], 240, 160, 1);
gSprites[spriteId2].oam.tileNum += 32;
sp0 = 2;
@@ -447,8 +811,8 @@ u8 battle_make_oam_normal_battle(u8 a)
{
if (GetBankSide(a) == 0)
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1);
gSprites[spriteId1].oam.affineParam = spriteId2;
gSprites[spriteId2].data[5] = spriteId1;
@@ -459,8 +823,8 @@ u8 battle_make_oam_normal_battle(u8 a)
//_08043ACC
else
{
- spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
- spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
+ spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[GetBankIdentity(a) / 2], 240, 160, 1);
gSprites[spriteId1].oam.affineParam = spriteId2;
gSprites[spriteId2].data[5] = spriteId1;
@@ -472,7 +836,7 @@ u8 battle_make_oam_normal_battle(u8 a)
}
//_08043B50
- spriteId3 = CreateSpriteAtEnd(&gSpriteTemplate_820A56C[gBanksBySide[a]], 140, 60, 0);
+ spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBanksBySide[a]], 140, 60, 0);
sprite = &gSprites[spriteId3];
SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBankSide(a)]);
sprite->subspriteMode = 2;
@@ -509,7 +873,7 @@ static const void *sub_8043CDC(u8 a)
return gUnknown_08D1216C[a];
}
-void sub_8043CEC(struct Sprite *sprite)
+static void sub_8043CEC(struct Sprite *sprite)
{
u8 r5 = sprite->data[5];
@@ -654,7 +1018,7 @@ void sub_8043F44(u8 a)
/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
- void *const *r7;
+ u8 *const *r7;
u8 *ptr;
s32 i;
s32 two;
@@ -713,7 +1077,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
u8 str[0x14];
u8 *ptr;
s32 foo;
- void *const *r4;
+ u8 *const *r4;
s32 i;
// TODO: make this a local variable
@@ -909,7 +1273,7 @@ _0804420C: .4byte 0x04000008\n\
{
u8 str[0x14];
u8 *ptr;
- void *const *r7;
+ u8 *const *r7;
int r10;
int r4;
int i;
@@ -942,7 +1306,7 @@ _0804420C: .4byte 0x04000008\n\
sub_80034D4(ewram0_9(0), str);
for (i = 0; i < r10; i++)
{
- CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 0x20);
+ CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32);
}
}
@@ -2275,7 +2639,7 @@ static void sub_8044F70(u8 taskId)
}
}
-void sub_8045030(struct Sprite *sprite)
+static void sub_8045030(struct Sprite *sprite)
{
if (sprite->pos2.x != 0)
sprite->pos2.x += sprite->data[0];
@@ -2291,7 +2655,7 @@ static void sub_8045048(struct Sprite *sprite)
sprite->data[1] &= 0xF;
}
-void sub_804507C(struct Sprite *sprite)
+static void sub_804507C(struct Sprite *sprite)
{
u8 r3;
u16 r2;
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index ec4a26bc5..10ac4f78c 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -747,7 +747,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
u8 i;
u8 sum;
u32 count = numMons;
- void *party;
+ const void *party;
if (gTrainers[opponentId].partySize < count)
count = gTrainers[opponentId].partySize;
@@ -801,25 +801,25 @@ static u8 GetTrainerBattleTransition(void)
u8 enemyLevel;
u8 playerLevel;
- if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) // link battle?
+ if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
return B_TRANSITION_STEVEN;
trainer = gTrainers;
- if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league?
+ if (trainer[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_ELITE_FOUR)
{
- if (gTrainerBattleOpponent == 261)
+ if (gTrainerBattleOpponent == OPPONENT_SIDNEY)
return B_TRANSITION_SYDNEY;
- if (gTrainerBattleOpponent == 262)
+ if (gTrainerBattleOpponent == OPPONENT_PHOEBE)
return B_TRANSITION_PHOEBE;
- if (gTrainerBattleOpponent == 263)
+ if (gTrainerBattleOpponent == OPPONENT_GLACIA)
return B_TRANSITION_GLACIA;
- if (gTrainerBattleOpponent == 264)
+ if (gTrainerBattleOpponent == OPPONENT_DRAKE)
return B_TRANSITION_DRAKE;
return B_TRANSITION_STEVEN;
}
- if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader?
+ if (trainer[gTrainerBattleOpponent].trainerClass == TRAINER_CLASS_CHAMPION)
return B_TRANSITION_STEVEN;
if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE)
@@ -1095,7 +1095,7 @@ void CB2_EndTrainerBattle(void)
{
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
@@ -1112,7 +1112,7 @@ void CB2_EndTrainerEyeRematchBattle(void)
{
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index 0da29441e..85aa78ca0 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -29,7 +29,7 @@ extern u8 gBankSpriteIds[4];
extern u8 gBattleMonForms[4];
extern u8 gHealthboxIDs[4];
-bool8 sub_800E414(u8 a0);
+bool8 LoadChosenBattleElement(u8 a0);
bool8 sub_8031C30(u8 a0);
void sub_8031EE8(void);
void sub_80327CC(void);
@@ -97,7 +97,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
}
break;
case 2:
- if (!sub_800E414(gHelperState))
+ if (!LoadChosenBattleElement(gHelperState))
{
gHelperState++;
gReshowState--;