From 0ba4eb4780805e3d6f9fd1739cbdcd2f280b8c5d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 30 Jul 2019 22:11:27 -0500 Subject: misc --- include/battle.h | 11 ---- include/battle_controllers.h | 131 ++++++++++++++++++++++++++++++++++++++++++ include/constants/abilities.h | 2 + include/constants/battle.h | 108 +++++++++++++++++----------------- 4 files changed, 188 insertions(+), 64 deletions(-) create mode 100644 include/battle_controllers.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index ac12533e3..bc9307f57 100644 --- a/include/battle.h +++ b/include/battle.h @@ -681,17 +681,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[]; diff --git a/include/battle_controllers.h b/include/battle_controllers.h new file mode 100644 index 000000000..b5f2f886d --- /dev/null +++ b/include/battle_controllers.h @@ -0,0 +1,131 @@ +#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 +}; + +#endif \ No newline at end of file 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..5835bf439 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 -- cgit v1.2.3 From b74a0c3122113b5ebef469739745e2b8fd420c50 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jul 2019 00:13:42 -0500 Subject: resolve more battle system differences --- include/battle.h | 16 ++++----- include/battle_controllers.h | 67 +++++++++++++++++++++++++++++++++++- include/battle_script_commands.h | 2 +- include/battle_util.h | 5 ++- include/constants/battle.h | 4 +-- include/rom3.h | 73 ---------------------------------------- 6 files changed, 78 insertions(+), 89 deletions(-) delete mode 100644 include/rom3.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index bc9307f57..d7396da58 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 @@ -310,7 +306,7 @@ struct BattleStruct /* 0x2000000 */ /*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; @@ -408,7 +404,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; @@ -776,7 +772,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 index b5f2f886d..5dae99ecd 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -128,4 +128,69 @@ enum CONTROLLER_CMDS_COUNT }; -#endif \ No newline at end of file +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..e116eab16 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 @@ -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/battle.h b/include/constants/battle.h index 5835bf439..5aa1772d1 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -324,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/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 -- cgit v1.2.3 From bbd177fa20a3f53a4815061c524a14e959de6783 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jul 2019 18:29:13 -0500 Subject: fix more emerald differences --- include/battle.h | 10 +++++----- include/battle_util.h | 2 +- include/overworld.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index d7396da58..81c39584e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -293,13 +293,13 @@ 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; @@ -501,8 +501,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; @@ -762,7 +762,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); diff --git a/include/battle_util.h b/include/battle_util.h index e116eab16..385490438 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -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 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); -- cgit v1.2.3 From a631973b73977f33ef98042abca9fca287792439 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Fri, 23 Aug 2019 20:44:01 -0400 Subject: [WIP] English Debug menu translations! (Plus some build system fixes) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I'm back!            す Éß テ-ブ↑& ÒÛªù! (かなテーブルを捨てろよ!/Throw away the kana table!) When compiled in English with DEBUG, instead of óじばÌ (mojibake), you now get actual English translations! No more switching from the game, to the kana chart, and if you don't know Japanese, Google Translate, just to read one sentence. Additionally, the few unknown translations should use proper encoding or Romaji. I decided to use a nicer macro system: static const u8 sStrHello[] = DTR("こんにちは", "Hello"); This prevents ifdef HELL, as the mixed Japanese and English would be messy. Additionally, some special character issues were corrected. Things untranslated/bugs: - Tomomichi's dummy functions. Of course, they don't do much. - The title screen battle menu. This uses a Gen 2 style tile rendering and the way it is rendered is incredibly overcomplicated. - A few phrases which I couldn't get a clear translation for. I don't know much Japanese lol. - Song names. Just tedious with the limited buffer size. - A few layout issues. Some dimensions should be tweaked to avoid text box ovetflows. - Potential buffer overflows, which I want to try to avoid - (ASan for GBA? :morphon:) - While I use the DEBUG_TRANSLATE flag (automatic with ENGLISH && DEBUG) for C code, the asm data only checks for ENGLISH && DEBUG. Additionally, they are ugly. - Haven't tested all builds yet. - Some code formatting issues. I also made it so this will compile with the system preprocessor (including Clang), and my agbcc binutils (which will attempt to be selected automatically if you don't have DKP). Clang needs a few flags (it can't do asm enums with line numbers and it does trigraphs in standard mode), but it is no longer flipping out. I am going to restart my build system project. It was getting way off track, and ucpp was too difficult to maintain (one of the main reasons for the silence). --- include/config.h | 10 ++++++++++ include/global.h | 14 ++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'include') 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/global.h b/include/global.h index d64cf987d..9e8d2e115 100644 --- a/include/global.h +++ b/include/global.h @@ -18,6 +18,20 @@ #define INCBIN_S32 {0} #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(""); -- cgit v1.2.3 From fc2926aa469de176403d0ccaba3ad503c65ff98e Mon Sep 17 00:00:00 2001 From: garak Date: Mon, 30 Sep 2019 19:18:06 -0400 Subject: add fishing rod groups to encounter json --- include/constants/pokemon.h | 144 ++++++++++++++++++++++++++++++++++++++++++++ include/pokemon.h | 140 +----------------------------------------- 2 files changed, 145 insertions(+), 139 deletions(-) create mode 100644 include/constants/pokemon.h (limited to 'include') 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/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, -- cgit v1.2.3 From 3773318935a8a94a8d48fe76f3868d3826c933b7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 15 Oct 2019 00:47:37 -0400 Subject: Fix misnamed Mossdeep Gym metatiles --- include/constants/metatile_labels.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'include') 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 -- cgit v1.2.3 From 11170ce90c0baf77b196e378441d25e7f16e2cf3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 1 Oct 2019 02:30:10 -0400 Subject: Sync specialvars with pokeemerald --- include/constants/vars.h | 37 +++++++++++++++++++------------------ include/macros/event.inc | 10 +++++----- 2 files changed, 24 insertions(+), 23 deletions(-) (limited to 'include') 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/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 -- cgit v1.2.3