Merge branch 'master' into record_mixing

This commit is contained in:
PikalaxALT
2018-02-11 20:12:40 -05:00
6672 changed files with 937954 additions and 212286 deletions

View File

@@ -1,81 +0,0 @@
enum
{
ABILITY_NONE,
ABILITY_STENCH,
ABILITY_DRIZZLE,
ABILITY_SPEED_BOOST,
ABILITY_BATTLE_ARMOR,
ABILITY_STURDY,
ABILITY_DAMP,
ABILITY_LIMBER,
ABILITY_SAND_VEIL,
ABILITY_STATIC,
ABILITY_VOLT_ABSORB,
ABILITY_WATER_ABSORB,
ABILITY_OBLIVIOUS,
ABILITY_CLOUD_NINE,
ABILITY_COMPOUND_EYES,
ABILITY_INSOMNIA,
ABILITY_COLOR_CHANGE,
ABILITY_IMMUNITY,
ABILITY_FLASH_FIRE,
ABILITY_SHIELD_DUST,
ABILITY_OWN_TEMPO,
ABILITY_SUCTION_CUPS,
ABILITY_INTIMIDATE,
ABILITY_SHADOW_TAG,
ABILITY_ROUGH_SKIN,
ABILITY_WONDER_GUARD,
ABILITY_LEVITATE,
ABILITY_EFFECT_SPORE,
ABILITY_SYNCHRONIZE,
ABILITY_CLEAR_BODY,
ABILITY_NATURAL_CURE,
ABILITY_LIGHTNING_ROD,
ABILITY_SERENE_GRACE,
ABILITY_SWIFT_SWIM,
ABILITY_CHLOROPHYLL,
ABILITY_ILLUMINATE,
ABILITY_TRACE,
ABILITY_HUGE_POWER,
ABILITY_POISON_POINT,
ABILITY_INNER_FOCUS,
ABILITY_MAGMA_ARMOR,
ABILITY_WATER_VEIL,
ABILITY_MAGNET_PULL,
ABILITY_SOUNDPROOF,
ABILITY_RAIN_DISH,
ABILITY_SAND_STREAM,
ABILITY_PRESSURE,
ABILITY_THICK_FAT,
ABILITY_EARLY_BIRD,
ABILITY_FLAME_BODY,
ABILITY_RUN_AWAY,
ABILITY_KEEN_EYE,
ABILITY_HYPER_CUTTER,
ABILITY_PICKUP,
ABILITY_TRUANT,
ABILITY_HUSTLE,
ABILITY_CUTE_CHARM,
ABILITY_PLUS,
ABILITY_MINUS,
ABILITY_FORECAST,
ABILITY_STICKY_HOLD,
ABILITY_SHED_SKIN,
ABILITY_GUTS,
ABILITY_MARVEL_SCALE,
ABILITY_LIQUID_OOZE,
ABILITY_OVERGROW,
ABILITY_BLAZE,
ABILITY_TORRENT,
ABILITY_SWARM,
ABILITY_ROCK_HEAD,
ABILITY_DROUGHT,
ABILITY_ARENA_TRAP,
ABILITY_VITAL_SPIRIT,
ABILITY_WHITE_SMOKE,
ABILITY_PURE_POWER,
ABILITY_SHELL_ARMOR,
ABILITY_CACOPHONY,
ABILITY_AIR_LOCK
};

View File

@@ -2,67 +2,18 @@
#define GUARD_BATTLE_H
// should they be included here or included individually by every file?
#include "constants/battle.h"
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_2.h"
#include "battle_main.h"
#include "battle_ai_switch_items.h"
#include "battle_gfx_sfx_util.h"
#include "battle_util2.h"
#include "battle_bg.h"
/*
Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
Each bank has a value consisting of two bits.
0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side.
0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.)
*/
#define BATTLE_BANKS_COUNT 4
#define IDENTITY_PLAYER_MON1 0
#define IDENTITY_OPPONENT_MON1 1
#define IDENTITY_PLAYER_MON2 2
#define IDENTITY_OPPONENT_MON2 3
#define SIDE_PLAYER 0x0
#define SIDE_OPPONENT 0x1
#define BIT_SIDE 0x1
#define BIT_MON 0x2
#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank]))
#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE))
#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
#define BATTLE_TYPE_WILD 0x0004
#define BATTLE_TYPE_TRAINER 0x0008
#define BATTLE_TYPE_FIRST_BATTLE 0x0010
#define BATTLE_TYPE_20 0x0020
#define BATTLE_TYPE_MULTI 0x0040
#define BATTLE_TYPE_SAFARI 0x0080
#define BATTLE_TYPE_BATTLE_TOWER 0x0100
#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
#define BATTLE_TYPE_ROAMER 0x0400
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
#define BATTLE_TYPE_DOME 0x10000
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
#define BATTLE_TYPE_x100000 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
#define BATTLE_TYPE_x2000000 0x2000000
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYORGE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
@@ -70,165 +21,37 @@
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000)
#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_SAFARI_OUT_OF_BALLS 0x8
#define BATTLE_FORFEITED 0x9
#define BATTLE_OPPONENT_TELEPORTED 0xA
#define BATTLE_OUTCOME_BIT_x80 0x80
#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 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 bank
#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 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 STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
#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_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#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 HITMARKER_x10 0x00000010
#define HITMARKER_x20 0x00000020
#define HITMARKER_DESTINYBOND 0x00000040
#define HITMARKER_NO_ANIMATIONS 0x00000080
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
#define HITMARKER_NO_ATTACKSTRING 0x00000200
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
#define HITMARKER_NO_PPDEDUCT 0x00000800
#define HITMARKER_PURSUIT_TRAP 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
#define HITMARKER_RUN 0x00008000
#define HITMARKER_IGNORE_ON_AIR 0x00010000
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
#define HITMARKER_x100000 0x00100000
#define HITMARKER_x200000 0x00200000
#define HITMARKER_x400000 0x00400000
#define HITMARKER_x800000 0x00800000
#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 SIDE_STATUS_REFLECT (1 << 0)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_X4 (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
#define ACTION_USE_MOVE 0
#define ACTION_USE_ITEM 1
#define ACTION_SWITCH 2
#define ACTION_RUN 3
#define ACTION_WATCHES_CAREFULLY 4
#define ACTION_SAFARI_ZONE_BALL 5
#define ACTION_POKEBLOCK_CASE 6
#define ACTION_GO_NEAR 7
#define ACTION_SAFARI_ZONE_RUN 8
#define ACTION_9 9
#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action
#define ACTION_CANCEL_PARTNER 12 // when choosing an action
#define ACTION_FINISHED 12 // when executing an action
#define ACTION_NOTHING_FAINTED 13 // when choosing an action
#define ACTION_INIT_VALUE 0xFF
#define MOVESTATUS_MISSED (1 << 0)
#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2)
#define MOVESTATUS_NOTAFFECTED (1 << 3)
#define MOVESTATUS_ONEHITKO (1 << 4)
#define MOVESTATUS_FAILED (1 << 5)
#define MOVESTATUS_ENDURED (1 << 6)
#define MOVESTATUS_HUNGON (1 << 7)
#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))
// Battle Actions
// These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0
#define B_ACTION_USE_ITEM 1
#define B_ACTION_SWITCH 2
#define B_ACTION_RUN 3
#define B_ACTION_SAFARI_WATCH_CAREFULLY 4
#define B_ACTION_SAFARI_BALL 5
#define B_ACTION_SAFARI_POKEBLOCK 6
#define B_ACTION_SAFARI_GO_NEAR 7
#define B_ACTION_SAFARI_RUN 8
// The exact purposes of these are unclear
#define B_ACTION_UNKNOWN9 9
#define B_ACTION_EXEC_SCRIPT 10 // when executing an action
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
#define B_ACTION_FINISHED 12 // when executing an action
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
#define WEATHER_RAIN_TEMPORARY (1 << 0)
#define WEATHER_RAIN_DOWNPOUR (1 << 1)
#define WEATHER_RAIN_PERMANENT (1 << 2)
#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
#define WEATHER_SUN_TEMPORARY (1 << 5)
#define WEATHER_SUN_PERMANENT (1 << 6)
#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
#define WEATHER_HAIL (1 << 7)
#define WEATHER_HAIL_ANY ((WEATHER_HAIL))
#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY))
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_ROCK 6
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_INSIDE 8
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// array entries for battle communication
@@ -252,29 +75,22 @@
#define MOVE_TARGET_FOES_AND_ALLY 0x20
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
// defines for the u8 array gTypeEffectiveness
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
// defines for the gTypeEffectiveness multipliers
#define TYPE_MUL_NO_EFFECT 0
#define TYPE_MUL_NOT_EFFECTIVE 5
#define TYPE_MUL_NORMAL 10
#define TYPE_MUL_SUPER_EFFECTIVE 20
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
#define BS_GET_SCRIPTING_BANK 10
#define BS_GET_OPPONENT1 12
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
// special type table Ids
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
// for battle script commands
#define CMP_EQUAL 0x0
#define CMP_NOT_EQUAL 0x1
#define CMP_GREATER_THAN 0x2
#define CMP_LESS_THAN 0x3
#define CMP_COMMON_BITS 0x4
#define CMP_NO_COMMON_BITS 0x5
#define BATTLE_BUFFER_LINK_SIZE 0x1000
struct TrainerMonNoItemDefaultMoves
{
@@ -283,9 +99,6 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
u8 GetBankSide(u8 bank);
struct TrainerMonItemDefaultMoves
{
u16 iv;
@@ -313,10 +126,10 @@ struct TrainerMonItemCustomMoves
union TrainerMonPtr
{
struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
struct TrainerMonItemCustomMoves* ItemCustomMoves;
struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
struct TrainerMonItemCustomMoves *ItemCustomMoves;
};
struct Trainer
@@ -333,9 +146,6 @@ struct Trainer
/*0x24*/ union TrainerMonPtr party;
};
#define PARTY_FLAG_CUSTOM_MOVES 0x1
#define PARTY_FLAG_HAS_ITEM 0x2
extern const struct Trainer gTrainers[];
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
@@ -361,8 +171,8 @@ struct DisableStruct
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer1 : 4;
/*0x0E*/ u8 encoreTimer2 : 4;
/*0x0F*/ u8 perishSong1 : 4;
/*0x0F*/ u8 perishSong2 : 4;
/*0x0F*/ u8 perishSongTimer1 : 4;
/*0x0F*/ u8 perishSongTimer2 : 4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutCounter1 : 4;
/*0x11*/ u8 rolloutCounter2 : 4;
@@ -370,8 +180,8 @@ struct DisableStruct
/*0x12*/ u8 chargeTimer2 : 4;
/*0x13*/ u8 tauntTimer1:4;
/*0x13*/ u8 tauntTimer2:4;
/*0x14*/ u8 bankPreventingEscape;
/*0x15*/ u8 bankWithSureHit;
/*0x14*/ u8 battlerPreventingEscape;
/*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
@@ -382,8 +192,6 @@ struct DisableStruct
/*0x1A*/ u8 unk1A[2];
};
extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT];
struct ProtectStruct
{
/* field_0 */
@@ -417,13 +225,11 @@ struct ProtectStruct
/* field_4 */ u32 physicalDmg;
/* field_8 */ u32 specialDmg;
/* field_C */ u8 physicalBank;
/* field_D */ u8 specialBank;
/* field_C */ u8 physicalBattlerId;
/* field_D */ u8 specialBattlerId;
/* field_E */ u16 fieldE;
};
extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT];
struct SpecialStatus
{
u8 statLowered : 1; // 0x1
@@ -435,49 +241,43 @@ struct SpecialStatus
u8 flag40 : 1;
u8 focusBanded : 1;
u8 field1[3];
s32 moveturnLostHP;
s32 moveturnLostHP_physical;
s32 moveturnLostHP_special;
u8 moveturnPhysicalBank;
u8 moveturnSpecialBank;
s32 dmg;
s32 physicalDmg;
s32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
u8 field12;
u8 field13;
};
extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT];
struct SideTimer
{
/*0x00*/ u8 reflectTimer;
/*0x01*/ u8 reflectBank;
/*0x01*/ u8 reflectBattlerId;
/*0x02*/ u8 lightscreenTimer;
/*0x03*/ u8 lightscreenBank;
/*0x03*/ u8 lightscreenBattlerId;
/*0x04*/ u8 mistTimer;
/*0x05*/ u8 mistBank;
/*0x05*/ u8 mistBattlerId;
/*0x06*/ u8 safeguardTimer;
/*0x07*/ u8 safeguardBank;
/*0x07*/ u8 safeguardBattlerId;
/*0x08*/ u8 followmeTimer;
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
/*0x0B*/ u8 fieldB;
};
extern struct SideTimer gSideTimers[];
struct WishFutureKnock
{
u8 futureSightCounter[BATTLE_BANKS_COUNT];
u8 futureSightAttacker[BATTLE_BANKS_COUNT];
s32 futureSightDmg[BATTLE_BANKS_COUNT];
u16 futureSightMove[BATTLE_BANKS_COUNT];
u8 wishCounter[BATTLE_BANKS_COUNT];
u8 wishUserID[BATTLE_BANKS_COUNT];
u8 futureSightCounter[MAX_BATTLERS_COUNT];
u8 futureSightAttacker[MAX_BATTLERS_COUNT];
s32 futureSightDmg[MAX_BATTLERS_COUNT];
u16 futureSightMove[MAX_BATTLERS_COUNT];
u8 wishCounter[MAX_BATTLERS_COUNT];
u8 wishMonId[MAX_BATTLERS_COUNT];
u8 weatherDuration;
u8 knockedOffPokes[2];
};
extern struct WishFutureKnock gWishFutureKnock;
struct AI_ThinkingStruct
{
u8 aiState;
@@ -494,16 +294,16 @@ struct AI_ThinkingStruct
struct UsedMoves
{
u16 moves[BATTLE_BANKS_COUNT];
u16 unknown[BATTLE_BANKS_COUNT];
u16 moves[MAX_BATTLERS_COUNT];
u16 unknown[MAX_BATTLERS_COUNT];
};
struct BattleHistory
{
struct UsedMoves usedMoves[BATTLE_BANKS_COUNT];
u8 abilities[BATTLE_BANKS_COUNT];
u8 itemEffects[BATTLE_BANKS_COUNT];
u16 trainerItems[BATTLE_BANKS_COUNT];
struct UsedMoves usedMoves[MAX_BATTLERS_COUNT];
u8 abilities[MAX_BATTLERS_COUNT];
u8 itemEffects[MAX_BATTLERS_COUNT];
u16 trainerItems[MAX_BATTLERS_COUNT];
u8 itemsNo;
};
@@ -541,12 +341,6 @@ struct BattleResources
struct BattleScriptsStack *AI_ScriptsStack;
};
extern struct BattleResources* gBattleResources;
#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack)
#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack)
#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp)
struct BattleResults
{
u8 playerFaintCounter; // 0x0
@@ -570,21 +364,19 @@ struct BattleResults
u16 playerMon2Species; // 0x26
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
u8 filler34[2];
u8 filler34[2]; // 0x34
u8 catchAttempts[11]; // 0x36
};
extern struct BattleResults gBattleResults;
struct BattleStruct
{
u8 turnEffectsTracker;
u8 turnEffectsBank;
u8 turnEffectsBattlerId;
u8 filler2;
u8 turncountersTracker;
u8 turnCountersTracker;
u8 wrappedMove[8]; // ask gamefreak why they declared it that way
u8 moveTarget[4];
u8 expGetterId;
u8 expGetterMonId;
u8 field_11;
u8 wildVictorySong;
u8 dynamicMoveType;
@@ -598,20 +390,20 @@ struct BattleStruct
u8 field_45;
u8 field_46;
u8 field_47;
u8 focusPunchBank;
u8 focusPunchBattlerId;
u8 field_49;
u8 moneyMultiplier;
u8 field_4B;
u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
u8 field_4D;
u8 field_4E;
u8 faintedActionsState;
u8 faintedActionsBattlerId;
u8 field_4F;
u16 expValue;
u8 field_52;
u8 sentInPokes;
bool8 selectionScriptFinished[BATTLE_BANKS_COUNT];
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
u8 field_58[4];
u8 field_5C[4];
u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_60[4][3];
u8 runTries;
u8 caughtMonNick[11];
@@ -623,8 +415,8 @@ struct BattleStruct
u8 field_7D;
u8 field_7E;
u8 formToChangeInto;
u8 chosenMovePositions[BATTLE_BANKS_COUNT];
u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT];
u8 chosenMovePositions[MAX_BATTLERS_COUNT];
u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
u8 field_88;
u8 field_89;
u8 field_8A;
@@ -632,7 +424,7 @@ struct BattleStruct
u8 field_8C;
u8 field_8D;
u8 stringMoveType;
u8 expGetterBank;
u8 expGetterBattlerId;
u8 field_90;
u8 field_91;
u8 field_92;
@@ -657,12 +449,12 @@ struct BattleStruct
u8 synchronizeMoveEffect;
u8 field_B3;
void (*savedCallback)(void);
u16 usedHeldItems[BATTLE_BANKS_COUNT];
u16 usedHeldItems[MAX_BATTLERS_COUNT];
u8 chosenItem[4]; // why is this an u8?
u8 AI_itemType[2];
u8 AI_itemFlags[2];
u16 choicedMove[BATTLE_BANKS_COUNT];
u16 changedItems[BATTLE_BANKS_COUNT];
u16 choicedMove[MAX_BATTLERS_COUNT];
u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBank;
u8 switchInItemsCounter;
u8 field_DA;
@@ -670,35 +462,26 @@ struct BattleStruct
u8 fillerDC[0xDF-0xDC];
u8 field_DF;
u8 mirrorMoveArrays[32];
u16 castformPalette[4][16];
u16 castformPalette[MAX_BATTLERS_COUNT][16];
u8 field_180;
u8 field_181;
u8 field_182;
u8 field_183;
struct BattleEnigmaBerry battleEnigmaBerry;
u8 field_1A0;
u8 field_1A1;
u8 wishPerishSongState;
u8 wishPerishSongBattlerId;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
u8 field_1A4[96];
u8 field_204[104];
u8 field_26C[40];
u8 field_294[4];
u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_298[8];
u8 field_2A0;
u8 field_2A1;
u8 field_2A2;
};
extern struct BattleStruct* gBattleStruct;
#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \
{ \
u8* var2 = (u8*)((u32)(arrayId)); \
var2 = (u32)(structPtr) + var2; \
var2[offsetof(struct structName, offsetField)] = value; \
}
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -707,128 +490,31 @@ extern struct BattleStruct* gBattleStruct;
typeArg = gBattleMoves[move].type; \
}
#define MOVE_EFFECT_SLEEP 0x1
#define MOVE_EFFECT_POISON 0x2
#define MOVE_EFFECT_BURN 0x3
#define MOVE_EFFECT_FREEZE 0x4
#define MOVE_EFFECT_PARALYSIS 0x5
#define MOVE_EFFECT_TOXIC 0x6
#define MOVE_EFFECT_CONFUSION 0x7
#define MOVE_EFFECT_FLINCH 0x8
#define MOVE_EFFECT_TRI_ATTACK 0x9
#define MOVE_EFFECT_UPROAR 0xA
#define MOVE_EFFECT_PAYDAY 0xB
#define MOVE_EFFECT_CHARGING 0xC
#define MOVE_EFFECT_WRAP 0xD
#define MOVE_EFFECT_RECOIL_25 0xE
#define MOVE_EFFECT_ATK_PLUS_1 0xF
#define MOVE_EFFECT_DEF_PLUS_1 0x10
#define MOVE_EFFECT_SPD_PLUS_1 0x11
#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
#define MOVE_EFFECT_ACC_PLUS_1 0x14
#define MOVE_EFFECT_EVS_PLUS_1 0x15
#define MOVE_EFFECT_ATK_MINUS_1 0x16
#define MOVE_EFFECT_DEF_MINUS_1 0x17
#define MOVE_EFFECT_SPD_MINUS_1 0x18
#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
#define MOVE_EFFECT_ACC_MINUS_1 0x1B
#define MOVE_EFFECT_EVS_MINUS_1 0x1C
#define MOVE_EFFECT_RECHARGE 0x1D
#define MOVE_EFFECT_RAGE 0x1E
#define MOVE_EFFECT_STEAL_ITEM 0x1F
#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
#define MOVE_EFFECT_NIGHTMARE 0x21
#define MOVE_EFFECT_ALL_STATS_UP 0x22
#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_ATK_PLUS_2 0x27
#define MOVE_EFFECT_DEF_PLUS_2 0x28
#define MOVE_EFFECT_SPD_PLUS_2 0x29
#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
#define MOVE_EFFECT_ACC_PLUS_2 0x2C
#define MOVE_EFFECT_EVS_PLUS_2 0x2D
#define MOVE_EFFECT_ATK_MINUS_2 0x2E
#define MOVE_EFFECT_DEF_MINUS_2 0x2F
#define MOVE_EFFECT_SPD_MINUS_2 0x30
#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
#define MOVE_EFFECT_ACC_MINUS_2 0x33
#define MOVE_EFFECT_EVS_MINUS_2 0x34
#define MOVE_EFFECT_THRASH 0x35
#define MOVE_EFFECT_KNOCK_OFF 0x36
#define MOVE_EFFECT_NOTHING_37 0x37
#define MOVE_EFFECT_NOTHING_38 0x38
#define MOVE_EFFECT_NOTHING_39 0x39
#define MOVE_EFFECT_NOTHING_3A 0x3A
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
#define MOVE_EFFECT_NOTHING_3C 0x3C
#define MOVE_EFFECT_NOTHING_3D 0x3D
#define MOVE_EFFECT_NOTHING_3E 0x3E
#define MOVE_EFFECT_NOTHING_3F 0x3F
#define MOVE_EFFECT_AFFECTS_USER 0x40
#define MOVE_EFFECT_CERTAIN 0x80
// table ids for general animations
#define B_ANIM_CASTFORM_CHANGE 0x0
#define B_ANIM_STATS_CHANGE 0x1
#define B_ANIM_SUBSTITUTE_FADE 0x2
#define B_ANIM_SUBSTITUTE_APPEAR 0x3
#define B_ANIM_x4 0x4
#define B_ANIM_ITEM_KNOCKOFF 0x5
#define B_ANIM_TURN_TRAP 0x6
#define B_ANIM_ITEM_EFFECT 0x7
#define B_ANIM_SMOKEBALL_ESCAPE 0x8
#define B_ANIM_HANGED_ON 0x9
#define B_ANIM_RAIN_CONTINUES 0xA
#define B_ANIM_SUN_CONTINUES 0xB
#define B_ANIM_SANDSTORM_CONTINUES 0xC
#define B_ANIM_HAIL_CONTINUES 0xD
#define B_ANIM_LEECH_SEED_DRAIN 0xE
#define B_ANIM_MON_HIT 0xF
#define B_ANIM_ITEM_STEAL 0x10
#define B_ANIM_SNATCH_MOVE 0x11
#define B_ANIM_FUTURE_SIGHT_HIT 0x12
#define B_ANIM_x13 0x13
#define B_ANIM_x14 0x14
#define B_ANIM_INGRAIN_HEAL 0x15
#define B_ANIM_WISH_HEAL 0x16
// special animations table
#define B_ANIM_LVL_UP 0x0
#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1
#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2
#define B_ANIM_BALL_THROW 0x3
#define B_ANIM_SAFARI_BALL_THROW 0x4
#define B_ANIM_SUBSTITUTE_TO_MON 0x5
#define B_ANIM_MON_TO_SUBSTITUTE 0x6
#define IS_MOVE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_MOVE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
#define SET_STAT_BUFF_ID(n)((n & 0xF))
#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
struct BattleScripting
{
s32 painSplitHp;
s32 bideDmg;
u8 multihitString[6];
u8 dmgMultiplier;
u8 field_F;
u8 twoTurnsMoveStringId;
u8 animArg1;
u8 animArg2;
u8 field_12;
u8 field_13;
u16 tripleKickPower;
u8 atk49_state;
u8 field_15;
u8 field_16;
u8 bank;
u8 battlerWithAbility;
u8 multihitMoveEffect;
u8 battler;
u8 animTurn;
u8 animTargetsHit;
u8 statChanger;
@@ -845,62 +531,6 @@ struct BattleScripting
u8 multiplayerId;
};
extern struct BattleScripting gBattleScripting;
// functions
// battle_1
void LoadBattleTextboxAndBackground(void);
void LoadBattleEntryBackground(void);
void ApplyPlayerChosenFrameToBattleMenu(void);
bool8 LoadChosenBattleElement(u8 caseId);
void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
// battle_5
void AllocateBattleResrouces(void);
void FreeBattleResources(void);
void AdjustFriendshipOnBattleFaint(u8 bank);
void sub_80571DC(u8 bank, u8 arg1);
u32 sub_805725C(u8 bank);
// battle 7
void AllocateBattleSpritesData(void);
void FreeBattleSpritesData(void);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
void BattleMusicStop(void);
void sub_805E990(struct Pokemon *mon, u8 bank);
void sub_805EF14(void);
bool8 BattleInitAllSprites(u8 *state1, u8 *state2);
void sub_805E350(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadAndCreateEnemyShadowSprites(void);
void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1);
void nullsub_24(u16 arg0);
void nullsub_25(u8 arg0);
void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
void sub_805D714(struct Sprite *sprite);
void DecompressTrainerBackPic(u16 backPicId, u8 bank);
void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
void FreeTrainerFrontPicPalette(u16 frontPicId);
void sub_805D7AC(struct Sprite *sprite);
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
void sub_805EB9C(u8 arg0);
void sub_805E394(void);
void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
void DoStatusAnimation(bool8 isStatus2, u32 status);
void DoSpecialBattleAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
bool8 DoBattleAnimationFromTable(u8 active, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
void CopyBattleSpriteInvisibility(u8 bank);
u16 ChooseMoveAndTargetInBattlePalace(void);
void LoadBattleBarGfx(u8 arg0);
bool8 mplay_80342A4(u8 bank);
void sub_805EEE0(u8 bank);
enum
{
BACK_PIC_BRENDAN,
@@ -914,14 +544,14 @@ enum
};
// rom_80A5C6C
u8 GetBankSide(u8 bank);
u8 GetBankIdentity(u8 bank);
u8 GetBankByIdentity(u8 bank);
u8 GetBattlerSide(u8 battler);
u8 GetBattlerPosition(u8 bank);
u8 GetBattlerAtPosition(u8 bank);
struct BattleSpriteInfo
{
u16 invisible : 1; // 0x1
u16 flag_x2 : 1; // 0x2
u16 lowHpSong : 1; // 0x2
u16 behindSubstitute : 1; // 0x4
u16 flag_x8 : 1; // 0x8
u16 hpNumbersNoBars : 1; // 0x10
@@ -930,7 +560,7 @@ struct BattleSpriteInfo
struct BattleAnimationInfo
{
u16 field; // to fill up later
u16 animArg; // to fill up later
u8 field_2;
u8 field_3;
u8 field_4;
@@ -944,6 +574,12 @@ struct BattleAnimationInfo
u8 field_9_x20 : 1;
u8 field_9_x40 : 1;
u8 field_9_x80 : 1;
u8 field_A;
u8 field_B;
u8 field_C;
u8 field_D;
u8 field_E;
u8 field_F;
};
struct BattleHealthboxInfo
@@ -951,7 +587,7 @@ struct BattleHealthboxInfo
u8 flag_x1 : 1;
u8 flag_x2 : 1;
u8 flag_x4 : 1;
u8 flag_x8 : 1;
u8 ballAnimActive : 1; // 0x8
u8 statusAnimActive : 1; // x10
u8 animFromTableActive : 1; // x20
u8 specialAnimActive : 1; //x40
@@ -966,7 +602,7 @@ struct BattleHealthboxInfo
u8 animationState;
u8 field_5;
u8 field_6;
u8 field_7;
u8 shadowSpriteId;
u8 field_8;
u8 field_9;
u8 field_A;
@@ -984,21 +620,12 @@ struct BattleBarInfo
struct BattleSpriteData
{
struct BattleSpriteInfo *bankData;
struct BattleSpriteInfo *battlerData;
struct BattleHealthboxInfo *healthBoxesData;
struct BattleAnimationInfo *animationData;
struct BattleBarInfo *battleBars;
};
extern struct BattleSpriteData *gBattleSpritesDataPtr;
#define BATTLE_BUFFER_LINK_SIZE 0x1000
extern u8 *gLinkBattleSendBuffer;
extern u8 *gLinkBattleRecvBuffer;
// Move this somewhere else
#include "sprite.h"
struct MonSpritesGfx
@@ -1006,15 +633,113 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
u8 field_74[0x100];
u8 *fontPixels;
struct SpriteFrameImage field_74[4][4];
u8 field_F4[0x80];
u8 *barFontGfx;
void *field_178;
void *field_17C;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
extern u8 gBattleOutcome;
extern u16 gLastUsedItem;
// all battle variables are declared in battle_main.c
extern u32 gBattleTypeFlags;
extern struct MonSpritesGfx* gMonSpritesGfxPtr;
extern u16 gTrainerBattleOpponent_A;
extern u8 gBattleTerrain;
extern u32 gUnknown_02022FF4;
extern u8 *gUnknown_0202305C;
extern u8 *gUnknown_02023060;
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern u8 gActiveBattler;
extern u32 gBattleControllerExecFlags;
extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gCurrentTurnActionNumber;
extern u8 gCurrentActionFuncId;
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gCurrMovePos;
extern u8 gChosenMovePos;
extern u16 gCurrentMove;
extern u16 gChosenMove;
extern u16 gRandomMove;
extern s32 gBattleMoveDamage;
extern s32 gHpDealt;
extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
extern u16 gLastUsedItem;
extern u8 gLastUsedAbility;
extern u8 gBattlerAttacker;
extern u8 gBattlerTarget;
extern u8 gBattlerFainted;
extern u8 gEffectBattler;
extern u8 gPotentialItemEffectBattler;
extern u8 gAbsentBattlerFlags;
extern u8 gCritMultiplier;
extern u8 gMultiHitCounter;
extern const u8 *gBattlescriptCurrInstr;
extern u32 gUnusedBattleMainVar;
extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT];
extern const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT];
extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
extern u16 gLastMoves[MAX_BATTLERS_COUNT];
extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
extern u16 gLastHitByType[MAX_BATTLERS_COUNT];
extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT];
extern u16 gLockedMoves[MAX_BATTLERS_COUNT];
extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
extern u8 gMoveResultFlags;
extern u32 gHitMarker;
extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
extern u8 gUnknown_0202428C;
extern u16 gSideStatuses[2];
extern struct SideTimer gSideTimers[2];
extern u32 gStatuses3[MAX_BATTLERS_COUNT];
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
extern u16 gPauseCounterBattle;
extern u16 gPaydayMoney;
extern u16 gRandomTurnNumber;
extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
extern u8 gBattleOutcome;
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
extern u16 gBattleWeather;
extern struct WishFutureKnock gWishFutureKnock;
extern u16 gIntroSlideFlags;
extern u8 gSentPokesToOpponent[2];
extern u16 gDynamicBasePower;
extern u16 gExpShareExp;
extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
extern struct BattleScripting gBattleScripting;
extern struct BattleStruct *gBattleStruct;
extern u8 *gLinkBattleSendBuffer;
extern u8 *gLinkBattleRecvBuffer;
extern struct BattleResources *gBattleResources;
extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
extern u8 gBattlerInMenuId;
extern bool8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern u8 gPlayerDpadHoldFrames;
extern struct BattleSpriteData *gBattleSpritesDataPtr;
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
extern struct BattleHealthboxInfo *gUnknown_020244D8;
extern struct BattleHealthboxInfo *gUnknown_020244DC;
extern u16 gBattleMovePower;
extern u16 gMoveToLearn;
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
extern void (*gPreBattleCallback1)(void);
extern void (*gBattleMainFunc)(void);
extern struct BattleResults gBattleResults;
extern u8 gLeveledUpInBattle;
extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gMultiUsePlayerCursor;
extern u8 gNumberOfMovesToChoose;
extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H

View File

@@ -4,9 +4,9 @@
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
u8 BattleAI_ChooseMoveOrAction(void);
void ClearBankMoveHistory(u8 bank);
void ClearBattlerMoveHistory(u8 bank);
void RecordAbilityBattle(u8 bank, u8 abilityId);
void ClearBankAbilityHistory(u8 bank);
void ClearBattlerAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void ClearBankItemEffectHistory(u8 bank);

View File

@@ -1,14 +1,6 @@
#ifndef GUARD_BATTLE_ANIM_H
#define GUARD_BATTLE_ANIM_H
enum
{
ANIM_BANK_ATTACKER,
ANIM_BANK_TARGET,
ANIM_BANK_ATK_PARTNER,
ANIM_BANK_DEF_PARTNER,
};
enum
{
BG_ANIM_SCREEN_SIZE,
@@ -53,9 +45,9 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
extern u16 gAnimSpeciesByBanks[MAX_BATTLERS_COUNT];
extern u8 gUnknown_02038440;
void ClearBattleAnimationVars(void);
@@ -64,8 +56,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
void DestroyAnimSprite(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 taskId);
void DestroyAnimSoundTask(u8 taskId);
bool8 IsAnimBankSpriteVisible(u8 bank);
void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsBattlerSpriteVisible(u8 battlerId);
void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
@@ -79,20 +71,40 @@ void HandleIntroSlide(u8 terrainId);
// battle_anim_80A5C6C.s
void sub_80A6EEC(struct Sprite *sprite);
void sub_80A68D4(struct Sprite *sprite);
void sub_80A6F3C(struct Sprite *sprite);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
u8 sub_80A82E4(u8 bank);
u8 sub_80A5C6C(u8 bank, u8 attributeId);
bool8 IsBankSpritePresent(u8 bank);
u8 sub_80A82E4(u8 battlerId);
bool8 AnimateBallThrow(struct Sprite *sprite);
enum
{
BANK_X_POS,
BANK_Y_POS,
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
bool8 IsBattlerSpritePresent(u8 battlerId);
void sub_80A6C68(u8 arg0);
u8 GetAnimBankSpriteId(u8 wantedBank);
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
u8 sub_80A6138(u8 bank);
u8 sub_80A82E4(u8 bank);
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
u8 sub_80A82E4(u8 battlerId);
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
#endif // GUARD_BATTLE_ANIM_H

13
include/battle_bg.h Normal file
View File

@@ -0,0 +1,13 @@
#ifndef GUARD_BATTLE_BG_H
#define GUARD_BATTLE_BG_H
void sub_8035658(void);
void sub_80356D0(void);
void ApplyPlayerChosenFrameToBattleMenu(void);
void DrawMainBattleBackground(void);
void LoadBattleTextboxAndBackground(void);
void sub_8035D74(u8 taskId);
void LoadBattleEntryBackground(void);
bool8 LoadChosenBattleElement(u8 caseId);
#endif // GUARD_BATTLE_BG_H

View File

@@ -181,62 +181,62 @@ void sub_8033648(void);
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
// emitters
void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
void EmitLoadMonSprite(u8 bufferId);
void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
void EmitReturnMonToBall(u8 bufferId, u8 arg1);
void EmitDrawTrainerPic(u8 bufferId);
void EmitTrainerSlide(u8 bufferId);
void EmitTrainerSlideBack(u8 bufferId);
void EmitFaintAnimation(u8 bufferId);
void EmitPaletteFade(u8 bufferId); // unused
void EmitSuccessBallThrowAnim(u8 bufferId); // unused
void EmitBallThrowAnim(u8 bufferId, u8 caseId);
void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void EmitPrintString(u8 bufferId, u16 stringId);
void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
void EmitUnknownYesNoBox(u8 bufferId);
void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
void EmitChooseItem(u8 bufferId, u8* arg1);
void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
void EmitCmd23(u8 bufferId); // unused
void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
void EmitStatusXor(u8 bufferId, u8 b); // unused
void EmitDataTransfer(u8 bufferId, u16 size, void *data);
void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
void EmitCmd32(u8 bufferId, u16 size, void *c); // unused
void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
void EmitOneReturnValue(u8 bufferId, u16 arg1);
void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
void EmitCmd37(u8 bufferId); // unused
void EmitCmd38(u8 bufferId, u8 b); // unused
void EmitCmd39(u8 bufferId); // unused
void EmitCmd40(u8 bufferId); // unused
void EmitHitAnimation(u8 bufferId);
void EmitCmd42(u8 bufferId);
void EmitEffectivenessSound(u8 bufferId, u16 songId);
void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
void EmitFaintingCry(u8 bufferId);
void EmitIntroSlide(u8 bufferId, u8 terrainId);
void EmitIntroTrainerBallThrow(u8 bufferId);
void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
void EmitCmd49(u8 bufferId);
void EmitCmd50(u8 bufferId);
void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
void EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void EmitCmd55(u8 bufferId, u8 arg1);
void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
void BtlController_EmitLoadMonSprite(u8 bufferId);
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1);
void BtlController_EmitDrawTrainerPic(u8 bufferId);
void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(u8 bufferId);
void BtlController_EmitFaintAnimation(u8 bufferId);
void BtlController_EmitPaletteFade(u8 bufferId); // unused
void BtlController_EmitSuccessBallThrowAnim(u8 bufferId); // unused
void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitUnknownYesNoBox(u8 bufferId);
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
void BtlController_EmitChooseItem(u8 bufferId, u8* arg1);
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
void BtlController_EmitCmd23(u8 bufferId); // unused
void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused
void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1);
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
void BtlController_EmitCmd37(u8 bufferId); // unused
void BtlController_EmitCmd38(u8 bufferId, u8 b); // unused
void BtlController_EmitCmd39(u8 bufferId); // unused
void BtlController_EmitCmd40(u8 bufferId); // unused
void BtlController_EmitHitAnimation(u8 bufferId);
void BtlController_EmitCmd42(u8 bufferId);
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
void BtlController_EmitCmd49(u8 bufferId);
void BtlController_EmitCmd50(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
// player controller
void SetControllerToPlayer(void);

View File

@@ -0,0 +1,7 @@
#ifndef GUARD_BATTLE_FRONTIER_1_H
#define GUARD_BATTLE_FRONTIER_1_H
bool32 sub_8196094(void);
void sub_8196080(const u8 *str);
#endif // GUARD_BATTLE_FRONTIER_1_H

View File

@@ -5,5 +5,6 @@ void sub_81A8934(u8);
void sub_81A895C(void);
u16 sub_81A89A0(u8);
void sub_81A8AF8(void);
bool8 InBattlePike(void);
#endif // GUARD_BATTLE_FRONTIER_2_H

View File

@@ -0,0 +1,50 @@
#ifndef GUARD_BATTLE_GFX_SFX_UTIL
#define GUARD_BATTLE_GFX_SFX_UTIL
void AllocateBattleSpritesData(void);
void FreeBattleSpritesData(void);
u16 ChooseMoveAndTargetInBattlePalace(void);
void sub_805D714(struct Sprite *sprite);
void sub_805D770(struct Sprite *sprite, bool8 arg1);
void sub_805D7AC(struct Sprite *sprite);
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId, u16 argument);
void InitAndLaunchSpecialAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId);
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
bool8 mplay_80342A4(u8 battlerId);
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void nullsub_23(void);
void nullsub_24(u16 species);
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
void nullsub_25(u8 arg0);
void FreeTrainerFrontPicPalette(u16 frontPicId);
void sub_805DFFC(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0);
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
void ClearSpritesHealthboxAnimData(void);
void CopyAllBattleSpritesInvisibilities(void);
void CopyBattleSpriteInvisibility(u8 battlerId);
void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform);
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
void ClearBehindSubstituteBit(u8 battlerId);
void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
void BattleStopLowHpSound(void);
u8 GetMonHPBarLevel(struct Pokemon *mon);
void sub_805EAE8(void);
void sub_805EB9C(u8 affineMode);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species);
void HideBattlerShadowSprite(u8 battlerId);
void sub_805EF14(void);
void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
#endif // GUARD_BATTLE_GFX_SFX_UTIL

View File

@@ -15,6 +15,15 @@ enum
EXP_BAR
};
enum
{
HP_BAR_EMPTY,
HP_BAR_RED,
HP_BAR_YELLOW,
HP_BAR_GREEN,
HP_BAR_FULL,
};
#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
@@ -45,7 +54,7 @@ enum
HEALTHBOX_SAFARI_BALLS_TEXT
};
u8 CreateBankHealthboxSprites(u8 bank);
u8 CreateBattlerHealthboxSprites(u8 bank);
u8 CreateSafariPlayerHealthboxSprites(void);
void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
@@ -53,7 +62,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
void DestoryHealthboxSprite(u8 healthboxSpriteId);
void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
void UpdateOamPriorityInAllHealthboxes(u8 priority);
void SetBankHealthboxSpritePos(u8 bank);
void InitBattlerHealthboxCoords(u8 bank);
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
void SwapHpBarsWithHpText(void);
u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);

View File

@@ -6,6 +6,6 @@ void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStruct
void sub_817E32C(u8 animationId);
void sub_817E3F4(void);
void sub_817F2A8(void);
u8 GetBankMoveSlotId(u8 bank, u16 move);
u8 GetBattlerMoveSlotId(u8 bank, u16 move);
#endif // GUARD_BATTLE_LINK_817C95C_H

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_BATTLE_2_H
#define GUARD_BATTLE_2_H
#ifndef GUARD_BATTLE_MAIN_H
#define GUARD_BATTLE_MAIN_H
void CB2_InitBattle(void);
void BattleMainCB2(void);
@@ -21,8 +21,8 @@ void sub_8039B58(struct Sprite *sprite);
void sub_8039BB4(struct Sprite *sprite);
void sub_80105DC(struct Sprite *sprite);
void sub_8039C00(struct Sprite *sprite);
void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d);
void dp11b_obj_free(u8 bank, bool8 b);
void dp11b_obj_instanciate(u8 battlerId, u8 b, s8 c, s8 d);
void dp11b_obj_free(u8 battlerId, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
@@ -35,12 +35,12 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
void sub_803BDA0(u8 bank);
void sub_803BDA0(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 bank);
bool8 TryRunFromBattle(u8 battlerId);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
@@ -52,4 +52,4 @@ extern const u8 gStatusConditionString_LoveJpn[8];
extern const u8 * const gStatusConditionStringsTable[7][2];
#endif // GUARD_BATTLE_2_H
#endif // GUARD_BATTLE_MAIN_H

View File

@@ -67,13 +67,21 @@
#define B_BUFF_STAT 5
#define B_BUFF_SPECIES 6
#define B_BUFF_MON_NICK 7
#define B_BUFF_NEGATIVE_FLAVOUR 8
#define B_BUFF_NEGATIVE_FLAVOR 8
#define B_BUFF_ABILITY 9
#define B_BUFF_ITEM 10
#define B_BUFF_PLACEHOLDER_BEGIN 0xFD
#define B_BUFF_EOS 0xFF
#define PREPARE_FLAVOR_BUFFER(textVar, flavorId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \
textVar[2] = flavorId; \
textVar[3] = B_BUFF_EOS; \
}
#define PREPARE_STAT_BUFFER(textVar, statId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
@@ -189,7 +197,7 @@
struct StringInfoBattle
{
u16 currentMove;
u16 lastMove;
u16 originallyUsedMove;
u16 lastItem;
u8 lastAbility;
u8 scrActive;

View File

@@ -1,222 +0,0 @@
#ifndef GUARD_BATTLE_MOVE_EFFECTS_H
#define GUARD_BATTLE_MOVE_EFFECTS_H
enum
{
EFFECT_HIT,
EFFECT_SLEEP,
EFFECT_POISON_HIT,
EFFECT_ABSORB,
EFFECT_BURN_HIT,
EFFECT_FREEZE_HIT,
EFFECT_PARALYZE_HIT,
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
EFFECT_MIRROR_MOVE,
EFFECT_ATTACK_UP,
EFFECT_DEFENSE_UP,
EFFECT_SPEED_UP,
EFFECT_SPECIAL_ATTACK_UP,
EFFECT_SPECIAL_DEFENSE_UP,
EFFECT_ACCURACY_UP,
EFFECT_EVASION_UP,
EFFECT_ALWAYS_HIT,
EFFECT_ATTACK_DOWN,
EFFECT_DEFENSE_DOWN,
EFFECT_SPEED_DOWN,
EFFECT_SPECIAL_ATTACK_DOWN, // unused
EFFECT_SPECIAL_DEFENSE_DOWN, // unused
EFFECT_ACCURACY_DOWN,
EFFECT_EVASION_DOWN,
EFFECT_HAZE,
EFFECT_BIDE,
EFFECT_RAMPAGE,
EFFECT_ROAR,
EFFECT_MULTI_HIT,
EFFECT_CONVERSION,
EFFECT_FLINCH_HIT,
EFFECT_RESTORE_HP,
EFFECT_TOXIC,
EFFECT_PAY_DAY,
EFFECT_LIGHT_SCREEN,
EFFECT_TRI_ATTACK,
EFFECT_REST,
EFFECT_OHKO,
EFFECT_RAZOR_WIND,
EFFECT_SUPER_FANG,
EFFECT_DRAGON_RAGE,
EFFECT_TRAP,
EFFECT_HIGH_CRITICAL,
EFFECT_DOUBLE_HIT,
EFFECT_RECOIL_IF_MISS,
EFFECT_MIST,
EFFECT_FOCUS_ENERGY,
EFFECT_RECOIL,
EFFECT_CONFUSE,
EFFECT_ATTACK_UP_2,
EFFECT_DEFENSE_UP_2,
EFFECT_SPEED_UP_2,
EFFECT_SPECIAL_ATTACK_UP_2,
EFFECT_SPECIAL_DEFENSE_UP_2,
EFFECT_ACCURACY_UP_2,
EFFECT_EVASION_UP_2,
EFFECT_TRANSFORM,
EFFECT_ATTACK_DOWN_2,
EFFECT_DEFENSE_DOWN_2,
EFFECT_SPEED_DOWN_2,
EFFECT_SPECIAL_ATTACK_DOWN_2,
EFFECT_SPECIAL_DEFENSE_DOWN_2,
EFFECT_ACCURACY_DOWN_2,
EFFECT_EVASION_DOWN_2,
EFFECT_REFLECT,
EFFECT_POISON,
EFFECT_PARALYZE,
EFFECT_ATTACK_DOWN_HIT,
EFFECT_DEFENSE_DOWN_HIT,
EFFECT_SPEED_DOWN_HIT,
EFFECT_SPECIAL_ATTACK_DOWN_HIT,
EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
EFFECT_ACCURACY_DOWN_HIT,
EFFECT_EVASION_DOWN_HIT,
EFFECT_SKY_ATTACK,
EFFECT_CONFUSE_HIT,
EFFECT_TWINEEDLE,
EFFECT_VITAL_THROW,
EFFECT_SUBSTITUTE,
EFFECT_RECHARGE,
EFFECT_RAGE,
EFFECT_MIMIC,
EFFECT_METRONOME,
EFFECT_LEECH_SEED,
EFFECT_SPLASH,
EFFECT_DISABLE,
EFFECT_LEVEL_DAMAGE,
EFFECT_PSYWAVE,
EFFECT_COUNTER,
EFFECT_ENCORE,
EFFECT_PAIN_SPLIT,
EFFECT_SNORE,
EFFECT_CONVERSION_2,
EFFECT_LOCK_ON,
EFFECT_SKETCH,
EFFECT_UNUSED_60, // thaw
EFFECT_SLEEP_TALK,
EFFECT_DESTINY_BOND,
EFFECT_FLAIL,
EFFECT_SPITE,
EFFECT_FALSE_SWIPE,
EFFECT_HEAL_BELL,
EFFECT_QUICK_ATTACK,
EFFECT_TRIPLE_KICK,
EFFECT_THIEF,
EFFECT_MEAN_LOOK,
EFFECT_NIGHTMARE,
EFFECT_MINIMIZE,
EFFECT_CURSE,
EFFECT_UNUSED_6E,
EFFECT_PROTECT,
EFFECT_SPIKES,
EFFECT_FORESIGHT,
EFFECT_PERISH_SONG,
EFFECT_SANDSTORM,
EFFECT_ENDURE,
EFFECT_ROLLOUT,
EFFECT_SWAGGER,
EFFECT_FURY_CUTTER,
EFFECT_ATTRACT,
EFFECT_RETURN,
EFFECT_PRESENT,
EFFECT_FRUSTRATION,
EFFECT_SAFEGUARD,
EFFECT_THAW_HIT,
EFFECT_MAGNITUDE,
EFFECT_BATON_PASS,
EFFECT_PURSUIT,
EFFECT_RAPID_SPIN,
EFFECT_SONICBOOM,
EFFECT_UNUSED_83,
EFFECT_MORNING_SUN,
EFFECT_SYNTHESIS,
EFFECT_MOONLIGHT,
EFFECT_HIDDEN_POWER,
EFFECT_RAIN_DANCE,
EFFECT_SUNNY_DAY,
EFFECT_DEFENSE_UP_HIT,
EFFECT_ATTACK_UP_HIT,
EFFECT_ALL_STATS_UP_HIT,
EFFECT_UNUSED_8D, // incomplete fake out in gen 2
EFFECT_BELLY_DRUM,
EFFECT_PSYCH_UP,
EFFECT_MIRROR_COAT,
EFFECT_SKULL_BASH,
EFFECT_TWISTER,
EFFECT_EARTHQUAKE,
EFFECT_FUTURE_SIGHT,
EFFECT_GUST,
EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
EFFECT_SOLARBEAM,
EFFECT_THUNDER,
EFFECT_TELEPORT,
EFFECT_BEAT_UP,
EFFECT_FLY,
EFFECT_DEFENSE_CURL,
EFFECT_SOFTBOILED,
EFFECT_FAKE_OUT,
EFFECT_UPROAR,
EFFECT_STOCKPILE,
EFFECT_SPIT_UP,
EFFECT_SWALLOW,
EFFECT_UNUSED_A3,
EFFECT_HAIL,
EFFECT_TORMENT,
EFFECT_FLATTER,
EFFECT_WILL_O_WISP,
EFFECT_MEMENTO,
EFFECT_FACADE,
EFFECT_FOCUS_PUNCH,
EFFECT_SMELLINGSALT,
EFFECT_FOLLOW_ME,
EFFECT_NATURE_POWER,
EFFECT_CHARGE,
EFFECT_TAUNT,
EFFECT_HELPING_HAND,
EFFECT_TRICK,
EFFECT_ROLE_PLAY,
EFFECT_WISH,
EFFECT_ASSIST,
EFFECT_INGRAIN,
EFFECT_SUPERPOWER,
EFFECT_MAGIC_COAT,
EFFECT_RECYCLE,
EFFECT_REVENGE,
EFFECT_BRICK_BREAK,
EFFECT_YAWN,
EFFECT_KNOCK_OFF,
EFFECT_ENDEAVOR,
EFFECT_ERUPTION,
EFFECT_SKILL_SWAP,
EFFECT_IMPRISON,
EFFECT_REFRESH,
EFFECT_GRUDGE,
EFFECT_SNATCH,
EFFECT_LOW_KICK,
EFFECT_SECRET_POWER,
EFFECT_DOUBLE_EDGE,
EFFECT_TEETER_DANCE,
EFFECT_BLAZE_KICK,
EFFECT_MUD_SPORT,
EFFECT_POISON_FANG,
EFFECT_WEATHER_BALL,
EFFECT_OVERHEAT,
EFFECT_TICKLE,
EFFECT_COSMIC_POWER,
EFFECT_SKY_UPPERCUT,
EFFECT_BULK_UP,
EFFECT_POISON_TAIL,
EFFECT_WATER_SPORT,
EFFECT_CALM_MIND,
EFFECT_DRAGON_DANCE,
EFFECT_CAMOUFLAGE,
};
#endif // GUARD_BATTLE_MOVE_EFFECTS_H

View File

@@ -1,54 +1,13 @@
#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
#define CMP_EQUAL 0x0
#define CMP_NOT_EQUAL 0x1
#define CMP_GREATER_THAN 0x2
#define CMP_LESS_THAN 0x3
#define CMP_COMMON_BITS 0x4
#define CMP_NO_COMMON_BITS 0x5
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
#define ATK48_STAT_NEGATIVE 0x1
#define ATK48_STAT_BY_TWO 0x2
#define ATK48_BIT_x4 0x4
#define ATK48_LOWER_FAIL_CHECK 0x8
#define ATK4F_DONT_CHECK_STATUSES 0x80
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_CAN_RUN_FROM_BATTLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_EMIT_YESNOBOX 13
#define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
#define ATK80_DMG_CHANGE_SIGN 0
#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
#define ATK80_DMG_DOUBLED 2
#define STAT_CHANGE_BS_PTR 0x1
#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
#define STAT_CHANGE_WORKED 0
#define STAT_CHANGE_DIDNT_WORK 1
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
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);
@@ -57,6 +16,6 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 bank);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const u8 gUnknown_0831C494[];
extern const u8 gUnknown_0831C494[][4];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H

290
include/battle_scripts.h Normal file
View File

@@ -0,0 +1,290 @@
#ifndef GUARD_BATTLE_SCRIPTS_H
#define GUARD_BATTLE_SCRIPTS_H
extern const u8 BattleScript_HitFromCritCalc[];
extern const u8 BattleScript_MoveEnd[];
extern const u8 BattleScript_MakeMoveMissed[];
extern const u8 BattleScript_PrintMoveMissed[];
extern const u8 BattleScript_MoveMissedPause[];
extern const u8 BattleScript_MoveMissed[];
extern const u8 BattleScript_ButItFailed[];
extern const u8 BattleScript_StatUp[];
extern const u8 BattleScript_StatDown[];
extern const u8 BattleScript_AlreadyAtFullHp[];
extern const u8 BattleScript_PresentHealTarget[];
extern const u8 BattleScript_MoveUsedMustRecharge[];
extern const u8 BattleScript_FaintAttacker[];
extern const u8 BattleScript_FaintTarget[];
extern const u8 BattleScript_GiveExp[];
extern const u8 BattleScript_HandleFaintedMon[];
extern const u8 BattleScript_LocalTrainerBattleWon[];
extern const u8 BattleScript_LocalTwoTrainersDefeated[];
extern const u8 BattleScript_LocalBattleWonLoseTexts[];
extern const u8 BattleScript_LocalBattleWonReward[];
extern const u8 BattleScript_PayDayMoneyAndPickUpItems[];
extern const u8 BattleScript_LocalBattleLost[];
extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[];
extern const u8 BattleScript_LocalBattleLostEnd[];
extern const u8 BattleScript_CheckDomeDrew[];
extern const u8 BattleScript_82DAA0B[];
extern const u8 BattleScript_82DAA31[];
extern const u8 BattleScript_LinkBattleWonOrLost[];
extern const u8 BattleScript_82DAA5C[];
extern const u8 BattleScript_82DAA83[];
extern const u8 BattleScript_FrontierTrainerBattleWon[];
extern const u8 BattleScript_82DAAAB[];
extern const u8 BattleScript_82DAAAE[];
extern const u8 BattleScript_82DAACB[];
extern const u8 BattleScript_82DAADA[];
extern const u8 BattleScript_SmokeBallEscape[];
extern const u8 BattleScript_RanAwayUsingMonAbility[];
extern const u8 BattleScript_GotAwaySafely[];
extern const u8 BattleScript_WildMonFled[];
extern const u8 BattleScript_PrintCantRunFromTrainer[];
extern const u8 BattleScript_PrintFailedToRunString[];
extern const u8 BattleScript_PrintCantEscapeFromBattle[];
extern const u8 BattleScript_PrintFullBox[];
extern const u8 BattleScript_ActionSwitch[];
extern const u8 BattleScript_82DAB35[];
extern const u8 BattleScript_82DAB37[];
extern const u8 BattleScript_82DAB44[];
extern const u8 BattleScript_82DAB77[];
extern const u8 BattleScript_82DABB8[];
extern const u8 BattleScript_Pausex20[];
extern const u8 BattleScript_LevelUp[];
extern const u8 BattleScript_RainContinuesOrEnds[];
extern const u8 BattleScript_DamagingWeatherContinues[];
extern const u8 BattleScript_SandStormHailEnds[];
extern const u8 BattleScript_SunlightContinues[];
extern const u8 BattleScript_SunlightFaded[];
extern const u8 BattleScript_OverworldWeatherStarts[];
extern const u8 BattleScript_SideStatusWoreOff[];
extern const u8 BattleScript_SafeguardProtected[];
extern const u8 BattleScript_SafeguardEnds[];
extern const u8 BattleScript_LeechSeedTurnDrain[];
extern const u8 BattleScript_82DAD47[];
extern const u8 BattleScript_82DAD4D[];
extern const u8 BattleScript_BideStoringEnergy[];
extern const u8 BattleScript_BideAttack[];
extern const u8 BattleScript_BideNoEnergyToAttack[];
extern const u8 BattleScript_SuccessForceOut[];
extern const u8 BattleScript_82DADF1[];
extern const u8 BattleScript_MistProtected[];
extern const u8 BattleScript_RageIsBuilding[];
extern const u8 BattleScript_MoveUsedIsDisabled[];
extern const u8 BattleScript_SelectingDisabledMove[];
extern const u8 BattleScript_DisabledNoMore[];
extern const u8 BattleScript_SelectingDisabledMoveInPalace[];
extern const u8 BattleScript_SelectingUnusableMoveInPalace[];
extern const u8 BattleScript_EncoredNoMore[];
extern const u8 BattleScript_DestinyBondTakesLife[];
extern const u8 BattleScript_SpikesOnAttacker[];
extern const u8 BattleScript_82DAE7A[];
extern const u8 BattleScript_SpikesOnTarget[];
extern const u8 BattleScript_82DAEB1[];
extern const u8 BattleScript_SpikesOnFaintedBattler[];
extern const u8 BattleScript_82DAEE8[];
extern const u8 BattleScript_82DAEFE[];
extern const u8 BattleScript_PerishSongTakesLife[];
extern const u8 BattleScript_PerishSongCountGoesDown[];
extern const u8 BattleScript_AllStatsUp[];
extern const u8 BattleScript_82DAF54[];
extern const u8 BattleScript_82DAF72[];
extern const u8 BattleScript_82DAF86[];
extern const u8 BattleScript_82DAF9A[];
extern const u8 BattleScript_82DAFAE[];
extern const u8 BattleScript_82DAFC2[];
extern const u8 BattleScript_RapidSpinAway[];
extern const u8 BattleScript_WrapFree[];
extern const u8 BattleScript_LeechSeedFree[];
extern const u8 BattleScript_SpikesFree[];
extern const u8 BattleScript_MonTookFutureAttack[];
extern const u8 BattleScript_82DB001[];
extern const u8 BattleScript_82DB008[];
extern const u8 BattleScript_82DB020[];
extern const u8 BattleScript_82DB027[];
extern const u8 BattleScript_82DB03F[];
extern const u8 BattleScript_82DB058[];
extern const u8 BattleScript_NoMovesLeft[];
extern const u8 BattleScript_SelectingMoveWithNoPP[];
extern const u8 BattleScript_NoPPForMove[];
extern const u8 BattleScript_SelectingTormentedMove[];
extern const u8 BattleScript_MoveUsedIsTormented[];
extern const u8 BattleScript_SelectingTormentedMoveInPalace[];
extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[];
extern const u8 BattleScript_MoveUsedIsTaunted[];
extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[];
extern const u8 BattleScript_WishComesTrue[];
extern const u8 BattleScript_IngrainTurnHeal[];
extern const u8 BattleScript_AtkDefDown[];
extern const u8 BattleScript_82DB144[];
extern const u8 BattleScript_82DB167[];
extern const u8 BattleScript_KnockedOff[];
extern const u8 BattleScript_MoveUsedIsImprisoned[];
extern const u8 BattleScript_SelectingImprisionedMove[];
extern const u8 BattleScript_SelectingImprisionedMoveInPalace[];
extern const u8 BattleScript_GrudgeTakesPp[];
extern const u8 BattleScript_MagicCoatBounce[];
extern const u8 BattleScript_SnatchedMove[];
extern const u8 BattleScript_EnduredMsg[];
extern const u8 BattleScript_OneHitKOMsg[];
extern const u8 BattleScript_SAtkDown2[];
extern const u8 BattleScript_82DB1FE[];
extern const u8 BattleScript_FocusPunchSetUp[];
extern const u8 BattleScript_MoveUsedIsAsleep[];
extern const u8 BattleScript_MoveUsedWokeUp[];
extern const u8 BattleScript_MonWokeUpInUproar[];
extern const u8 BattleScript_PoisonTurnDmg[];
extern const u8 BattleScript_82DB243[];
extern const u8 BattleScript_82DB245[];
extern const u8 BattleScript_82DB25E[];
extern const u8 BattleScript_BurnTurnDmg[];
extern const u8 BattleScript_MoveUsedIsFrozen[];
extern const u8 BattleScript_MoveUsedUnfroze[];
extern const u8 BattleScript_DefrostedViaFireMove[];
extern const u8 BattleScript_MoveUsedIsParalyzed[];
extern const u8 BattleScript_MoveUsedFlinched[];
extern const u8 BattleScript_PrintUproarOverTurns[];
extern const u8 BattleScript_ThrashConfuses[];
extern const u8 BattleScript_MoveUsedIsConfused[];
extern const u8 BattleScript_82DB2D4[];
extern const u8 BattleScript_82DB2FF[];
extern const u8 BattleScript_MoveUsedIsConfusedNoMore[];
extern const u8 BattleScript_PrintPayDayMoneyString[];
extern const u8 BattleScript_WrapTurnDmg[];
extern const u8 BattleScript_WrapEnds[];
extern const u8 BattleScript_MoveUsedIsInLove[];
extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[];
extern const u8 BattleScript_NightmareTurnDmg[];
extern const u8 BattleScript_CurseTurnDmg[];
extern const u8 BattleScript_TargetPRLZHeal[];
extern const u8 BattleScript_MoveEffectSleep[];
extern const u8 BattleScript_82DB374[];
extern const u8 BattleScript_YawnMakesAsleep[];
extern const u8 BattleScript_MoveEffectPoison[];
extern const u8 BattleScript_MoveEffectBurn[];
extern const u8 BattleScript_MoveEffectFreeze[];
extern const u8 BattleScript_MoveEffectParalysis[];
extern const u8 BattleScript_MoveEffectUproar[];
extern const u8 BattleScript_MoveEffectToxic[];
extern const u8 BattleScript_MoveEffectPayDay[];
extern const u8 BattleScript_MoveEffectWrap[];
extern const u8 BattleScript_MoveEffectConfusion[];
extern const u8 BattleScript_MoveEffectRecoil33[];
extern const u8 BattleScript_DoRecoil33[];
extern const u8 BattleScript_Recoil33End[];
extern const u8 BattleScript_ItemSteal[];
extern const u8 BattleScript_DrizzleActivates[];
extern const u8 BattleScript_SpeedBoostActivates[];
extern const u8 BattleScript_TraceActivates[];
extern const u8 BattleScript_RainDishActivates[];
extern const u8 BattleScript_SandstreamActivates[];
extern const u8 BattleScript_ShedSkinActivates[];
extern const u8 BattleScript_WeatherFormChanges[];
extern const u8 BattleScript_WeatherFormChangesLoop[];
extern const u8 BattleScript_CastformChange[];
extern const u8 BattleScript_82DB4AF[];
extern const u8 BattleScript_82DB4B8[];
extern const u8 BattleScript_82DB4BE[];
extern const u8 BattleScript_82DB4C1[];
extern const u8 BattleScript_82DB4CD[];
extern const u8 BattleScript_82DB510[];
extern const u8 BattleScript_82DB51B[];
extern const u8 BattleScript_82DB51C[];
extern const u8 BattleScript_DroughtActivates[];
extern const u8 BattleScript_TookAttack[];
extern const u8 BattleScript_SturdyPreventsOHKO[];
extern const u8 BattleScript_DampStopsExplosion[];
extern const u8 BattleScript_MoveHPDrain_PPLoss[];
extern const u8 BattleScript_MoveHPDrain[];
extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[];
extern const u8 BattleScript_MonMadeMoveUseless[];
extern const u8 BattleScript_FlashFireBoost_PPLoss[];
extern const u8 BattleScript_FlashFireBoost[];
extern const u8 BattleScript_AbilityNoStatLoss[];
extern const u8 BattleScript_BRNPrevention[];
extern const u8 BattleScript_PRLZPrevention[];
extern const u8 BattleScript_PSNPrevention[];
extern const u8 BattleScript_ObliviousPreventsAttraction[];
extern const u8 BattleScript_FlinchPrevention[];
extern const u8 BattleScript_OwnTempoPrevents[];
extern const u8 BattleScript_SoundproofProtected[];
extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
extern const u8 BattleScript_StickyHoldActivates[];
extern const u8 BattleScript_ColorChangeActivates[];
extern const u8 BattleScript_RoughSkinActivates[];
extern const u8 BattleScript_CuteCharmActivates[];
extern const u8 BattleScript_ApplySecondaryEffect[];
extern const u8 BattleScript_SynchronizeActivates[];
extern const u8 BattleScript_NoItemSteal[];
extern const u8 BattleScript_AbilityCuredStatus[];
extern const u8 BattleScript_82DB695[];
extern const u8 BattleScript_IgnoresAndUsesRandomMove[];
extern const u8 BattleScript_MoveUsedLoafingAround[];
extern const u8 BattleScript_82DB6C7[];
extern const u8 BattleScript_IgnoresAndFallsAsleep[];
extern const u8 BattleScript_82DB6F0[];
extern const u8 BattleScript_SubstituteFade[];
extern const u8 BattleScript_BerryCurePrlzEnd2[];
extern const u8 BattleScript_BerryCureParRet[];
extern const u8 BattleScript_BerryCurePsnEnd2[];
extern const u8 BattleScript_BerryCurePsnRet[];
extern const u8 BattleScript_BerryCureBrnEnd2[];
extern const u8 BattleScript_BerryCureBrnRet[];
extern const u8 BattleScript_BerryCureFrzEnd2[];
extern const u8 BattleScript_BerryCureFrzRet[];
extern const u8 BattleScript_BerryCureSlpEnd2[];
extern const u8 BattleScript_BerryCureSlpRet[];
extern const u8 BattleScript_BerryCureConfusionEnd2[];
extern const u8 BattleScript_BerryCureConfusionRet[];
extern const u8 BattleScript_BerryCureChosenStatusEnd2[];
extern const u8 BattleScript_BerryCureChosenStatusRet[];
extern const u8 BattleScript_WhiteHerbEnd2[];
extern const u8 BattleScript_WhiteHerbRet[];
extern const u8 BattleScript_ItemHealHP_RemoveItem[];
extern const u8 BattleScript_BerryPPHealEnd2[];
extern const u8 BattleScript_ItemHealHP_End2[];
extern const u8 BattleScript_ItemHealHP_Ret[];
extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
extern const u8 BattleScript_HangedOnMsg[];
extern const u8 BattleScript_BerryConfuseHealEnd2[];
extern const u8 BattleScript_BerryStatRaiseEnd2[];
extern const u8 BattleScript_82DB85B[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
extern const u8 BattleScript_82DB87D[];
extern const u8 BattleScript_82DB881[];
extern const u8 BattleScript_82DB887[];
extern const u8 BattleScript_82DB89D[];
extern const u8 BattleScript_82DB8BE[];
extern const u8 BattleScript_82DB8E0[];
extern const u8 BattleScript_82DB8F3[];
extern const u8 BattleScript_82DB973[];
extern const u8 BattleScript_82DB992[];
extern const u8 BattleScript_AskIfWantsToForfeitMatch[];
extern const u8 BattleScript_PrintPlayerForfeited[];
extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[];
extern const u8 BattleScript_BallThrow[];
extern const u8 BattleScript_BallThrowByWally[];
extern const u8 BattleScript_SafariBallThrow[];
extern const u8 BattleScript_SuccessBallThrow[];
extern const u8 BattleScript_82DBD92[];
extern const u8 BattleScript_82DBDA5[];
extern const u8 BattleScript_82DBDC2[];
extern const u8 BattleScript_82DBDC3[];
extern const u8 BattleScript_WallyBallThrow[];
extern const u8 BattleScript_ShakeBallThrow[];
extern const u8 BattleScript_82DBE01[];
extern const u8 BattleScript_TrainerBallBlock[];
extern const u8 BattleScript_82DBE12[];
extern const u8 BattleScript_82DBE1C[];
extern const u8 BattleScript_82DBE4B[];
extern const u8 BattleScript_82DBE6F[];
extern const u8 BattleScript_82DBE91[];
extern const u8 BattleScript_RunByUsingItem[];
extern const u8 BattleScript_ActionWatchesCarefully[];
extern const u8 BattleScript_ActionGetNear[];
extern const u8 BattleScript_ActionThrowPokeblock[];
extern const u8 BattleScript_82DBEE3[];
#endif // GUARD_BATTLE_SCRIPTS_H

View File

@@ -1,15 +1,85 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
enum
{
TRAINER_BATTLE_NORMAL,
TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC,
TRAINER_BATTLE_CONTINUE_SCRIPT,
TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT,
TRAINER_BATTLE_DOUBLE,
TRAINER_BATTLE_REMATCH,
TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE,
TRAINER_BATTLE_REMATCH_DOUBLE,
TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC,
TRAINER_BATTLE_9,
TRAINER_BATTLE_SET_TRAINER_A,
TRAINER_BATTLE_SET_TRAINER_B,
TRAINER_BATTLE_12,
};
u8 HasTrainerAlreadyBeenFought(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
#define REMATCHES_COUNT 5
#define REMATCH_TABLE_ENTRIES 78
#define REMATCH_WALLY_ENTRY 64
#define REMATCH_ELITE_FOUR_ENTRIES 73
struct RematchTrainer
{
u16 trainerIds[REMATCHES_COUNT];
u16 mapGroup;
u16 mapNum;
};
extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u16 gPartnerTrainerId;
void BattleSetup_StartWildBattle(void);
void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
void StartWallyTutorialBattle(void);
void BattleSetup_StartScriptedWildBattle(void);
void BattleSetup_StartLatiBattle(void);
void BattleSetup_StartLegendaryBattle(void);
void StartGroudonKyogreBattle(void);
void StartRegiBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 sub_80B100C(s32 arg0);
void ChooseStarter(void);
void ResetTrainerOpponentIds(void);
void SetMapVarsToTrainer(void);
const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript);
void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript);
void SetUpTwoTrainersBattle(void);
bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
void sub_80B16D8(void);
u8 GetTrainerBattleMode(void);
bool8 GetTrainerFlag(void);
bool8 HasTrainerBeenFought(u16 trainerId);
void SetTrainerFlag(u16 trainerId);
void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
u8 *BattleSetup_GetScriptAddrAfterBattle(void);
u8 *BattleSetup_GetTrainerPostBattleScript(void);
void BattleSetup_StartRematchBattle(void);
void ShowTrainerIntroSpeech(void);
const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
const u8 *BattleSetup_GetTrainerPostBattleScript(void);
void ShowTrainerCantBattleSpeech(void);
void SetUpTrainerEncounterMusic(void);
const u8 *GetTrainerALoseText(void);
const u8 *GetTrainerBLoseText(void);
const u8 *GetTrainerWonSpeech(void);
void UpdateRematchIfDefeated(s32 rematchTableId);
void IncrementRematchStepCounter(void);
void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum);
bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum);
bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum);
u16 GetLastBeatenRematchTrainerId(u16 trainerId);
bool8 ShouldTryRematchBattle(void);
bool8 IsTrainerReadyForRematch(void);
void ShouldTryGetTrainerScript(void);
u16 CountBattledRematchTeams(u16 trainerId);
#endif // GUARD_BATTLE_SETUP_H

View File

@@ -1,6 +1,72 @@
#ifndef GUARD_BATTLE_TRANSITION_H
#define GUARD_BATTLE_TRANSITION_H
void sub_8149DFC(u8 a1);
void TestBattleTransition(u8 transitionId);
void BattleTransition_StartOnField(u8 transitionId);
void BattleTransition_Start(u8 transitionId);
bool8 IsBattleTransitionDone(void);
bool8 FldEff_Pokeball(void);
void TransitionPhase1_Task_RunFuncs(u8 taskId);
void sub_8149F58(u16 **a0, u16 **a1);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;
enum // TRANSITION_MUGSHOT
{
MUGSHOT_SYDNEY,
MUGSHOT_PHOEBE,
MUGSHOT_GLACIA,
MUGSHOT_DRAKE,
MUGSHOT_CHAMPION,
MUGSHOTS_COUNT
};
// credits for the names go to Dyskinesia, Tetrable and Farore
// names are naturally subject to change
#define B_TRANSITION_BLUR 0
#define B_TRANSITION_SWIRL 1
#define B_TRANSITION_SHUFFLE 2
#define B_TRANSITION_BIG_POKEBALL 3
#define B_TRANSITION_POKEBALLS_TRAIL 4
#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
#define B_TRANSITION_RIPPLE 6
#define B_TRANSITION_WAVE 7
#define B_TRANSITION_SLICE 8
#define B_TRANSITION_WHITEFADE 9
#define B_TRANSITION_GRID_SQUARES 10
#define B_TRANSITION_SHARDS 11
#define B_TRANSITION_SYDNEY 12
#define B_TRANSITION_PHOEBE 13
#define B_TRANSITION_GLACIA 14
#define B_TRANSITION_DRAKE 15
#define B_TRANSITION_CHAMPION 16
// added in Emerald
#define B_TRANSITION_AQUA 17
#define B_TRANSITION_MAGMA 18
#define B_TRANSITION_REGICE 19
#define B_TRANSITION_REGISTEEL 20
#define B_TRANSITION_REGIROCK 21
#define B_TRANSITION_KYOGRE 22
#define B_TRANSITION_GROUDON 23
#define B_TRANSITION_RAYQUAZA 24
#define B_TRANSITION_SHRED_SPLIT 25
#define B_TRANSITION_BLACKHOLE1 26
#define B_TRANSITION_BLACKHOLE2 27
#define B_TRANSITION_RECTANGULAR_SPIRAL 28
#define B_TRANSITION_29 29
#define B_TRANSITION_30 30
#define B_TRANSITION_31 31
#define B_TRANSITION_32 32
#define B_TRANSITION_33 33
#define B_TRANSITION_34 34
#define B_TRANSITION_35 35
#define B_TRANSITION_36 36
#define B_TRANSITION_37 37
#define B_TRANSITION_38 38
#define B_TRANSITION_39 39
#define B_TRANSITION_40 40
#define B_TRANSITION_41 41
#define B_TRANSITION_COUNT 42
#endif // GUARD_BATTLE_TRANSITION_H

View File

@@ -44,12 +44,12 @@
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
u8 GetBattleBank(u8 caseId);
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
void MarkAllBufferBanksForExecution(void); // unused
void MarkBufferBankForExecution(u8 bank);
void MarkAllBattlersForControllerExec(void); // unused
void MarkBattlerForControllerExec(u8 bank);
void sub_803F850(u8 arg0);
void CancelMultiTurnMoves(u8 bank);
bool8 WasUnableToUseMove(u8 bank);
@@ -66,8 +66,8 @@ bool8 AreAllMovesUnusable(void);
u8 GetImprisonedMovesCount(u8 bank, u16 move);
u8 UpdateTurnCounters(void);
u8 TurnBasedEffects(void);
bool8 sub_8041364(void);
bool8 sub_8041728(void);
bool8 HandleWishPerishSongOnTurnEnd(void);
bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
bool8 sub_80423F4(u8 bank, u8 r1, u8 r2);
@@ -79,6 +79,6 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
void ClearFuryCutterDestinyBondGrudge(u8 bank);
void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 useMoveTarget);
u8 IsPokeDisobedient(void);
u8 IsMonDisobedient(void);
#endif // GUARD_BATTLE_UTIL_H

10
include/battle_util2.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef GUARD_BATTLE_UTIL2_H
#define GUARD_BATTLE_UTIL2_H
void AllocateBattleResources(void);
void FreeBattleResources(void);
void AdjustFriendshipOnBattleFaint(u8 bank);
void sub_80571DC(u8 bank, u8 arg1);
u32 sub_805725C(u8 bank);
#endif // GUARD_BATTLE_UTIL_H

View File

@@ -11,6 +11,16 @@ enum
BERRY_FIRMNESS_SUPER_HARD,
};
enum
{
FLAVOR_SPICY,
FLAVOR_DRY,
FLAVOR_SWEET,
FLAVOR_BITTER,
FLAVOR_SOUR,
FLAVOR_COUNT
};
#define NUM_BERRIES 44
extern const u8 *const gBerryTreeFieldObjectGraphicsIdTablePointers[NUM_BERRIES];

8
include/berry_blender.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef GUARD_BERRY_BLENDER_H
#define GUARD_BERRY_BLENDER_H
void DoBerryBlending(void);
u16 GetBlenderArrowPosition(void);
void ShowBerryBlenderRecordWindow(void);
#endif // GUARD_BERRY_BLENDER_H

View File

@@ -0,0 +1,6 @@
#ifndef GUARD_BERRY_FIX_PROGRAM_H
#define GUARD_BERRY_FIX_PROGRAM_H
void CB2_InitBerryFixProgram(void);
#endif // GUARD_BERRY_FIX_PROGRAM_H

View File

@@ -0,0 +1,6 @@
#ifndef GUARD_BERRY_TAG_SCREEN_H
#define GUARD_BERRY_TAG_SCREEN_H
void DoBerryTagScreen(void);
#endif // GUARD_BERRY_TAG_SCREEN_H

View File

@@ -70,7 +70,7 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);

78
include/bike.h Normal file
View File

@@ -0,0 +1,78 @@
#ifndef GUARD_BIKE_H
#define GUARD_BIKE_H
// the struct below is used for checking button combinations of the last input so that the acro can potentially perform a side/turn jump.
// its possible that at some point Game Freak intended for the acro bike to have more complex tricks: but only the acro jump combinations can be seen in the final ROM.
struct BikeHistoryInputInfo
{
u32 dirHistoryMatch; // the direction you need to press
u32 abStartSelectHistoryMatch; // the button you need to press
u32 dirHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked
u32 abStartSelectHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked
const u8 *dirTimerHistoryList; // list of timers to check for direction before the button+dir combination can be verified.
const u8 *abStartSelectHistoryList; // list of timers to check for buttons before the button+dir combination can be verified.
u32 direction; // direction to jump
};
// Player speeds
enum
{
SPEED_STANDING,
SPEED_NORMAL,
SPEED_FAST,
SPEED_FASTER,
SPEED_FASTEST,
};
// mach bike transitions enum
enum
{
MACH_TRANS_FACE_DIRECTION,
MACH_TRANS_TURN_DIRECTION,
MACH_TRANS_KEEP_MOVING,
MACH_TRANS_START_MOVING
};
// Acro bike states
enum
{
ACRO_STATE_NORMAL,
ACRO_STATE_TURNING,
ACRO_STATE_WHEELIE_STANDING,
ACRO_STATE_BUNNY_HOP,
ACRO_STATE_WHEELIE_MOVING,
ACRO_STATE_SIDE_JUMP,
ACRO_STATE_TURN_JUMP,
};
// Acro bike transitions
enum
{
ACRO_TRANS_FACE_DIRECTION,
ACRO_TRANS_TURN_DIRECTION,
ACRO_TRANS_MOVING,
ACRO_TRANS_NORMAL_TO_WHEELIE,
ACRO_TRANS_WHEELIE_TO_NORMAL,
ACRO_TRANS_WHEELIE_IDLE,
ACRO_TRANS_WHEELIE_HOPPING_STANDING,
ACRO_TRANS_WHEELIE_HOPPING_MOVING,
ACRO_TRANS_SIDE_JUMP,
ACRO_TRANS_TURN_JUMP,
ACRO_TRANS_WHEELIE_MOVING,
ACRO_TRANS_WHEELIE_RISING_MOVING,
ACRO_TRANS_WHEELIE_LOWERING_MOVING,
};
void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
void Bike_TryAcroBikeHistoryUpdate(u16 newKeys, u16 heldKeys);
bool8 RS_IsRunningDisallowed(u8 tile);
bool8 IsBikingDisallowedByPlayer(void);
bool8 player_should_look_direction_be_enforced_upon_movement(void);
void GetOnOffBike(u8 transitionFlags);
void BikeClearState(int newDirHistory, int newAbStartHistory);
void Bike_UpdateBikeCounterSpeed(u8 counter);
s16 GetPlayerSpeed(void);
void Bike_HandleBumpySlopeJump(void);
bool32 IsRunningDisallowed(u8 metatile);
#endif // GUARD_BIKE_H

View File

@@ -1,12 +1,6 @@
#ifndef GUARD_BLEND_PALETTE_H
#define GUARD_BLEND_PALETTE_H
// Exported type declarations
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
// Exported RAM declarations
// Exported ROM declarations
void BlendPalette(u16, u16, u8, u16);
#endif //GUARD_BLEND_PALETTE_H
#endif // GUARD_BLEND_PALETTE_H

View File

@@ -0,0 +1,6 @@
#ifndef GUARD_CLEAR_SAVE_DATA_MENU_H
#define GUARD_CLEAR_SAVE_DATA_MENU_H
void CB2_InitClearSaveDataScreen(void);
#endif // GUARD_CLEAR_SAVE_DATA_MENU_H

View File

@@ -1,6 +1,23 @@
#ifndef GUARD_CONFIG_H
#define GUARD_CONFIG_H
// In the Generation 3 games, Asserts were used in various debug builds.
// Ruby/Sapphire and Emerald do not have these asserts while Fire Red
// still has them in the ROM. This is because the developers forgot
// to define NDEBUG before release, however this has been changed as
// Ruby's actual debug build does not use the AGBPrint features.
#define NDEBUG
// To enable print debugging, comment out "#define NDEBUG". This allows
// the various AGBPrint functions to be used. (See include/gba/isagbprint.h).
// Some emulators support a debug console window: uncomment NoCashGBAPrint()
// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary
// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you
// would normally use AGBPrint() and AGBPrintf().
// NOTE: Don't try to enable assert right now as many pointers
// still exist in defines and WILL likely result in a broken ROM.
#define ENGLISH
#ifdef ENGLISH

View File

@@ -0,0 +1,83 @@
#ifndef GUARD_CONSTANTS_ABILITIES_H
#define GUARD_CONSTANTS_ABILITIES_H
#define ABILITY_NONE 0
#define ABILITY_STENCH 1
#define ABILITY_DRIZZLE 2
#define ABILITY_SPEED_BOOST 3
#define ABILITY_BATTLE_ARMOR 4
#define ABILITY_STURDY 5
#define ABILITY_DAMP 6
#define ABILITY_LIMBER 7
#define ABILITY_SAND_VEIL 8
#define ABILITY_STATIC 9
#define ABILITY_VOLT_ABSORB 10
#define ABILITY_WATER_ABSORB 11
#define ABILITY_OBLIVIOUS 12
#define ABILITY_CLOUD_NINE 13
#define ABILITY_COMPOUND_EYES 14
#define ABILITY_INSOMNIA 15
#define ABILITY_COLOR_CHANGE 16
#define ABILITY_IMMUNITY 17
#define ABILITY_FLASH_FIRE 18
#define ABILITY_SHIELD_DUST 19
#define ABILITY_OWN_TEMPO 20
#define ABILITY_SUCTION_CUPS 21
#define ABILITY_INTIMIDATE 22
#define ABILITY_SHADOW_TAG 23
#define ABILITY_ROUGH_SKIN 24
#define ABILITY_WONDER_GUARD 25
#define ABILITY_LEVITATE 26
#define ABILITY_EFFECT_SPORE 27
#define ABILITY_SYNCHRONIZE 28
#define ABILITY_CLEAR_BODY 29
#define ABILITY_NATURAL_CURE 30
#define ABILITY_LIGHTNING_ROD 31
#define ABILITY_SERENE_GRACE 32
#define ABILITY_SWIFT_SWIM 33
#define ABILITY_CHLOROPHYLL 34
#define ABILITY_ILLUMINATE 35
#define ABILITY_TRACE 36
#define ABILITY_HUGE_POWER 37
#define ABILITY_POISON_POINT 38
#define ABILITY_INNER_FOCUS 39
#define ABILITY_MAGMA_ARMOR 40
#define ABILITY_WATER_VEIL 41
#define ABILITY_MAGNET_PULL 42
#define ABILITY_SOUNDPROOF 43
#define ABILITY_RAIN_DISH 44
#define ABILITY_SAND_STREAM 45
#define ABILITY_PRESSURE 46
#define ABILITY_THICK_FAT 47
#define ABILITY_EARLY_BIRD 48
#define ABILITY_FLAME_BODY 49
#define ABILITY_RUN_AWAY 50
#define ABILITY_KEEN_EYE 51
#define ABILITY_HYPER_CUTTER 52
#define ABILITY_PICKUP 53
#define ABILITY_TRUANT 54
#define ABILITY_HUSTLE 55
#define ABILITY_CUTE_CHARM 56
#define ABILITY_PLUS 57
#define ABILITY_MINUS 58
#define ABILITY_FORECAST 59
#define ABILITY_STICKY_HOLD 60
#define ABILITY_SHED_SKIN 61
#define ABILITY_GUTS 62
#define ABILITY_MARVEL_SCALE 63
#define ABILITY_LIQUID_OOZE 64
#define ABILITY_OVERGROW 65
#define ABILITY_BLAZE 66
#define ABILITY_TORRENT 67
#define ABILITY_SWARM 68
#define ABILITY_ROCK_HEAD 69
#define ABILITY_DROUGHT 70
#define ABILITY_ARENA_TRAP 71
#define ABILITY_VITAL_SPIRIT 72
#define ABILITY_WHITE_SMOKE 73
#define ABILITY_PURE_POWER 74
#define ABILITY_SHELL_ARMOR 75
#define ABILITY_CACOPHONY 76
#define ABILITY_AIR_LOCK 77
#endif // GUARD_CONSTANTS_ABILITIES_H

284
include/constants/battle.h Normal file
View File

@@ -0,0 +1,284 @@
#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
* what side the battler is on, either the player's side or the opponent's side.
* The second bit determines what flank the battler is on, either the left or right.
* Note that the opponent's flanks are drawn corresponding to their perspective, so
* their right mon appears on the left, and their left mon appears on the right.
* The battler ID is usually the same as the position, except in the case of link battles.
*
* + ------------------------- +
* | Opponent's side |
* | Right Left |
* | 3 1 |
* | |
* | Player's side |
* | Left Right |
* | 0 2 |
* ----------------------------+
* | |
* | |
* +---------------------------+
*/
#define MAX_BATTLERS_COUNT 4
#define B_POSITION_PLAYER_LEFT 0
#define B_POSITION_OPPONENT_LEFT 1
#define B_POSITION_PLAYER_RIGHT 2
#define B_POSITION_OPPONENT_RIGHT 3
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
#define BATTLE_OPPOSITE(id) ((id) ^ 1)
#define BATTLE_PARTNER(id) ((id) ^ 2)
#define B_SIDE_PLAYER 0
#define B_SIDE_OPPONENT 1
#define B_FLANK_LEFT 0
#define B_FLANK_RIGHT 1
#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
#define BATTLE_TYPE_TRAINER 0x0008
#define BATTLE_TYPE_FIRST_BATTLE 0x0010
#define BATTLE_TYPE_20 0x0020
#define BATTLE_TYPE_MULTI 0x0040
#define BATTLE_TYPE_SAFARI 0x0080
#define BATTLE_TYPE_BATTLE_TOWER 0x0100
#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
#define BATTLE_TYPE_ROAMER 0x0400
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
#define BATTLE_TYPE_DOME 0x10000
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
#define BATTLE_TYPE_PIKE 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
#define BATTLE_TYPE_x2000000 0x2000000
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
// 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 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 // 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
// Seems like per-battler statuses. Not quite sure how to categorize these
#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
#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_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#define STATUS3_UNDERWATER 0x40000
#define STATUS3_INTIMIDATE_POKES 0x80000
#define STATUS3_TRACE 0x100000
#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
// Not really sure what a "hitmarker" is.
#define HITMARKER_x10 0x00000010
#define HITMARKER_x20 0x00000020
#define HITMARKER_DESTINYBOND 0x00000040
#define HITMARKER_NO_ANIMATIONS 0x00000080
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
#define HITMARKER_NO_ATTACKSTRING 0x00000200
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
#define HITMARKER_NO_PPDEDUCT 0x00000800
#define HITMARKER_PURSUIT_TRAP 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
#define HITMARKER_RUN 0x00008000
#define HITMARKER_IGNORE_ON_AIR 0x00010000
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
#define HITMARKER_x100000 0x00100000
#define HITMARKER_x200000 0x00200000
#define HITMARKER_x400000 0x00400000
#define HITMARKER_x800000 0x00800000
#define HITMARKER_GRUDGE 0x01000000
#define HITMARKER_OBEYS 0x02000000
#define HITMARKER_x4000000 0x04000000
#define HITMARKER_x8000000 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)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_X4 (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
// Flags describing move's result
#define MOVE_RESULT_MISSED (1 << 0)
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
#define MOVE_RESULT_FAILED (1 << 5)
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
// Battle Weather flags
#define WEATHER_RAIN_TEMPORARY (1 << 0)
#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define WEATHER_RAIN_PERMANENT (1 << 2)
#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
#define WEATHER_SUN_TEMPORARY (1 << 5)
#define WEATHER_SUN_PERMANENT (1 << 6)
#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
#define WEATHER_HAIL (1 << 7)
#define WEATHER_HAIL_ANY (WEATHER_HAIL)
#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
// Move Effects
#define MOVE_EFFECT_SLEEP 0x1
#define MOVE_EFFECT_POISON 0x2
#define MOVE_EFFECT_BURN 0x3
#define MOVE_EFFECT_FREEZE 0x4
#define MOVE_EFFECT_PARALYSIS 0x5
#define MOVE_EFFECT_TOXIC 0x6
#define MOVE_EFFECT_CONFUSION 0x7
#define MOVE_EFFECT_FLINCH 0x8
#define MOVE_EFFECT_TRI_ATTACK 0x9
#define MOVE_EFFECT_UPROAR 0xA
#define MOVE_EFFECT_PAYDAY 0xB
#define MOVE_EFFECT_CHARGING 0xC
#define MOVE_EFFECT_WRAP 0xD
#define MOVE_EFFECT_RECOIL_25 0xE
#define MOVE_EFFECT_ATK_PLUS_1 0xF
#define MOVE_EFFECT_DEF_PLUS_1 0x10
#define MOVE_EFFECT_SPD_PLUS_1 0x11
#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
#define MOVE_EFFECT_ACC_PLUS_1 0x14
#define MOVE_EFFECT_EVS_PLUS_1 0x15
#define MOVE_EFFECT_ATK_MINUS_1 0x16
#define MOVE_EFFECT_DEF_MINUS_1 0x17
#define MOVE_EFFECT_SPD_MINUS_1 0x18
#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
#define MOVE_EFFECT_ACC_MINUS_1 0x1B
#define MOVE_EFFECT_EVS_MINUS_1 0x1C
#define MOVE_EFFECT_RECHARGE 0x1D
#define MOVE_EFFECT_RAGE 0x1E
#define MOVE_EFFECT_STEAL_ITEM 0x1F
#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
#define MOVE_EFFECT_NIGHTMARE 0x21
#define MOVE_EFFECT_ALL_STATS_UP 0x22
#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_ATK_PLUS_2 0x27
#define MOVE_EFFECT_DEF_PLUS_2 0x28
#define MOVE_EFFECT_SPD_PLUS_2 0x29
#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
#define MOVE_EFFECT_ACC_PLUS_2 0x2C
#define MOVE_EFFECT_EVS_PLUS_2 0x2D
#define MOVE_EFFECT_ATK_MINUS_2 0x2E
#define MOVE_EFFECT_DEF_MINUS_2 0x2F
#define MOVE_EFFECT_SPD_MINUS_2 0x30
#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
#define MOVE_EFFECT_ACC_MINUS_2 0x33
#define MOVE_EFFECT_EVS_MINUS_2 0x34
#define MOVE_EFFECT_THRASH 0x35
#define MOVE_EFFECT_KNOCK_OFF 0x36
#define MOVE_EFFECT_NOTHING_37 0x37
#define MOVE_EFFECT_NOTHING_38 0x38
#define MOVE_EFFECT_NOTHING_39 0x39
#define MOVE_EFFECT_NOTHING_3A 0x3A
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
#define MOVE_EFFECT_NOTHING_3C 0x3C
#define MOVE_EFFECT_NOTHING_3D 0x3D
#define MOVE_EFFECT_NOTHING_3E 0x3E
#define MOVE_EFFECT_NOTHING_3F 0x3F
#define MOVE_EFFECT_AFFECTS_USER 0x40
#define MOVE_EFFECT_CERTAIN 0x80
#endif // GUARD_CONSTANTS_BATTLE_H

View File

@@ -0,0 +1,52 @@
#ifndef GUARD_CONSTANTS_BATTLE_AI_H
#define GUARD_CONSTANTS_BATTLE_AI_H
// battlers
#define AI_TARGET 0
#define AI_USER 1
#define AI_TARGET_PARTNER 2
#define AI_USER_PARTNER 3
// get_type command
#define AI_TYPE1_TARGET 0
#define AI_TYPE1_USER 1
#define AI_TYPE2_TARGET 2
#define AI_TYPE2_USER 3
#define AI_TYPE_MOVE 4
// type effectiveness
#define AI_EFFECTIVENESS_x4 160
#define AI_EFFECTIVENESS_x2 80
#define AI_EFFECTIVENESS_x1 40
#define AI_EFFECTIVENESS_x0_5 20
#define AI_EFFECTIVENESS_x0_25 10
#define AI_EFFECTIVENESS_x0 0
// ai weather
#define AI_WEATHER_SUN 0
#define AI_WEATHER_RAIN 1
#define AI_WEATHER_SANDSTORM 2
#define AI_WEATHER_HAIL 3
// get_how_powerful_move_is
#define MOVE_POWER_DISCOURAGED 0
#define MOVE_NOT_MOST_POWERFUL 1
#define MOVE_MOST_POWERFUL 2
// script's table id to bit
#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
#define AI_SCRIPT_CHECK_VIABILITY (1 << 1)
#define AI_SCRIPT_TRY_TO_FAINT (1 << 2)
#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
#define AI_SCRIPT_RISKY (1 << 4)
#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5)
#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6)
#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7)
#define AI_SCRIPT_HP_AWARE (1 << 8)
#define AI_SCRIPT_UNKNOWN (1 << 9)
// 10 - 28 are not used
#define AI_SCRIPT_ROAMING (1 << 29)
#define AI_SCRIPT_SAFARI (1 << 30)
#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
#endif // GUARD_CONSTANTS_BATTLE_AI_H

View File

@@ -0,0 +1,85 @@
#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H
#define GUARD_CONSTANTS_BATTLE_ANIM_H
// battlers
#define ANIM_ATTACKER 0
#define ANIM_TARGET 1
#define ANIM_ATK_PARTNER 2
#define ANIM_DEF_PARTNER 3
// move background ids
#define BG_DARK_ 0 // the same as BG_DARK but is unused
#define BG_DARK 1
#define BG_GHOST 2
#define BG_PSYCHIC 3
#define BG_IMPACT_OPPONENT 4
#define BG_IMPACT_PLAYER 5
#define BG_IMPACT_CONTESTS 6
#define BG_DRILL 7
#define BG_DRILL_CONTESTS 8
#define BG_HIGHSPEED_OPPONENT 9
#define BG_HIGHSPEED_PLAYER 10
#define BG_THUNDER 11
#define BG_GUILLOTINE_OPPONENT 12
#define BG_GUILLOTINE_PLAYER 13
#define BG_GUILLOTINE_CONTESTS 14
#define BG_ICE 15
#define BG_COSMIC 16
#define BG_SEISMICTOSS_SKUUPPERCUT 17
#define BG_FLYING 18
#define BG_FLYING_CONTESTS 19
#define BG_AURORABEAM 20
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
#define BG_SOLARBEAM_OPPONENT 24
#define BG_SOLARBEAM_PLAYER 25
#define BG_SOLARBEAM_CONTESTS 26
// table ids for general animations
#define B_ANIM_CASTFORM_CHANGE 0x0
#define B_ANIM_STATS_CHANGE 0x1
#define B_ANIM_SUBSTITUTE_FADE 0x2
#define B_ANIM_SUBSTITUTE_APPEAR 0x3
#define B_ANIM_x4 0x4
#define B_ANIM_ITEM_KNOCKOFF 0x5
#define B_ANIM_TURN_TRAP 0x6
#define B_ANIM_ITEM_EFFECT 0x7
#define B_ANIM_SMOKEBALL_ESCAPE 0x8
#define B_ANIM_HANGED_ON 0x9
#define B_ANIM_RAIN_CONTINUES 0xA
#define B_ANIM_SUN_CONTINUES 0xB
#define B_ANIM_SANDSTORM_CONTINUES 0xC
#define B_ANIM_HAIL_CONTINUES 0xD
#define B_ANIM_LEECH_SEED_DRAIN 0xE
#define B_ANIM_MON_HIT 0xF
#define B_ANIM_ITEM_STEAL 0x10
#define B_ANIM_SNATCH_MOVE 0x11
#define B_ANIM_FUTURE_SIGHT_HIT 0x12
#define B_ANIM_DOOM_DESIRE_HIT 0x13
#define B_ANIM_x14 0x14
#define B_ANIM_INGRAIN_HEAL 0x15
#define B_ANIM_WISH_HEAL 0x16
// special animations table
#define B_ANIM_LVL_UP 0x0
#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1
#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2
#define B_ANIM_BALL_THROW 0x3
#define B_ANIM_SAFARI_BALL_THROW 0x4
#define B_ANIM_SUBSTITUTE_TO_MON 0x5
#define B_ANIM_MON_TO_SUBSTITUTE 0x6
// status animation table
#define B_ANIM_STATUS_PSN 0x0
#define B_ANIM_STATUS_CONFUSION 0x1
#define B_ANIM_STATUS_BRN 0x2
#define B_ANIM_STATUS_INFATUATION 0x3
#define B_ANIM_STATUS_SLP 0x4
#define B_ANIM_STATUS_PRZ 0x5
#define B_ANIM_STATUS_FRZ 0x6
#define B_ANIM_STATUS_CURSED 0x7
#define B_ANIM_STATUS_NIGHTMARE 0x8
#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H

View File

@@ -0,0 +1,219 @@
#ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define EFFECT_HIT 0
#define EFFECT_SLEEP 1
#define EFFECT_POISON_HIT 2
#define EFFECT_ABSORB 3
#define EFFECT_BURN_HIT 4
#define EFFECT_FREEZE_HIT 5
#define EFFECT_PARALYZE_HIT 6
#define EFFECT_EXPLOSION 7
#define EFFECT_DREAM_EATER 8
#define EFFECT_MIRROR_MOVE 9
#define EFFECT_ATTACK_UP 10
#define EFFECT_DEFENSE_UP 11
#define EFFECT_SPEED_UP 12
#define EFFECT_SPECIAL_ATTACK_UP 13
#define EFFECT_SPECIAL_DEFENSE_UP 14
#define EFFECT_ACCURACY_UP 15
#define EFFECT_EVASION_UP 16
#define EFFECT_ALWAYS_HIT 17
#define EFFECT_ATTACK_DOWN 18
#define EFFECT_DEFENSE_DOWN 19
#define EFFECT_SPEED_DOWN 20
#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused
#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused
#define EFFECT_ACCURACY_DOWN 23
#define EFFECT_EVASION_DOWN 24
#define EFFECT_HAZE 25
#define EFFECT_BIDE 26
#define EFFECT_RAMPAGE 27
#define EFFECT_ROAR 28
#define EFFECT_MULTI_HIT 29
#define EFFECT_CONVERSION 30
#define EFFECT_FLINCH_HIT 31
#define EFFECT_RESTORE_HP 32
#define EFFECT_TOXIC 33
#define EFFECT_PAY_DAY 34
#define EFFECT_LIGHT_SCREEN 35
#define EFFECT_TRI_ATTACK 36
#define EFFECT_REST 37
#define EFFECT_OHKO 38
#define EFFECT_RAZOR_WIND 39
#define EFFECT_SUPER_FANG 40
#define EFFECT_DRAGON_RAGE 41
#define EFFECT_TRAP 42
#define EFFECT_HIGH_CRITICAL 43
#define EFFECT_DOUBLE_HIT 44
#define EFFECT_RECOIL_IF_MISS 45
#define EFFECT_MIST 46
#define EFFECT_FOCUS_ENERGY 47
#define EFFECT_RECOIL 48
#define EFFECT_CONFUSE 49
#define EFFECT_ATTACK_UP_2 50
#define EFFECT_DEFENSE_UP_2 51
#define EFFECT_SPEED_UP_2 52
#define EFFECT_SPECIAL_ATTACK_UP_2 53
#define EFFECT_SPECIAL_DEFENSE_UP_2 54
#define EFFECT_ACCURACY_UP_2 55
#define EFFECT_EVASION_UP_2 56
#define EFFECT_TRANSFORM 57
#define EFFECT_ATTACK_DOWN_2 58
#define EFFECT_DEFENSE_DOWN_2 59
#define EFFECT_SPEED_DOWN_2 60
#define EFFECT_SPECIAL_ATTACK_DOWN_2 61
#define EFFECT_SPECIAL_DEFENSE_DOWN_2 62
#define EFFECT_ACCURACY_DOWN_2 63
#define EFFECT_EVASION_DOWN_2 64
#define EFFECT_REFLECT 65
#define EFFECT_POISON 66
#define EFFECT_PARALYZE 67
#define EFFECT_ATTACK_DOWN_HIT 68
#define EFFECT_DEFENSE_DOWN_HIT 69
#define EFFECT_SPEED_DOWN_HIT 70
#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 71
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 72
#define EFFECT_ACCURACY_DOWN_HIT 73
#define EFFECT_EVASION_DOWN_HIT 74
#define EFFECT_SKY_ATTACK 75
#define EFFECT_CONFUSE_HIT 76
#define EFFECT_TWINEEDLE 77
#define EFFECT_VITAL_THROW 78
#define EFFECT_SUBSTITUTE 79
#define EFFECT_RECHARGE 80
#define EFFECT_RAGE 81
#define EFFECT_MIMIC 82
#define EFFECT_METRONOME 83
#define EFFECT_LEECH_SEED 84
#define EFFECT_SPLASH 85
#define EFFECT_DISABLE 86
#define EFFECT_LEVEL_DAMAGE 87
#define EFFECT_PSYWAVE 88
#define EFFECT_COUNTER 89
#define EFFECT_ENCORE 90
#define EFFECT_PAIN_SPLIT 91
#define EFFECT_SNORE 92
#define EFFECT_CONVERSION_2 93
#define EFFECT_LOCK_ON 94
#define EFFECT_SKETCH 95
#define EFFECT_UNUSED_60 96 // thaw
#define EFFECT_SLEEP_TALK 97
#define EFFECT_DESTINY_BOND 98
#define EFFECT_FLAIL 99
#define EFFECT_SPITE 100
#define EFFECT_FALSE_SWIPE 101
#define EFFECT_HEAL_BELL 102
#define EFFECT_QUICK_ATTACK 103
#define EFFECT_TRIPLE_KICK 104
#define EFFECT_THIEF 105
#define EFFECT_MEAN_LOOK 106
#define EFFECT_NIGHTMARE 107
#define EFFECT_MINIMIZE 108
#define EFFECT_CURSE 109
#define EFFECT_UNUSED_6E 110
#define EFFECT_PROTECT 111
#define EFFECT_SPIKES 112
#define EFFECT_FORESIGHT 113
#define EFFECT_PERISH_SONG 114
#define EFFECT_SANDSTORM 115
#define EFFECT_ENDURE 116
#define EFFECT_ROLLOUT 117
#define EFFECT_SWAGGER 118
#define EFFECT_FURY_CUTTER 119
#define EFFECT_ATTRACT 120
#define EFFECT_RETURN 121
#define EFFECT_PRESENT 122
#define EFFECT_FRUSTRATION 123
#define EFFECT_SAFEGUARD 124
#define EFFECT_THAW_HIT 125
#define EFFECT_MAGNITUDE 126
#define EFFECT_BATON_PASS 127
#define EFFECT_PURSUIT 128
#define EFFECT_RAPID_SPIN 129
#define EFFECT_SONICBOOM 130
#define EFFECT_UNUSED_83 131
#define EFFECT_MORNING_SUN 132
#define EFFECT_SYNTHESIS 133
#define EFFECT_MOONLIGHT 134
#define EFFECT_HIDDEN_POWER 135
#define EFFECT_RAIN_DANCE 136
#define EFFECT_SUNNY_DAY 137
#define EFFECT_DEFENSE_UP_HIT 138
#define EFFECT_ATTACK_UP_HIT 139
#define EFFECT_ALL_STATS_UP_HIT 140
#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2
#define EFFECT_BELLY_DRUM 142
#define EFFECT_PSYCH_UP 143
#define EFFECT_MIRROR_COAT 144
#define EFFECT_SKULL_BASH 145
#define EFFECT_TWISTER 146
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLARBEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
#define EFFECT_BEAT_UP 154
#define EFFECT_SEMI_INVULNERABLE 155
#define EFFECT_DEFENSE_CURL 156
#define EFFECT_SOFTBOILED 157
#define EFFECT_FAKE_OUT 158
#define EFFECT_UPROAR 159
#define EFFECT_STOCKPILE 160
#define EFFECT_SPIT_UP 161
#define EFFECT_SWALLOW 162
#define EFFECT_UNUSED_A3 163
#define EFFECT_HAIL 164
#define EFFECT_TORMENT 165
#define EFFECT_FLATTER 166
#define EFFECT_WILL_O_WISP 167
#define EFFECT_MEMENTO 168
#define EFFECT_FACADE 169
#define EFFECT_FOCUS_PUNCH 170
#define EFFECT_SMELLINGSALT 171
#define EFFECT_FOLLOW_ME 172
#define EFFECT_NATURE_POWER 173
#define EFFECT_CHARGE 174
#define EFFECT_TAUNT 175
#define EFFECT_HELPING_HAND 176
#define EFFECT_TRICK 177
#define EFFECT_ROLE_PLAY 178
#define EFFECT_WISH 179
#define EFFECT_ASSIST 180
#define EFFECT_INGRAIN 181
#define EFFECT_SUPERPOWER 182
#define EFFECT_MAGIC_COAT 183
#define EFFECT_RECYCLE 184
#define EFFECT_REVENGE 185
#define EFFECT_BRICK_BREAK 186
#define EFFECT_YAWN 187
#define EFFECT_KNOCK_OFF 188
#define EFFECT_ENDEAVOR 189
#define EFFECT_ERUPTION 190
#define EFFECT_SKILL_SWAP 191
#define EFFECT_IMPRISON 192
#define EFFECT_REFRESH 193
#define EFFECT_GRUDGE 194
#define EFFECT_SNATCH 195
#define EFFECT_LOW_KICK 196
#define EFFECT_SECRET_POWER 197
#define EFFECT_DOUBLE_EDGE 198
#define EFFECT_TEETER_DANCE 199
#define EFFECT_BLAZE_KICK 200
#define EFFECT_MUD_SPORT 201
#define EFFECT_POISON_FANG 202
#define EFFECT_WEATHER_BALL 203
#define EFFECT_OVERHEAT 204
#define EFFECT_TICKLE 205
#define EFFECT_COSMIC_POWER 206
#define EFFECT_SKY_UPPERCUT 207
#define EFFECT_BULK_UP 208
#define EFFECT_POISON_TAIL 209
#define EFFECT_WATER_SPORT 210
#define EFFECT_CALM_MIND 211
#define EFFECT_DRAGON_DANCE 212
#define EFFECT_CAMOUFLAGE 213
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@@ -0,0 +1,97 @@
#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
// Battle Scripting and BattleCommunication addresses
#define sPAINSPLIT_HP gBattleScripting
#define sBIDE_DMG gBattleScripting + 4
#define sMULTIHIT_STRING gBattleScripting + 8
#define sDMG_MULTIPLIER gBattleScripting + 0xE
#define sTWOTURN_STRINGID gBattleScripting + 0xF
#define sB_ANIM_ARG1 gBattleScripting + 0x10
#define sB_ANIM_ARG2 gBattleScripting + 0x11
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
#define sMOVEEND_STATE gBattleScripting + 0x14
#define sBANK_WITH_ABILITY gBattleScripting + 0x15
#define sMULTIHIT_EFFECT gBattleScripting + 0x16
#define sBANK gBattleScripting + 0x17
#define sB_ANIM_TURN gBattleScripting + 0x18
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
#define sSTATCHANGER gBattleScripting + 0x1A
#define sFIELD_1B gBattleScripting + 0x1B
#define sGIVEEXP_STATE gBattleScripting + 0x1C
#define sBATTLE_STYLE gBattleScripting + 0x1D
#define sLVLBOX_STATE gBattleScripting + 0x1E
#define sLEARNMOVE_STATE gBattleScripting + 0x1F
#define sFIELD_20 gBattleScripting + 0x20
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
#define sFIELD_23 gBattleScripting + 0x23
#define sFIELD_24 gBattleScripting + 0x24
#define sMULTIPLAYER_ID gBattleScripting + 0x25
#define cEFFECT_CHOOSER gBattleCommunication + 3
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
// Battle Script defines for getting the wanted battler
#define BS_TARGET 0
#define BS_ATTACKER 1
#define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3
#define BS_BANK_0 7
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
#define BS_SCRIPTING 10
#define BS_PLAYER1 11
#define BS_OPPONENT1 12
#define BS_PLAYER2 13
#define BS_OPPONENT2 14
// atk 01, accuracy calc
#define NO_ACC_CALC 0xFFFE
#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
#define ACC_CURR_MOVE 0
// compare operands
#define CMP_EQUAL 0x0
#define CMP_NOT_EQUAL 0x1
#define CMP_GREATER_THAN 0x2
#define CMP_LESS_THAN 0x3
#define CMP_COMMON_BITS 0x4
#define CMP_NO_COMMON_BITS 0x5
// atk76, various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_EMIT_YESNOBOX 13
#define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
// atk80, dmg manipulation
#define ATK80_DMG_CHANGE_SIGN 0
#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
#define ATK80_DMG_DOUBLED 2
// atk4F, a flag used for the jumpifcantswitch command
#define ATK4F_DONT_CHECK_STATUSES 0x80
// statchange defines
#define STAT_CHANGE_BS_PTR 0x1
#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
#define STAT_CHANGE_WORKED 0
#define STAT_CHANGE_DIDNT_WORK 1
// atk48
#define ATK48_STAT_NEGATIVE 0x1
#define ATK48_STAT_BY_TWO 0x2
#define ATK48_BIT_x4 0x4
#define ATK48_LOWER_FAIL_CHECK 0x8
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_BATTLE_STRING_IDS_H
#define GUARD_BATTLE_STRING_IDS_H
#ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H
#define GUARD_CONSTANTS_BATTLE_STRING_IDS_H
#define BATTLESTRINGS_COUNT 369
@@ -12,7 +12,6 @@
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
#define STRINGID_TRAINER1LOSETEXT 12
#define STRINGID_PKMNGAINEDEXP 13
@@ -384,4 +383,4 @@
#define STRINGID_TRAINER1WINTEXT 379
#define STRINGID_TRAINER2WINTEXT 380
#endif // GUARD_BATTLE_STRING_IDS_H
#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H

View File

@@ -0,0 +1,126 @@
#ifndef GUARD_CONSTANTS_DECORATIONS_H
#define GUARD_CONSTANTS_DECORATIONS_H
#define DECOR_NONE 0
#define DECOR_SMALL_DESK 1
#define DECOR_POKEMON_DESK 2
#define DECOR_HEAVY_DESK 3
#define DECOR_RAGGED_DESK 4
#define DECOR_COMFORT_DESK 5
#define DECOR_PRETTY_DESK 6
#define DECOR_BRICK_DESK 7
#define DECOR_CAMP_DESK 8
#define DECOR_HARD_DESK 9
#define DECOR_SMALL_CHAIR 10
#define DECOR_POKEMON_CHAIR 11
#define DECOR_HEAVY_CHAIR 12
#define DECOR_PRETTY_CHAIR 13
#define DECOR_COMFORT_CHAIR 14
#define DECOR_RAGGED_CHAIR 15
#define DECOR_BRICK_CHAIR 16
#define DECOR_CAMP_CHAIR 17
#define DECOR_HARD_CHAIR 18
#define DECOR_RED_PLANT 19
#define DECOR_TROPICAL_PLANT 20
#define DECOR_PRETTY_FLOWERS 21
#define DECOR_COLORFUL_PLANT 22
#define DECOR_BIG_PLANT 23
#define DECOR_GORGEOUS_PLANT 24
#define DECOR_RED_BRICK 25
#define DECOR_YELLOW_BRICK 26
#define DECOR_BLUE_BRICK 27
#define DECOR_RED_BALLOON 28
#define DECOR_BLUE_BALLOON 29
#define DECOR_YELLOW_BALLOON 30
#define DECOR_RED_TENT 31
#define DECOR_BLUE_TENT 32
#define DECOR_SOLID_BOARD 33
#define DECOR_SLIDE 34
#define DECOR_FENCE_LENGTH 35
#define DECOR_FENCE_WIDTH 36
#define DECOR_TIRE 37
#define DECOR_STAND 38
#define DECOR_MUD_BALL 39
#define DECOR_BREAKABLE_DOOR 40
#define DECOR_SAND_ORNAMENT 41
#define DECOR_SILVER_SHIELD 42
#define DECOR_GOLD_SHIELD 43
#define DECOR_GLASS_ORNAMENT 44
#define DECOR_TV 45
#define DECOR_ROUND_TV 46
#define DECOR_CUTE_TV 47
#define DECOR_GLITTER_MAT 48
#define DECOR_JUMP_MAT 49
#define DECOR_SPIN_MAT 50
#define DECOR_C_LOW_NOTE_MAT 51
#define DECOR_D_NOTE_MAT 52
#define DECOR_E_NOTE_MAT 53
#define DECOR_F_NOTE_MAT 54
#define DECOR_G_NOTE_MAT 55
#define DECOR_A_NOTE_MAT 56
#define DECOR_B_NOTE_MAT 57
#define DECOR_C_HIGH_NOTE_MAT 58
#define DECOR_SURF_MAT 59
#define DECOR_THUNDER_MAT 60
#define DECOR_FIRE_BLAST_MAT 61
#define DECOR_POWDER_SNOW_MAT 62
#define DECOR_ATTRACT_MAT 63
#define DECOR_FISSURE_MAT 64
#define DECOR_SPIKES_MAT 65
#define DECOR_BALL_POSTER 66
#define DECOR_GREEN_POSTER 67
#define DECOR_RED_POSTER 68
#define DECOR_BLUE_POSTER 69
#define DECOR_CUTE_POSTER 70
#define DECOR_PIKA_POSTER 71
#define DECOR_LONG_POSTER 72
#define DECOR_SEA_POSTER 73
#define DECOR_SKY_POSTER 74
#define DECOR_KISS_POSTER 75
#define DECOR_PICHU_DOLL 76
#define DECOR_PIKACHU_DOLL 77
#define DECOR_MARILL_DOLL 78
#define DECOR_TOGEPI_DOLL 79
#define DECOR_CYNDAQUIL_DOLL 80
#define DECOR_CHIKORITA_DOLL 81
#define DECOR_TOTODILE_DOLL 82
#define DECOR_JIGGLYPUFF_DOLL 83
#define DECOR_MEOWTH_DOLL 84
#define DECOR_CLEFAIRY_DOLL 85
#define DECOR_DITTO_DOLL 86
#define DECOR_SMOOCHUM_DOLL 87
#define DECOR_TREECKO_DOLL 88
#define DECOR_TORCHIC_DOLL 89
#define DECOR_MUDKIP_DOLL 90
#define DECOR_DUSKULL_DOLL 91
#define DECOR_WYNAUT_DOLL 92
#define DECOR_BALTOY_DOLL 93
#define DECOR_KECLEON_DOLL 94
#define DECOR_AZURILL_DOLL 95
#define DECOR_SKITTY_DOLL 96
#define DECOR_SWABLU_DOLL 97
#define DECOR_GULPIN_DOLL 98
#define DECOR_LOTAD_DOLL 99
#define DECOR_SEEDOT_DOLL 100
#define DECOR_PIKA_CUSHION 101
#define DECOR_ROUND_CUSHION 102
#define DECOR_KISS_CUSHION 103
#define DECOR_ZIGZAG_CUSHION 104
#define DECOR_SPIN_CUSHION 105
#define DECOR_DIAMOND_CUSHION 106
#define DECOR_BALL_CUSHION 107
#define DECOR_GRASS_CUSHION 108
#define DECOR_FIRE_CUSHION 109
#define DECOR_WATER_CUSHION 110
#define DECOR_SNORLAX_DOLL 111
#define DECOR_RHYDON_DOLL 112
#define DECOR_LAPRAS_DOLL 113
#define DECOR_VENUSAUR_DOLL 114
#define DECOR_CHARIZARD_DOLL 115
#define DECOR_BLASTOISE_DOLL 116
#define DECOR_WAILMER_DOLL 117
#define DECOR_REGIROCK_DOLL 118
#define DECOR_REGICE_DOLL 119
#define DECOR_REGISTEEL_DOLL 120
#endif // GUARD_CONSTANTS_DECORATIONS_H

File diff suppressed because it is too large Load Diff

1579
include/constants/flags.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_GAME_STAT_H
#define GUARD_GAME_STAT_H
#ifndef GUARD_CONSTANTS_GAME_STAT_H
#define GUARD_CONSTANTS_GAME_STAT_H
#define GAME_STAT_SAVED_GAME 0
#define GAME_STAT_FIRST_HOF_PLAY_TIME 1
@@ -56,7 +56,4 @@
#define NUM_GAME_STATS 64
void IncrementGameStat(u8);
u32 GetGameStat(u8);
#endif // GUARD_GAME_STAT_H
#endif // GUARD_CONSTANTS_GAME_STAT_H

467
include/constants/items.h Normal file
View File

@@ -0,0 +1,467 @@
#ifndef GUARD_CONSTANTS_ITEMS_H
#define GUARD_CONSTANTS_ITEMS_H
#define ITEM_NONE 0
// Balls
#define ITEM_MASTER_BALL 1
#define ITEM_ULTRA_BALL 2
#define ITEM_GREAT_BALL 3
#define ITEM_POKE_BALL 4
#define ITEM_SAFARI_BALL 5
#define ITEM_NET_BALL 6
#define ITEM_DIVE_BALL 7
#define ITEM_NEST_BALL 8
#define ITEM_REPEAT_BALL 9
#define ITEM_TIMER_BALL 10
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
// Pokemon Items
#define ITEM_POTION 13
#define ITEM_ANTIDOTE 14
#define ITEM_BURN_HEAL 15
#define ITEM_ICE_HEAL 16
#define ITEM_AWAKENING 17
#define ITEM_PARALYZE_HEAL 18
#define ITEM_FULL_RESTORE 19
#define ITEM_MAX_POTION 20
#define ITEM_HYPER_POTION 21
#define ITEM_SUPER_POTION 22
#define ITEM_FULL_HEAL 23
#define ITEM_REVIVE 24
#define ITEM_MAX_REVIVE 25
#define ITEM_FRESH_WATER 26
#define ITEM_SODA_POP 27
#define ITEM_LEMONADE 28
#define ITEM_MOOMOO_MILK 29
#define ITEM_ENERGY_POWDER 30
#define ITEM_ENERGY_ROOT 31
#define ITEM_HEAL_POWDER 32
#define ITEM_REVIVAL_HERB 33
#define ITEM_ETHER 34
#define ITEM_MAX_ETHER 35
#define ITEM_ELIXIR 36
#define ITEM_MAX_ELIXIR 37
#define ITEM_LAVA_COOKIE 38
#define ITEM_BLUE_FLUTE 39
#define ITEM_YELLOW_FLUTE 40
#define ITEM_RED_FLUTE 41
#define ITEM_BLACK_FLUTE 42
#define ITEM_WHITE_FLUTE 43
#define ITEM_BERRY_JUICE 44
#define ITEM_SACRED_ASH 45
#define ITEM_SHOAL_SALT 46
#define ITEM_SHOAL_SHELL 47
#define ITEM_RED_SHARD 48
#define ITEM_BLUE_SHARD 49
#define ITEM_YELLOW_SHARD 50
#define ITEM_GREEN_SHARD 51
#define ITEM_034 52
#define ITEM_035 53
#define ITEM_036 54
#define ITEM_037 55
#define ITEM_038 56
#define ITEM_039 57
#define ITEM_03A 58
#define ITEM_03B 59
#define ITEM_03C 60
#define ITEM_03D 61
#define ITEM_03E 62
#define ITEM_HP_UP 63
#define ITEM_PROTEIN 64
#define ITEM_IRON 65
#define ITEM_CARBOS 66
#define ITEM_CALCIUM 67
#define ITEM_RARE_CANDY 68
#define ITEM_PP_UP 69
#define ITEM_ZINC 70
#define ITEM_PP_MAX 71
#define ITEM_048 72
#define ITEM_GUARD_SPEC 73
#define ITEM_DIRE_HIT 74
#define ITEM_X_ATTACK 75
#define ITEM_X_DEFEND 76
#define ITEM_X_SPEED 77
#define ITEM_X_ACCURACY 78
#define ITEM_X_SPECIAL 79
#define ITEM_POKE_DOLL 80
#define ITEM_FLUFFY_TAIL 81
#define ITEM_052 82
#define ITEM_SUPER_REPEL 83
#define ITEM_MAX_REPEL 84
#define ITEM_ESCAPE_ROPE 85
#define ITEM_REPEL 86
#define ITEM_057 87
#define ITEM_058 88
#define ITEM_059 89
#define ITEM_05A 90
#define ITEM_05B 91
#define ITEM_05C 92
#define ITEM_SUN_STONE 93
#define ITEM_MOON_STONE 94
#define ITEM_FIRE_STONE 95
#define ITEM_THUNDER_STONE 96
#define ITEM_WATER_STONE 97
#define ITEM_LEAF_STONE 98
#define ITEM_063 99
#define ITEM_064 100
#define ITEM_065 101
#define ITEM_066 102
#define ITEM_TINY_MUSHROOM 103
#define ITEM_BIG_MUSHROOM 104
#define ITEM_069 105
#define ITEM_PEARL 106
#define ITEM_BIG_PEARL 107
#define ITEM_STARDUST 108
#define ITEM_STAR_PIECE 109
#define ITEM_NUGGET 110
#define ITEM_HEART_SCALE 111
#define ITEM_070 112
#define ITEM_071 113
#define ITEM_072 114
#define ITEM_073 115
#define ITEM_074 116
#define ITEM_075 117
#define ITEM_076 118
#define ITEM_077 119
#define ITEM_078 120
#define ITEM_ORANGE_MAIL 121
#define ITEM_HARBOR_MAIL 122
#define ITEM_GLITTER_MAIL 123
#define ITEM_MECH_MAIL 124
#define ITEM_WOOD_MAIL 125
#define ITEM_WAVE_MAIL 126
#define ITEM_BEAD_MAIL 127
#define ITEM_SHADOW_MAIL 128
#define ITEM_TROPIC_MAIL 129
#define ITEM_DREAM_MAIL 130
#define ITEM_FAB_MAIL 131
#define ITEM_RETRO_MAIL 132
#define ITEM_CHERI_BERRY 133
#define ITEM_CHESTO_BERRY 134
#define ITEM_PECHA_BERRY 135
#define ITEM_RAWST_BERRY 136
#define ITEM_ASPEAR_BERRY 137
#define ITEM_LEPPA_BERRY 138
#define ITEM_ORAN_BERRY 139
#define ITEM_PERSIM_BERRY 140
#define ITEM_LUM_BERRY 141
#define ITEM_SITRUS_BERRY 142
#define ITEM_FIGY_BERRY 143
#define ITEM_WIKI_BERRY 144
#define ITEM_MAGO_BERRY 145
#define ITEM_AGUAV_BERRY 146
#define ITEM_IAPAPA_BERRY 147
#define ITEM_RAZZ_BERRY 148
#define ITEM_BLUK_BERRY 149
#define ITEM_NANAB_BERRY 150
#define ITEM_WEPEAR_BERRY 151
#define ITEM_PINAP_BERRY 152
#define ITEM_POMEG_BERRY 153
#define ITEM_KELPSY_BERRY 154
#define ITEM_QUALOT_BERRY 155
#define ITEM_HONDEW_BERRY 156
#define ITEM_GREPA_BERRY 157
#define ITEM_TAMATO_BERRY 158
#define ITEM_CORNN_BERRY 159
#define ITEM_MAGOST_BERRY 160
#define ITEM_RABUTA_BERRY 161
#define ITEM_NOMEL_BERRY 162
#define ITEM_SPELON_BERRY 163
#define ITEM_PAMTRE_BERRY 164
#define ITEM_WATMEL_BERRY 165
#define ITEM_DURIN_BERRY 166
#define ITEM_BELUE_BERRY 167
#define ITEM_LIECHI_BERRY 168
#define ITEM_GANLON_BERRY 169
#define ITEM_SALAC_BERRY 170
#define ITEM_PETAYA_BERRY 171
#define ITEM_APICOT_BERRY 172
#define ITEM_LANSAT_BERRY 173
#define ITEM_STARF_BERRY 174
#define ITEM_ENIGMA_BERRY 175
#define ITEM_0B0 176
#define ITEM_0B1 177
#define ITEM_0B2 178
// hold items
#define ITEM_BRIGHT_POWDER 179
#define ITEM_WHITE_HERB 180
#define ITEM_MACHO_BRACE 181
#define ITEM_EXP_SHARE 182
#define ITEM_QUICK_CLAW 183
#define ITEM_SOOTHE_BELL 184
#define ITEM_MENTAL_HERB 185
#define ITEM_CHOICE_BAND 186
#define ITEM_KINGS_ROCK 187
#define ITEM_SILVER_POWDER 188
#define ITEM_AMULET_COIN 189
#define ITEM_CLEANSE_TAG 190
#define ITEM_SOUL_DEW 191
#define ITEM_DEEP_SEA_TOOTH 192
#define ITEM_DEEP_SEA_SCALE 193
#define ITEM_SMOKE_BALL 194
#define ITEM_EVERSTONE 195
#define ITEM_FOCUS_BAND 196
#define ITEM_LUCKY_EGG 197
#define ITEM_SCOPE_LENS 198
#define ITEM_METAL_COAT 199
#define ITEM_LEFTOVERS 200
#define ITEM_DRAGON_SCALE 201
#define ITEM_LIGHT_BALL 202
#define ITEM_SOFT_SAND 203
#define ITEM_HARD_STONE 204
#define ITEM_MIRACLE_SEED 205
#define ITEM_BLACK_GLASSES 206
#define ITEM_BLACK_BELT 207
#define ITEM_MAGNET 208
#define ITEM_MYSTIC_WATER 209
#define ITEM_SHARP_BEAK 210
#define ITEM_POISON_BARB 211
#define ITEM_NEVER_MELT_ICE 212
#define ITEM_SPELL_TAG 213
#define ITEM_TWISTED_SPOON 214
#define ITEM_CHARCOAL 215
#define ITEM_DRAGON_FANG 216
#define ITEM_SILK_SCARF 217
#define ITEM_UP_GRADE 218
#define ITEM_SHELL_BELL 219
#define ITEM_SEA_INCENSE 220
#define ITEM_LAX_INCENSE 221
#define ITEM_LUCKY_PUNCH 222
#define ITEM_METAL_POWDER 223
#define ITEM_THICK_CLUB 224
#define ITEM_STICK 225
#define ITEM_0E2 226
#define ITEM_0E3 227
#define ITEM_0E4 228
#define ITEM_0E5 229
#define ITEM_0E6 230
#define ITEM_0E7 231
#define ITEM_0E8 232
#define ITEM_0E9 233
#define ITEM_0EA 234
#define ITEM_0EB 235
#define ITEM_0EC 236
#define ITEM_0ED 237
#define ITEM_0EE 238
#define ITEM_0EF 239
#define ITEM_0F0 240
#define ITEM_0F1 241
#define ITEM_0F2 242
#define ITEM_0F3 243
#define ITEM_0F4 244
#define ITEM_0F5 245
#define ITEM_0F6 246
#define ITEM_0F7 247
#define ITEM_0F8 248
#define ITEM_0F9 249
#define ITEM_0FA 250
#define ITEM_0FB 251
#define ITEM_0FC 252
#define ITEM_0FD 253
#define ITEM_RED_SCARF 254
#define ITEM_BLUE_SCARF 255
#define ITEM_PINK_SCARF 256
#define ITEM_GREEN_SCARF 257
#define ITEM_YELLOW_SCARF 258
// Key Items
#define ITEM_MACH_BIKE 259
#define ITEM_COIN_CASE 260
#define ITEM_ITEMFINDER 261
#define ITEM_OLD_ROD 262
#define ITEM_GOOD_ROD 263
#define ITEM_SUPER_ROD 264
#define ITEM_SS_TICKET 265
#define ITEM_CONTEST_PASS 266
#define ITEM_10B 267
#define ITEM_WAILMER_PAIL 268
#define ITEM_DEVON_GOODS 269
#define ITEM_SOOT_SACK 270
#define ITEM_BASEMENT_KEY 271
#define ITEM_ACRO_BIKE 272
#define ITEM_POKEBLOCK_CASE 273
#define ITEM_LETTER 274
#define ITEM_EON_TICKET 275
#define ITEM_RED_ORB 276
#define ITEM_BLUE_ORB 277
#define ITEM_SCANNER 278
#define ITEM_GO_GOGGLES 279
#define ITEM_METEORITE 280
#define ITEM_ROOM_1_KEY 281
#define ITEM_ROOM_2_KEY 282
#define ITEM_ROOM_4_KEY 283
#define ITEM_ROOM_6_KEY 284
#define ITEM_STORAGE_KEY 285
#define ITEM_ROOT_FOSSIL 286
#define ITEM_CLAW_FOSSIL 287
#define ITEM_DEVON_SCOPE 288
// TMs/HMs
#define ITEM_TM01 289
#define ITEM_TM02 290
#define ITEM_TM03 291
#define ITEM_TM04 292
#define ITEM_TM05 293
#define ITEM_TM06 294
#define ITEM_TM07 295
#define ITEM_TM08 296
#define ITEM_TM09 297
#define ITEM_TM10 298
#define ITEM_TM11 299
#define ITEM_TM12 300
#define ITEM_TM13 301
#define ITEM_TM14 302
#define ITEM_TM15 303
#define ITEM_TM16 304
#define ITEM_TM17 305
#define ITEM_TM18 306
#define ITEM_TM19 307
#define ITEM_TM20 308
#define ITEM_TM21 309
#define ITEM_TM22 310
#define ITEM_TM23 311
#define ITEM_TM24 312
#define ITEM_TM25 313
#define ITEM_TM26 314
#define ITEM_TM27 315
#define ITEM_TM28 316
#define ITEM_TM29 317
#define ITEM_TM30 318
#define ITEM_TM31 319
#define ITEM_TM32 320
#define ITEM_TM33 321
#define ITEM_TM34 322
#define ITEM_TM35 323
#define ITEM_TM36 324
#define ITEM_TM37 325
#define ITEM_TM38 326
#define ITEM_TM39 327
#define ITEM_TM40 328
#define ITEM_TM41 329
#define ITEM_TM42 330
#define ITEM_TM43 331
#define ITEM_TM44 332
#define ITEM_TM45 333
#define ITEM_TM46 334
#define ITEM_TM47 335
#define ITEM_TM48 336
#define ITEM_TM49 337
#define ITEM_TM50 338
#define ITEM_HM01 339
#define ITEM_HM02 340
#define ITEM_HM03 341
#define ITEM_HM04 342
#define ITEM_HM05 343
#define ITEM_HM06 344
#define ITEM_HM07 345
#define ITEM_HM08 346
#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01
#define ITEM_TM02_DRAGON_CLAW ITEM_TM02
#define ITEM_TM03_WATER_PULSE ITEM_TM03
#define ITEM_TM04_CALM_MIND ITEM_TM04
#define ITEM_TM05_ROAR ITEM_TM05
#define ITEM_TM06_TOXIC ITEM_TM06
#define ITEM_TM07_HAIL ITEM_TM07
#define ITEM_TM08_BULK_UP ITEM_TM08
#define ITEM_TM09_BULLET_SEED ITEM_TM09
#define ITEM_TM10_HIDDEN_POWER ITEM_TM10
#define ITEM_TM11_SUNNY_DAY ITEM_TM11
#define ITEM_TM12_TAUNT ITEM_TM12
#define ITEM_TM13_ICE_BEAM ITEM_TM13
#define ITEM_TM14_BLIZZARD ITEM_TM14
#define ITEM_TM15_HYPER_BEAM ITEM_TM15
#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16
#define ITEM_TM17_PROTECT ITEM_TM17
#define ITEM_TM18_RAIN_DANCE ITEM_TM18
#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
#define ITEM_TM20_SAFEGUARD ITEM_TM20
#define ITEM_TM21_FRUSTRATION ITEM_TM21
#define ITEM_TM22_SOLARBEAM ITEM_TM22
#define ITEM_TM23_IRON_TAIL ITEM_TM23
#define ITEM_TM24_THUNDERBOLT ITEM_TM24
#define ITEM_TM25_THUNDER ITEM_TM25
#define ITEM_TM26_EARTHQUAKE ITEM_TM26
#define ITEM_TM27_RETURN ITEM_TM27
#define ITEM_TM28_DIG ITEM_TM28
#define ITEM_TM29_PSYCHIC ITEM_TM29
#define ITEM_TM30_SHADOW_BALL ITEM_TM30
#define ITEM_TM31_BRICK_BREAK ITEM_TM31
#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32
#define ITEM_TM33_REFLECT ITEM_TM33
#define ITEM_TM34_SHOCK_WAVE ITEM_TM34
#define ITEM_TM35_FLAMETHROWER ITEM_TM35
#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36
#define ITEM_TM37_SANDSTORM ITEM_TM37
#define ITEM_TM38_FIRE_BLAST ITEM_TM38
#define ITEM_TM39_ROCK_TOMB ITEM_TM39
#define ITEM_TM40_AERIAL_ACE ITEM_TM40
#define ITEM_TM41_TORMENT ITEM_TM41
#define ITEM_TM42_FACADE ITEM_TM42
#define ITEM_TM43_SECRET_POWER ITEM_TM43
#define ITEM_TM44_REST ITEM_TM44
#define ITEM_TM45_ATTRACT ITEM_TM45
#define ITEM_TM46_THIEF ITEM_TM46
#define ITEM_TM47_STEEL_WING ITEM_TM47
#define ITEM_TM48_SKILL_SWAP ITEM_TM48
#define ITEM_TM49_SNATCH ITEM_TM49
#define ITEM_TM50_OVERHEAT ITEM_TM50
#define ITEM_HM01_CUT ITEM_HM01
#define ITEM_HM02_FLY ITEM_HM02
#define ITEM_HM03_SURF ITEM_HM03
#define ITEM_HM04_STRENGTH ITEM_HM04
#define ITEM_HM05_FLASH ITEM_HM05
#define ITEM_HM06_ROCK_SMASH ITEM_HM06
#define ITEM_HM07_WATERFALL ITEM_HM07
#define ITEM_HM08_DIVE ITEM_HM08
// Unknown
#define ITEM_15B 347
#define ITEM_15C 348
// FireRed/LeafGreen
#define ITEM_OAKS_PARCEL 349
#define ITEM_POKE_FLUTE 350
#define ITEM_SECRET_KEY 351
#define ITEM_BIKE_VOUCHER 352
#define ITEM_GOLD_TEETH 353
#define ITEM_OLD_AMBER 354
#define ITEM_CARD_KEY 355
#define ITEM_LIFT_KEY 356
#define ITEM_HELIX_FOSSIL 357
#define ITEM_DOME_FOSSIL 358
#define ITEM_SILPH_SCOPE 359
#define ITEM_BICYCLE 360
#define ITEM_TOWN_MAP 361
#define ITEM_VS_SEEKER 362
#define ITEM_FAME_CHECKER 363
#define ITEM_TM_CASE 364
#define ITEM_BERRY_POUCH 365
#define ITEM_TEACHY_TV 366
#define ITEM_TRI_PASS 367
#define ITEM_RAINBOW_PASS 368
#define ITEM_TEA 369
#define ITEM_MYSTIC_TICKET 370
#define ITEM_AURORA_TICKET 371
#define ITEM_POWDER_JAR 372
#define ITEM_RUBY 373
#define ITEM_SAPPHIRE 374
// Emerald
#define ITEM_MAGMA_EMBLEM 375
#define ITEM_OLD_SEA_MAP 376
#define ITEM_LAST_ID 376
#define ITEM_FIELD_ARROW ITEM_LAST_ID + 1
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
#endif // GUARD_CONSTANTS_ITEMS_H

View File

@@ -0,0 +1,263 @@
#ifndef GUARD_CONSTANTS_MAP_OBJECTS_H
#define GUARD_CONSTANTS_MAP_OBJECTS_H
#define MAP_OBJ_GFX_BRENDAN_NORMAL 0
#define MAP_OBJ_GFX_BRENDAN_MACH_BIKE 1
#define MAP_OBJ_GFX_BRENDAN_SURFING 2
#define MAP_OBJ_GFX_BRENDAN_FIELD_MOVE 3
#define MAP_OBJ_GFX_QUINTY_PLUMP 4
#define MAP_OBJ_GFX_LITTLE_BOY_1 5
#define MAP_OBJ_GFX_LITTLE_GIRL_1 6
#define MAP_OBJ_GFX_BOY_1 7
#define MAP_OBJ_GFX_GIRL_1 8
#define MAP_OBJ_GFX_BOY_2 9
#define MAP_OBJ_GFX_GIRL_2 10
#define MAP_OBJ_GFX_LITTLE_BOY_2 11
#define MAP_OBJ_GFX_LITTLE_GIRL_2 12
#define MAP_OBJ_GFX_BOY_3 13
#define MAP_OBJ_GFX_GIRL_3 14
#define MAP_OBJ_GFX_BOY_4 15
#define MAP_OBJ_GFX_WOMAN_1 16
#define MAP_OBJ_GFX_FAT_MAN 17
#define MAP_OBJ_GFX_WOMAN_2 18
#define MAP_OBJ_GFX_MAN_1 19
#define MAP_OBJ_GFX_WOMAN_3 20
#define MAP_OBJ_GFX_OLD_MAN_1 21
#define MAP_OBJ_GFX_OLD_WOMAN_1 22
#define MAP_OBJ_GFX_MAN_2 23
#define MAP_OBJ_GFX_WOMAN_4 24
#define MAP_OBJ_GFX_MAN_3 25
#define MAP_OBJ_GFX_WOMAN_5 26
#define MAP_OBJ_GFX_COOK 27
#define MAP_OBJ_GFX_WOMAN_6 28
#define MAP_OBJ_GFX_OLD_MAN_2 29
#define MAP_OBJ_GFX_OLD_WOMAN_2 30
#define MAP_OBJ_GFX_CAMPER 31
#define MAP_OBJ_GFX_PICNICKER 32
#define MAP_OBJ_GFX_MAN_4 33
#define MAP_OBJ_GFX_WOMAN_7 34
#define MAP_OBJ_GFX_YOUNGSTER 35
#define MAP_OBJ_GFX_BUG_CATCHER 36
#define MAP_OBJ_GFX_PSYCHIC_M 37
#define MAP_OBJ_GFX_SCHOOL_KID_M 38
#define MAP_OBJ_GFX_MANIAC 39
#define MAP_OBJ_GFX_HEX_MANIAC 40
#define MAP_OBJ_GFX_RAYQUAZA_1 41
#define MAP_OBJ_GFX_SWIMMER_M 42
#define MAP_OBJ_GFX_SWIMMER_F 43
#define MAP_OBJ_GFX_BLACK_BELT 44
#define MAP_OBJ_GFX_BEAUTY 45
#define MAP_OBJ_GFX_SCIENTIST_1 46
#define MAP_OBJ_GFX_LASS 47
#define MAP_OBJ_GFX_GENTLEMAN 48
#define MAP_OBJ_GFX_SAILOR 49
#define MAP_OBJ_GFX_FISHERMAN 50
#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_M 51
#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_F 52
#define MAP_OBJ_GFX_TUBER_F 53
#define MAP_OBJ_GFX_TUBER_M 54
#define MAP_OBJ_GFX_HIKER 55
#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_M 56
#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_F 57
#define MAP_OBJ_GFX_NURSE 58
#define MAP_OBJ_GFX_ITEM_BALL 59
#define MAP_OBJ_GFX_BERRY_TREE 60
#define MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61
#define MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES 62
#define MAP_OBJ_GFX_BRENDAN_ACRO_BIKE 63
#define MAP_OBJ_GFX_PROF_BIRCH 64
#define MAP_OBJ_GFX_MAN_5 65
#define MAP_OBJ_GFX_MAN_6 66
#define MAP_OBJ_GFX_REPORTER_M 67
#define MAP_OBJ_GFX_REPORTER_F 68
#define MAP_OBJ_GFX_BARD 69
#define MAP_OBJ_GFX_ANABEL 70
#define MAP_OBJ_GFX_TUCKER 71
#define MAP_OBJ_GFX_GRETA 72
#define MAP_OBJ_GFX_SPENSER 73
#define MAP_OBJ_GFX_NOLAND 74
#define MAP_OBJ_GFX_LUCY 75
#define MAP_OBJ_GFX_UNUSED_NATU_DOLL 76
#define MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77
#define MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78
#define MAP_OBJ_GFX_UNUSED_WOOPER_DOLL 79
#define MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL 80
#define MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL 81
#define MAP_OBJ_GFX_CUTTABLE_TREE 82
#define MAP_OBJ_GFX_MART_EMPLOYEE 83
#define MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN 84
#define MAP_OBJ_GFX_TEALA 85
#define MAP_OBJ_GFX_BREAKABLE_ROCK 86
#define MAP_OBJ_GFX_PUSHABLE_BOULDER 87
#define MAP_OBJ_GFX_MR_BRINEYS_BOAT 88
#define MAP_OBJ_GFX_MAY_NORMAL 89
#define MAP_OBJ_GFX_MAY_MACH_BIKE 90
#define MAP_OBJ_GFX_MAY_ACRO_BIKE 91
#define MAP_OBJ_GFX_MAY_SURFING 92
#define MAP_OBJ_GFX_MAY_FIELD_MOVE 93
#define MAP_OBJ_GFX_TRUCK 94
#define MAP_OBJ_GFX_VIGAROTH_CARRYING_BOX 95
#define MAP_OBJ_GFX_VIGAROTH_FACING_AWAY 96
#define MAP_OBJ_GFX_BIRCHS_BAG 97
#define MAP_OBJ_GFX_ZIGZAGOON_1 98
#define MAP_OBJ_GFX_ARTIST 99
#define MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100
#define MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101
#define MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102
#define MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING 103
#define MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104
#define MAP_OBJ_GFX_RIVAL_MAY_NORMAL 105
#define MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106
#define MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107
#define MAP_OBJ_GFX_RIVAL_MAY_SURFING 108
#define MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109
#define MAP_OBJ_GFX_CAMERAMAN 110
#define MAP_OBJ_GFX_BRENDAN_UNDERWATER 111
#define MAP_OBJ_GFX_MAY_UNDERWATER 112
#define MAP_OBJ_GFX_MOVING_BOX 113
#define MAP_OBJ_GFX_CABLE_CAR 114
#define MAP_OBJ_GFX_SCIENTIST_2 115
#define MAP_OBJ_GFX_MAN_7 116
#define MAP_OBJ_GFX_AQUA_MEMBER_M 117
#define MAP_OBJ_GFX_AQUA_MEMBER_F 118
#define MAP_OBJ_GFX_MAGMA_MEMBER_M 119
#define MAP_OBJ_GFX_MAGMA_MEMBER_F 120
#define MAP_OBJ_GFX_SIDNEY 121
#define MAP_OBJ_GFX_PHOEBE 122
#define MAP_OBJ_GFX_GLACIA 123
#define MAP_OBJ_GFX_DRAKE 124
#define MAP_OBJ_GFX_ROXANNE 125
#define MAP_OBJ_GFX_BRAWLY 126
#define MAP_OBJ_GFX_WATTSON 127
#define MAP_OBJ_GFX_FLANNERY 128
#define MAP_OBJ_GFX_NORMAN 129
#define MAP_OBJ_GFX_WINONA 130
#define MAP_OBJ_GFX_LIZA 131
#define MAP_OBJ_GFX_TATE 132
#define MAP_OBJ_GFX_WALLACE 133
#define MAP_OBJ_GFX_STEVEN 134
#define MAP_OBJ_GFX_WALLY 135
#define MAP_OBJ_GFX_LITTLE_BOY_3 136
#define MAP_OBJ_GFX_BRENDAN_FISHING 137
#define MAP_OBJ_GFX_MAY_FISHING 138
#define MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139
#define MAP_OBJ_GFX_SS_TIDAL 140
#define MAP_OBJ_GFX_SUBMARINE_SHADOW 141
#define MAP_OBJ_GFX_PICHU_DOLL 142
#define MAP_OBJ_GFX_PIKACHU_DOLL 143
#define MAP_OBJ_GFX_MARILL_DOLL 144
#define MAP_OBJ_GFX_TOGEPI_DOLL 145
#define MAP_OBJ_GFX_CYNDAQUIL_DOLL 146
#define MAP_OBJ_GFX_CHIKORITA_DOLL 147
#define MAP_OBJ_GFX_TOTODILE_DOLL 148
#define MAP_OBJ_GFX_JIGGLYPUFF_DOLL 149
#define MAP_OBJ_GFX_MEOWTH_DOLL 150
#define MAP_OBJ_GFX_CLEFAIRY_DOLL 151
#define MAP_OBJ_GFX_DITTO_DOLL 152
#define MAP_OBJ_GFX_SMOOCHUM_DOLL 153
#define MAP_OBJ_GFX_TREECKO_DOLL 154
#define MAP_OBJ_GFX_TORCHIC_DOLL 155
#define MAP_OBJ_GFX_MUDKIP_DOLL 156
#define MAP_OBJ_GFX_DUSKULL_DOLL 157
#define MAP_OBJ_GFX_WYNAUT_DOLL 158
#define MAP_OBJ_GFX_BALTOY_DOLL 159
#define MAP_OBJ_GFX_KECLEON_DOLL 160
#define MAP_OBJ_GFX_AZURILL_DOLL 161
#define MAP_OBJ_GFX_SKITTY_DOLL 162
#define MAP_OBJ_GFX_SWABLU_DOLL 163
#define MAP_OBJ_GFX_GULPIN_DOLL 164
#define MAP_OBJ_GFX_LOTAD_DOLL 165
#define MAP_OBJ_GFX_SEEDOT_DOLL 166
#define MAP_OBJ_GFX_PIKA_CUSHION 167
#define MAP_OBJ_GFX_ROUND_CUSHION 168
#define MAP_OBJ_GFX_KISS_CUSHION 169
#define MAP_OBJ_GFX_ZIGZAG_CUSHION 170
#define MAP_OBJ_GFX_SPIN_CUSHION 171
#define MAP_OBJ_GFX_DIAMOND_CUSHION 172
#define MAP_OBJ_GFX_BALL_CUSHION 173
#define MAP_OBJ_GFX_GRASS_CUSHION 174
#define MAP_OBJ_GFX_FIRE_CUSHION 175
#define MAP_OBJ_GFX_WATER_CUSHION 176
#define MAP_OBJ_GFX_BIG_SNORLAX_DOLL 177
#define MAP_OBJ_GFX_BIG_RHYDON_DOLL 178
#define MAP_OBJ_GFX_BIG_LAPRAS_DOLL 179
#define MAP_OBJ_GFX_BIG_VENUSAUR_DOLL 180
#define MAP_OBJ_GFX_BIG_CHARIZARD_DOLL 181
#define MAP_OBJ_GFX_BIG_BLASTOISE_DOLL 182
#define MAP_OBJ_GFX_BIG_WAILMER_DOLL 183
#define MAP_OBJ_GFX_BIG_REGIROCK_DOLL 184
#define MAP_OBJ_GFX_BIG_REGICE_DOLL 185
#define MAP_OBJ_GFX_BIG_REGISTEEL_DOLL 186
#define MAP_OBJ_GFX_LATIAS 187
#define MAP_OBJ_GFX_LATIOS 188
#define MAP_OBJ_GFX_BOY_5 189
#define MAP_OBJ_GFX_CONTEST_JUDGE 190
#define MAP_OBJ_GFX_BRENDAN_WATERING 191
#define MAP_OBJ_GFX_MAY_WATERING 192
#define MAP_OBJ_GFX_BRENDAN_DECORATING 193
#define MAP_OBJ_GFX_MAY_DECORATING 194
#define MAP_OBJ_GFX_ARCHIE 195
#define MAP_OBJ_GFX_MAXIE 196
#define MAP_OBJ_GFX_KYOGRE_1 197
#define MAP_OBJ_GFX_GROUDON_1 198
#define MAP_OBJ_GFX_FOSSIL 199
#define MAP_OBJ_GFX_REGIROCK 200
#define MAP_OBJ_GFX_REGICE 201
#define MAP_OBJ_GFX_REGISTEEL 202
#define MAP_OBJ_GFX_SKITTY 203
#define MAP_OBJ_GFX_KECLEON_1 204
#define MAP_OBJ_GFX_KYOGRE_2 205
#define MAP_OBJ_GFX_GROUDON_2 206
#define MAP_OBJ_GFX_RAYQUAZA_2 207
#define MAP_OBJ_GFX_ZIGZAGOON_2 208
#define MAP_OBJ_GFX_PIKACHU 209
#define MAP_OBJ_GFX_AZUMARILL 210
#define MAP_OBJ_GFX_WINGULL 211
#define MAP_OBJ_GFX_KECLEON_2 212
#define MAP_OBJ_GFX_TUBER_M_SWIMMING 213
#define MAP_OBJ_GFX_AZURILL 214
#define MAP_OBJ_GFX_MOM 215
#define MAP_OBJ_GFX_LINK_BRENDAN 216
#define MAP_OBJ_GFX_LINK_MAY 217
#define MAP_OBJ_GFX_JUAN 218
#define MAP_OBJ_GFX_SCOTT 219
#define MAP_OBJ_GFX_POOCHYENA 220
#define MAP_OBJ_GFX_KYOGRE_3 221
#define MAP_OBJ_GFX_GROUDON_3 222
#define MAP_OBJ_GFX_MYSTERY_GIFT_MAN 223
#define MAP_OBJ_GFX_TRICK_HOUSE_STATUE 224
#define MAP_OBJ_GFX_KIRLIA 225
#define MAP_OBJ_GFX_DUSCLOPS 226
#define MAP_OBJ_GFX_UNION_ROOM_NURSE 227
#define MAP_OBJ_GFX_SUDOWOODO 228
#define MAP_OBJ_GFX_MEW 229
#define MAP_OBJ_GFX_RED 230
#define MAP_OBJ_GFX_LEAF 231
#define MAP_OBJ_GFX_DEOXYS 232
#define MAP_OBJ_GFX_DEOXYS_TRIANGLE 233
#define MAP_OBJ_GFX_BRANDON 234
#define MAP_OBJ_GFX_LINK_RS_BRENDAN 235
#define MAP_OBJ_GFX_LINK_RS_MAY 236
#define MAP_OBJ_GFX_LUGIA 237
#define MAP_OBJ_GFX_HOOH 238
#define MAP_OBJ_GFX_BARD_2 239
#define MAP_OBJ_GFX_HIPSTER 240
#define MAP_OBJ_GFX_TRADER 241
#define MAP_OBJ_GFX_STORYTELLER 242
#define MAP_OBJ_GFX_GIDDY 243
#define MAP_OBJ_GFX_PLACEHOLDER_1 244
#define MAP_OBJ_GFX_PLACEHOLDER_2 245
#define SHADOW_SIZE_S 0
#define SHADOW_SIZE_M 1
#define SHADOW_SIZE_L 2
#define SHADOW_SIZE_XL 3
#define F_INANIMATE (1 << 6)
#define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7)
#define TRACKS_NONE 0
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2
#endif // GUARD_CONSTANTS_MAP_OBJECTS_H

598
include/constants/maps.h Normal file
View File

@@ -0,0 +1,598 @@
#ifndef GUARD_CONSTANTS_MAPS_H
#define GUARD_CONSTANTS_MAPS_H
// Map Group 0
#define MAP_PETALBURG_CITY (0 | (0 << 8))
#define MAP_SLATEPORT_CITY (1 | (0 << 8))
#define MAP_MAUVILLE_CITY (2 | (0 << 8))
#define MAP_RUSTBORO_CITY (3 | (0 << 8))
#define MAP_FORTREE_CITY (4 | (0 << 8))
#define MAP_LILYCOVE_CITY (5 | (0 << 8))
#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
#define MAP_OLDALE_TOWN (10 | (0 << 8))
#define MAP_DEWFORD_TOWN (11 | (0 << 8))
#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
#define MAP_ROUTE101 (16 | (0 << 8))
#define MAP_ROUTE102 (17 | (0 << 8))
#define MAP_ROUTE103 (18 | (0 << 8))
#define MAP_ROUTE104 (19 | (0 << 8))
#define MAP_ROUTE105 (20 | (0 << 8))
#define MAP_ROUTE106 (21 | (0 << 8))
#define MAP_ROUTE107 (22 | (0 << 8))
#define MAP_ROUTE108 (23 | (0 << 8))
#define MAP_ROUTE109 (24 | (0 << 8))
#define MAP_ROUTE110 (25 | (0 << 8))
#define MAP_ROUTE111 (26 | (0 << 8))
#define MAP_ROUTE112 (27 | (0 << 8))
#define MAP_ROUTE113 (28 | (0 << 8))
#define MAP_ROUTE114 (29 | (0 << 8))
#define MAP_ROUTE115 (30 | (0 << 8))
#define MAP_ROUTE116 (31 | (0 << 8))
#define MAP_ROUTE117 (32 | (0 << 8))
#define MAP_ROUTE118 (33 | (0 << 8))
#define MAP_ROUTE119 (34 | (0 << 8))
#define MAP_ROUTE120 (35 | (0 << 8))
#define MAP_ROUTE121 (36 | (0 << 8))
#define MAP_ROUTE122 (37 | (0 << 8))
#define MAP_ROUTE123 (38 | (0 << 8))
#define MAP_ROUTE124 (39 | (0 << 8))
#define MAP_ROUTE125 (40 | (0 << 8))
#define MAP_ROUTE126 (41 | (0 << 8))
#define MAP_ROUTE127 (42 | (0 << 8))
#define MAP_ROUTE128 (43 | (0 << 8))
#define MAP_ROUTE129 (44 | (0 << 8))
#define MAP_ROUTE130 (45 | (0 << 8))
#define MAP_ROUTE131 (46 | (0 << 8))
#define MAP_ROUTE132 (47 | (0 << 8))
#define MAP_ROUTE133 (48 | (0 << 8))
#define MAP_ROUTE134 (49 | (0 << 8))
#define MAP_UNDERWATER1 (50 | (0 << 8))
#define MAP_UNDERWATER2 (51 | (0 << 8))
#define MAP_UNDERWATER3 (52 | (0 << 8))
#define MAP_UNDERWATER4 (53 | (0 << 8))
#define MAP_UNDERWATER5 (54 | (0 << 8))
#define MAP_UNDERWATER6 (55 | (0 << 8))
#define MAP_UNDERWATER7 (56 | (0 << 8))
// Map Group 1
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
// Map Group 2
#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
// Map Group 3
#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8))
#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
// Map Group 4
#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
// Map Group 5
#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
// Map Group 6
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8))
#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8))
#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8))
#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8))
#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
// Map Group 7
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
// Map Group 8
#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8))
#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8))
#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
// Map Group 9
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
// Map Group 10
#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8))
#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8))
#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8))
#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
// Map Group 11
#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8))
#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8))
#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8))
#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8))
#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8))
#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8))
#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8))
#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8))
#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8))
#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8))
#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
// Map Group 12
#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8))
#define MAP_FORTREE_CITY_MART (4 | (12 << 8))
#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8))
#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8))
#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8))
#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
// Map Group 13
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8))
#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8))
#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8))
#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8))
#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8))
#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8))
#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8))
#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8))
#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8))
#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8))
#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8))
#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8))
#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
// Map Group 14
#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8))
#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8))
#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8))
#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8))
#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8))
#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8))
#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
// Map Group 15
#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE8 (12 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE9_1F (13 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_HOUSE9_B1F (14 | (15 << 8))
// Map Group 16
#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CORRIDOR1 (5 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CORRIDOR2 (6 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CORRIDOR3 (7 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CORRIDOR4 (8 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_CORRIDOR5 (9 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
// Map Group 17
#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
// Map Group 18
#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
// Map Group 19
#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
// Map Group 20
#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
// Map Group 21
#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
// Map Group 22
#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
// Map Group 23
#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
// Map Group 24
#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8))
#define MAP_RUSTURF_TUNNEL (4 | (24 << 8))
#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8))
#define MAP_DESERT_RUINS (6 | (24 << 8))
#define MAP_GRANITE_CAVE_1F (7 | (24 << 8))
#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8))
#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8))
#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8))
#define MAP_PETALBURG_WOODS (11 | (24 << 8))
#define MAP_MT_CHIMNEY (12 | (24 << 8))
#define MAP_JAGGED_PASS (13 | (24 << 8))
#define MAP_FIERY_PATH (14 | (24 << 8))
#define MAP_MT_PYRE_1F (15 | (24 << 8))
#define MAP_MT_PYRE_2F (16 | (24 << 8))
#define MAP_MT_PYRE_3F (17 | (24 << 8))
#define MAP_MT_PYRE_4F (18 | (24 << 8))
#define MAP_MT_PYRE_5F (19 | (24 << 8))
#define MAP_MT_PYRE_6F (20 | (24 << 8))
#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8))
#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8))
#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8))
#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8))
#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8))
#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8))
#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8))
#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8))
#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8))
#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B1F (39 | (24 << 8)) //
#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B2F (40 | (24 << 8)) // Ruby/Sapphire leftovers
#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B3F (41 | (24 << 8)) //
#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8))
#define MAP_VICTORY_ROAD_1F (43 | (24 << 8))
#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8))
#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8))
#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8))
#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8))
#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8))
#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8))
#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8))
#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8))
#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8))
#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8))
#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8))
#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8))
#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8))
#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8))
#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8))
#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8))
#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8))
#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8))
#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8))
#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8))
#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8))
#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8))
#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8))
#define MAP_ISLAND_CAVE (67 | (24 << 8))
#define MAP_ANCIENT_TOMB (68 | (24 << 8))
#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8))
#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8))
#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8))
#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8))
#define MAP_SCORCHED_SLAB (73 | (24 << 8))
#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_1F (74 | (24 << 8)) //
#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B1F (75 | (24 << 8)) // Ruby/Sapphire leftovers
#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B2F (76 | (24 << 8)) //
#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8))
#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8))
#define MAP_SKY_PILLAR_1F (79 | (24 << 8))
#define MAP_SKY_PILLAR_2F (80 | (24 << 8))
#define MAP_SKY_PILLAR_3F (81 | (24 << 8))
#define MAP_SKY_PILLAR_4F (82 | (24 << 8))
#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8))
#define MAP_SKY_PILLAR_5F (84 | (24 << 8))
#define MAP_SKY_PILLAR_TOP (85 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8))
#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8))
#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8))
#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8))
#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8))
#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8))
#define MAP_DESERT_UNDERPASS (98 | (24 << 8))
#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8))
#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8))
#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8))
#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8))
#define MAP_MARINE_CAVE_END (103 | (24 << 8))
#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8))
#define MAP_TERRA_CAVE_END (105 | (24 << 8))
#define MAP_ALTERING_CAVE (106 | (24 << 8))
#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
// Map Group 25
#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8))
#define MAP_TRADE_CENTER (25 | (25 << 8))
#define MAP_RECORD_CORNER (26 | (25 << 8))
#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8))
#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8))
#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8))
#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_01 (44 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_02 (45 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_03 (46 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_04 (47 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_05 (48 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_06 (49 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_07 (50 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_08 (51 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_09 (52 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_10 (53 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_11 (54 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_12 (55 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_13 (56 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_14 (57 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_15 (58 | (25 << 8))
#define MAP_BATTLE_PYRAMID_SQUARE_16 (59 | (25 << 8))
#define MAP_UNION_ROOM (60 | (25 << 8))
// Map Group 26
#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
#define MAP_SAFARI_ZONE_NORTHEAST (1 | (26 << 8))
#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
#define MAP_SAFARI_ZONE_SOUTHEAST (3 | (26 << 8))
#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
#define MAP_SAFARI_ZONE_EM_1 (12 | (26 << 8))
#define MAP_SAFARI_ZONE_EM_2 (13 | (26 << 8))
#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR_2 (16 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM_2 (17 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_1 (37 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_2 (38 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_3 (39 | (26 << 8))
#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_1 (41 | (26 << 8))
#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_2 (43 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_3 (44 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_4 (45 | (26 << 8))
#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_5 (47 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_6 (48 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_7 (49 | (26 << 8))
#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_8 (51 | (26 << 8))
#define MAP_BATTLE_FRONTIER_LOUNGE_9 (52 | (26 << 8))
#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
#define MAP_NAVEL_ROCK_UP_1 (71 | (26 << 8))
#define MAP_NAVEL_ROCK_UP_2 (72 | (26 << 8))
#define MAP_NAVEL_ROCK_UP_3 (73 | (26 << 8))
#define MAP_NAVEL_ROCK_UP_4 (74 | (26 << 8))
#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_01 (76 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_02 (77 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_03 (78 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_04 (79 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_05 (80 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_06 (81 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_07 (82 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_08 (83 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_09 (84 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_10 (85 | (26 << 8))
#define MAP_NAVEL_ROCK_DOWN_11 (86 | (26 << 8))
#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
// Map Group 27
#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
// Map Group 28
#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
// Map Group 29
#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8))
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (11 | (29 << 8))
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (12 | (29 << 8))
// Map Group 30
#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
// Map Group 31
#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
// Map Group 32
#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
// Map Group 33
#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
#define MAP_NONE (0x7F | (0x7F << 8))
#define MAP_UNDEFINED (0xFF | (0xFF << 8))
#define MAP_GROUP(map) (MAP_##map >> 8)
#define MAP_NUM(map) (MAP_##map & 0xFF)
#endif // GUARD_CONSTANTS_MAPS_H

View File

@@ -0,0 +1,10 @@
#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H
#define GUARD_CONSTANTS_MAUVILLE_MAN_H
#define MAUVILLE_MAN_BARD 0
#define MAUVILLE_MAN_HIPSTER 1
#define MAUVILLE_MAN_TRADER 2
#define MAUVILLE_MAN_STORYTELLER 3
#define MAUVILLE_MAN_GIDDY 4
#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H

362
include/constants/moves.h Normal file
View File

@@ -0,0 +1,362 @@
#ifndef GUARD_CONSTANTS_MOVES_H
#define GUARD_CONSTANTS_MOVES_H
#define MOVE_NONE 0
#define MOVE_POUND 1
#define MOVE_KARATE_CHOP 2
#define MOVE_DOUBLE_SLAP 3
#define MOVE_COMET_PUNCH 4
#define MOVE_MEGA_PUNCH 5
#define MOVE_PAY_DAY 6
#define MOVE_FIRE_PUNCH 7
#define MOVE_ICE_PUNCH 8
#define MOVE_THUNDER_PUNCH 9
#define MOVE_SCRATCH 10
#define MOVE_VICE_GRIP 11
#define MOVE_GUILLOTINE 12
#define MOVE_RAZOR_WIND 13
#define MOVE_SWORDS_DANCE 14
#define MOVE_CUT 15
#define MOVE_GUST 16
#define MOVE_WING_ATTACK 17
#define MOVE_WHIRLWIND 18
#define MOVE_FLY 19
#define MOVE_BIND 20
#define MOVE_SLAM 21
#define MOVE_VINE_WHIP 22
#define MOVE_STOMP 23
#define MOVE_DOUBLE_KICK 24
#define MOVE_MEGA_KICK 25
#define MOVE_JUMP_KICK 26
#define MOVE_ROLLING_KICK 27
#define MOVE_SAND_ATTACK 28
#define MOVE_HEADBUTT 29
#define MOVE_HORN_ATTACK 30
#define MOVE_FURY_ATTACK 31
#define MOVE_HORN_DRILL 32
#define MOVE_TACKLE 33
#define MOVE_BODY_SLAM 34
#define MOVE_WRAP 35
#define MOVE_TAKE_DOWN 36
#define MOVE_THRASH 37
#define MOVE_DOUBLE_EDGE 38
#define MOVE_TAIL_WHIP 39
#define MOVE_POISON_STING 40
#define MOVE_TWINEEDLE 41
#define MOVE_PIN_MISSILE 42
#define MOVE_LEER 43
#define MOVE_BITE 44
#define MOVE_GROWL 45
#define MOVE_ROAR 46
#define MOVE_SING 47
#define MOVE_SUPERSONIC 48
#define MOVE_SONIC_BOOM 49
#define MOVE_DISABLE 50
#define MOVE_ACID 51
#define MOVE_EMBER 52
#define MOVE_FLAMETHROWER 53
#define MOVE_MIST 54
#define MOVE_WATER_GUN 55
#define MOVE_HYDRO_PUMP 56
#define MOVE_SURF 57
#define MOVE_ICE_BEAM 58
#define MOVE_BLIZZARD 59
#define MOVE_PSYBEAM 60
#define MOVE_BUBBLE_BEAM 61
#define MOVE_AURORA_BEAM 62
#define MOVE_HYPER_BEAM 63
#define MOVE_PECK 64
#define MOVE_DRILL_PECK 65
#define MOVE_SUBMISSION 66
#define MOVE_LOW_KICK 67
#define MOVE_COUNTER 68
#define MOVE_SEISMIC_TOSS 69
#define MOVE_STRENGTH 70
#define MOVE_ABSORB 71
#define MOVE_MEGA_DRAIN 72
#define MOVE_LEECH_SEED 73
#define MOVE_GROWTH 74
#define MOVE_RAZOR_LEAF 75
#define MOVE_SOLAR_BEAM 76
#define MOVE_POISON_POWDER 77
#define MOVE_STUN_SPORE 78
#define MOVE_SLEEP_POWDER 79
#define MOVE_PETAL_DANCE 80
#define MOVE_STRING_SHOT 81
#define MOVE_DRAGON_RAGE 82
#define MOVE_FIRE_SPIN 83
#define MOVE_THUNDER_SHOCK 84
#define MOVE_THUNDERBOLT 85
#define MOVE_THUNDER_WAVE 86
#define MOVE_THUNDER 87
#define MOVE_ROCK_THROW 88
#define MOVE_EARTHQUAKE 89
#define MOVE_FISSURE 90
#define MOVE_DIG 91
#define MOVE_TOXIC 92
#define MOVE_CONFUSION 93
#define MOVE_PSYCHIC 94
#define MOVE_HYPNOSIS 95
#define MOVE_MEDITATE 96
#define MOVE_AGILITY 97
#define MOVE_QUICK_ATTACK 98
#define MOVE_RAGE 99
#define MOVE_TELEPORT 100
#define MOVE_NIGHT_SHADE 101
#define MOVE_MIMIC 102
#define MOVE_SCREECH 103
#define MOVE_DOUBLE_TEAM 104
#define MOVE_RECOVER 105
#define MOVE_HARDEN 106
#define MOVE_MINIMIZE 107
#define MOVE_SMOKESCREEN 108
#define MOVE_CONFUSE_RAY 109
#define MOVE_WITHDRAW 110
#define MOVE_DEFENSE_CURL 111
#define MOVE_BARRIER 112
#define MOVE_LIGHT_SCREEN 113
#define MOVE_HAZE 114
#define MOVE_REFLECT 115
#define MOVE_FOCUS_ENERGY 116
#define MOVE_BIDE 117
#define MOVE_METRONOME 118
#define MOVE_MIRROR_MOVE 119
#define MOVE_SELF_DESTRUCT 120
#define MOVE_EGG_BOMB 121
#define MOVE_LICK 122
#define MOVE_SMOG 123
#define MOVE_SLUDGE 124
#define MOVE_BONE_CLUB 125
#define MOVE_FIRE_BLAST 126
#define MOVE_WATERFALL 127
#define MOVE_CLAMP 128
#define MOVE_SWIFT 129
#define MOVE_SKULL_BASH 130
#define MOVE_SPIKE_CANNON 131
#define MOVE_CONSTRICT 132
#define MOVE_AMNESIA 133
#define MOVE_KINESIS 134
#define MOVE_SOFT_BOILED 135
#define MOVE_HI_JUMP_KICK 136
#define MOVE_GLARE 137
#define MOVE_DREAM_EATER 138
#define MOVE_POISON_GAS 139
#define MOVE_BARRAGE 140
#define MOVE_LEECH_LIFE 141
#define MOVE_LOVELY_KISS 142
#define MOVE_SKY_ATTACK 143
#define MOVE_TRANSFORM 144
#define MOVE_BUBBLE 145
#define MOVE_DIZZY_PUNCH 146
#define MOVE_SPORE 147
#define MOVE_FLASH 148
#define MOVE_PSYWAVE 149
#define MOVE_SPLASH 150
#define MOVE_ACID_ARMOR 151
#define MOVE_CRABHAMMER 152
#define MOVE_EXPLOSION 153
#define MOVE_FURY_SWIPES 154
#define MOVE_BONEMERANG 155
#define MOVE_REST 156
#define MOVE_ROCK_SLIDE 157
#define MOVE_HYPER_FANG 158
#define MOVE_SHARPEN 159
#define MOVE_CONVERSION 160
#define MOVE_TRI_ATTACK 161
#define MOVE_SUPER_FANG 162
#define MOVE_SLASH 163
#define MOVE_SUBSTITUTE 164
#define MOVE_STRUGGLE 165
#define MOVE_SKETCH 166
#define MOVE_TRIPLE_KICK 167
#define MOVE_THIEF 168
#define MOVE_SPIDER_WEB 169
#define MOVE_MIND_READER 170
#define MOVE_NIGHTMARE 171
#define MOVE_FLAME_WHEEL 172
#define MOVE_SNORE 173
#define MOVE_CURSE 174
#define MOVE_FLAIL 175
#define MOVE_CONVERSION_2 176
#define MOVE_AEROBLAST 177
#define MOVE_COTTON_SPORE 178
#define MOVE_REVERSAL 179
#define MOVE_SPITE 180
#define MOVE_POWDER_SNOW 181
#define MOVE_PROTECT 182
#define MOVE_MACH_PUNCH 183
#define MOVE_SCARY_FACE 184
#define MOVE_FAINT_ATTACK 185
#define MOVE_SWEET_KISS 186
#define MOVE_BELLY_DRUM 187
#define MOVE_SLUDGE_BOMB 188
#define MOVE_MUD_SLAP 189
#define MOVE_OCTAZOOKA 190
#define MOVE_SPIKES 191
#define MOVE_ZAP_CANNON 192
#define MOVE_FORESIGHT 193
#define MOVE_DESTINY_BOND 194
#define MOVE_PERISH_SONG 195
#define MOVE_ICY_WIND 196
#define MOVE_DETECT 197
#define MOVE_BONE_RUSH 198
#define MOVE_LOCK_ON 199
#define MOVE_OUTRAGE 200
#define MOVE_SANDSTORM 201
#define MOVE_GIGA_DRAIN 202
#define MOVE_ENDURE 203
#define MOVE_CHARM 204
#define MOVE_ROLLOUT 205
#define MOVE_FALSE_SWIPE 206
#define MOVE_SWAGGER 207
#define MOVE_MILK_DRINK 208
#define MOVE_SPARK 209
#define MOVE_FURY_CUTTER 210
#define MOVE_STEEL_WING 211
#define MOVE_MEAN_LOOK 212
#define MOVE_ATTRACT 213
#define MOVE_SLEEP_TALK 214
#define MOVE_HEAL_BELL 215
#define MOVE_RETURN 216
#define MOVE_PRESENT 217
#define MOVE_FRUSTRATION 218
#define MOVE_SAFEGUARD 219
#define MOVE_PAIN_SPLIT 220
#define MOVE_SACRED_FIRE 221
#define MOVE_MAGNITUDE 222
#define MOVE_DYNAMIC_PUNCH 223
#define MOVE_MEGAHORN 224
#define MOVE_DRAGON_BREATH 225
#define MOVE_BATON_PASS 226
#define MOVE_ENCORE 227
#define MOVE_PURSUIT 228
#define MOVE_RAPID_SPIN 229
#define MOVE_SWEET_SCENT 230
#define MOVE_IRON_TAIL 231
#define MOVE_METAL_CLAW 232
#define MOVE_VITAL_THROW 233
#define MOVE_MORNING_SUN 234
#define MOVE_SYNTHESIS 235
#define MOVE_MOONLIGHT 236
#define MOVE_HIDDEN_POWER 237
#define MOVE_CROSS_CHOP 238
#define MOVE_TWISTER 239
#define MOVE_RAIN_DANCE 240
#define MOVE_SUNNY_DAY 241
#define MOVE_CRUNCH 242
#define MOVE_MIRROR_COAT 243
#define MOVE_PSYCH_UP 244
#define MOVE_EXTREME_SPEED 245
#define MOVE_ANCIENT_POWER 246
#define MOVE_SHADOW_BALL 247
#define MOVE_FUTURE_SIGHT 248
#define MOVE_ROCK_SMASH 249
#define MOVE_WHIRLPOOL 250
#define MOVE_BEAT_UP 251
#define MOVE_FAKE_OUT 252
#define MOVE_UPROAR 253
#define MOVE_STOCKPILE 254
#define MOVE_SPIT_UP 255
#define MOVE_SWALLOW 256
#define MOVE_HEAT_WAVE 257
#define MOVE_HAIL 258
#define MOVE_TORMENT 259
#define MOVE_FLATTER 260
#define MOVE_WILL_O_WISP 261
#define MOVE_MEMENTO 262
#define MOVE_FACADE 263
#define MOVE_FOCUS_PUNCH 264
#define MOVE_SMELLING_SALT 265
#define MOVE_FOLLOW_ME 266
#define MOVE_NATURE_POWER 267
#define MOVE_CHARGE 268
#define MOVE_TAUNT 269
#define MOVE_HELPING_HAND 270
#define MOVE_TRICK 271
#define MOVE_ROLE_PLAY 272
#define MOVE_WISH 273
#define MOVE_ASSIST 274
#define MOVE_INGRAIN 275
#define MOVE_SUPERPOWER 276
#define MOVE_MAGIC_COAT 277
#define MOVE_RECYCLE 278
#define MOVE_REVENGE 279
#define MOVE_BRICK_BREAK 280
#define MOVE_YAWN 281
#define MOVE_KNOCK_OFF 282
#define MOVE_ENDEAVOR 283
#define MOVE_ERUPTION 284
#define MOVE_SKILL_SWAP 285
#define MOVE_IMPRISON 286
#define MOVE_REFRESH 287
#define MOVE_GRUDGE 288
#define MOVE_SNATCH 289
#define MOVE_SECRET_POWER 290
#define MOVE_DIVE 291
#define MOVE_ARM_THRUST 292
#define MOVE_CAMOUFLAGE 293
#define MOVE_TAIL_GLOW 294
#define MOVE_LUSTER_PURGE 295
#define MOVE_MIST_BALL 296
#define MOVE_FEATHER_DANCE 297
#define MOVE_TEETER_DANCE 298
#define MOVE_BLAZE_KICK 299
#define MOVE_MUD_SPORT 300
#define MOVE_ICE_BALL 301
#define MOVE_NEEDLE_ARM 302
#define MOVE_SLACK_OFF 303
#define MOVE_HYPER_VOICE 304
#define MOVE_POISON_FANG 305
#define MOVE_CRUSH_CLAW 306
#define MOVE_BLAST_BURN 307
#define MOVE_HYDRO_CANNON 308
#define MOVE_METEOR_MASH 309
#define MOVE_ASTONISH 310
#define MOVE_WEATHER_BALL 311
#define MOVE_AROMATHERAPY 312
#define MOVE_FAKE_TEARS 313
#define MOVE_AIR_CUTTER 314
#define MOVE_OVERHEAT 315
#define MOVE_ODOR_SLEUTH 316
#define MOVE_ROCK_TOMB 317
#define MOVE_SILVER_WIND 318
#define MOVE_METAL_SOUND 319
#define MOVE_GRASS_WHISTLE 320
#define MOVE_TICKLE 321
#define MOVE_COSMIC_POWER 322
#define MOVE_WATER_SPOUT 323
#define MOVE_SIGNAL_BEAM 324
#define MOVE_SHADOW_PUNCH 325
#define MOVE_EXTRASENSORY 326
#define MOVE_SKY_UPPERCUT 327
#define MOVE_SAND_TOMB 328
#define MOVE_SHEER_COLD 329
#define MOVE_MUDDY_WATER 330
#define MOVE_BULLET_SEED 331
#define MOVE_AERIAL_ACE 332
#define MOVE_ICICLE_SPEAR 333
#define MOVE_IRON_DEFENSE 334
#define MOVE_BLOCK 335
#define MOVE_HOWL 336
#define MOVE_DRAGON_CLAW 337
#define MOVE_FRENZY_PLANT 338
#define MOVE_BULK_UP 339
#define MOVE_BOUNCE 340
#define MOVE_MUD_SHOT 341
#define MOVE_POISON_TAIL 342
#define MOVE_COVET 343
#define MOVE_VOLT_TACKLE 344
#define MOVE_MAGICAL_LEAF 345
#define MOVE_WATER_SPORT 346
#define MOVE_CALM_MIND 347
#define MOVE_LEAF_BLADE 348
#define MOVE_DRAGON_DANCE 349
#define MOVE_ROCK_BLAST 350
#define MOVE_SHOCK_WAVE 351
#define MOVE_WATER_PULSE 352
#define MOVE_DOOM_DESIRE 353
#define MOVE_PSYCHO_BOOST 354
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
#endif // GUARD_CONSTANTS_MOVES_H

View File

@@ -0,0 +1,860 @@
#ifndef GUARD_CONSTANTS_OPPONENTS_H
#define GUARD_CONSTANTS_OPPONENTS_H
#define OPPONENT_NONE 0
#define OPPONENT_SAWYER_1 1
#define OPPONENT_GRUNT_1 2
#define OPPONENT_GRUNT_2 3
#define OPPONENT_GRUNT_3 4
#define OPPONENT_GRUNT_4 5
#define OPPONENT_GRUNT_5 6
#define OPPONENT_GRUNT_6 7
#define OPPONENT_GRUNT_7 8
#define OPPONENT_GABRIELLE_1 9
#define OPPONENT_GRUNT_8 10
#define OPPONENT_MARCEL 11
#define OPPONENT_ALBERTO 12
#define OPPONENT_ED 13
#define OPPONENT_GRUNT_9 14
#define OPPONENT_DECLAN 15
#define OPPONENT_GRUNT_10 16
#define OPPONENT_GRUNT_11 17
#define OPPONENT_GRUNT_12 18
#define OPPONENT_GRUNT_13 19
#define OPPONENT_GRUNT_14 20
#define OPPONENT_GRUNT_15 21
#define OPPONENT_GRUNT_16 22
#define OPPONENT_GRUNT_17 23
#define OPPONENT_GRUNT_18 24
#define OPPONENT_GRUNT_19 25
#define OPPONENT_GRUNT_20 26
#define OPPONENT_GRUNT_21 27
#define OPPONENT_GRUNT_22 28
#define OPPONENT_FREDRICK 29
#define OPPONENT_MATT_1 30
#define OPPONENT_ZANDER 31
#define OPPONENT_SHELLY_1 32
#define OPPONENT_SHELLY_2 33
#define OPPONENT_ARCHIE 34
#define OPPONENT_LEAH 35
#define OPPONENT_DAISY 36
#define OPPONENT_ROSE_1 37
#define OPPONENT_FELIX 38
#define OPPONENT_VIOLET 39
#define OPPONENT_ROSE_2 40
#define OPPONENT_ROSE_3 41
#define OPPONENT_ROSE_4 42
#define OPPONENT_ROSE_5 43
#define OPPONENT_DUSTY_1 44
#define OPPONENT_CHIP 45
#define OPPONENT_FOSTER 46
#define OPPONENT_DUSTY_2 47
#define OPPONENT_DUSTY_3 48
#define OPPONENT_DUSTY_4 49
#define OPPONENT_DUSTY_5 50
#define OPPONENT_GABBY_AND_TY_1 51
#define OPPONENT_GABBY_AND_TY_2 52
#define OPPONENT_GABBY_AND_TY_3 53
#define OPPONENT_GABBY_AND_TY_4 54
#define OPPONENT_GABBY_AND_TY_5 55
#define OPPONENT_GABBY_AND_TY_6 56
#define OPPONENT_LOLA_1 57
#define OPPONENT_AUSTINA 58
#define OPPONENT_GWEN 59
#define OPPONENT_LOLA_2 60
#define OPPONENT_LOLA_3 61
#define OPPONENT_LOLA_4 62
#define OPPONENT_LOLA_5 63
#define OPPONENT_RICKY_1 64
#define OPPONENT_SIMON 65
#define OPPONENT_CHARLIE 66
#define OPPONENT_RICKY_2 67
#define OPPONENT_RICKY_3 68
#define OPPONENT_RICKY_4 69
#define OPPONENT_RICKY_5 70
#define OPPONENT_RANDALL 71
#define OPPONENT_PARKER 72
#define OPPONENT_GEORGE 73
#define OPPONENT_BERKE 74
#define OPPONENT_BRAXTON 75
#define OPPONENT_VINCENT 76
#define OPPONENT_LEROY 77
#define OPPONENT_WILTON_1 78
#define OPPONENT_EDGAR 79
#define OPPONENT_ALBERT 80
#define OPPONENT_SAMUEL 81
#define OPPONENT_VITO 82
#define OPPONENT_OWEN 83
#define OPPONENT_WILTON_2 84
#define OPPONENT_WILTON_3 85
#define OPPONENT_WILTON_4 86
#define OPPONENT_WILTON_5 87
#define OPPONENT_WARREN 88
#define OPPONENT_MARY 89
#define OPPONENT_ALEXIA 90
#define OPPONENT_JODY 91
#define OPPONENT_WENDY 92
#define OPPONENT_KEIRA 93
#define OPPONENT_BROOKE_1 94
#define OPPONENT_JENNIFER 95
#define OPPONENT_HOPE 96
#define OPPONENT_SHANNON 97
#define OPPONENT_MICHELLE 98
#define OPPONENT_CAROLINE 99
#define OPPONENT_JULIE 100
#define OPPONENT_BROOKE_2 101
#define OPPONENT_BROOKE_3 102
#define OPPONENT_BROOKE_4 103
#define OPPONENT_BROOKE_5 104
#define OPPONENT_PATRICIA 105
#define OPPONENT_KINDRA 106
#define OPPONENT_TAMMY 107
#define OPPONENT_VALERIE_1 108
#define OPPONENT_TASHA 109
#define OPPONENT_VALERIE_2 110
#define OPPONENT_VALERIE_3 111
#define OPPONENT_VALERIE_4 112
#define OPPONENT_VALERIE_5 113
#define OPPONENT_CINDY_1 114
#define OPPONENT_DAPHNE 115
#define OPPONENT_GRUNT_23 116
#define OPPONENT_CINDY_2 117
#define OPPONENT_BRIANNA 118
#define OPPONENT_NAOMI 119
#define OPPONENT_CINDY_3 120
#define OPPONENT_CINDY_4 121
#define OPPONENT_CINDY_5 122
#define OPPONENT_CINDY_6 123
#define OPPONENT_MELISSA 124
#define OPPONENT_SHEILA 125
#define OPPONENT_SHIRLEY 126
#define OPPONENT_JESSICA_1 127
#define OPPONENT_CONNIE 128
#define OPPONENT_BRIDGET 129
#define OPPONENT_OLIVIA 130
#define OPPONENT_TIFFANY 131
#define OPPONENT_JESSICA_2 132
#define OPPONENT_JESSICA_3 133
#define OPPONENT_JESSICA_4 134
#define OPPONENT_JESSICA_5 135
#define OPPONENT_WINSTON_1 136
#define OPPONENT_MOLLIE 137
#define OPPONENT_GARRET 138
#define OPPONENT_WINSTON_2 139
#define OPPONENT_WINSTON_3 140
#define OPPONENT_WINSTON_4 141
#define OPPONENT_WINSTON_5 142
#define OPPONENT_STEVE_1 143
#define OPPONENT_THALIA_1 144
#define OPPONENT_MARK 145
#define OPPONENT_GRUNT_24 146
#define OPPONENT_STEVE_2 147
#define OPPONENT_STEVE_3 148
#define OPPONENT_STEVE_4 149
#define OPPONENT_STEVE_5 150
#define OPPONENT_LUIS 151
#define OPPONENT_DOMINIK 152
#define OPPONENT_DOUGLAS 153
#define OPPONENT_DARRIN 154
#define OPPONENT_TONY_1 155
#define OPPONENT_JEROME 156
#define OPPONENT_MATTHEW 157
#define OPPONENT_DAVID 158
#define OPPONENT_SPENCER 159
#define OPPONENT_ROLAND 160
#define OPPONENT_NOLEN 161
#define OPPONENT_STAN 162
#define OPPONENT_BARRY 163
#define OPPONENT_DEAN 164
#define OPPONENT_RODNEY 165
#define OPPONENT_RICHARD 166
#define OPPONENT_HERMAN 167
#define OPPONENT_SANTIAGO 168
#define OPPONENT_GILBERT 169
#define OPPONENT_FRANKLIN 170
#define OPPONENT_KEVIN 171
#define OPPONENT_JACK 172
#define OPPONENT_DUDLEY 173
#define OPPONENT_CHAD 174
#define OPPONENT_TONY_2 175
#define OPPONENT_TONY_3 176
#define OPPONENT_TONY_4 177
#define OPPONENT_TONY_5 178
#define OPPONENT_TAKAO 179
#define OPPONENT_HITOSHI 180
#define OPPONENT_KIYO 181
#define OPPONENT_KOICHI 182
#define OPPONENT_NOB_1 183
#define OPPONENT_NOB_2 184
#define OPPONENT_NOB_3 185
#define OPPONENT_NOB_4 186
#define OPPONENT_NOB_5 187
#define OPPONENT_YUJI 188
#define OPPONENT_DAISUKE 189
#define OPPONENT_ATSUSHI 190
#define OPPONENT_KIRK 191
#define OPPONENT_GRUNT_25 192
#define OPPONENT_GRUNT_26 193
#define OPPONENT_SHAWN 194
#define OPPONENT_FERNANDO_1 195
#define OPPONENT_DALTON_1 196
#define OPPONENT_DALTON_2 197
#define OPPONENT_DALTON_3 198
#define OPPONENT_DALTON_4 199
#define OPPONENT_DALTON_5 200
#define OPPONENT_COLE 201
#define OPPONENT_JEFF 202
#define OPPONENT_AXLE 203
#define OPPONENT_JACE 204
#define OPPONENT_KEEGAN 205
#define OPPONENT_BERNIE_1 206
#define OPPONENT_BERNIE_2 207
#define OPPONENT_BERNIE_3 208
#define OPPONENT_BERNIE_4 209
#define OPPONENT_BERNIE_5 210
#define OPPONENT_DREW 211
#define OPPONENT_BEAU 212
#define OPPONENT_LARRY 213
#define OPPONENT_SHANE 214
#define OPPONENT_JUSTIN 215
#define OPPONENT_ETHAN_1 216
#define OPPONENT_AUTUMN 217
#define OPPONENT_TRAVIS 218
#define OPPONENT_ETHAN_2 219
#define OPPONENT_ETHAN_3 220
#define OPPONENT_ETHAN_4 221
#define OPPONENT_ETHAN_5 222
#define OPPONENT_BRENT 223
#define OPPONENT_DONALD 224
#define OPPONENT_TAYLOR 225
#define OPPONENT_JEFFREY_1 226
#define OPPONENT_DEREK 227
#define OPPONENT_JEFFREY_2 228
#define OPPONENT_JEFFREY_3 229
#define OPPONENT_JEFFREY_4 230
#define OPPONENT_JEFFREY_5 231
#define OPPONENT_EDWARD 232
#define OPPONENT_PRESTON 233
#define OPPONENT_VIRGIL 234
#define OPPONENT_BLAKE 235
#define OPPONENT_WILLIAM 236
#define OPPONENT_JOSHUA 237
#define OPPONENT_CAMERON_1 238
#define OPPONENT_CAMERON_2 239
#define OPPONENT_CAMERON_3 240
#define OPPONENT_CAMERON_4 241
#define OPPONENT_CAMERON_5 242
#define OPPONENT_JACLYN 243
#define OPPONENT_HANNAH 244
#define OPPONENT_SAMANTHA 245
#define OPPONENT_MAURA 246
#define OPPONENT_KAYLA 247
#define OPPONENT_ALEXIS 248
#define OPPONENT_JACKI_1 249
#define OPPONENT_JACKI_2 250
#define OPPONENT_JACKI_3 251
#define OPPONENT_JACKI_4 252
#define OPPONENT_JACKI_5 253
#define OPPONENT_WALTER_1 254
#define OPPONENT_MICAH 255
#define OPPONENT_THOMAS 256
#define OPPONENT_WALTER_2 257
#define OPPONENT_WALTER_3 258
#define OPPONENT_WALTER_4 259
#define OPPONENT_WALTER_5 260
#define OPPONENT_SIDNEY 261
#define OPPONENT_PHOEBE 262
#define OPPONENT_GLACIA 263
#define OPPONENT_DRAKE 264
#define OPPONENT_ROXANNE_1 265
#define OPPONENT_BRAWLY_1 266
#define OPPONENT_WATTSON_1 267
#define OPPONENT_FLANNERY_1 268
#define OPPONENT_NORMAN_1 269
#define OPPONENT_WINONA_1 270
#define OPPONENT_TATE_AND_LIZA_1 271
#define OPPONENT_JUAN_1 272
#define OPPONENT_JERRY_1 273
#define OPPONENT_TED 274
#define OPPONENT_PAUL 275
#define OPPONENT_JERRY_2 276
#define OPPONENT_JERRY_3 277
#define OPPONENT_JERRY_4 278
#define OPPONENT_JERRY_5 279
#define OPPONENT_KAREN_1 280
#define OPPONENT_GEORGIA 281
#define OPPONENT_KAREN_2 282
#define OPPONENT_KAREN_3 283
#define OPPONENT_KAREN_4 284
#define OPPONENT_KAREN_5 285
#define OPPONENT_KATE_AND_JOY 286
#define OPPONENT_ANNA_AND_MEG_1 287
#define OPPONENT_ANNA_AND_MEG_2 288
#define OPPONENT_ANNA_AND_MEG_3 289
#define OPPONENT_ANNA_AND_MEG_4 290
#define OPPONENT_ANNA_AND_MEG_5 291
#define OPPONENT_VICTOR 292
#define OPPONENT_MIGUEL_1 293
#define OPPONENT_COLTON 294
#define OPPONENT_MIGUEL_2 295
#define OPPONENT_MIGUEL_3 296
#define OPPONENT_MIGUEL_4 297
#define OPPONENT_MIGUEL_5 298
#define OPPONENT_VICTORIA 299
#define OPPONENT_VANESSA 300
#define OPPONENT_BETHANY 301
#define OPPONENT_ISABEL_1 302
#define OPPONENT_ISABEL_2 303
#define OPPONENT_ISABEL_3 304
#define OPPONENT_ISABEL_4 305
#define OPPONENT_ISABEL_5 306
#define OPPONENT_TIMOTHY_1 307
#define OPPONENT_TIMOTHY_2 308
#define OPPONENT_TIMOTHY_3 309
#define OPPONENT_TIMOTHY_4 310
#define OPPONENT_TIMOTHY_5 311
#define OPPONENT_VICKY 312
#define OPPONENT_SHELBY_1 313
#define OPPONENT_SHELBY_2 314
#define OPPONENT_SHELBY_3 315
#define OPPONENT_SHELBY_4 316
#define OPPONENT_SHELBY_5 317
#define OPPONENT_CALVIN_1 318
#define OPPONENT_BILLY 319
#define OPPONENT_JOSH 320
#define OPPONENT_TOMMY 321
#define OPPONENT_JOEY 322
#define OPPONENT_BEN 323
#define OPPONENT_QUINCY 324
#define OPPONENT_KATELYNN 325
#define OPPONENT_JAYLEN 326
#define OPPONENT_DILLON 327
#define OPPONENT_CALVIN_2 328
#define OPPONENT_CALVIN_3 329
#define OPPONENT_CALVIN_4 330
#define OPPONENT_CALVIN_5 331
#define OPPONENT_EDDIE 332
#define OPPONENT_ALLEN 333
#define OPPONENT_TIMMY 334
#define OPPONENT_WALLACE 335
#define OPPONENT_ANDREW 336
#define OPPONENT_IVAN 337
#define OPPONENT_CLAUDE 338
#define OPPONENT_ELLIOT_1 339
#define OPPONENT_NED 340
#define OPPONENT_DALE 341
#define OPPONENT_NOLAN 342
#define OPPONENT_BARNY 343
#define OPPONENT_WADE 344
#define OPPONENT_CARTER 345
#define OPPONENT_ELLIOT_2 346
#define OPPONENT_ELLIOT_3 347
#define OPPONENT_ELLIOT_4 348
#define OPPONENT_ELLIOT_5 349
#define OPPONENT_RONALD 350
#define OPPONENT_JACOB 351
#define OPPONENT_ANTHONY 352
#define OPPONENT_BENJAMIN_1 353
#define OPPONENT_BENJAMIN_2 354
#define OPPONENT_BENJAMIN_3 355
#define OPPONENT_BENJAMIN_4 356
#define OPPONENT_BENJAMIN_5 357
#define OPPONENT_ABIGAIL_1 358
#define OPPONENT_JASMINE 359
#define OPPONENT_ABIGAIL_2 360
#define OPPONENT_ABIGAIL_3 361
#define OPPONENT_ABIGAIL_4 362
#define OPPONENT_ABIGAIL_5 363
#define OPPONENT_DYLAN_1 364
#define OPPONENT_DYLAN_2 365
#define OPPONENT_DYLAN_3 366
#define OPPONENT_DYLAN_4 367
#define OPPONENT_DYLAN_5 368
#define OPPONENT_MARIA_1 369
#define OPPONENT_MARIA_2 370
#define OPPONENT_MARIA_3 371
#define OPPONENT_MARIA_4 372
#define OPPONENT_MARIA_5 373
#define OPPONENT_CAMDEN 374
#define OPPONENT_DEMETRIUS 375
#define OPPONENT_ISAIAH_1 376
#define OPPONENT_PABLO_1 377
#define OPPONENT_CHASE 378
#define OPPONENT_ISAIAH_2 379
#define OPPONENT_ISAIAH_3 380
#define OPPONENT_ISAIAH_4 381
#define OPPONENT_ISAIAH_5 382
#define OPPONENT_ISOBEL 383
#define OPPONENT_DONNY 384
#define OPPONENT_TALIA 385
#define OPPONENT_KATELYN_1 386
#define OPPONENT_ALLISON 387
#define OPPONENT_KATELYN_2 388
#define OPPONENT_KATELYN_3 389
#define OPPONENT_KATELYN_4 390
#define OPPONENT_KATELYN_5 391
#define OPPONENT_NICOLAS_1 392
#define OPPONENT_NICOLAS_2 393
#define OPPONENT_NICOLAS_3 394
#define OPPONENT_NICOLAS_4 395
#define OPPONENT_NICOLAS_5 396
#define OPPONENT_AARON 397
#define OPPONENT_PERRY 398
#define OPPONENT_HUGH 399
#define OPPONENT_PHIL 400
#define OPPONENT_JARED 401
#define OPPONENT_HUMBERTO 402
#define OPPONENT_PRESLEY 403
#define OPPONENT_EDWARDO 404
#define OPPONENT_COLIN 405
#define OPPONENT_ROBERT_1 406
#define OPPONENT_BENNY 407
#define OPPONENT_CHESTER 408
#define OPPONENT_ROBERT_2 409
#define OPPONENT_ROBERT_3 410
#define OPPONENT_ROBERT_4 411
#define OPPONENT_ROBERT_5 412
#define OPPONENT_ALEX 413
#define OPPONENT_BECK 414
#define OPPONENT_YASU 415
#define OPPONENT_TAKASHI 416
#define OPPONENT_DIANNE 417
#define OPPONENT_JANI 418
#define OPPONENT_LAO_1 419
#define OPPONENT_LUNG 420
#define OPPONENT_LAO_2 421
#define OPPONENT_LAO_3 422
#define OPPONENT_LAO_4 423
#define OPPONENT_LAO_5 424
#define OPPONENT_JOCELYN 425
#define OPPONENT_LAURA 426
#define OPPONENT_CYNDY_1 427
#define OPPONENT_CORA 428
#define OPPONENT_PAULA 429
#define OPPONENT_CYNDY_2 430
#define OPPONENT_CYNDY_3 431
#define OPPONENT_CYNDY_4 432
#define OPPONENT_CYNDY_5 433
#define OPPONENT_MADELINE_1 434
#define OPPONENT_CLARISSA 435
#define OPPONENT_ANGELICA 436
#define OPPONENT_MADELINE_2 437
#define OPPONENT_MADELINE_3 438
#define OPPONENT_MADELINE_4 439
#define OPPONENT_MADELINE_5 440
#define OPPONENT_BEVERLY 441
#define OPPONENT_IMANI 442
#define OPPONENT_KYLA 443
#define OPPONENT_DENISE 444
#define OPPONENT_BETH 445
#define OPPONENT_TARA 446
#define OPPONENT_MISSY 447
#define OPPONENT_ALICE 448
#define OPPONENT_JENNY_1 449
#define OPPONENT_GRACE 450
#define OPPONENT_TANYA 451
#define OPPONENT_SHARON 452
#define OPPONENT_NIKKI 453
#define OPPONENT_BRENDA 454
#define OPPONENT_KATIE 455
#define OPPONENT_SUSIE 456
#define OPPONENT_KARA 457
#define OPPONENT_DANA 458
#define OPPONENT_SIENNA 459
#define OPPONENT_DEBRA 460
#define OPPONENT_LINDA 461
#define OPPONENT_KAYLEE 462
#define OPPONENT_LAUREL 463
#define OPPONENT_CARLEE 464
#define OPPONENT_JENNY_2 465
#define OPPONENT_JENNY_3 466
#define OPPONENT_JENNY_4 467
#define OPPONENT_JENNY_5 468
#define OPPONENT_HEIDI 469
#define OPPONENT_BECKY 470
#define OPPONENT_CAROL 471
#define OPPONENT_NANCY 472
#define OPPONENT_MARTHA 473
#define OPPONENT_DIANA_1 474
#define OPPONENT_CEDRIC 475
#define OPPONENT_IRENE 476
#define OPPONENT_DIANA_2 477
#define OPPONENT_DIANA_3 478
#define OPPONENT_DIANA_4 479
#define OPPONENT_DIANA_5 480
#define OPPONENT_AMY_AND_LIV_1 481
#define OPPONENT_AMY_AND_LIV_2 482
#define OPPONENT_GINA_AND_MIA_1 483
#define OPPONENT_MIU_AND_YUKI 484
#define OPPONENT_AMY_AND_LIV_3 485
#define OPPONENT_GINA_AND_MIA_2 486
#define OPPONENT_AMY_AND_LIV_4 487
#define OPPONENT_AMY_AND_LIV_5 488
#define OPPONENT_AMY_AND_LIV_6 489
#define OPPONENT_HUEY 490
#define OPPONENT_EDMOND 491
#define OPPONENT_ERNEST_1 492
#define OPPONENT_DWAYNE 493
#define OPPONENT_PHILLIP 494
#define OPPONENT_LEONARD 495
#define OPPONENT_DUNCAN 496
#define OPPONENT_ERNEST_2 497
#define OPPONENT_ERNEST_3 498
#define OPPONENT_ERNEST_4 499
#define OPPONENT_ERNEST_5 500
#define OPPONENT_ELI 501
#define OPPONENT_ANNIKA 502
#define OPPONENT_JAZMYN 503
#define OPPONENT_JONAS 504
#define OPPONENT_KAYLEY 505
#define OPPONENT_AURON 506
#define OPPONENT_KELVIN 507
#define OPPONENT_MARLEY 508
#define OPPONENT_REYNA 509
#define OPPONENT_HUDSON 510
#define OPPONENT_CONOR 511
#define OPPONENT_EDWIN_1 512
#define OPPONENT_HECTOR 513
#define OPPONENT_TABITHA_1 514
#define OPPONENT_EDWIN_2 515
#define OPPONENT_EDWIN_3 516
#define OPPONENT_EDWIN_4 517
#define OPPONENT_EDWIN_5 518
#define OPPONENT_WALLY_1 519
#define OPPONENT_BRENDAN_1 520
#define OPPONENT_BRENDAN_2 521
#define OPPONENT_BRENDAN_3 522
#define OPPONENT_BRENDAN_4 523
#define OPPONENT_BRENDAN_5 524
#define OPPONENT_BRENDAN_6 525
#define OPPONENT_BRENDAN_7 526
#define OPPONENT_BRENDAN_8 527
#define OPPONENT_BRENDAN_9 528
#define OPPONENT_MAY_1 529
#define OPPONENT_MAY_2 530
#define OPPONENT_MAY_3 531
#define OPPONENT_MAY_4 532
#define OPPONENT_MAY_5 533
#define OPPONENT_MAY_6 534
#define OPPONENT_MAY_7 535
#define OPPONENT_MAY_8 536
#define OPPONENT_MAY_9 537
#define OPPONENT_ISAAC_1 538
#define OPPONENT_DAVIS 539
#define OPPONENT_MITCHELL 540
#define OPPONENT_ISAAC_2 541
#define OPPONENT_ISAAC_3 542
#define OPPONENT_ISAAC_4 543
#define OPPONENT_ISAAC_5 544
#define OPPONENT_LYDIA_1 545
#define OPPONENT_HALLE 546
#define OPPONENT_GARRISON 547
#define OPPONENT_LYDIA_2 548
#define OPPONENT_LYDIA_3 549
#define OPPONENT_LYDIA_4 550
#define OPPONENT_LYDIA_5 551
#define OPPONENT_JACKSON_1 552
#define OPPONENT_LORENZO 553
#define OPPONENT_SEBASTIAN 554
#define OPPONENT_JACKSON_2 555
#define OPPONENT_JACKSON_3 556
#define OPPONENT_JACKSON_4 557
#define OPPONENT_JACKSON_5 558
#define OPPONENT_CATHERINE_1 559
#define OPPONENT_JENNA 560
#define OPPONENT_SOPHIA 561
#define OPPONENT_CATHERINE_2 562
#define OPPONENT_CATHERINE_3 563
#define OPPONENT_CATHERINE_4 564
#define OPPONENT_CATHERINE_5 565
#define OPPONENT_JULIO 566
#define OPPONENT_GRUNT_27 567
#define OPPONENT_GRUNT_28 568
#define OPPONENT_GRUNT_29 569
#define OPPONENT_GRUNT_30 570
#define OPPONENT_MARC 571
#define OPPONENT_BRENDEN 572
#define OPPONENT_LILITH 573
#define OPPONENT_CRISTIAN 574
#define OPPONENT_SYLVIA 575
#define OPPONENT_LEONARDO 576
#define OPPONENT_ATHENA 577
#define OPPONENT_HARRISON 578
#define OPPONENT_GRUNT_31 579
#define OPPONENT_CLARENCE 580
#define OPPONENT_TERRY 581
#define OPPONENT_NATE 582
#define OPPONENT_KATHLEEN 583
#define OPPONENT_CLIFFORD 584
#define OPPONENT_NICHOLAS 585
#define OPPONENT_GRUNT_32 586
#define OPPONENT_GRUNT_33 587
#define OPPONENT_GRUNT_34 588
#define OPPONENT_GRUNT_35 589
#define OPPONENT_GRUNT_36 590
#define OPPONENT_MACEY 591
#define OPPONENT_BRENDAN_10 592
#define OPPONENT_BRENDAN_11 593
#define OPPONENT_PAXTON 594
#define OPPONENT_ISABELLA 595
#define OPPONENT_GRUNT_37 596
#define OPPONENT_TABITHA_2 597
#define OPPONENT_JONATHAN 598
#define OPPONENT_BRENDAN_12 599
#define OPPONENT_MAY_10 600
#define OPPONENT_MAXIE_1 601
#define OPPONENT_MAXIE_2 602
#define OPPONENT_TIANA 603
#define OPPONENT_HALEY_1 604
#define OPPONENT_JANICE 605
#define OPPONENT_VIVI 606
#define OPPONENT_HALEY_2 607
#define OPPONENT_HALEY_3 608
#define OPPONENT_HALEY_4 609
#define OPPONENT_HALEY_5 610
#define OPPONENT_SALLY 611
#define OPPONENT_ROBIN 612
#define OPPONENT_ANDREA 613
#define OPPONENT_CRISSY 614
#define OPPONENT_RICK 615
#define OPPONENT_LYLE 616
#define OPPONENT_JOSE 617
#define OPPONENT_DOUG 618
#define OPPONENT_GREG 619
#define OPPONENT_KENT 620
#define OPPONENT_JAMES_1 621
#define OPPONENT_JAMES_2 622
#define OPPONENT_JAMES_3 623
#define OPPONENT_JAMES_4 624
#define OPPONENT_JAMES_5 625
#define OPPONENT_BRICE 626
#define OPPONENT_TRENT_1 627
#define OPPONENT_LENNY 628
#define OPPONENT_LUCAS_1 629
#define OPPONENT_ALAN 630
#define OPPONENT_CLARK 631
#define OPPONENT_ERIC 632
#define OPPONENT_LUCAS_2 633
#define OPPONENT_MIKE_1 634
#define OPPONENT_MIKE_2 635
#define OPPONENT_TRENT_2 636
#define OPPONENT_TRENT_3 637
#define OPPONENT_TRENT_4 638
#define OPPONENT_TRENT_5 639
#define OPPONENT_DEZ_AND_LUKE 640
#define OPPONENT_LEA_AND_JED 641
#define OPPONENT_KIRA_AND_DAN_1 642
#define OPPONENT_KIRA_AND_DAN_2 643
#define OPPONENT_KIRA_AND_DAN_3 644
#define OPPONENT_KIRA_AND_DAN_4 645
#define OPPONENT_KIRA_AND_DAN_5 646
#define OPPONENT_JOHANNA 647
#define OPPONENT_GERALD 648
#define OPPONENT_VIVIAN 649
#define OPPONENT_DANIELLE 650
#define OPPONENT_HIDEO 651
#define OPPONENT_KEIGO 652
#define OPPONENT_RILEY 653
#define OPPONENT_FLINT 654
#define OPPONENT_ASHLEY 655
#define OPPONENT_WALLY_2 656
#define OPPONENT_WALLY_3 657
#define OPPONENT_WALLY_4 658
#define OPPONENT_WALLY_5 659
#define OPPONENT_WALLY_6 660
#define OPPONENT_BRENDAN_13 661
#define OPPONENT_BRENDAN_14 662
#define OPPONENT_BRENDAN_15 663
#define OPPONENT_MAY_11 664
#define OPPONENT_MAY_12 665
#define OPPONENT_MAY_13 666
#define OPPONENT_JONAH 667
#define OPPONENT_HENRY 668
#define OPPONENT_ROGER 669
#define OPPONENT_ALEXA 670
#define OPPONENT_RUBEN 671
#define OPPONENT_KOJI_1 672
#define OPPONENT_WAYNE 673
#define OPPONENT_AIDAN 674
#define OPPONENT_REED 675
#define OPPONENT_TISHA 676
#define OPPONENT_TORI_AND_TIA 677
#define OPPONENT_KIM_AND_IRIS 678
#define OPPONENT_TYRA_AND_IVY 679
#define OPPONENT_MEL_AND_PAUL 680
#define OPPONENT_JOHN_AND_JAY_1 681
#define OPPONENT_JOHN_AND_JAY_2 682
#define OPPONENT_JOHN_AND_JAY_3 683
#define OPPONENT_JOHN_AND_JAY_4 684
#define OPPONENT_JOHN_AND_JAY_5 685
#define OPPONENT_RELI_AND_IAN 686
#define OPPONENT_LILA_AND_ROY_1 687
#define OPPONENT_LILA_AND_ROY_2 688
#define OPPONENT_LILA_AND_ROY_3 689
#define OPPONENT_LILA_AND_ROY_4 690
#define OPPONENT_LILA_AND_ROY_5 691
#define OPPONENT_LISA_AND_RAY 692
#define OPPONENT_CHRIS 693
#define OPPONENT_DAWSON 694
#define OPPONENT_SARAH 695
#define OPPONENT_DARIAN 696
#define OPPONENT_HAILEY 697
#define OPPONENT_CHANDLER 698
#define OPPONENT_KALEB 699
#define OPPONENT_JOSEPH 700
#define OPPONENT_ALYSSA 701
#define OPPONENT_MARCOS 702
#define OPPONENT_RHETT 703
#define OPPONENT_TYRON 704
#define OPPONENT_CELINA 705
#define OPPONENT_BIANCA 706
#define OPPONENT_HAYDEN 707
#define OPPONENT_SOPHIE 708
#define OPPONENT_COBY 709
#define OPPONENT_LAWRENCE 710
#define OPPONENT_WYATT 711
#define OPPONENT_ANGELINA 712
#define OPPONENT_KAI 713
#define OPPONENT_CHARLOTTE 714
#define OPPONENT_DEANDRE 715
#define OPPONENT_GRUNT_38 716
#define OPPONENT_GRUNT_39 717
#define OPPONENT_GRUNT_40 718
#define OPPONENT_GRUNT_41 719
#define OPPONENT_GRUNT_42 720
#define OPPONENT_GRUNT_43 721
#define OPPONENT_GRUNT_44 722
#define OPPONENT_GRUNT_45 723
#define OPPONENT_GRUNT_46 724
#define OPPONENT_GRUNT_47 725
#define OPPONENT_GRUNT_48 726
#define OPPONENT_GRUNT_49 727
#define OPPONENT_GRUNT_50 728
#define OPPONENT_GRUNT_51 729
#define OPPONENT_GRUNT_52 730
#define OPPONENT_GRUNT_53 731
#define OPPONENT_TABITHA_3 732
#define OPPONENT_DARCY 733
#define OPPONENT_MAXIE_3 734
#define OPPONENT_PETE 735
#define OPPONENT_ISABELLE 736
#define OPPONENT_ANDRES_1 737
#define OPPONENT_JOSUE 738
#define OPPONENT_CAMRON 739
#define OPPONENT_CORY_1 740
#define OPPONENT_CAROLINA 741
#define OPPONENT_ELIJAH 742
#define OPPONENT_CELIA 743
#define OPPONENT_BRYAN 744
#define OPPONENT_BRANDEN 745
#define OPPONENT_BRYANT 746
#define OPPONENT_SHAYLA 747
#define OPPONENT_KYRA 748
#define OPPONENT_JAIDEN 749
#define OPPONENT_ALIX 750
#define OPPONENT_HELENE 751
#define OPPONENT_MARLENE 752
#define OPPONENT_DEVAN 753
#define OPPONENT_JOHNSON 754
#define OPPONENT_MELINA 755
#define OPPONENT_BRANDI 756
#define OPPONENT_AISHA 757
#define OPPONENT_MAKAYLA 758
#define OPPONENT_FABIAN 759
#define OPPONENT_DAYTON 760
#define OPPONENT_RACHEL 761
#define OPPONENT_LEONEL 762
#define OPPONENT_CALLIE 763
#define OPPONENT_CALE 764
#define OPPONENT_MYLES 765
#define OPPONENT_PAT 766
#define OPPONENT_CRISTIN_1 767
#define OPPONENT_MAY_14 768
#define OPPONENT_MAY_15 769
#define OPPONENT_ROXANNE_2 770
#define OPPONENT_ROXANNE_3 771
#define OPPONENT_ROXANNE_4 772
#define OPPONENT_ROXANNE_5 773
#define OPPONENT_BRAWLY_2 774
#define OPPONENT_BRAWLY_3 775
#define OPPONENT_BRAWLY_4 776
#define OPPONENT_BRAWLY_5 777
#define OPPONENT_WATTSON_2 778
#define OPPONENT_WATTSON_3 779
#define OPPONENT_WATTSON_4 780
#define OPPONENT_WATTSON_5 781
#define OPPONENT_FLANNERY_2 782
#define OPPONENT_FLANNERY_3 783
#define OPPONENT_FLANNERY_4 784
#define OPPONENT_FLANNERY_5 785
#define OPPONENT_NORMAN_2 786
#define OPPONENT_NORMAN_3 787
#define OPPONENT_NORMAN_4 788
#define OPPONENT_NORMAN_5 789
#define OPPONENT_WINONA_2 790
#define OPPONENT_WINONA_3 791
#define OPPONENT_WINONA_4 792
#define OPPONENT_WINONA_5 793
#define OPPONENT_TATE_AND_LIZA_2 794
#define OPPONENT_TATE_AND_LIZA_3 795
#define OPPONENT_TATE_AND_LIZA_4 796
#define OPPONENT_TATE_AND_LIZA_5 797
#define OPPONENT_JUAN_2 798
#define OPPONENT_JUAN_3 799
#define OPPONENT_JUAN_4 800
#define OPPONENT_JUAN_5 801
#define OPPONENT_ANGELO 802
#define OPPONENT_DARIUS 803
#define OPPONENT_STEVEN 804
#define OPPONENT_ANABEL 805
#define OPPONENT_TUCKER 806
#define OPPONENT_SPENSER 807
#define OPPONENT_GRETA 808
#define OPPONENT_NOLAND 809
#define OPPONENT_LUCY 810
#define OPPONENT_BRANDON 811
#define OPPONENT_ANDRES_2 812
#define OPPONENT_ANDRES_3 813
#define OPPONENT_ANDRES_4 814
#define OPPONENT_ANDRES_5 815
#define OPPONENT_CORY_2 816
#define OPPONENT_CORY_3 817
#define OPPONENT_CORY_4 818
#define OPPONENT_CORY_5 819
#define OPPONENT_PABLO_2 820
#define OPPONENT_PABLO_3 821
#define OPPONENT_PABLO_4 822
#define OPPONENT_PABLO_5 823
#define OPPONENT_KOJI_2 824
#define OPPONENT_KOJI_3 825
#define OPPONENT_KOJI_4 826
#define OPPONENT_KOJI_5 827
#define OPPONENT_CRISTIN_2 828
#define OPPONENT_CRISTIN_3 829
#define OPPONENT_CRISTIN_4 830
#define OPPONENT_CRISTIN_5 831
#define OPPONENT_FERNANDO_2 832
#define OPPONENT_FERNANDO_3 833
#define OPPONENT_FERNANDO_4 834
#define OPPONENT_FERNANDO_5 835
#define OPPONENT_SAWYER_2 836
#define OPPONENT_SAWYER_3 837
#define OPPONENT_SAWYER_4 838
#define OPPONENT_SAWYER_5 839
#define OPPONENT_GABRIELLE_2 840
#define OPPONENT_GABRIELLE_3 841
#define OPPONENT_GABRIELLE_4 842
#define OPPONENT_GABRIELLE_5 843
#define OPPONENT_THALIA_2 844
#define OPPONENT_THALIA_3 845
#define OPPONENT_THALIA_4 846
#define OPPONENT_THALIA_5 847
#define OPPONENT_MARIELA 848
#define OPPONENT_ALVARO 848
#define OPPONENT_EVERETT 850
#define OPPONENT_RED 851
#define OPPONENT_LEAF 852
#define OPPONENT_BRENDAN_16 853
#define OPPONENT_MAY_16 854
#endif // GUARD_CONSTANTS_OPPONENTS_H

View File

@@ -0,0 +1,80 @@
#ifndef GUARD_CONSTANTS_POKEMON_H
#define GUARD_CONSTANTS_POKEMON_H
// Pokemon types
#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
// Pokemon egg groups
#define EGG_GROUP_NONE 0
#define EGG_GROUP_MONSTER 1
#define EGG_GROUP_WATER_1 2
#define EGG_GROUP_BUG 3
#define EGG_GROUP_FLYING 4
#define EGG_GROUP_FIELD 5
#define EGG_GROUP_FAIRY 6
#define EGG_GROUP_GRASS 7
#define EGG_GROUP_HUMAN_LIKE 8
#define EGG_GROUP_WATER_3 9
#define EGG_GROUP_MINERAL 10
#define EGG_GROUP_AMORPHOUS 11
#define EGG_GROUP_WATER_2 12
#define EGG_GROUP_DITTO 13
#define EGG_GROUP_DRAGON 14
#define EGG_GROUP_UNDISCOVERED 15
// Pokemon natures
#define NATURE_HARDY 0
#define NATURE_LONELY 1
#define NATURE_BRAVE 2
#define NATURE_ADAMANT 3
#define NATURE_NAUGHTY 4
#define NATURE_BOLD 5
#define NATURE_DOCILE 6
#define NATURE_RELAXED 7
#define NATURE_IMPISH 8
#define NATURE_LAX 9
#define NATURE_TIMID 10
#define NATURE_HASTY 11
#define NATURE_SERIOUS 12
#define NATURE_JOLLY 13
#define NATURE_NAIVE 14
#define NATURE_MODEST 15
#define NATURE_MILD 16
#define NATURE_QUIET 17
#define NATURE_BASHFUL 18
#define NATURE_RASH 19
#define NATURE_CALM 20
#define NATURE_GENTLE 21
#define NATURE_SASSY 22
#define NATURE_CAREFUL 23
#define NATURE_QUIRKY 24
// Pokemon Stats
#define STAT_HP 0
#define STAT_ATK 1
#define STAT_DEF 2
#define STAT_SPEED 3
#define STAT_SPATK 4
#define STAT_SPDEF 5
#define STAT_ACC 6 // only in battles
#define STAT_EVASION 7 // only in battles
#endif // GUARD_CONSTANTS_POKEMON_H

View File

@@ -0,0 +1,219 @@
#ifndef GUARD_REGIONMAPSEC_H
#define GUARD_REGIONMAPSEC_H
#define MAPSEC_LITTLEROOT_TOWN 0x00
#define MAPSEC_OLDALE_TOWN 0x01
#define MAPSEC_DEWFORD_TOWN 0x02
#define MAPSEC_LAVARIDGE_TOWN 0x03
#define MAPSEC_FALLARBOR_TOWN 0x04
#define MAPSEC_VERDANTURF_TOWN 0x05
#define MAPSEC_PACIFIDLOG_TOWN 0x06
#define MAPSEC_PETALBURG_CITY 0x07
#define MAPSEC_SLATEPORT_CITY 0x08
#define MAPSEC_MAUVILLE_CITY 0x09
#define MAPSEC_RUSTBORO_CITY 0x0A
#define MAPSEC_FORTREE_CITY 0x0B
#define MAPSEC_LILYCOVE_CITY 0x0C
#define MAPSEC_MOSSDEEP_CITY 0x0D
#define MAPSEC_SOOTOPOLIS_CITY 0x0E
#define MAPSEC_EVER_GRANDE_CITY 0x0F
#define MAPSEC_ROUTE_101 0x10
#define MAPSEC_ROUTE_102 0x11
#define MAPSEC_ROUTE_103 0x12
#define MAPSEC_ROUTE_104 0x13
#define MAPSEC_ROUTE_105 0x14
#define MAPSEC_ROUTE_106 0x15
#define MAPSEC_ROUTE_107 0x16
#define MAPSEC_ROUTE_108 0x17
#define MAPSEC_ROUTE_109 0x18
#define MAPSEC_ROUTE_110 0x19
#define MAPSEC_ROUTE_111 0x1A
#define MAPSEC_ROUTE_112 0x1B
#define MAPSEC_ROUTE_113 0x1C
#define MAPSEC_ROUTE_114 0x1D
#define MAPSEC_ROUTE_115 0x1E
#define MAPSEC_ROUTE_116 0x1F
#define MAPSEC_ROUTE_117 0x20
#define MAPSEC_ROUTE_118 0x21
#define MAPSEC_ROUTE_119 0x22
#define MAPSEC_ROUTE_120 0x23
#define MAPSEC_ROUTE_121 0x24
#define MAPSEC_ROUTE_122 0x25
#define MAPSEC_ROUTE_123 0x26
#define MAPSEC_ROUTE_124 0x27
#define MAPSEC_ROUTE_125 0x28
#define MAPSEC_ROUTE_126 0x29
#define MAPSEC_ROUTE_127 0x2A
#define MAPSEC_ROUTE_128 0x2B
#define MAPSEC_ROUTE_129 0x2C
#define MAPSEC_ROUTE_130 0x2D
#define MAPSEC_ROUTE_131 0x2E
#define MAPSEC_ROUTE_132 0x2F
#define MAPSEC_ROUTE_133 0x30
#define MAPSEC_ROUTE_134 0x31
#define MAPSEC_UNDERWATER_124 0x32
#define MAPSEC_UNDERWATER_125 0x33
#define MAPSEC_UNDERWATER_126 0x34
#define MAPSEC_UNDERWATER_127 0x35
#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36
#define MAPSEC_GRANITE_CAVE 0x37
#define MAPSEC_MT_CHIMNEY 0x38
#define MAPSEC_SAFARI_ZONE 0x39
#define MAPSEC_BATTLE_FRONTIER 0x3A
#define MAPSEC_PETALBURG_WOODS 0x3B
#define MAPSEC_RUSTURF_TUNNEL 0x3C
#define MAPSEC_ABANDONED_SHIP 0x3D
#define MAPSEC_NEW_MAUVILLE 0x3E
#define MAPSEC_METEOR_FALLS 0x3F
#define MAPSEC_METEOR_FALLS2 0x40
#define MAPSEC_MT_PYRE 0x41
#define MAPSEC_AQUA_HIDEOUT_OLD 0x42
#define MAPSEC_SHOAL_CAVE 0x43
#define MAPSEC_SEAFLOOR_CAVERN 0x44
#define MAPSEC_UNDERWATER_128 0x45
#define MAPSEC_VICTORY_ROAD 0x46
#define MAPSEC_MIRAGE_ISLAND 0x47
#define MAPSEC_CAVE_OF_ORIGIN 0x48
#define MAPSEC_SOUTHERN_ISLAND 0x49
#define MAPSEC_FIERY_PATH 0x4A
#define MAPSEC_FIERY_PATH2 0x4B
#define MAPSEC_JAGGED_PASS 0x4C
#define MAPSEC_JAGGED_PASS2 0x4D
#define MAPSEC_SEALED_CHAMBER 0x4E
#define MAPSEC_UNDERWATER_SEALED_CHAMBER 0x4F
#define MAPSEC_SCORCHED_SLAB 0x50
#define MAPSEC_ISLAND_CAVE 0x51
#define MAPSEC_DESERT_RUINS 0x52
#define MAPSEC_ANCIENT_TOMB 0x53
#define MAPSEC_INSIDE_OF_TRUCK 0x54
#define MAPSEC_SKY_PILLAR 0x55
#define MAPSEC_SECRET_BASE 0x56
#define MAPSEC_DYNAMIC 0x57
#define MAPSEC_PALLET_TOWN 0x58
#define MAPSEC_VIRIDIAN_CITY 0x59
#define MAPSEC_PEWTER_CITY 0x5A
#define MAPSEC_CERULEAN_CITY 0x5B
#define MAPSEC_LAVENDER_TOWN 0x5C
#define MAPSEC_VERMILION_CITY 0x5D
#define MAPSEC_CELADON_CITY 0x5E
#define MAPSEC_FUCHSIA_CITY 0x5F
#define MAPSEC_CINNABAR_ISLAND 0x60
#define MAPSEC_INDIGO_PLATEAU 0x61
#define MAPSEC_SAFFRON_CITY 0x62
#define MAPSEC_ROUTE_4_FLYDUP 0x63
#define MAPSEC_ROUTE_10_FLYDUP 0x64
#define MAPSEC_ROUTE_1 0x65
#define MAPSEC_ROUTE_2 0x66
#define MAPSEC_ROUTE_3 0x67
#define MAPSEC_ROUTE_4 0x68
#define MAPSEC_ROUTE_5 0x69
#define MAPSEC_ROUTE_6 0x6A
#define MAPSEC_ROUTE_7 0x6B
#define MAPSEC_ROUTE_8 0x6C
#define MAPSEC_ROUTE_9 0x6D
#define MAPSEC_ROUTE_10 0x6E
#define MAPSEC_ROUTE_11 0x6F
#define MAPSEC_ROUTE_12 0x70
#define MAPSEC_ROUTE_13 0x71
#define MAPSEC_ROUTE_14 0x72
#define MAPSEC_ROUTE_15 0x73
#define MAPSEC_ROUTE_16 0x74
#define MAPSEC_ROUTE_17 0x75
#define MAPSEC_ROUTE_18 0x76
#define MAPSEC_ROUTE_19 0x77
#define MAPSEC_ROUTE_20 0x78
#define MAPSEC_ROUTE_21 0x79
#define MAPSEC_ROUTE_22 0x7A
#define MAPSEC_ROUTE_23 0x7B
#define MAPSEC_ROUTE_24 0x7C
#define MAPSEC_ROUTE_25 0x7D
#define MAPSEC_VIRIDIAN_FOREST 0x7E
#define MAPSEC_MT_MOON 0x7F
#define MAPSEC_S_S_ANNE 0x80
#define MAPSEC_UNDERGROUND_PATH 0x81
#define MAPSEC_UNDERGROUND_PATH_2 0x82
#define MAPSEC_DIGLETTS_CAVE 0x83
#define MAPSEC_KANTO_VICTORY_ROAD 0x84
#define MAPSEC_ROCKET_HIDEOUT 0x85
#define MAPSEC_SILPH_CO 0x86
#define MAPSEC_POKEMON_MANSION 0x87
#define MAPSEC_KANTO_SAFARI_ZONE 0x88
#define MAPSEC_POKEMON_LEAGUE 0x89
#define MAPSEC_ROCK_TUNNEL 0x8A
#define MAPSEC_SEAFOAM_ISLANDS 0x8B
#define MAPSEC_POKEMON_TOWER 0x8C
#define MAPSEC_CERULEAN_CAVE 0x8D
#define MAPSEC_POWER_PLANT 0x8E
#define MAPSEC_ONE_ISLAND 0x8F
#define MAPSEC_TWO_ISLAND 0x90
#define MAPSEC_THREE_ISLAND 0x91
#define MAPSEC_FOUR_ISLAND 0x92
#define MAPSEC_FIVE_ISLAND 0x93
#define MAPSEC_SEVEN_ISLAND 0x94
#define MAPSEC_SIX_ISLAND 0x95
#define MAPSEC_KINDLE_ROAD 0x96
#define MAPSEC_TREASURE_BEACH 0x97
#define MAPSEC_CAPE_BRINK 0x98
#define MAPSEC_BOND_BRIDGE 0x99
#define MAPSEC_THREE_ISLE_PORT 0x9A
#define MAPSEC_SEVII_ISLE_6 0x9B
#define MAPSEC_SEVII_ISLE_7 0x9C
#define MAPSEC_SEVII_ISLE_8 0x9D
#define MAPSEC_SEVII_ISLE_9 0x9E
#define MAPSEC_RESORT_GORGEOUS 0x9F
#define MAPSEC_WATER_LABYRINTH 0xA0
#define MAPSEC_FIVE_ISLE_MEADOW 0xA1
#define MAPSEC_MEMORIAL_PILLAR 0xA2
#define MAPSEC_OUTCAST_ISLAND 0xA3
#define MAPSEC_GREEN_PATH 0xA4
#define MAPSEC_WATER_PATH 0xA5
#define MAPSEC_RUIN_VALLEY 0xA6
#define MAPSEC_TRAINER_TOWER 0xA7
#define MAPSEC_CANYON_ENTRANCE 0xA8
#define MAPSEC_SEVAULT_CANYON 0xA9
#define MAPSEC_TANOBY_RUINS 0xAA
#define MAPSEC_SEVII_ISLE_22 0xAB
#define MAPSEC_SEVII_ISLE_23 0xAC
#define MAPSEC_SEVII_ISLE_24 0xAD
#define MAPSEC_NAVEL_ROCK 0xAE
#define MAPSEC_MT_EMBER 0xAF
#define MAPSEC_BERRY_FOREST 0xB0
#define MAPSEC_ICEFALL_CAVE 0xB1
#define MAPSEC_ROCKET_WAREHOUSE 0xB2
#define MAPSEC_TRAINER_TOWER_2 0xB3
#define MAPSEC_DOTTED_HOLE 0xB4
#define MAPSEC_LOST_CAVE 0xB5
#define MAPSEC_PATTERN_BUSH 0xB6
#define MAPSEC_ALTERING_CAVE 0xB7
#define MAPSEC_TANOBY_CHAMBERS 0xB8
#define MAPSEC_THREE_ISLE_PATH 0xB9
#define MAPSEC_TANOBY_KEY 0xBA
#define MAPSEC_BIRTH_ISLAND 0xBB
#define MAPSEC_MONEAN_CHAMBER 0xBC
#define MAPSEC_LIPTOO_CHAMBER 0xBD
#define MAPSEC_WEEPTH_CHAMBER 0xBE
#define MAPSEC_DILFORD_CHAMBER 0xBF
#define MAPSEC_SCUFIB_CHAMBER 0xC0
#define MAPSEC_RIXY_CHAMBER 0xC1
#define MAPSEC_VIAPOIS_CHAMBER 0xC2
#define MAPSEC_EMBER_SPA 0xC3
#define MAPSEC_SPECIAL_AREA 0xC4
#define MAPSEC_AQUA_HIDEOUT 0xC5
#define MAPSEC_MAGMA_HIDEOUT 0xC6
#define MAPSEC_MIRAGE_TOWER 0xC7
#define MAPSEC_BIRTH_ISLAND_2 0xC8
#define MAPSEC_FARAWAY_ISLAND 0xC9
#define MAPSEC_ARTISAN_CAVE 0xCA
#define MAPSEC_MARINE_CAVE 0xCB
#define MAPSEC_UNDERWATER_MARINE_CAVE 0xCC
#define MAPSEC_TERRA_CAVE 0xCD
#define MAPSEC_UNDERWATER_TERRA_CAVE 0xCE
#define MAPSEC_UNDERWATER_UNK1 0xCF
#define MAPSEC_UNDERWATER_129 0xD0
#define MAPSEC_DESERT_UNDERPASS 0xD1
#define MAPSEC_ALTERING_CAVE_2 0xD2
#define MAPSEC_NAVEL_ROCK2 0xD3
#define MAPSEC_TRAINER_HILL 0xD4
#define MAPSEC_NONE 0xD5
#endif //GUARD_REGIONMAPSEC_H

16
include/constants/rgb.h Normal file
View File

@@ -0,0 +1,16 @@
#ifndef GUARD_RGB_H
#define GUARD_RGB_H
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F))
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
#define RGB_RED RGB(31, 0, 0)
#define RGB_GREEN RGB(0, 31, 0)
#define RGB_BLUE RGB(0, 0, 31)
#define RGB_YELLOW RGB(31, 31, 0)
#define RGB_MAGENTA RGB(31, 0, 31)
#define RGB_CYAN RGB(0, 31, 31)
#endif // GUARD_RGB_H

541
include/constants/songs.h Normal file
View File

@@ -0,0 +1,541 @@
#ifndef GUARD_CONSTANTS_SONGS_H
#define GUARD_CONSTANTS_SONGS_H
#define MUS_DUMMY 0
#define SE_KAIFUKU 1 // Healing Item
#define SE_PC_LOGIN 2 // PC Logon
#define SE_PC_OFF 3 // PC Shutdown
#define SE_PC_ON 4 // PC Startup
#define SE_SELECT 5 // Cursor Selection
#define SE_WIN_OPEN 6 // Start Menu
#define SE_WALL_HIT 7 // Wall Bump
#define SE_DOOR 8 // Opening Door
#define SE_KAIDAN 9 // Stairs
#define SE_DANSA 10 // Ledge
#define SE_JITENSYA 11 // Bicycle Bell
#define SE_KOUKA_L 12 // Not Very Effective
#define SE_KOUKA_M 13 // Normal Effectiveness
#define SE_KOUKA_H 14 // Super Effective
#define SE_BOWA2 15 // Pokémon Withdrawal
#define SE_POKE_DEAD 16 // Pokémon Fainted
#define SE_NIGERU 17 // Flee from Wild Battle
#define SE_JIDO_DOA 18 // Pokémon Center Door
#define SE_NAMINORI 19 // Briney's Ship
#define SE_BAN 20 // Bang
#define SE_PIN 21 // Exclamation Bubble
#define SE_BOO 22 // Contest Jam
#define SE_BOWA 23 // Giving Poké Ball to Nurse, Poké Ball Wiggle
#define SE_JYUNI 24 // Places in Contest Appearing
#define SE_A 25 // Bard A
#define SE_I 26 // Bard I
#define SE_U 27 // Bard U
#define SE_E 28 // Bard E
#define SE_O 29 // Bard O
#define SE_N 30 // Bard N
#define SE_SEIKAI 31 // Success
#define SE_HAZURE 32 // Failure
#define SE_EXP 33 // Exp. Bar
#define SE_JITE_PYOKO 34 // Bunny Hop
#define SE_MU_PACHI 35
#define SE_TK_KASYA 36 // Mossdeep Gym/Trick House Switch
#define SE_FU_ZAKU 37
#define SE_FU_ZAKU2 38
#define SE_FU_ZUZUZU 39 // Lavaridge Gym Warp
#define SE_RU_GASHIN 40 // Sootopolis Gym - Stairs Appear
#define SE_RU_GASYAN 41 // Sootopolis Gym - Ice Breaking
#define SE_RU_BARI 42 // Sootopolis Gym - Walking on Ice
#define SE_RU_HYUU 43 // Falling Down
#define SE_KI_GASYAN 44
#define SE_TK_WARPIN 45 // Warp In
#define SE_TK_WARPOUT 46 // Warp Out
#define SE_TU_SAA 47 // Repel
#define SE_HI_TURUN 48 // Moving Obstacle in Fortree Gym
#define SE_TRACK_MOVE 49 // Moving Truck
#define SE_TRACK_STOP 50 // Moving Truck Stop
#define SE_TRACK_HAIKI 51 // Moving Truck Unload
#define SE_TRACK_DOOR 52 // Moving Truck Door
#define SE_MOTER 53
#define SE_CARD 54
#define SE_SAVE 55 // Save
#define SE_KON 56 // Poké Ball Bounce 1
#define SE_KON2 57 // Poké Ball Bounce 2
#define SE_KON3 58 // Poké Ball Bounce 3
#define SE_KON4 59 // Poké Ball Bounce 4
#define SE_SUIKOMU 60 // Poké Ball Trade
#define SE_NAGERU 61 // Poké Ball Throw
#define SE_TOY_C 62 // Note C
#define SE_TOY_D 63 // Note D
#define SE_TOY_E 64 // Note E
#define SE_TOY_F 65 // Note F
#define SE_TOY_G 66 // Note G
#define SE_TOY_A 67 // Note A
#define SE_TOY_B 68 // Note B
#define SE_TOY_C1 69 // Note High C
#define SE_MIZU 70 // Puddle
#define SE_HASHI 71 // Boardwalk
#define SE_DAUGI 72 // Slots Credits
#define SE_PINPON 73 // Ding-dong!
#define SE_FUUSEN1 74 // Red Balloon
#define SE_FUUSEN2 75 // Blue Balloon
#define SE_FUUSEN3 76 // Yellow Balloon
#define SE_TOY_KABE 77 // Breakable Door
#define SE_TOY_DANGO 78 // Mud Ball
#define SE_DOKU 79 // Overworld Poison Damage
#define SE_ESUKA 80 // Escalator
#define SE_T_AME 81 // Rain
#define SE_T_AME_E 82 // Rain Stop
#define SE_T_OOAME 83 // Heavy Rain
#define SE_T_OOAME_E 84 // Heavy Rain Stop
#define SE_T_KOAME 85 // Light Rain
#define SE_T_KOAME_E 86 // Light Rain Stop
#define SE_T_KAMI 87 // Thunder
#define SE_T_KAMI2 88 // Thunder 2
#define SE_ELEBETA 89 // Elevator
#define SE_HINSI 90 // Low Health
#define SE_EXPMAX 91 // Exp. Max
#define SE_TAMAKORO 92 // Roulette Ball
#define SE_TAMAKORO_E 93 // Roulette Ball 2
#define SE_BASABASA 94
#define SE_REGI 95 // Cash Register
#define SE_C_GAJI 96 // Contest Hearts
#define SE_C_MAKU_U 97 // Contest Curtain rise
#define SE_C_MAKU_D 98 // Contest Curtain fall
#define SE_C_PASI 99
#define SE_C_SYU 100
#define SE_C_PIKON 101 // Pokémon Appears in Contest
#define SE_REAPOKE 102 // Shiny Pokémon
#define SE_OP_BASYU 103 // Opening Movie -> Title Screen whoosh
#define SE_BT_START 104 // Battle Mugshot whoosh
#define SE_DENDOU 105 // Audience Cheering
#define SE_JIHANKI 106 // Vending Machine
#define SE_TAMA 107 // Orb Used
#define SE_Z_SCROLL 108 // Pokédex Scrolling
#define SE_Z_PAGE 109 // Pokédex Page
#define SE_PN_ON 110 // PokéNav On
#define SE_PN_OFF 111 // PokéNav Off
#define SE_Z_SEARCH 112 // Pokédex Search
#define SE_TAMAGO 113 // Egg hatch
#define SE_TB_START 114 // Battle - Poké Ball Tray slide in
#define SE_TB_KON 115 // Battle - Poké Ball Tray ball sound
#define SE_TB_KARA 116 // Battle - Poké Ball Tray slide out
#define SE_BIDORO 117
#define SE_W085 118 // Thunderbolt
#define SE_W085B 119 // Thunderbolt 2
#define SE_W231 120 // Harden
#define SE_W171 121 // Nightmare
#define SE_W233 122 // Vital Throw
#define SE_W233B 123 // Vital Throw 2
#define SE_W145 124 // Bubble
#define SE_W145B 125 // Bubble 2
#define SE_W145C 126 // Bubble 3
#define SE_W240 127 // Rain Dance
#define SE_W015 128 // Cut
#define SE_W081 129 // String Shot
#define SE_W081B 130 // String Shot 2
#define SE_W088 131 // Rock Throw
#define SE_W016 132 // Gust
#define SE_W016B 133 // Gust 2
#define SE_W003 134 // DoubleSlap
#define SE_W104 135 // Double Team
#define SE_W013 136 // Razor Wind
#define SE_W196 137 // Icy Wind
#define SE_W086 138 // Thunder Wave
#define SE_W004 139 // Comet Punch
#define SE_W025 140 // Mega Kick
#define SE_W025B 141 // Mega Kick 2
#define SE_W152 142 // Crabhammer
#define SE_W026 143 // Jump Kick
#define SE_W172 144 // Flame Wheel
#define SE_W172B 145 // Flame Wheel 2
#define SE_W053 146 // Flamethrower
#define SE_W007 147 // Fire Punch
#define SE_W092 148 // Toxic
#define SE_W221 149 // Sacred Fire
#define SE_W221B 150 // Sacred Fire 2
#define SE_W052 151 // Ember
#define SE_W036 152 // Take Down
#define SE_W059 153 // Blizzard
#define SE_W059B 154 // Blizzard 2
#define SE_W010 155 // Scratch
#define SE_W011 156 // Vicegrip
#define SE_W017 157 // Wing Attack
#define SE_W019 158 // Fly
#define SE_W028 159 // Sand-Attack
#define SE_W013B 160 // Razor Wind 2
#define SE_W044 161 // Bite
#define SE_W029 162 // Headbutt
#define SE_W057 163 // Surf
#define SE_W056 164 // Hydro Pump
#define SE_W250 165 // Whirlpool
#define SE_W030 166 // Horn Attack
#define SE_W039 167 // Tail Whip
#define SE_W054 168 // Mist
#define SE_W077 169 // PoisonPowder
#define SE_W020 170 // Bind
#define SE_W082 171 // Dragon Rage
#define SE_W047 172 // Sing
#define SE_W195 173 // Perish Song
#define SE_W006 174 // Pay Day
#define SE_W091 175 // Dig
#define SE_W146 176 // Dizzy Punch
#define SE_W120 177 // Self-Destruct
#define SE_W153 178 // Explosion
#define SE_W071B 179 // Absorb 2
#define SE_W071 180 // Absorb
#define SE_W103 181 // Screech
#define SE_W062 182 // BubbleBeam
#define SE_W062B 183 // BubbleBeam 2
#define SE_W048 184 // Supersonic
#define SE_W187 185 // Belly Drum
#define SE_W118 186 // Metronome
#define SE_W155 187 // Bonemerang
#define SE_W122 188 // Lick
#define SE_W060 189 // Psybeam
#define SE_W185 190 // Faint Attack
#define SE_W014 191 // Swords Dance
#define SE_W043 192 // Leer
#define SE_W207 193 // Swagger
#define SE_W207B 194 // Swagger 2
#define SE_W215 195 // Heal Bell
#define SE_W109 196 // Confuse Ray
#define SE_W173 197 // Snore
#define SE_W280 198 // Brick Break
#define SE_W202 199 // Giga Drain
#define SE_W060B 200 // Psybeam 2
#define SE_W076 201 // SolarBeam
#define SE_W080 202 // Petal Dance
#define SE_W100 203 // Teleport
#define SE_W107 204 // Minimize
#define SE_W166 205 // Sketch
#define SE_W129 206 // Swift
#define SE_W115 207 // Reflect
#define SE_W112 208 // Barrier
#define SE_W197 209 // Detect
#define SE_W199 210 // Lock-On
#define SE_W236 211 // Moonlight
#define SE_W204 212 // Charm
#define SE_W268 213 // Charge
#define SE_W070 214 // Strength
#define SE_W063 215 // Hyper Beam
#define SE_W127 216 // Waterfall
#define SE_W179 217 // Reversal
#define SE_W151 218 // Acid Armor
#define SE_W201 219 // Sandstorm
#define SE_W161 220 // Tri-Attack
#define SE_W161B 221 // Tri-Attack 2
#define SE_W227 222 // Encore
#define SE_W227B 223 // Encore 2
#define SE_W226 224 // Baton Pass
#define SE_W208 225 // Milk Drink
#define SE_W213 226 // Attract
#define SE_W213B 227 // Attract 2
#define SE_W234 228 // Morning Sun
#define SE_W260 229 // Flatter
#define SE_W328 230 // Sand Tomb
#define SE_W320 231 // GrassWhistle
#define SE_W255 232 // Spit Up
#define SE_W291 233 // Dive
#define SE_W089 234 // Earthquake
#define SE_W239 235 // Twister
#define SE_W230 236 // Sweet Scent
#define SE_W281 237 // Yawn
#define SE_W327 238 // Sky Uppercut
#define SE_W287 239 // Stat Increased
#define SE_W257 240 // Heat Wave
#define SE_W253 241 // Uproar
#define SE_W258 242 // Hail
#define SE_W322 243 // Cosmic Power
#define SE_W298 244 // Teeter Dance
#define SE_W287B 245 // Stat Decreased
#define SE_W114 246 // Haze
#define SE_W063B 247 // Hyper Beam 2
// FRLG SFX below
#define SE_RG_W_DOOR 248 // Door
#define SE_RG_CARD1 249 // Trainer Card 1
#define SE_RG_CARD2 250 // Trainer Card 2
#define SE_RG_CARD3 251 // Trainer Card 3
#define SE_RG_BAG1 252 // Bag Scroll
#define SE_RG_BAG2 253 // Bag Pocket Change
#define SE_RG_GETTING 254
#define SE_RG_SHOP 255 // Cash Register
#define SE_RG_KITEKI 256 // S.S. Anne Horn
#define SE_RG_HELP_OP 257 // Help Menu Open
#define SE_RG_HELP_CL 258 // Help Menu Close
#define SE_RG_HELP_NG 259 // Help Menu Error
#define SE_RG_DEOMOV 260 // Deoxys Moves
#define SE_RG_EXCELLENT 261
#define SE_RG_NAWAMISS 262
// end FRLG SFX
#define SE_TOREEYE 263 // Trainer's Eye Call
#define SE_TOREOFF 264 // Trainer's Eye Hang Up
#define SE_HANTEI1 265 // Battle Arena Time's Up 1
#define SE_HANTEI2 266 // Battle Arena Time's Up 2
#define SE_CURTAIN 267 // Battle Pike Curtain Open
#define SE_CURTAIN1 268 // Battle Pike Curtain Close
#define SE_USSOKI 269 // Sudowoodo
#define MUS_TETSUJI 350 // Littleroot Town Test 'TETSUJI'
#define MUS_FIELD13 351 // GSC - Route 38
#define MUS_KACHI22 352 // Wild Pokémon Defeated
#define MUS_KACHI2 353 // Wild Pokémon Defeated with Intro
#define MUS_KACHI3 354 // Gym Leader Defeated
#define MUS_KACHI5 355 // Victory! Elite Four
#define MUS_PCC 356 // Crystal - Pokémon Communication Center
#define MUS_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc
#define MUS_SUIKUN 358 // Crystal - Battle! Legendary Beasts
#define MUS_DOORO1 359 // Route 101
#define MUS_DOORO_X1 360 // Route 110
#define MUS_DOORO_X3 361 // Route 120
#define MUS_MACHI_S2 362 // Petalburg City
#define MUS_MACHI_S4 363 // Oldale/Lavaridge Town
#define MUS_GIM 364 // Gym
#define MUS_NAMINORI 365 // Surfing
#define MUS_DAN01 366 // Caves and Darkness
#define MUS_FANFA1 367 // Level Up!
#define MUS_ME_ASA 368 // Pokémon Healed
#define MUS_ME_BACHI 369 // Obtained a Badge!
#define MUS_FANFA4 370 // Obtained an Item!
#define MUS_FANFA5 371 // Your Pokémon Just Evolved!
#define MUS_ME_WAZA 372 // Obtained a TM/HM!
#define MUS_BIJYUTU 373 // Lilycove Museum
#define MUS_DOORO_X4 374 // Route 122/Intro
#define MUS_FUNE_KAN 375 // Slateport Museum
#define MUS_ME_SHINKA 376 // Evolution Intro
#define MUS_SHINKA 377 // Evolution
#define MUS_ME_WASURE 378 // Move Deleted/Messed Up Appeal
#define MUS_SYOUJOEYE 379 // Encounter! Tuber
#define MUS_BOYEYE 380 // Encounter! Boy
#define MUS_DAN02 381 // Abandoned Ship/Southern Island
#define MUS_MACHI_S3 382 // Fortree City/Pacifidlog Town
#define MUS_ODAMAKI 383 // Professor Birch's Lab
#define MUS_B_TOWER 384 // Battle Tower (RS)
#define MUS_SWIMEYE 385 // Encounter! Swimmer
#define MUS_DAN03 386 // Meteor Falls/Cave of Origin
#define MUS_ME_KINOMI 387 // Obtained a Berry!
#define MUS_ME_TAMA 388 // Awakening the Super-Ancient Pokémon
#define MUS_ME_B_BIG 389 // Slots Jackpot!
#define MUS_ME_B_SMALL 390 // Slots Victory!
#define MUS_ME_ZANNEN 391 // Too bad!
#define MUS_BD_TIME 392 // Roulette!
#define MUS_TEST1 393 // Contest Test 1
#define MUS_TEST2 394 // Contest Test 2
#define MUS_TEST3 395 // Contest Test 3
#define MUS_TEST4 396 // Contest Test 4
#define MUS_TEST 397 // Encounter! Gentleman
#define MUS_GOMACHI0 398 // Verdanturf Town
#define MUS_GOTOWN 399 // Rustboro/Mauville/Mossdeep City
#define MUS_POKECEN 400 // Pokémon Center
#define MUS_NEXTROAD 401 // Route 104
#define MUS_GRANROAD 402 // Route 119
#define MUS_CYCLING 403 // Cycling
#define MUS_FRIENDLY 404 // Pokémart
#define MUS_MISHIRO 405 // Littleroot Town
#define MUS_TOZAN 406 // Sky Pillar
#define MUS_GIRLEYE 407 // Encounter! Girl
#define MUS_MINAMO 408 // Lilycove City
#define MUS_ASHROAD 409 // Route 111
#define MUS_EVENT0 410 // Help me!
#define MUS_DEEPDEEP 411 // Underwater
#define MUS_KACHI1 412 // Victory! Trainer
#define MUS_TITLE3 413 // Title Screen
#define MUS_DEMO1 414 // Opening Movie
#define MUS_GIRL_SUP 415 // Encounter! May
#define MUS_HAGESHII 416 // Encounter! Biker
#define MUS_KAKKOII 417 // Encounter! Electric Trainer
#define MUS_KAZANBAI 418 // Route 113
#define MUS_AQA_0 419 // Encounter! Team Aqua
#define MUS_TSURETEK 420 // Follow Me!
#define MUS_BOY_SUP 421 // Encounter! Brendan
#define MUS_RAINBOW 422 // Ever Grande City
#define MUS_AYASII 423 // Encounter! Psychic
#define MUS_KACHI4 424 // Victory! Aqua/Magma Grunt
#define MUS_ROPEWAY 425 // Cable Car
#define MUS_CASINO 426 // Game Corner
#define MUS_HIGHTOWN 427 // Dewford Town
#define MUS_SAFARI 428 // Safari Zone
#define MUS_C_ROAD 429 // Victory Road
#define MUS_AJITO 430 // Aqua/Magma Hideout
#define MUS_M_BOAT 431 // Sailing
#define MUS_M_DUNGON 432 // Mt. Pyre (Inside)
#define MUS_FINECITY 433 // Slateport City
#define MUS_MACHUPI 434 // Mt. Pyre (Outside)
#define MUS_P_SCHOOL 435 // Pokémon Trainer's School
#define MUS_DENDOU 436 // You're the Champion!
#define MUS_TONEKUSA 437 // Fallarbor Town
#define MUS_MABOROSI 438 // Sealed Chamber
#define MUS_CON_FAN 439 // Obtained a Contest Ribbon!
#define MUS_CONTEST0 440 // Pokémon Contest
#define MUS_MGM0 441 // Encounter! Team Magma
#define MUS_T_BATTLE 442 // Opening Battle
#define MUS_OOAME 443 // The Flood
#define MUS_HIDERI 444 // The Drought
#define MUS_RUNECITY 445 // Sootopolis City
#define MUS_CON_K 446 // Contest/Berry Blending Results
#define MUS_EIKOU_R 447 // Hall of Fame
#define MUS_KARAKURI 448 // Trick House
#define MUS_HUTAGO 449 // Encounter! Kid
#define MUS_SITENNOU 450 // Encounter! Elite Four
#define MUS_YAMA_EYE 451 // Encounter! Hiker
#define MUS_CONLOBBY 452 // Contest Lobby
#define MUS_INTER_V 453 // Encounter! Gabby and Ty
#define MUS_DAIGO 454 // Encounter! Wallace
#define MUS_THANKFOR 455 // Credits
#define MUS_END 456 // The End
#define MUS_B_FRONTIER 457 // Battle Frontier
#define MUS_B_ARENA 458 // Battle Arena
#define MUS_ME_POINTGET 459 // Obtained Battle Points!
#define MUS_ME_TORE_EYE 460 // Registered Trainer!
#define MUS_PYRAMID 461 // Battle Pyramid
#define MUS_PYRAMID_TOP 462 // Top of the Battle Pyramid
#define MUS_B_PALACE 463 // Battle Palace
#define MUS_REKKUU_KOURIN 464 // Rayquaza Enters
#define MUS_SATTOWER 465 // Battle Tower (Emerald)
#define MUS_ME_SYMBOLGET 466 // Obtained a Frontier Symbol!
#define MUS_B_DOME 467 // Battle Dome
#define MUS_B_TUBE 468 // Battle Pike
#define MUS_B_FACTORY 469 // Battle Factory
#define MUS_VS_REKKU 470 // Battle! Legendary Pokémon
#define MUS_VS_FRONT 471 // Battle! Frontier Brain
#define MUS_VS_MEW 472 // Battle! Mew
#define MUS_B_DOME1 473 // Battle Dome Lobby
#define MUS_BATTLE27 474 // Battle! Wild Pokémon
#define MUS_BATTLE31 475 // Battle! Team Aqua/Magma
#define MUS_BATTLE20 476 // Battle! Trainer
#define MUS_BATTLE32 477 // Battle! Gym Leader
#define MUS_BATTLE33 478 // Battle! Champion
#define MUS_BATTLE36 479 // Battle! Regi Trio
#define MUS_BATTLE34 480 // Battle! Legendary Pokémon (dupe)
#define MUS_BATTLE35 481 // Battle! Rival
#define MUS_BATTLE38 482 // Battle! Elite Four
#define MUS_BATTLE30 483 // Battle! Archie/Maxie
// FRLG Music Below
#define MUS_RG_ANNAI 484 // Follow Me!
#define MUS_RG_SLOT 485 // Game Corner
#define MUS_RG_AJITO 486 // Rocket Hideout
#define MUS_RG_GYM 487 // Gym
#define MUS_RG_PURIN 488 // Jigglypuff's Song
#define MUS_RG_DEMO 489 // Opening Movie
#define MUS_RG_TITLE 490 // Title Screen
#define MUS_RG_GUREN 491 // Cinnabar Island
#define MUS_RG_SHION 492 // Lavender Town
#define MUS_RG_KAIHUKU 493 // RBY Pokémon Center Healing
#define MUS_RG_CYCLING 494 // Cycling
#define MUS_RG_ROCKET 495 // Encounter! Team Rocket
#define MUS_RG_SHOUJO 496 // Encounter! Girl
#define MUS_RG_SHOUNEN 497 // Encounter! Boy
#define MUS_RG_DENDOU 498 // You're the Champion!
#define MUS_RG_T_MORI 499 // Viridian Forest
#define MUS_RG_OTSUKIMI 500 // Mt. Moon
#define MUS_RG_POKEYASHI 501 // Pokémon Mansion
#define MUS_RG_ENDING 502 // Credits
#define MUS_RG_LOAD01 503 // Route 1
#define MUS_RG_OPENING 504 // Route 24/Intro
#define MUS_RG_LOAD02 505 // Route 3
#define MUS_RG_LOAD03 506 // Route 11
#define MUS_RG_CHAMP_R 507 // Victory Road/Indigo Plateau
#define MUS_RG_VS_GYM 508 // Battle! Gym Leader/Elite Four
#define MUS_RG_VS_TORE 509 // Battle! Trainer
#define MUS_RG_VS_YASEI 510 // Battle! Wild Pokémon
#define MUS_RG_VS_LAST 511 // Battle! Champion
#define MUS_RG_MASARA 512 // Pallet Town
#define MUS_RG_KENKYU 513 // Professor Oak's Lab
#define MUS_RG_OHKIDO 514 // Professor Oak's Theme
#define MUS_RG_POKECEN 515 // Pokémon Center
#define MUS_RG_SANTOAN 516 // S.S. Anne
#define MUS_RG_NAMINORI 517 // Surfing
#define MUS_RG_P_TOWER 518 // Pokémon Tower
#define MUS_RG_SHIRUHU 519 // Silph Co.
#define MUS_RG_HANADA 520 // Cerulean/Fuschia City
#define MUS_RG_TAMAMUSI 521 // Celadon City
#define MUS_RG_WIN_TRE 522 // Victory! Trainer
#define MUS_RG_WIN_YASEI 523 // Victory! Wild Pokémon
#define MUS_RG_WIN_GYM 524 // Victory! Gym Leader
#define MUS_RG_KUCHIBA 525 // Vermillion City
#define MUS_RG_NIBI 526 // Viridian/Saffron/Pewter City
#define MUS_RG_RIVAL1 527 // Encounter! Rival
#define MUS_RG_RIVAL2 528 // Rival's Exit
#define MUS_RG_FAN2 529 // Fanfare 2
#define MUS_RG_FAN5 530 // Obtained a Starter!
#define MUS_RG_FAN6 531 // Pokémon Caught! (Used in Emerald)
#define MUS_ME_RG_PHOTO 532 // Trainer Photo
#define MUS_RG_TITLEROG 533 // Game Freak
#define MUS_RG_GET_YASEI 534 // Pokémon Caught Victory Theme
#define MUS_RG_SOUSA 535 // Starting Tutorial
#define MUS_RG_SEKAIKAN 536 // Starting Tutorial 2
#define MUS_RG_SEIBETU 537 // Starting Tutorial 3
#define MUS_RG_JUMP 538 // Jumping Minigame
#define MUS_RG_UNION 539 // Union Room
#define MUS_RG_NETWORK 540 // Network Center
#define MUS_RG_OKURIMONO 541 // Mystery Gift
#define MUS_RG_KINOMIKUI 542
#define MUS_RG_NANADUNGEON 543 // Sevii Caves/Altering Cave (Mt. Moon)
#define MUS_RG_OSHIE_TV 544 // Follow Me!
#define MUS_RG_NANASHIMA 545 // Sevii Islands Routes (Lake of Rage)
#define MUS_RG_NANAISEKI 546 // Sevii Forests (Viridian Forest)
#define MUS_RG_NANA123 547 // Sevii Islands 1-3 (Viridian/Saffron/Pewter)
#define MUS_RG_NANA45 548 // Sevii Islands 4-5 (Azalea Town)
#define MUS_RG_NANA67 549 // Sevii Islands 6-7 (Violet City)
#define MUS_RG_POKEFUE 550 // Poké Flute
#define MUS_RG_VS_DEO 551 // Battle! Deoxys
#define MUS_RG_VS_MYU2 552 // Battle! Mewtwo
#define MUS_RG_VS_DEN 553 // Battle! Legendary Birds
#define MUS_RG_EXEYE 554 // Encounter! Gym Leader
#define MUS_RG_DEOEYE 555 // Encounter! Deoxys
#define MUS_RG_T_TOWER 556 // Trainer Tower (Gym)
#define MUS_RG_SLOWMASARA 557 // Pallet Town (Hall of Fame remix)
#define MUS_RG_TVNOIZE 558 // Teachy TV
#define PH_TRAP_BLEND 559
#define PH_TRAP_HELD 560
#define PH_TRAP_SOLO 561
#define PH_FACE_BLEND 562
#define PH_FACE_HELD 563
#define PH_FACE_SOLO 564
#define PH_CLOTH_BLEND 565
#define PH_CLOTH_HELD 566
#define PH_CLOTH_SOLO 567
#define PH_DRESS_BLEND 568
#define PH_DRESS_HELD 569
#define PH_DRESS_SOLO 570
#define PH_FLEECE_BLEND 571
#define PH_FLEECE_HELD 572
#define PH_FLEECE_SOLO 573
#define PH_KIT_BLEND 574
#define PH_KIT_HELD 575
#define PH_KIT_SOLO 576
#define PH_PRICE_BLEND 577
#define PH_PRICE_HELD 578
#define PH_PRICE_SOLO 579
#define PH_LOT_BLEND 580
#define PH_LOT_HELD 581
#define PH_LOT_SOLO 582
#define PH_GOAT_BLEND 583
#define PH_GOAT_HELD 584
#define PH_GOAT_SOLO 585
#define PH_THOUGHT_BLEND 586
#define PH_THOUGHT_HELD 587
#define PH_THOUGHT_SOLO 588
#define PH_CHOICE_BLEND 589
#define PH_CHOICE_HELD 590
#define PH_CHOICE_SOLO 591
#define PH_MOUTH_BLEND 592
#define PH_MOUTH_HELD 593
#define PH_MOUTH_SOLO 594
#define PH_FOOT_BLEND 595
#define PH_FOOT_HELD 596
#define PH_FOOT_SOLO 597
#define PH_GOOSE_BLEND 598
#define PH_GOOSE_HELD 599
#define PH_GOOSE_SOLO 600
#define PH_STRUT_BLEND 601
#define PH_STRUT_HELD 602
#define PH_STRUT_SOLO 603
#define PH_CURE_BLEND 604
#define PH_CURE_HELD 605
#define PH_CURE_SOLO 606
#define PH_NURSE_BLEND 607
#define PH_NURSE_HELD 608
#define PH_NURSE_SOLO 609
#define MUS_ROUTE_118 0x7FFF // What is this for?
#endif // GUARD_CONSTANTS_SONGS_H

450
include/constants/species.h Normal file
View File

@@ -0,0 +1,450 @@
#ifndef GUARD_CONSTANTS_SPECIES_H
#define GUARD_CONSTANTS_SPECIES_H
#define SPECIES_NONE 0
#define SPECIES_BULBASAUR 1
#define SPECIES_IVYSAUR 2
#define SPECIES_VENUSAUR 3
#define SPECIES_CHARMANDER 4
#define SPECIES_CHARMELEON 5
#define SPECIES_CHARIZARD 6
#define SPECIES_SQUIRTLE 7
#define SPECIES_WARTORTLE 8
#define SPECIES_BLASTOISE 9
#define SPECIES_CATERPIE 10
#define SPECIES_METAPOD 11
#define SPECIES_BUTTERFREE 12
#define SPECIES_WEEDLE 13
#define SPECIES_KAKUNA 14
#define SPECIES_BEEDRILL 15
#define SPECIES_PIDGEY 16
#define SPECIES_PIDGEOTTO 17
#define SPECIES_PIDGEOT 18
#define SPECIES_RATTATA 19
#define SPECIES_RATICATE 20
#define SPECIES_SPEAROW 21
#define SPECIES_FEAROW 22
#define SPECIES_EKANS 23
#define SPECIES_ARBOK 24
#define SPECIES_PIKACHU 25
#define SPECIES_RAICHU 26
#define SPECIES_SANDSHREW 27
#define SPECIES_SANDSLASH 28
#define SPECIES_NIDORAN_F 29
#define SPECIES_NIDORINA 30
#define SPECIES_NIDOQUEEN 31
#define SPECIES_NIDORAN_M 32
#define SPECIES_NIDORINO 33
#define SPECIES_NIDOKING 34
#define SPECIES_CLEFAIRY 35
#define SPECIES_CLEFABLE 36
#define SPECIES_VULPIX 37
#define SPECIES_NINETALES 38
#define SPECIES_JIGGLYPUFF 39
#define SPECIES_WIGGLYTUFF 40
#define SPECIES_ZUBAT 41
#define SPECIES_GOLBAT 42
#define SPECIES_ODDISH 43
#define SPECIES_GLOOM 44
#define SPECIES_VILEPLUME 45
#define SPECIES_PARAS 46
#define SPECIES_PARASECT 47
#define SPECIES_VENONAT 48
#define SPECIES_VENOMOTH 49
#define SPECIES_DIGLETT 50
#define SPECIES_DUGTRIO 51
#define SPECIES_MEOWTH 52
#define SPECIES_PERSIAN 53
#define SPECIES_PSYDUCK 54
#define SPECIES_GOLDUCK 55
#define SPECIES_MANKEY 56
#define SPECIES_PRIMEAPE 57
#define SPECIES_GROWLITHE 58
#define SPECIES_ARCANINE 59
#define SPECIES_POLIWAG 60
#define SPECIES_POLIWHIRL 61
#define SPECIES_POLIWRATH 62
#define SPECIES_ABRA 63
#define SPECIES_KADABRA 64
#define SPECIES_ALAKAZAM 65
#define SPECIES_MACHOP 66
#define SPECIES_MACHOKE 67
#define SPECIES_MACHAMP 68
#define SPECIES_BELLSPROUT 69
#define SPECIES_WEEPINBELL 70
#define SPECIES_VICTREEBEL 71
#define SPECIES_TENTACOOL 72
#define SPECIES_TENTACRUEL 73
#define SPECIES_GEODUDE 74
#define SPECIES_GRAVELER 75
#define SPECIES_GOLEM 76
#define SPECIES_PONYTA 77
#define SPECIES_RAPIDASH 78
#define SPECIES_SLOWPOKE 79
#define SPECIES_SLOWBRO 80
#define SPECIES_MAGNEMITE 81
#define SPECIES_MAGNETON 82
#define SPECIES_FARFETCHD 83
#define SPECIES_DODUO 84
#define SPECIES_DODRIO 85
#define SPECIES_SEEL 86
#define SPECIES_DEWGONG 87
#define SPECIES_GRIMER 88
#define SPECIES_MUK 89
#define SPECIES_SHELLDER 90
#define SPECIES_CLOYSTER 91
#define SPECIES_GASTLY 92
#define SPECIES_HAUNTER 93
#define SPECIES_GENGAR 94
#define SPECIES_ONIX 95
#define SPECIES_DROWZEE 96
#define SPECIES_HYPNO 97
#define SPECIES_KRABBY 98
#define SPECIES_KINGLER 99
#define SPECIES_VOLTORB 100
#define SPECIES_ELECTRODE 101
#define SPECIES_EXEGGCUTE 102
#define SPECIES_EXEGGUTOR 103
#define SPECIES_CUBONE 104
#define SPECIES_MAROWAK 105
#define SPECIES_HITMONLEE 106
#define SPECIES_HITMONCHAN 107
#define SPECIES_LICKITUNG 108
#define SPECIES_KOFFING 109
#define SPECIES_WEEZING 110
#define SPECIES_RHYHORN 111
#define SPECIES_RHYDON 112
#define SPECIES_CHANSEY 113
#define SPECIES_TANGELA 114
#define SPECIES_KANGASKHAN 115
#define SPECIES_HORSEA 116
#define SPECIES_SEADRA 117
#define SPECIES_GOLDEEN 118
#define SPECIES_SEAKING 119
#define SPECIES_STARYU 120
#define SPECIES_STARMIE 121
#define SPECIES_MR_MIME 122
#define SPECIES_SCYTHER 123
#define SPECIES_JYNX 124
#define SPECIES_ELECTABUZZ 125
#define SPECIES_MAGMAR 126
#define SPECIES_PINSIR 127
#define SPECIES_TAUROS 128
#define SPECIES_MAGIKARP 129
#define SPECIES_GYARADOS 130
#define SPECIES_LAPRAS 131
#define SPECIES_DITTO 132
#define SPECIES_EEVEE 133
#define SPECIES_VAPOREON 134
#define SPECIES_JOLTEON 135
#define SPECIES_FLAREON 136
#define SPECIES_PORYGON 137
#define SPECIES_OMANYTE 138
#define SPECIES_OMASTAR 139
#define SPECIES_KABUTO 140
#define SPECIES_KABUTOPS 141
#define SPECIES_AERODACTYL 142
#define SPECIES_SNORLAX 143
#define SPECIES_ARTICUNO 144
#define SPECIES_ZAPDOS 145
#define SPECIES_MOLTRES 146
#define SPECIES_DRATINI 147
#define SPECIES_DRAGONAIR 148
#define SPECIES_DRAGONITE 149
#define SPECIES_MEWTWO 150
#define SPECIES_MEW 151
#define SPECIES_CHIKORITA 152
#define SPECIES_BAYLEEF 153
#define SPECIES_MEGANIUM 154
#define SPECIES_CYNDAQUIL 155
#define SPECIES_QUILAVA 156
#define SPECIES_TYPHLOSION 157
#define SPECIES_TOTODILE 158
#define SPECIES_CROCONAW 159
#define SPECIES_FERALIGATR 160
#define SPECIES_SENTRET 161
#define SPECIES_FURRET 162
#define SPECIES_HOOTHOOT 163
#define SPECIES_NOCTOWL 164
#define SPECIES_LEDYBA 165
#define SPECIES_LEDIAN 166
#define SPECIES_SPINARAK 167
#define SPECIES_ARIADOS 168
#define SPECIES_CROBAT 169
#define SPECIES_CHINCHOU 170
#define SPECIES_LANTURN 171
#define SPECIES_PICHU 172
#define SPECIES_CLEFFA 173
#define SPECIES_IGGLYBUFF 174
#define SPECIES_TOGEPI 175
#define SPECIES_TOGETIC 176
#define SPECIES_NATU 177
#define SPECIES_XATU 178
#define SPECIES_MAREEP 179
#define SPECIES_FLAAFFY 180
#define SPECIES_AMPHAROS 181
#define SPECIES_BELLOSSOM 182
#define SPECIES_MARILL 183
#define SPECIES_AZUMARILL 184
#define SPECIES_SUDOWOODO 185
#define SPECIES_POLITOED 186
#define SPECIES_HOPPIP 187
#define SPECIES_SKIPLOOM 188
#define SPECIES_JUMPLUFF 189
#define SPECIES_AIPOM 190
#define SPECIES_SUNKERN 191
#define SPECIES_SUNFLORA 192
#define SPECIES_YANMA 193
#define SPECIES_WOOPER 194
#define SPECIES_QUAGSIRE 195
#define SPECIES_ESPEON 196
#define SPECIES_UMBREON 197
#define SPECIES_MURKROW 198
#define SPECIES_SLOWKING 199
#define SPECIES_MISDREAVUS 200
#define SPECIES_UNOWN 201
#define SPECIES_WOBBUFFET 202
#define SPECIES_GIRAFARIG 203
#define SPECIES_PINECO 204
#define SPECIES_FORRETRESS 205
#define SPECIES_DUNSPARCE 206
#define SPECIES_GLIGAR 207
#define SPECIES_STEELIX 208
#define SPECIES_SNUBBULL 209
#define SPECIES_GRANBULL 210
#define SPECIES_QWILFISH 211
#define SPECIES_SCIZOR 212
#define SPECIES_SHUCKLE 213
#define SPECIES_HERACROSS 214
#define SPECIES_SNEASEL 215
#define SPECIES_TEDDIURSA 216
#define SPECIES_URSARING 217
#define SPECIES_SLUGMA 218
#define SPECIES_MAGCARGO 219
#define SPECIES_SWINUB 220
#define SPECIES_PILOSWINE 221
#define SPECIES_CORSOLA 222
#define SPECIES_REMORAID 223
#define SPECIES_OCTILLERY 224
#define SPECIES_DELIBIRD 225
#define SPECIES_MANTINE 226
#define SPECIES_SKARMORY 227
#define SPECIES_HOUNDOUR 228
#define SPECIES_HOUNDOOM 229
#define SPECIES_KINGDRA 230
#define SPECIES_PHANPY 231
#define SPECIES_DONPHAN 232
#define SPECIES_PORYGON2 233
#define SPECIES_STANTLER 234
#define SPECIES_SMEARGLE 235
#define SPECIES_TYROGUE 236
#define SPECIES_HITMONTOP 237
#define SPECIES_SMOOCHUM 238
#define SPECIES_ELEKID 239
#define SPECIES_MAGBY 240
#define SPECIES_MILTANK 241
#define SPECIES_BLISSEY 242
#define SPECIES_RAIKOU 243
#define SPECIES_ENTEI 244
#define SPECIES_SUICUNE 245
#define SPECIES_LARVITAR 246
#define SPECIES_PUPITAR 247
#define SPECIES_TYRANITAR 248
#define SPECIES_LUGIA 249
#define SPECIES_HO_OH 250
#define SPECIES_CELEBI 251
#define SPECIES_OLD_UNOWN_B 252
#define SPECIES_OLD_UNOWN_C 253
#define SPECIES_OLD_UNOWN_D 254
#define SPECIES_OLD_UNOWN_E 255
#define SPECIES_OLD_UNOWN_F 256
#define SPECIES_OLD_UNOWN_G 257
#define SPECIES_OLD_UNOWN_H 258
#define SPECIES_OLD_UNOWN_I 259
#define SPECIES_OLD_UNOWN_J 260
#define SPECIES_OLD_UNOWN_K 261
#define SPECIES_OLD_UNOWN_L 262
#define SPECIES_OLD_UNOWN_M 263
#define SPECIES_OLD_UNOWN_N 264
#define SPECIES_OLD_UNOWN_O 265
#define SPECIES_OLD_UNOWN_P 266
#define SPECIES_OLD_UNOWN_Q 267
#define SPECIES_OLD_UNOWN_R 268
#define SPECIES_OLD_UNOWN_S 269
#define SPECIES_OLD_UNOWN_T 270
#define SPECIES_OLD_UNOWN_U 271
#define SPECIES_OLD_UNOWN_V 272
#define SPECIES_OLD_UNOWN_W 273
#define SPECIES_OLD_UNOWN_X 274
#define SPECIES_OLD_UNOWN_Y 275
#define SPECIES_OLD_UNOWN_Z 276
#define SPECIES_TREECKO 277
#define SPECIES_GROVYLE 278
#define SPECIES_SCEPTILE 279
#define SPECIES_TORCHIC 280
#define SPECIES_COMBUSKEN 281
#define SPECIES_BLAZIKEN 282
#define SPECIES_MUDKIP 283
#define SPECIES_MARSHTOMP 284
#define SPECIES_SWAMPERT 285
#define SPECIES_POOCHYENA 286
#define SPECIES_MIGHTYENA 287
#define SPECIES_ZIGZAGOON 288
#define SPECIES_LINOONE 289
#define SPECIES_WURMPLE 290
#define SPECIES_SILCOON 291
#define SPECIES_BEAUTIFLY 292
#define SPECIES_CASCOON 293
#define SPECIES_DUSTOX 294
#define SPECIES_LOTAD 295
#define SPECIES_LOMBRE 296
#define SPECIES_LUDICOLO 297
#define SPECIES_SEEDOT 298
#define SPECIES_NUZLEAF 299
#define SPECIES_SHIFTRY 300
#define SPECIES_NINCADA 301
#define SPECIES_NINJASK 302
#define SPECIES_SHEDINJA 303
#define SPECIES_TAILLOW 304
#define SPECIES_SWELLOW 305
#define SPECIES_SHROOMISH 306
#define SPECIES_BRELOOM 307
#define SPECIES_SPINDA 308
#define SPECIES_WINGULL 309
#define SPECIES_PELIPPER 310
#define SPECIES_SURSKIT 311
#define SPECIES_MASQUERAIN 312
#define SPECIES_WAILMER 313
#define SPECIES_WAILORD 314
#define SPECIES_SKITTY 315
#define SPECIES_DELCATTY 316
#define SPECIES_KECLEON 317
#define SPECIES_BALTOY 318
#define SPECIES_CLAYDOL 319
#define SPECIES_NOSEPASS 320
#define SPECIES_TORKOAL 321
#define SPECIES_SABLEYE 322
#define SPECIES_BARBOACH 323
#define SPECIES_WHISCASH 324
#define SPECIES_LUVDISC 325
#define SPECIES_CORPHISH 326
#define SPECIES_CRAWDAUNT 327
#define SPECIES_FEEBAS 328
#define SPECIES_MILOTIC 329
#define SPECIES_CARVANHA 330
#define SPECIES_SHARPEDO 331
#define SPECIES_TRAPINCH 332
#define SPECIES_VIBRAVA 333
#define SPECIES_FLYGON 334
#define SPECIES_MAKUHITA 335
#define SPECIES_HARIYAMA 336
#define SPECIES_ELECTRIKE 337
#define SPECIES_MANECTRIC 338
#define SPECIES_NUMEL 339
#define SPECIES_CAMERUPT 340
#define SPECIES_SPHEAL 341
#define SPECIES_SEALEO 342
#define SPECIES_WALREIN 343
#define SPECIES_CACNEA 344
#define SPECIES_CACTURNE 345
#define SPECIES_SNORUNT 346
#define SPECIES_GLALIE 347
#define SPECIES_LUNATONE 348
#define SPECIES_SOLROCK 349
#define SPECIES_AZURILL 350
#define SPECIES_SPOINK 351
#define SPECIES_GRUMPIG 352
#define SPECIES_PLUSLE 353
#define SPECIES_MINUN 354
#define SPECIES_MAWILE 355
#define SPECIES_MEDITITE 356
#define SPECIES_MEDICHAM 357
#define SPECIES_SWABLU 358
#define SPECIES_ALTARIA 359
#define SPECIES_WYNAUT 360
#define SPECIES_DUSKULL 361
#define SPECIES_DUSCLOPS 362
#define SPECIES_ROSELIA 363
#define SPECIES_SLAKOTH 364
#define SPECIES_VIGOROTH 365
#define SPECIES_SLAKING 366
#define SPECIES_GULPIN 367
#define SPECIES_SWALOT 368
#define SPECIES_TROPIUS 369
#define SPECIES_WHISMUR 370
#define SPECIES_LOUDRED 371
#define SPECIES_EXPLOUD 372
#define SPECIES_CLAMPERL 373
#define SPECIES_HUNTAIL 374
#define SPECIES_GOREBYSS 375
#define SPECIES_ABSOL 376
#define SPECIES_SHUPPET 377
#define SPECIES_BANETTE 378
#define SPECIES_SEVIPER 379
#define SPECIES_ZANGOOSE 380
#define SPECIES_RELICANTH 381
#define SPECIES_ARON 382
#define SPECIES_LAIRON 383
#define SPECIES_AGGRON 384
#define SPECIES_CASTFORM 385
#define SPECIES_VOLBEAT 386
#define SPECIES_ILLUMISE 387
#define SPECIES_LILEEP 388
#define SPECIES_CRADILY 389
#define SPECIES_ANORITH 390
#define SPECIES_ARMALDO 391
#define SPECIES_RALTS 392
#define SPECIES_KIRLIA 393
#define SPECIES_GARDEVOIR 394
#define SPECIES_BAGON 395
#define SPECIES_SHELGON 396
#define SPECIES_SALAMENCE 397
#define SPECIES_BELDUM 398
#define SPECIES_METANG 399
#define SPECIES_METAGROSS 400
#define SPECIES_REGIROCK 401
#define SPECIES_REGICE 402
#define SPECIES_REGISTEEL 403
#define SPECIES_KYOGRE 404
#define SPECIES_GROUDON 405
#define SPECIES_RAYQUAZA 406
#define SPECIES_LATIAS 407
#define SPECIES_LATIOS 408
#define SPECIES_JIRACHI 409
#define SPECIES_DEOXYS 410
#define SPECIES_CHIMECHO 411
#define SPECIES_EGG 412
#define SPECIES_UNOWN_B 413
#define SPECIES_UNOWN_C 414
#define SPECIES_UNOWN_D 415
#define SPECIES_UNOWN_E 416
#define SPECIES_UNOWN_F 417
#define SPECIES_UNOWN_G 418
#define SPECIES_UNOWN_H 419
#define SPECIES_UNOWN_I 420
#define SPECIES_UNOWN_J 421
#define SPECIES_UNOWN_K 422
#define SPECIES_UNOWN_L 423
#define SPECIES_UNOWN_M 424
#define SPECIES_UNOWN_N 425
#define SPECIES_UNOWN_O 426
#define SPECIES_UNOWN_P 427
#define SPECIES_UNOWN_Q 428
#define SPECIES_UNOWN_R 429
#define SPECIES_UNOWN_S 430
#define SPECIES_UNOWN_T 431
#define SPECIES_UNOWN_U 432
#define SPECIES_UNOWN_V 433
#define SPECIES_UNOWN_W 434
#define SPECIES_UNOWN_X 435
#define SPECIES_UNOWN_Y 436
#define SPECIES_UNOWN_Z 437
#define SPECIES_UNOWN_EMARK 438
#define SPECIES_UNOWN_QMARK 439
#define NUM_SPECIES SPECIES_EGG
#endif // GUARD_CONSTANTS_SPECIES_H

1129
include/constants/trainers.h Normal file

File diff suppressed because it is too large Load Diff

287
include/constants/vars.h Normal file
View File

@@ -0,0 +1,287 @@
#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H
#define VAR_0x3F20 0x3F20
#define VAR_0x4000 0x4000
#define VAR_0x4001 0x4001
#define VAR_0x4002 0x4002
#define VAR_0x4003 0x4003
#define VAR_0x4004 0x4004
#define VAR_0x4005 0x4005
#define VAR_0x4006 0x4006
#define VAR_0x4007 0x4007
#define VAR_0x4008 0x4008
#define VAR_0x4009 0x4009
#define VAR_0x400A 0x400A
#define VAR_0x400B 0x400B
#define VAR_0x400C 0x400C
#define VAR_0x400D 0x400D
#define VAR_0x400E 0x400E
#define VAR_0x400F 0x400F
#define VAR_0x4010 0x4010
#define VAR_0x4011 0x4011
#define VAR_0x4012 0x4012
#define VAR_0x4013 0x4013
#define VAR_0x4014 0x4014
#define VAR_0x4015 0x4015
#define VAR_0x4016 0x4016
#define VAR_0x4017 0x4017
#define VAR_0x4018 0x4018
#define VAR_0x4019 0x4019
#define VAR_0x401A 0x401A
#define VAR_0x401B 0x401B
#define VAR_0x401C 0x401C
#define VAR_0x401D 0x401D
#define VAR_0x401E 0x401E
#define VAR_0x401F 0x401F
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
#define VAR_FIRST_POKE 0x4023
#define VAR_MIRAGE_RND_H 0x4024
#define VAR_MIRAGE_RND_L 0x4025
#define VAR_SECRET_BASE_MAP 0x4026
#define VAR_0x4027 0x4027
#define VAR_0x4028 0x4028
#define VAR_0x4029 0x4029
#define VAR_HAPPINESS_STEP_COUNTER 0x402A
#define VAR_POISON_STEP_COUNTER 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
#define VAR_0x402E 0x402E
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
#define VAR_0x4034 0x4034
#define VAR_0x4035 0x4035
#define VAR_STORAGE_UNKNOWN 0x4036
#define VAR_0x4037 0x4037
#define VAR_0x4038 0x4038
#define VAR_0x4039 0x4039
#define VAR_0x403A 0x403A
#define VAR_0x403B 0x403B
#define VAR_0x403C 0x403C
#define VAR_0x403D 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
#define VAR_0x403F 0x403F
#define VAR_DAYS 0x4040
#define VAR_0x4041 0x4041
#define VAR_0x4042 0x4042
#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_0x4044 0x4044
#define VAR_POKELOT_PRIZE 0x4045
#define VAR_NATIONAL_DEX 0x4046
#define VAR_SEEDOT_SIZE_RECORD 0x4047
#define VAR_ASH_GATHER_COUNT 0x4048
#define VAR_BIRCH_STATE 0x4049
#define VAR_CRUISE_STEP_COUNT 0x404A
#define VAR_POKELOT_RND1 0x404B
#define VAR_POKELOT_RND2 0x404C
#define VAR_0x404D 0x404D
#define VAR_0x404E 0x404E
#define VAR_LOTAD_SIZE_RECORD 0x404F
#define VAR_0x4050 0x4050
#define VAR_0x4051 0x4051
#define VAR_0x4052 0x4052
#define VAR_0x4053 0x4053
#define VAR_0x4054 0x4054
#define VAR_0x4055 0x4055
#define VAR_0x4056 0x4056
#define VAR_0x4057 0x4057
#define VAR_0x4058 0x4058
#define VAR_0x4059 0x4059
#define VAR_0x405A 0x405A
#define VAR_0x405B 0x405B
#define VAR_0x405C 0x405C
#define VAR_0x405D 0x405D
#define VAR_0x405E 0x405E
#define VAR_0x405F 0x405F
#define VAR_0x4060 0x4060
#define VAR_0x4061 0x4061
#define VAR_0x4062 0x4062
#define VAR_0x4063 0x4063
#define VAR_0x4064 0x4064
#define VAR_0x4065 0x4065
#define VAR_0x4066 0x4066
#define VAR_0x4067 0x4067
#define VAR_0x4068 0x4068
#define VAR_0x4069 0x4069
#define VAR_0x406A 0x406A
#define VAR_0x406B 0x406B
#define VAR_0x406C 0x406C
#define VAR_0x406D 0x406D
#define VAR_0x406E 0x406E
#define VAR_0x406F 0x406F
#define VAR_0x4070 0x4070
#define VAR_0x4071 0x4071
#define VAR_0x4072 0x4072
#define VAR_0x4073 0x4073
#define VAR_0x4074 0x4074
#define VAR_0x4075 0x4075
#define VAR_0x4076 0x4076
#define VAR_0x4077 0x4077
#define VAR_0x4078 0x4078
#define VAR_0x4079 0x4079
#define VAR_0x407A 0x407A
#define VAR_0x407B 0x407B
#define VAR_0x407C 0x407C
#define VAR_0x407D 0x407D
#define VAR_0x407E 0x407E
#define VAR_0x407F 0x407F
#define VAR_0x4080 0x4080
#define VAR_0x4081 0x4081
#define VAR_0x4082 0x4082
#define VAR_0x4083 0x4083
#define VAR_0x4084 0x4084
#define VAR_0x4085 0x4085
#define VAR_0x4086 0x4086
#define VAR_0x4087 0x4087
#define VAR_0x4088 0x4088
#define VAR_0x4089 0x4089
#define VAR_0x408A 0x408A
#define VAR_0x408B 0x408B
#define VAR_0x408C 0x408C
#define VAR_0x408D 0x408D
#define VAR_0x408E 0x408E
#define VAR_0x408F 0x408F
#define VAR_0x4090 0x4090
#define VAR_0x4091 0x4091
#define VAR_0x4092 0x4092
#define VAR_0x4093 0x4093
#define VAR_0x4094 0x4094
#define VAR_0x4095 0x4095
#define VAR_0x4096 0x4096
#define VAR_0x4097 0x4097
#define VAR_0x4098 0x4098
#define VAR_0x4099 0x4099
#define VAR_0x409A 0x409A
#define VAR_0x409B 0x409B
#define VAR_0x409C 0x409C
#define VAR_0x409D 0x409D
#define VAR_0x409E 0x409E
#define VAR_0x409F 0x409F
#define VAR_0x40A0 0x40A0
#define VAR_0x40A1 0x40A1
#define VAR_0x40A2 0x40A2
#define VAR_0x40A3 0x40A3
#define VAR_0x40A4 0x40A4
#define VAR_0x40A5 0x40A5
#define VAR_0x40A6 0x40A6
#define VAR_0x40A7 0x40A7
#define VAR_0x40A8 0x40A8
#define VAR_0x40A9 0x40A9
#define VAR_0x40AA 0x40AA
#define VAR_0x40AB 0x40AB
#define VAR_0x40AC 0x40AC
#define VAR_0x40AD 0x40AD
#define VAR_0x40AE 0x40AE
#define VAR_0x40AF 0x40AF
#define VAR_0x40B0 0x40B0
#define VAR_0x40B1 0x40B1
#define VAR_0x40B2 0x40B2
#define VAR_0x40B3 0x40B3
#define VAR_PORTHOLE 0x40B4
#define VAR_0x40B5 0x40B5
#define VAR_0x40B6 0x40B6
#define VAR_0x40B7 0x40B7
#define VAR_0x40B8 0x40B8
#define VAR_0x40B9 0x40B9
#define VAR_0x40BA 0x40BA
#define VAR_0x40BB 0x40BB
#define VAR_0x40BC 0x40BC
#define VAR_0x40BD 0x40BD
#define VAR_0x40BE 0x40BE
#define VAR_0x40BF 0x40BF
#define VAR_0x40C0 0x40C0
#define VAR_0x40C1 0x40C1
#define VAR_0x40C2 0x40C2
#define VAR_0x40C3 0x40C3
#define VAR_0x40C4 0x40C4
#define VAR_0x40C5 0x40C5
#define VAR_0x40C6 0x40C6
#define VAR_0x40C7 0x40C7
#define VAR_0x40C8 0x40C8
#define VAR_0x40C9 0x40C9
#define VAR_0x40CA 0x40CA
#define VAR_0x40CB 0x40CB
#define VAR_0x40CC 0x40CC
#define VAR_0x40CD 0x40CD
#define VAR_0x40CE 0x40CE
#define VAR_FRONTIER_FACILITY 0x40CF
#define VAR_0x40D0 0x40D0
#define VAR_0x40D1 0x40D1
#define VAR_0x40D2 0x40D2
#define VAR_0x40D3 0x40D3
#define VAR_0x40D4 0x40D4
#define VAR_0x40D5 0x40D5
#define VAR_0x40D6 0x40D6
#define VAR_0x40D7 0x40D7
#define VAR_0x40D8 0x40D8
#define VAR_0x40D9 0x40D9
#define VAR_0x40DA 0x40DA
#define VAR_0x40DB 0x40DB
#define VAR_0x40DC 0x40DC
#define VAR_EVENT_PICHU_SLOT 0x40DD
#define VAR_0x40DE 0x40DE
#define VAR_0x40DF 0x40DF
#define VAR_0x40E0 0x40E0
#define VAR_0x40E1 0x40E1
#define VAR_0x40E2 0x40E2
#define VAR_0x40E3 0x40E3
#define VAR_0x40E4 0x40E4
#define VAR_0x40E5 0x40E5
#define VAR_DAILY_SLOTS 0x40E6
#define VAR_DAILY_WILDS 0x40E7
#define VAR_DAILY_BLENDER 0x40E8
#define VAR_DAILY_PLANTED_BERRIES 0x40E9
#define VAR_DAILY_PICKED_BERRIES 0x40EA
#define VAR_DAILY_ROULETTE 0x40EB
#define VAR_0x40EC 0x40EC
#define VAR_0x40ED 0x40ED
#define VAR_0x40EE 0x40EE
#define VAR_0x40EF 0x40EF
#define VAR_0x40F0 0x40F0
#define VAR_DAILY_BP 0x40F1
#define VAR_0x40F2 0x40F2
#define VAR_0x40F3 0x40F3
#define VAR_0x40F4 0x40F4
#define VAR_0x40F5 0x40F5
#define VAR_0x40F6 0x40F6
#define VAR_0x40F7 0x40F7
#define VAR_0x40F8 0x40F8
#define VAR_0x40F9 0x40F9
#define VAR_0x40FA 0x40FA
#define VAR_0x40FB 0x40FB
#define VAR_0x40FC 0x40FC
#define VAR_0x40FD 0x40FD
#define VAR_0x40FE 0x40FE
#define VAR_0x40FF 0x40FF
#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
#define VAR_MON_BOX_ID 0x8012
#define VAR_MON_BOX_POS 0x8013
#define VAR_0x8014 0x8014
#endif // GUARD_CONSTANTS_VARS_H

View File

@@ -0,0 +1,39 @@
#ifndef GUARD_CONSTANTS_WEATHER_H
#define GUARD_CONSTANTS_WEATHER_H
#define WEATHER_NONE 0
#define WEATHER_CLOUDS 1
#define WEATHER_SUNNY 2
#define WEATHER_RAIN_LIGHT 3
#define WEATHER_SNOW 4
#define WEATHER_RAIN_MED 5
#define WEATHER_FOG_1 6
#define WEATHER_ASH 7
#define WEATHER_SANDSTORM 8
#define WEATHER_FOG_2 9
#define WEATHER_FOG_3 10
#define WEATHER_SHADE 11
#define WEATHER_DROUGHT 12
#define WEATHER_RAIN_HEAVY 13
#define WEATHER_BUBBLES 14
#define WEATHER_ROUTE119_CYCLE 20
#define WEATHER_ROUTE123_CYCLE 21
// These are used in maps' coord_weather_event entries.
// They are not a one-to-one mapping with the engine's
// internal weather constants above.
#define COORD_EVENT_WEATHER_CLOUDS 1
#define COORD_EVENT_WEATHER_SUNNY 2
#define COORD_EVENT_WEATHER_RAIN_LIGHT 3
#define COORD_EVENT_WEATHER_SNOW 4
#define COORD_EVENT_WEATHER_RAIN_MED 5
#define COORD_EVENT_WEATHER_FOG_1 6
#define COORD_EVENT_WEATHER_FOG_2 7
#define COORD_EVENT_WEATHER_ASH 8
#define COORD_EVENT_WEATHER_SANDSTORM 9
#define COORD_EVENT_WEATHER_SHADE 10
#define COORD_EVENT_WEATHER_DROUGHT 11
#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20
#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21
#endif // GUARD_CONSTANTS_WEATHER_H

View File

@@ -12,14 +12,20 @@ struct ContestStruct_02039E00
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
extern u8 gUnknown_02039F24;
extern u16 gScriptContestCategory;
extern u8 gUnknown_02039F2E;
extern u16 gSpecialVar_ContestCategory;
extern u8 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F30;
struct ContestStruct_field_18
{
// unknown size
u16 field_0;
u16 field_2;
u16 field_4;
u16 field_6;
u32 field_8;
u32 field_C;
u32 field_10;
};
struct ContestResources

View File

@@ -0,0 +1,6 @@
#ifndef GUARD_COORD_EVENT_WEATHER_H
#define GUARD_COORD_EVENT_WEATHER_H
void DoCoordEventWeather(u8);
#endif // GUARD_COORD_EVENT_WEATHER_H

View File

@@ -1,6 +1,6 @@
#ifndef GUARD_DATA_BARD_MUSIC_POKEMON_H
#define GUARD_DATA_BARD_MUSIC_POKEMON_H
#include "species.h"
#include "constants/species.h"
const u16 gUnknown_085F5490 = NUM_SPECIES;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,143 @@
#ifndef POKEEMERALD_CRY_IDS_H
#define POKEEMERALD_CRY_IDS_H
const u16 gSpeciesIdToCryId[] =
{
273, // TREECKO
274, // GROVYLE
275, // SCEPTILE
270, // TORCHIC
271, // COMBUSKEN
272, // BLAZIKEN
276, // MUDKIP
277, // MARSHTOMP
278, // SWAMPERT
359, // POOCHYENA
360, // MIGHTYENA
378, // ZIGZAGOON
375, // LINOONE
290, // WURMPLE
291, // SILCOON
292, // BEAUTIFLY
293, // CASCOON
294, // DUSTOX
283, // LOTAD
284, // LOMBRE
285, // LUDICOLO
286, // SEEDOT
287, // NUZLEAF
288, // SHIFTRY
301, // NINCADA
302, // NINJASK
303, // SHEDINJA
266, // TAILLOW
267, // SWELLOW
374, // SHROOMISH
373, // BRELOOM
269, // SPINDA
280, // WINGULL
279, // PELIPPER
310, // SURSKIT
311, // MASQUERAIN
377, // WAILMER
381, // WAILORD
312, // SKITTY
313, // DELCATTY
251, // KECLEON
329, // BALTOY
330, // CLAYDOL
306, // NOSEPASS
253, // TORKOAL
362, // SABLEYE
318, // BARBOACH
319, // WHISCASH
368, // LUVDISC
320, // CORPHISH
321, // CRAWDAUNT
333, // FEEBAS
334, // MILOTIC
289, // CARVANHA
260, // SHARPEDO
324, // TRAPINCH
325, // VIBRAVA
326, // FLYGON
304, // MAKUHITA
305, // HARIYAMA
254, // ELECTRIKE
255, // MANECTRIC
316, // NUMEL
317, // CAMERUPT
338, // SPHEAL
339, // SEALEO
340, // WALREIN
327, // CACNEA
328, // CACTURNE
383, // SNORUNT
307, // GLALIE
331, // LUNATONE
332, // SOLROCK
262, // AZURILL
322, // SPOINK
323, // GRUMPIG
308, // PLUSLE
309, // MINUN
363, // MAWILE
336, // MEDITITE
337, // MEDICHAM
263, // SWABLU
264, // ALTARIA
258, // WYNAUT
256, // DUSKULL
361, // DUSCLOPS
252, // ROSELIA
298, // SLAKOTH
299, // VIGOROTH
300, // SLAKING
314, // GULPIN
315, // SWALOT
376, // TROPIUS
382, // WHISMUR
380, // LOUDRED
379, // EXPLOUD
341, // CLAMPERL
342, // HUNTAIL
343, // GOREBYSS
335, // ABSOL
282, // SHUPPET
281, // BANETTE
259, // SEVIPER
261, // ZANGOOSE
367, // RELICANTH
364, // ARON
365, // LAIRON
366, // AGGRON
356, // CASTFORM
357, // VOLBEAT
358, // ILLUMISE
344, // LILEEP
345, // CRADILY
346, // ANORITH
347, // ARMALDO
295, // RALTS
296, // KIRLIA
297, // GARDEVOIR
351, // BAGON
352, // SHELGON
372, // SALAMENCE
348, // BELDUM
349, // METANG
350, // METAGROSS
353, // REGIROCK
354, // REGICE
355, // REGISTEEL
370, // KYOGRE
369, // GROUDON
371, // RAYQUAZA
257, // LATIAS
384, // LATIOS
385, // JIRACHI
386, // DEOXYS
387 // CHIMECHO
};
#endif //POKEEMERALD_CRY_IDS_H

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,192 @@
#ifndef POKEEMERALD_EVOLUTION_H
#define POKEEMERALD_EVOLUTION_H
const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
{
[SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}},
[SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}},
[SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}},
[SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}},
[SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}},
[SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}},
[SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}},
[SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}},
[SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}},
[SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}},
[SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}},
[SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}},
[SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}},
[SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}},
[SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}},
[SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}},
[SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}},
[SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}},
[SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}},
[SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}},
[SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}},
[SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}},
[SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}},
[SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}},
[SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}},
[SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}},
[SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}},
[SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME},
{EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}},
[SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}},
[SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}},
[SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}},
[SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}},
[SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}},
[SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}},
[SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}},
[SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}},
[SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
[SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}},
[SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}},
[SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}},
[SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}},
[SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}},
[SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}},
[SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}},
[SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}},
[SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}},
[SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}},
[SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO},
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
[SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}},
[SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}},
[SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}},
[SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}},
[SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}},
[SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}},
[SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}},
[SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
[SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}},
[SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}},
[SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}},
[SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}},
[SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}},
[SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}},
[SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}},
[SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}},
[SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}},
[SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
[SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}},
[SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}},
[SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}},
[SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}},
[SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
{EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON},
{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON},
{EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON},
{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}},
[SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}},
[SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}},
[SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}},
[SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}},
[SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}},
[SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}},
[SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}},
[SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}},
[SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}},
[SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}},
[SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}},
[SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}},
[SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}},
[SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}},
[SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}},
[SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}},
[SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}},
[SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}},
[SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}},
[SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}},
[SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}},
[SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}},
[SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}},
[SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}},
[SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}},
[SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}},
[SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}},
[SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}},
[SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}},
[SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}},
[SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}},
[SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}},
[SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}},
[SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}},
[SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}},
[SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}},
[SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
{EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
{EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}},
[SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}},
[SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}},
[SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}},
[SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}},
[SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}},
[SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}},
[SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}},
[SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}},
[SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}},
[SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}},
[SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}},
[SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}},
[SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}},
[SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON},
{EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}},
[SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}},
[SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}},
[SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}},
[SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}},
[SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}},
[SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}},
[SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK},
{EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}},
[SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}},
[SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}},
[SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}},
[SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}},
[SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}},
[SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}},
[SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}},
[SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}},
[SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}},
[SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}},
[SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}},
[SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}},
[SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}},
[SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}},
[SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}},
[SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}},
[SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}},
[SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}},
[SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}},
[SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}},
[SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}},
[SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}},
[SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}},
[SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}},
[SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}},
[SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}},
[SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}},
[SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}},
[SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}},
[SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}},
[SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}},
[SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
[SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}},
[SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}},
[SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}},
[SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}},
[SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}},
[SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}},
[SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}},
[SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}},
[SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}},
[SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}},
[SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
};
#endif //POKEEMERALD_EVOLUTION_H

View File

@@ -0,0 +1,849 @@
#ifndef POKEEMERALD_EXPERIENCE_TABLES_H
#define POKEEMERALD_EXPERIENCE_TABLES_H
#define SQUARE(n)(n * n)
#define CUBE(n)(n * n * n)
#define EXP_SLOW(n)((5 * CUBE(n)) / 4) // (5 * (n)^3) / 4
#define EXP_FAST(n)((4 * CUBE(n)) / 5) // (4 * (n)^3) / 5
#define EXP_MEDIUM_FAST(n)(CUBE(n)) // (n)^3
#define EXP_MEDIUM_SLOW(n)((6 * CUBE(n)) / 5 - (15 * SQUARE(n)) + (100 * n) - 140) // (6 * (n)^3) / 5 - (15 * (n)^2) + (100 * n) - 140
#define EXP_ERRATIC(n) \
(n <= 50) ? ((100 - n) * CUBE(n) / 50) \
:(n <= 68) ? ((150 - n) * CUBE(n) / 100) \
:(n <= 98) ? (((1911 - 10 * n) / 3) * CUBE(n) / 500) \
: ((160 - n) * CUBE(n) / 100)
#define EXP_FLUCTUATING(n) \
(n <= 15) ? (((n + 1) / 3 + 24) * CUBE(n) / 50) \
:(n <= 36) ? ((n + 14) * CUBE(n) / 50) \
: (((n / 2) + 32) * CUBE(n) / 50)
const u32 gExperienceTables[][MAX_MON_LEVEL + 1] =
{
{ // Medium Fast
0, // 0
1, // 1
EXP_MEDIUM_FAST(2),
EXP_MEDIUM_FAST(3),
EXP_MEDIUM_FAST(4),
EXP_MEDIUM_FAST(5),
EXP_MEDIUM_FAST(6),
EXP_MEDIUM_FAST(7),
EXP_MEDIUM_FAST(8),
EXP_MEDIUM_FAST(9),
EXP_MEDIUM_FAST(10),
EXP_MEDIUM_FAST(11),
EXP_MEDIUM_FAST(12),
EXP_MEDIUM_FAST(13),
EXP_MEDIUM_FAST(14),
EXP_MEDIUM_FAST(15),
EXP_MEDIUM_FAST(16),
EXP_MEDIUM_FAST(17),
EXP_MEDIUM_FAST(18),
EXP_MEDIUM_FAST(19),
EXP_MEDIUM_FAST(20),
EXP_MEDIUM_FAST(21),
EXP_MEDIUM_FAST(22),
EXP_MEDIUM_FAST(23),
EXP_MEDIUM_FAST(24),
EXP_MEDIUM_FAST(25),
EXP_MEDIUM_FAST(26),
EXP_MEDIUM_FAST(27),
EXP_MEDIUM_FAST(28),
EXP_MEDIUM_FAST(29),
EXP_MEDIUM_FAST(30),
EXP_MEDIUM_FAST(31),
EXP_MEDIUM_FAST(32),
EXP_MEDIUM_FAST(33),
EXP_MEDIUM_FAST(34),
EXP_MEDIUM_FAST(35),
EXP_MEDIUM_FAST(36),
EXP_MEDIUM_FAST(37),
EXP_MEDIUM_FAST(38),
EXP_MEDIUM_FAST(39),
EXP_MEDIUM_FAST(40),
EXP_MEDIUM_FAST(41),
EXP_MEDIUM_FAST(42),
EXP_MEDIUM_FAST(43),
EXP_MEDIUM_FAST(44),
EXP_MEDIUM_FAST(45),
EXP_MEDIUM_FAST(46),
EXP_MEDIUM_FAST(47),
EXP_MEDIUM_FAST(48),
EXP_MEDIUM_FAST(49),
EXP_MEDIUM_FAST(50),
EXP_MEDIUM_FAST(51),
EXP_MEDIUM_FAST(52),
EXP_MEDIUM_FAST(53),
EXP_MEDIUM_FAST(54),
EXP_MEDIUM_FAST(55),
EXP_MEDIUM_FAST(56),
EXP_MEDIUM_FAST(57),
EXP_MEDIUM_FAST(58),
EXP_MEDIUM_FAST(59),
EXP_MEDIUM_FAST(60),
EXP_MEDIUM_FAST(61),
EXP_MEDIUM_FAST(62),
EXP_MEDIUM_FAST(63),
EXP_MEDIUM_FAST(64),
EXP_MEDIUM_FAST(65),
EXP_MEDIUM_FAST(66),
EXP_MEDIUM_FAST(67),
EXP_MEDIUM_FAST(68),
EXP_MEDIUM_FAST(69),
EXP_MEDIUM_FAST(70),
EXP_MEDIUM_FAST(71),
EXP_MEDIUM_FAST(72),
EXP_MEDIUM_FAST(73),
EXP_MEDIUM_FAST(74),
EXP_MEDIUM_FAST(75),
EXP_MEDIUM_FAST(76),
EXP_MEDIUM_FAST(77),
EXP_MEDIUM_FAST(78),
EXP_MEDIUM_FAST(79),
EXP_MEDIUM_FAST(80),
EXP_MEDIUM_FAST(81),
EXP_MEDIUM_FAST(82),
EXP_MEDIUM_FAST(83),
EXP_MEDIUM_FAST(84),
EXP_MEDIUM_FAST(85),
EXP_MEDIUM_FAST(86),
EXP_MEDIUM_FAST(87),
EXP_MEDIUM_FAST(88),
EXP_MEDIUM_FAST(89),
EXP_MEDIUM_FAST(90),
EXP_MEDIUM_FAST(91),
EXP_MEDIUM_FAST(92),
EXP_MEDIUM_FAST(93),
EXP_MEDIUM_FAST(94),
EXP_MEDIUM_FAST(95),
EXP_MEDIUM_FAST(96),
EXP_MEDIUM_FAST(97),
EXP_MEDIUM_FAST(98),
EXP_MEDIUM_FAST(99),
EXP_MEDIUM_FAST(100),
},
{ // Erratic
0, // 0
1, // 1
EXP_ERRATIC(2),
EXP_ERRATIC(3),
EXP_ERRATIC(4),
EXP_ERRATIC(5),
EXP_ERRATIC(6),
EXP_ERRATIC(7),
EXP_ERRATIC(8),
EXP_ERRATIC(9),
EXP_ERRATIC(10),
EXP_ERRATIC(11),
EXP_ERRATIC(12),
EXP_ERRATIC(13),
EXP_ERRATIC(14),
EXP_ERRATIC(15),
EXP_ERRATIC(16),
EXP_ERRATIC(17),
EXP_ERRATIC(18),
EXP_ERRATIC(19),
EXP_ERRATIC(20),
EXP_ERRATIC(21),
EXP_ERRATIC(22),
EXP_ERRATIC(23),
EXP_ERRATIC(24),
EXP_ERRATIC(25),
EXP_ERRATIC(26),
EXP_ERRATIC(27),
EXP_ERRATIC(28),
EXP_ERRATIC(29),
EXP_ERRATIC(30),
EXP_ERRATIC(31),
EXP_ERRATIC(32),
EXP_ERRATIC(33),
EXP_ERRATIC(34),
EXP_ERRATIC(35),
EXP_ERRATIC(36),
EXP_ERRATIC(37),
EXP_ERRATIC(38),
EXP_ERRATIC(39),
EXP_ERRATIC(40),
EXP_ERRATIC(41),
EXP_ERRATIC(42),
EXP_ERRATIC(43),
EXP_ERRATIC(44),
EXP_ERRATIC(45),
EXP_ERRATIC(46),
EXP_ERRATIC(47),
EXP_ERRATIC(48),
EXP_ERRATIC(49),
EXP_ERRATIC(50),
EXP_ERRATIC(51),
EXP_ERRATIC(52),
EXP_ERRATIC(53),
EXP_ERRATIC(54),
EXP_ERRATIC(55),
EXP_ERRATIC(56),
EXP_ERRATIC(57),
EXP_ERRATIC(58),
EXP_ERRATIC(59),
EXP_ERRATIC(60),
EXP_ERRATIC(61),
EXP_ERRATIC(62),
EXP_ERRATIC(63),
EXP_ERRATIC(64),
EXP_ERRATIC(65),
EXP_ERRATIC(66),
EXP_ERRATIC(67),
EXP_ERRATIC(68),
EXP_ERRATIC(69),
EXP_ERRATIC(70),
EXP_ERRATIC(71),
EXP_ERRATIC(72),
EXP_ERRATIC(73),
EXP_ERRATIC(74),
EXP_ERRATIC(75),
EXP_ERRATIC(76),
EXP_ERRATIC(77),
EXP_ERRATIC(78),
EXP_ERRATIC(79),
EXP_ERRATIC(80),
EXP_ERRATIC(81),
EXP_ERRATIC(82),
EXP_ERRATIC(83),
EXP_ERRATIC(84),
EXP_ERRATIC(85),
EXP_ERRATIC(86),
EXP_ERRATIC(87),
EXP_ERRATIC(88),
EXP_ERRATIC(89),
EXP_ERRATIC(90),
EXP_ERRATIC(91),
EXP_ERRATIC(92),
EXP_ERRATIC(93),
EXP_ERRATIC(94),
EXP_ERRATIC(95),
EXP_ERRATIC(96),
EXP_ERRATIC(97),
EXP_ERRATIC(98),
EXP_ERRATIC(99),
EXP_ERRATIC(100),
},
{ // Fluctuating
0, // 0
1, // 1
EXP_FLUCTUATING(2),
EXP_FLUCTUATING(3),
EXP_FLUCTUATING(4),
EXP_FLUCTUATING(5),
EXP_FLUCTUATING(6),
EXP_FLUCTUATING(7),
EXP_FLUCTUATING(8),
EXP_FLUCTUATING(9),
EXP_FLUCTUATING(10),
EXP_FLUCTUATING(11),
EXP_FLUCTUATING(12),
EXP_FLUCTUATING(13),
EXP_FLUCTUATING(14),
EXP_FLUCTUATING(15),
EXP_FLUCTUATING(16),
EXP_FLUCTUATING(17),
EXP_FLUCTUATING(18),
EXP_FLUCTUATING(19),
EXP_FLUCTUATING(20),
EXP_FLUCTUATING(21),
EXP_FLUCTUATING(22),
EXP_FLUCTUATING(23),
EXP_FLUCTUATING(24),
EXP_FLUCTUATING(25),
EXP_FLUCTUATING(26),
EXP_FLUCTUATING(27),
EXP_FLUCTUATING(28),
EXP_FLUCTUATING(29),
EXP_FLUCTUATING(30),
EXP_FLUCTUATING(31),
EXP_FLUCTUATING(32),
EXP_FLUCTUATING(33),
EXP_FLUCTUATING(34),
EXP_FLUCTUATING(35),
EXP_FLUCTUATING(36),
EXP_FLUCTUATING(37),
EXP_FLUCTUATING(38),
EXP_FLUCTUATING(39),
EXP_FLUCTUATING(40),
EXP_FLUCTUATING(41),
EXP_FLUCTUATING(42),
EXP_FLUCTUATING(43),
EXP_FLUCTUATING(44),
EXP_FLUCTUATING(45),
EXP_FLUCTUATING(46),
EXP_FLUCTUATING(47),
EXP_FLUCTUATING(48),
EXP_FLUCTUATING(49),
EXP_FLUCTUATING(50),
EXP_FLUCTUATING(51),
EXP_FLUCTUATING(52),
EXP_FLUCTUATING(53),
EXP_FLUCTUATING(54),
EXP_FLUCTUATING(55),
EXP_FLUCTUATING(56),
EXP_FLUCTUATING(57),
EXP_FLUCTUATING(58),
EXP_FLUCTUATING(59),
EXP_FLUCTUATING(60),
EXP_FLUCTUATING(61),
EXP_FLUCTUATING(62),
EXP_FLUCTUATING(63),
EXP_FLUCTUATING(64),
EXP_FLUCTUATING(65),
EXP_FLUCTUATING(66),
EXP_FLUCTUATING(67),
EXP_FLUCTUATING(68),
EXP_FLUCTUATING(69),
EXP_FLUCTUATING(70),
EXP_FLUCTUATING(71),
EXP_FLUCTUATING(72),
EXP_FLUCTUATING(73),
EXP_FLUCTUATING(74),
EXP_FLUCTUATING(75),
EXP_FLUCTUATING(76),
EXP_FLUCTUATING(77),
EXP_FLUCTUATING(78),
EXP_FLUCTUATING(79),
EXP_FLUCTUATING(80),
EXP_FLUCTUATING(81),
EXP_FLUCTUATING(82),
EXP_FLUCTUATING(83),
EXP_FLUCTUATING(84),
EXP_FLUCTUATING(85),
EXP_FLUCTUATING(86),
EXP_FLUCTUATING(87),
EXP_FLUCTUATING(88),
EXP_FLUCTUATING(89),
EXP_FLUCTUATING(90),
EXP_FLUCTUATING(91),
EXP_FLUCTUATING(92),
EXP_FLUCTUATING(93),
EXP_FLUCTUATING(94),
EXP_FLUCTUATING(95),
EXP_FLUCTUATING(96),
EXP_FLUCTUATING(97),
EXP_FLUCTUATING(98),
EXP_FLUCTUATING(99),
EXP_FLUCTUATING(100),
},
{ // Medium Slow
0, // 0
1, // 1
EXP_MEDIUM_SLOW(2),
EXP_MEDIUM_SLOW(3),
EXP_MEDIUM_SLOW(4),
EXP_MEDIUM_SLOW(5),
EXP_MEDIUM_SLOW(6),
EXP_MEDIUM_SLOW(7),
EXP_MEDIUM_SLOW(8),
EXP_MEDIUM_SLOW(9),
EXP_MEDIUM_SLOW(10),
EXP_MEDIUM_SLOW(11),
EXP_MEDIUM_SLOW(12),
EXP_MEDIUM_SLOW(13),
EXP_MEDIUM_SLOW(14),
EXP_MEDIUM_SLOW(15),
EXP_MEDIUM_SLOW(16),
EXP_MEDIUM_SLOW(17),
EXP_MEDIUM_SLOW(18),
EXP_MEDIUM_SLOW(19),
EXP_MEDIUM_SLOW(20),
EXP_MEDIUM_SLOW(21),
EXP_MEDIUM_SLOW(22),
EXP_MEDIUM_SLOW(23),
EXP_MEDIUM_SLOW(24),
EXP_MEDIUM_SLOW(25),
EXP_MEDIUM_SLOW(26),
EXP_MEDIUM_SLOW(27),
EXP_MEDIUM_SLOW(28),
EXP_MEDIUM_SLOW(29),
EXP_MEDIUM_SLOW(30),
EXP_MEDIUM_SLOW(31),
EXP_MEDIUM_SLOW(32),
EXP_MEDIUM_SLOW(33),
EXP_MEDIUM_SLOW(34),
EXP_MEDIUM_SLOW(35),
EXP_MEDIUM_SLOW(36),
EXP_MEDIUM_SLOW(37),
EXP_MEDIUM_SLOW(38),
EXP_MEDIUM_SLOW(39),
EXP_MEDIUM_SLOW(40),
EXP_MEDIUM_SLOW(41),
EXP_MEDIUM_SLOW(42),
EXP_MEDIUM_SLOW(43),
EXP_MEDIUM_SLOW(44),
EXP_MEDIUM_SLOW(45),
EXP_MEDIUM_SLOW(46),
EXP_MEDIUM_SLOW(47),
EXP_MEDIUM_SLOW(48),
EXP_MEDIUM_SLOW(49),
EXP_MEDIUM_SLOW(50),
EXP_MEDIUM_SLOW(51),
EXP_MEDIUM_SLOW(52),
EXP_MEDIUM_SLOW(53),
EXP_MEDIUM_SLOW(54),
EXP_MEDIUM_SLOW(55),
EXP_MEDIUM_SLOW(56),
EXP_MEDIUM_SLOW(57),
EXP_MEDIUM_SLOW(58),
EXP_MEDIUM_SLOW(59),
EXP_MEDIUM_SLOW(60),
EXP_MEDIUM_SLOW(61),
EXP_MEDIUM_SLOW(62),
EXP_MEDIUM_SLOW(63),
EXP_MEDIUM_SLOW(64),
EXP_MEDIUM_SLOW(65),
EXP_MEDIUM_SLOW(66),
EXP_MEDIUM_SLOW(67),
EXP_MEDIUM_SLOW(68),
EXP_MEDIUM_SLOW(69),
EXP_MEDIUM_SLOW(70),
EXP_MEDIUM_SLOW(71),
EXP_MEDIUM_SLOW(72),
EXP_MEDIUM_SLOW(73),
EXP_MEDIUM_SLOW(74),
EXP_MEDIUM_SLOW(75),
EXP_MEDIUM_SLOW(76),
EXP_MEDIUM_SLOW(77),
EXP_MEDIUM_SLOW(78),
EXP_MEDIUM_SLOW(79),
EXP_MEDIUM_SLOW(80),
EXP_MEDIUM_SLOW(81),
EXP_MEDIUM_SLOW(82),
EXP_MEDIUM_SLOW(83),
EXP_MEDIUM_SLOW(84),
EXP_MEDIUM_SLOW(85),
EXP_MEDIUM_SLOW(86),
EXP_MEDIUM_SLOW(87),
EXP_MEDIUM_SLOW(88),
EXP_MEDIUM_SLOW(89),
EXP_MEDIUM_SLOW(90),
EXP_MEDIUM_SLOW(91),
EXP_MEDIUM_SLOW(92),
EXP_MEDIUM_SLOW(93),
EXP_MEDIUM_SLOW(94),
EXP_MEDIUM_SLOW(95),
EXP_MEDIUM_SLOW(96),
EXP_MEDIUM_SLOW(97),
EXP_MEDIUM_SLOW(98),
EXP_MEDIUM_SLOW(99),
EXP_MEDIUM_SLOW(100),
},
{ // Fast
0, // 0
1, // 1
EXP_FAST(2),
EXP_FAST(3),
EXP_FAST(4),
EXP_FAST(5),
EXP_FAST(6),
EXP_FAST(7),
EXP_FAST(8),
EXP_FAST(9),
EXP_FAST(10),
EXP_FAST(11),
EXP_FAST(12),
EXP_FAST(13),
EXP_FAST(14),
EXP_FAST(15),
EXP_FAST(16),
EXP_FAST(17),
EXP_FAST(18),
EXP_FAST(19),
EXP_FAST(20),
EXP_FAST(21),
EXP_FAST(22),
EXP_FAST(23),
EXP_FAST(24),
EXP_FAST(25),
EXP_FAST(26),
EXP_FAST(27),
EXP_FAST(28),
EXP_FAST(29),
EXP_FAST(30),
EXP_FAST(31),
EXP_FAST(32),
EXP_FAST(33),
EXP_FAST(34),
EXP_FAST(35),
EXP_FAST(36),
EXP_FAST(37),
EXP_FAST(38),
EXP_FAST(39),
EXP_FAST(40),
EXP_FAST(41),
EXP_FAST(42),
EXP_FAST(43),
EXP_FAST(44),
EXP_FAST(45),
EXP_FAST(46),
EXP_FAST(47),
EXP_FAST(48),
EXP_FAST(49),
EXP_FAST(50),
EXP_FAST(51),
EXP_FAST(52),
EXP_FAST(53),
EXP_FAST(54),
EXP_FAST(55),
EXP_FAST(56),
EXP_FAST(57),
EXP_FAST(58),
EXP_FAST(59),
EXP_FAST(60),
EXP_FAST(61),
EXP_FAST(62),
EXP_FAST(63),
EXP_FAST(64),
EXP_FAST(65),
EXP_FAST(66),
EXP_FAST(67),
EXP_FAST(68),
EXP_FAST(69),
EXP_FAST(70),
EXP_FAST(71),
EXP_FAST(72),
EXP_FAST(73),
EXP_FAST(74),
EXP_FAST(75),
EXP_FAST(76),
EXP_FAST(77),
EXP_FAST(78),
EXP_FAST(79),
EXP_FAST(80),
EXP_FAST(81),
EXP_FAST(82),
EXP_FAST(83),
EXP_FAST(84),
EXP_FAST(85),
EXP_FAST(86),
EXP_FAST(87),
EXP_FAST(88),
EXP_FAST(89),
EXP_FAST(90),
EXP_FAST(91),
EXP_FAST(92),
EXP_FAST(93),
EXP_FAST(94),
EXP_FAST(95),
EXP_FAST(96),
EXP_FAST(97),
EXP_FAST(98),
EXP_FAST(99),
EXP_FAST(100),
},
{ // Slow
0, // 0
1, // 1
EXP_SLOW(2),
EXP_SLOW(3),
EXP_SLOW(4),
EXP_SLOW(5),
EXP_SLOW(6),
EXP_SLOW(7),
EXP_SLOW(8),
EXP_SLOW(9),
EXP_SLOW(10),
EXP_SLOW(11),
EXP_SLOW(12),
EXP_SLOW(13),
EXP_SLOW(14),
EXP_SLOW(15),
EXP_SLOW(16),
EXP_SLOW(17),
EXP_SLOW(18),
EXP_SLOW(19),
EXP_SLOW(20),
EXP_SLOW(21),
EXP_SLOW(22),
EXP_SLOW(23),
EXP_SLOW(24),
EXP_SLOW(25),
EXP_SLOW(26),
EXP_SLOW(27),
EXP_SLOW(28),
EXP_SLOW(29),
EXP_SLOW(30),
EXP_SLOW(31),
EXP_SLOW(32),
EXP_SLOW(33),
EXP_SLOW(34),
EXP_SLOW(35),
EXP_SLOW(36),
EXP_SLOW(37),
EXP_SLOW(38),
EXP_SLOW(39),
EXP_SLOW(40),
EXP_SLOW(41),
EXP_SLOW(42),
EXP_SLOW(43),
EXP_SLOW(44),
EXP_SLOW(45),
EXP_SLOW(46),
EXP_SLOW(47),
EXP_SLOW(48),
EXP_SLOW(49),
EXP_SLOW(50),
EXP_SLOW(51),
EXP_SLOW(52),
EXP_SLOW(53),
EXP_SLOW(54),
EXP_SLOW(55),
EXP_SLOW(56),
EXP_SLOW(57),
EXP_SLOW(58),
EXP_SLOW(59),
EXP_SLOW(60),
EXP_SLOW(61),
EXP_SLOW(62),
EXP_SLOW(63),
EXP_SLOW(64),
EXP_SLOW(65),
EXP_SLOW(66),
EXP_SLOW(67),
EXP_SLOW(68),
EXP_SLOW(69),
EXP_SLOW(70),
EXP_SLOW(71),
EXP_SLOW(72),
EXP_SLOW(73),
EXP_SLOW(74),
EXP_SLOW(75),
EXP_SLOW(76),
EXP_SLOW(77),
EXP_SLOW(78),
EXP_SLOW(79),
EXP_SLOW(80),
EXP_SLOW(81),
EXP_SLOW(82),
EXP_SLOW(83),
EXP_SLOW(84),
EXP_SLOW(85),
EXP_SLOW(86),
EXP_SLOW(87),
EXP_SLOW(88),
EXP_SLOW(89),
EXP_SLOW(90),
EXP_SLOW(91),
EXP_SLOW(92),
EXP_SLOW(93),
EXP_SLOW(94),
EXP_SLOW(95),
EXP_SLOW(96),
EXP_SLOW(97),
EXP_SLOW(98),
EXP_SLOW(99),
EXP_SLOW(100),
},
{ // Medium Fast copy 2 (unused? to-do: investigate)
0, // 0
1, // 1
EXP_MEDIUM_FAST(2),
EXP_MEDIUM_FAST(3),
EXP_MEDIUM_FAST(4),
EXP_MEDIUM_FAST(5),
EXP_MEDIUM_FAST(6),
EXP_MEDIUM_FAST(7),
EXP_MEDIUM_FAST(8),
EXP_MEDIUM_FAST(9),
EXP_MEDIUM_FAST(10),
EXP_MEDIUM_FAST(11),
EXP_MEDIUM_FAST(12),
EXP_MEDIUM_FAST(13),
EXP_MEDIUM_FAST(14),
EXP_MEDIUM_FAST(15),
EXP_MEDIUM_FAST(16),
EXP_MEDIUM_FAST(17),
EXP_MEDIUM_FAST(18),
EXP_MEDIUM_FAST(19),
EXP_MEDIUM_FAST(20),
EXP_MEDIUM_FAST(21),
EXP_MEDIUM_FAST(22),
EXP_MEDIUM_FAST(23),
EXP_MEDIUM_FAST(24),
EXP_MEDIUM_FAST(25),
EXP_MEDIUM_FAST(26),
EXP_MEDIUM_FAST(27),
EXP_MEDIUM_FAST(28),
EXP_MEDIUM_FAST(29),
EXP_MEDIUM_FAST(30),
EXP_MEDIUM_FAST(31),
EXP_MEDIUM_FAST(32),
EXP_MEDIUM_FAST(33),
EXP_MEDIUM_FAST(34),
EXP_MEDIUM_FAST(35),
EXP_MEDIUM_FAST(36),
EXP_MEDIUM_FAST(37),
EXP_MEDIUM_FAST(38),
EXP_MEDIUM_FAST(39),
EXP_MEDIUM_FAST(40),
EXP_MEDIUM_FAST(41),
EXP_MEDIUM_FAST(42),
EXP_MEDIUM_FAST(43),
EXP_MEDIUM_FAST(44),
EXP_MEDIUM_FAST(45),
EXP_MEDIUM_FAST(46),
EXP_MEDIUM_FAST(47),
EXP_MEDIUM_FAST(48),
EXP_MEDIUM_FAST(49),
EXP_MEDIUM_FAST(50),
EXP_MEDIUM_FAST(51),
EXP_MEDIUM_FAST(52),
EXP_MEDIUM_FAST(53),
EXP_MEDIUM_FAST(54),
EXP_MEDIUM_FAST(55),
EXP_MEDIUM_FAST(56),
EXP_MEDIUM_FAST(57),
EXP_MEDIUM_FAST(58),
EXP_MEDIUM_FAST(59),
EXP_MEDIUM_FAST(60),
EXP_MEDIUM_FAST(61),
EXP_MEDIUM_FAST(62),
EXP_MEDIUM_FAST(63),
EXP_MEDIUM_FAST(64),
EXP_MEDIUM_FAST(65),
EXP_MEDIUM_FAST(66),
EXP_MEDIUM_FAST(67),
EXP_MEDIUM_FAST(68),
EXP_MEDIUM_FAST(69),
EXP_MEDIUM_FAST(70),
EXP_MEDIUM_FAST(71),
EXP_MEDIUM_FAST(72),
EXP_MEDIUM_FAST(73),
EXP_MEDIUM_FAST(74),
EXP_MEDIUM_FAST(75),
EXP_MEDIUM_FAST(76),
EXP_MEDIUM_FAST(77),
EXP_MEDIUM_FAST(78),
EXP_MEDIUM_FAST(79),
EXP_MEDIUM_FAST(80),
EXP_MEDIUM_FAST(81),
EXP_MEDIUM_FAST(82),
EXP_MEDIUM_FAST(83),
EXP_MEDIUM_FAST(84),
EXP_MEDIUM_FAST(85),
EXP_MEDIUM_FAST(86),
EXP_MEDIUM_FAST(87),
EXP_MEDIUM_FAST(88),
EXP_MEDIUM_FAST(89),
EXP_MEDIUM_FAST(90),
EXP_MEDIUM_FAST(91),
EXP_MEDIUM_FAST(92),
EXP_MEDIUM_FAST(93),
EXP_MEDIUM_FAST(94),
EXP_MEDIUM_FAST(95),
EXP_MEDIUM_FAST(96),
EXP_MEDIUM_FAST(97),
EXP_MEDIUM_FAST(98),
EXP_MEDIUM_FAST(99),
EXP_MEDIUM_FAST(100),
},
{ // Medium Fast copy 3 (unused? to-do: investigate)
0, // 0
1, // 1
EXP_MEDIUM_FAST(2),
EXP_MEDIUM_FAST(3),
EXP_MEDIUM_FAST(4),
EXP_MEDIUM_FAST(5),
EXP_MEDIUM_FAST(6),
EXP_MEDIUM_FAST(7),
EXP_MEDIUM_FAST(8),
EXP_MEDIUM_FAST(9),
EXP_MEDIUM_FAST(10),
EXP_MEDIUM_FAST(11),
EXP_MEDIUM_FAST(12),
EXP_MEDIUM_FAST(13),
EXP_MEDIUM_FAST(14),
EXP_MEDIUM_FAST(15),
EXP_MEDIUM_FAST(16),
EXP_MEDIUM_FAST(17),
EXP_MEDIUM_FAST(18),
EXP_MEDIUM_FAST(19),
EXP_MEDIUM_FAST(20),
EXP_MEDIUM_FAST(21),
EXP_MEDIUM_FAST(22),
EXP_MEDIUM_FAST(23),
EXP_MEDIUM_FAST(24),
EXP_MEDIUM_FAST(25),
EXP_MEDIUM_FAST(26),
EXP_MEDIUM_FAST(27),
EXP_MEDIUM_FAST(28),
EXP_MEDIUM_FAST(29),
EXP_MEDIUM_FAST(30),
EXP_MEDIUM_FAST(31),
EXP_MEDIUM_FAST(32),
EXP_MEDIUM_FAST(33),
EXP_MEDIUM_FAST(34),
EXP_MEDIUM_FAST(35),
EXP_MEDIUM_FAST(36),
EXP_MEDIUM_FAST(37),
EXP_MEDIUM_FAST(38),
EXP_MEDIUM_FAST(39),
EXP_MEDIUM_FAST(40),
EXP_MEDIUM_FAST(41),
EXP_MEDIUM_FAST(42),
EXP_MEDIUM_FAST(43),
EXP_MEDIUM_FAST(44),
EXP_MEDIUM_FAST(45),
EXP_MEDIUM_FAST(46),
EXP_MEDIUM_FAST(47),
EXP_MEDIUM_FAST(48),
EXP_MEDIUM_FAST(49),
EXP_MEDIUM_FAST(50),
EXP_MEDIUM_FAST(51),
EXP_MEDIUM_FAST(52),
EXP_MEDIUM_FAST(53),
EXP_MEDIUM_FAST(54),
EXP_MEDIUM_FAST(55),
EXP_MEDIUM_FAST(56),
EXP_MEDIUM_FAST(57),
EXP_MEDIUM_FAST(58),
EXP_MEDIUM_FAST(59),
EXP_MEDIUM_FAST(60),
EXP_MEDIUM_FAST(61),
EXP_MEDIUM_FAST(62),
EXP_MEDIUM_FAST(63),
EXP_MEDIUM_FAST(64),
EXP_MEDIUM_FAST(65),
EXP_MEDIUM_FAST(66),
EXP_MEDIUM_FAST(67),
EXP_MEDIUM_FAST(68),
EXP_MEDIUM_FAST(69),
EXP_MEDIUM_FAST(70),
EXP_MEDIUM_FAST(71),
EXP_MEDIUM_FAST(72),
EXP_MEDIUM_FAST(73),
EXP_MEDIUM_FAST(74),
EXP_MEDIUM_FAST(75),
EXP_MEDIUM_FAST(76),
EXP_MEDIUM_FAST(77),
EXP_MEDIUM_FAST(78),
EXP_MEDIUM_FAST(79),
EXP_MEDIUM_FAST(80),
EXP_MEDIUM_FAST(81),
EXP_MEDIUM_FAST(82),
EXP_MEDIUM_FAST(83),
EXP_MEDIUM_FAST(84),
EXP_MEDIUM_FAST(85),
EXP_MEDIUM_FAST(86),
EXP_MEDIUM_FAST(87),
EXP_MEDIUM_FAST(88),
EXP_MEDIUM_FAST(89),
EXP_MEDIUM_FAST(90),
EXP_MEDIUM_FAST(91),
EXP_MEDIUM_FAST(92),
EXP_MEDIUM_FAST(93),
EXP_MEDIUM_FAST(94),
EXP_MEDIUM_FAST(95),
EXP_MEDIUM_FAST(96),
EXP_MEDIUM_FAST(97),
EXP_MEDIUM_FAST(98),
EXP_MEDIUM_FAST(99),
EXP_MEDIUM_FAST(100),
}
};
#endif //POKEEMERALD_EXPERIENCE_TABLES_H

View File

@@ -0,0 +1,241 @@
#ifndef GUARD_ITEM_EFFECTS_H
#define GUARD_ITEM_EFFECTS_H
const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff};
const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff};
const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200};
const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe};
const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60};
const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80};
const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100};
const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6};
const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1};
const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6};
const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xff, 0xf1, 0xf1, 0xec};
const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f};
const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a};
const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f};
const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00};
const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02};
const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02};
const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02};
const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02};
const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01};
const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10};
const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30};
const u8 gItemEffect_PomegBerry[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xf6, 0x0a, 0x05, 0x02};
const u8 gItemEffect_KelpsyBerry[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xf6, 0x0a, 0x05, 0x02};
const u8 gItemEffect_QualotBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf6, 0x0a, 0x05, 0x02};
const u8 gItemEffect_HondrewBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xf6, 0x0a, 0x05, 0x02};
const u8 gItemEffect_GrepaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xf6, 0x0a, 0x05, 0x02};
const u8 gItemEffect_TamatoBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x0a, 0x05, 0x02};
const u8 *const gItemEffectTable[] =
{
gItemEffect_Potion,
gItemEffect_Antidote,
gItemEffect_BurnHeal,
gItemEffect_IceHeal,
gItemEffect_Awakening,
gItemEffect_ParalyzeHeal,
gItemEffect_FullRestore,
gItemEffect_MaxPotion,
gItemEffect_HyperPotion,
gItemEffect_SuperPotion,
gItemEffect_FullHeal,
gItemEffect_Revive,
gItemEffect_MaxRevive,
gItemEffect_FreshWater,
gItemEffect_SodaPop,
gItemEffect_Lemonade,
gItemEffect_MoomooMilk,
gItemEffect_EnergyPowder,
gItemEffect_EnergyRoot,
gItemEffect_HealPowder,
gItemEffect_RevivalHerb,
gItemEffect_Ether,
gItemEffect_MaxEther,
gItemEffect_Elixir,
gItemEffect_MaxElixir,
gItemEffect_LavaCookie,
gItemEffect_BlueFlute,
gItemEffect_YellowFlute,
gItemEffect_RedFlute,
NULL,
NULL,
gItemEffect_BerryJuice,
gItemEffect_SacredAsh,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
gItemEffect_HPUp,
gItemEffect_Protein,
gItemEffect_Iron,
gItemEffect_Carbos,
gItemEffect_Calcium,
gItemEffect_RareCandy,
gItemEffect_PPUp,
gItemEffect_Zinc,
gItemEffect_PPMax,
NULL,
gItemEffect_GuardSpec,
gItemEffect_DireHit,
gItemEffect_XAttack,
gItemEffect_XDefend,
gItemEffect_XSpeed,
gItemEffect_XAccuracy,
gItemEffect_XSpecial,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
gItemEffect_SunStone,
gItemEffect_MoonStone,
gItemEffect_FireStone,
gItemEffect_ThunderStone,
gItemEffect_WaterStone,
gItemEffect_LeafStone,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
gItemEffect_CheriBerry,
gItemEffect_ChestoBerry,
gItemEffect_PechaBerry,
gItemEffect_RawstBerry,
gItemEffect_AspearBerry,
gItemEffect_LeppaBerry,
gItemEffect_OranBerry,
gItemEffect_PersimBerry,
gItemEffect_LumBerry,
gItemEffect_SitrusBerry,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
gItemEffect_PomegBerry,
gItemEffect_KelpsyBerry,
gItemEffect_QualotBerry,
gItemEffect_HondrewBerry,
gItemEffect_GrepaBerry,
gItemEffect_TamatoBerry,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
};
#endif //GUARD_ITEM_EFFECTS_H

View File

@@ -0,0 +1,420 @@
#ifndef POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
#define POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
const u16 *const gLevelUpLearnsets[] =
{
gBulbasaurLevelUpLearnset,
gBulbasaurLevelUpLearnset,
gIvysaurLevelUpLearnset,
gVenusaurLevelUpLearnset,
gCharmanderLevelUpLearnset,
gCharmeleonLevelUpLearnset,
gCharizardLevelUpLearnset,
gSquirtleLevelUpLearnset,
gWartortleLevelUpLearnset,
gBlastoiseLevelUpLearnset,
gCaterpieLevelUpLearnset,
gMetapodLevelUpLearnset,
gButterfreeLevelUpLearnset,
gWeedleLevelUpLearnset,
gKakunaLevelUpLearnset,
gBeedrillLevelUpLearnset,
gPidgeyLevelUpLearnset,
gPidgeottoLevelUpLearnset,
gPidgeotLevelUpLearnset,
gRattataLevelUpLearnset,
gRaticateLevelUpLearnset,
gSpearowLevelUpLearnset,
gFearowLevelUpLearnset,
gEkansLevelUpLearnset,
gArbokLevelUpLearnset,
gPikachuLevelUpLearnset,
gRaichuLevelUpLearnset,
gSandshrewLevelUpLearnset,
gSandslashLevelUpLearnset,
gNidoranFLevelUpLearnset,
gNidorinaLevelUpLearnset,
gNidoqueenLevelUpLearnset,
gNidoranMLevelUpLearnset,
gNidorinoLevelUpLearnset,
gNidokingLevelUpLearnset,
gClefairyLevelUpLearnset,
gClefableLevelUpLearnset,
gVulpixLevelUpLearnset,
gNinetalesLevelUpLearnset,
gJigglypuffLevelUpLearnset,
gWigglytuffLevelUpLearnset,
gZubatLevelUpLearnset,
gGolbatLevelUpLearnset,
gOddishLevelUpLearnset,
gGloomLevelUpLearnset,
gVileplumeLevelUpLearnset,
gParasLevelUpLearnset,
gParasectLevelUpLearnset,
gVenonatLevelUpLearnset,
gVenomothLevelUpLearnset,
gDiglettLevelUpLearnset,
gDugtrioLevelUpLearnset,
gMeowthLevelUpLearnset,
gPersianLevelUpLearnset,
gPsyduckLevelUpLearnset,
gGolduckLevelUpLearnset,
gMankeyLevelUpLearnset,
gPrimeapeLevelUpLearnset,
gGrowlitheLevelUpLearnset,
gArcanineLevelUpLearnset,
gPoliwagLevelUpLearnset,
gPoliwhirlLevelUpLearnset,
gPoliwrathLevelUpLearnset,
gAbraLevelUpLearnset,
gKadabraLevelUpLearnset,
gAlakazamLevelUpLearnset,
gMachopLevelUpLearnset,
gMachokeLevelUpLearnset,
gMachampLevelUpLearnset,
gBellsproutLevelUpLearnset,
gWeepinbellLevelUpLearnset,
gVictreebelLevelUpLearnset,
gTentacoolLevelUpLearnset,
gTentacruelLevelUpLearnset,
gGeodudeLevelUpLearnset,
gGravelerLevelUpLearnset,
gGolemLevelUpLearnset,
gPonytaLevelUpLearnset,
gRapidashLevelUpLearnset,
gSlowpokeLevelUpLearnset,
gSlowbroLevelUpLearnset,
gMagnemiteLevelUpLearnset,
gMagnetonLevelUpLearnset,
gFarfetchdLevelUpLearnset,
gDoduoLevelUpLearnset,
gDodrioLevelUpLearnset,
gSeelLevelUpLearnset,
gDewgongLevelUpLearnset,
gGrimerLevelUpLearnset,
gMukLevelUpLearnset,
gShellderLevelUpLearnset,
gCloysterLevelUpLearnset,
gGastlyLevelUpLearnset,
gHaunterLevelUpLearnset,
gGengarLevelUpLearnset,
gOnixLevelUpLearnset,
gDrowzeeLevelUpLearnset,
gHypnoLevelUpLearnset,
gKrabbyLevelUpLearnset,
gKinglerLevelUpLearnset,
gVoltorbLevelUpLearnset,
gElectrodeLevelUpLearnset,
gExeggcuteLevelUpLearnset,
gExeggutorLevelUpLearnset,
gCuboneLevelUpLearnset,
gMarowakLevelUpLearnset,
gHitmonleeLevelUpLearnset,
gHitmonchanLevelUpLearnset,
gLickitungLevelUpLearnset,
gKoffingLevelUpLearnset,
gWeezingLevelUpLearnset,
gRhyhornLevelUpLearnset,
gRhydonLevelUpLearnset,
gChanseyLevelUpLearnset,
gTangelaLevelUpLearnset,
gKangaskhanLevelUpLearnset,
gHorseaLevelUpLearnset,
gSeadraLevelUpLearnset,
gGoldeenLevelUpLearnset,
gSeakingLevelUpLearnset,
gStaryuLevelUpLearnset,
gStarmieLevelUpLearnset,
gMrmimeLevelUpLearnset,
gScytherLevelUpLearnset,
gJynxLevelUpLearnset,
gElectabuzzLevelUpLearnset,
gMagmarLevelUpLearnset,
gPinsirLevelUpLearnset,
gTaurosLevelUpLearnset,
gMagikarpLevelUpLearnset,
gGyaradosLevelUpLearnset,
gLaprasLevelUpLearnset,
gDittoLevelUpLearnset,
gEeveeLevelUpLearnset,
gVaporeonLevelUpLearnset,
gJolteonLevelUpLearnset,
gFlareonLevelUpLearnset,
gPorygonLevelUpLearnset,
gOmanyteLevelUpLearnset,
gOmastarLevelUpLearnset,
gKabutoLevelUpLearnset,
gKabutopsLevelUpLearnset,
gAerodactylLevelUpLearnset,
gSnorlaxLevelUpLearnset,
gArticunoLevelUpLearnset,
gZapdosLevelUpLearnset,
gMoltresLevelUpLearnset,
gDratiniLevelUpLearnset,
gDragonairLevelUpLearnset,
gDragoniteLevelUpLearnset,
gMewtwoLevelUpLearnset,
gMewLevelUpLearnset,
gChikoritaLevelUpLearnset,
gBayleefLevelUpLearnset,
gMeganiumLevelUpLearnset,
gCyndaquilLevelUpLearnset,
gQuilavaLevelUpLearnset,
gTyphlosionLevelUpLearnset,
gTotodileLevelUpLearnset,
gCroconawLevelUpLearnset,
gFeraligatrLevelUpLearnset,
gSentretLevelUpLearnset,
gFurretLevelUpLearnset,
gHoothootLevelUpLearnset,
gNoctowlLevelUpLearnset,
gLedybaLevelUpLearnset,
gLedianLevelUpLearnset,
gSpinarakLevelUpLearnset,
gAriadosLevelUpLearnset,
gCrobatLevelUpLearnset,
gChinchouLevelUpLearnset,
gLanturnLevelUpLearnset,
gPichuLevelUpLearnset,
gCleffaLevelUpLearnset,
gIgglybuffLevelUpLearnset,
gTogepiLevelUpLearnset,
gTogeticLevelUpLearnset,
gNatuLevelUpLearnset,
gXatuLevelUpLearnset,
gMareepLevelUpLearnset,
gFlaaffyLevelUpLearnset,
gAmpharosLevelUpLearnset,
gBellossomLevelUpLearnset,
gMarillLevelUpLearnset,
gAzumarillLevelUpLearnset,
gSudowoodoLevelUpLearnset,
gPolitoedLevelUpLearnset,
gHoppipLevelUpLearnset,
gSkiploomLevelUpLearnset,
gJumpluffLevelUpLearnset,
gAipomLevelUpLearnset,
gSunkernLevelUpLearnset,
gSunfloraLevelUpLearnset,
gYanmaLevelUpLearnset,
gWooperLevelUpLearnset,
gQuagsireLevelUpLearnset,
gEspeonLevelUpLearnset,
gUmbreonLevelUpLearnset,
gMurkrowLevelUpLearnset,
gSlowkingLevelUpLearnset,
gMisdreavusLevelUpLearnset,
gUnownLevelUpLearnset,
gWobbuffetLevelUpLearnset,
gGirafarigLevelUpLearnset,
gPinecoLevelUpLearnset,
gForretressLevelUpLearnset,
gDunsparceLevelUpLearnset,
gGligarLevelUpLearnset,
gSteelixLevelUpLearnset,
gSnubbullLevelUpLearnset,
gGranbullLevelUpLearnset,
gQwilfishLevelUpLearnset,
gScizorLevelUpLearnset,
gShuckleLevelUpLearnset,
gHeracrossLevelUpLearnset,
gSneaselLevelUpLearnset,
gTeddiursaLevelUpLearnset,
gUrsaringLevelUpLearnset,
gSlugmaLevelUpLearnset,
gMagcargoLevelUpLearnset,
gSwinubLevelUpLearnset,
gPiloswineLevelUpLearnset,
gCorsolaLevelUpLearnset,
gRemoraidLevelUpLearnset,
gOctilleryLevelUpLearnset,
gDelibirdLevelUpLearnset,
gMantineLevelUpLearnset,
gSkarmoryLevelUpLearnset,
gHoundourLevelUpLearnset,
gHoundoomLevelUpLearnset,
gKingdraLevelUpLearnset,
gPhanpyLevelUpLearnset,
gDonphanLevelUpLearnset,
gPorygon2LevelUpLearnset,
gStantlerLevelUpLearnset,
gSmeargleLevelUpLearnset,
gTyrogueLevelUpLearnset,
gHitmontopLevelUpLearnset,
gSmoochumLevelUpLearnset,
gElekidLevelUpLearnset,
gMagbyLevelUpLearnset,
gMiltankLevelUpLearnset,
gBlisseyLevelUpLearnset,
gRaikouLevelUpLearnset,
gEnteiLevelUpLearnset,
gSuicuneLevelUpLearnset,
gLarvitarLevelUpLearnset,
gPupitarLevelUpLearnset,
gTyranitarLevelUpLearnset,
gLugiaLevelUpLearnset,
gHoOhLevelUpLearnset,
gCelebiLevelUpLearnset,
gSpecies252LevelUpLearnset,
gSpecies253LevelUpLearnset,
gSpecies254LevelUpLearnset,
gSpecies255LevelUpLearnset,
gSpecies256LevelUpLearnset,
gSpecies257LevelUpLearnset,
gSpecies258LevelUpLearnset,
gSpecies259LevelUpLearnset,
gSpecies260LevelUpLearnset,
gSpecies261LevelUpLearnset,
gSpecies262LevelUpLearnset,
gSpecies263LevelUpLearnset,
gSpecies264LevelUpLearnset,
gSpecies265LevelUpLearnset,
gSpecies266LevelUpLearnset,
gSpecies267LevelUpLearnset,
gSpecies268LevelUpLearnset,
gSpecies269LevelUpLearnset,
gSpecies270LevelUpLearnset,
gSpecies271LevelUpLearnset,
gSpecies272LevelUpLearnset,
gSpecies273LevelUpLearnset,
gSpecies274LevelUpLearnset,
gSpecies275LevelUpLearnset,
gSpecies276LevelUpLearnset,
gTreeckoLevelUpLearnset,
gGrovyleLevelUpLearnset,
gSceptileLevelUpLearnset,
gTorchicLevelUpLearnset,
gCombuskenLevelUpLearnset,
gBlazikenLevelUpLearnset,
gMudkipLevelUpLearnset,
gMarshtompLevelUpLearnset,
gSwampertLevelUpLearnset,
gPoochyenaLevelUpLearnset,
gMightyenaLevelUpLearnset,
gZigzagoonLevelUpLearnset,
gLinooneLevelUpLearnset,
gWurmpleLevelUpLearnset,
gSilcoonLevelUpLearnset,
gBeautiflyLevelUpLearnset,
gCascoonLevelUpLearnset,
gDustoxLevelUpLearnset,
gLotadLevelUpLearnset,
gLombreLevelUpLearnset,
gLudicoloLevelUpLearnset,
gSeedotLevelUpLearnset,
gNuzleafLevelUpLearnset,
gShiftryLevelUpLearnset,
gNincadaLevelUpLearnset,
gNinjaskLevelUpLearnset,
gShedinjaLevelUpLearnset,
gTaillowLevelUpLearnset,
gSwellowLevelUpLearnset,
gShroomishLevelUpLearnset,
gBreloomLevelUpLearnset,
gSpindaLevelUpLearnset,
gWingullLevelUpLearnset,
gPelipperLevelUpLearnset,
gSurskitLevelUpLearnset,
gMasquerainLevelUpLearnset,
gWailmerLevelUpLearnset,
gWailordLevelUpLearnset,
gSkittyLevelUpLearnset,
gDelcattyLevelUpLearnset,
gKecleonLevelUpLearnset,
gBaltoyLevelUpLearnset,
gClaydolLevelUpLearnset,
gNosepassLevelUpLearnset,
gTorkoalLevelUpLearnset,
gSableyeLevelUpLearnset,
gBarboachLevelUpLearnset,
gWhiscashLevelUpLearnset,
gLuvdiscLevelUpLearnset,
gCorphishLevelUpLearnset,
gCrawdauntLevelUpLearnset,
gFeebasLevelUpLearnset,
gMiloticLevelUpLearnset,
gCarvanhaLevelUpLearnset,
gSharpedoLevelUpLearnset,
gTrapinchLevelUpLearnset,
gVibravaLevelUpLearnset,
gFlygonLevelUpLearnset,
gMakuhitaLevelUpLearnset,
gHariyamaLevelUpLearnset,
gElectrikeLevelUpLearnset,
gManectricLevelUpLearnset,
gNumelLevelUpLearnset,
gCameruptLevelUpLearnset,
gSphealLevelUpLearnset,
gSealeoLevelUpLearnset,
gWalreinLevelUpLearnset,
gCacneaLevelUpLearnset,
gCacturneLevelUpLearnset,
gSnoruntLevelUpLearnset,
gGlalieLevelUpLearnset,
gLunatoneLevelUpLearnset,
gSolrockLevelUpLearnset,
gAzurillLevelUpLearnset,
gSpoinkLevelUpLearnset,
gGrumpigLevelUpLearnset,
gPlusleLevelUpLearnset,
gMinunLevelUpLearnset,
gMawileLevelUpLearnset,
gMedititeLevelUpLearnset,
gMedichamLevelUpLearnset,
gSwabluLevelUpLearnset,
gAltariaLevelUpLearnset,
gWynautLevelUpLearnset,
gDuskullLevelUpLearnset,
gDusclopsLevelUpLearnset,
gRoseliaLevelUpLearnset,
gSlakothLevelUpLearnset,
gVigorothLevelUpLearnset,
gSlakingLevelUpLearnset,
gGulpinLevelUpLearnset,
gSwalotLevelUpLearnset,
gTropiusLevelUpLearnset,
gWhismurLevelUpLearnset,
gLoudredLevelUpLearnset,
gExploudLevelUpLearnset,
gClamperlLevelUpLearnset,
gHuntailLevelUpLearnset,
gGorebyssLevelUpLearnset,
gAbsolLevelUpLearnset,
gShuppetLevelUpLearnset,
gBanetteLevelUpLearnset,
gSeviperLevelUpLearnset,
gZangooseLevelUpLearnset,
gRelicanthLevelUpLearnset,
gAronLevelUpLearnset,
gLaironLevelUpLearnset,
gAggronLevelUpLearnset,
gCastformLevelUpLearnset,
gVolbeatLevelUpLearnset,
gIllumiseLevelUpLearnset,
gLileepLevelUpLearnset,
gCradilyLevelUpLearnset,
gAnorithLevelUpLearnset,
gArmaldoLevelUpLearnset,
gRaltsLevelUpLearnset,
gKirliaLevelUpLearnset,
gGardevoirLevelUpLearnset,
gBagonLevelUpLearnset,
gShelgonLevelUpLearnset,
gSalamenceLevelUpLearnset,
gBeldumLevelUpLearnset,
gMetangLevelUpLearnset,
gMetagrossLevelUpLearnset,
gRegirockLevelUpLearnset,
gRegiceLevelUpLearnset,
gRegisteelLevelUpLearnset,
gKyogreLevelUpLearnset,
gGroudonLevelUpLearnset,
gRayquazaLevelUpLearnset,
gLatiasLevelUpLearnset,
gLatiosLevelUpLearnset,
gJirachiLevelUpLearnset,
gDeoxysLevelUpLearnset,
gChimechoLevelUpLearnset
};
#endif //POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,176 @@
#ifndef POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
#define POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
const u8 gFacilityClassToPicIndex[] =
{
TRAINER_PIC_HIKER, // FACILITY_CLASS_HIKER
TRAINER_PIC_AQUA_GRUNT_M, // FACILITY_CLASS_TEAM_AQUA_1
TRAINER_PIC_POKEMON_BREEDER_F, // FACILITY_CLASS_PKMN_BREEDER_1
TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_1
TRAINER_PIC_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
TRAINER_PIC_COLLECTOR, // FACILITY_CLASS_COLLECTOR
TRAINER_PIC_AQUA_GRUNT_F, // FACILITY_CLASS_TEAM_AQUA_2
TRAINER_PIC_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
TRAINER_PIC_MAGMA_GRUNT_M, // FACILITY_CLASS_TEAM_MAGMA_1
TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_1
TRAINER_PIC_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
TRAINER_PIC_AQUA_LEADER_ARCHIE, // FACILITY_CLASS_AQUA_LEADER
TRAINER_PIC_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
TRAINER_PIC_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY
TRAINER_PIC_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC
TRAINER_PIC_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
TRAINER_PIC_TUBER_F, // FACILITY_CLASS_TUBER_1
TRAINER_PIC_TUBER_M, // FACILITY_CLASS_TUBER_2
TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_2
TRAINER_PIC_LADY, // FACILITY_CLASS_LADY
TRAINER_PIC_BEAUTY, // FACILITY_CLASS_BEAUTY
TRAINER_PIC_RICH_BOY, // FACILITY_CLASS_RICH_BOY
TRAINER_PIC_EXPERT_F, // FACILITY_CLASS_EXPERT_2
TRAINER_PIC_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC
TRAINER_PIC_MAGMA_GRUNT_F, // FACILITY_CLASS_TEAM_MAGMA_2
TRAINER_PIC_GUITARIST, // FACILITY_CLASS_GUITARIST
TRAINER_PIC_KINDLER, // FACILITY_CLASS_KINDLER
TRAINER_PIC_CAMPER, // FACILITY_CLASS_CAMPER
TRAINER_PIC_PICNICKER, // FACILITY_CLASS_PICNICKER
TRAINER_PIC_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_1
TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_2
TRAINER_PIC_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
TRAINER_PIC_ELITE_FOUR_SIDNEY, // FACILITY_CLASS_ELITE_FOUR_1
TRAINER_PIC_ELITE_FOUR_PHOEBE, // FACILITY_CLASS_ELITE_FOUR_2
TRAINER_PIC_LEADER_ROXANNE, // FACILITY_CLASS_LEADER_1
TRAINER_PIC_LEADER_BRAWLY, // FACILITY_CLASS_LEADER_2
TRAINER_PIC_LEADER_TATE_AND_LIZA, // FACILITY_CLASS_LEADER_3
TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_1
TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_2
TRAINER_PIC_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
TRAINER_PIC_WINSTRATE_M, // FACILITY_CLASS_POKEFAN_1
TRAINER_PIC_WINSTRATE_F, // FACILITY_CLASS_POKEFAN_2
TRAINER_PIC_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER
TRAINER_PIC_CHAMPION_WALLACE, // FACILITY_CLASS_CHAMPION
TRAINER_PIC_FISHERMAN, // FACILITY_CLASS_FISHERMAN
TRAINER_PIC_CYCLING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_1
TRAINER_PIC_CYCLING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_2
TRAINER_PIC_RUNNING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_3
TRAINER_PIC_RUNNING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_4
TRAINER_PIC_SWIMMING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_5
TRAINER_PIC_SWIMMING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_6
TRAINER_PIC_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER
TRAINER_PIC_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY
TRAINER_PIC_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL
TRAINER_PIC_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY
TRAINER_PIC_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F
TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS
TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR
TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_2
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_5
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7
TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2
TRAINER_PIC_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_1
TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_2
TRAINER_PIC_MAGMA_LEADER_MAXIE, // FACILITY_CLASS_MAGMA_LEADER
TRAINER_PIC_LASS, // FACILITY_CLASS_LASS
TRAINER_PIC_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
TRAINER_PIC_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
TRAINER_PIC_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_8
TRAINER_PIC_SALON_MAIDEN_ANABEL, // FACILITY_CLASS_SALON_MAIDEN
TRAINER_PIC_DOME_ACE_TUCKER, // FACILITY_CLASS_DOME_ACE
TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_9
TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_10
TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_11
TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_12
};
const u8 gFacilityClassToTrainerClass[] =
{
TRAINER_CLASS_HIKER, // FACILITY_CLASS_HIKER
TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_1
TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_1
TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_1
TRAINER_CLASS_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
TRAINER_CLASS_COLLECTOR, // FACILITY_CLASS_COLLECTOR
TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_2
TRAINER_CLASS_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_1
TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_1
TRAINER_CLASS_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
TRAINER_CLASS_AQUA_LEADER, // FACILITY_CLASS_AQUA_LEADER
TRAINER_CLASS_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
TRAINER_CLASS_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY
TRAINER_CLASS_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC
TRAINER_CLASS_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
TRAINER_CLASS_TUBER_1, // FACILITY_CLASS_TUBER_1
TRAINER_CLASS_TUBER_2, // FACILITY_CLASS_TUBER_2
TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_2
TRAINER_CLASS_LADY, // FACILITY_CLASS_LADY
TRAINER_CLASS_BEAUTY, // FACILITY_CLASS_BEAUTY
TRAINER_CLASS_RICH_BOY, // FACILITY_CLASS_RICH_BOY
TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_2
TRAINER_CLASS_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC
TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_2
TRAINER_CLASS_GUITARIST, // FACILITY_CLASS_GUITARIST
TRAINER_CLASS_KINDLER, // FACILITY_CLASS_KINDLER
TRAINER_CLASS_CAMPER, // FACILITY_CLASS_CAMPER
TRAINER_CLASS_PICNICKER, // FACILITY_CLASS_PICNICKER
TRAINER_CLASS_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_1
TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_2
TRAINER_CLASS_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_1
TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_2
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_1
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_2
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_3
TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_1
TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_2
TRAINER_CLASS_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_1
TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_2
TRAINER_CLASS_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER
TRAINER_CLASS_CHAMPION, // FACILITY_CLASS_CHAMPION
TRAINER_CLASS_FISHERMAN, // FACILITY_CLASS_FISHERMAN
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_1
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_2
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_3
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_4
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_5
TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_6
TRAINER_CLASS_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER
TRAINER_CLASS_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY
TRAINER_CLASS_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL
TRAINER_CLASS_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY
TRAINER_CLASS_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F
TRAINER_CLASS_TWINS, // FACILITY_CLASS_TWINS
TRAINER_CLASS_SAILOR, // FACILITY_CLASS_SAILOR
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_1
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_2
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_3
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_4
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_5
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_6
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_7
TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_2
TRAINER_CLASS_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_1
TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_2
TRAINER_CLASS_MAGMA_LEADER, // FACILITY_CLASS_MAGMA_LEADER
TRAINER_CLASS_LASS, // FACILITY_CLASS_LASS
TRAINER_CLASS_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
TRAINER_CLASS_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
TRAINER_CLASS_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_8
TRAINER_CLASS_SALON_MAIDEN, // FACILITY_CLASS_SALON_MAIDEN
TRAINER_CLASS_DOME_ACE, // FACILITY_CLASS_DOME_ACE
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_9
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_10
TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_11
TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_12
};
#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H

View File

@@ -0,0 +1,421 @@
#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
static const u8 sMapName_LittlerootTown[] = _("LITTLEROOT TOWN");
static const u8 sMapName_OldaleTown[] = _("OLDALE TOWN");
static const u8 sMapName_DewfordTown[] = _("DEWFORD TOWN");
static const u8 sMapName_LavaridgeTown[] = _("LAVARIDGE TOWN");
static const u8 sMapName_FallarborTown[] = _("FALLARBOR TOWN");
static const u8 sMapName_VerdanturfTown[] = _("VERDANTURF TOWN");
static const u8 sMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN");
static const u8 sMapName_PetalburgCity[] = _("PETALBURG CITY");
static const u8 sMapName_SlateportCity[] = _("SLATEPORT CITY");
static const u8 sMapName_MauvilleCity[] = _("MAUVILLE CITY");
static const u8 sMapName_RustboroCity[] = _("RUSTBORO CITY");
static const u8 sMapName_FortreeCity[] = _("FORTREE CITY");
static const u8 sMapName_LilycoveCity[] = _("LILYCOVE CITY");
static const u8 sMapName_MossdeepCity[] = _("MOSSDEEP CITY");
static const u8 sMapName_SootopolisCity[] = _("SOOTOPOLIS CITY");
static const u8 sMapName_EverGrandeCity[] = _("EVER GRANDE CITY");
static const u8 sMapName_Route101[] = _("ROUTE 101");
static const u8 sMapName_Route102[] = _("ROUTE 102");
static const u8 sMapName_Route103[] = _("ROUTE 103");
static const u8 sMapName_Route104[] = _("ROUTE 104");
static const u8 sMapName_Route105[] = _("ROUTE 105");
static const u8 sMapName_Route106[] = _("ROUTE 106");
static const u8 sMapName_Route107[] = _("ROUTE 107");
static const u8 sMapName_Route108[] = _("ROUTE 108");
static const u8 sMapName_Route109[] = _("ROUTE 109");
static const u8 sMapName_Route110[] = _("ROUTE 110");
static const u8 sMapName_Route111[] = _("ROUTE 111");
static const u8 sMapName_Route112[] = _("ROUTE 112");
static const u8 sMapName_Route113[] = _("ROUTE 113");
static const u8 sMapName_Route114[] = _("ROUTE 114");
static const u8 sMapName_Route115[] = _("ROUTE 115");
static const u8 sMapName_Route116[] = _("ROUTE 116");
static const u8 sMapName_Route117[] = _("ROUTE 117");
static const u8 sMapName_Route118[] = _("ROUTE 118");
static const u8 sMapName_Route119[] = _("ROUTE 119");
static const u8 sMapName_Route120[] = _("ROUTE 120");
static const u8 sMapName_Route121[] = _("ROUTE 121");
static const u8 sMapName_Route122[] = _("ROUTE 122");
static const u8 sMapName_Route123[] = _("ROUTE 123");
static const u8 sMapName_Route124[] = _("ROUTE 124");
static const u8 sMapName_Route125[] = _("ROUTE 125");
static const u8 sMapName_Route126[] = _("ROUTE 126");
static const u8 sMapName_Route127[] = _("ROUTE 127");
static const u8 sMapName_Route128[] = _("ROUTE 128");
static const u8 sMapName_Route129[] = _("ROUTE 129");
static const u8 sMapName_Route130[] = _("ROUTE 130");
static const u8 sMapName_Route131[] = _("ROUTE 131");
static const u8 sMapName_Route132[] = _("ROUTE 132");
static const u8 sMapName_Route133[] = _("ROUTE 133");
static const u8 sMapName_Route134[] = _("ROUTE 134");
static const u8 sMapName_Underwater[] = _("UNDERWATER");
static const u8 sMapName_GraniteCave[] = _("GRANITE CAVE");
static const u8 sMapName_MtChimney[] = _("MT. CHIMNEY");
static const u8 sMapName_SafariZone[] = _("SAFARI ZONE");
static const u8 sMapName_BattleFrontier[] = _("BATTLE FRONTIER");
static const u8 sMapName_PetalburgWoods[] = _("PETALBURG WOODS");
static const u8 sMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
static const u8 sMapName_AbandonedShip[] = _("ABANDONED SHIP");
static const u8 sMapName_NewMauville[] = _("NEW MAUVILLE");
static const u8 sMapName_MeteorFalls[] = _("METEOR FALLS");
static const u8 sMapName_MtPyre[] = _("MT. PYRE");
// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
// hideout in Emerald with their own new region map entries, and this name
// doesn't seem to be used anymore.
static const u8 sMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT");
static const u8 sMapName_ShoalCave[] = _("SHOAL CAVE");
static const u8 sMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
static const u8 sMapName_VictoryRoad[] = _("VICTORY ROAD");
static const u8 sMapName_MirageIsland[] = _("MIRAGE ISLAND");
static const u8 sMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
static const u8 sMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
static const u8 sMapName_FieryPath[] = _("FIERY PATH");
static const u8 sMapName_JaggedPass[] = _("JAGGED PASS");
static const u8 sMapName_SealedChamber[] = _("SEALED CHAMBER");
static const u8 sMapName_ScorchedSlab[] = _("SCORCHED SLAB");
static const u8 sMapName_IslandCave[] = _("ISLAND CAVE");
static const u8 sMapName_DesertRuins[] = _("DESERT RUINS");
static const u8 sMapName_AncientTomb[] = _("ANCIENT TOMB");
static const u8 sMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
static const u8 sMapName_SkyPillar[] = _("SKY PILLAR");
static const u8 sMapName_SecretBase[] = _("SECRET BASE");
static const u8 sMapName_None[] = _("");
static const u8 sMapName_PalletTown[] = _("PALLET TOWN");
static const u8 sMapName_ViridianCity[] = _("VIRIDIAN CITY");
static const u8 sMapName_PewterCity[] = _("PEWTER CITY");
static const u8 sMapName_CeruleanCity[] = _("CERULEAN CITY");
static const u8 sMapName_LavenderTown[] = _("LAVENDER TOWN");
static const u8 sMapName_VermilionCity[] = _("VERMILION CITY");
static const u8 sMapName_CeladonCity[] = _("CELADON CITY");
static const u8 sMapName_FuchsiaCity[] = _("FUCHSIA CITY");
static const u8 sMapName_CinnabarIsland[] = _("CINNABAR ISLAND");
static const u8 sMapName_IndigoPlateau[] = _("INDIGO PLATEAU");
static const u8 sMapName_SaffronCity[] = _("SAFFRON CITY");
static const u8 sMapName_Route4[] = _("ROUTE 4");
static const u8 sMapName_Route10[] = _("ROUTE 10");
static const u8 sMapName_Route1[] = _("ROUTE 1");
static const u8 sMapName_Route2[] = _("ROUTE 2");
static const u8 sMapName_Route3[] = _("ROUTE 3");
static const u8 sMapName_Route4_2[] = _("ROUTE 4");
static const u8 sMapName_Route5[] = _("ROUTE 5");
static const u8 sMapName_Route6[] = _("ROUTE 6");
static const u8 sMapName_Route7[] = _("ROUTE 7");
static const u8 sMapName_Route8[] = _("ROUTE 8");
static const u8 sMapName_Route9[] = _("ROUTE 9");
static const u8 sMapName_Route10_2[] = _("ROUTE 10");
static const u8 sMapName_Route11[] = _("ROUTE 11");
static const u8 sMapName_Route12[] = _("ROUTE 12");
static const u8 sMapName_Route13[] = _("ROUTE 13");
static const u8 sMapName_Route14[] = _("ROUTE 14");
static const u8 sMapName_Route15[] = _("ROUTE 15");
static const u8 sMapName_Route16[] = _("ROUTE 16");
static const u8 sMapName_Route17[] = _("ROUTE 17");
static const u8 sMapName_Route18[] = _("ROUTE 18");
static const u8 sMapName_Route19[] = _("ROUTE 19");
static const u8 sMapName_Route20[] = _("ROUTE 20");
static const u8 sMapName_Route21[] = _("ROUTE 21");
static const u8 sMapName_Route22[] = _("ROUTE 22");
static const u8 sMapName_Route23[] = _("ROUTE 23");
static const u8 sMapName_Route24[] = _("ROUTE 24");
static const u8 sMapName_Route25[] = _("ROUTE 25");
static const u8 sMapName_ViridianForest[] = _("VIRIDIAN FOREST");
static const u8 sMapName_MtMoon[] = _("MT. MOON");
static const u8 sMapName_SSAnne[] = _("S.S. ANNE");
static const u8 sMapName_UndergroundPath[] = _("UNDERGROUND PATH");
static const u8 sMapName_UndergroundPath2[] = _("UNDERGROUND PATH");
static const u8 sMapName_DiglettsCave[] = _("DIGLETTS CAVE");
static const u8 sMapName_KantoVictoryRoad[] = _("VICTORY ROAD");
static const u8 sMapName_RocketHideout[] = _("ROCKET HIDEOUT");
static const u8 sMapName_SilphCo[] = _("SILPH CO.");
static const u8 sMapName_PokemonMansion[] = _("POKéMON MANSION");
static const u8 sMapName_KantoSafariZone[] = _("SAFARI ZONE");
static const u8 sMapName_PokemonLeague[] = _("POKéMON LEAGUE");
static const u8 sMapName_RockTunnel[] = _("ROCK TUNNEL");
static const u8 sMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
static const u8 sMapName_PokemonTower[] = _("POKéMON TOWER");
static const u8 sMapName_CeruleanCave[] = _("CERULEAN CAVE");
static const u8 sMapName_PowerPlant[] = _("POWER PLANT");
static const u8 sMapName_OneIsland[] = _("ONE ISLAND");
static const u8 sMapName_TwoIsland[] = _("TWO ISLAND");
static const u8 sMapName_ThreeIsland[] = _("THREE ISLAND");
static const u8 sMapName_FourIsland[] = _("FOUR ISLAND");
static const u8 sMapName_FiveIsland[] = _("FIVE ISLAND");
static const u8 sMapName_SevenIsland[] = _("SEVEN ISLAND");
static const u8 sMapName_SixIsland[] = _("SIX ISLAND");
static const u8 sMapName_KindleRoad[] = _("KINDLE ROAD");
static const u8 sMapName_TreasureBeach[] = _("TREASURE BEACH");
static const u8 sMapName_CapeBrink[] = _("CAPE BRINK");
static const u8 sMapName_BondBridge[] = _("BOND BRIDGE");
static const u8 sMapName_ThreeIslePort[] = _("THREE ISLE PORT");
static const u8 sMapName_SeviiIsle6[] = _("SEVII ISLE 6");
static const u8 sMapName_SeviiIsle7[] = _("SEVII ISLE 7");
static const u8 sMapName_SeviiIsle8[] = _("SEVII ISLE 8");
static const u8 sMapName_SeviiIsle9[] = _("SEVII ISLE 9");
static const u8 sMapName_ResortGorgeous[] = _("RESORT GORGEOUS");
static const u8 sMapName_WaterLabyrinth[] = _("WATER LABYRINTH");
static const u8 sMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
static const u8 sMapName_MemorialPillar[] = _("MEMORIAL PILLAR");
static const u8 sMapName_OutcastIsland[] = _("OUTCAST ISLAND");
static const u8 sMapName_GreenPath[] = _("GREEN PATH");
static const u8 sMapName_WaterPath[] = _("WATER PATH");
static const u8 sMapName_RuinValley[] = _("RUIN VALLEY");
static const u8 sMapName_TrainerTower[] = _("TRAINER TOWER");
static const u8 sMapName_CanyonEntrance[] = _("CANYON ENTRANCE");
static const u8 sMapName_SevaultCanyon[] = _("SEVAULT CANYON");
static const u8 sMapName_TanobyRuins[] = _("TANOBY RUINS");
static const u8 sMapName_SeviiIsle22[] = _("SEVII ISLE 22");
static const u8 sMapName_SeviiIsle23[] = _("SEVII ISLE 23");
static const u8 sMapName_SeviiIsle24[] = _("SEVII ISLE 24");
static const u8 sMapName_NavelRock[] = _("NAVEL ROCK");
static const u8 sMapName_MtEmber[] = _("MT. EMBER");
static const u8 sMapName_BerryForest[] = _("BERRY FOREST");
static const u8 sMapName_IcefallCave[] = _("ICEFALL CAVE");
static const u8 sMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
static const u8 sMapName_TrainerTower2[] = _("TRAINER TOWER");
static const u8 sMapName_DottedHole[] = _("DOTTED HOLE");
static const u8 sMapName_LostCave[] = _("LOST CAVE");
static const u8 sMapName_PatternBush[] = _("PATTERN BUSH");
static const u8 sMapName_AlteringCave[] = _("ALTERING CAVE");
static const u8 sMapName_TanobyChambers[] = _("TANOBY CHAMBERS");
static const u8 sMapName_ThreeIslePath[] = _("THREE ISLE PATH");
static const u8 sMapName_TanobyKey[] = _("TANOBY KEY");
static const u8 sMapName_BirthIsland[] = _("BIRTH ISLAND");
static const u8 sMapName_MoneanChamber[] = _("MONEAN CHAMBER");
static const u8 sMapName_LiptooChamber[] = _("LIPTOO CHAMBER");
static const u8 sMapName_WeepthChamber[] = _("WEEPTH CHAMBER");
static const u8 sMapName_DilfordChamber[] = _("DILFORD CHAMBER");
static const u8 sMapName_ScufibChamber[] = _("SCUFIB CHAMBER");
static const u8 sMapName_RixyChamber[] = _("RIXY CHAMBER");
static const u8 sMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
static const u8 sMapName_EmberSpa[] = _("EMBER SPA");
static const u8 sMapName_SpecialArea[] = _("SPECIAL AREA");
static const u8 sMapName_AquaHideout[] = _("AQUA HIDEOUT");
static const u8 sMapName_MagmaHideout[] = _("MAGMA HIDEOUT");
static const u8 sMapName_MirageTower[] = _("MIRAGE TOWER");
static const u8 sMapName_FarawayIsland[] = _("FARAWAY ISLAND");
static const u8 sMapName_ArtisanCave[] = _("ARTISAN CAVE");
static const u8 sMapName_MarineCave[] = _("MARINE CAVE");
static const u8 sMapName_TerraCave[] = _("TERRA CAVE");
static const u8 sMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
static const u8 sMapName_TrainerHill[] = _("TRAINER HILL");
const struct RegionMapLocation gRegionMapEntries[] = {
{ 4, 11, 1, 1, sMapName_LittlerootTown},
{ 4, 9, 1, 1, sMapName_OldaleTown},
{ 2, 14, 1, 1, sMapName_DewfordTown},
{ 5, 3, 1, 1, sMapName_LavaridgeTown},
{ 3, 0, 1, 1, sMapName_FallarborTown},
{ 4, 6, 1, 1, sMapName_VerdanturfTown},
{17, 10, 1, 1, sMapName_PacifidlogTown},
{ 1, 9, 1, 1, sMapName_PetalburgCity},
{ 8, 10, 1, 2, sMapName_SlateportCity},
{ 8, 6, 2, 1, sMapName_MauvilleCity},
{ 0, 5, 1, 2, sMapName_RustboroCity},
{12, 0, 1, 1, sMapName_FortreeCity},
{18, 3, 2, 1, sMapName_LilycoveCity},
{24, 5, 2, 1, sMapName_MossdeepCity},
{21, 7, 1, 1, sMapName_SootopolisCity},
{27, 8, 1, 2, sMapName_EverGrandeCity},
{ 4, 10, 1, 1, sMapName_Route101},
{ 2, 9, 2, 1, sMapName_Route102},
{ 4, 8, 4, 1, sMapName_Route103},
{ 0, 7, 1, 3, sMapName_Route104},
{ 0, 10, 1, 3, sMapName_Route105},
{ 0, 13, 2, 1, sMapName_Route106},
{ 3, 14, 3, 1, sMapName_Route107},
{ 6, 14, 2, 1, sMapName_Route108},
{ 8, 12, 1, 3, sMapName_Route109},
{ 8, 7, 1, 3, sMapName_Route110},
{ 8, 0, 1, 6, sMapName_Route111},
{ 6, 3, 2, 1, sMapName_Route112},
{ 4, 0, 4, 1, sMapName_Route113},
{ 1, 0, 2, 3, sMapName_Route114},
{ 0, 2, 1, 3, sMapName_Route115},
{ 1, 5, 4, 1, sMapName_Route116},
{ 5, 6, 3, 1, sMapName_Route117},
{10, 6, 2, 1, sMapName_Route118},
{11, 0, 1, 6, sMapName_Route119},
{13, 0, 1, 4, sMapName_Route120},
{14, 3, 4, 1, sMapName_Route121},
{16, 4, 1, 2, sMapName_Route122},
{12, 6, 5, 1, sMapName_Route123},
{20, 3, 4, 3, sMapName_Route124},
{24, 3, 2, 2, sMapName_Route125},
{20, 6, 3, 3, sMapName_Route126},
{23, 6, 3, 3, sMapName_Route127},
{23, 9, 4, 1, sMapName_Route128},
{24, 10, 2, 1, sMapName_Route129},
{21, 10, 3, 1, sMapName_Route130},
{18, 10, 3, 1, sMapName_Route131},
{15, 10, 2, 1, sMapName_Route132},
{12, 10, 3, 1, sMapName_Route133},
{ 9, 10, 3, 1, sMapName_Route134},
{20, 3, 4, 3, sMapName_Underwater},
{20, 6, 3, 3, sMapName_Underwater},
{23, 6, 3, 3, sMapName_Underwater},
{23, 9, 4, 1, sMapName_Underwater},
{21, 7, 1, 1, sMapName_Underwater},
{ 1, 13, 1, 1, sMapName_GraniteCave},
{ 6, 2, 1, 1, sMapName_MtChimney},
{16, 2, 1, 1, sMapName_SafariZone},
{22, 12, 1, 1, sMapName_BattleFrontier},
{ 0, 8, 1, 1, sMapName_PetalburgWoods},
{ 2, 5, 1, 1, sMapName_RusturfTunnel},
{ 6, 14, 1, 1, sMapName_AbandonedShip},
{ 8, 7, 1, 1, sMapName_NewMauville},
{ 0, 3, 1, 1, sMapName_MeteorFalls},
{ 1, 2, 1, 1, sMapName_MeteorFalls},
{16, 4, 1, 1, sMapName_MtPyre},
{19, 3, 1, 1, sMapName_AquaHideoutOld},
{24, 4, 1, 1, sMapName_ShoalCave},
{24, 9, 1, 1, sMapName_SeafloorCavern},
{24, 9, 1, 1, sMapName_Underwater},
{27, 9, 1, 1, sMapName_VictoryRoad},
{17, 10, 1, 1, sMapName_MirageIsland},
{21, 7, 1, 1, sMapName_CaveOfOrigin},
{12, 14, 1, 1, sMapName_SouthernIsland},
{ 6, 3, 1, 1, sMapName_FieryPath},
{ 7, 3, 1, 1, sMapName_FieryPath},
{ 6, 3, 1, 1, sMapName_JaggedPass},
{ 7, 2, 1, 1, sMapName_JaggedPass},
{11, 10, 1, 1, sMapName_SealedChamber},
{11, 10, 1, 1, sMapName_Underwater},
{13, 0, 1, 1, sMapName_ScorchedSlab},
{ 0, 10, 1, 1, sMapName_IslandCave},
{ 8, 3, 1, 1, sMapName_DesertRuins},
{13, 2, 1, 1, sMapName_AncientTomb},
{ 0, 0, 1, 1, sMapName_InsideOfTruck},
{19, 10, 1, 1, sMapName_SkyPillar},
{ 0, 0, 1, 1, sMapName_SecretBase},
{ 0, 0, 1, 1, sMapName_None},
{ 0, 0, 1, 1, sMapName_PalletTown},
{ 0, 0, 1, 1, sMapName_ViridianCity},
{ 0, 0, 1, 1, sMapName_PewterCity},
{ 0, 0, 1, 1, sMapName_CeruleanCity},
{ 0, 0, 1, 1, sMapName_LavenderTown},
{ 0, 0, 1, 1, sMapName_VermilionCity},
{ 0, 0, 1, 1, sMapName_CeladonCity},
{ 0, 0, 1, 1, sMapName_FuchsiaCity},
{ 0, 0, 1, 1, sMapName_CinnabarIsland},
{ 0, 0, 1, 1, sMapName_IndigoPlateau},
{ 0, 0, 1, 1, sMapName_SaffronCity},
{ 0, 0, 1, 1, sMapName_Route4},
{ 0, 0, 1, 1, sMapName_Route10},
{ 0, 0, 1, 1, sMapName_Route1},
{ 0, 0, 1, 1, sMapName_Route2},
{ 0, 0, 1, 1, sMapName_Route3},
{ 0, 0, 1, 1, sMapName_Route4_2},
{ 0, 0, 1, 1, sMapName_Route5},
{ 0, 0, 1, 1, sMapName_Route6},
{ 0, 0, 1, 1, sMapName_Route7},
{ 0, 0, 1, 1, sMapName_Route8},
{ 0, 0, 1, 1, sMapName_Route9},
{ 0, 0, 1, 1, sMapName_Route10_2},
{ 0, 0, 1, 1, sMapName_Route11},
{ 0, 0, 1, 1, sMapName_Route12},
{ 0, 0, 1, 1, sMapName_Route13},
{ 0, 0, 1, 1, sMapName_Route14},
{ 0, 0, 1, 1, sMapName_Route15},
{ 0, 0, 1, 1, sMapName_Route16},
{ 0, 0, 1, 1, sMapName_Route17},
{ 0, 0, 1, 1, sMapName_Route18},
{ 0, 0, 1, 1, sMapName_Route19},
{ 0, 0, 1, 1, sMapName_Route20},
{ 0, 0, 1, 1, sMapName_Route21},
{ 0, 0, 1, 1, sMapName_Route22},
{ 0, 0, 1, 1, sMapName_Route23},
{ 0, 0, 1, 1, sMapName_Route24},
{ 0, 0, 1, 1, sMapName_Route25},
{ 0, 0, 1, 1, sMapName_ViridianForest},
{ 0, 0, 1, 1, sMapName_MtMoon},
{ 0, 0, 1, 1, sMapName_SSAnne},
{ 0, 0, 1, 1, sMapName_UndergroundPath},
{ 0, 0, 1, 1, sMapName_UndergroundPath2},
{ 0, 0, 1, 1, sMapName_DiglettsCave},
{ 0, 0, 1, 1, sMapName_KantoVictoryRoad},
{ 0, 0, 1, 1, sMapName_RocketHideout},
{ 0, 0, 1, 1, sMapName_SilphCo},
{ 0, 0, 1, 1, sMapName_PokemonMansion},
{ 0, 0, 1, 1, sMapName_KantoSafariZone},
{ 0, 0, 1, 1, sMapName_PokemonLeague},
{ 0, 0, 1, 1, sMapName_RockTunnel},
{ 0, 0, 1, 1, sMapName_SeafoamIslands},
{ 0, 0, 1, 1, sMapName_PokemonTower},
{ 0, 0, 1, 1, sMapName_CeruleanCave},
{ 0, 0, 1, 1, sMapName_PowerPlant},
{ 0, 0, 1, 1, sMapName_OneIsland},
{ 0, 0, 1, 1, sMapName_TwoIsland},
{ 0, 0, 1, 1, sMapName_ThreeIsland},
{ 0, 0, 1, 1, sMapName_FourIsland},
{ 0, 0, 1, 1, sMapName_FiveIsland},
{ 0, 0, 1, 1, sMapName_SevenIsland},
{ 0, 0, 1, 1, sMapName_SixIsland},
{ 0, 0, 1, 1, sMapName_KindleRoad},
{ 0, 0, 1, 1, sMapName_TreasureBeach},
{ 0, 0, 1, 1, sMapName_CapeBrink},
{ 0, 0, 1, 1, sMapName_BondBridge},
{ 0, 0, 1, 1, sMapName_ThreeIslePort},
{ 0, 0, 1, 1, sMapName_SeviiIsle6},
{ 0, 0, 1, 1, sMapName_SeviiIsle7},
{ 0, 0, 1, 1, sMapName_SeviiIsle8},
{ 0, 0, 1, 1, sMapName_SeviiIsle9},
{ 0, 0, 1, 1, sMapName_ResortGorgeous},
{ 0, 0, 1, 1, sMapName_WaterLabyrinth},
{ 0, 0, 1, 1, sMapName_FiveIsleMeadow},
{ 0, 0, 1, 1, sMapName_MemorialPillar},
{ 0, 0, 1, 1, sMapName_OutcastIsland},
{ 0, 0, 1, 1, sMapName_GreenPath},
{ 0, 0, 1, 1, sMapName_WaterPath},
{ 0, 0, 1, 1, sMapName_RuinValley},
{ 0, 0, 1, 1, sMapName_TrainerTower},
{ 0, 0, 1, 1, sMapName_CanyonEntrance},
{ 0, 0, 1, 1, sMapName_SevaultCanyon},
{ 0, 0, 1, 1, sMapName_TanobyRuins},
{ 0, 0, 1, 1, sMapName_SeviiIsle22},
{ 0, 0, 1, 1, sMapName_SeviiIsle23},
{ 0, 0, 1, 1, sMapName_SeviiIsle24},
{ 0, 0, 1, 1, sMapName_NavelRock},
{ 0, 0, 1, 1, sMapName_MtEmber},
{ 0, 0, 1, 1, sMapName_BerryForest},
{ 0, 0, 1, 1, sMapName_IcefallCave},
{ 0, 0, 1, 1, sMapName_RocketWarehouse},
{ 0, 0, 1, 1, sMapName_TrainerTower2},
{ 0, 0, 1, 1, sMapName_DottedHole},
{ 0, 0, 1, 1, sMapName_LostCave},
{ 0, 0, 1, 1, sMapName_PatternBush},
{ 0, 0, 1, 1, sMapName_AlteringCave},
{ 0, 0, 1, 1, sMapName_TanobyChambers},
{ 0, 0, 1, 1, sMapName_ThreeIslePath},
{ 0, 0, 1, 1, sMapName_TanobyKey},
{ 0, 0, 1, 1, sMapName_BirthIsland},
{ 0, 0, 1, 1, sMapName_MoneanChamber},
{ 0, 0, 1, 1, sMapName_LiptooChamber},
{ 0, 0, 1, 1, sMapName_WeepthChamber},
{ 0, 0, 1, 1, sMapName_DilfordChamber},
{ 0, 0, 1, 1, sMapName_ScufibChamber},
{ 0, 0, 1, 1, sMapName_RixyChamber},
{ 0, 0, 1, 1, sMapName_ViapoisChamber},
{ 0, 0, 1, 1, sMapName_EmberSpa},
{ 0, 0, 1, 1, sMapName_SpecialArea},
{19, 3, 1, 1, sMapName_AquaHideout},
{ 6, 3, 1, 1, sMapName_MagmaHideout},
{ 8, 2, 1, 1, sMapName_MirageTower},
{ 0, 0, 1, 1, sMapName_BirthIsland},
{ 0, 0, 1, 1, sMapName_FarawayIsland},
{22, 12, 1, 1, sMapName_ArtisanCave},
{ 0, 0, 1, 1, sMapName_MarineCave},
{ 0, 0, 1, 1, sMapName_Underwater},
{ 0, 0, 1, 1, sMapName_TerraCave},
{ 0, 10, 1, 3, sMapName_Underwater},
{24, 3, 2, 2, sMapName_Underwater},
{24, 10, 2, 1, sMapName_Underwater},
{ 2, 0, 1, 1, sMapName_DesertUnderpass},
{ 6, 8, 1, 1, sMapName_AlteringCave},
{ 0, 0, 1, 1, sMapName_NavelRock},
{ 8, 4, 1, 1, sMapName_TrainerHill}
};
#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H

27
include/daycare.h Normal file
View File

@@ -0,0 +1,27 @@
#ifndef GUARD_DAYCARE_H
#define GUARD_DAYCARE_H
#define EGG_HATCH_LEVEL 5
u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
void StoreSelectedPokemonInDaycare(void);
u16 TakePokemonFromDaycare(void);
void GetDaycareCost(void);
u8 GetNumLevelsGainedFromDaycare(void);
void TriggerPendingDaycareEgg(void);
void RejectEggFromDayCare(void);
void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation);
void GiveEggFromDaycare(void);
bool8 DoEggActions_CheckHatch(void);
u16 GetSelectedMonNickAndSpecies(void);
void GetDaycareMonNicknames(void);
u8 GetDaycareState(void);
void SetDaycareCompatibilityString(void);
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
void ShowDaycareLevelMenu(void);
void ChooseSendDaycareMon(void);
#endif // GUARD_DAYCARE_H

View File

@@ -3,6 +3,8 @@
#include "sprite.h"
extern u8 gDecompressionBuffer[0x4000];
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
@@ -26,4 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
u32 sub_8034974(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H

View File

@@ -1,130 +1,6 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
enum DecoId {
/*000*/ DECOR_NONE,
/*001*/ DECOR_SMALL_DESK,
/*002*/ DECOR_POKEMON_DESK,
/*003*/ DECOR_HEAVY_DESK,
/*004*/ DECOR_RAGGED_DESK,
/*005*/ DECOR_COMFORT_DESK,
/*006*/ DECOR_PRETTY_DESK,
/*007*/ DECOR_BRICK_DESK,
/*008*/ DECOR_CAMP_DESK,
/*009*/ DECOR_HARD_DESK,
/*010*/ DECOR_SMALL_CHAIR,
/*011*/ DECOR_POKEMON_CHAIR,
/*012*/ DECOR_HEAVY_CHAIR,
/*013*/ DECOR_PRETTY_CHAIR,
/*014*/ DECOR_COMFORT_CHAIR,
/*015*/ DECOR_RAGGED_CHAIR,
/*016*/ DECOR_BRICK_CHAIR,
/*017*/ DECOR_CAMP_CHAIR,
/*018*/ DECOR_HARD_CHAIR,
/*019*/ DECOR_RED_PLANT,
/*020*/ DECOR_TROPICAL_PLANT,
/*021*/ DECOR_PRETTY_FLOWERS,
/*022*/ DECOR_COLORFUL_PLANT,
/*023*/ DECOR_BIG_PLANT,
/*024*/ DECOR_GORGEOUS_PLANT,
/*025*/ DECOR_RED_BRICK,
/*026*/ DECOR_YELLOW_BRICK,
/*027*/ DECOR_BLUE_BRICK,
/*028*/ DECOR_RED_BALLOON,
/*029*/ DECOR_BLUE_BALLOON,
/*030*/ DECOR_YELLOW_BALLOON,
/*031*/ DECOR_RED_TENT,
/*032*/ DECOR_BLUE_TENT,
/*033*/ DECOR_SOLID_BOARD,
/*034*/ DECOR_SLIDE,
/*035*/ DECOR_FENCE_LENGTH,
/*036*/ DECOR_FENCE_WIDTH,
/*037*/ DECOR_TIRE,
/*038*/ DECOR_STAND,
/*039*/ DECOR_MUD_BALL,
/*040*/ DECOR_BREAKABLE_DOOR,
/*041*/ DECOR_SAND_ORNAMENT,
/*042*/ DECOR_SILVER_SHIELD,
/*043*/ DECOR_GOLD_SHIELD,
/*044*/ DECOR_GLASS_ORNAMENT,
/*045*/ DECOR_TV,
/*046*/ DECOR_ROUND_TV,
/*047*/ DECOR_CUTE_TV,
/*048*/ DECOR_GLITTER_MAT,
/*049*/ DECOR_JUMP_MAT,
/*050*/ DECOR_SPIN_MAT,
/*051*/ DECOR_C_LOW_NOTE_MAT,
/*052*/ DECOR_D_NOTE_MAT,
/*053*/ DECOR_E_NOTE_MAT,
/*054*/ DECOR_F_NOTE_MAT,
/*055*/ DECOR_G_NOTE_MAT,
/*056*/ DECOR_A_NOTE_MAT,
/*057*/ DECOR_B_NOTE_MAT,
/*058*/ DECOR_C_HIGH_NOTE_MAT,
/*059*/ DECOR_SURF_MAT,
/*060*/ DECOR_THUNDER_MAT,
/*061*/ DECOR_FIRE_BLAST_MAT,
/*062*/ DECOR_POWDER_SNOW_MAT,
/*063*/ DECOR_ATTRACT_MAT,
/*064*/ DECOR_FISSURE_MAT,
/*065*/ DECOR_SPIKES_MAT,
/*066*/ DECOR_BALL_POSTER,
/*067*/ DECOR_GREEN_POSTER,
/*068*/ DECOR_RED_POSTER,
/*069*/ DECOR_BLUE_POSTER,
/*070*/ DECOR_CUTE_POSTER,
/*071*/ DECOR_PIKA_POSTER,
/*072*/ DECOR_LONG_POSTER,
/*073*/ DECOR_SEA_POSTER,
/*074*/ DECOR_SKY_POSTER,
/*075*/ DECOR_KISS_POSTER,
/*076*/ DECOR_PICHU_DOLL,
/*077*/ DECOR_PIKACHU_DOLL,
/*078*/ DECOR_MARILL_DOLL,
/*079*/ DECOR_TOGEPI_DOLL,
/*080*/ DECOR_CYNDAQUIL_DOLL,
/*081*/ DECOR_CHIKORITA_DOLL,
/*082*/ DECOR_TOTODILE_DOLL,
/*083*/ DECOR_JIGGLYPUFF_DOLL,
/*084*/ DECOR_MEOWTH_DOLL,
/*085*/ DECOR_CLEFAIRY_DOLL,
/*086*/ DECOR_DITTO_DOLL,
/*087*/ DECOR_SMOOCHUM_DOLL,
/*088*/ DECOR_TREECKO_DOLL,
/*089*/ DECOR_TORCHIC_DOLL,
/*090*/ DECOR_MUDKIP_DOLL,
/*091*/ DECOR_DUSKULL_DOLL,
/*092*/ DECOR_WYNAUT_DOLL,
/*093*/ DECOR_BALTOY_DOLL,
/*094*/ DECOR_KECLEON_DOLL,
/*095*/ DECOR_AZURILL_DOLL,
/*096*/ DECOR_SKITTY_DOLL,
/*097*/ DECOR_SWABLU_DOLL,
/*098*/ DECOR_GULPIN_DOLL,
/*099*/ DECOR_LOTAD_DOLL,
/*100*/ DECOR_SEEDOT_DOLL,
/*101*/ DECOR_PIKA_CUSHION,
/*102*/ DECOR_ROUND_CUSHION,
/*103*/ DECOR_KISS_CUSHION,
/*104*/ DECOR_ZIGZAG_CUSHION,
/*105*/ DECOR_SPIN_CUSHION,
/*106*/ DECOR_DIAMOND_CUSHION,
/*107*/ DECOR_BALL_CUSHION,
/*108*/ DECOR_GRASS_CUSHION,
/*109*/ DECOR_FIRE_CUSHION,
/*110*/ DECOR_WATER_CUSHION,
/*111*/ DECOR_SNORLAX_DOLL,
/*112*/ DECOR_RHYDON_DOLL,
/*113*/ DECOR_LAPRAS_DOLL,
/*114*/ DECOR_VENUSAUR_DOLL,
/*115*/ DECOR_CHARIZARD_DOLL,
/*116*/ DECOR_BLASTOISE_DOLL,
/*117*/ DECOR_WAILMER_DOLL,
/*118*/ DECOR_REGIROCK_DOLL,
/*119*/ DECOR_REGICE_DOLL,
/*120*/ DECOR_REGISTEEL_DOLL
};
enum DecorPerm {
/*
* The nomenclature here describes collision and placement permissions, in that order.

View File

@@ -3,5 +3,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
void UpdateDewfordTrendPerDay(u16 days);
#endif // GUARD_DEWFORDTREND_H

View File

@@ -3,8 +3,8 @@
void ClearDma3Requests(void);
void ProcessDma3Requests(void);
int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
int CheckForSpaceForDma3Request(s16 index);
s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
s16 CheckForSpaceForDma3Request(s16 index);
#endif // GUARD_DMA3_H

10
include/egg_hatch.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef GUARD_EGG_HATCH_H
#define GUARD_EGG_HATCH_H
void ScriptHatchMon(void);
bool8 sub_8071614(void);
void EggHatch(void);
u8 GetEggStepsToSubtract(void);
u16 sub_80722E0(void);
#endif // GUARD_EGG_HATCH_H

View File

@@ -1,8 +1,8 @@
#ifndef GUARD_EVENT_DATA_H
#define GUARD_EVENT_DATA_H
#include "flags.h"
#include "vars.h"
#include "constants/flags.h"
#include "constants/vars.h"
void InitEventData(void);
void ClearTempFieldEventData(void);
@@ -42,11 +42,11 @@ extern u16 gSpecialVar_0x8008;
extern u16 gSpecialVar_0x8009;
extern u16 gSpecialVar_0x800A;
extern u16 gSpecialVar_0x800B;
extern u16 gScriptResult;
extern u16 gScriptLastTalked;
extern u16 gScriptFacing;
extern u16 gSpecialVar_0x8012;
extern u16 gSpecialVar_0x8013;
extern u16 gSpecialVar_Result;
extern u16 gSpecialVar_LastTalked;
extern u16 gSpecialVar_Facing;
extern u16 gSpecialVar_MonBoxId;
extern u16 gSpecialVar_MonBoxPos;
extern u16 gSpecialVar_0x8014;
#endif // GUARD_EVENT_DATA_H

40
include/event_scripts.h Executable file → Normal file
View File

@@ -7,12 +7,20 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
extern const u8 gUnknown_08275BB7[];
extern const u8 gUnknown_08275D0C[];
extern const u8 gUnknown_08275D1F[];
extern const u8 gUnknown_08275D2E[];
extern const u8 gUnknown_082766A2[];
extern const u8 gUnknown_082766A6[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_TryGetTrainerScript[];
extern const u8 EventScript_275BB7[];
extern const u8 EventScript_275D0C[];
extern const u8 EventScript_275D1F[];
extern const u8 EventScript_275D2E[];
extern const u8 EventScript_271354[];
extern const u8 EventScript_2713C2[];
extern const u8 EventScript_TryDoDoubleTrainerBattle[];
extern const u8 EventScript_271362[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
@@ -362,14 +370,14 @@ extern const u8 gPokeNewsTextLilycove_Ending[];
extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
extern const u8 gPokeNewsTextBlendMaster_Ending[];
extern const u8 gUnknown_08274966[];
extern const u8 gUnknown_08274D13[];
extern const u8 gUnknown_08274FFE[];
extern const u8 gUnknown_08275367[];
extern const u8 gUnknown_082756C7[];
extern const u8 gUnknown_08274B24[];
extern const u8 gUnknown_08274E75[];
extern const u8 gUnknown_082751E1[];
extern const u8 gUnknown_082754F6[];
extern const u8 gUnknown_082758CC[];
extern const u8 SecretBase_RedCave1_Text_274966[];
extern const u8 SecretBase_RedCave1_Text_274D13[];
extern const u8 SecretBase_RedCave1_Text_274FFE[];
extern const u8 SecretBase_RedCave1_Text_275367[];
extern const u8 SecretBase_RedCave1_Text_2756C7[];
extern const u8 SecretBase_RedCave1_Text_274B24[];
extern const u8 SecretBase_RedCave1_Text_274E75[];
extern const u8 SecretBase_RedCave1_Text_2751E1[];
extern const u8 SecretBase_RedCave1_Text_2754F6[];
extern const u8 SecretBase_RedCave1_Text_2758CC[];
#endif //GUARD_EVENT_SCRIPTS_H

View File

@@ -24,5 +24,7 @@ extern u16 gUnknown_03005DE8;
void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
#endif //GUARD_FIELD_CAMERA_H

View File

@@ -1,6 +1,21 @@
#ifndef GUARD_FIELDDOOR_H
#define GUARD_FIELDDOOR_H
struct DoorGraphics
{
u16 metatileNum;
u8 sound;
u8 size;
const void *tiles;
const void *palette;
};
struct DoorAnimFrame
{
u8 time;
u16 offset;
};
void FieldSetDoorOpened(u32, u32);
void FieldSetDoorClosed(u32, u32);
s8 FieldAnimateDoorClose(u32, u32);

View File

@@ -69,9 +69,15 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
u8 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
extern u32 gFieldEffectArguments[8];
u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void sub_80B7FC8(void);
void FieldEffectActiveListRemove(u8 id);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
#endif //GUARD_FIELD_EFFECTS_H

View File

@@ -12,5 +12,6 @@
// Exported ROM declarations
u8 sub_8154228(void);
bool8 sub_8155DA0(struct MapObject *);
void sub_8155D78(struct MapObject *);
#endif //GUARD_FIELD_EFFECT_HELPERS_H

14
include/field_map_obj.h Executable file → Normal file
View File

@@ -60,7 +60,7 @@ void sub_808E82C(u8, u8, u8, s16, s16);
void sub_808E7E4(u8, u8, u8);
void sub_808E78C(u8, u8, u8, u8);
void sub_808E75C(s16, s16);
void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *);
void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, void *localId, void *mapNum, void *mapGroup);
void npc_coords_shift(struct MapObject *, s16, s16);
void sub_808EB08(struct MapObject *, s16, s16);
void sub_808F254(u8, u8, u8);
@@ -76,6 +76,18 @@ void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern);
u8 npc_running_behaviour_by_direction(u8 direction);
const u8 *GetFieldObjectScriptPointerByFieldObjectId(u8 mapObjectId);
u8 sub_8092C8C(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
u8 GetFaceDirectionAnimId(u32);
u8 GetGoSpeed0AnimId(u32);
u8 sub_80934BC(u32);
bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId);
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject);
u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject);
void sub_808F23C(const struct MapObject *mapObject, u8 movementType);
void sub_808F208(const struct MapObject *mapObject);
// Exported data declarations

View File

@@ -1,7 +1,31 @@
#ifndef GUARD_FIELDMAPOBJHELP_H
#define GUARD_FIELDMAPOBJHELP_H
#ifndef GUARD_FIELD_MAP_OBJ_HELPERS_H
#define GUARD_FIELD_MAP_OBJ_HELPERS_H
// Exported type declarations
// Exported RAM declarations
extern u8 *gUnknown_020375B8;
// Exported ROM declarations
void sub_8097AC8(struct Sprite *);
void npc_sync_anim_pause_bits(struct MapObject *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
u8 sub_8097F78(struct MapObject *);
bool8 obj_npc_ministep(struct Sprite *sprite);
bool8 sub_80976EC(struct Sprite *sprite);
void sub_80976DC(struct Sprite *, u8);
void sub_809783C(struct Sprite *, u8, u8, u8);
void DoShadowFieldEffect(struct MapObject *);
u8 sub_809785C(struct Sprite *);
u8 sub_80978E4(struct Sprite *);
void obj_anim_image_set_and_seek(struct Sprite *, u8, u8);
bool8 sub_80979BC(struct Sprite *);
void sub_8097750(struct Sprite *);
bool8 sub_8097758(struct Sprite *);
void sub_8097FA4(struct MapObject *);
void sub_8098044(u8);
void UnfreezeMapObjects(void);
void FreezeMapObjectsExceptOne(u8 mapObjectId);
void sub_8097B78(u8, u8);
#endif
#endif //GUARD_FIELD_MAP_OBJ_HELPERS_H

View File

@@ -9,8 +9,31 @@ void PlayerGetDestCoords(s16 *, s16 *);
u8 player_get_direction_lower_nybble(void);
u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
void PlayerGoSpeed1(u8);
void PlayerGoSpeed2(u8);
void PlayerGoSpeed3(u8);
void PlayerGoSpeed4(u8);
void PlayerOnBikeCollide(u8);
void PlayerFaceDirection(u8 a);
void PlayerTurnInPlace(u8 a);
void PlayerJumpLedge(u8 a);
void PlayerIdleWheelie(u8 a);
void PlayerStartWheelie(u8 a);
void PlayerEndWheelie(u8 a);
void PlayerStandingHoppingWheelie(u8 a);
void PlayerMovingHoppingWheelie(u8 a);
void PlayerLedgeHoppingWheelie(u8 a);
void PlayerAcroTurnJump(u8 a);
void PlayerSetAnimId(u8 a, u8 b);
bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction);
void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction);
u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e);
u8 PlayerGetZCoord(void);
void SetPlayerAvatarTransitionFlags(u16 a);
void sub_808BCE8(void);
void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
#endif //GUARD_FIELD_PLAYER_AVATAR_H

19
include/field_poison.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef GUARD_FIELD_POISON_H
#define GUARD_FIELD_POISON_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
enum {
FLDPSN_NONE,
FLDPSN_PSN,
FLDPSN_FNT
};
void sub_80F972C(void);
unsigned int overworld_poison(void);
#endif //GUARD_FIELD_POISON_H

View File

@@ -10,5 +10,6 @@ void pal_fill_black(void);
bool8 sub_80ABDFC(void);
void sub_80AF168(void);
void sub_80AF2B4(u8 taskId);
void UpdateWeatherPerDay(u16 days);
#endif //GUARD_FIELD_SCREEN_H

View File

@@ -2,5 +2,7 @@
#define GUARD_FIELD_SPECIALS_H
u8 GetLeadMonIndex(void);
u8 sub_813B260(void);
u16 get_unknown_box_id(void);
#endif // GUARD_FIELD_SPECIALS_H

View File

@@ -1,12 +1,177 @@
#ifndef GUARD_WEATHER_H
#define GUARD_WEATHER_H
void fade_screen(u8, s8);
#include "sprite.h"
// Controls how the weather should be changing the screen palettes.
enum {
WEATHER_PAL_STATE_CHANGING_WEATHER,
WEATHER_PAL_STATE_SCREEN_FADING_IN,
WEATHER_PAL_STATE_SCREEN_FADING_OUT,
WEATHER_PAL_STATE_IDLE,
};
struct Weather
{
union
{
struct
{
struct Sprite *rainSprites[24];
struct Sprite *snowflakeSprites[101];
struct Sprite *cloudSprites[3];
} s1;
struct
{
u8 filler0[0xA0];
struct Sprite *fog1Sprites[20];
struct Sprite *ashSprites[20];
struct Sprite *fog2Sprites[20];
struct Sprite *sandstormSprites1[20];
struct Sprite *sandstormSprites2[5];
} s2;
} sprites;
u8 gammaShifts[19][32];
u8 altGammaShifts[19][32];
s8 gammaIndex;
s8 gammaTargetIndex;
u8 gammaStepDelay;
u8 gammaStepFrameCounter;
u16 fadeDestColor;
u8 palProcessingState;
u8 fadeScreenCounter;
bool8 readyForInit;
u8 taskId;
u8 unknown_6CA;
u8 unknown_6CB;
u16 initStep;
u16 finishStep;
u8 currWeather;
u8 nextWeather;
u8 weatherGfxLoaded;
bool8 weatherChangeComplete;
u8 weatherPicSpritePalIndex;
u8 altGammaSpritePalIndex;
u16 unknown_6D6;
u8 unknown_6D8;
u8 unknown_6D9;
u8 rainSpriteCount;
u8 unknown_6DB;
u8 unknown_6DC;
u8 rainStrength;
/*0x6DE*/ u8 cloudSpritesCreated;
u8 filler_6DF[1];
u16 unknown_6E0;
u16 unknown_6E2;
u8 snowflakeSpriteCount;
u8 unknown_6E5;
u16 unknown_6E6;
u16 thunderCounter;
u8 unknown_6EA;
u8 unknown_6EB;
u8 unknown_6EC;
u8 unknown_6ED;
u16 fog1ScrollPosX;
u16 unknown_6F0;
u16 unknown_6F2;
u8 lightenedFogSpritePals[6];
u8 lightenedFogSpritePalsCount;
u8 fog1SpritesCreated;
u16 unknown_6FC;
u16 unknown_6FE;
u8 ashSpritesCreated;
u8 filler_701[3];
u32 unknown_704;
u32 unknown_708;
u8 filler_70C[2];
u16 unknown_70E;
u16 unknown_710;
u16 unknown_712;
u16 unknown_714;
u8 sandstormSprites1Created;
u8 sandstormSprites2Created;
u16 unknown_718;
u16 unknown_71A;
u16 unknown_71C;
u16 unknown_71E;
u16 unknown_720;
u16 unknown_722;
u8 fog2SpritesCreated;
u8 filler_725[1];
u16 unknown_726;
u16 unknown_728;
u16 unknown_72A;
u16 unknown_72C;
u8 unknown_72E;
u8 filler_72F;
u16 currBlendEVA;
u16 currBlendEVB;
u16 targetBlendEVA;
u16 targetBlendEVB;
u8 blendUpdateCounter;
u8 blendFrameCounter;
u8 blendDelay;
u8 filler_73B[0x3C-0x3B];
s16 unknown_73C;
s16 unknown_73E;
s16 unknown_740;
s16 unknown_742;
u8 filler_744[0xD-4];
s8 loadDroughtPalsIndex;
u8 loadDroughtPalsOffset;
};
void StartWeather(void);
void ChangeWeather(u8 weather);
void sub_807C988(u8 effect);
void sub_807C9B4(u8 effect);
void Task_WeatherInit(u8);
void Task_WeatherMain(u8);
void sub_807CAE8(void);
void nullsub_38(void);
void SetWeatherScreenFadeOut(void);
enum
{
FADE_FROM_BLACK,
FADE_TO_BLACK,
FADE_FROM_WHITE,
FADE_TO_WHITE,
};
void FadeScreen(u8, s8);
// ...
void UpdateSpritePaletteWithWeather(u8 tag);
void ApplyWeatherGammaShiftToPal(u8);
// ...
void Weather_SetBlendCoeffs(u8, u8);
// ...
void PlayRainSoundEffect(void);
// ...
void SetSav1Weather(u32);
u8 GetSav1Weather(void);
void sub_80AEDBC(void);
void SetSav1WeatherFromCurrMapHeader(void);
// ...
void DoCurrentWeather(void);
void sub_8080750();
bool8 IsWeatherNotFadingIn(void);
bool8 IsWeatherChangeComplete(void);
void SetWeather(u32);
void UpdateWeatherPerDay(u16);
void PreservePaletteInWeather(u8 index);
void ResetPreservedPalettesInWeather(void);
extern void ResetDroughtWeatherPaletteLoading(void);
void ResetDroughtWeatherPaletteLoading(void);
bool8 LoadDroughtWeatherPalettes(void);
u8 GetCurrentWeather(void);
void LoadCustomWeatherSpritePalette(const u16 *palette);
extern struct Weather gWeather;
extern struct Weather *const gWeatherPtr;
#endif // GUARD_WEATHER_H

View File

@@ -1,111 +0,0 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
#define TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
#define SYS_POKEMON_GET CODE_FLAGS + 0
#define SYS_POKEDEX_GET CODE_FLAGS + 1
#define SYS_POKENAV_GET CODE_FLAGS + 2
// third one appears unused
#define SYS_GAME_CLEAR CODE_FLAGS + 4
#define SYS_CHAT_USED CODE_FLAGS + 5
#define SYS_HIPSTER_MEET CODE_FLAGS + 6
// badges
#define BADGE01_GET CODE_FLAGS + 7
#define BADGE02_GET CODE_FLAGS + 8
#define BADGE03_GET CODE_FLAGS + 9
#define BADGE04_GET CODE_FLAGS + 0xA
#define BADGE05_GET CODE_FLAGS + 0xB
#define BADGE06_GET CODE_FLAGS + 0xC
#define BADGE07_GET CODE_FLAGS + 0xD
#define BADGE08_GET CODE_FLAGS + 0xE
// cities and towns
#define FLAG_VISITED_LITTLEROOT_TOWN CODE_FLAGS + 0xF
#define FLAG_VISITED_OLDALE_TOWN CODE_FLAGS + 0x10
#define FLAG_VISITED_DEWFORD_TOWN CODE_FLAGS + 0x11
#define FLAG_VISITED_LAVARIDGE_TOWN CODE_FLAGS + 0x12
#define FLAG_VISITED_FALLARBOR_TOWN CODE_FLAGS + 0x13
#define FLAG_VISITED_VERDANTURF_TOWN CODE_FLAGS + 0x14
#define FLAG_VISITED_PACIFIDLOG_TOWN CODE_FLAGS + 0x15
#define FLAG_VISITED_PETALBURG_CITY CODE_FLAGS + 0x16
#define FLAG_VISITED_SLATEPORT_CITY CODE_FLAGS + 0x17
#define FLAG_VISITED_MAUVILLE_CITY CODE_FLAGS + 0x18
#define FLAG_VISITED_RUSTBORO_CITY CODE_FLAGS + 0x19
#define FLAG_VISITED_FORTREE_CITY CODE_FLAGS + 0x1A
#define FLAG_VISITED_LILYCOVE_CITY CODE_FLAGS + 0x1B
#define FLAG_VISITED_MOSSDEEP_CITY CODE_FLAGS + 0x1C
#define FLAG_VISITED_SOOTOPOLIS_CITY CODE_FLAGS + 0x1D
#define FLAG_VISITED_EVER_GRANDE_CITY CODE_FLAGS + 0x1E
#define SYS_UNKNOWN_880 CODE_FLAGS + 0x20
#define SYS_USE_FLASH CODE_FLAGS + 0x28
#define SYS_USE_STRENGTH CODE_FLAGS + 0x29
#define SYS_WEATHER_CTRL CODE_FLAGS + 0x2A
#define SYS_CYCLING_ROAD CODE_FLAGS + 0x2B
#define SYS_SAFARI_MODE CODE_FLAGS + 0x2C
#define SYS_CRUISE_MODE CODE_FLAGS + 0x2D
#define SYS_TV_HOME CODE_FLAGS + 0x30
#define SYS_TV_WATCH CODE_FLAGS + 0x31
#define SYS_TV_START CODE_FLAGS + 0x32
#define SYS_POPWORD_INPUT CODE_FLAGS + 0x33
#define SYS_MIX_RECORD CODE_FLAGS + 0x34
#define SYS_CLOCK_SET CODE_FLAGS + 0x35
#define SYS_NATIONAL_DEX CODE_FLAGS + 0x36
#define SYS_CAVE_SHIP CODE_FLAGS + 0x37
#define SYS_CAVE_WONDER CODE_FLAGS + 0x38
#define SYS_CAVE_BATTLE CODE_FLAGS + 0x39
#define SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
#define SYS_RIBBON_GET CODE_FLAGS + 0x3B
#define SYS_PC_LANETTE CODE_FLAGS + 0x4B
#define SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
#define SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
#define SYS_ENC_DOWN_ITEM CODE_FLAGS + 0x4E
#define SYS_BRAILLE_DIG CODE_FLAGS + 0x4F
#define SYS_BRAILLE_STRENGTH CODE_FLAGS + 0x50
#define SYS_BRAILLE_WAIT CODE_FLAGS + 0x51
#define SYS_BRAILLE_FLY CODE_FLAGS + 0x52
#define SYS_HAS_EON_TICKET CODE_FLAGS + 0x53
#define SYS_POKEMON_LEAGUE_FLY CODE_FLAGS + 0x54
#define SYS_TV_LATI CODE_FLAGS + 0x5D
#define SYS_SHOAL_ITEM CODE_FLAGS + 0x5F
#define SYS_B_DASH CODE_FLAGS + 0x60 // got Running Shoes
#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
#define SYS_DOME_SILVER CODE_FLAGS + 0x66
#define SYS_DOME_GOLD CODE_FLAGS + 0x67
#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
#define SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
// SPECIAL FLAGS (unknown purpose)
#define SPECIAL_FLAG_1 0x4001
#endif // GUARD_FLAGS_H

View File

@@ -11,5 +11,6 @@ void sub_80FA5E4(s16 id, s16 x, s16 y);
void sub_80FA794(s16 x, s16 y);
void sub_80FB00C(void);
void sub_80FB074(void);
void overworld_poison_effect(void);
#endif //GUARD_FLDEFF_80F9BCC_H

View File

@@ -0,0 +1,7 @@
#ifndef GUARD_FLDEFF_TELEPORT_H
#define GUARD_FLDEFF_TELEPORT_H
void hm_teleport_run_dp02scr(void);
void sub_817C94C(void);
#endif // GUARD_FLDEFF_TELEPORT_H

View File

@@ -39,6 +39,9 @@
#define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n)))
#define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n)))
#define BG_TILE_H_FLIP(n) (0x400 + (n))
#define BG_TILE_V_FLIP(n) (0x800 + (n))
// text-mode BG
#define OBJ_VRAM0 (VRAM + 0x10000)
#define OBJ_VRAM0_SIZE 0x8000
@@ -60,11 +63,6 @@
#define TOTAL_OBJ_TILE_COUNT 1024
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
#define WIN_RANGE(a, b) (((a) << 8) | (b))
#endif // GUARD_GBA_DEFINES

View File

@@ -7,6 +7,6 @@
#include "gba/multiboot.h"
#include "gba/syscall.h"
#include "gba/macro.h"
#include "gba/libc.h"
#include "gba/isagbprint.h"
#endif // GUARD_GBA_GBA_H

View File

@@ -501,12 +501,12 @@
// I/O register fields
// DISPCNT
#define DISPCNT_MODE_0 0x0000
#define DISPCNT_MODE_1 0x0001
#define DISPCNT_MODE_2 0x0002
#define DISPCNT_MODE_3 0x0003
#define DISPCNT_MODE_4 0x0004
#define DISPCNT_MODE_5 0x0005
#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -527,7 +527,46 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
// BGCNT
#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
#define BGCNT_MOSAIC 0x0040
#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
#define BGCNT_TXT512x256 0x4000
#define BGCNT_TXT256x512 0x8000
#define BGCNT_TXT512x512 0xC000
#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
#define BGCNT_AFF256x256 0x4000
#define BGCNT_AFF512x512 0x8000
#define BGCNT_AFF1024x1024 0xC000
// BLDCNT
// Bits 0-5 select layers for the 1st target
#define BLDCNT_TGT1_BG0 (1 << 0)
#define BLDCNT_TGT1_BG1 (1 << 1)
#define BLDCNT_TGT1_BG2 (1 << 2)
#define BLDCNT_TGT1_BG3 (1 << 3)
#define BLDCNT_TGT1_OBJ (1 << 4)
#define BLDCNT_TGT1_BD (1 << 5)
// Bits 6-7 select the special effect
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY)
#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY)
// Bits 8-13 select layers for the 2nd target
#define BLDCNT_TGT2_BG0 (1 << 8)
#define BLDCNT_TGT2_BG1 (1 << 9)
#define BLDCNT_TGT2_BG2 (1 << 10)
#define BLDCNT_TGT2_BG3 (1 << 11)
#define BLDCNT_TGT2_OBJ (1 << 12)
#define BLDCNT_TGT2_BD (1 << 13)
// BLDALPHA
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
@@ -627,8 +666,8 @@
#define KEY_INTR_ENABLE 0x0400
#define KEY_OR_INTR 0x0000
#define KEY_AND_INTR 0x8000
#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
#define JOY_EXCL_DPAD 0x030F
// interrupt flags
#define INTR_FLAG_VBLANK (1 << 0)

50
include/gba/isagbprint.h Normal file
View File

@@ -0,0 +1,50 @@
#ifndef GUARD_GBA_ISAGBPRINT_H
#define GUARD_GBA_ISAGBPRINT_H
#ifdef NDEBUG
#define AGBPrintInit()
#define AGBPutc(cChr)
#define AGBPrint(pBuf)
#define AGBPrintf(pBuf, ...)
#define AGBPrintFlush1Block()
#define AGBPrintFlush()
#define AGBAssert(pFile, nLine, pExpression, nStopProgram)
#else
void AGBPrintInit(void);
void AGBPutc(const char cChr);
void AGBPrint(const char *pBuf);
void AGBPrintf(const char *pBuf, ...);
void AGBPrintFlush1Block(void);
void AGBPrintFlush(void);
void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram);
#endif
#undef AGB_ASSERT
#ifdef NDEBUG
#define AGB_ASSERT(exp)
#else
#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1);
#endif
#undef AGB_WARNING
#ifdef NDEBUG
#define AGB_WARNING(exp)
#else
#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0);
#endif
// for matching purposes
#ifdef NDEBUG
#define AGB_ASSERT_EX(exp, file, line)
#else
#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1);
#endif
#ifdef NDEBUG
#define AGB_WARNING_EX(exp, file, line)
#else
#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0);
#endif
#endif // GUARD_GBA_ISAGBPRINT_H

View File

@@ -1,10 +0,0 @@
#ifndef GUARD_LIBC_H
#define GUARD_LIBC_H
void *memset(void *dst, int val, size_t size);
void *memcpy(void *dst, const void *src, size_t size);
int strcmp(const char *s1, const char *s2);
char *strcpy(char *dst0, const char *src0);
#define abs(x) ((x) >= 0 ? (x) : -(x))
#endif //GUARD_LIBC_H

View File

@@ -406,7 +406,7 @@ void m4aSoundVSyncOff(void);
void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch);
void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
void ClearModM(struct MusicPlayerTrack *track);
void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);

View File

@@ -78,6 +78,102 @@
#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16)
#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32)
#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
{ \
const void *_src = src; \
void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
DmaCopy##bit(dmaNum, _src, _dest, (block)); \
_src += (block); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
DmaCopy##bit(dmaNum, _src, _dest, _size); \
break; \
} \
} \
}
#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
DmaFill##bit(dmaNum, value, _dest, (block)); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
DmaFill##bit(dmaNum, value, _dest, _size); \
break; \
} \
} \
}
#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16)
#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32)
#define DmaClearLarge(dmaNum, dest, size, block, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
DmaFill##bit(dmaNum, 0, _dest, (block)); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
DmaFill##bit(dmaNum, 0, _dest, _size); \
break; \
} \
} \
}
#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16)
#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32)
#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
{ \
const void *_src = src; \
void *_dest = dest; \
u32 _size = size; \
DmaCopy##bit(dmaNum, _src, _dest, _size); \
}
#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
DmaFill##bit(dmaNum, value, _dest, _size); \
}
#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
#define DmaClearDefvars(dmaNum, dest, size, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
DmaClear##bit(dmaNum, _dest, _size); \
}
#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
#define DmaStop(dmaNum) \
{ \
vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \

View File

@@ -49,7 +49,7 @@ struct OamData
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
u32 size:2;
/*0x04*/ u16 tileNum:10; // 0x33F
/*0x04*/ u16 tileNum:10; // 0x3FF
u16 priority:2; // 0x400, 0x800 -> 0xC00
u16 paletteNum:4;
/*0x06*/ u16 affineParam;

Some files were not shown because too many files have changed in this diff Show More