summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h37
-rw-r--r--include/battle_controllers.h196
-rw-r--r--include/battle_script_commands.h2
-rw-r--r--include/battle_util.h7
-rw-r--r--include/config.h10
-rw-r--r--include/constants/abilities.h2
-rw-r--r--include/constants/battle.h112
-rw-r--r--include/constants/metatile_labels.h12
-rw-r--r--include/constants/pokemon.h144
-rw-r--r--include/constants/vars.h37
-rw-r--r--include/global.h14
-rw-r--r--include/macros/event.inc10
-rw-r--r--include/overworld.h2
-rw-r--r--include/pokemon.h140
-rw-r--r--include/rom3.h73
15 files changed, 471 insertions, 327 deletions
diff --git a/include/battle.h b/include/battle.h
index 510db80f6..59eee8407 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -69,10 +69,6 @@
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
-// physical/special types
-#define TYPE_IS_PHYSICAL(type) ((type) < TYPE_MYSTERY)
-#define TYPE_IS_SPECIAL(type) ((type) > TYPE_MYSTERY)
-
struct DisableStruct
{
/*0x00*/ u32 transformedMonPersonality;
@@ -97,12 +93,12 @@ struct DisableStruct
/*0x13*/ u8 tauntTimer1:4;
/*0x13*/ u8 tauntTimer2:4;
/*0x14*/ u8 bankPreventingEscape;
- /*0x15*/ u8 bankWithSureHit;
+ /*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
/*0x18*/ u8 unk18_a : 3;
- /*0x18*/ u8 unk18_b : 4;
+ /*0x18*/ u8 mimickedMoves : 4;
/*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
};
@@ -240,7 +236,7 @@ struct BattleResults
u8 unk2; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
- u8 unk5_0:1; // 0x5
+ u8 playerMonWasDamaged:1; // 0x5
u8 unk5_1:1; // 0x5
u16 poke1Species; // 0x6
u8 pokeString1[10]; // 0x8
@@ -297,20 +293,20 @@ struct BattleStruct /* 0x2000000 */
/*0x15DDF*/ u8 unk15DDF;
/*0x15DE0*/ u8 filler15DE0[0x220];
/*0x16000*/ u8 turnEffectsTracker;
- /*0x16001*/ u8 turnEffectsBank;
+ /*0x16001*/ u8 turnEffectsBattlerId;
/*0x16002*/ u8 animTurn;
/*0x16003*/ u8 scriptingActive;
/*0x16004*/ u8 wrappedMove[8];
/*0x1600C*/ u8 cmd49StateTracker;
/*0x1600D*/ u8 unk1600D;
- /*0x1600E*/ u8 turncountersTracker;
+ /*0x1600E*/ u8 turnCountersTracker;
/*0x1600F*/ u8 getexpStateTracker;
/*0x16010*/ u8 moveTarget[4];
/*0x16014*/ u8 unk16014;
/*0x16015*/ u8 unk16015;
/*0x16016*/ u8 unk16016;
/*0x16017*/ u8 unk16017;
- /*0x16018*/ u8 expGetterID;
+ /*0x16018*/ u8 expGetterMonId;
/*0x16019*/ u8 unk16019;
/*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
/*0x1601B*/ u8 wildVictorySong;
@@ -361,7 +357,7 @@ struct BattleStruct /* 0x2000000 */
/*0x1609F*/ u8 unk1609F;
/*0x160A0*/ u8 stringMoveType;
/*0x160A1*/ u8 animTargetsHit;
- /*0x160A2*/ u8 expGetterBank;
+ /*0x160A2*/ u8 expGetterBattlerId;
/*0x160A3*/ u8 unk160A3;
/*0x160A4*/ u8 animArg1;
/*0x160A5*/ u8 animArg2;
@@ -458,8 +454,8 @@ struct BattleStruct /* 0x2000000 */
/*0x1610D*/ u8 unk1610D;
/*0x1610E*/ u8 unk1610E;
/*0x1610F*/ u8 unk1610F;
- /*0x16110*/ u8 sub80170DC_Tracker;
- /*0x16111*/ u8 sub80170DC_Bank;
+ /*0x16110*/ u8 wishPerishSongState;
+ /*0x16111*/ u8 wishPerishSongBattlerId;
/*0x16112*/ u8 unk16112;
/*0x16113*/ u8 unk16113;
/*0x16114*/ u8 unk16114;
@@ -634,17 +630,6 @@ void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
void BtlController_EmitResetActionMoveSelection(u8 a, u8 b); //0x36
void BtlController_EmitCmd55(u8 a, u8 b); //0x37
-#define REQUEST_ALL_BATTLE 0x0
-#define REQUEST_SPECIES_BATTLE 0x1
-#define REQUEST_HELDITEM_BATTLE 0x2
-#define REQUEST_MOVES_PP_BATTLE 0x3
-#define REQUEST_PPMOVE1_BATTLE 0x9
-#define REQUEST_PPMOVE2_BATTLE 0xA
-#define REQUEST_PPMOVE3_BATTLE 0xB
-#define REQUEST_PPMOVE4_BATTLE 0xC
-#define REQUEST_STATUS_BATTLE 0x28
-#define REQUEST_HP_BATTLE 0x2A
-
void MarkBattlerForControllerExec(u8 bank);
extern u8 gBattleTextBuff1[];
@@ -730,7 +715,7 @@ void debug_sub_8010800(void);
// asm/battle_3.o
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
-u8 UpdateTurnCounters(void);
+u8 DoFieldEndTurnEffects(void);
u8 TurnBasedEffects(void);
u8 HandleFaintedMonActions();
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 move);
@@ -740,7 +725,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget);
// asm/battle_4.o
void AI_CalcDmg(u8, u8);
u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def);
-u8 BankGetTurnOrder(u8 bank);
+u8 GetBattlerTurnOrderNum(u8 bank);
// asm/battle_5.o
void nullsub_91(void);
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
new file mode 100644
index 000000000..5dae99ecd
--- /dev/null
+++ b/include/battle_controllers.h
@@ -0,0 +1,196 @@
+#ifndef GUARD_BATTLE_CONTROLLERS_H
+#define GUARD_BATTLE_CONTROLLERS_H
+
+enum
+{
+ REQUEST_ALL_BATTLE,
+ REQUEST_SPECIES_BATTLE,
+ REQUEST_HELDITEM_BATTLE,
+ REQUEST_MOVES_PP_BATTLE,
+ REQUEST_MOVE1_BATTLE,
+ REQUEST_MOVE2_BATTLE,
+ REQUEST_MOVE3_BATTLE,
+ REQUEST_MOVE4_BATTLE,
+ REQUEST_PP_DATA_BATTLE,
+ REQUEST_PPMOVE1_BATTLE,
+ REQUEST_PPMOVE2_BATTLE,
+ REQUEST_PPMOVE3_BATTLE,
+ REQUEST_PPMOVE4_BATTLE,
+ REQUEST_UNUSED_13_BATTLE,
+ REQUEST_UNUSED_14_BATTLE,
+ REQUEST_UNUSED_15_BATTLE,
+ REQUEST_UNUSED_16_BATTLE,
+ REQUEST_OTID_BATTLE,
+ REQUEST_EXP_BATTLE,
+ REQUEST_HP_EV_BATTLE,
+ REQUEST_ATK_EV_BATTLE,
+ REQUEST_DEF_EV_BATTLE,
+ REQUEST_SPEED_EV_BATTLE,
+ REQUEST_SPATK_EV_BATTLE,
+ REQUEST_SPDEF_EV_BATTLE,
+ REQUEST_FRIENDSHIP_BATTLE,
+ REQUEST_POKERUS_BATTLE,
+ REQUEST_MET_LOCATION_BATTLE,
+ REQUEST_MET_LEVEL_BATTLE,
+ REQUEST_MET_GAME_BATTLE,
+ REQUEST_POKEBALL_BATTLE,
+ REQUEST_ALL_IVS_BATTLE,
+ REQUEST_HP_IV_BATTLE,
+ REQUEST_ATK_IV_BATTLE,
+ REQUEST_DEF_IV_BATTLE,
+ REQUEST_SPEED_IV_BATTLE,
+ REQUEST_SPATK_IV_BATTLE,
+ REQUEST_SPDEF_IV_BATTLE,
+ REQUEST_PERSONALITY_BATTLE,
+ REQUEST_CHECKSUM_BATTLE,
+ REQUEST_STATUS_BATTLE,
+ REQUEST_LEVEL_BATTLE,
+ REQUEST_HP_BATTLE,
+ REQUEST_MAX_HP_BATTLE,
+ REQUEST_ATK_BATTLE,
+ REQUEST_DEF_BATTLE,
+ REQUEST_SPEED_BATTLE,
+ REQUEST_SPATK_BATTLE,
+ REQUEST_SPDEF_BATTLE,
+ REQUEST_COOL_BATTLE,
+ REQUEST_BEAUTY_BATTLE,
+ REQUEST_CUTE_BATTLE,
+ REQUEST_SMART_BATTLE,
+ REQUEST_TOUGH_BATTLE,
+ REQUEST_SHEEN_BATTLE,
+ REQUEST_COOL_RIBBON_BATTLE,
+ REQUEST_BEAUTY_RIBBON_BATTLE,
+ REQUEST_CUTE_RIBBON_BATTLE,
+ REQUEST_SMART_RIBBON_BATTLE,
+ REQUEST_TOUGH_RIBBON_BATTLE,
+};
+
+enum
+{
+ CONTROLLER_GETMONDATA,
+ CONTROLLER_GETRAWMONDATA,
+ CONTROLLER_SETMONDATA,
+ CONTROLLER_SETRAWMONDATA,
+ CONTROLLER_LOADMONSPRITE,
+ CONTROLLER_SWITCHINANIM,
+ CONTROLLER_RETURNMONTOBALL,
+ CONTROLLER_DRAWTRAINERPIC,
+ CONTROLLER_TRAINERSLIDE,
+ CONTROLLER_TRAINERSLIDEBACK,
+ CONTROLLER_FAINTANIMATION,
+ CONTROLLER_PALETTEFADE,
+ CONTROLLER_SUCCESSBALLTHROWANIM,
+ CONTROLLER_BALLTHROWANIM,
+ CONTROLLER_PAUSE,
+ CONTROLLER_MOVEANIMATION,
+ CONTROLLER_PRINTSTRING,
+ CONTROLLER_PRINTSTRINGPLAYERONLY,
+ CONTROLLER_CHOOSEACTION,
+ CONTROLLER_UNKNOWNYESNOBOX,
+ CONTROLLER_CHOOSEMOVE,
+ CONTROLLER_OPENBAG,
+ CONTROLLER_CHOOSEPOKEMON,
+ CONTROLLER_23,
+ CONTROLLER_HEALTHBARUPDATE,
+ CONTROLLER_EXPUPDATE,
+ CONTROLLER_STATUSICONUPDATE,
+ CONTROLLER_STATUSANIMATION,
+ CONTROLLER_STATUSXOR,
+ CONTROLLER_DATATRANSFER,
+ CONTROLLER_DMA3TRANSFER,
+ CONTROLLER_31,
+ CONTROLLER_32,
+ CONTROLLER_TWORETURNVALUES,
+ CONTROLLER_CHOSENMONRETURNVALUE,
+ CONTROLLER_ONERETURNVALUE,
+ CONTROLLER_ONERETURNVALUE_DUPLICATE,
+ CONTROLLER_37,
+ CONTROLLER_38,
+ CONTROLLER_39,
+ CONTROLLER_40,
+ CONTROLLER_HITANIMATION,
+ CONTROLLER_42,
+ CONTROLLER_EFFECTIVENESSSOUND,
+ CONTROLLER_PLAYFANFAREORBGM,
+ CONTROLLER_FAINTINGCRY,
+ CONTROLLER_INTROSLIDE,
+ CONTROLLER_INTROTRAINERBALLTHROW,
+ CONTROLLER_DRAWPARTYSTATUSSUMMARY,
+ CONTROLLER_HIDEPARTYSTATUSSUMMARY,
+ CONTROLLER_ENDBOUNCE,
+ CONTROLLER_SPRITEINVISIBILITY,
+ CONTROLLER_BATTLEANIMATION,
+ CONTROLLER_LINKSTANDBYMSG,
+ CONTROLLER_RESETACTIONMOVESELECTION,
+ CONTROLLER_55,
+ /*new controllers should go here*/
+ CONTROLLER_TERMINATOR_NOP,
+ CONTROLLER_CMDS_COUNT
+};
+
+struct HpAndStatus
+{
+ u16 hp;
+ u32 status;
+};
+
+struct DisableStruct;
+
+// emitters
+void HandleLinkBattleSetup(void);
+void SetUpBattleVarsAndBirchPoochyena();
+void sub_800B950(void);
+void InitLinkBtlControllers(void);
+void PrepareBufferDataTransferLink(u8 a, u16, u8 *c);
+void sub_800C35C(void);
+void BtlController_EmitGetMonData(u8 a, u8 b, u8 c);
+void BtlController_EmitGetRawMonData(u8 a, u8 b, u8 c);
+void BtlController_EmitLoadMonSprite(u8 a);
+void BtlController_EmitSwitchInAnim(u8, u8, u8);
+void BtlController_EmitReturnMonToBall(u8 a, u8 b);
+void BtlController_EmitDrawTrainerPic(u8 a);
+void BtlController_EmitTrainerSlide(u8 a);
+void BtlController_EmitTrainerSlideBack(u8 a);
+void BtlController_EmitFaintAnimation(u8 a);
+void BtlController_EmitPaletteFade(u8 a);
+void BtlController_EmitSuccessBallThrowAnim(u8 a);
+void BtlController_EmitBallThrowAnim(u8 a, u8 b);
+void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
+void BtlController_EmitPrintString(u8 a, u16 b);
+void BtlController_EmitPrintSelectionString(u8 a, u16 stringID);
+void BtlController_EmitChooseAction(u8 a, u8 b, u16 c);
+void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d);
+void BtlController_EmitChooseItem(u8 a, u8 *b);
+void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
+void BtlController_EmitCmd23(u8 a);
+void BtlController_EmitHealthBarUpdate(u8 a, u16 b);
+void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c);
+void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c);
+void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c);
+void BtlController_EmitStatusXor(u8 a, u8 b);
+void BtlController_EmitDataTransfer(u8, u16, u8 *);
+void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c);
+void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c);
+void BtlController_EmitOneReturnValue(u8 a, u16 b);
+void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b);
+void BtlController_EmitCmd37(u8 a);
+void BtlController_EmitCmd38(u8 a, u8 b);
+void BtlController_EmitCmd39(u8 a);
+void BtlController_EmitCmd40(u8 a);
+void BtlController_EmitHitAnimation(u8 a);
+void BtlController_EmitCmd42(u8 a);
+void BtlController_EmitPlaySE(u8 a, u16 b);
+void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b);
+void BtlController_EmitFaintingCry(u8 a);
+void BtlController_EmitIntroSlide(u8 a, u8 b);
+void BtlController_EmitIntroTrainerBallThrow(u8 a);
+void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c); //0x30
+void BtlController_EmitHidePartyStatusSummary(u8 a);
+void BtlController_EmitEndBounceEffect(u8 a);
+void BtlController_EmitSpriteInvisibility(u8 a, u8 b);
+void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c);
+void BtlController_EmitLinkStandbyMsg(u8 a, u8 b);
+void BtlController_EmitResetActionMoveSelection(u8 a, u8 b);
+void BtlController_EmitCmd55(u8 a, u8 b);
+
+#endif // GUARD_BATTLE_CONTROLLERS_H \ No newline at end of file
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 030844ec3..36f54c6a8 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -52,7 +52,7 @@
void AI_CalcDmg(u8 bankAtk, u8 bankDef);
u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
-u8 BankGetTurnOrder(u8 bank);
+u8 GetBattlerTurnOrderNum(u8 bank);
void SetMoveEffect(bool8 primary, u8 certain);
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);
diff --git a/include/battle_util.h b/include/battle_util.h
index 3d178b487..385490438 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -1,7 +1,7 @@
#ifndef GUARD_BATTLE_UTIL_H
#define GUARD_BATTLE_UTIL_H
-#define BS_GET_TARGET 0
+#define BS_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_GET_SCRIPTING_BANK 10
@@ -15,7 +15,7 @@
#define MOVE_LIMITATION_DISABLED (1 << 2)
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
-#define MOVE_LIMITATION_IMPRISON (1 << 5)
+#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define ABILITYEFFECT_ON_SWITCHIN 0x0
#define ABILITYEFFECT_ENDTURN 0x1
@@ -47,6 +47,9 @@
#define ITEMEFFECT_MOVE_END 0x3
#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4
+#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
+#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
+
void TryClearRageStatuses(void);
void BattleScriptPush(const u8* BS_ptr);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
diff --git a/include/config.h b/include/config.h
index 796da359c..0046c3878 100644
--- a/include/config.h
+++ b/include/config.h
@@ -55,6 +55,16 @@
#define UNITS_METRIC
#endif
+// An option to use translations/encoding fixes for the Debug menus.
+// Selected by default for custom English debug roms.
+#ifndef DEBUG_TRANSLATE
+#if ENGLISH && DEBUG
+#define DEBUG_TRANSLATE 1
+#else
+#define DEBUG_TRANSLATE 0
+#endif
+#endif
+
// Fixed in Emerald.
// #define BUGFIX_SETMONIVS
diff --git a/include/constants/abilities.h b/include/constants/abilities.h
index 4e2c4056c..4ad54c86f 100644
--- a/include/constants/abilities.h
+++ b/include/constants/abilities.h
@@ -80,4 +80,6 @@
#define ABILITY_CACOPHONY 76
#define ABILITY_AIR_LOCK 77
+#define ABILITIES_COUNT 78
+
#endif // GUARD_CONSTANTS_ABILITIES_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
index c33e0abb4..5aa1772d1 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_CONSTANTS_BATTLE_CONSTANTS_H
-#define GUARD_CONSTANTS_BATTLE_CONSTANTS_H
+#ifndef GUARD_CONSTANTS_BATTLE_H
+#define GUARD_CONSTANTS_BATTLE_H
/*
* A battler may be in one of four positions on the field. The first bit determines
@@ -43,6 +43,7 @@
#define BIT_SIDE 1
#define BIT_FLANK 2
+// Battle Type Flags
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
#define BATTLE_TYPE_WILD 0x0004
@@ -63,67 +64,68 @@
#define SECRET_BASE_OPPONENT 0x400
#define LINK_BATTLE_OPPONENT 0x800
-#define BATTLE_WON 0x1
-#define BATTLE_LOST 0x2
-#define BATTLE_DREW 0x3
-#define BATTLE_RAN 0x4
-#define BATTLE_PLAYER_TELEPORTED 0x5
-#define BATTLE_POKE_FLED 0x6
-#define BATTLE_CAUGHT 0x7
-#define BATTLE_OUT_OF_BALLS 0x8
-#define BATTLE_OPPONENT_TELEPORTED 0xA
-
-#define OUTCOME_LINK_BATTLE_RUN 0x80
+// Battle Outcome defines
+#define B_OUTCOME_WON 0x1
+#define B_OUTCOME_LOST 0x2
+#define B_OUTCOME_DREW 0x3
+#define B_OUTCOME_RAN 0x4
+#define B_OUTCOME_PLAYER_TELEPORTED 0x5
+#define B_OUTCOME_MON_FLED 0x6
+#define B_OUTCOME_CAUGHT 0x7
+#define B_OUTCOME_NO_SAFARI_BALLS 0x8
+#define B_OUTCOME_FORFEITED 0x9
+#define B_OUTCOME_MON_TELEPORTED 0xA
+#define B_OUTCOME_LINK_BATTLE_RAN 0x80
// Non-volatile status conditions
// These persist remain outside of battle and after switching out
-#define STATUS1_NONE 0x0
-#define STATUS_SLEEP 0x7
-#define STATUS_POISON 0x8
-#define STATUS_BURN 0x10
-#define STATUS_FREEZE 0x20
-#define STATUS_PARALYSIS 0x40
-#define STATUS_TOXIC_POISON 0x80
-#define STATUS_TOXIC_COUNTER 0xF00
-#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON))
-#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
+#define STATUS1_NONE 0x0
+#define STATUS1_SLEEP 0x7
+#define STATUS1_POISON 0x8
+#define STATUS1_BURN 0x10
+#define STATUS1_FREEZE 0x20
+#define STATUS1_PARALYSIS 0x40
+#define STATUS1_TOXIC_POISON 0x80
+#define STATUS1_TOXIC_COUNTER 0xF00
+#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
+#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
// Volatile status ailments
// These are removed after exiting the battle or switching out
-#define STATUS2_CONFUSION 0x00000007
-#define STATUS2_FLINCHED 0x00000008
-#define STATUS2_UPROAR 0x00000070
-#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
-#define STATUS2_LOCK_CONFUSE 0x00000C00
-#define STATUS2_MULTIPLETURNS 0x00001000
-#define STATUS2_WRAPPED 0x0000E000
-#define STATUS2_INFATUATION 0x000F0000
+#define STATUS2_CONFUSION 0x00000007
+#define STATUS2_FLINCHED 0x00000008
+#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
+#define STATUS2_LOCK_CONFUSE 0x00000C00
+#define STATUS2_MULTIPLETURNS 0x00001000
+#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
-#define STATUS2_FOCUS_ENERGY 0x00100000
-#define STATUS2_TRANSFORMED 0x00200000
-#define STATUS2_RECHARGE 0x00400000
-#define STATUS2_RAGE 0x00800000
-#define STATUS2_SUBSTITUTE 0x01000000
-#define STATUS2_DESTINY_BOND 0x02000000
-#define STATUS2_ESCAPE_PREVENTION 0x04000000
-#define STATUS2_NIGHTMARE 0x08000000
-#define STATUS2_CURSED 0x10000000
-#define STATUS2_FORESIGHT 0x20000000
-#define STATUS2_DEFENSE_CURL 0x40000000
-#define STATUS2_TORMENT 0x80000000
+#define STATUS2_FOCUS_ENERGY 0x00100000
+#define STATUS2_TRANSFORMED 0x00200000
+#define STATUS2_RECHARGE 0x00400000
+#define STATUS2_RAGE 0x00800000
+#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
+#define STATUS2_ESCAPE_PREVENTION 0x04000000
+#define STATUS2_NIGHTMARE 0x08000000
+#define STATUS2_CURSED 0x10000000
+#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
// Seems like per-battler statuses. Not quite sure how to categorize these
-#define STATUS3_LEECHSEED_BANK 0x3
+#define STATUS3_LEECHSEED_BATTLER 0x3
#define STATUS3_LEECHSEED 0x4
-#define STATUS3_ALWAYS_HITS 0x18 //two bits
+#define STATUS3_ALWAYS_HITS 0x18 // two bits
#define STATUS3_PERISH_SONG 0x20
#define STATUS3_ON_AIR 0x40
#define STATUS3_UNDERGROUND 0x80
#define STATUS3_MINIMIZED 0x100
#define STATUS3_ROOTED 0x400
#define STATUS3_CHARGED_UP 0x200
-#define STATUS3_YAWN 0x1800 //two bits
-#define STATUS3_IMPRISIONED 0x2000
+#define STATUS3_YAWN 0x1800 // two bits
+#define STATUS3_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
@@ -131,7 +133,7 @@
#define STATUS3_UNDERWATER 0x40000
#define STATUS3_INTIMIDATE_POKES 0x80000
#define STATUS3_TRACE 0x100000
-#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
+#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
// Not really sure what a "hitmarker" is.
#define HITMARKER_x10 0x00000010
@@ -142,7 +144,7 @@
#define HITMARKER_NO_ATTACKSTRING 0x00000200
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
#define HITMARKER_NO_PPDEDUCT 0x00000800
-#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_SWAP_ATTACKER_TARGET 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
#define HITMARKER_RUN 0x00008000
@@ -157,9 +159,9 @@
#define HITMARKER_GRUDGE 0x01000000
#define HITMARKER_OBEYS 0x02000000
#define HITMARKER_x4000000 0x04000000
-#define HITMARKER_x8000000 0x08000000
-#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
-#define HITMARKER_UNK(bank) ((0x10000000 << bank))
+#define HITMARKER_CHARGING 0x08000000
+#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
+#define HITMARKER_UNK(battler) (0x10000000 << battler)
// Per-side statuses that affect an entire party
#define SIDE_STATUS_REFLECT (1 << 0)
@@ -235,7 +237,7 @@
#define MOVE_EFFECT_RAPIDSPIN 0x23
#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
-#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
+#define MOVE_EFFECT_RECOIL_33 0x26
#define MOVE_EFFECT_ATK_PLUS_2 0x27
#define MOVE_EFFECT_DEF_PLUS_2 0x28
#define MOVE_EFFECT_SPD_PLUS_2 0x29
@@ -322,9 +324,7 @@
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
-#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
-
-#define BS_GET_TARGET 0
+#define BS_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_GET_gBank1 3
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 0995d5309..f126d222a 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -191,12 +191,12 @@
#define METATILE_MauvilleGym_PoleBottom_Off 0x243
// gTileset_MossdeepGym
-#define METATILE_MossdeepGym_Obelisk_Top 0x204
-#define METATILE_MossdeepGym_Obelisk_Base 0x20C
-#define METATILE_MossdeepGym_Wall_LeftCorner 0x20D
-#define METATILE_MossdeepGym_OuterWall_RightCorner 0x205
-#define METATILE_MossdeepGym_Empty0 0x238
-#define METATILE_MossdeepGym_Empty1 0x239
+#define METATILE_MossdeepGym_RedArrow_Right 0x204
+#define METATILE_MossdeepGym_RedArrow_Left 0x20C
+#define METATILE_MossdeepGym_RedArrow_Up 0x20D
+#define METATILE_MossdeepGym_RedArrow_Down 0x205
+#define METATILE_MossdeepGym_Switch_Up 0x238
+#define METATILE_MossdeepGym_Switch_Down 0x239
// gTileset_Building
#define METATILE_Building_TV_Off 0x002
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
new file mode 100644
index 000000000..8e7c01eb5
--- /dev/null
+++ b/include/constants/pokemon.h
@@ -0,0 +1,144 @@
+#ifndef GUARD_CONSTANTS_POKEMON_H
+#define GUARD_CONSTANTS_POKEMON_H
+
+#define MON_DATA_PERSONALITY 0
+#define MON_DATA_OT_ID 1
+#define MON_DATA_NICKNAME 2
+#define MON_DATA_LANGUAGE 3
+#define MON_DATA_SANITY_BIT1 4
+#define MON_DATA_SANITY_BIT2 5
+#define MON_DATA_SANITY_BIT3 6
+#define MON_DATA_OT_NAME 7
+#define MON_DATA_MARKINGS 8
+#define MON_DATA_CHECKSUM 9
+#define MON_DATA_10 10
+#define MON_DATA_SPECIES 11
+#define MON_DATA_HELD_ITEM 12
+#define MON_DATA_MOVE1 13
+#define MON_DATA_MOVE2 14
+#define MON_DATA_MOVE3 15
+#define MON_DATA_MOVE4 16
+#define MON_DATA_PP1 17
+#define MON_DATA_PP2 18
+#define MON_DATA_PP3 19
+#define MON_DATA_PP4 20
+#define MON_DATA_PP_BONUSES 21
+#define MON_DATA_COOL 22
+#define MON_DATA_BEAUTY 23
+#define MON_DATA_CUTE 24
+#define MON_DATA_EXP 25
+#define MON_DATA_HP_EV 26
+#define MON_DATA_ATK_EV 27
+#define MON_DATA_DEF_EV 28
+#define MON_DATA_SPEED_EV 29
+#define MON_DATA_SPATK_EV 30
+#define MON_DATA_SPDEF_EV 31
+#define MON_DATA_FRIENDSHIP 32
+#define MON_DATA_SMART 33
+#define MON_DATA_POKERUS 34
+#define MON_DATA_MET_LOCATION 35
+#define MON_DATA_MET_LEVEL 36
+#define MON_DATA_MET_GAME 37
+#define MON_DATA_POKEBALL 38
+#define MON_DATA_HP_IV 39
+#define MON_DATA_ATK_IV 40
+#define MON_DATA_DEF_IV 41
+#define MON_DATA_SPEED_IV 42
+#define MON_DATA_SPATK_IV 43
+#define MON_DATA_SPDEF_IV 44
+#define MON_DATA_IS_EGG 45
+#define MON_DATA_ALT_ABILITY 46
+#define MON_DATA_TOUGH 47
+#define MON_DATA_SHEEN 48
+#define MON_DATA_OT_GENDER 49
+#define MON_DATA_COOL_RIBBON 50
+#define MON_DATA_BEAUTY_RIBBON 51
+#define MON_DATA_CUTE_RIBBON 52
+#define MON_DATA_SMART_RIBBON 53
+#define MON_DATA_TOUGH_RIBBON 54
+#define MON_DATA_STATUS 55
+#define MON_DATA_LEVEL 56
+#define MON_DATA_HP 57
+#define MON_DATA_MAX_HP 58
+#define MON_DATA_ATK 59
+#define MON_DATA_DEF 60
+#define MON_DATA_SPEED 61
+#define MON_DATA_SPATK 62
+#define MON_DATA_SPDEF 63
+#define MON_DATA_MAIL 64
+#define MON_DATA_SPECIES2 65
+#define MON_DATA_IVS 66
+#define MON_DATA_CHAMPION_RIBBON 67
+#define MON_DATA_WINNING_RIBBON 68
+#define MON_DATA_VICTORY_RIBBON 69
+#define MON_DATA_ARTIST_RIBBON 70
+#define MON_DATA_EFFORT_RIBBON 71
+#define MON_DATA_GIFT_RIBBON_1 72
+#define MON_DATA_GIFT_RIBBON_2 73
+#define MON_DATA_GIFT_RIBBON_3 74
+#define MON_DATA_GIFT_RIBBON_4 75
+#define MON_DATA_GIFT_RIBBON_5 76
+#define MON_DATA_GIFT_RIBBON_6 77
+#define MON_DATA_GIFT_RIBBON_7 78
+#define MON_DATA_FATEFUL_ENCOUNTER 79
+#define MON_DATA_KNOWN_MOVES 80
+#define MON_DATA_RIBBON_COUNT 81
+#define MON_DATA_RIBBONS 82
+#define MON_DATA_83 83
+#define MON_DATA_ATK2 84
+#define MON_DATA_DEF2 85
+#define MON_DATA_SPEED2 86
+#define MON_DATA_SPATK2 87
+#define MON_DATA_SPDEF2 88
+
+#define MIN_LEVEL 1
+#define MAX_LEVEL 100
+
+#define MON_MALE 0x00
+#define MON_FEMALE 0xFE
+#define MON_GENDERLESS 0xFF
+
+#define TYPE_NORMAL 0x00
+#define TYPE_FIGHTING 0x01
+#define TYPE_FLYING 0x02
+#define TYPE_POISON 0x03
+#define TYPE_GROUND 0x04
+#define TYPE_ROCK 0x05
+#define TYPE_BUG 0x06
+#define TYPE_GHOST 0x07
+#define TYPE_STEEL 0x08
+#define TYPE_MYSTERY 0x09
+#define TYPE_FIRE 0x0a
+#define TYPE_WATER 0x0b
+#define TYPE_GRASS 0x0c
+#define TYPE_ELECTRIC 0x0d
+#define TYPE_PSYCHIC 0x0e
+#define TYPE_ICE 0x0f
+#define TYPE_DRAGON 0x10
+#define TYPE_DARK 0x11
+#define NUMBER_OF_MON_TYPES 0x12
+
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1 // unused
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 // unused
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
+#define STATUS_PRIMARY_NONE 0x0
+#define STATUS_PRIMARY_POISON 0x1
+#define STATUS_PRIMARY_PARALYSIS 0x2
+#define STATUS_PRIMARY_SLEEP 0x3
+#define STATUS_PRIMARY_FREEZE 0x4
+#define STATUS_PRIMARY_BURN 0x5
+#define STATUS_PRIMARY_POKERUS 0x6
+#define STATUS_PRIMARY_FAINTED 0x7
+
+#define MAX_TOTAL_EVS 510
+#define NUM_STATS 6
+#define UNOWN_FORM_COUNT 28
+
+#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 856aba069..de62e4e8a 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -172,25 +172,26 @@
#define VAR_STEVENS_HOUSE_STATE 0x40C6
#define VAR_OLDALE_STATE 0x40C7
+#define SPECIAL_VARS_START 0x8000
// special vars
// They are commonly used as parameters to commands, or return values from commands.
-#define VAR_SPECIAL_0 0x8000
-#define VAR_SPECIAL_1 0x8001
-#define VAR_SPECIAL_2 0x8002
-#define VAR_SPECIAL_3 0x8003
-#define VAR_SPECIAL_4 0x8004
-#define VAR_SPECIAL_5 0x8005
-#define VAR_SPECIAL_6 0x8006
-#define VAR_SPECIAL_7 0x8007
-#define VAR_SPECIAL_8 0x8008
-#define VAR_SPECIAL_9 0x8009
-#define VAR_SPECIAL_A 0x800A
-#define VAR_SPECIAL_B 0x800B
-#define FACING 0x800C
-#define RESULT 0x800D
-#define ITEM_ID 0x800E
-#define LAST_TALKED 0x800F
-#define CONTEST_RANK 0x8010
-#define CONTEST_CATEGORY 0x8011
+#define VAR_0x8000 0x8000
+#define VAR_0x8001 0x8001
+#define VAR_0x8002 0x8002
+#define VAR_0x8003 0x8003
+#define VAR_0x8004 0x8004
+#define VAR_0x8005 0x8005
+#define VAR_0x8006 0x8006
+#define VAR_0x8007 0x8007
+#define VAR_0x8008 0x8008
+#define VAR_0x8009 0x8009
+#define VAR_0x800A 0x800A
+#define VAR_0x800B 0x800B
+#define VAR_FACING 0x800C
+#define VAR_RESULT 0x800D
+#define VAR_ITEM_ID 0x800E
+#define VAR_LAST_TALKED 0x800F
+#define VAR_CONTEST_RANK 0x8010
+#define VAR_CONTEST_CATEGORY 0x8011
#endif // GUARD_CONSTANTS_VARS_H
diff --git a/include/global.h b/include/global.h
index 1ccc92bb1..b9df3adff 100644
--- a/include/global.h
+++ b/include/global.h
@@ -20,6 +20,20 @@
#define INCBIN_S32 INCBIN
#endif
+// For debug menu translations.
+// DTR("こんにちは", "Hello") will expand to "Hello" with DEBUG_TRANSLATE,
+// or "こんにちは" if not.
+// The KANA macro will wrap Japanese text with encoding markers to
+// prevent mojibake while they are being translated.
+
+#if DEBUG_TRANSLATE
+#define DTR(japanese, english) _(english)
+#define KANA(txt) _("{JPN}" txt "{ENG}")
+#else
+#define DTR(japanese, english) _(japanese)
+#define KANA(txt) _(txt)
+#endif
+
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
diff --git a/include/macros/event.inc b/include/macros/event.inc
index 8b2d587c9..7250ec5ca 100644
--- a/include/macros/event.inc
+++ b/include/macros/event.inc
@@ -1449,11 +1449,11 @@
.endm
.macro switch var
- copyvar VAR_SPECIAL_0, \var
+ copyvar VAR_0x8000, \var
.endm
.macro case condition, dest
- compare_var_to_value VAR_SPECIAL_0, \condition
+ compare_var_to_value VAR_0x8000, \condition
goto_if_eq \dest
.endm
@@ -1469,12 +1469,12 @@
NO = 0
.macro giveitem_std item, amount=1, function=0
- setorcopyvar VAR_SPECIAL_0, \item
- setorcopyvar VAR_SPECIAL_1, \amount
+ setorcopyvar VAR_0x8000, \item
+ setorcopyvar VAR_0x8001, \amount
callstd \function
.endm
.macro givedecoration_std decoration
- setorcopyvar VAR_SPECIAL_0, \decoration
+ setorcopyvar VAR_0x8000, \decoration
callstd 7
.endm
diff --git a/include/overworld.h b/include/overworld.h
index 5d9d474ea..0ab281734 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -127,7 +127,7 @@ void CB2_ReturnToFieldLink(void);
// sub_805465C
void c2_exit_to_overworld_1_sub_8080DEC(void);
// sub_80546B8
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
void sub_80546F0(void);
// sub_805470C
void CB2_ContinueSavedGame(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 67816b8f0..df2d42522 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -1,147 +1,9 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
+#include "constants/pokemon.h"
#include "sprite.h"
-#define MON_DATA_PERSONALITY 0
-#define MON_DATA_OT_ID 1
-#define MON_DATA_NICKNAME 2
-#define MON_DATA_LANGUAGE 3
-#define MON_DATA_SANITY_BIT1 4
-#define MON_DATA_SANITY_BIT2 5
-#define MON_DATA_SANITY_BIT3 6
-#define MON_DATA_OT_NAME 7
-#define MON_DATA_MARKINGS 8
-#define MON_DATA_CHECKSUM 9
-#define MON_DATA_10 10
-#define MON_DATA_SPECIES 11
-#define MON_DATA_HELD_ITEM 12
-#define MON_DATA_MOVE1 13
-#define MON_DATA_MOVE2 14
-#define MON_DATA_MOVE3 15
-#define MON_DATA_MOVE4 16
-#define MON_DATA_PP1 17
-#define MON_DATA_PP2 18
-#define MON_DATA_PP3 19
-#define MON_DATA_PP4 20
-#define MON_DATA_PP_BONUSES 21
-#define MON_DATA_COOL 22
-#define MON_DATA_BEAUTY 23
-#define MON_DATA_CUTE 24
-#define MON_DATA_EXP 25
-#define MON_DATA_HP_EV 26
-#define MON_DATA_ATK_EV 27
-#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPEED_EV 29
-#define MON_DATA_SPATK_EV 30
-#define MON_DATA_SPDEF_EV 31
-#define MON_DATA_FRIENDSHIP 32
-#define MON_DATA_SMART 33
-#define MON_DATA_POKERUS 34
-#define MON_DATA_MET_LOCATION 35
-#define MON_DATA_MET_LEVEL 36
-#define MON_DATA_MET_GAME 37
-#define MON_DATA_POKEBALL 38
-#define MON_DATA_HP_IV 39
-#define MON_DATA_ATK_IV 40
-#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPEED_IV 42
-#define MON_DATA_SPATK_IV 43
-#define MON_DATA_SPDEF_IV 44
-#define MON_DATA_IS_EGG 45
-#define MON_DATA_ALT_ABILITY 46
-#define MON_DATA_TOUGH 47
-#define MON_DATA_SHEEN 48
-#define MON_DATA_OT_GENDER 49
-#define MON_DATA_COOL_RIBBON 50
-#define MON_DATA_BEAUTY_RIBBON 51
-#define MON_DATA_CUTE_RIBBON 52
-#define MON_DATA_SMART_RIBBON 53
-#define MON_DATA_TOUGH_RIBBON 54
-#define MON_DATA_STATUS 55
-#define MON_DATA_LEVEL 56
-#define MON_DATA_HP 57
-#define MON_DATA_MAX_HP 58
-#define MON_DATA_ATK 59
-#define MON_DATA_DEF 60
-#define MON_DATA_SPEED 61
-#define MON_DATA_SPATK 62
-#define MON_DATA_SPDEF 63
-#define MON_DATA_MAIL 64
-#define MON_DATA_SPECIES2 65
-#define MON_DATA_IVS 66
-#define MON_DATA_CHAMPION_RIBBON 67
-#define MON_DATA_WINNING_RIBBON 68
-#define MON_DATA_VICTORY_RIBBON 69
-#define MON_DATA_ARTIST_RIBBON 70
-#define MON_DATA_EFFORT_RIBBON 71
-#define MON_DATA_GIFT_RIBBON_1 72
-#define MON_DATA_GIFT_RIBBON_2 73
-#define MON_DATA_GIFT_RIBBON_3 74
-#define MON_DATA_GIFT_RIBBON_4 75
-#define MON_DATA_GIFT_RIBBON_5 76
-#define MON_DATA_GIFT_RIBBON_6 77
-#define MON_DATA_GIFT_RIBBON_7 78
-#define MON_DATA_FATEFUL_ENCOUNTER 79
-#define MON_DATA_KNOWN_MOVES 80
-#define MON_DATA_RIBBON_COUNT 81
-#define MON_DATA_RIBBONS 82
-#define MON_DATA_83 83
-#define MON_DATA_ATK2 84
-#define MON_DATA_DEF2 85
-#define MON_DATA_SPEED2 86
-#define MON_DATA_SPATK2 87
-#define MON_DATA_SPDEF2 88
-
-#define MAX_LEVEL 100
-
-#define MON_MALE 0x00
-#define MON_FEMALE 0xFE
-#define MON_GENDERLESS 0xFF
-
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-#define NUMBER_OF_MON_TYPES 0x12
-
-#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
-#define FRIENDSHIP_EVENT_VITAMIN 0x1 // unused
-#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 // unused
-#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
-#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
-#define FRIENDSHIP_EVENT_WALKING 0x5
-#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
-#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
-#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
-
-#define STATUS_PRIMARY_NONE 0x0
-#define STATUS_PRIMARY_POISON 0x1
-#define STATUS_PRIMARY_PARALYSIS 0x2
-#define STATUS_PRIMARY_SLEEP 0x3
-#define STATUS_PRIMARY_FREEZE 0x4
-#define STATUS_PRIMARY_BURN 0x5
-#define STATUS_PRIMARY_POKERUS 0x6
-#define STATUS_PRIMARY_FAINTED 0x7
-
-#define MAX_TOTAL_EVS 510
-#define NUM_STATS 6
-#define UNOWN_FORM_COUNT 28
-
enum {
EGG_GROUP_NONE,
EGG_GROUP_MONSTER,
diff --git a/include/rom3.h b/include/rom3.h
deleted file mode 100644
index 2b889c78b..000000000
--- a/include/rom3.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef GUARD_ROM3_H
-#define GUARD_ROM3_H
-
-struct HpAndStatus
-{
- u16 hp;
- u32 status;
-};
-
-struct DisableStruct;
-
-void sub_800B858(void);
-void SetUpBattleVarsAndBirchPoochyena();
-void sub_800B950(void);
-void sub_800B9A8(void);
-void sub_800BA78(void);
-void sub_800BD54(void);
-void CreateTasksForSendRecvLinkBuffers(void);
-void PrepareBufferDataTransferLink(u8 a, u16, u8 *c);
-void Task_HandleSendLinkBuffersData(u8);
-void sub_800C35C(void);
-void Task_HandleCopyReceivedLinkBuffersData(u8);
-void BtlController_EmitGetMonData(u8 a, u8 b, u8 c);
-void BtlController_EmitGetRawMonData(u8 a, u8 b, u8 c);
-void BtlController_EmitLoadMonSprite(u8 a);
-void BtlController_EmitSwitchInAnim(u8, u8, u8);
-void BtlController_EmitReturnMonToBall(u8 a, u8 b);
-void BtlController_EmitDrawTrainerPic(u8 a);
-void BtlController_EmitTrainerSlide(u8 a);
-void BtlController_EmitTrainerSlideBack(u8 a);
-void BtlController_EmitFaintAnimation(u8 a);
-void BtlController_EmitPaletteFade(u8 a);
-void BtlController_EmitSuccessBallThrowAnim(u8 a);
-void BtlController_EmitBallThrowAnim(u8 a, u8 b);
-void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
-void BtlController_EmitPrintString(u8 a, u16 b);
-void BtlController_EmitPrintSelectionString(u8 a, u16 stringID);
-void BtlController_EmitChooseAction(u8 a, u8 b, u16 c);
-void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d);
-void BtlController_EmitChooseItem(u8 a, u8 *b);
-void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
-void BtlController_EmitCmd23(u8 a);
-void BtlController_EmitHealthBarUpdate(u8 a, u16 b);
-void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c);
-void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c);
-void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c);
-void BtlController_EmitStatusXor(u8 a, u8 b);
-void BtlController_EmitDataTransfer(u8, u16, u8 *);
-void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c);
-void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c);
-void BtlController_EmitOneReturnValue(u8 a, u16 b);
-void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b);
-void BtlController_EmitCmd37(u8 a);
-void BtlController_EmitCmd38(u8 a, u8 b);
-void BtlController_EmitCmd39(u8 a);
-void BtlController_EmitCmd40(u8 a);
-void BtlController_EmitHitAnimation(u8 a);
-void BtlController_EmitCmd42(u8 a);
-void BtlController_EmitPlaySE(u8 a, u16 b);
-void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b);
-void BtlController_EmitFaintingCry(u8 a);
-void BtlController_EmitIntroSlide(u8 a, u8 b);
-void BtlController_EmitIntroTrainerBallThrow(u8 a);
-void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c); //0x30
-void BtlController_EmitHidePartyStatusSummary(u8 a);
-void BtlController_EmitEndBounceEffect(u8 a);
-void BtlController_EmitSpriteInvisibility(u8 a, u8 b);
-void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c);
-void BtlController_EmitLinkStandbyMsg(u8 a, u8 b);
-void BtlController_EmitResetActionMoveSelection(u8 a, u8 b);
-void BtlController_EmitCmd55(u8 a, u8 b);
-
-#endif // GUARD_ROM3_H