This commit is contained in:
dannye 2021-03-23 00:53:43 -05:00
commit e8dd755e18
3702 changed files with 163333 additions and 159040 deletions

View file

@ -0,0 +1,67 @@
; pitch
; Audio[1|2|3]_Pitches indexes (see audio/notes.asm)
; const_def
; const C_ ; 0
; const C# ; 1
; const D_ ; 2
; const D# ; 3
; const E_ ; 4
; const F_ ; 5
; const F# ; 6
; const G_ ; 7
; const G# ; 8
; const A_ ; 9
; const A# ; A
; const B_ ; B
; channel
; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks,
; and Audio[1|2|3]_HWChannelEnableMasks indexes (see audio/engine_[1|2|3].asm)
const_def
const Ch1 ; 0
const Ch2 ; 1
const Ch3 ; 2
const Ch4 ; 3
;NUM_MUSIC_CHANS EQU const_value
const Ch5 ; 4
const Ch6 ; 5
const Ch7 ; 6
const Ch8 ; 7
;NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
;NUM_CHANNELS EQU const_value
; HW sound channel register base addresses
HW_CH1_BASE EQU LOW(rNR10)
HW_CH2_BASE EQU LOW(rNR21) - 1
HW_CH3_BASE EQU LOW(rNR30)
HW_CH4_BASE EQU LOW(rNR41) - 1
; HW sound channel enable bit masks
HW_CH1_ENABLE_MASK EQU %00010001
HW_CH2_ENABLE_MASK EQU %00100010
HW_CH3_ENABLE_MASK EQU %01000100
HW_CH4_ENABLE_MASK EQU %10001000
; HW sound channel disable bit masks
HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff)
HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff)
HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff)
HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
const_def 1
const REG_DUTY_SOUND_LEN ; 1
const REG_VOLUME_ENVELOPE ; 2
const REG_FREQUENCY_LO ; 3
; wChannelFlags1 constants
const_def
const BIT_PERFECT_PITCH ; 0 ; controlled by toggle_perfect_pitch command
const BIT_SOUND_CALL ; 1 ; if in sound call
const BIT_NOISE_OR_SFX ; 2 ; if channel is the music noise channel or an SFX channel
const BIT_VIBRATO_DIRECTION ; 3 ; if the pitch is above or below normal (cycles)
const BIT_PITCH_SLIDE_ON ; 4 ; if pitch slide is active
const BIT_PITCH_SLIDE_DECREASING ; 5 ; if the pitch slide frequency is decreasing (instead of increasing)
const BIT_ROTATE_DUTY_CYCLE ; 6 ; if rotating duty cycle
; wChannelFlags2 constant (only has one flag)
BIT_EXECUTE_MUSIC EQU 0 ; if in execute music

View file

@ -0,0 +1,73 @@
MAX_LEVEL EQU 100
NUM_MOVES EQU 4
NUM_STATS EQU 5
NUM_STAT_MODS EQU 8
NUM_DVS EQU 2
; D733 flags
BIT_TEST_BATTLE EQU 0
; battle type constants (wBattleType values)
const_def
const BATTLE_TYPE_NORMAL ; 0
const BATTLE_TYPE_OLD_MAN ; 1
const BATTLE_TYPE_SAFARI ; 2
; damage limits before type effectiveness
MIN_NEUTRAL_DAMAGE EQU 2
MAX_NEUTRAL_DAMAGE EQU 999
; fixed damage constants
SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40
; type effectiveness factors, scaled by 10
SUPER_EFFECTIVE EQU 20
MORE_EFFECTIVE EQU 15
EFFECTIVE EQU 10
NOT_VERY_EFFECTIVE EQU 05
NO_EFFECT EQU 00
; non-volatile statuses
SLP EQU %111 ; sleep counter
const_def 3
const PSN ; 3
const BRN ; 4
const FRZ ; 5
const PAR ; 6
MAX_STAT_VALUE EQU 999
; trainer dvs
ATKDEFDV_TRAINER EQU $98
SPDSPCDV_TRAINER EQU $88
; wPlayerBattleStatus1 or wEnemyBattleStatus1 bit flags
const_def
const STORING_ENERGY ; 0 ; Bide
const THRASHING_ABOUT ; 1 ; e.g. Thrash
const ATTACKING_MULTIPLE_TIMES ; 2 ; e.g. Double Kick, Fury Attack
const FLINCHED ; 3
const CHARGING_UP ; 4 ; e.g. Solar Beam, Fly
const USING_TRAPPING_MOVE ; 5 ; e.g. Wrap
const INVULNERABLE ; 6 ; charging up Fly/Dig
const CONFUSED ; 7
; wPlayerBattleStatus2 or wEnemyBattleStatus2 bit flags
const_def
const USING_X_ACCURACY ; 0
const PROTECTED_BY_MIST ; 1
const GETTING_PUMPED ; 2 ; Focus Energy
const_skip ; 3 ; unused
const HAS_SUBSTITUTE_UP ; 4
const NEEDS_TO_RECHARGE ; 5 ; Hyper Beam
const USING_RAGE ; 6
const SEEDED ; 7
; wPlayerBattleStatus3 or wEnemyBattleStatus3 bit flags
const_def
const BADLY_POISONED ; 0
const HAS_LIGHT_SCREEN_UP ; 1
const HAS_REFLECT_UP ; 2
const TRANSFORMED ; 3

View file

@ -1,9 +0,0 @@
; width of east/west connections
; height of north/south connections
MAP_BORDER EQU 3
; connection directions
EAST EQU 1
WEST EQU 2
SOUTH EQU 4
NORTH EQU 8

View file

@ -1,5 +1,5 @@
const_value = 0
; CreditsTextPointers indexes (see data/credits/credits_text.asm)
const_def
const CRED_VERSION ; $00
const CRED_TAJIRI ; $01
const CRED_TA_OOTA ; $02
@ -65,3 +65,10 @@ const_value = 0
const CRED_CLUB ; $3E
const CRED_PAAD ; $3F
const_def -1, -1
const CRED_TEXT_FADE_MON ; $FF
const CRED_TEXT_MON ; $FE
const CRED_TEXT_FADE ; $FD
const CRED_TEXT ; $FC
const CRED_COPYRIGHT ; $FB
const CRED_THE_END ; $FA

3335
constants/event_constants.asm Executable file → Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,9 +0,0 @@
; See data/evos_moves.asm
; Evolution types
EV_LEVEL EQU 1
EV_ITEM EQU 2
EV_TRADE EQU 3
MAX_EVOLUTIONS EQU 3
EVOLUTION_SIZE EQU 4

View file

@ -0,0 +1,39 @@
TILE_WIDTH EQU 8 ; pixels
LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18
SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
BG_MAP_WIDTH EQU 32 ; tiles
BG_MAP_HEIGHT EQU 32 ; tiles
SPRITEBUFFERSIZE EQU 7 * 7 * LEN_1BPP_TILE
; HP bar
HP_BAR_GREEN EQU 0
HP_BAR_YELLOW EQU 1
HP_BAR_RED EQU 2
; hAutoBGTransferEnabled
TRANSFERTOP EQU 0
TRANSFERMIDDLE EQU 1
TRANSFERBOTTOM EQU 2
; hRedrawRowOrColumnMode
REDRAW_COL EQU 1
REDRAW_ROW EQU 2
; tile list ids
; TileIDListPointerTable indexes (see data/tilemaps.asm)
const_def
const TILEMAP_MON_PIC
const TILEMAP_SLIDE_DOWN_MON_PIC_7X5
const TILEMAP_SLIDE_DOWN_MON_PIC_7X3
const TILEMAP_GENGAR_INTRO_1
const TILEMAP_GENGAR_INTRO_2
const TILEMAP_GENGAR_INTRO_3
const TILEMAP_GAME_BOY
const TILEMAP_LINK_CABLE

View file

@ -2,6 +2,19 @@
GBC EQU $11
; memory map
VRAM_Begin EQU $8000
VRAM_End EQU $a000
SRAM_Begin EQU $a000
SRAM_End EQU $c000
WRAM0_Begin EQU $c000
WRAM0_End EQU $d000
WRAM1_Begin EQU $d000
WRAM1_End EQU $e000
; hardware registers $ff00-$ff80 (see below)
HRAM_Begin EQU $ff80
HRAM_End EQU $ffff
; MBC1
MBC1SRamEnable EQU $0000
MBC1RomBank EQU $2000

9
constants/hide_show_constants.asm Executable file → Normal file
View file

@ -1,11 +1,14 @@
HIDE EQU $11
SHOW EQU $15
; MissableObjects indexes (see data/maps/hide_show_data.asm)
; this is a list of the sprites that can be enabled/disabled during the game
; sprites marked with an X are constants that are never used
; because those sprites are not (de)activated in a map's script
; (they are either items or sprites that deactivate after battle
; and are detected in wMissableObjectList)
const_value = 0
const_def
const HS_PALLET_TOWN_OAK ; 00
const HS_LYING_OLD_MAN ; 01
const HS_OLD_MAN ; 02
@ -14,7 +17,7 @@ const_value = 0
const HS_CERULEAN_RIVAL ; 05
const HS_CERULEAN_ROCKET ; 06
const HS_CERULEAN_GUARD_1 ; 07
const HS_UNKNOWN_DUNGEON_GUY ; 08
const HS_CERULEAN_CAVE_GUY ; 08
const HS_CERULEAN_GUARD_2 ; 09
const HS_SAFFRON_CITY_1 ; 0A
const HS_SAFFRON_CITY_2 ; 0B

View file

@ -0,0 +1,17 @@
; party menu icons
; used in MonPartySpritePointers (see data/icon_pointers.asm)
const_def
const ICON_MON ; $0
const ICON_BALL ; $1
const ICON_HELIX ; $2
const ICON_FAIRY ; $3
const ICON_BIRD ; $4
const ICON_WATER ; $5
const ICON_BUG ; $6
const ICON_GRASS ; $7
const ICON_SNAKE ; $8
const ICON_QUADRUPED ; $9
ICON_TRADEBUBBLE EQU $e
ICONOFFSET EQU $40 ; difference between alternating icon frames' tile IDs

View file

@ -0,0 +1,20 @@
; joypad buttons
const_def
const BIT_A_BUTTON
const BIT_B_BUTTON
const BIT_SELECT
const BIT_START
const BIT_D_RIGHT
const BIT_D_LEFT
const BIT_D_UP
const BIT_D_DOWN
NO_INPUT EQU 0
A_BUTTON EQU 1 << BIT_A_BUTTON
B_BUTTON EQU 1 << BIT_B_BUTTON
SELECT EQU 1 << BIT_SELECT
START EQU 1 << BIT_START
D_RIGHT EQU 1 << BIT_D_RIGHT
D_LEFT EQU 1 << BIT_D_LEFT
D_UP EQU 1 << BIT_D_UP
D_DOWN EQU 1 << BIT_D_DOWN

184
constants/item_constants.asm Executable file → Normal file
View file

