Merge remote-tracking branch 'refs/remotes/pret/master'
This commit is contained in:
81
include/abilities.h
Normal file
81
include/abilities.h
Normal file
@@ -0,0 +1,81 @@
|
||||
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
|
||||
};
|
||||
24
include/battle.h
Normal file
24
include/battle.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#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_40 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 AI_ACTION_UNK1 0x0001
|
||||
#define AI_ACTION_UNK2 0x0002
|
||||
#define AI_ACTION_UNK3 0x0004
|
||||
#define AI_ACTION_UNK4 0x0008
|
||||
#define AI_ACTION_UNK5 0x0010
|
||||
#define AI_ACTION_UNK6 0x0020
|
||||
#define AI_ACTION_UNK7 0x0040
|
||||
#define AI_ACTION_UNK8 0x0080
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "gba/defines.h"
|
||||
#include "gba/io_reg.h"
|
||||
#include "gba/types.h"
|
||||
#include "gba/multiboot.h"
|
||||
#include "gba/syscall.h"
|
||||
#include "gba/macro.h"
|
||||
|
||||
|
||||
@@ -577,6 +577,8 @@
|
||||
#define TIMER_ENABLE 0x80
|
||||
|
||||
// serial
|
||||
#define SIO_ID 0x0030 // Communication ID
|
||||
|
||||
#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode
|
||||
#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode
|
||||
#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode
|
||||
@@ -589,6 +591,7 @@
|
||||
|
||||
#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal
|
||||
#define SIO_MULTI_SD 0x0008 // SD terminal
|
||||
#define SIO_MULTI_BUSY 0x0080
|
||||
|
||||
#define SIO_ERROR 0x0040 // Detect error
|
||||
#define SIO_START 0x0080 // Start transfer
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
CPU_FAST_SET_SRC_FIXED | ((size)/(32/8) & 0x1FFFFF)); \
|
||||
}
|
||||
|
||||
#define CpuFastFill16(value, dest, size) CpuFastFill(((value) << 16) | (value), (dest), (size))
|
||||
|
||||
#define CpuFastCopy(src, dest, size) CpuFastSet(src, dest, ((size)/(32/8) & 0x1FFFFF))
|
||||
|
||||
#define DmaSet(dmaNum, src, dest, control) \
|
||||
|
||||
55
include/gba/multiboot.h
Normal file
55
include/gba/multiboot.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#ifndef GUARD_GBA_MULTIBOOT_H
|
||||
#define GUARD_GBA_MULTIBOOT_H
|
||||
|
||||
#define MULTIBOOT_NCHILD 3 // Maximum number of slaves
|
||||
#define MULTIBOOT_HEADER_SIZE 0xc0 // Header size
|
||||
#define MULTIBOOT_SEND_SIZE_MIN 0x100 // Minimum transmission size
|
||||
#define MULTIBOOT_SEND_SIZE_MAX 0x40000 // Maximum transmission size
|
||||
|
||||
struct MultiBootParam
|
||||
{
|
||||
u32 system_work[5];
|
||||
u8 handshake_data;
|
||||
u8 padding;
|
||||
u16 handshake_timeout;
|
||||
u8 probe_count;
|
||||
u8 client_data[MULTIBOOT_NCHILD];
|
||||
u8 palette_data;
|
||||
u8 response_bit;
|
||||
u8 client_bit;
|
||||
u8 reserved1;
|
||||
u8 *boot_srcp;
|
||||
u8 *boot_endp;
|
||||
u8 *masterp;
|
||||
u8 *reserved2[MULTIBOOT_NCHILD];
|
||||
u32 system_work2[4];
|
||||
u8 sendflag;
|
||||
u8 probe_target_bit;
|
||||
u8 check_wait;
|
||||
u8 server_type;
|
||||
};
|
||||
|
||||
#define MULTIBOOT_ERROR_04 0x04
|
||||
#define MULTIBOOT_ERROR_08 0x08
|
||||
#define MULTIBOOT_ERROR_0c 0x0c
|
||||
#define MULTIBOOT_ERROR_40 0x40
|
||||
#define MULTIBOOT_ERROR_44 0x44
|
||||
#define MULTIBOOT_ERROR_48 0x48
|
||||
#define MULTIBOOT_ERROR_4c 0x4c
|
||||
#define MULTIBOOT_ERROR_80 0x80
|
||||
#define MULTIBOOT_ERROR_84 0x84
|
||||
#define MULTIBOOT_ERROR_88 0x88
|
||||
#define MULTIBOOT_ERROR_8c 0x8c
|
||||
#define MULTIBOOT_ERROR_NO_PROBE_TARGET 0x50
|
||||
#define MULTIBOOT_ERROR_NO_DLREADY 0x60
|
||||
#define MULTIBOOT_ERROR_BOOT_FAILURE 0x70
|
||||
#define MULTIBOOT_ERROR_HANDSHAKE_FAILURE 0x71
|
||||
|
||||
#define MULTIBOOT_CONNECTION_CHECK_WAIT 15
|
||||
|
||||
#define MULTIBOOT_SERVER_TYPE_NORMAL 0
|
||||
#define MULTIBOOT_SERVER_TYPE_QUICK 1
|
||||
|
||||
#define MULTIBOOT_HANDSHAKE_TIMEOUT 400
|
||||
|
||||
#endif // GUARD_GBA_MULTIBOOT_H
|
||||
@@ -17,6 +17,10 @@ void RegisterRamReset(u32 resetFlags);
|
||||
|
||||
void VBlankIntrWait(void);
|
||||
|
||||
u16 Sqrt(u32 num);
|
||||
|
||||
u16 ArcTan2(s16 x, s16 y);
|
||||
|
||||
#define CPU_SET_SRC_FIXED 0x01000000
|
||||
#define CPU_SET_16BIT 0x00000000
|
||||
#define CPU_SET_32BIT 0x04000000
|
||||
@@ -27,6 +31,18 @@ void CpuSet(const void *src, void *dest, u32 control);
|
||||
|
||||
void CpuFastSet(const void *src, void *dest, u32 control);
|
||||
|
||||
void BgAffineSet(struct BgAffineSrcData *src, struct BgAffineDstData *dest, s32 count);
|
||||
|
||||
void ObjAffineSet(struct ObjAffineSrcData *src, void *dest, s32 count, s32 offset);
|
||||
|
||||
void LZ77UnCompWram(const void *src, void *dest);
|
||||
|
||||
void LZ77UnCompVram(const void *src, void *dest);
|
||||
|
||||
void RLUnCompWram(const void *src, void *dest);
|
||||
|
||||
void RLUnCompVram(const void *src, void *dest);
|
||||
|
||||
int MultiBoot(struct MultiBootParam *mp);
|
||||
|
||||
#endif // GUARD_GBA_SYSCALL_H
|
||||
|
||||
@@ -74,6 +74,27 @@ struct OamData
|
||||
#define ST_OAM_H_RECTANGLE 1
|
||||
#define ST_OAM_V_RECTANGLE 2
|
||||
|
||||
struct BgAffineSrcData
|
||||
{
|
||||
s32 texX;
|
||||
s32 texY;
|
||||
s16 scrX;
|
||||
s16 scrY;
|
||||
s16 sx;
|
||||
s16 sy;
|
||||
u16 alpha;
|
||||
};
|
||||
|
||||
struct BgAffineDstData
|
||||
{
|
||||
s16 pa;
|
||||
s16 pb;
|
||||
s16 pc;
|
||||
s16 pd;
|
||||
s32 dx;
|
||||
s32 dy;
|
||||
};
|
||||
|
||||
struct ObjAffineSrcData
|
||||
{
|
||||
s16 xScale;
|
||||
|
||||
@@ -3,4 +3,97 @@
|
||||
|
||||
#include "gba/gba.h"
|
||||
|
||||
// Prevent cross-jump optimization.
|
||||
#define BLOCK_CROSS_JUMP asm("");
|
||||
|
||||
// to help in decompiling
|
||||
#define asm_comment(x) asm volatile("@ -- " x " -- ")
|
||||
|
||||
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
||||
#define POKEMON_NAME_LENGTH 10
|
||||
#define OT_NAME_LENGTH 7
|
||||
|
||||
extern u8 gStringVar1[];
|
||||
extern u8 gStringVar2[];
|
||||
extern u8 gStringVar3[];
|
||||
extern u8 gStringVar4[];
|
||||
|
||||
enum
|
||||
{
|
||||
VERSION_SAPPHIRE = 1,
|
||||
VERSION_RUBY = 2,
|
||||
VERSION_EMERALD = 3,
|
||||
};
|
||||
|
||||
enum LanguageId {
|
||||
LANGUAGE_JAPANESE = 1,
|
||||
LANGUAGE_ENGLISH = 2,
|
||||
LANGUAGE_GERMAN = 5,
|
||||
};
|
||||
|
||||
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
|
||||
|
||||
enum
|
||||
{
|
||||
MALE,
|
||||
FEMALE
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
OPTIONS_BUTTON_MODE_NORMAL,
|
||||
OPTIONS_BUTTON_MODE_LR,
|
||||
OPTIONS_BUTTON_MODE_L_EQUALS_A
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
OPTIONS_TEXT_SPEED_SLOW,
|
||||
OPTIONS_TEXT_SPEED_MID,
|
||||
OPTIONS_TEXT_SPEED_FAST
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
OPTIONS_SOUND_MONO,
|
||||
OPTIONS_SOUND_STEREO
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
OPTIONS_BATTLE_STYLE_SHIFT,
|
||||
OPTIONS_BATTLE_STYLE_SET
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
BAG_ITEMS = 1,
|
||||
BAG_POKEBALLS,
|
||||
BAG_TMsHMs,
|
||||
BAG_BERRIES,
|
||||
BAG_KEYITEMS
|
||||
};
|
||||
|
||||
struct SaveBlock2
|
||||
{
|
||||
/*0x00*/ u8 playerName[8];
|
||||
/*0x08*/ u8 playerGender; // MALE, FEMALE
|
||||
/*0x09*/ u8 specialSaveWarp;
|
||||
/*0x0A*/ u8 playerTrainerId[4];
|
||||
/*0x0E*/ u16 playTimeHours;
|
||||
/*0x10*/ u8 playTimeMinutes;
|
||||
/*0x11*/ u8 playTimeSeconds;
|
||||
/*0x12*/ u8 playTimeVBlanks;
|
||||
/*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]
|
||||
/*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
|
||||
u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
|
||||
u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
|
||||
u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
|
||||
u16 optionsBattleSceneOff:1; // whether battle animations are disabled
|
||||
u16 regionMapZoom:1; // whether the map is zoomed in
|
||||
};
|
||||
|
||||
extern struct SaveBlock2 *gSaveBlock2Ptr;
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
||||
63
include/main.h
Normal file
63
include/main.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#ifndef GUARD_MAIN_H
|
||||
#define GUARD_MAIN_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
typedef void (*MainCallback)(void);
|
||||
typedef void (*IntrCallback)(void);
|
||||
typedef void (*IntrFunc)(void);
|
||||
|
||||
struct Main
|
||||
{
|
||||
/*0x000*/ MainCallback callback1;
|
||||
/*0x004*/ MainCallback callback2;
|
||||
|
||||
/*0x008*/ MainCallback savedCallback;
|
||||
|
||||
/*0x00C*/ IntrCallback vblankCallback;
|
||||
/*0x010*/ IntrCallback hblankCallback;
|
||||
/*0x014*/ IntrCallback vcountCallback;
|
||||
/*0x018*/ IntrCallback serialCallback;
|
||||
|
||||
/*0x01C*/ vu16 intrCheck;
|
||||
|
||||
/*0x020*/ u32 vblankCounter1;
|
||||
/*0x024*/ u32 vblankCounter2;
|
||||
|
||||
/*0x028*/ u16 heldKeysRaw; // held keys without L=A remapping
|
||||
/*0x02A*/ u16 newKeysRaw; // newly pressed keys without L=A remapping
|
||||
/*0x02C*/ u16 heldKeys; // held keys with L=A remapping
|
||||
/*0x02E*/ u16 newKeys; // newly pressed keys with L=A remapping
|
||||
/*0x030*/ u16 newAndRepeatedKeys; // newly pressed keys plus key repeat
|
||||
/*0x032*/ u16 keyRepeatCounter; // counts down to 0, triggering key repeat
|
||||
/*0x034*/ bool16 watchedKeysPressed; // whether one of the watched keys was pressed
|
||||
/*0x036*/ u16 watchedKeysMask; // bit mask for watched keys
|
||||
|
||||
/*0x038*/ struct OamData oamBuffer[128];
|
||||
|
||||
/*0x438*/ u8 state;
|
||||
|
||||
/*0x439*/ u8 oamLoadDisabled:1;
|
||||
/*0x439*/ u8 inBattle:1;
|
||||
};
|
||||
|
||||
extern u8 gUnknown_3001764;
|
||||
extern struct Main gMain;
|
||||
extern bool8 gSoftResetDisabled;
|
||||
extern bool8 gLinkVSyncDisabled;
|
||||
|
||||
extern const u8 gGameVersion;
|
||||
extern const u8 gGameLanguage;
|
||||
|
||||
void AgbMain(void);
|
||||
void SetMainCallback2(MainCallback callback);
|
||||
void InitKeys(void);
|
||||
void SetVBlankCallback(IntrCallback callback);
|
||||
void SetHBlankCallback(IntrCallback callback);
|
||||
void SetVCountCallback(IntrCallback callback);
|
||||
void SetSerialCallback(IntrCallback callback);
|
||||
void InitFlashTimer(void);
|
||||
void DoSoftReset(void);
|
||||
void ClearPokemonCrySongs(void);
|
||||
|
||||
#endif // GUARD_MAIN_H
|
||||
21
include/multiboot.h
Normal file
21
include/multiboot.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef GUARD_MULTIBOOT_H
|
||||
#define GUARD_MULTIBOOT_H
|
||||
|
||||
#define MULTIBOOT_MASTER_INFO 0x62
|
||||
#define MULTIBOOT_CLIENT_INFO 0x72
|
||||
#define MULTIBOOT_MASTER_START_PROBE 0x61
|
||||
#define MULTIBOOT_MASTER_REQUEST_DLREADY 0x63
|
||||
#define MULTIBOOT_CLIENT_DLREADY 0x73
|
||||
#define MULTIBOOT_MASTER_START_DL 0x64
|
||||
#define MULTIBOOT_MASTER_REQUEST_CRC 0x65
|
||||
#define MULTIBOOT_CLIENT_CALC_CRC 0x74
|
||||
#define MULTIBOOT_CLIENT_CRCREADY 0x75
|
||||
#define MULTIBOOT_MASTER_VERIFY_CRC 0x66
|
||||
|
||||
void MultiBootInit(struct MultiBootParam *mp);
|
||||
int MultiBootMain(struct MultiBootParam *mp);
|
||||
void MultiBootStartProbe(struct MultiBootParam *mp);
|
||||
void MultiBootStartMaster(struct MultiBootParam *mp, u8 *srcp, int length, u8 palette_color, s8 palette_speed);
|
||||
int MultiBootCheckComplete(struct MultiBootParam *mp);
|
||||
|
||||
#endif // GUARD_MULTIBOOT_H
|
||||
311
include/pokemon.h
Normal file
311
include/pokemon.h
Normal file
@@ -0,0 +1,311 @@
|
||||
#define MON_DATA_PERSONALITY 0
|
||||
#define MON_DATA_OT_ID 1
|
||||
#define MON_DATA_NICKNAME 2
|
||||
#define MON_DATA_LANGUAGE 3
|
||||
#define MON_DATA_SANITY_BIT1 4
|
||||
#define MON_DATA_SANITY_BIT2 5
|
||||
#define MON_DATA_SANITY_BIT3 6
|
||||
#define MON_DATA_OT_NAME 7
|
||||
#define MON_DATA_MARKINGS 8
|
||||
#define MON_DATA_CHECKSUM 9
|
||||
#define MON_DATA_10 10
|
||||
#define MON_DATA_SPECIES 11
|
||||
#define MON_DATA_HELD_ITEM 12
|
||||
#define MON_DATA_MOVE1 13
|
||||
#define MON_DATA_MOVE2 14
|
||||
#define MON_DATA_MOVE3 15
|
||||
#define MON_DATA_MOVE4 16
|
||||
#define MON_DATA_PP1 17
|
||||
#define MON_DATA_PP2 18
|
||||
#define MON_DATA_PP3 19
|
||||
#define MON_DATA_PP4 20
|
||||
#define MON_DATA_PP_BONUSES 21
|
||||
#define MON_DATA_COOL 22
|
||||
#define MON_DATA_BEAUTY 23
|
||||
#define MON_DATA_CUTE 24
|
||||
#define MON_DATA_EXP 25
|
||||
#define MON_DATA_HP_EV 26
|
||||
#define MON_DATA_ATK_EV 27
|
||||
#define MON_DATA_DEF_EV 28
|
||||
#define MON_DATA_SPD_EV 29
|
||||
#define MON_DATA_SPATK_EV 30
|
||||
#define MON_DATA_SPDEF_EV 31
|
||||
#define MON_DATA_FRIENDSHIP 32
|
||||
#define MON_DATA_SMART 33
|
||||
#define MON_DATA_POKERUS 34
|
||||
#define MON_DATA_MET_LOCATION 35
|
||||
#define MON_DATA_MET_LEVEL 36
|
||||
#define MON_DATA_MET_GAME 37
|
||||
#define MON_DATA_POKEBALL 38
|
||||
#define MON_DATA_HP_IV 39
|
||||
#define MON_DATA_ATK_IV 40
|
||||
#define MON_DATA_DEF_IV 41
|
||||
#define MON_DATA_SPD_IV 42
|
||||
#define MON_DATA_SPATK_IV 43
|
||||
#define MON_DATA_SPDEF_IV 44
|
||||
#define MON_DATA_IS_EGG 45
|
||||
#define MON_DATA_ALT_ABILITY 46
|
||||
#define MON_DATA_TOUGH 47
|
||||
#define MON_DATA_SHEEN 48
|
||||
#define MON_DATA_OT_GENDER 49
|
||||
#define MON_DATA_COOL_RIBBON 50
|
||||
#define MON_DATA_BEAUTY_RIBBON 51
|
||||
#define MON_DATA_CUTE_RIBBON 52
|
||||
#define MON_DATA_SMART_RIBBON 53
|
||||
#define MON_DATA_TOUGH_RIBBON 54
|
||||
#define MON_DATA_STATUS 55
|
||||
#define MON_DATA_LEVEL 56
|
||||
#define MON_DATA_HP 57
|
||||
#define MON_DATA_MAX_HP 58
|
||||
#define MON_DATA_ATK 59
|
||||
#define MON_DATA_DEF 60
|
||||
#define MON_DATA_SPD 61
|
||||
#define MON_DATA_SPATK 62
|
||||
#define MON_DATA_SPDEF 63
|
||||
#define MON_DATA_64 64
|
||||
#define MON_DATA_SPECIES2 65
|
||||
#define MON_DATA_IVS 66
|
||||
#define MON_DATA_CHAMPION_RIBBON 67
|
||||
#define MON_DATA_WINNING_RIBBON 68
|
||||
#define MON_DATA_VICTORY_RIBBON 69
|
||||
#define MON_DATA_ARTIST_RIBBON 70
|
||||
#define MON_DATA_EFFORT_RIBBON 71
|
||||
#define MON_DATA_GIFT_RIBBON_1 72
|
||||
#define MON_DATA_GIFT_RIBBON_2 73
|
||||
#define MON_DATA_GIFT_RIBBON_3 74
|
||||
#define MON_DATA_GIFT_RIBBON_4 75
|
||||
#define MON_DATA_GIFT_RIBBON_5 76
|
||||
#define MON_DATA_GIFT_RIBBON_6 77
|
||||
#define MON_DATA_GIFT_RIBBON_7 78
|
||||
#define MON_DATA_FATEFUL_ENCOUNTER 79
|
||||
#define MON_DATA_KNOWN_MOVES 80
|
||||
#define MON_DATA_RIBBON_COUNT 81
|
||||
#define MON_DATA_RIBBONS 82
|
||||
#define MON_DATA_83 83
|
||||
#define MON_DATA_ATK2 84
|
||||
#define MON_DATA_DEF2 85
|
||||
#define MON_DATA_SPD2 86
|
||||
#define MON_DATA_SPATK2 87
|
||||
#define MON_DATA_SPDEF2 88
|
||||
|
||||
#define MON_MALE 0x00
|
||||
#define MON_FEMALE 0xFE
|
||||
#define MON_GENDERLESS 0xFF
|
||||
|
||||
#define TYPE_NORMAL 0x00
|
||||
#define TYPE_FIGHTING 0x01
|
||||
#define TYPE_FLYING 0x02
|
||||
#define TYPE_POISON 0x03
|
||||
#define TYPE_GROUND 0x04
|
||||
#define TYPE_ROCK 0x05
|
||||
#define TYPE_BUG 0x06
|
||||
#define TYPE_GHOST 0x07
|
||||
#define TYPE_STEEL 0x08
|
||||
#define TYPE_MYSTERY 0x09
|
||||
#define TYPE_FIRE 0x0a
|
||||
#define TYPE_WATER 0x0b
|
||||
#define TYPE_GRASS 0x0c
|
||||
#define TYPE_ELECTRIC 0x0d
|
||||
#define TYPE_PSYCHIC 0x0e
|
||||
#define TYPE_ICE 0x0f
|
||||
#define TYPE_DRAGON 0x10
|
||||
#define TYPE_DARK 0x11
|
||||
|
||||
enum {
|
||||
NATURE_HARDY,
|
||||
NATURE_LONELY,
|
||||
NATURE_BRAVE,
|
||||
NATURE_ADAMANT,
|
||||
NATURE_NAUGHTY,
|
||||
NATURE_BOLD,
|
||||
NATURE_DOCILE,
|
||||
NATURE_RELAXED,
|
||||
NATURE_IMPISH,
|
||||
NATURE_LAX,
|
||||
NATURE_TIMID,
|
||||
NATURE_HASTY,
|
||||
NATURE_SERIOUS,
|
||||
NATURE_JOLLY,
|
||||
NATURE_NAIVE,
|
||||
NATURE_MODEST,
|
||||
NATURE_MILD,
|
||||
NATURE_QUIET,
|
||||
NATURE_BASHFUL,
|
||||
NATURE_RASH,
|
||||
NATURE_CALM,
|
||||
NATURE_GENTLE,
|
||||
NATURE_SASSY,
|
||||
NATURE_CAREFUL,
|
||||
NATURE_QUIRKY,
|
||||
};
|
||||
|
||||
struct PokemonSubstruct0
|
||||
{
|
||||
u16 species;
|
||||
u16 heldItem;
|
||||
u32 experience;
|
||||
u8 ppBonuses;
|
||||
u8 friendship;
|
||||
};
|
||||
|
||||
struct PokemonSubstruct1
|
||||
{
|
||||
u16 moves[4];
|
||||
u8 pp[4];
|
||||
};
|
||||
|
||||
struct PokemonSubstruct2
|
||||
{
|
||||
u8 hpEV;
|
||||
u8 attackEV;
|
||||
u8 defenseEV;
|
||||
u8 speedEV;
|
||||
u8 spAttackEV;
|
||||
u8 spDefenseEV;
|
||||
u8 cool;
|
||||
u8 beauty;
|
||||
u8 cute;
|
||||
u8 smart;
|
||||
u8 tough;
|
||||
u8 sheen;
|
||||
};
|
||||
|
||||
struct PokemonSubstruct3
|
||||
{
|
||||
/* 0x00 */ u8 pokerus;
|
||||
/* 0x01 */ u8 metLocation;
|
||||
|
||||
/* 0x02 */ u16 metLevel:7;
|
||||
/* 0x02 */ u16 metGame:4;
|
||||
/* 0x03 */ u16 pokeball:4;
|
||||
/* 0x03 */ u16 otGender:1;
|
||||
|
||||
/* 0x04 */ u32 hpIV:5;
|
||||
/* 0x04 */ u32 attackIV:5;
|
||||
/* 0x05 */ u32 defenseIV:5;
|
||||
/* 0x05 */ u32 speedIV:5;
|
||||
/* 0x05 */ u32 spAttackIV:5;
|
||||
/* 0x06 */ u32 spDefenseIV:5;
|
||||
/* 0x07 */ u32 isEgg:1;
|
||||
/* 0x07 */ u32 altAbility:1;
|
||||
|
||||
/* 0x08 */ u32 coolRibbon:3;
|
||||
/* 0x08 */ u32 beautyRibbon:3;
|
||||
/* 0x08 */ u32 cuteRibbon:3;
|
||||
/* 0x09 */ u32 smartRibbon:3;
|
||||
/* 0x09 */ u32 toughRibbon:3;
|
||||
/* 0x09 */ u32 championRibbon:1;
|
||||
/* 0x0A */ u32 winningRibbon:1;
|
||||
/* 0x0A */ u32 victoryRibbon:1;
|
||||
/* 0x0A */ u32 artistRibbon:1;
|
||||
/* 0x0A */ u32 effortRibbon:1;
|
||||
/* 0x0A */ u32 giftRibbon1:1;
|
||||
/* 0x0A */ u32 giftRibbon2:1;
|
||||
/* 0x0A */ u32 giftRibbon3:1;
|
||||
/* 0x0A */ u32 giftRibbon4:1;
|
||||
/* 0x0B */ u32 giftRibbon5:1;
|
||||
/* 0x0B */ u32 giftRibbon6:1;
|
||||
/* 0x0B */ u32 giftRibbon7:1;
|
||||
/* 0x0B */ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald
|
||||
};
|
||||
|
||||
union PokemonSubstruct
|
||||
{
|
||||
struct PokemonSubstruct0 type0;
|
||||
struct PokemonSubstruct1 type1;
|
||||
struct PokemonSubstruct2 type2;
|
||||
struct PokemonSubstruct3 type3;
|
||||
u16 raw[6];
|
||||
};
|
||||
|
||||
struct BoxPokemon
|
||||
{
|
||||
u32 personality;
|
||||
u32 otId;
|
||||
u8 nickname[POKEMON_NAME_LENGTH];
|
||||
u8 language;
|
||||
u8 isBadEgg:1;
|
||||
u8 hasSpecies:1;
|
||||
u8 isEgg:1;
|
||||
u8 unused:5;
|
||||
u8 otName[OT_NAME_LENGTH];
|
||||
u8 markings;
|
||||
u16 checksum;
|
||||
u16 unknown;
|
||||
|
||||
union
|
||||
{
|
||||
u32 raw[12];
|
||||
union PokemonSubstruct substructs[4];
|
||||
} secure;
|
||||
};
|
||||
|
||||
struct Pokemon
|
||||
{
|
||||
struct BoxPokemon box;
|
||||
u32 status;
|
||||
u8 level;
|
||||
u8 pokerus;
|
||||
u16 hp;
|
||||
u16 maxHP;
|
||||
u16 attack;
|
||||
u16 defense;
|
||||
u16 speed;
|
||||
u16 spAttack;
|
||||
u16 spDefense;
|
||||
};
|
||||
|
||||
extern struct Pokemon gPlayerParty[6];
|
||||
extern struct Pokemon gEnemyParty[6];
|
||||
|
||||
struct BaseStats
|
||||
{
|
||||
/* 0x00 */ u8 baseHP;
|
||||
/* 0x01 */ u8 baseAttack;
|
||||
/* 0x02 */ u8 baseDefense;
|
||||
/* 0x03 */ u8 baseSpeed;
|
||||
/* 0x04 */ u8 baseSpAttack;
|
||||
/* 0x05 */ u8 baseSpDefense;
|
||||
/* 0x06 */ u8 type1;
|
||||
/* 0x07 */ u8 type2;
|
||||
/* 0x08 */ u8 catchRate;
|
||||
/* 0x09 */ u8 expYield;
|
||||
/* 0x0A */ u16 evYield_HP:2;
|
||||
/* 0x0A */ u16 evYield_Attack:2;
|
||||
/* 0x0A */ u16 evYield_Defense:2;
|
||||
/* 0x0A */ u16 evYield_Speed:2;
|
||||
/* 0x0B */ u16 evYield_SpAttack:2;
|
||||
/* 0x0B */ u16 evYield_SpDefense:2;
|
||||
/* 0x0C */ u16 item1;
|
||||
/* 0x0E */ u16 item2;
|
||||
/* 0x10 */ u8 genderRatio;
|
||||
/* 0x11 */ u8 eggCycles;
|
||||
/* 0x12 */ u8 friendship;
|
||||
/* 0x13 */ u8 growthRate;
|
||||
/* 0x14 */ u8 eggGroup1;
|
||||
/* 0x15 */ u8 eggGroup2;
|
||||
/* 0x16 */ u8 ability1;
|
||||
/* 0x17 */ u8 ability2;
|
||||
/* 0x18 */ u8 safariZoneFleeRate;
|
||||
/* 0x19 */ u8 bodyColor;
|
||||
};
|
||||
|
||||
struct BattleMove
|
||||
{
|
||||
u8 effect;
|
||||
u8 power;
|
||||
u8 type;
|
||||
u8 accuracy;
|
||||
u8 pp;
|
||||
u8 secondaryEffectChance;
|
||||
u8 target;
|
||||
u8 priority;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
// These are full type signatures for GetMonData() and GetBoxMonData(),
|
||||
// but they are not used since some code erroneously omits the third arg.
|
||||
// u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data);
|
||||
u32 GetMonData();
|
||||
|
||||
u8 pokemon_species_get_gender_info(u16 species, u32 personality);
|
||||
18
include/rng.h
Normal file
18
include/rng.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef GUARD_RNG_H
|
||||
#define GUARD_RNG_H
|
||||
|
||||
extern u32 gRngValue;
|
||||
extern u32 gRng2Value;
|
||||
|
||||
//Returns a 16-bit pseudorandom number
|
||||
u16 Random(void);
|
||||
u16 Random2(void);
|
||||
|
||||
//Returns a 32-bit pseudorandom number
|
||||
#define Random32() (Random() | (Random() << 16))
|
||||
|
||||
//Sets the initial seed value of the pseudorandom number generator
|
||||
void SeedRng(u16 seed);
|
||||
void SeedRng2(u16 seed);
|
||||
|
||||
#endif // GUARD_RNG_H
|
||||
54
include/siirtc.h
Normal file
54
include/siirtc.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#ifndef GUARD_RTC_H
|
||||
#define GUARD_RTC_H
|
||||
|
||||
#include "gba/gba.h"
|
||||
|
||||
#define SIIRTCINFO_INTFE 0x01 // frequency interrupt enable
|
||||
#define SIIRTCINFO_INTME 0x02 // per-minute interrupt enable
|
||||
#define SIIRTCINFO_INTAE 0x04 // alarm interrupt enable
|
||||
#define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode
|
||||
#define SIIRTCINFO_POWER 0x80 // power on or power failure occurred
|
||||
|
||||
enum
|
||||
{
|
||||
MONTH_JAN = 1,
|
||||
MONTH_FEB,
|
||||
MONTH_MAR,
|
||||
MONTH_APR,
|
||||
MONTH_MAY,
|
||||
MONTH_JUN,
|
||||
MONTH_JUL,
|
||||
MONTH_AUG,
|
||||
MONTH_SEP,
|
||||
MONTH_OCT,
|
||||
MONTH_NOV,
|
||||
MONTH_DEC
|
||||
};
|
||||
|
||||
struct SiiRtcInfo
|
||||
{
|
||||
u8 year;
|
||||
u8 month;
|
||||
u8 day;
|
||||
u8 dayOfWeek;
|
||||
u8 hour;
|
||||
u8 minute;
|
||||
u8 second;
|
||||
u8 status;
|
||||
u8 alarmHour;
|
||||
u8 alarmMinute;
|
||||
};
|
||||
|
||||
void SiiRtcUnprotect();
|
||||
void SiiRtcProtect();
|
||||
u8 SiiRtcProbe();
|
||||
bool8 SiiRtcReset();
|
||||
bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcSetDateTime(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcGetTime(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcSetTime(struct SiiRtcInfo *rtc);
|
||||
bool8 SiiRtcSetAlarm(struct SiiRtcInfo *rtc);
|
||||
|
||||
#endif // GUARD_RTC_H
|
||||
445
include/species.h
Normal file
445
include/species.h
Normal file
@@ -0,0 +1,445 @@
|
||||
enum {
|
||||
SPECIES_NONE, // 0x000
|
||||
SPECIES_BULBASAUR, // 0x001
|
||||
SPECIES_IVYSAUR, // 0x002
|
||||
SPECIES_VENUSAUR, // 0x003
|
||||
SPECIES_CHARMANDER, // 0x004
|
||||
SPECIES_CHARMELEON, // 0x005
|
||||
SPECIES_CHARIZARD, // 0x006
|
||||
SPECIES_SQUIRTLE, // 0x007
|
||||
SPECIES_WARTORTLE, // 0x008
|
||||
SPECIES_BLASTOISE, // 0x009
|
||||
SPECIES_CATERPIE, // 0x00a
|
||||
SPECIES_METAPOD, // 0x00b
|
||||
SPECIES_BUTTERFREE, // 0x00c
|
||||
SPECIES_WEEDLE, // 0x00d
|
||||
SPECIES_KAKUNA, // 0x00e
|
||||
SPECIES_BEEDRILL, // 0x00f
|
||||
SPECIES_PIDGEY, // 0x010
|
||||
SPECIES_PIDGEOTTO, // 0x011
|
||||
SPECIES_PIDGEOT, // 0x012
|
||||
SPECIES_RATTATA, // 0x013
|
||||
SPECIES_RATICATE, // 0x014
|
||||
SPECIES_SPEAROW, // 0x015
|
||||
SPECIES_FEAROW, // 0x016
|
||||
SPECIES_EKANS, // 0x017
|
||||
SPECIES_ARBOK, // 0x018
|
||||
SPECIES_PIKACHU, // 0x019
|
||||
SPECIES_RAICHU, // 0x01a
|
||||
SPECIES_SANDSHREW, // 0x01b
|
||||
SPECIES_SANDSLASH, // 0x01c
|
||||
SPECIES_NIDORAN_F, // 0x01d
|
||||
SPECIES_NIDORINA, // 0x01e
|
||||
SPECIES_NIDOQUEEN, // 0x01f
|
||||
SPECIES_NIDORAN_M, // 0x020
|
||||
SPECIES_NIDORINO, // 0x021
|
||||
SPECIES_NIDOKING, // 0x022
|
||||
SPECIES_CLEFAIRY, // 0x023
|
||||
SPECIES_CLEFABLE, // 0x024
|
||||
SPECIES_VULPIX, // 0x025
|
||||
SPECIES_NINETALES, // 0x026
|
||||
SPECIES_JIGGLYPUFF, // 0x027
|
||||
SPECIES_WIGGLYTUFF, // 0x028
|
||||
SPECIES_ZUBAT, // 0x029
|
||||
SPECIES_GOLBAT, // 0x02a
|
||||
SPECIES_ODDISH, // 0x02b
|
||||
SPECIES_GLOOM, // 0x02c
|
||||
SPECIES_VILEPLUME, // 0x02d
|
||||
SPECIES_PARAS, // 0x02e
|
||||
SPECIES_PARASECT, // 0x02f
|
||||
SPECIES_VENONAT, // 0x030
|
||||
SPECIES_VENOMOTH, // 0x031
|
||||
SPECIES_DIGLETT, // 0x032
|
||||
SPECIES_DUGTRIO, // 0x033
|
||||
SPECIES_MEOWTH, // 0x034
|
||||
SPECIES_PERSIAN, // 0x035
|
||||
SPECIES_PSYDUCK, // 0x036
|
||||
SPECIES_GOLDUCK, // 0x037
|
||||
SPECIES_MANKEY, // 0x038
|
||||
SPECIES_PRIMEAPE, // 0x039
|
||||
SPECIES_GROWLITHE, // 0x03a
|
||||
SPECIES_ARCANINE, // 0x03b
|
||||
SPECIES_POLIWAG, // 0x03c
|
||||
SPECIES_POLIWHIRL, // 0x03d
|
||||
SPECIES_POLIWRATH, // 0x03e
|
||||
SPECIES_ABRA, // 0x03f
|
||||
SPECIES_KADABRA, // 0x040
|
||||
SPECIES_ALAKAZAM, // 0x041
|
||||
SPECIES_MACHOP, // 0x042
|
||||
SPECIES_MACHOKE, // 0x043
|
||||
SPECIES_MACHAMP, // 0x044
|
||||
SPECIES_BELLSPROUT, // 0x045
|
||||
SPECIES_WEEPINBELL, // 0x046
|
||||
SPECIES_VICTREEBEL, // 0x047
|
||||
SPECIES_TENTACOOL, // 0x048
|
||||
SPECIES_TENTACRUEL, // 0x049
|
||||
SPECIES_GEODUDE, // 0x04a
|
||||
SPECIES_GRAVELER, // 0x04b
|
||||
SPECIES_GOLEM, // 0x04c
|
||||
SPECIES_PONYTA, // 0x04d
|
||||
SPECIES_RAPIDASH, // 0x04e
|
||||
SPECIES_SLOWPOKE, // 0x04f
|
||||
SPECIES_SLOWBRO, // 0x050
|
||||
SPECIES_MAGNEMITE, // 0x051
|
||||
SPECIES_MAGNETON, // 0x052
|
||||
SPECIES_FARFETCHD, // 0x053
|
||||
SPECIES_DODUO, // 0x054
|
||||
SPECIES_DODRIO, // 0x055
|
||||
SPECIES_SEEL, // 0x056
|
||||
SPECIES_DEWGONG, // 0x057
|
||||
SPECIES_GRIMER, // 0x058
|
||||
SPECIES_MUK, // 0x059
|
||||
SPECIES_SHELLDER, // 0x05a
|
||||
SPECIES_CLOYSTER, // 0x05b
|
||||
SPECIES_GASTLY, // 0x05c
|
||||
SPECIES_HAUNTER, // 0x05d
|
||||
SPECIES_GENGAR, // 0x05e
|
||||
SPECIES_ONIX, // 0x05f
|
||||
SPECIES_DROWZEE, // 0x060
|
||||
SPECIES_HYPNO, // 0x061
|
||||
SPECIES_KRABBY, // 0x062
|
||||
SPECIES_KINGLER, // 0x063
|
||||
SPECIES_VOLTORB, // 0x064
|
||||
SPECIES_ELECTRODE, // 0x065
|
||||
SPECIES_EXEGGCUTE, // 0x066
|
||||
SPECIES_EXEGGUTOR, // 0x067
|
||||
SPECIES_CUBONE, // 0x068
|
||||
SPECIES_MAROWAK, // 0x069
|
||||
SPECIES_HITMONLEE, // 0x06a
|
||||
SPECIES_HITMONCHAN, // 0x06b
|
||||
SPECIES_LICKITUNG, // 0x06c
|
||||
SPECIES_KOFFING, // 0x06d
|
||||
SPECIES_WEEZING, // 0x06e
|
||||
SPECIES_RHYHORN, // 0x06f
|
||||
SPECIES_RHYDON, // 0x070
|
||||
SPECIES_CHANSEY, // 0x071
|
||||
SPECIES_TANGELA, // 0x072
|
||||
SPECIES_KANGASKHAN, // 0x073
|
||||
SPECIES_HORSEA, // 0x074
|
||||
SPECIES_SEADRA, // 0x075
|
||||
SPECIES_GOLDEEN, // 0x076
|
||||
SPECIES_SEAKING, // 0x077
|
||||
SPECIES_STARYU, // 0x078
|
||||
SPECIES_STARMIE, // 0x079
|
||||
SPECIES_MR_MIME, // 0x07a
|
||||
SPECIES_SCYTHER, // 0x07b
|
||||
SPECIES_JYNX, // 0x07c
|
||||
SPECIES_ELECTABUZZ, // 0x07d
|
||||
SPECIES_MAGMAR, // 0x07e
|
||||
SPECIES_PINSIR, // 0x07f
|
||||
SPECIES_TAUROS, // 0x080
|
||||
SPECIES_MAGIKARP, // 0x081
|
||||
SPECIES_GYARADOS, // 0x082
|
||||
SPECIES_LAPRAS, // 0x083
|
||||
SPECIES_DITTO, // 0x084
|
||||
SPECIES_EEVEE, // 0x085
|
||||
SPECIES_VAPOREON, // 0x086
|
||||
SPECIES_JOLTEON, // 0x087
|
||||
SPECIES_FLAREON, // 0x088
|
||||
SPECIES_PORYGON, // 0x089
|
||||
SPECIES_OMANYTE, // 0x08a
|
||||
SPECIES_OMASTAR, // 0x08b
|
||||
SPECIES_KABUTO, // 0x08c
|
||||
SPECIES_KABUTOPS, // 0x08d
|
||||
SPECIES_AERODACTYL, // 0x08e
|
||||
SPECIES_SNORLAX, // 0x08f
|
||||
SPECIES_ARTICUNO, // 0x090
|
||||
SPECIES_ZAPDOS, // 0x091
|
||||
SPECIES_MOLTRES, // 0x092
|
||||
SPECIES_DRATINI, // 0x093
|
||||
SPECIES_DRAGONAIR, // 0x094
|
||||
SPECIES_DRAGONITE, // 0x095
|
||||
SPECIES_MEWTWO, // 0x096
|
||||
SPECIES_MEW, // 0x097
|
||||
SPECIES_CHIKORITA, // 0x098
|
||||
SPECIES_BAYLEEF, // 0x099
|
||||
SPECIES_MEGANIUM, // 0x09a
|
||||
SPECIES_CYNDAQUIL, // 0x09b
|
||||
SPECIES_QUILAVA, // 0x09c
|
||||
SPECIES_TYPHLOSION, // 0x09d
|
||||
SPECIES_TOTODILE, // 0x09e
|
||||
SPECIES_CROCONAW, // 0x09f
|
||||
SPECIES_FERALIGATR, // 0x0a0
|
||||
SPECIES_SENTRET, // 0x0a1
|
||||
SPECIES_FURRET, // 0x0a2
|
||||
SPECIES_HOOTHOOT, // 0x0a3
|
||||
SPECIES_NOCTOWL, // 0x0a4
|
||||
SPECIES_LEDYBA, // 0x0a5
|
||||
SPECIES_LEDIAN, // 0x0a6
|
||||
SPECIES_SPINARAK, // 0x0a7
|
||||
SPECIES_ARIADOS, // 0x0a8
|
||||
SPECIES_CROBAT, // 0x0a9
|
||||
SPECIES_CHINCHOU, // 0x0aa
|
||||
SPECIES_LANTURN, // 0x0ab
|
||||
SPECIES_PICHU, // 0x0ac
|
||||
SPECIES_CLEFFA, // 0x0ad
|
||||
SPECIES_IGGLYBUFF, // 0x0ae
|
||||
SPECIES_TOGEPI, // 0x0af
|
||||
SPECIES_TOGETIC, // 0x0b0
|
||||
SPECIES_NATU, // 0x0b1
|
||||
SPECIES_XATU, // 0x0b2
|
||||
SPECIES_MAREEP, // 0x0b3
|
||||
SPECIES_FLAAFFY, // 0x0b4
|
||||
SPECIES_AMPHAROS, // 0x0b5
|
||||
SPECIES_BELLOSSOM, // 0x0b6
|
||||
SPECIES_MARILL, // 0x0b7
|
||||
SPECIES_AZUMARILL, // 0x0b8
|
||||
SPECIES_SUDOWOODO, // 0x0b9
|
||||
SPECIES_POLITOED, // 0x0ba
|
||||
SPECIES_HOPPIP, // 0x0bb
|
||||
SPECIES_SKIPLOOM, // 0x0bc
|
||||
SPECIES_JUMPLUFF, // 0x0bd
|
||||
SPECIES_AIPOM, // 0x0be
|
||||
SPECIES_SUNKERN, // 0x0bf
|
||||
SPECIES_SUNFLORA, // 0x0c0
|
||||
SPECIES_YANMA, // 0x0c1
|
||||
SPECIES_WOOPER, // 0x0c2
|
||||
SPECIES_QUAGSIRE, // 0x0c3
|
||||
SPECIES_ESPEON, // 0x0c4
|
||||
SPECIES_UMBREON, // 0x0c5
|
||||
SPECIES_MURKROW, // 0x0c6
|
||||
SPECIES_SLOWKING, // 0x0c7
|
||||
SPECIES_MISDREAVUS, // 0x0c8
|
||||
SPECIES_UNOWN, // 0x0c9
|
||||
SPECIES_WOBBUFFET, // 0x0ca
|
||||
SPECIES_GIRAFARIG, // 0x0cb
|
||||
SPECIES_PINECO, // 0x0cc
|
||||
SPECIES_FORRETRESS, // 0x0cd
|
||||
SPECIES_DUNSPARCE, // 0x0ce
|
||||
SPECIES_GLIGAR, // 0x0cf
|
||||
SPECIES_STEELIX, // 0x0d0
|
||||
SPECIES_SNUBBULL, // 0x0d1
|
||||
SPECIES_GRANBULL, // 0x0d2
|
||||
SPECIES_QWILFISH, // 0x0d3
|
||||
SPECIES_SCIZOR, // 0x0d4
|
||||
SPECIES_SHUCKLE, // 0x0d5
|
||||
SPECIES_HERACROSS, // 0x0d6
|
||||
SPECIES_SNEASEL, // 0x0d7
|
||||
SPECIES_TEDDIURSA, // 0x0d8
|
||||
SPECIES_URSARING, // 0x0d9
|
||||
SPECIES_SLUGMA, // 0x0da
|
||||
SPECIES_MAGCARGO, // 0x0db
|
||||
SPECIES_SWINUB, // 0x0dc
|
||||
SPECIES_PILOSWINE, // 0x0dd
|
||||
SPECIES_CORSOLA, // 0x0de
|
||||
SPECIES_REMORAID, // 0x0df
|
||||
SPECIES_OCTILLERY, // 0x0e0
|
||||
SPECIES_DELIBIRD, // 0x0e1
|
||||
SPECIES_MANTINE, // 0x0e2
|
||||
SPECIES_SKARMORY, // 0x0e3
|
||||
SPECIES_HOUNDOUR, // 0x0e4
|
||||
SPECIES_HOUNDOOM, // 0x0e5
|
||||
SPECIES_KINGDRA, // 0x0e6
|
||||
SPECIES_PHANPY, // 0x0e7
|
||||
SPECIES_DONPHAN, // 0x0e8
|
||||
SPECIES_PORYGON2, // 0x0e9
|
||||
SPECIES_STANTLER, // 0x0ea
|
||||
SPECIES_SMEARGLE, // 0x0eb
|
||||
SPECIES_TYROGUE, // 0x0ec
|
||||
SPECIES_HITMONTOP, // 0x0ed
|
||||
SPECIES_SMOOCHUM, // 0x0ee
|
||||
SPECIES_ELEKID, // 0x0ef
|
||||
SPECIES_MAGBY, // 0x0f0
|
||||
SPECIES_MILTANK, // 0x0f1
|
||||
SPECIES_BLISSEY, // 0x0f2
|
||||
SPECIES_RAIKOU, // 0x0f3
|
||||
SPECIES_ENTEI, // 0x0f4
|
||||
SPECIES_SUICUNE, // 0x0f5
|
||||
SPECIES_LARVITAR, // 0x0f6
|
||||
SPECIES_PUPITAR, // 0x0f7
|
||||
SPECIES_TYRANITAR, // 0x0f8
|
||||
SPECIES_LUGIA, // 0x0f9
|
||||
SPECIES_HO_OH, // 0x0fa
|
||||
SPECIES_CELEBI, // 0x0fb
|
||||
|
||||
SPECIES_OLD_UNOWN_B,
|
||||
SPECIES_OLD_UNOWN_C,
|
||||
SPECIES_OLD_UNOWN_D,
|
||||
SPECIES_OLD_UNOWN_E,
|
||||
SPECIES_OLD_UNOWN_F,
|
||||
SPECIES_OLD_UNOWN_G,
|
||||
SPECIES_OLD_UNOWN_H,
|
||||
SPECIES_OLD_UNOWN_I,
|
||||
SPECIES_OLD_UNOWN_J,
|
||||
SPECIES_OLD_UNOWN_K,
|
||||
SPECIES_OLD_UNOWN_L,
|
||||
SPECIES_OLD_UNOWN_M,
|
||||
SPECIES_OLD_UNOWN_N,
|
||||
SPECIES_OLD_UNOWN_O,
|
||||
SPECIES_OLD_UNOWN_P,
|
||||
SPECIES_OLD_UNOWN_Q,
|
||||
SPECIES_OLD_UNOWN_R,
|
||||
SPECIES_OLD_UNOWN_S,
|
||||
SPECIES_OLD_UNOWN_T,
|
||||
SPECIES_OLD_UNOWN_U,
|
||||
SPECIES_OLD_UNOWN_V,
|
||||
SPECIES_OLD_UNOWN_W,
|
||||
SPECIES_OLD_UNOWN_X,
|
||||
SPECIES_OLD_UNOWN_Y,
|
||||
SPECIES_OLD_UNOWN_Z,
|
||||
|
||||
SPECIES_TREECKO, // 0x115
|
||||
SPECIES_GROVYLE, // 0x116
|
||||
SPECIES_SCEPTILE, // 0x117
|
||||
SPECIES_TORCHIC, // 0x118
|
||||
SPECIES_COMBUSKEN, // 0x119
|
||||
SPECIES_BLAZIKEN, // 0x11a
|
||||
SPECIES_MUDKIP, // 0x11b
|
||||
SPECIES_MARSHTOMP, // 0x11c
|
||||
SPECIES_SWAMPERT, // 0x11d
|
||||
SPECIES_POOCHYENA, // 0x11e
|
||||
SPECIES_MIGHTYENA, // 0x11f
|
||||
SPECIES_ZIGZAGOON, // 0x120
|
||||
SPECIES_LINOONE, // 0x121
|
||||
SPECIES_WURMPLE, // 0x122
|
||||
SPECIES_SILCOON, // 0x123
|
||||
SPECIES_BEAUTIFLY, // 0x124
|
||||
SPECIES_CASCOON, // 0x125
|
||||
SPECIES_DUSTOX, // 0x126
|
||||
SPECIES_LOTAD, // 0x127
|
||||
SPECIES_LOMBRE, // 0x128
|
||||
SPECIES_LUDICOLO, // 0x129
|
||||
SPECIES_SEEDOT, // 0x12a
|
||||
SPECIES_NUZLEAF, // 0x12b
|
||||
SPECIES_SHIFTRY, // 0x12c
|
||||
SPECIES_NINCADA, // 0x12d
|
||||
SPECIES_NINJASK, // 0x12e
|
||||
SPECIES_SHEDINJA, // 0x12f
|
||||
SPECIES_TAILLOW, // 0x130
|
||||
SPECIES_SWELLOW, // 0x131
|
||||
SPECIES_SHROOMISH, // 0x132
|
||||
SPECIES_BRELOOM, // 0x133
|
||||
SPECIES_SPINDA, // 0x134
|
||||
SPECIES_WINGULL, // 0x135
|
||||
SPECIES_PELIPPER, // 0x136
|
||||
SPECIES_SURSKIT, // 0x137
|
||||
SPECIES_MASQUERAIN, // 0x138
|
||||
SPECIES_WAILMER, // 0x139
|
||||
SPECIES_WAILORD, // 0x13a
|
||||
SPECIES_SKITTY, // 0x13b
|
||||
SPECIES_DELCATTY, // 0x13c
|
||||
SPECIES_KECLEON, // 0x13d
|
||||
SPECIES_BALTOY, // 0x13e
|
||||
SPECIES_CLAYDOL, // 0x13f
|
||||
SPECIES_NOSEPASS, // 0x140
|
||||
SPECIES_TORKOAL, // 0x141
|
||||
SPECIES_SABLEYE, // 0x142
|
||||
SPECIES_BARBOACH, // 0x143
|
||||
SPECIES_WHISCASH, // 0x144
|
||||
SPECIES_LUVDISC, // 0x145
|
||||
SPECIES_CORPHISH, // 0x146
|
||||
SPECIES_CRAWDAUNT, // 0x147
|
||||
SPECIES_FEEBAS, // 0x148
|
||||
SPECIES_MILOTIC, // 0x149
|
||||
SPECIES_CARVANHA, // 0x14a
|
||||
SPECIES_SHARPEDO, // 0x14b
|
||||
SPECIES_TRAPINCH, // 0x14c
|
||||
SPECIES_VIBRAVA, // 0x14d
|
||||
SPECIES_FLYGON, // 0x14e
|
||||
SPECIES_MAKUHITA, // 0x14f
|
||||
SPECIES_HARIYAMA, // 0x150
|
||||
SPECIES_ELECTRIKE, // 0x151
|
||||
SPECIES_MANECTRIC, // 0x152
|
||||
SPECIES_NUMEL, // 0x153
|
||||
SPECIES_CAMERUPT, // 0x154
|
||||
SPECIES_SPHEAL, // 0x155
|
||||
SPECIES_SEALEO, // 0x156
|
||||
SPECIES_WALREIN, // 0x157
|
||||
SPECIES_CACNEA, // 0x158
|
||||
SPECIES_CACTURNE, // 0x159
|
||||
SPECIES_SNORUNT, // 0x15a
|
||||
SPECIES_GLALIE, // 0x15b
|
||||
SPECIES_LUNATONE, // 0x15c
|
||||
SPECIES_SOLROCK, // 0x15d
|
||||
SPECIES_AZURILL, // 0x15e
|
||||
SPECIES_SPOINK, // 0x15f
|
||||
SPECIES_GRUMPIG, // 0x160
|
||||
SPECIES_PLUSLE, // 0x161
|
||||
SPECIES_MINUN, // 0x162
|
||||
SPECIES_MAWILE, // 0x163
|
||||
SPECIES_MEDITITE, // 0x164
|
||||
SPECIES_MEDICHAM, // 0x165
|
||||
SPECIES_SWABLU, // 0x166
|
||||
SPECIES_ALTARIA, // 0x167
|
||||
SPECIES_WYNAUT, // 0x168
|
||||
SPECIES_DUSKULL, // 0x169
|
||||
SPECIES_DUSCLOPS, // 0x16a
|
||||
SPECIES_ROSELIA, // 0x16b
|
||||
SPECIES_SLAKOTH, // 0x16c
|
||||
SPECIES_VIGOROTH, // 0x16d
|
||||
SPECIES_SLAKING, // 0x16e
|
||||
SPECIES_GULPIN, // 0x16f
|
||||
SPECIES_SWALOT, // 0x170
|
||||
SPECIES_TROPIUS, // 0x171
|
||||
SPECIES_WHISMUR, // 0x172
|
||||
SPECIES_LOUDRED, // 0x173
|
||||
SPECIES_EXPLOUD, // 0x174
|
||||
SPECIES_CLAMPERL, // 0x175
|
||||
SPECIES_HUNTAIL, // 0x176
|
||||
SPECIES_GOREBYSS, // 0x177
|
||||
SPECIES_ABSOL, // 0x178
|
||||
SPECIES_SHUPPET, // 0x179
|
||||
SPECIES_BANETTE, // 0x17a
|
||||
SPECIES_SEVIPER, // 0x17b
|
||||
SPECIES_ZANGOOSE, // 0x17c
|
||||
SPECIES_RELICANTH, // 0x17d
|
||||
SPECIES_ARON, // 0x17e
|
||||
SPECIES_LAIRON, // 0x17f
|
||||
SPECIES_AGGRON, // 0x180
|
||||
SPECIES_CASTFORM, // 0x181
|
||||
SPECIES_VOLBEAT, // 0x182
|
||||
SPECIES_ILLUMISE, // 0x183
|
||||
SPECIES_LILEEP, // 0x184
|
||||
SPECIES_CRADILY, // 0x185
|
||||
SPECIES_ANORITH, // 0x186
|
||||
SPECIES_ARMALDO, // 0x187
|
||||
SPECIES_RALTS, // 0x188
|
||||
SPECIES_KIRLIA, // 0x189
|
||||
SPECIES_GARDEVOIR, // 0x18a
|
||||
SPECIES_BAGON, // 0x18b
|
||||
SPECIES_SHELGON, // 0x18c
|
||||
SPECIES_SALAMENCE, // 0x18d
|
||||
SPECIES_BELDUM, // 0x18e
|
||||
SPECIES_METANG, // 0x18f
|
||||
SPECIES_METAGROSS, // 0x190
|
||||
SPECIES_REGIROCK, // 0x191
|
||||
SPECIES_REGICE, // 0x192
|
||||
SPECIES_REGISTEEL, // 0x193
|
||||
SPECIES_KYOGRE, // 0x194
|
||||
SPECIES_GROUDON, // 0x195
|
||||
SPECIES_RAYQUAZA, // 0x196
|
||||
SPECIES_LATIAS, // 0x197
|
||||
SPECIES_LATIOS, // 0x198
|
||||
SPECIES_JIRACHI, // 0x199
|
||||
SPECIES_DEOXYS, // 0x19a
|
||||
SPECIES_CHIMECHO, // 0x19b
|
||||
SPECIES_EGG, // 0x19c
|
||||
|
||||
SPECIES_UNOWN_B,
|
||||
SPECIES_UNOWN_C,
|
||||
SPECIES_UNOWN_D,
|
||||
SPECIES_UNOWN_E,
|
||||
SPECIES_UNOWN_F,
|
||||
SPECIES_UNOWN_G,
|
||||
SPECIES_UNOWN_H,
|
||||
SPECIES_UNOWN_I,
|
||||
SPECIES_UNOWN_J,
|
||||
SPECIES_UNOWN_K,
|
||||
SPECIES_UNOWN_L,
|
||||
SPECIES_UNOWN_M,
|
||||
SPECIES_UNOWN_N,
|
||||
SPECIES_UNOWN_O,
|
||||
SPECIES_UNOWN_P,
|
||||
SPECIES_UNOWN_Q,
|
||||
SPECIES_UNOWN_R,
|
||||
SPECIES_UNOWN_S,
|
||||
SPECIES_UNOWN_T,
|
||||
SPECIES_UNOWN_U,
|
||||
SPECIES_UNOWN_V,
|
||||
SPECIES_UNOWN_W,
|
||||
SPECIES_UNOWN_X,
|
||||
SPECIES_UNOWN_Y,
|
||||
SPECIES_UNOWN_Z,
|
||||
SPECIES_UNOWN_EMARK,
|
||||
SPECIES_UNOWN_QMARK,
|
||||
};
|
||||
42
include/string_util.h
Normal file
42
include/string_util.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef GUARD_STRING_UTIL_H
|
||||
#define GUARD_STRING_UTIL_H
|
||||
|
||||
enum StringConvertMode
|
||||
{
|
||||
STR_CONV_MODE_LEFT_ALIGN,
|
||||
STR_CONV_MODE_RIGHT_ALIGN,
|
||||
STR_CONV_MODE_LEADING_ZEROS
|
||||
};
|
||||
|
||||
u8 *StringCopy10(u8 *dest, const u8 *src);
|
||||
u8 *StringGetEnd10(u8 *str);
|
||||
u8 *StringCopy7(u8 *dest, const u8 *src);
|
||||
u8 *StringCopy(u8 *dest, const u8 *src);
|
||||
u8 *StringAppend(u8 *dest, const u8 *src);
|
||||
u8 *StringCopyN(u8 *dest, const u8 *src, u8 n);
|
||||
u8 *StringAppendN(u8 *dest, const u8 *src, u8 n);
|
||||
u16 StringLength(const u8 *str);
|
||||
s32 StringCompare(const u8 *str1, const u8 *str2);
|
||||
s32 StringCompareN(const u8 *str1, const u8 *str2, u32 n);
|
||||
bool8 IsStringLengthAtLeast(const u8 *str, s32 n);
|
||||
u8 *ConvertIntToDecimalStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n);
|
||||
u8 *ConvertUIntToDecimalStringN(u8 *dest, u32 value, enum StringConvertMode mode, u8 n);
|
||||
u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n);
|
||||
u8 *StringExpandPlaceholders(u8 *dest, const u8 *src);
|
||||
u8 *StringBraille(u8 *dest, const u8 *src);
|
||||
u8 *GetExpandedPlaceholder(u32 id);
|
||||
u8 *StringFill(u8 *dest, u8 c, u16 n);
|
||||
u8 *StringCopyPadded(u8 *dest, const u8 *src, u8 c, u16 n);
|
||||
u8 *StringFillWithTerminator(u8 *dest, u16 n);
|
||||
u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);
|
||||
u32 StringLength_Multibyte(u8 *str);
|
||||
u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color);
|
||||
bool32 sub_8009228(u8 *str);
|
||||
bool32 sub_800924C(u8 *str, s32 n);
|
||||
u8 GetExtCtrlCodeLength(u8 code);
|
||||
static const u8 *SkipExtCtrlCode(const u8 *s);
|
||||
s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2);
|
||||
void ConvertInternationalString(u8 *s, u8 language);
|
||||
void StripExtCtrlCodes(u8 *str);
|
||||
|
||||
#endif // GUARD_STRING_UTIL_H
|
||||
14
include/text.h
Normal file
14
include/text.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef GUARD_TEXT_H
|
||||
#define GUARD_TEXT_H
|
||||
|
||||
#define CHAR_SPACE 0x00
|
||||
#define CHAR_QUESTION_MARK 0xAC
|
||||
#define CHAR_HYPHEN 0xAE
|
||||
#define CHAR_CURRENCY 0xB7
|
||||
#define CHAR_COLON 0xF0
|
||||
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
|
||||
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
|
||||
#define CHAR_NEWLINE 0xFE
|
||||
#define EOS 0xFF // end of string
|
||||
|
||||
#endif // GUARD_TEXT_H
|
||||
Reference in New Issue
Block a user