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.c8
-rw-r--r--src/battle/battle_bg.c184
-rw-r--r--src/battle/battle_setup.c2
4 files changed, 617 insertions, 47 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 2d5b3c420..73f9223e5 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1067,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];
@@ -1078,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];
@@ -1095,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];
@@ -1108,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];
diff --git a/src/battle/battle_bg.c b/src/battle/battle_bg.c
index f97829833..7474af74b 100644
--- a/src/battle/battle_bg.c
+++ b/src/battle/battle_bg.c
@@ -3,6 +3,7 @@
#include "constants/songs.h"
#include "decompress.h"
#include "ewram.h"
+#include "graphics.h"
#include "link.h"
#include "main.h"
#include "palette.h"
@@ -29,34 +30,12 @@ extern void sub_8032A38(void);
//extern u8 GetCurrentMapBattleScene(void);
extern const u8 gGameVersion;
-extern u8 gBattleTextboxTiles[];
-extern u16 gBattleTextboxTilemap[];
-extern u16 gBattleTextboxPalette[];
extern u16 gBattleTypeFlags;
extern struct Trainer gTrainers[];
extern u16 gTrainerBattleOpponent;
-struct BattleBackground {
- void *tileset;
- void *tilemap;
- void *entryTiles;
- void *entryTilemap;
- void *palette;
-};
-extern struct BattleBackground gBattleTerrainTable[];
-
extern u8 gBattleTerrain;
-extern u8 gBattleTerrainTiles_Cave[];
-extern u8 gBattleTerrainTiles_Water[];
-extern u8 gBattleTerrainTiles_Building[];
-extern u8 gBattleTerrainTiles_Stadium[];
-
-extern u16 gBattleTerrainTilemap_Cave[];
-extern u16 gBattleTerrainTilemap_Water[];
-extern u16 gBattleTerrainTilemap_Building[];
-extern u16 gBattleTerrainTilemap_Stadium[];
-
extern u16 gBattleTerrainPalette_Groudon[];
extern u16 gBattleTerrainPalette_Kyogre[];
extern u16 gBattleTerrainPalette_BuildingLeader[];
@@ -70,20 +49,14 @@ extern u16 gBattleTerrainPalette_StadiumGlacia[];
extern u16 gBattleTerrainPalette_StadiumDrake[];
extern u16 gBattleTerrainPalette_BattleTower[];
-extern u8 gBattleTerrainAnimTiles_Building[];
-extern u16 gBattleTerrainAnimTilemap_Building[];
-extern u8 gBattleTerrainAnimTiles_Cave[];
-extern u16 gBattleTerrainAnimTilemap_Cave[];
-extern u8 gBattleTerrainAnimTiles_Underwater[];
-extern u16 gBattleTerrainAnimTilemap_Underwater[];
extern u8 gVersusFrameGfx[];
extern u16 gVersusFrameTilemap[];
-extern u8 gUnknown_08E5DC2C[];
extern u16 gVersusFramePal[];
+extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern struct CompressedSpriteSheet gUnknown_081F95A4;
extern u8 sav1_map_get_battletype(void);
@@ -97,19 +70,146 @@ struct LinkResultWindow {
#define gLinkResultWindows gUnknown_081F9680
extern const struct LinkResultWindow gLinkResultWindows[];
-extern void PrintLinkBattleWinLossTie(void);
-extern void sub_800DAF8(u8, u8, u8 *);
-extern struct SpriteTemplate gSpriteTemplate_81F9574;
-extern struct SpriteTemplate gSpriteTemplate_81F958C;
extern struct SpriteTemplate gSpriteTemplate_81F96D0;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG2_X;
+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;
+};
-void sub_800D6C4(void);
+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)
{
@@ -120,7 +220,7 @@ void unref_sub_800D684(void)
SetMainCallback2(sub_800D6C4);
}
-void sub_800D6C4(void)
+static void sub_800D6C4(void)
{
AnimateSprites();
BuildOamBuffer();
@@ -271,7 +371,7 @@ void LoadBattleTextboxAndBackground(void)
#endif
}
-void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
+static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
{
int i;
u16 r4 = 0;
@@ -349,7 +449,7 @@ void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
#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)
-void PrintLinkBattleWinLossTie(void)
+static void PrintLinkBattleWinLossTie(void)
{
if (gBattleOutcome == 3)
@@ -544,7 +644,7 @@ void LoadBattleEntryBackground(void) {
REG_WINOUT = 0x36;
gBattle_BG1_Y = 0xff5c;
gBattle_BG2_Y = 0xff5c;
- LoadCompressedObjectPic(&gUnknown_081F95A4);
+ LoadCompressedObjectPic(gUnknown_081F95A4);
return;
} else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) {
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
@@ -572,7 +672,7 @@ void LoadBattleEntryBackground(void) {
}
}
if (sav1_map_get_battletype() == 0) {
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTiles, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)0x6004000);
LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)0x600e000);
return;
}
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index 86b272bcb..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;