@ -1,5 +1,12 @@
const_value = 1
; item ids
; indexes for:
; - ItemNames (see data/items/names.asm)
; - ItemPrices (see data/items/prices.asm)
; - TechnicalMachinePrices (see data/items/tm_prices.asm)
; - KeyItemBitfield (see data/items/key_items.asm)
; - ItemUsePtrTable (see engine/items/item_effects.asm)
const_def
const NO_ITEM ; $00
const MASTER_BALL ; $01
const ULTRA_BALL ; $02
const GREAT_BALL ; $03
@ -100,60 +107,121 @@ SAFARI_ROCK EQU $16 ; overload
const FLOOR_11F ; $60
const FLOOR_B4F ; $61
const_value = $C4
const_next $C4
const HM_01 ; $C4
const HM_02 ; $C5
const HM_03 ; $C6
const HM_04 ; $C7
const HM_05 ; $C8
const TM_01 ; $C9
const TM_02 ; $CA
const TM_03 ; $CB
const TM_04 ; $CC
const TM_05 ; $CD
const TM_06 ; $CE
const TM_07 ; $CF
const TM_08 ; $D0
const TM_09 ; $D1
const TM_10 ; $D2
const TM_11 ; $D3
const TM_12 ; $D4
const TM_13 ; $D5
const TM_14 ; $D6
const TM_15 ; $D7
const TM_16 ; $D8
const TM_17 ; $D9
const TM_18 ; $DA
const TM_19 ; $DB
const TM_20 ; $DC
const TM_21 ; $DD
const TM_22 ; $DE
const TM_23 ; $DF
const TM_24 ; $E0
const TM_25 ; $E1
const TM_26 ; $E2
const TM_27 ; $E3
const TM_28 ; $E4
const TM_29 ; $E5
const TM_30 ; $E6
const TM_31 ; $E7
const TM_32 ; $E8
const TM_33 ; $E9
const TM_34 ; $EA
const TM_35 ; $EB
const TM_36 ; $EC
const TM_37 ; $ED
const TM_38 ; $EE
const TM_39 ; $EF
const TM_40 ; $F0
const TM_41 ; $F1
const TM_42 ; $F2
const TM_43 ; $F3
const TM_44 ; $F4
const TM_45 ; $F5
const TM_46 ; $F6
const TM_47 ; $F7
const TM_48 ; $F8
const TM_49 ; $F9
const TM_50 ; $FA
; HMs are defined before TMs, so the actual number of TM definitions
; is not yet available. The TM quantity is hard-coded here and must
; match the actual number below.
NUM_TMS EQU 50
add_hm: MACRO
; Defines three constants:
; - HM_\1: the item id, starting at $C4
; - \1_TMNUM: the learnable TM/HM flag, starting at 51
; - HM##_MOVE: alias for the move id, equal to the value of \1
; The first usage also defines HM01 as the first HM item id.
IF !DEF(HM01)
HM01 EQU const_value
__tmhm_value__ = NUM_TMS + 1
ENDC
HM_VALUE EQU __tmhm_value__ - NUM_TMS
IF HM_VALUE < 10
MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE"
ELSE
MOVE_FOR_HM EQUS "HM{d:HM_VALUE}_MOVE"
ENDC
MOVE_FOR_HM = \1
PURGE MOVE_FOR_HM
PURGE HM_VALUE
const HM_\1
\1_TMNUM EQU __tmhm_value__
__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_hm CUT ; $C4
add_hm FLY ; $C5
add_hm SURF ; $C6
add_hm STRENGTH ; $C7
add_hm FLASH ; $C8
NUM_HMS EQU const_value - HM01
add_tm: MACRO
; Defines three constants:
; - TM_\1: the item id, starting at $C9
; - \1_TMNUM: the learnable TM/HM flag, starting at 1
; - TM##_MOVE: alias for the move id, equal to the value of \1
; The first usage also defines TM01 as the first TM item id.
IF !DEF(TM01)
TM01 EQU const_value
__tmhm_value__ = 1
ENDC
IF __tmhm_value__ < 10
MOVE_FOR_TM EQUS "TM0{d:__tmhm_value__}_MOVE"
ELSE
MOVE_FOR_TM EQUS "TM{d:__tmhm_value__}_MOVE"
ENDC
MOVE_FOR_TM = \1
PURGE MOVE_FOR_TM
const TM_\1
\1_TMNUM EQU __tmhm_value__
__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_tm MEGA_PUNCH ; $C9
add_tm RAZOR_WIND ; $CA
add_tm SWORDS_DANCE ; $CB
add_tm WHIRLWIND ; $CC
add_tm MEGA_KICK ; $CD
add_tm TOXIC ; $CE
add_tm HORN_DRILL ; $CF
add_tm BODY_SLAM ; $D0
add_tm TAKE_DOWN ; $D1
add_tm DOUBLE_EDGE ; $D2
add_tm BUBBLEBEAM ; $D3
add_tm WATER_GUN ; $D4
add_tm ICE_BEAM ; $D5
add_tm BLIZZARD ; $D6
add_tm HYPER_BEAM ; $D7
add_tm PAY_DAY ; $D8
add_tm SUBMISSION ; $D9
add_tm COUNTER ; $DA
add_tm SEISMIC_TOSS ; $DB
add_tm RAGE ; $DC
add_tm MEGA_DRAIN ; $DD
add_tm SOLARBEAM ; $DE
add_tm DRAGON_RAGE ; $DF
add_tm THUNDERBOLT ; $E0
add_tm THUNDER ; $E1
add_tm EARTHQUAKE ; $E2
add_tm FISSURE ; $E3
add_tm DIG ; $E4
add_tm PSYCHIC_M ; $E5
add_tm TELEPORT ; $E6
add_tm MIMIC ; $E7
add_tm DOUBLE_TEAM ; $E8
add_tm REFLECT ; $E9
add_tm BIDE ; $EA
add_tm METRONOME ; $EB
add_tm SELFDESTRUCT ; $EC
add_tm EGG_BOMB ; $ED
add_tm FIRE_BLAST ; $EE
add_tm SWIFT ; $EF
add_tm SKULL_BASH ; $F0
add_tm SOFTBOILED ; $F1
add_tm DREAM_EATER ; $F2
add_tm SKY_ATTACK ; $F3
add_tm REST ; $F4
add_tm THUNDER_WAVE ; $F5
add_tm PSYWAVE ; $F6
add_tm EXPLOSION ; $F7
add_tm ROCK_SLIDE ; $F8
add_tm TRI_ATTACK ; $F9
add_tm SUBSTITUTE ; $FA
assert NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions"
NUM_TM_HM EQU NUM_TMS + NUM_HMS
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
; These fit in 7 bytes, with one unused bit left over.
__tmhm_value__ = NUM_TM_HM + 1
UNUSED_TMNUM EQU __tmhm_value__

40
constants/list_constants.asm Executable file → Normal file
View file

@ -1,20 +1,24 @@
; list menu ID's
PCPOKEMONLISTMENU EQU $00 ; PC pokemon withdraw/deposit lists
MOVESLISTMENU EQU $01 ; XXX where is this used?
PRICEDITEMLISTMENU EQU $02 ; Pokemart buy menu / Pokemart buy/sell choose quantity menu
ITEMLISTMENU EQU $03 ; Start menu Item menu / Pokemart sell menu
SPECIALLISTMENU EQU $04 ; list of special "items" e.g. floor list in elevators / list of badges
; list menu IDs
const_def
const PCPOKEMONLISTMENU ; $00 ; PC pokemon withdraw/deposit lists
const MOVESLISTMENU ; $01 ; XXX where is this used?
const PRICEDITEMLISTMENU ; $02 ; Pokemart buy menu / Pokemart buy/sell choose quantity menu
const ITEMLISTMENU ; $03 ; Start menu Item menu / Pokemart sell menu
const SPECIALLISTMENU ; $04 ; list of special "items" e.g. floor list in elevators / list of badges
MONSTER_NAME EQU 1
MOVE_NAME EQU 2
; ???_NAME EQU 3
ITEM_NAME EQU 4
PLAYEROT_NAME EQU 5
ENEMYOT_NAME EQU 6
TRAINER_NAME EQU 7
; NamePointers indexes (see home/names2.asm)
const_def 1
const MONSTER_NAME ; 1
const MOVE_NAME ; 2
const UNUSED_NAME ; 3
const ITEM_NAME ; 4
const PLAYEROT_NAME ; 5
const ENEMYOT_NAME ; 6
const TRAINER_NAME ; 7
INIT_ENEMYOT_LIST EQU 1
INIT_BAG_ITEM_LIST EQU 2
INIT_OTHER_ITEM_LIST EQU 3
INIT_PLAYEROT_LIST EQU 4
INIT_MON_LIST EQU 5
const_def 1
const INIT_ENEMYOT_LIST ; 1
const INIT_BAG_ITEM_LIST ; 2
const INIT_OTHER_ITEM_LIST ; 3
const INIT_PLAYEROT_LIST ; 4
const INIT_MON_LIST ; 5

View file

@ -4,6 +4,16 @@ mapconst: MACRO
\1_WIDTH EQU \3
ENDM
; map ids
; indexes for:
; - MapHeaderBanks (see data/maps/map_header_banks.asm)
; - MapHeaderPointers (see data/maps/map_header_pointers.asm)
; - MapSongBanks (see data/maps/songs.asm)
; - MapHSPointers (see data/maps/hide_show_data.asm)
; - MapSpriteSets (see data/maps/sprite_sets.asm)
; - ExternalMapEntries (see data/maps/town_map_entries.asm)
; Each map also has associated data in maps.asm.
; Order: towns/cities, then routes, then indoor/dungeon maps
const_def
mapconst PALLET_TOWN, 9, 10 ; $00
mapconst VIRIDIAN_CITY, 18, 20 ; $01
@ -16,7 +26,9 @@ ENDM
mapconst CINNABAR_ISLAND, 9, 10 ; $08
mapconst INDIGO_PLATEAU, 9, 10 ; $09
mapconst SAFFRON_CITY, 18, 20 ; $0A
NUM_CITY_MAPS EQU const_value
mapconst UNUSED_MAP_0B, 0, 0 ; $0B
FIRST_ROUTE_MAP EQU const_value
mapconst ROUTE_1, 18, 10 ; $0C
mapconst ROUTE_2, 36, 10 ; $0D
mapconst ROUTE_3, 9, 35 ; $0E
@ -42,6 +54,7 @@ ENDM
mapconst ROUTE_23, 72, 10 ; $22
mapconst ROUTE_24, 18, 10 ; $23
mapconst ROUTE_25, 9, 30 ; $24
FIRST_INDOOR_MAP EQU const_value
mapconst REDS_HOUSE_1F, 4, 4 ; $25
mapconst REDS_HOUSE_2F, 4, 4 ; $26
mapconst BLUES_HOUSE, 4, 4 ; $27
@ -253,3 +266,7 @@ ENDM
mapconst LORELEIS_ROOM, 6, 5 ; $F5
mapconst BRUNOS_ROOM, 6, 5 ; $F6
mapconst AGATHAS_ROOM, 6, 5 ; $F7
; Indoor maps, such as houses, use this as the Map ID in their exit warps
; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap
LAST_MAP EQU -1

View file

@ -0,0 +1,16 @@
; width of east/west connections
; height of north/south connections
MAP_BORDER EQU 3
; connection directions
const_def
shift_const EAST ; 1
shift_const WEST ; 2
shift_const SOUTH ; 4
shift_const NORTH ; 8
; flower and water tile animations
const_def
const TILEANIM_NONE ; 0
const TILEANIM_WATER ; 1
const TILEANIM_WATER_FLOWER ; 2

View file

@ -0,0 +1,57 @@
; spritestatedata1 struct members (see macros/wram.asm)
const_def
const SPRITESTATEDATA1_PICTUREID ; 0
const SPRITESTATEDATA1_MOVEMENTSTATUS ; 1
const SPRITESTATEDATA1_IMAGEINDEX ; 2
const SPRITESTATEDATA1_YSTEPVECTOR ; 3
const SPRITESTATEDATA1_YPIXELS ; 4
const SPRITESTATEDATA1_XSTEPVECTOR ; 5
const SPRITESTATEDATA1_XPIXELS ; 6
const SPRITESTATEDATA1_INTRAANIMFRAMECOUNTER ; 7
const SPRITESTATEDATA1_ANIMFRAMECOUNTER ; 8
const SPRITESTATEDATA1_FACINGDIRECTION ; 9
const SPRITESTATEDATA1_YADJUSTED ; a
const SPRITESTATEDATA1_XADJUSTED ; b
const SPRITESTATEDATA1_COLLISIONDATA ; c
const SPRITESTATEDATA1_0D ; d
const SPRITESTATEDATA1_0E ; e
const SPRITESTATEDATA1_0F ; f
SPRITESTATEDATA1_LENGTH EQU const_value
; spritestatedata2 struct members (see macros/wram.asm)
const_def
const SPRITESTATEDATA2_WALKANIMATIONCOUNTER ; 0
const SPRITESTATEDATA2_01 ; 1
const SPRITESTATEDATA2_YDISPLACEMENT ; 2
const SPRITESTATEDATA2_XDISPLACEMENT ; 3
const SPRITESTATEDATA2_MAPY ; 4
const SPRITESTATEDATA2_MAPX ; 5
const SPRITESTATEDATA2_MOVEMENTBYTE1 ; 6
const SPRITESTATEDATA2_GRASSPRIORITY ; 7
const SPRITESTATEDATA2_MOVEMENTDELAY ; 8
const SPRITESTATEDATA2_ORIGFACINGDIRECTION ; 9
const SPRITESTATEDATA2_0A ; a
const SPRITESTATEDATA2_0B ; b
const SPRITESTATEDATA2_0C ; c
const SPRITESTATEDATA2_PICTUREID ; d
const SPRITESTATEDATA2_IMAGEBASEOFFSET ; e
const SPRITESTATEDATA2_0F ; f
SPRITESTATEDATA2_LENGTH EQU const_value
; different kinds of people events
ITEM EQU $80
TRAINER EQU $40
WALK EQU $FE
STAY EQU $FF
ANY_DIR EQU $00
UP_DOWN EQU $01
LEFT_RIGHT EQU $02
DOWN EQU $D0
UP EQU $D1
LEFT EQU $D2
RIGHT EQU $D3
NONE EQU $FF
BOULDER_MOVEMENT_BYTE_2 EQU $10

