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/constants/abilities.h2
-rw-r--r--include/constants/battle.h112
-rw-r--r--include/overworld.h2
-rw-r--r--include/rom3.h73
8 files changed, 272 insertions, 159 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/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/overworld.h b/include/overworld.h
index 9d00194be..958eb57ff 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/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