summaryrefslogtreecommitdiff
path: root/src/pokemon_3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon_3.c')
-rw-r--r--src/pokemon_3.c110
1 files changed, 48 insertions, 62 deletions
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 105893f70..c096e2e4b 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1,17 +1,19 @@
#include "global.h"
-#include "asm.h"
#include "battle.h"
+#include "battle_message.h"
#include "data2.h"
#include "event_data.h"
#include "hold_effects.h"
#include "item.h"
#include "items.h"
#include "link.h"
-#include "main.h"
#include "m4a.h"
+#include "main.h"
#include "pokemon.h"
#include "rng.h"
#include "rom4.h"
+#include "rom_8077ABC.h"
+#include "rom_8094928.h"
#include "rtc.h"
#include "songs.h"
#include "sound.h"
@@ -19,45 +21,37 @@
#include "sprite.h"
#include "string_util.h"
#include "text.h"
-
+#include "util.h"
extern u8 gPlayerPartyCount;
-extern struct Pokemon gPlayerParty[6];
extern u8 gEnemyPartyCount;
-extern struct Pokemon gEnemyParty[6];
extern struct BattlePokemon gBattleMons[4];
-extern u8 * const gItemEffectTable[];
-extern u8 gUnknown_02024A60;
+extern u8 gActiveBank;
extern struct BattleEnigmaBerry gEnigmaBerries[];
-extern struct EvolutionData gEvolutionTable[];
extern u16 gSpeciesToHoennPokedexNum[];
extern u16 gSpeciesToNationalPokedexNum[];
extern u16 gHoennToNationalOrder[];
extern u16 gSpeciesIdToCryId[];
-extern u8 gUnknown_030041C0[];
-extern u8 gUnknown_03004290[];
-extern u8 gUnknown_020238CC[];
-extern u8 gPlayerMonIndex;
-extern u8 gEnemyMonIndex;
-extern u8 gUnknown_02024C0B;
-extern u8 gUnknown_02024E6C;
+extern u8 gBattleTextBuff1[];
+extern u8 gBattleTextBuff2[];
+extern u8 gDisplayedStringBattle[];
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gStringBank;
+extern u8 gBankInMenu;
extern struct SpindaSpot gSpindaSpotGraphics[];
extern s8 gNatureStatTable[][5];
extern s8 gUnknown_082082FE[][3];
extern u16 gTrainerBattleOpponent;
extern u16 gBattleTypeFlags;
-extern struct BaseStats gBaseStats[];
-extern u32 gBitTable[];
-extern u32 gExperienceTables[8][101];
extern u32 gTMHMLearnsets[][2];
-extern const u16 *gLevelUpLearnsets[];
extern u8 gBattleMonForms[];
extern const u8 BattleText_Wally[];
extern const u16 gHMMoves[];
extern s8 gUnknown_083F7E28[];
-extern u8 byte_2024C06;
+extern u8 gLastUsedAbility;
extern const u8 BattleText_PreventedSwitch[];
-extern u16 gUnknown_02024A6A[];
+extern u16 gBattlePartyID[];
extern u8 gJapaneseNidoranNames[][11];
extern u8 gUnknown_082082F8[];
@@ -67,8 +61,6 @@ extern u8 gUnknown_083FEE5D[];
extern u8 gUnknown_083FEE92[];
extern u8 *gUnknown_08400F58[];
-u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
-
bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
{
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
@@ -89,8 +81,8 @@ bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 bat
u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
{
- u8 *temp;
- u8 *itemEffect;
+ const u8 *temp;
+ const u8 *itemEffect;
u8 offset;
int i;
u8 j;
@@ -105,7 +97,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
if (itemId == ITEM_ENIGMA_BERRY)
{
- temp = gEnigmaBerries[gUnknown_02024A60].itemEffect;
+ temp = gEnigmaBerries[gActiveBank].itemEffect;
}
itemEffect = temp;
@@ -202,10 +194,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
void sub_803F324(int stat)
{
- gEnemyMonIndex = gUnknown_02024E6C;
- StringCopy(gUnknown_030041C0, gUnknown_08400F58[gUnknown_082082F8[stat]]);
- StringCopy(gUnknown_03004290, gUnknown_083FFDB3);
- get_battle_strings_(gUnknown_083FFDD3);
+ gBankTarget = gBankInMenu;
+ StringCopy(gBattleTextBuff1, gUnknown_08400F58[gUnknown_082082F8[stat]]);
+ StringCopy(gBattleTextBuff2, gUnknown_083FFDB3);
+ StrCpyDecodeToDisplayedStringBattle(gUnknown_083FFDD3);
}
u8 *sub_803F378(u16 itemId)
@@ -217,7 +209,7 @@ u8 *sub_803F378(u16 itemId)
{
if (gMain.inBattle)
{
- itemEffect = gEnigmaBerries[gUnknown_02024E6C].itemEffect;
+ itemEffect = gEnigmaBerries[gBankInMenu].itemEffect;
}
else
{
@@ -226,10 +218,10 @@ u8 *sub_803F378(u16 itemId)
}
else
{
- itemEffect = gItemEffectTable[itemId - 13];
+ itemEffect = (u8 *) gItemEffectTable[itemId - 13];
}
- gUnknown_02024C0B = gUnknown_02024E6C;
+ gStringBank = gBankInMenu;
for (i = 0; i < 3; i++)
{
@@ -243,19 +235,19 @@ u8 *sub_803F378(u16 itemId)
}
else
{
- gPlayerMonIndex = gUnknown_02024E6C;
- get_battle_strings_(gUnknown_083FEE92);
+ gBankAttacker = gBankInMenu;
+ StrCpyDecodeToDisplayedStringBattle(gUnknown_083FEE92);
}
}
}
if (itemEffect[3] & 0x80)
{
- gPlayerMonIndex = gUnknown_02024E6C;
- get_battle_strings_(gUnknown_083FEE5D);
+ gBankAttacker = gBankInMenu;
+ StrCpyDecodeToDisplayedStringBattle(gUnknown_083FEE5D);
}
- return gUnknown_020238CC;
+ return gDisplayedStringBattle;
}
u8 GetNature(struct Pokemon *mon)
@@ -1158,9 +1150,7 @@ void current_map_music_set__default_for_battle(u16 song)
PlayNewMapMusic(sub_8040728());
}
-const u16 *species_and_otid_get_pal(u16, u32, u32);
-
-const u16 *pokemon_get_pal(struct Pokemon *mon)
+const u8 *pokemon_get_pal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -1174,7 +1164,7 @@ const u16 *pokemon_get_pal(struct Pokemon *mon)
//Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-const u16 *species_and_otid_get_pal(u16 species, u32 otId , u32 personality)
+const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
@@ -1188,9 +1178,7 @@ const u16 *species_and_otid_get_pal(u16 species, u32 otId , u32 personality)
return gMonPaletteTable[species].data;
}
-const struct SpritePalette *sub_80409C8(u16, u32, u32);
-
-const struct SpritePalette *sub_8040990(struct Pokemon *mon)
+const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -1198,7 +1186,7 @@ const struct SpritePalette *sub_8040990(struct Pokemon *mon)
return sub_80409C8(species, otId, personality);
}
-const struct SpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality)
+const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality)
{
u32 shinyValue;
@@ -1237,8 +1225,6 @@ s8 sub_8040A7C(u32 personality, u8 a2)
return gUnknown_083F7E28[nature * 5 + a2];
}
-bool8 IsOtherTrainer(u32, u8 *);
-
bool8 IsTradedMon(struct Pokemon *mon)
{
u8 otName[8];
@@ -1288,21 +1274,21 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon)
void sub_8040B8C(void)
{
- byte_2024C06 = BATTLE_STRUCT->filler1_2[0x37];
- gUnknown_030041C0[0] = 0xFD;
- gUnknown_030041C0[1] = 4;
- gUnknown_030041C0[2] = BATTLE_STRUCT->filler1[0x34];
- gUnknown_030041C0[4] = EOS;
- if (!battle_side_get_owner(BATTLE_STRUCT->filler1[0x34]))
- gUnknown_030041C0[3] = pokemon_order_func(gUnknown_02024A6A[BATTLE_STRUCT->filler1[0x34]]);
+ gLastUsedAbility = BATTLE_STRUCT->filler1_2[0x37];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = BATTLE_STRUCT->filler1[0x34];
+ gBattleTextBuff1[4] = EOS;
+ if (!GetBankSide(BATTLE_STRUCT->filler1[0x34]))
+ gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[BATTLE_STRUCT->filler1[0x34]]);
else
- gUnknown_030041C0[3] = gUnknown_02024A6A[BATTLE_STRUCT->filler1[0x34]];
- gUnknown_03004290[0] = 0xFD;
- gUnknown_03004290[1] = 4;
- gUnknown_03004290[2] = gUnknown_02024E6C;
- gUnknown_03004290[3] = pokemon_order_func(gUnknown_02024A6A[gUnknown_02024E6C]);
- gUnknown_03004290[4] = EOS;
- sub_8120FFC(BattleText_PreventedSwitch, gStringVar4);
+ gBattleTextBuff1[3] = gBattlePartyID[BATTLE_STRUCT->filler1[0x34]];
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 4;
+ gBattleTextBuff2[2] = gBankInMenu;
+ gBattleTextBuff2[3] = pokemon_order_func(gBattlePartyID[gBankInMenu]);
+ gBattleTextBuff2[4] = EOS;
+ StrCpyDecodeBattle(BattleText_PreventedSwitch, gStringVar4);
}
void SetWildMonHeldItem(void)