View file

@ -0,0 +1,88 @@
BAG_ITEM_CAPACITY EQU 20
PC_ITEM_CAPACITY EQU 50
; text box IDs
const_def 1
const MESSAGE_BOX ; $01
const_skip ; $02
const MENU_TEMPLATE_03 ; $03 unused
const FIELD_MOVE_MON_MENU ; $04
const JP_MOCHIMONO_MENU_TEMPLATE ; $05
const USE_TOSS_MENU_TEMPLATE ; $06
const MENU_TEMPLATE_07 ; $07 unused
const JP_SAVE_MESSAGE_MENU_TEMPLATE ; $08
const JP_SPEED_OPTIONS_MENU_TEMPLATE ; $09
const_skip ; $0a
const BATTLE_MENU_TEMPLATE ; $0b
const SWITCH_STATS_CANCEL_MENU_TEMPLATE ; $0c
const LIST_MENU_BOX ; $0d
const BUY_SELL_QUIT_MENU_TEMPLATE ; $0e
const MONEY_BOX_TEMPLATE ; $0f
const MENU_TEMPLATE_10 ; $10 unused
const MON_SPRITE_POPUP ; $11
const JP_AH_MENU_TEMPLATE ; $12
const MONEY_BOX ; $13
const TWO_OPTION_MENU ; $14
const BUY_SELL_QUIT_MENU ; $15
const_skip ; $16
const_skip ; $17
const_skip ; $18
const_skip ; $19
const JP_POKEDEX_MENU_TEMPLATE ; $1a
const SAFARI_BATTLE_MENU_TEMPLATE ; $1b
; two option menu constants
; TwoOptionMenuStrings indexes (see data/yes_no_menu_strings.asm)
const_def
const YES_NO_MENU ; 0
const NORTH_WEST_MENU ; 1
const SOUTH_EAST_MENU ; 2
const WIDE_YES_NO_MENU ; 3
const NORTH_EAST_MENU ; 4
const TRADE_CANCEL_MENU ; 5
const HEAL_CANCEL_MENU ; 6
const NO_YES_MENU ; 7
; menu exit method constants for list menus and the buy/sell/quit menu
CHOSE_MENU_ITEM EQU 1 ; pressed A
CANCELLED_MENU EQU 2 ; pressed B
; menu exit method constants for two-option menus
CHOSE_FIRST_ITEM EQU 1
CHOSE_SECOND_ITEM EQU 2
; move mon constants
const_def
const BOX_TO_PARTY ; 0
const PARTY_TO_BOX ; 1
const DAYCARE_TO_PARTY ; 2
const PARTY_TO_DAYCARE ; 3
; party menu types
; PartyMenuMessagePointers indexes (see engine/menus/party_menu.asm)
const_def
const NORMAL_PARTY_MENU ; $00
const USE_ITEM_PARTY_MENU ; $01
const BATTLE_PARTY_MENU ; $02
const TMHM_PARTY_MENU ; $03
const SWAP_MONS_PARTY_MENU ; $04
const EVO_STONE_PARTY_MENU ; $05
; party menu message IDs
; PartyMenuItemUseMessagePointers indexes (see engine/menus/party_menu.asm)
const_next $F0
FIRST_PARTY_MENU_TEXT_ID EQU const_value
const ANTIDOTE_MSG ; $F0
const BURN_HEAL_MSG ; $F1
const ICE_HEAL_MSG ; $F2
const AWAKENING_MSG ; $F3
const PARALYZ_HEAL_MSG ; $F4
const POTION_MSG ; $F5
const FULL_HEAL_MSG ; $F6
const REVIVE_MSG ; $F7
const RARE_CANDY_MSG ; $F8
; naming screen types
const_def
const NAME_PLAYER_SCREEN ; 0
const NAME_RIVAL_SCREEN ; 1
const NAME_MON_SCREEN ; 2

View file

@ -1,208 +1,9 @@
MAX_LEVEL EQU 100
NUM_MOVES EQU 4
NUM_STATS EQU 5
NUM_STAT_MODS EQU 8
NUM_DVS EQU 2
PARTY_LENGTH EQU 6
MONS_PER_BOX EQU 20
NUM_BOXES EQU 12
BAG_ITEM_CAPACITY EQU 20
PC_ITEM_CAPACITY EQU 50
HOF_MON EQU $10
HOF_TEAM EQU PARTY_LENGTH * HOF_MON
HOF_TEAM_CAPACITY EQU 50
NAME_LENGTH EQU 11
ITEM_NAME_LENGTH EQU 13
A_BUTTON EQU %00000001
B_BUTTON EQU %00000010
SELECT EQU %00000100
START EQU %00001000
D_RIGHT EQU %00010000
D_LEFT EQU %00100000
D_UP EQU %01000000
D_DOWN EQU %10000000
const_value set 0
const BIT_A_BUTTON
const BIT_B_BUTTON
const BIT_SELECT
const BIT_START
const BIT_D_RIGHT
const BIT_D_LEFT
const BIT_D_UP
const BIT_D_DOWN
SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18
SCREEN_WIDTH_PIXELS EQU SCREEN_WIDTH * 8
SCREEN_HEIGHT_PIXELS EQU SCREEN_HEIGHT * 8
BYTES_PER_TILE EQU 16
BG_MAP_WIDTH EQU 32
BG_MAP_HEIGHT EQU 32
SPRITEBUFFERSIZE EQU 7*7 * 8 ; 7 * 7 (tiles) * 8 (bytes per tile)
NPC_MOVEMENT_DOWN EQU $00
NPC_MOVEMENT_UP EQU $40
NPC_MOVEMENT_LEFT EQU $80
NPC_MOVEMENT_RIGHT EQU $C0
; text box IDs
MESSAGE_BOX EQU $01
FIELD_MOVE_MON_MENU EQU $04
JP_MOCHIMONO_MENU_TEMPLATE EQU $05
USE_TOSS_MENU_TEMPLATE EQU $06
JP_SAVE_MESSAGE_MENU_TEMPLATE EQU $08
JP_SPEED_OPTIONS_MENU_TEMPLATE EQU $09
BATTLE_MENU_TEMPLATE EQU $0b
SWITCH_STATS_CANCEL_MENU_TEMPLATE EQU $0c
LIST_MENU_BOX EQU $0d
BUY_SELL_QUIT_MENU_TEMPLATE EQU $0e
MONEY_BOX_TEMPLATE EQU $0f
MON_SPRITE_POPUP EQU $11
JP_AH_MENU_TEMPLATE EQU $12
MONEY_BOX EQU $13
TWO_OPTION_MENU EQU $14
BUY_SELL_QUIT_MENU EQU $15
JP_POKEDEX_MENU_TEMPLATE EQU $1a
SAFARI_BATTLE_MENU_TEMPLATE EQU $1b
; two option menu constants
YES_NO_MENU EQU 0
NORTH_WEST_MENU EQU 1
SOUTH_EAST_MENU EQU 2
WIDE_YES_NO_MENU EQU 3
NORTH_EAST_MENU EQU 4
TRADE_CANCEL_MENU EQU 5
HEAL_CANCEL_MENU EQU 6
NO_YES_MENU EQU 7
; menu exit method constants for list menus and the buy/sell/quit menu
CHOSE_MENU_ITEM EQU 1 ; pressed A
CANCELLED_MENU EQU 2 ; pressed B
; menu exit method constants for two-option menus
CHOSE_FIRST_ITEM EQU 1
CHOSE_SECOND_ITEM EQU 2
; move mon constants
BOX_TO_PARTY EQU 0
PARTY_TO_BOX EQU 1
DAYCARE_TO_PARTY EQU 2
PARTY_TO_DAYCARE EQU 3
; emotion bubbles
EXCLAMATION_BUBBLE EQU 0
QUESTION_BUBBLE EQU 1
SMILE_BUBBLE EQU 2
; slot symbols
SLOTS7 EQU $0200
SLOTSBAR EQU $0604
SLOTSCHERRY EQU $0A08
SLOTSFISH EQU $0E0C
SLOTSBIRD EQU $1210
SLOTSMOUSE EQU $1614
; party menu types
NORMAL_PARTY_MENU EQU 0
USE_ITEM_PARTY_MENU EQU 1
BATTLE_PARTY_MENU EQU 2
TMHM_PARTY_MENU EQU 3
SWAP_MONS_PARTY_MENU EQU 4
EVO_STONE_PARTY_MENU EQU 5
; party menu message IDs
ANTIDOTE_MSG EQU $F0
BURN_HEAL_MSG EQU $F1
ICE_HEAL_MSG EQU $F2
AWAKENING_MSG EQU $F3
PARALYZ_HEAL_MSG EQU $F4
POTION_MSG EQU $F5
FULL_HEAL_MSG EQU $F6
REVIVE_MSG EQU $F7
RARE_CANDY_MSG EQU $F8
; naming screen types
NAME_PLAYER_SCREEN EQU 0
NAME_RIVAL_SCREEN EQU 1
NAME_MON_SCREEN EQU 2
; mon data locations
; Note that some values are not supported by all functions that use these values.
PLAYER_PARTY_DATA EQU 0
ENEMY_PARTY_DATA EQU 1
BOX_DATA EQU 2
DAYCARE_DATA EQU 3
BATTLE_MON_DATA EQU 4
; player direction constants
PLAYER_DIR_BIT_RIGHT EQU 0
PLAYER_DIR_BIT_LEFT EQU 1
PLAYER_DIR_BIT_DOWN EQU 2
PLAYER_DIR_BIT_UP EQU 3
PLAYER_DIR_RIGHT EQU (1 << PLAYER_DIR_BIT_RIGHT)
PLAYER_DIR_LEFT EQU (1 << PLAYER_DIR_BIT_LEFT)
PLAYER_DIR_DOWN EQU (1 << PLAYER_DIR_BIT_DOWN)
PLAYER_DIR_UP EQU (1 << PLAYER_DIR_BIT_UP)
; Boolean checks
FALSE EQU 0
TRUE EQU 1
; flag operations
FLAG_RESET EQU 0
FLAG_SET EQU 1
FLAG_TEST EQU 2
; HP bar
HP_BAR_GREEN EQU 0
HP_BAR_YELLOW EQU 1
HP_BAR_RED EQU 2
; D733 flags
BIT_TEST_BATTLE EQU 0
; battle type constants
BATTLE_TYPE_NORMAL EQU 0
BATTLE_TYPE_OLD_MAN EQU 1
BATTLE_TYPE_SAFARI EQU 2
; serial
ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
USING_EXTERNAL_CLOCK EQU $01
USING_INTERNAL_CLOCK EQU $02
CONNECTION_NOT_ESTABLISHED EQU $ff
; signals the start of an array of bytes transferred over the link cable
SERIAL_PREAMBLE_BYTE EQU $FD
; this byte is used when there is no data to send
SERIAL_NO_DATA_BYTE EQU $FE
; signals the end of one part of a patch list (there are two parts) for player/enemy party data
SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
LINK_STATE_NONE EQU $00 ; not using link
LINK_STATE_IN_CABLE_CLUB EQU $01 ; in a cable club room (Colosseum or Trade Centre)
LINK_STATE_START_TRADE EQU $02 ; pre-trade selection screen initialisation
LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation
LINK_STATE_BATTLING EQU $04 ; in a link battle
LINK_STATE_RESET EQU $05 ; reset game (unused)
LINK_STATE_TRADING EQU $32 ; in a link trade
LINKBATTLE_RUN EQU $F
LINKBATTLE_STRUGGLE EQU $E
LINKBATTLE_NO_ACTION EQU $D
const_def
const FLAG_RESET ; 0
const FLAG_SET ; 1
const FLAG_TEST ; 2

View file

@ -1,8 +1,8 @@
; subanimations
const_value = $D8
; special effects, prefaced with "SE" for "Special Effect"
; special effects that are part of move animations
; SpecialEffectPointers associates them with effect routines (see data/battle_anims/special_effect_pointers.asm)
const_def $C0
FIRST_SE_ID EQU const_value
const_skip $18
const SE_WAVY_SCREEN ; $D8 used in Psywave/Night Shade/Psychic etc.
const SE_SUBSTITUTE_MON ; $D9 used in Substitute (turns the pokemon into a mini sprite)
const SE_SHAKE_BACK_AND_FORTH ; $DA used in Double Team
@ -42,3 +42,417 @@ const_value = $D8
const SE_RESET_SCREEN_PALETTE ; $FC used in Leer/Thunderpunch/etc.
const SE_DARK_SCREEN_PALETTE ; $FD used in Hyper Beam/Thunderpunch/etc.
const SE_DARK_SCREEN_FLASH ; $FE used in Cut/Take Down/etc.
; subanimations that are part of move animations
; SubanimationPointers indexes (see data/battle_anims/subanimations.asm)
const_def
const SUBANIM_00
const SUBANIM_01
const SUBANIM_02
const SUBANIM_03
const SUBANIM_04
const SUBANIM_05
const SUBANIM_06
const SUBANIM_07
const SUBANIM_08
const SUBANIM_09
const SUBANIM_0A
const SUBANIM_0B
const SUBANIM_0C
const SUBANIM_0D
const SUBANIM_0E
const SUBANIM_0F
const SUBANIM_10
const SUBANIM_11
const SUBANIM_12
const SUBANIM_13
const SUBANIM_14
const SUBANIM_15
const SUBANIM_16
const SUBANIM_17
const SUBANIM_18
const SUBANIM_19
const SUBANIM_1A
const SUBANIM_1B
const SUBANIM_1C
const SUBANIM_1D
const SUBANIM_1E
const SUBANIM_1F
const SUBANIM_20
const SUBANIM_21
const SUBANIM_22
const SUBANIM_23
const SUBANIM_24
const SUBANIM_25
const SUBANIM_26
const SUBANIM_27
const SUBANIM_28
const SUBANIM_29
const SUBANIM_2A
const SUBANIM_2B
const SUBANIM_2C
const SUBANIM_2D
const SUBANIM_2E
const SUBANIM_2F
const SUBANIM_30
const SUBANIM_31
const SUBANIM_32
const SUBANIM_33
const SUBANIM_34
const SUBANIM_35
const SUBANIM_36
const SUBANIM_37
const SUBANIM_38
const SUBANIM_39
const SUBANIM_3A
const SUBANIM_3B
const SUBANIM_3C
const SUBANIM_3D
const SUBANIM_3E
const SUBANIM_3F
const SUBANIM_40
const SUBANIM_41
const SUBANIM_42
const SUBANIM_43
const SUBANIM_44
const SUBANIM_45
const SUBANIM_46
const SUBANIM_47
const SUBANIM_48
const SUBANIM_49
const SUBANIM_4A
const SUBANIM_4B
const SUBANIM_4C
const SUBANIM_4D
const SUBANIM_4E
const SUBANIM_4F
const SUBANIM_50
const SUBANIM_51
const SUBANIM_52
const SUBANIM_53
const SUBANIM_54
const SUBANIM_55
; types of subanimations
const_def
const SUBANIMTYPE_NORMAL
const SUBANIMTYPE_HVFLIP
const SUBANIMTYPE_HFLIP
const SUBANIMTYPE_COORDFLIP
const SUBANIMTYPE_REVERSE
const SUBANIMTYPE_ENEMY
; frame blocks that are part of subanimations
; FrameBlockPointers indexes (see data/battle_anims/frame_blocks.asm)
const_def
const FRAMEBLOCK_00
const FRAMEBLOCK_01
const FRAMEBLOCK_02
const FRAMEBLOCK_03
const FRAMEBLOCK_04
const FRAMEBLOCK_05
const FRAMEBLOCK_06
const FRAMEBLOCK_07
const FRAMEBLOCK_08
const FRAMEBLOCK_09
const FRAMEBLOCK_0A
const FRAMEBLOCK_0B
const FRAMEBLOCK_0C
const FRAMEBLOCK_0D
const FRAMEBLOCK_0E
const FRAMEBLOCK_0F
const FRAMEBLOCK_10
const FRAMEBLOCK_11
const FRAMEBLOCK_12
const FRAMEBLOCK_13
const FRAMEBLOCK_14
const FRAMEBLOCK_15
const FRAMEBLOCK_16
const FRAMEBLOCK_17
const FRAMEBLOCK_18
const FRAMEBLOCK_19
const FRAMEBLOCK_1A
const FRAMEBLOCK_1B
const FRAMEBLOCK_1C
const FRAMEBLOCK_1D
const FRAMEBLOCK_1E
const FRAMEBLOCK_1F
const FRAMEBLOCK_20
const FRAMEBLOCK_21
const FRAMEBLOCK_22
const FRAMEBLOCK_23
const FRAMEBLOCK_24
const FRAMEBLOCK_25
const FRAMEBLOCK_26
const FRAMEBLOCK_27
const FRAMEBLOCK_28
const FRAMEBLOCK_29
const FRAMEBLOCK_2A
const FRAMEBLOCK_2B
const FRAMEBLOCK_2C
const FRAMEBLOCK_2D
const FRAMEBLOCK_2E
const FRAMEBLOCK_2F
const FRAMEBLOCK_30
const FRAMEBLOCK_31
const FRAMEBLOCK_32
const FRAMEBLOCK_33
const FRAMEBLOCK_34
const FRAMEBLOCK_35
const FRAMEBLOCK_36
const FRAMEBLOCK_37
const FRAMEBLOCK_38
const FRAMEBLOCK_39
const FRAMEBLOCK_3A
const FRAMEBLOCK_3B
const FRAMEBLOCK_3C
const FRAMEBLOCK_3D
const FRAMEBLOCK_3E
const FRAMEBLOCK_3F
const FRAMEBLOCK_40
const FRAMEBLOCK_41
const FRAMEBLOCK_42
const FRAMEBLOCK_43
const FRAMEBLOCK_44
const FRAMEBLOCK_45
const FRAMEBLOCK_46
const FRAMEBLOCK_47
const FRAMEBLOCK_SMALL_BLACK_CIRCLE
const FRAMEBLOCK_LARGE_BLACK_CIRCLE
const FRAMEBLOCK_4A
const FRAMEBLOCK_4B
const FRAMEBLOCK_4C
const FRAMEBLOCK_4D
const FRAMEBLOCK_4E
const FRAMEBLOCK_4F
const FRAMEBLOCK_50
const FRAMEBLOCK_51
const FRAMEBLOCK_52
const FRAMEBLOCK_53
const FRAMEBLOCK_54
const FRAMEBLOCK_55
const FRAMEBLOCK_56
const FRAMEBLOCK_57
const FRAMEBLOCK_58
const FRAMEBLOCK_59
const FRAMEBLOCK_5A
const FRAMEBLOCK_5B
const FRAMEBLOCK_5C
const FRAMEBLOCK_5D
const FRAMEBLOCK_5E
const FRAMEBLOCK_5F
const FRAMEBLOCK_60
const FRAMEBLOCK_61
const FRAMEBLOCK_62
const FRAMEBLOCK_63
const FRAMEBLOCK_64
const FRAMEBLOCK_65
const FRAMEBLOCK_66
const FRAMEBLOCK_67
const FRAMEBLOCK_68
const FRAMEBLOCK_69
const FRAMEBLOCK_6A
const FRAMEBLOCK_6B
const FRAMEBLOCK_6C
const FRAMEBLOCK_6D
const FRAMEBLOCK_6E
const FRAMEBLOCK_6F
const FRAMEBLOCK_70
const FRAMEBLOCK_71
const FRAMEBLOCK_72
const FRAMEBLOCK_73
const FRAMEBLOCK_74
const FRAMEBLOCK_75
const FRAMEBLOCK_76
const FRAMEBLOCK_77
const FRAMEBLOCK_78
const FRAMEBLOCK_79
; base coordinates that are part of subanimations
; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm)
const_def
const BASECOORD_00
const BASECOORD_01
const BASECOORD_02
const BASECOORD_03
const BASECOORD_04
const BASECOORD_05
const BASECOORD_06
const BASECOORD_07
const BASECOORD_08
const BASECOORD_09
const BASECOORD_0A
const BASECOORD_0B
const BASECOORD_0C
const BASECOORD_0D
const BASECOORD_0E
const BASECOORD_0F
const BASECOORD_10
const BASECOORD_11
const BASECOORD_12
const BASECOORD_13
const BASECOORD_14
const BASECOORD_15
const BASECOORD_16
const BASECOORD_17
const BASECOORD_18
const BASECOORD_19
const BASECOORD_1A
const BASECOORD_1B
const BASECOORD_1C
const BASECOORD_1D
const BASECOORD_1E
const BASECOORD_1F
const BASECOORD_20
const BASECOORD_21
const BASECOORD_22
const BASECOORD_23
const BASECOORD_24
const BASECOORD_25
const BASECOORD_26
const BASECOORD_27
const BASECOORD_28
const BASECOORD_29
const BASECOORD_2A
const BASECOORD_2B
const BASECOORD_2C
const BASECOORD_2D
const BASECOORD_2E
const BASECOORD_2F
const BASECOORD_30
const BASECOORD_31
const BASECOORD_32
const BASECOORD_33
const BASECOORD_34
const BASECOORD_35
const BASECOORD_36
const BASECOORD_37
const BASECOORD_38
const BASECOORD_39
const BASECOORD_3A
const BASECOORD_3B
const BASECOORD_3C
const BASECOORD_3D
const BASECOORD_3E
const BASECOORD_3F
const BASECOORD_40
const BASECOORD_41
const BASECOORD_42
const BASECOORD_43
const BASECOORD_44
const BASECOORD_45
const BASECOORD_46
const BASECOORD_47
const BASECOORD_48
const BASECOORD_49
const BASECOORD_4A
const BASECOORD_4B
const BASECOORD_4C
const BASECOORD_4D
const BASECOORD_4E
const BASECOORD_4F
const BASECOORD_50
const BASECOORD_51
const BASECOORD_52
const BASECOORD_53
const BASECOORD_54
const BASECOORD_55
const BASECOORD_56
const BASECOORD_57
const BASECOORD_58
const BASECOORD_59
const BASECOORD_5A
const BASECOORD_5B
const BASECOORD_5C
const BASECOORD_5D
const BASECOORD_5E
const BASECOORD_5F
const BASECOORD_60
const BASECOORD_61
const BASECOORD_62
const BASECOORD_63
const BASECOORD_64
const BASECOORD_65
const BASECOORD_66
const BASECOORD_67
const BASECOORD_68
const BASECOORD_69
const BASECOORD_6A
const BASECOORD_6B
const BASECOORD_6C
const BASECOORD_6D
const BASECOORD_6E
const BASECOORD_6F
const BASECOORD_70
const BASECOORD_71
const BASECOORD_72
const BASECOORD_73
const BASECOORD_74
const BASECOORD_75
const BASECOORD_76
const BASECOORD_77
const BASECOORD_78
const BASECOORD_79
const BASECOORD_7A
const BASECOORD_7B
const BASECOORD_7C
const BASECOORD_7D
const BASECOORD_7E
const BASECOORD_7F
const BASECOORD_80
const BASECOORD_81
const BASECOORD_82
const BASECOORD_83
const BASECOORD_84
const BASECOORD_85
const BASECOORD_86
const BASECOORD_87
const BASECOORD_88
const BASECOORD_89
const BASECOORD_8A
const BASECOORD_8B
const BASECOORD_8C
const BASECOORD_8D
const BASECOORD_8E
const BASECOORD_8F
const BASECOORD_90
const BASECOORD_91
const BASECOORD_92
const BASECOORD_93
const BASECOORD_94
const BASECOORD_95
const BASECOORD_96
const BASECOORD_97
const BASECOORD_98
const BASECOORD_99
const BASECOORD_9A
const BASECOORD_9B
const BASECOORD_9C
const BASECOORD_9D
const BASECOORD_9E
const BASECOORD_9F
const BASECOORD_A0
const BASECOORD_A1
const BASECOORD_A2
const BASECOORD_A3
const BASECOORD_A4
const BASECOORD_A5
const BASECOORD_A6
const BASECOORD_A7
const BASECOORD_A8
const BASECOORD_A9
const BASECOORD_AA
const BASECOORD_AB
const BASECOORD_AC
const BASECOORD_AD
const BASECOORD_AE
const BASECOORD_AF
const BASECOORD_B0
; frame block modes that are part of subanimations
const_def
const FRAMEBLOCKMODE_00
const FRAMEBLOCKMODE_01
const FRAMEBLOCKMODE_02
const FRAMEBLOCKMODE_03
const FRAMEBLOCKMODE_04

View file

@ -1,5 +1,11 @@
const_value = 1
; move ids
; indexes for:
; - Moves (see data/moves/moves.asm)
; - MoveNames (see data/moves/names.asm)
; - AttackAnimationPointers (see data/moves/animations.asm)
; - MoveSoundTable (see data/moves/sfx.asm)
const_def
const NO_MOVE ; 00
const POUND ; 01
const KARATE_CHOP ; 02
const DOUBLESLAP ; 03
@ -165,9 +171,9 @@ const_value = 1
const SLASH ; a3
const SUBSTITUTE ; a4
NUM_ATTACKS EQU const_value + -1
NUM_ATTACKS EQU const_value - 1
const STRUGGLE
const STRUGGLE ; a5
; Moves do double duty as animation identifiers.

View file

@ -1,11 +1,11 @@
; tentative move effect constants
; {stat}_(UP|DOWN)(1|2) means that the move raises the user's (or lowers the target's) corresponding stat modifier by 1 (or 2) stages
; {status condition}_side_effect means that the move has a side chance of causing that condition
; {status condition}_effect means that the move causes the status condition every time it hits the target
const_value = 0
; {status condition}_SIDE_EFFECT means that the move has a side chance of causing that condition
; {status condition}_EFFECT means that the move causes the status condition every time it hits the target
; MoveEffectPointerTable indexes (see data/moves/effects_pointers.asm)
const_def
const NO_ADDITIONAL_EFFECT ; $00
const UNUSED_EFFECT_01 ; $01
const EFFECT_01 ; $01 unused
const POISON_SIDE_EFFECT1 ; $02
const DRAIN_HP_EFFECT ; $03
const BURN_SIDE_EFFECT1 ; $04
@ -34,12 +34,12 @@ const_value = 0
const THRASH_PETAL_DANCE_EFFECT ; $1B
const SWITCH_AND_TELEPORT_EFFECT ; $1C
const TWO_TO_FIVE_ATTACKS_EFFECT ; $1D
const UNUSED_EFFECT_1E ; $1E
const EFFECT_1E ; $1E unused
const FLINCH_SIDE_EFFECT1 ; $1F
const SLEEP_EFFECT ; $20
const POISON_SIDE_EFFECT2 ; $21
const BURN_SIDE_EFFECT2 ; $22
const UNUSED_EFFECT_23 ; $23
const_skip ; $23
const PARALYZE_SIDE_EFFECT2 ; $24
const FLINCH_SIDE_EFFECT2 ; $25
const OHKO_EFFECT ; $26 moves like Horn Drill
@ -76,13 +76,13 @@ const_value = 0
const DEFENSE_DOWN_SIDE_EFFECT ; $45
const SPEED_DOWN_SIDE_EFFECT ; $46
const SPECIAL_DOWN_SIDE_EFFECT ; $47
const UNUSED_EFFECT_48 ; $48
const UNUSED_EFFECT_49 ; $49
const UNUSED_EFFECT_4A ; $4A
const UNUSED_EFFECT_4B ; $4B
const_skip ; $48
const_skip ; $49
const_skip ; $4A
const_skip ; $4B
const CONFUSION_SIDE_EFFECT ; $4C
const TWINEEDLE_EFFECT ; $4D
const UNUSED_EFFECT_4E ; $4E
const_skip ; $4E
const SUBSTITUTE_EFFECT ; $4F
const HYPER_BEAM_EFFECT ; $50
const RAGE_EFFECT ; $51
@ -91,7 +91,3 @@ const_value = 0
const LEECH_SEED_EFFECT ; $54
const SPLASH_EFFECT ; $55
const DISABLE_EFFECT ; $56
; fixed damage constants
SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40

View file

@ -1,43 +1,5 @@
; HW sound channel register base addresses
HW_CH1_BASE EQU (rNR10 % $100)
HW_CH2_BASE EQU ((rNR21 % $100) - 1)
HW_CH3_BASE EQU (rNR30 % $100)
HW_CH4_BASE EQU ((rNR41 % $100) - 1)
; HW sound channel enable bit masks
HW_CH1_ENABLE_MASK EQU %00010001
HW_CH2_ENABLE_MASK EQU %00100010
HW_CH3_ENABLE_MASK EQU %01000100
HW_CH4_ENABLE_MASK EQU %10001000
; HW sound channel disable bit masks
HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff)
HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff)
HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff)
HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
REG_DUTY_SOUND_LEN EQU 1
REG_VOLUME_ENVELOPE EQU 2
REG_FREQUENCY_LO EQU 3
MAX_SFX_ID EQU $B9
CRY_SFX_START EQU $14
CRY_SFX_END EQU $86
; wChannelFlags1 constants
BIT_PERFECT_PITCH EQU 0 ; controlled by toggleperfectpitch command
BIT_CHANNEL_CALL EQU 1 ; if in channel call
BIT_NOISE_OR_SFX EQU 2 ; if channel is the music noise channel or an SFX channel
BIT_VIBRATO_DIRECTION EQU 3 ; if the pitch is above or below normal (cycles)
BIT_PITCH_BEND_ON EQU 4 ; if pitch bend is active
BIT_PITCH_BEND_DECREASING EQU 5 ; if the pitch bend frequency is decreasing (instead of increasing)
BIT_ROTATE_DUTY EQU 6 ; if rotating duty
; wChannelFlags2 constant (only has one flag)
BIT_EXECUTE_MUSIC EQU 0 ; if in execute music
; Song ids are calculated by address to save space.
; SFX_Headers_(1|2|3) indexes (see audio/headers/*.asm)
;music_const: MACRO
;\1 EQUS "RB(\2)"
@ -94,6 +56,45 @@ const_value = 1
const NUM_SONGS
const_def
const SFX_CRY_00
const SFX_CRY_01
const SFX_CRY_02
const SFX_CRY_03
const SFX_CRY_04
const SFX_CRY_05
const SFX_CRY_06
const SFX_CRY_07
const SFX_CRY_08
const SFX_CRY_09
const SFX_CRY_0A
const SFX_CRY_0B
const SFX_CRY_0C
const SFX_CRY_0D
const SFX_CRY_0E
const SFX_CRY_0F
const SFX_CRY_10
const SFX_CRY_11
const SFX_CRY_12
const SFX_CRY_13
const SFX_CRY_14
const SFX_CRY_15
const SFX_CRY_16
const SFX_CRY_17
const SFX_CRY_18
const SFX_CRY_19
const SFX_CRY_1A
const SFX_CRY_1B
const SFX_CRY_1C
const SFX_CRY_1D
const SFX_CRY_1E
const SFX_CRY_1F
const SFX_CRY_20
const SFX_CRY_21
const SFX_CRY_22
const SFX_CRY_23
const SFX_CRY_24
const SFX_CRY_25
const_value = 1
; AUDIO_1 AUDIO_3
@ -216,3 +217,5 @@ const_value = 1
const GSSFX_NOT_VERY_EFFECTIVE
const GSSFX_DAMAGE
const GSSFX_SUPER_EFFECTIVE
SFX_STOP_ALL_MUSIC EQU $ff

7
constants/oam_constants.asm Executable file → Normal file
View file

@ -1,8 +1,6 @@
; OAM flags used by this game
OAMFLAG_ENDOFDATA EQU %00000001 ; pseudo OAM flag, only used by game logic
OAMFLAG_CANBEMASKED EQU %00000010 ; pseudo OAM flag, only used by game logic
OAMFLAG_VFLIPPED EQU %00100000 ; OAM flag flips the sprite vertically.
; Used for making left facing sprites face right and to alternate between left and right foot animation when walking up or down
; OAM attribute flags
OAM_PALETTE EQU %111
@ -13,6 +11,7 @@ OAM_Y_FLIP EQU 6
OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; OAM attribute masks
OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip
OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip
OAM_OBP1 EQU 1 << OAM_OBP_NUM ; OBJ palette 1
OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip
OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip
OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0)

51
constants/palette_constants.asm Executable file → Normal file
View file

@ -1,29 +1,38 @@
; monochrome palette color ids
const_def
const WHITE
const LIGHT_GRAY
const DARK_GRAY
const BLACK
const SHADE_WHITE ; %00
const SHADE_LIGHT ; %01
const SHADE_DARK ; %10
const SHADE_BLACK ; %11
NUM_PAL_COLORS EQU const_value
SET_PAL_BATTLE_BLACK EQU $00
SET_PAL_BATTLE EQU $01
SET_PAL_TOWN_MAP EQU $02
SET_PAL_STATUS_SCREEN EQU $03
SET_PAL_POKEDEX EQU $04
SET_PAL_SLOTS EQU $05
SET_PAL_TITLE_SCREEN EQU $06
SET_PAL_NIDORINO_INTRO EQU $07
SET_PAL_GENERIC EQU $08
SET_PAL_OVERWORLD EQU $09
SET_PAL_PARTY_MENU EQU $0A
SET_PAL_POKEMON_WHOLE_SCREEN EQU $0B
SET_PAL_GAME_FREAK_INTRO EQU $0C
SET_PAL_TRAINER_CARD EQU $0D
UPDATE_PARTY_MENU_BLK_PACKET EQU $FC
PAL_COLOR_SIZE EQU 2
PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
; super game boy palettes
const_value = 0
; pal/blk packets
; SetPalFunctions indexes (see engine/gfx/palettes.asm)
const_def
const SET_PAL_BATTLE_BLACK ; $00
const SET_PAL_BATTLE ; $01
const SET_PAL_TOWN_MAP ; $02
const SET_PAL_STATUS_SCREEN ; $03
const SET_PAL_POKEDEX ; $04
const SET_PAL_SLOTS ; $05
const SET_PAL_TITLE_SCREEN ; $06
const SET_PAL_NIDORINO_INTRO ; $07
const SET_PAL_GENERIC ; $08
const SET_PAL_OVERWORLD ; $09
const SET_PAL_PARTY_MENU ; $0A
const SET_PAL_POKEMON_WHOLE_SCREEN ; $0B
const SET_PAL_GAME_FREAK_INTRO ; $0C
const SET_PAL_TRAINER_CARD ; $0D
SET_PAL_PARTY_MENU_HP_BARS EQU $fc
SET_PAL_DEFAULT EQU $ff
; sgb palettes
; SuperPalettes indexes (see data/sgb/sgb_palettes.asm)
const_def
const PAL_ROUTE ; $00
const PAL_PALLET ; $01
const PAL_VIRIDIAN ; $02

View file

@ -1,5 +1,9 @@
const_value = 1
; pokedex ids
; indexes for:
; - BaseStats (see data/pokemon/base_stats.asm)
; - MonPartyData (see data/pokemon/menu_icons.asm)
; - MonsterPalettes (see data/pokemon/palettes.asm)
const_def 1
const DEX_BULBASAUR ; 1
const DEX_IVYSAUR ; 2
const DEX_VENUSAUR ; 3
@ -152,4 +156,4 @@ const_value = 1
const DEX_MEWTWO ; 150
const DEX_MEW ; 151
NUM_POKEMON EQU 151
NUM_POKEMON EQU const_value - 1

View file

@ -1,192 +1,209 @@
const_value = 1
; pokemon ids
; indexes for:
; - MonsterNames (see data/pokemon/names.asm)
; - EvosMovesPointerTable (see data/pokemon/evos_moves.asm)
; - CryData (see data/pokemon/cries.asm)
; - PokedexOrder (see data/pokemon/dex_order.asm)
; - PokedexEntryPointers (see data/pokemon/dex_entries.asm)
const_def
const NO_MON ; $00
const RHYDON ; $01
const KANGASKHAN ; $02
const NIDORAN_M ; $03
const CLEFAIRY ; $04
const SPEAROW ; $05
const VOLTORB ; $06
const NIDOKING ; $07
const SLOWBRO ; $08
const IVYSAUR ; $09
const EXEGGUTOR ; $0A
const LICKITUNG ; $0B
const EXEGGCUTE ; $0C
const GRIMER ; $0D
const GENGAR ; $0E
const NIDORAN_F ; $0F
const NIDOQUEEN ; $10
const CUBONE ; $11
const RHYHORN ; $12
const LAPRAS ; $13
const ARCANINE ; $14
const MEW ; $15
const GYARADOS ; $16
const SHELLDER ; $17
const TENTACOOL ; $18
const GASTLY ; $19
const SCYTHER ; $1A
const STARYU ; $1B
const BLASTOISE ; $1C
const PINSIR ; $1D
const TANGELA ; $1E
const_skip ; $1F
const_skip ; $20
const GROWLITHE ; $21
const ONIX ; $22
const FEAROW ; $23
const PIDGEY ; $24
const SLOWPOKE ; $25
const KADABRA ; $26
const GRAVELER ; $27
const CHANSEY ; $28
const MACHOKE ; $29
const MR_MIME ; $2A
const HITMONLEE ; $2B
const HITMONCHAN ; $2C
const ARBOK ; $2D
const PARASECT ; $2E
const PSYDUCK ; $2F
const DROWZEE ; $30
const GOLEM ; $31
const_skip ; $32
const MAGMAR ; $33
const_skip ; $34
const ELECTABUZZ ; $35
const MAGNETON ; $36
const KOFFING ; $37
const_skip ; $38
const MANKEY ; $39
const SEEL ; $3A
const DIGLETT ; $3B
const TAUROS ; $3C
const_skip ; $3D
const_skip ; $3E
const_skip ; $3F
const FARFETCHD ; $40
const VENONAT ; $41
const DRAGONITE ; $42
const_skip ; $43
const_skip ; $44
const_skip ; $45
const DODUO ; $46
const POLIWAG ; $47
const JYNX ; $48
const MOLTRES ; $49
const ARTICUNO ; $4A
const ZAPDOS ; $4B
const DITTO ; $4C
const MEOWTH ; $4D
const KRABBY ; $4E
const_skip ; $4F
const_skip ; $50
const_skip ; $51
const VULPIX ; $52
const NINETALES ; $53
const PIKACHU ; $54
const RAICHU ; $55
const_skip ; $56
const_skip ; $57
const DRATINI ; $58
const DRAGONAIR ; $59
const KABUTO ; $5A
const KABUTOPS ; $5B
const HORSEA ; $5C
const SEADRA ; $5D
const_skip ; $5E
const_skip ; $5F
const SANDSHREW ; $60
const SANDSLASH ; $61
const OMANYTE ; $62
const OMASTAR ; $63
const JIGGLYPUFF ; $64
const WIGGLYTUFF ; $65
const EEVEE ; $66
const FLAREON ; $67
const JOLTEON ; $68
const VAPOREON ; $69
const MACHOP ; $6A
const ZUBAT ; $6B
const EKANS ; $6C
const PARAS ; $6D
const POLIWHIRL ; $6E
const POLIWRATH ; $6F
const WEEDLE ; $70
const KAKUNA ; $71
const BEEDRILL ; $72
const_skip ; $73
const DODRIO ; $74
const PRIMEAPE ; $75
const DUGTRIO ; $76
const VENOMOTH ; $77
const DEWGONG ; $78
const_skip ; $79
const_skip ; $7A
const CATERPIE ; $7B
const METAPOD ; $7C
const BUTTERFREE ; $7D
const MACHAMP ; $7E
const_skip ; $7F
const GOLDUCK ; $80
const HYPNO ; $81
const GOLBAT ; $82
const MEWTWO ; $83
const SNORLAX ; $84
const MAGIKARP ; $85
const_skip ; $86
const_skip ; $87
const MUK ; $88
const_skip ; $89
const KINGLER ; $8A
const CLOYSTER ; $8B
const_skip ; $8C
const ELECTRODE ; $8D
const CLEFABLE ; $8E
const WEEZING ; $8F
const PERSIAN ; $90
const MAROWAK ; $91
const_skip ; $92
const HAUNTER ; $93
const ABRA ; $94
const ALAKAZAM ; $95
const PIDGEOTTO ; $96
const PIDGEOT ; $97
const STARMIE ; $98
const BULBASAUR ; $99
const VENUSAUR ; $9A
const TENTACRUEL ; $9B
const_skip ; $9C
const GOLDEEN ; $9D
const SEAKING ; $9E
const_skip ; $9F
const_skip ; $A0
const_skip ; $A1
const_skip ; $A2
const PONYTA ; $A3
const RAPIDASH ; $A4
const RATTATA ; $A5
const RATICATE ; $A6
const NIDORINO ; $A7
const NIDORINA ; $A8
const GEODUDE ; $A9
const PORYGON ; $AA
const AERODACTYL ; $AB
const_skip ; $AC
const MAGNEMITE ; $AD
const_skip ; $AE
const_skip ; $AF
const CHARMANDER ; $B0
const SQUIRTLE ; $B1
const CHARMELEON ; $B2
const WARTORTLE ; $B3
const CHARIZARD ; $B4
const_skip ; $B5
const FOSSIL_KABUTOPS ; $B6
const FOSSIL_AERODACTYL ; $B7
const MON_GHOST ; $B8
const ODDISH ; $B9
const GLOOM ; $BA
const VILEPLUME ; $BB
const BELLSPROUT ; $BC
const WEEPINBELL ; $BD
const VICTREEBEL ; $BE
const RHYDON ; $01
const KANGASKHAN ; $02
const NIDORAN_M ; $03
const CLEFAIRY ; $04
const SPEAROW ; $05
const VOLTORB ; $06
const NIDOKING ; $07
const SLOWBRO ; $08
const IVYSAUR ; $09
const EXEGGUTOR ; $0A
const LICKITUNG ; $0B
const EXEGGCUTE ; $0C
const GRIMER ; $0D
const GENGAR ; $0E
const NIDORAN_F ; $0F
const NIDOQUEEN ; $10
const CUBONE ; $11
const RHYHORN ; $12
const LAPRAS ; $13
const ARCANINE ; $14
const MEW ; $15
const GYARADOS ; $16
const SHELLDER ; $17
const TENTACOOL ; $18
const GASTLY ; $19
const SCYTHER ; $1A
const STARYU ; $1B
const BLASTOISE ; $1C
const PINSIR ; $1D
const TANGELA ; $1E
const MISSINGNO_1F ; $1F
const MISSINGNO_20 ; $20
const GROWLITHE ; $21
const ONIX ; $22
const FEAROW ; $23
const PIDGEY ; $24
const SLOWPOKE ; $25
const KADABRA ; $26
const GRAVELER ; $27
const CHANSEY ; $28
const MACHOKE ; $29
const MR_MIME ; $2A
const HITMONLEE ; $2B
const HITMONCHAN ; $2C
const ARBOK ; $2D
const PARASECT ; $2E
const PSYDUCK ; $2F
const DROWZEE ; $30
const GOLEM ; $31
const MISSINGNO_32 ; $32
const MAGMAR ; $33
const MISSINGNO_34 ; $34
const ELECTABUZZ ; $35
const MAGNETON ; $36
const KOFFING ; $37
const MISSINGNO_38 ; $38
const MANKEY ; $39
const SEEL ; $3A
const DIGLETT ; $3B
const TAUROS ; $3C
const MISSINGNO_3D ; $3D
const MISSINGNO_3E ; $3E
const MISSINGNO_3F ; $3F
const FARFETCHD ; $40
const VENONAT ; $41
const DRAGONITE ; $42
const MISSINGNO_43 ; $43
const MISSINGNO_44 ; $44
const MISSINGNO_45 ; $45
const DODUO ; $46
const POLIWAG ; $47
const JYNX ; $48
const MOLTRES ; $49
const ARTICUNO ; $4A
const ZAPDOS ; $4B
const DITTO ; $4C
const MEOWTH ; $4D
const KRABBY ; $4E
const MISSINGNO_4F ; $4F
const MISSINGNO_50 ; $50
const MISSINGNO_51 ; $51
const VULPIX ; $52
const NINETALES ; $53
const PIKACHU ; $54
const RAICHU ; $55
const MISSINGNO_56 ; $56
const MISSINGNO_57 ; $57
const DRATINI ; $58
const DRAGONAIR ; $59
const KABUTO ; $5A
const KABUTOPS ; $5B
const HORSEA ; $5C
const SEADRA ; $5D
const MISSINGNO_5E ; $5E
const MISSINGNO_5F ; $5F
const SANDSHREW ; $60
const SANDSLASH ; $61
const OMANYTE ; $62
const OMASTAR ; $63
const JIGGLYPUFF ; $64
const WIGGLYTUFF ; $65
const EEVEE ; $66
const FLAREON ; $67
const JOLTEON ; $68
const VAPOREON ; $69
const MACHOP ; $6A
const ZUBAT ; $6B
const EKANS ; $6C
const PARAS ; $6D
const POLIWHIRL ; $6E
const POLIWRATH ; $6F
const WEEDLE ; $70
const KAKUNA ; $71
const BEEDRILL ; $72
const MISSINGNO_73 ; $73
const DODRIO ; $74
const PRIMEAPE ; $75
const DUGTRIO ; $76
const VENOMOTH ; $77
const DEWGONG ; $78
const MISSINGNO_79 ; $79
const MISSINGNO_7A ; $7A
const CATERPIE ; $7B
const METAPOD ; $7C
const BUTTERFREE ; $7D
const MACHAMP ; $7E
const MISSINGNO_7F ; $7F
const GOLDUCK ; $80
const HYPNO ; $81
const GOLBAT ; $82
const MEWTWO ; $83
const SNORLAX ; $84
const MAGIKARP ; $85
const MISSINGNO_86 ; $86
const MISSINGNO_87 ; $87
const MUK ; $88
const MISSINGNO_89 ; $89
const KINGLER ; $8A
const CLOYSTER ; $8B
const MISSINGNO_8C ; $8C
const ELECTRODE ; $8D
const CLEFABLE ; $8E
const WEEZING ; $8F
const PERSIAN ; $90
const MAROWAK ; $91
const MISSINGNO_92 ; $92
const HAUNTER ; $93
const ABRA ; $94
const ALAKAZAM ; $95
const PIDGEOTTO ; $96
const PIDGEOT ; $97
const STARMIE ; $98
const BULBASAUR ; $99
const VENUSAUR ; $9A
const TENTACRUEL ; $9B
const MISSINGNO_9C ; $9C
const GOLDEEN ; $9D
const SEAKING ; $9E
const MISSINGNO_9F ; $9F
const MISSINGNO_A0 ; $A0
const MISSINGNO_A1 ; $A1
const MISSINGNO_A2 ; $A2
const PONYTA ; $A3
const RAPIDASH ; $A4
const RATTATA ; $A5
const RATICATE ; $A6
const NIDORINO ; $A7
const NIDORINA ; $A8
const GEODUDE ; $A9
const PORYGON ; $AA
const AERODACTYL ; $AB
const MISSINGNO_AC ; $AC
const MAGNEMITE ; $AD
const MISSINGNO_AE ; $AE
const MISSINGNO_AF ; $AF
const CHARMANDER ; $B0
const SQUIRTLE ; $B1
const CHARMELEON ; $B2
const WARTORTLE ; $B3
const CHARIZARD ; $B4
const MISSINGNO_B5 ; $B5
const FOSSIL_KABUTOPS ; $B6
const FOSSIL_AERODACTYL ; $B7
const MON_GHOST ; $B8
const ODDISH ; $B9
const GLOOM ; $BA
const VILEPLUME ; $BB
const BELLSPROUT ; $BC
const WEEPINBELL ; $BD
const VICTREEBEL ; $BE
NUM_POKEMON_INDEXES EQU const_value - 1
; starters
STARTER1 EQU CHARMANDER
STARTER2 EQU SQUIRTLE
STARTER3 EQU BULBASAUR
; ghost Marowak in Pokémon Tower
RESTLESS_SOUL EQU MAROWAK

View file

@ -0,0 +1,41 @@
PARTY_LENGTH EQU 6
MONS_PER_BOX EQU 20
NUM_BOXES EQU 12
HOF_MON EQU $10
HOF_TEAM EQU PARTY_LENGTH * HOF_MON
HOF_TEAM_CAPACITY EQU 50
; mon data locations
; Note that some values are not supported by all functions that use these values.
const_def
const PLAYER_PARTY_DATA ; 0
const ENEMY_PARTY_DATA ; 1
const BOX_DATA ; 2
const DAYCARE_DATA ; 3
const BATTLE_MON_DATA ; 4
; See data/pokemon/evos_moves.asm
; Evolution types
const_def 1
const EV_LEVEL ; 1
const EV_ITEM ; 2
const EV_TRADE ; 3
MAX_EVOLUTIONS EQU 3
EVOLUTION_SIZE EQU 4
; wMonHGrowthRate values
; GrowthRateTable indexes (see data/growth_rates.asm)
const_def
const GROWTH_MEDIUM_FAST
const GROWTH_SLIGHTLY_FAST
const GROWTH_SLIGHTLY_SLOW
const GROWTH_MEDIUM_SLOW
const GROWTH_FAST
const GROWTH_SLOW

View file

@ -0,0 +1,58 @@
; EmotionBubblesPointerTable indexes (see engine/overworld/emotion_bubbles.asm)
const_def
const EXCLAMATION_BUBBLE ; 0
const QUESTION_BUBBLE ; 1
const SMILE_BUBBLE ; 2
; slot symbols
SLOTS7 EQU $0200
SLOTSBAR EQU $0604
SLOTSCHERRY EQU $0A08
SLOTSFISH EQU $0E0C
SLOTSBIRD EQU $1210
SLOTSMOUSE EQU $1614
; StartSlotMachine dialogs
SLOTS_OUTOFORDER EQU $fd
SLOTS_OUTTOLUNCH EQU $fe
SLOTS_SOMEONESKEYS EQU $ff
; in game trades
; TradeMons indexes (see data/events/trades.asm)
const_def
const TRADE_FOR_TERRY
const TRADE_FOR_MARCEL
const TRADE_FOR_CHIKUCHIKU
const TRADE_FOR_SAILOR
const TRADE_FOR_DUX
const TRADE_FOR_MARC
const TRADE_FOR_LOLA
const TRADE_FOR_DORIS
const TRADE_FOR_CRINKLES
const TRADE_FOR_SPOT
; in game trade dialog sets
; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm)
const_def
const TRADE_DIALOGSET_CASUAL
const TRADE_DIALOGSET_POLITE
const TRADE_DIALOGSET_HAPPY
; badges
; wObtainedBadges and wBeatGymFlags bits
const_def
const BIT_BOULDERBADGE ; 0
const BIT_CASCADEBADGE ; 1
const BIT_THUNDERBADGE ; 2
const BIT_RAINBOWBADGE ; 3
const BIT_SOULBADGE ; 4
const BIT_MARSHBADGE ; 5
const BIT_VOLCANOBADGE ; 6
const BIT_EARTHBADGE ; 7
NUM_BADGES EQU const_value
; OaksAideScript results
OAKS_AIDE_BAG_FULL EQU $00
OAKS_AIDE_GOT_ITEM EQU $01
OAKS_AIDE_NOT_ENOUGH_MONS EQU $80
OAKS_AIDE_REFUSED EQU $ff

View file

@ -0,0 +1,27 @@
ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
USING_EXTERNAL_CLOCK EQU $01
USING_INTERNAL_CLOCK EQU $02
CONNECTION_NOT_ESTABLISHED EQU $ff
; signals the start of an array of bytes transferred over the link cable
SERIAL_PREAMBLE_BYTE EQU $FD
; this byte is used when there is no data to send
SERIAL_NO_DATA_BYTE EQU $FE
; signals the end of one part of a patch list (there are two parts) for player/enemy party data
SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
LINK_STATE_NONE EQU $00 ; not using link
LINK_STATE_IN_CABLE_CLUB EQU $01 ; in a cable club room (Colosseum or Trade Centre)
LINK_STATE_START_TRADE EQU $02 ; pre-trade selection screen initialisation
LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation
LINK_STATE_BATTLING EQU $04 ; in a link battle
LINK_STATE_RESET EQU $05 ; reset game (unused)
LINK_STATE_TRADING EQU $32 ; in a link trade
LINKBATTLE_RUN EQU $F
LINKBATTLE_STRUGGLE EQU $E
LINKBATTLE_NO_ACTION EQU $D

176
constants/sprite_constants.asm Executable file → Normal file
View file

@ -1,101 +1,77 @@
; pokemon's overworld sprites
const_value = 0
const SPRITE_MON ; $0
const SPRITE_BALL_M ; $1
const SPRITE_HELIX ; $2
const SPRITE_FAIRY ; $3
const SPRITE_BIRD_M ; $4
const SPRITE_WATER ; $5
const SPRITE_BUG ; $6
const SPRITE_GRASS ; $7
const SPRITE_SNAKE ; $8
const SPRITE_QUADRUPED ; $9
; overworld sprites
const_value = 1
const SPRITE_RED ; $01
const SPRITE_BLUE ; $02
const SPRITE_OAK ; $03
const SPRITE_BUG_CATCHER ; $04
const SPRITE_SLOWBRO ; $05
const SPRITE_LASS ; $06
const SPRITE_BLACK_HAIR_BOY_1 ; $07
const SPRITE_LITTLE_GIRL ; $08
const SPRITE_BIRD ; $09
const SPRITE_FAT_BALD_GUY ; $0a
const SPRITE_GAMBLER ; $0b
const SPRITE_BLACK_HAIR_BOY_2 ; $0c
const SPRITE_GIRL ; $0d
const SPRITE_HIKER ; $0e
const SPRITE_FOULARD_WOMAN ; $0f
const SPRITE_GENTLEMAN ; $10
const SPRITE_DAISY ; $11
const SPRITE_BIKER ; $12
const SPRITE_SAILOR ; $13
const SPRITE_COOK ; $14
const SPRITE_BIKE_SHOP_GUY ; $15
const SPRITE_MR_FUJI ; $16
const SPRITE_GIOVANNI ; $17
const SPRITE_ROCKET ; $18
const SPRITE_MEDIUM ; $19
const SPRITE_WAITER ; $1a
const SPRITE_ERIKA ; $1b
const SPRITE_MOM_GEISHA ; $1c
const SPRITE_BRUNETTE_GIRL ; $1d
const SPRITE_LANCE ; $1e
const SPRITE_OAK_SCIENTIST_AIDE ; $1f
const SPRITE_OAK_AIDE ; $20
const SPRITE_ROCKER ; $21
const SPRITE_SWIMMER ; $22
const SPRITE_WHITE_PLAYER ; $23
const SPRITE_GYM_HELPER ; $24
const SPRITE_OLD_PERSON ; $25
const SPRITE_MART_GUY ; $26
const SPRITE_FISHER ; $27
const SPRITE_OLD_MEDIUM_WOMAN ; $28
const SPRITE_NURSE ; $29
const SPRITE_CABLE_CLUB_WOMAN ; $2a
const SPRITE_MR_MASTERBALL ; $2b
const SPRITE_LAPRAS_GIVER ; $2c
const SPRITE_WARDEN ; $2d
const SPRITE_SS_CAPTAIN ; $2e
const SPRITE_FISHER2 ; $2f
const SPRITE_BLACKBELT ; $30
const SPRITE_GUARD ; $31
const SPRITE_COP_GUARD ; $32
const SPRITE_MOM ; $33
const SPRITE_BALDING_GUY ; $34
const SPRITE_YOUNG_BOY ; $35
const SPRITE_GAMEBOY_KID ; $36
const SPRITE_GAMEBOY_KID_COPY ; $37
const SPRITE_CLEFAIRY ; $38
const SPRITE_AGATHA ; $39
const SPRITE_BRUNO ; $3a
const SPRITE_LORELEI ; $3b
const SPRITE_SEEL ; $3c
const SPRITE_BALL ; $3d
const SPRITE_OMANYTE ; $3e
const SPRITE_BOULDER ; $3f
const SPRITE_PAPER_SHEET ; $40
const SPRITE_BOOK_MAP_DEX ; $41
const SPRITE_CLIPBOARD ; $42
const SPRITE_SNORLAX ; $43
const SPRITE_OLD_AMBER_COPY ; $44
const SPRITE_OLD_AMBER ; $45
const SPRITE_LYING_OLD_MAN_UNUSED_1 ; $46
const SPRITE_LYING_OLD_MAN_UNUSED_2 ; $47
const SPRITE_LYING_OLD_MAN ; $48
; different kinds of people events
ITEM EQU $80
TRAINER EQU $40
BOULDER_MOVEMENT_BYTE_2 EQU $10
; sprite facing directions
SPRITE_FACING_DOWN EQU $00
SPRITE_FACING_UP EQU $04
SPRITE_FACING_LEFT EQU $08
SPRITE_FACING_RIGHT EQU $0C
; SpriteSheetPointerTable indexes (see data/sprites/sprites.asm)
const_def
const SPRITE_NONE ; $00
const SPRITE_RED ; $01
const SPRITE_BLUE ; $02
const SPRITE_OAK ; $03
const SPRITE_YOUNGSTER ; $04
const SPRITE_MONSTER ; $05
const SPRITE_COOLTRAINER_F ; $06
const SPRITE_COOLTRAINER_M ; $07
const SPRITE_LITTLE_GIRL ; $08
const SPRITE_BIRD ; $09
const SPRITE_MIDDLE_AGED_MAN ; $0a
const SPRITE_GAMBLER ; $0b
const SPRITE_SUPER_NERD ; $0c
const SPRITE_GIRL ; $0d
const SPRITE_HIKER ; $0e
const SPRITE_BEAUTY ; $0f
const SPRITE_GENTLEMAN ; $10
const SPRITE_DAISY ; $11
const SPRITE_BIKER ; $12
const SPRITE_SAILOR ; $13
const SPRITE_COOK ; $14
const SPRITE_BIKE_SHOP_CLERK ; $15
const SPRITE_MR_FUJI ; $16
const SPRITE_GIOVANNI ; $17
const SPRITE_ROCKET ; $18
const SPRITE_CHANNELER ; $19
const SPRITE_WAITER ; $1a
const SPRITE_ERIKA ; $1b
const SPRITE_MIDDLE_AGED_WOMAN ; $1c
const SPRITE_BRUNETTE_GIRL ; $1d
const SPRITE_LANCE ; $1e
const SPRITE_UNUSED_SCIENTIST ; $1f
const SPRITE_SCIENTIST ; $20
const SPRITE_ROCKER ; $21
const SPRITE_SWIMMER ; $22
const SPRITE_SAFARI_ZONE_WORKER ; $23
const SPRITE_GYM_GUIDE ; $24
const SPRITE_GRAMPS ; $25
const SPRITE_CLERK ; $26
const SPRITE_FISHING_GURU ; $27
const SPRITE_GRANNY ; $28
const SPRITE_NURSE ; $29
const SPRITE_LINK_RECEPTIONIST ; $2a
const SPRITE_SILPH_PRESIDENT ; $2b
const SPRITE_SILPH_WORKER ; $2c
const SPRITE_WARDEN ; $2d
const SPRITE_CAPTAIN ; $2e
const SPRITE_FISHER ; $2f
const SPRITE_KOGA ; $30
const SPRITE_GUARD ; $31
const SPRITE_UNUSED_GUARD ; $32
const SPRITE_MOM ; $33
const SPRITE_BALDING_GUY ; $34
const SPRITE_LITTLE_BOY ; $35
const SPRITE_UNUSED_GAMEBOY_KID ; $36
const SPRITE_GAMEBOY_KID ; $37
const SPRITE_FAIRY ; $38
const SPRITE_AGATHA ; $39
const SPRITE_BRUNO ; $3a
const SPRITE_LORELEI ; $3b
const SPRITE_SEEL ; $3c
FIRST_STILL_SPRITE EQU const_value
const SPRITE_POKE_BALL ; $3d
const SPRITE_FOSSIL ; $3e
const SPRITE_BOULDER ; $3f
const SPRITE_PAPER ; $40
const SPRITE_POKEDEX ; $41
const SPRITE_CLIPBOARD ; $42
const SPRITE_SNORLAX ; $43
const SPRITE_UNUSED_OLD_AMBER ; $44
const SPRITE_OLD_AMBER ; $45
const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46
const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47
const SPRITE_GAMBLER_ASLEEP ; $48

View file

@ -0,0 +1,26 @@
; sprite facing directions
const_def 0, $04
const SPRITE_FACING_DOWN ; $00
const SPRITE_FACING_UP ; $04
const SPRITE_FACING_LEFT ; $08
const SPRITE_FACING_RIGHT ; $0C
const_def 0, $40
const NPC_MOVEMENT_DOWN ; $00
const NPC_MOVEMENT_UP ; $40
const NPC_MOVEMENT_LEFT ; $80
const NPC_MOVEMENT_RIGHT ; $C0
NPC_CHANGE_FACING EQU $E0
; player direction constants
const_def
const PLAYER_DIR_BIT_RIGHT ; 0
const PLAYER_DIR_BIT_LEFT ; 1
const PLAYER_DIR_BIT_DOWN ; 2
const PLAYER_DIR_BIT_UP ; 3
PLAYER_DIR_RIGHT EQU 1 << PLAYER_DIR_BIT_RIGHT
PLAYER_DIR_LEFT EQU 1 << PLAYER_DIR_BIT_LEFT
PLAYER_DIR_DOWN EQU 1 << PLAYER_DIR_BIT_DOWN
PLAYER_DIR_UP EQU 1 << PLAYER_DIR_BIT_UP

View file

@ -1,3 +0,0 @@
STARTER1 EQU CHARMANDER
STARTER2 EQU SQUIRTLE
STARTER3 EQU BULBASAUR

View file

@ -1,32 +0,0 @@
; non-volatile statuses
SLP EQU %111 ; sleep counter
PSN EQU 3
BRN EQU 4
FRZ EQU 5
PAR EQU 6
; volatile statuses 1
STORING_ENERGY EQU 0 ; Bide
THRASHING_ABOUT EQU 1 ; e.g. Thrash
ATTACKING_MULTIPLE_TIMES EQU 2 ; e.g. Double Kick, Fury Attack
FLINCHED EQU 3
CHARGING_UP EQU 4 ; e.g. Solar Beam, Fly
USING_TRAPPING_MOVE EQU 5 ; e.g. Wrap
INVULNERABLE EQU 6 ; charging up Fly/Dig
CONFUSED EQU 7
; volatile statuses 2
USING_X_ACCURACY EQU 0
PROTECTED_BY_MIST EQU 1
GETTING_PUMPED EQU 2 ; Focus Energy
; EQU 3 ; unused
HAS_SUBSTITUTE_UP EQU 4
NEEDS_TO_RECHARGE EQU 5 ; Hyper Beam
USING_RAGE EQU 6
SEEDED EQU 7
; volatile statuses 3
BADLY_POISONED EQU 0
HAS_LIGHT_SCREEN_UP EQU 1
HAS_REFLECT_UP EQU 2
TRANSFORMED EQU 3

View file

@ -1,14 +1,21 @@
; special text IDs
TEXT_MON_FAINTED EQU $d0
TEXT_BLACKED_OUT EQU $d1
TEXT_REPEL_WORE_OFF EQU $d2
TEXT_SAFARI_GAME_OVER EQU $d3
NAME_LENGTH EQU 11
ITEM_NAME_LENGTH EQU 13
; PrintNumber
BIT_MONEY_SIGN EQU 5
BIT_LEFT_ALIGN EQU 6
BIT_LEADING_ZEROES EQU 7
const_def 5
const BIT_MONEY_SIGN ; 5
const BIT_LEFT_ALIGN ; 6
const BIT_LEADING_ZEROES ; 7
MONEY_SIGN EQU (1 << BIT_MONEY_SIGN)
LEFT_ALIGN EQU (1 << BIT_LEFT_ALIGN)
LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
; special text IDs (see home/text_script.asm)
const_def $d0
const TEXT_MON_FAINTED ; $d0
const TEXT_BLACKED_OUT ; $d1
const TEXT_REPEL_WORE_OFF ; $d2
const TEXT_SAFARI_GAME_OVER ; $d3
TEXT_START_MENU EQU $00

View file

@ -1,5 +1,6 @@
const_value = 0
; tileset ids
; Tilesets indexes (see data/tilesets/tileset_headers.asm)
const_def
const OVERWORLD ; 0
const REDS_HOUSE_1 ; 1
const MART ; 2

113
constants/trainer_constants.asm Executable file → Normal file
View file

@ -1,55 +1,64 @@
OPP_ID_OFFSET EQU 200
trainer_const: MACRO
\1 EQU const_value
OPP_\1 EQU const_value + 200
const_value = const_value + 1
const \1
OPP_\1 EQU OPP_ID_OFFSET + \1
ENDM
const_value = 1
trainer_const YOUNGSTER ; $01
trainer_const BUG_CATCHER ; $02
trainer_const LASS ; $03
trainer_const SAILOR ; $04
trainer_const JR_TRAINER_M ; $05
trainer_const JR_TRAINER_F ; $06
trainer_const POKEMANIAC ; $07
trainer_const SUPER_NERD ; $08
trainer_const HIKER ; $09
trainer_const BIKER ; $0A
trainer_const BURGLAR ; $0B
trainer_const ENGINEER ; $0C
trainer_const JUGGLER_X ; $0D
trainer_const FISHER ; $0E
trainer_const SWIMMER ; $0F
trainer_const CUE_BALL ; $10
trainer_const GAMBLER ; $11
trainer_const BEAUTY ; $12
trainer_const PSYCHIC_TR ; $13
trainer_const ROCKER ; $14
trainer_const JUGGLER ; $15
trainer_const TAMER ; $16
trainer_const BIRD_KEEPER ; $17
trainer_const BLACKBELT ; $18
trainer_const SONY1 ; $19
trainer_const PROF_OAK ; $1A
trainer_const CHIEF ; $1B
trainer_const SCIENTIST ; $1C
trainer_const GIOVANNI ; $1D
trainer_const ROCKET ; $1E
trainer_const COOLTRAINER_M ; $1F
trainer_const COOLTRAINER_F ; $20
trainer_const BRUNO ; $21
trainer_const BROCK ; $22
trainer_const MISTY ; $23
trainer_const LT_SURGE ; $24
trainer_const ERIKA ; $25
trainer_const KOGA ; $26
trainer_const BLAINE ; $27
trainer_const SABRINA ; $28
trainer_const GENTLEMAN ; $29
trainer_const SONY2 ; $2A
trainer_const SONY3 ; $2B
trainer_const LORELEI ; $2C
trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E
trainer_const LANCE ; $2F
; trainer class ids
; indexes for:
; - TrainerNames (see data/trainers/names.asm)
; - TrainerNamePointers (see data/trainers/name_pointers.asm)
; - TrainerDataPointers (see data/trainers/parties.asm)
; - TrainerPicAndMoneyPointers (see data/trainers/pic_pointers_money.asm)
; - TrainerAIPointers (see data/trainers/ai_pointers.asm)
; - TrainerClassMoveChoiceModifications (see data/trainers/move_choices.asm)
const_def
trainer_const NOBODY ; $00
trainer_const YOUNGSTER ; $01
trainer_const BUG_CATCHER ; $02
trainer_const LASS ; $03
trainer_const SAILOR ; $04
trainer_const JR_TRAINER_M ; $05
trainer_const JR_TRAINER_F ; $06
trainer_const POKEMANIAC ; $07
trainer_const SUPER_NERD ; $08
trainer_const HIKER ; $09
trainer_const BIKER ; $0A
trainer_const BURGLAR ; $0B
trainer_const ENGINEER ; $0C
trainer_const UNUSED_JUGGLER ; $0D
trainer_const FISHER ; $0E
trainer_const SWIMMER ; $0F
trainer_const CUE_BALL ; $10
trainer_const GAMBLER ; $11
trainer_const BEAUTY ; $12
trainer_const PSYCHIC_TR ; $13
trainer_const ROCKER ; $14
trainer_const JUGGLER ; $15
trainer_const TAMER ; $16
trainer_const BIRD_KEEPER ; $17
trainer_const BLACKBELT ; $18
trainer_const RIVAL1 ; $19
trainer_const PROF_OAK ; $1A
trainer_const CHIEF ; $1B
trainer_const SCIENTIST ; $1C
trainer_const GIOVANNI ; $1D
trainer_const ROCKET ; $1E
trainer_const COOLTRAINER_M ; $1F
trainer_const COOLTRAINER_F ; $20
trainer_const BRUNO ; $21
trainer_const BROCK ; $22
trainer_const MISTY ; $23
trainer_const LT_SURGE ; $24
trainer_const ERIKA ; $25
trainer_const KOGA ; $26
trainer_const BLAINE ; $27
trainer_const SABRINA ; $28
trainer_const GENTLEMAN ; $29
trainer_const RIVAL2 ; $2A
trainer_const RIVAL3 ; $2B
trainer_const LORELEI ; $2C
trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E
trainer_const LANCE ; $2F

40
constants/type_constants.asm Executable file → Normal file
View file

@ -1,16 +1,24 @@
; Elemental types
NORMAL EQU $00
FIGHTING EQU $01
FLYING EQU $02
POISON EQU $03
GROUND EQU $04
ROCK EQU $05
BUG EQU $07
GHOST EQU $08
FIRE EQU $14
WATER EQU $15
GRASS EQU $16
ELECTRIC EQU $17
PSYCHIC EQU $18
ICE EQU $19
DRAGON EQU $1A
; TypeNames indexes (see data/types/names.asm)
const_def
PHYSICAL EQU const_value
const NORMAL ; $00
const FIGHTING ; $01
const FLYING ; $02
const POISON ; $03
const GROUND ; $04
const ROCK ; $05
const BIRD ; $06
const BUG ; $07
const GHOST ; $08
const_next 20
SPECIAL EQU const_value
const FIRE ; $14
const WATER ; $15
const GRASS ; $16
const ELECTRIC ; $17
const PSYCHIC_TYPE ; $18
const ICE ; $19
const DRAGON ; $1A