RGBDS DEF Syntax Update

This commit is contained in:
vulcandth 2022-05-11 21:14:28 -05:00
parent b9ab6dcb31
commit 4f81a0176d
28 changed files with 862 additions and 862 deletions

View File

@ -283,33 +283,33 @@ Speaking of generic constants, there are multiple constants aleady defined for d
Constants for WRAM address offsets (i.e. for the likes of ``wAddressN - wAddress``) are sometimes a good idea às well, and typically follow the addresses defined in some WRAM macro. For example, look at the constants defined with the previously seen ``card_data_struct`` macro in mind:
```
CARD_DATA_TYPE EQU $00
CARD_DATA_GFX EQU $01
CARD_DATA_NAME EQU $03
CARD_DATA_RARITY EQU $05
DEF CARD_DATA_TYPE EQU $00
DEF CARD_DATA_GFX EQU $01
DEF CARD_DATA_NAME EQU $03
DEF CARD_DATA_RARITY EQU $05
(...)
TRN_CARD_DATA_LENGTH EQU $0e
ENERGY_CARD_DATA_LENGTH EQU $0e
PKMN_CARD_DATA_LENGTH EQU $41
DEF TRN_CARD_DATA_LENGTH EQU $0e
DEF ENERGY_CARD_DATA_LENGTH EQU $0e
DEF PKMN_CARD_DATA_LENGTH EQU $41
```
Some constants make sense to have as both a value and a flag. Again, button constants are a good example of this. For these, the convention is to use ``CONSTANT_NAME`` for the value, and ``CONSTANT_NAME_F`` for the flag, so you can use either of them depending on the assembly instruction (e.g. ``and CONSTANT_NAME`` or ``bit CONSTANT_NAME_F, a``. For example:
```
A_BUTTON_F EQU 0
B_BUTTON_F EQU 1
DEF A_BUTTON_F EQU 0
DEF B_BUTTON_F EQU 1
(...)
A_BUTTON EQU 1 << A_BUTTON_F ; $01
B_BUTTON EQU 1 << B_BUTTON_F ; $02
DEF A_BUTTON EQU 1 << A_BUTTON_F ; $01
DEF B_BUTTON EQU 1 << B_BUTTON_F ; $02
(...)
```
Bit mask constants are also useful if they are used multiple times. Buttons again are a simple enough example to illustrate this:
```
BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START ; $0f
D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN ; $f0
DEF BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START ; $0f
DEF D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN ; $f0
```
Finally, note that constants that are exclusive to a specific feature or function should generally be local, and thus placed above the code that uses them. This is usually not the case, however, so you should usually be looking to declare them inside the constants/ directory as mentioned before. This kind of refactoring is also more appropriate when the disassembly is in a more advanced state as well.

View File

@ -334,9 +334,9 @@
const DUEL_ANIM_96 ; $60
; animations passed this point are treated differently
DUEL_SPECIAL_ANIMS EQU const_value
DEF DUEL_SPECIAL_ANIMS EQU const_value
DUEL_SCREEN_ANIMS EQU const_value
DEF DUEL_SCREEN_ANIMS EQU const_value
const DUEL_ANIM_SMALL_SHAKE_X ; $61
const DUEL_ANIM_BIG_SHAKE_X ; $62
const DUEL_ANIM_SMALL_SHAKE_Y ; $63
@ -368,10 +368,10 @@ DUEL_SCREEN_ANIMS EQU const_value
const DUEL_ANIM_STRUCT_DUELIST_SIDE ; $2
const DUEL_ANIM_STRUCT_LOCATION_PARAM ; $3
const DUEL_ANIM_STRUCT_DAMAGE ; $4
const_value = const_value + 1
DEF const_value = const_value + 1
const DUEL_ANIM_STRUCT_UNKNOWN_2 ; $6
const DUEL_ANIM_STRUCT_BANK ; $7
DUEL_ANIM_STRUCT_SIZE EQU const_value
DEF DUEL_ANIM_STRUCT_SIZE EQU const_value
; ow_frame struct constants
const_def
@ -380,9 +380,9 @@ DUEL_ANIM_STRUCT_SIZE EQU const_value
const OW_FRAME_STRUCT_VRAM_BANK ; $2
const OW_FRAME_STRUCT_TILESET_BANK ; $3
const OW_FRAME_STRUCT_TILESET ; $4
const_value = const_value + 1
DEF const_value = const_value + 1
const OW_FRAME_STRUCT_TILESET_OFFSET ; $6
const_value = const_value + 1
OW_FRAME_STRUCT_SIZE EQU const_value
DEF const_value = const_value + 1
DEF OW_FRAME_STRUCT_SIZE EQU const_value
NUM_OW_FRAMESET_SUBGROUPS EQU 3
DEF NUM_OW_FRAMESET_SUBGROUPS EQU 3

View File

@ -1,4 +1,4 @@
NUM_CARDS_IN_BOOSTER EQU 10
DEF NUM_CARDS_IN_BOOSTER EQU 10
const_def
const BOOSTER_CARD_TYPE_GRASS ; $00
@ -10,7 +10,7 @@ NUM_CARDS_IN_BOOSTER EQU 10
const BOOSTER_CARD_TYPE_COLORLESS ; $06
const BOOSTER_CARD_TYPE_TRAINER ; $07
const BOOSTER_CARD_TYPE_ENERGY ; $08
NUM_BOOSTER_CARD_TYPES EQU const_value
DEF NUM_BOOSTER_CARD_TYPES EQU const_value
const_def
const BOOSTER_COLOSSEUM ; $00
@ -48,4 +48,4 @@ NUM_BOOSTER_CARD_TYPES EQU const_value
const BOOSTER_ENERGY_WATER_FIGHTING ; $1a
const BOOSTER_ENERGY_GRASS_PSYCHIC ; $1b
const BOOSTER_ENERGY_RANDOM ; $1c
NO_BOOSTER EQU $ff
DEF NO_BOOSTER EQU $ff

View File

@ -227,4 +227,4 @@
const POKEMON_FLUTE ; $e2
const GAMBLER ; $e3
const RECYCLE ; $e4
NUM_CARDS EQU const_value - 1
DEF NUM_CARDS EQU const_value - 1

View File

@ -1,82 +1,82 @@
NONE EQU $0
DEF NONE EQU $0
; sCardCollection constants
CARD_COLLECTION_SIZE EQU $100 ; cards
MAX_AMOUNT_OF_CARD EQU 99
CARD_NOT_OWNED_F EQU 7
CARD_NOT_OWNED EQU 1 << CARD_NOT_OWNED_F
CARD_COUNT_MASK EQU $7f
DEF CARD_COLLECTION_SIZE EQU $100 ; cards
DEF MAX_AMOUNT_OF_CARD EQU 99
DEF CARD_NOT_OWNED_F EQU 7
DEF CARD_NOT_OWNED EQU 1 << CARD_NOT_OWNED_F
DEF CARD_COUNT_MASK EQU $7f
; sDeck* and generic deck constants
NUM_DECKS EQU 4
DECK_NAME_SIZE EQU 24
DECK_NAME_SIZE_WO_SUFFIX EQU 21 ; name part before "deck"
DECK_SIZE EQU 60
DECK_STRUCT_SIZE EQU DECK_NAME_SIZE + DECK_SIZE
DECK_CONFIG_BUFFER_SIZE EQU 80
MAX_NUM_SAME_NAME_CARDS EQU 4
MAX_UNNAMED_DECK_NUM EQU 999
DEF NUM_DECKS EQU 4
DEF DECK_NAME_SIZE EQU 24
DEF DECK_NAME_SIZE_WO_SUFFIX EQU 21 ; name part before "deck"
DEF DECK_SIZE EQU 60
DEF DECK_STRUCT_SIZE EQU DECK_NAME_SIZE + DECK_SIZE
DEF DECK_CONFIG_BUFFER_SIZE EQU 80
DEF MAX_NUM_SAME_NAME_CARDS EQU 4
DEF MAX_UNNAMED_DECK_NUM EQU 999
; card data offsets (data/cards.asm and card_data_struct)
; all card types
CARD_DATA_TYPE EQU $00
CARD_DATA_GFX EQU $01
CARD_DATA_NAME EQU $03
CARD_DATA_RARITY EQU $05
CARD_DATA_SET EQU $06
CARD_DATA_ID EQU $07
CARD_DATA_EFFECT_COMMANDS EQU $08 ; !TYPE_PKMN
CARD_DATA_HP EQU $08 ; TYPE_PKMN
CARD_DATA_STAGE EQU $09 ; TYPE_PKMN
CARD_DATA_NONPKMN_DESCRIPTION EQU $0a ; !TYPE_PKMN
CARD_DATA_PREEVO_NAME EQU $0a ; TYPE_PKMN
DEF CARD_DATA_TYPE EQU $00
DEF CARD_DATA_GFX EQU $01
DEF CARD_DATA_NAME EQU $03
DEF CARD_DATA_RARITY EQU $05
DEF CARD_DATA_SET EQU $06
DEF CARD_DATA_ID EQU $07
DEF CARD_DATA_EFFECT_COMMANDS EQU $08 ; !TYPE_PKMN
DEF CARD_DATA_HP EQU $08 ; TYPE_PKMN
DEF CARD_DATA_STAGE EQU $09 ; TYPE_PKMN
DEF CARD_DATA_NONPKMN_DESCRIPTION EQU $0a ; !TYPE_PKMN
DEF CARD_DATA_PREEVO_NAME EQU $0a ; TYPE_PKMN
TRN_CARD_DATA_LENGTH EQU $0e
ENERGY_CARD_DATA_LENGTH EQU $0e
DEF TRN_CARD_DATA_LENGTH EQU $0e
DEF ENERGY_CARD_DATA_LENGTH EQU $0e
; TYPE_PKMN card only
CARD_DATA_ATTACK1 EQU $0c
CARD_DATA_ATTACK1_ENERGY_COST EQU $0c
CARD_DATA_ATTACK1_NAME EQU $10
CARD_DATA_ATTACK1_DESCRIPTION EQU $12
CARD_DATA_ATTACK1_DAMAGE EQU $16
CARD_DATA_ATTACK1_CATEGORY EQU $17
CARD_DATA_ATTACK1_EFFECT_COMMANDS EQU $18
CARD_DATA_ATTACK1_FLAG1 EQU $1a
CARD_DATA_ATTACK1_FLAG2 EQU $1b
CARD_DATA_ATTACK1_FLAG3 EQU $1c
CARD_DATA_ATTACK1_EFFECT_PARAM EQU $1d
CARD_DATA_ATTACK1_ANIMATION EQU $1e
DEF CARD_DATA_ATTACK1 EQU $0c
DEF CARD_DATA_ATTACK1_ENERGY_COST EQU $0c
DEF CARD_DATA_ATTACK1_NAME EQU $10
DEF CARD_DATA_ATTACK1_DESCRIPTION EQU $12
DEF CARD_DATA_ATTACK1_DAMAGE EQU $16
DEF CARD_DATA_ATTACK1_CATEGORY EQU $17
DEF CARD_DATA_ATTACK1_EFFECT_COMMANDS EQU $18
DEF CARD_DATA_ATTACK1_FLAG1 EQU $1a
DEF CARD_DATA_ATTACK1_FLAG2 EQU $1b
DEF CARD_DATA_ATTACK1_FLAG3 EQU $1c
DEF CARD_DATA_ATTACK1_EFFECT_PARAM EQU $1d
DEF CARD_DATA_ATTACK1_ANIMATION EQU $1e
; TYPE_PKMN card only
CARD_DATA_ATTACK2 EQU $1f
CARD_DATA_ATTACK2_ENERGY_COST EQU $1f
CARD_DATA_ATTACK2_NAME EQU $23
CARD_DATA_ATTACK2_DESCRIPTION EQU $25
CARD_DATA_ATTACK2_DAMAGE EQU $29
CARD_DATA_ATTACK2_CATEGORY EQU $2a
CARD_DATA_ATTACK2_EFFECT_COMMANDS EQU $2b
CARD_DATA_ATTACK2_FLAG1 EQU $2d
CARD_DATA_ATTACK2_FLAG2 EQU $2e
CARD_DATA_ATTACK2_FLAG3 EQU $2f
CARD_DATA_ATTACK2_EFFECT_PARAM EQU $30
CARD_DATA_ATTACK2_ANIMATION EQU $31
DEF CARD_DATA_ATTACK2 EQU $1f
DEF CARD_DATA_ATTACK2_ENERGY_COST EQU $1f
DEF CARD_DATA_ATTACK2_NAME EQU $23
DEF CARD_DATA_ATTACK2_DESCRIPTION EQU $25
DEF CARD_DATA_ATTACK2_DAMAGE EQU $29
DEF CARD_DATA_ATTACK2_CATEGORY EQU $2a
DEF CARD_DATA_ATTACK2_EFFECT_COMMANDS EQU $2b
DEF CARD_DATA_ATTACK2_FLAG1 EQU $2d
DEF CARD_DATA_ATTACK2_FLAG2 EQU $2e
DEF CARD_DATA_ATTACK2_FLAG3 EQU $2f
DEF CARD_DATA_ATTACK2_EFFECT_PARAM EQU $30
DEF CARD_DATA_ATTACK2_ANIMATION EQU $31
; TYPE_PKMN card only
CARD_DATA_RETREAT_COST EQU $32
CARD_DATA_WEAKNESS EQU $33
CARD_DATA_RESISTANCE EQU $34
CARD_DATA_CATEGORY EQU $35
CARD_DATA_POKEDEX_NUMBER EQU $37
CARD_DATA_UNKNOWN1 EQU $38
CARD_DATA_LEVEL EQU $39
CARD_DATA_LENGTH EQU $3a
CARD_DATA_WEIGHT EQU $3c
CARD_DATA_PKMN_DESCRIPTION EQU $3e
CARD_DATA_UNKNOWN2 EQU $40
DEF CARD_DATA_RETREAT_COST EQU $32
DEF CARD_DATA_WEAKNESS EQU $33
DEF CARD_DATA_RESISTANCE EQU $34
DEF CARD_DATA_CATEGORY EQU $35
DEF CARD_DATA_POKEDEX_NUMBER EQU $37
DEF CARD_DATA_UNKNOWN1 EQU $38
DEF CARD_DATA_LEVEL EQU $39
DEF CARD_DATA_LENGTH EQU $3a
DEF CARD_DATA_WEIGHT EQU $3c
DEF CARD_DATA_PKMN_DESCRIPTION EQU $3e
DEF CARD_DATA_UNKNOWN2 EQU $40
PKMN_CARD_DATA_LENGTH EQU $41
DEF PKMN_CARD_DATA_LENGTH EQU $41
; generic type (color) constants
const_def
@ -86,31 +86,31 @@ PKMN_CARD_DATA_LENGTH EQU $41
const WATER ; $03
const FIGHTING ; $04
const PSYCHIC ; $05
NUM_COLORED_TYPES EQU const_value
DEF NUM_COLORED_TYPES EQU const_value
const COLORLESS ; $06
const UNUSED_TYPE ; $07
NUM_TYPES EQU const_value
DEF NUM_TYPES EQU const_value
; generic type (color) flag constants
FIRE_F EQU $1 << FIRE ; $01
GRASS_F EQU $1 << GRASS ; $02
LIGHTNING_F EQU $1 << LIGHTNING ; $04
WATER_F EQU $1 << WATER ; $08
FIGHTING_F EQU $1 << FIGHTING ; $10
PSYCHIC_F EQU $1 << PSYCHIC ; $20
COLORLESS_F EQU $1 << COLORLESS ; $40
DEF FIRE_F EQU $1 << FIRE ; $01
DEF GRASS_F EQU $1 << GRASS ; $02
DEF LIGHTNING_F EQU $1 << LIGHTNING ; $04
DEF WATER_F EQU $1 << WATER ; $08
DEF FIGHTING_F EQU $1 << FIGHTING ; $10
DEF PSYCHIC_F EQU $1 << PSYCHIC ; $20
DEF COLORLESS_F EQU $1 << COLORLESS ; $40
; CARD_DATA_TYPE constants
TYPE_PKMN_FIRE EQU FIRE
TYPE_PKMN_GRASS EQU GRASS
TYPE_PKMN_LIGHTNING EQU LIGHTNING
TYPE_PKMN_WATER EQU WATER
TYPE_PKMN_FIGHTING EQU FIGHTING
TYPE_PKMN_PSYCHIC EQU PSYCHIC
TYPE_PKMN_COLORLESS EQU COLORLESS
TYPE_PKMN_UNUSED EQU UNUSED_TYPE
DEF TYPE_PKMN_FIRE EQU FIRE
DEF TYPE_PKMN_GRASS EQU GRASS
DEF TYPE_PKMN_LIGHTNING EQU LIGHTNING
DEF TYPE_PKMN_WATER EQU WATER
DEF TYPE_PKMN_FIGHTING EQU FIGHTING
DEF TYPE_PKMN_PSYCHIC EQU PSYCHIC
DEF TYPE_PKMN_COLORLESS EQU COLORLESS
DEF TYPE_PKMN_UNUSED EQU UNUSED_TYPE
const_def TYPE_PKMN_UNUSED + 1 - TYPE_PKMN_FIRE
TYPE_ENERGY EQU const_value
DEF TYPE_ENERGY EQU const_value
const TYPE_ENERGY_FIRE ; $08
const TYPE_ENERGY_GRASS ; $09
const TYPE_ENERGY_LIGHTNING ; $0a
@ -121,17 +121,17 @@ TYPE_ENERGY EQU const_value
const TYPE_ENERGY_UNUSED ; $0f
const TYPE_TRAINER ; $10
const TYPE_TRAINER_UNUSED ; $11
NUM_CARD_TYPES EQU const_value - 1
DEF NUM_CARD_TYPES EQU const_value - 1
TYPE_PKMN EQU %111
TYPE_ENERGY_F EQU 3
TYPE_TRAINER_F EQU 4
DEF TYPE_PKMN EQU %111
DEF TYPE_ENERGY_F EQU 3
DEF TYPE_TRAINER_F EQU 4
; CARD_DATA_RARITY constants
CIRCLE EQU $0
DIAMOND EQU $1
STAR EQU $2
PROMOSTAR EQU $ff
DEF CIRCLE EQU $0
DEF DIAMOND EQU $1
DEF STAR EQU $2
DEF PROMOSTAR EQU $ff
; card set constants (set 1)
const_def
@ -141,113 +141,113 @@ PROMOSTAR EQU $ff
const CARD_SET_LABORATORY ; $3
const CARD_SET_PROMOTIONAL ; $4
const CARD_SET_ENERGY ; $5
NUM_CARD_SETS EQU const_value - 1
DEF NUM_CARD_SETS EQU const_value - 1
; CARD_DATA_SET constants (set 1)
COLOSSEUM EQU CARD_SET_COLOSSEUM << 4
EVOLUTION EQU CARD_SET_EVOLUTION << 4
MYSTERY EQU CARD_SET_MYSTERY << 4
LABORATORY EQU CARD_SET_LABORATORY << 4
PROMOTIONAL EQU CARD_SET_PROMOTIONAL << 4
ENERGY EQU CARD_SET_ENERGY << 4
DEF COLOSSEUM EQU CARD_SET_COLOSSEUM << 4
DEF EVOLUTION EQU CARD_SET_EVOLUTION << 4
DEF MYSTERY EQU CARD_SET_MYSTERY << 4
DEF LABORATORY EQU CARD_SET_LABORATORY << 4
DEF PROMOTIONAL EQU CARD_SET_PROMOTIONAL << 4
DEF ENERGY EQU CARD_SET_ENERGY << 4
; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
FOSSIL EQU $2
GB EQU $7
PRO EQU $8
DEF JUNGLE EQU $1
DEF FOSSIL EQU $2
DEF GB EQU $7
DEF PRO EQU $8
; CARD_DATA_STAGE constants
BASIC EQU $00
STAGE1 EQU $01
STAGE2 EQU $02
STAGE2_WITHOUT_STAGE1 EQU $03
DEF BASIC EQU $00
DEF STAGE1 EQU $01
DEF STAGE2 EQU $02
DEF STAGE2_WITHOUT_STAGE1 EQU $03
; CARD_DATA_WEAKNESS and CARD_DATA_RESISTANCE constants
WR_FIRE EQU $80
WR_GRASS EQU $40
WR_LIGHTNING EQU $20
WR_WATER EQU $10
WR_FIGHTING EQU $08
WR_PSYCHIC EQU $04
DEF WR_FIRE EQU $80
DEF WR_GRASS EQU $40
DEF WR_LIGHTNING EQU $20
DEF WR_WATER EQU $10
DEF WR_FIGHTING EQU $08
DEF WR_PSYCHIC EQU $04
; CARD_DATA_ATTACK*_CATEGORY constants
DAMAGE_NORMAL EQU $00
DAMAGE_PLUS EQU $01
DAMAGE_MINUS EQU $02
DAMAGE_X EQU $03
POKEMON_POWER EQU $04
RESIDUAL_F EQU 7
RESIDUAL EQU 1 << RESIDUAL_F
DEF DAMAGE_NORMAL EQU $00
DEF DAMAGE_PLUS EQU $01
DEF DAMAGE_MINUS EQU $02
DEF DAMAGE_X EQU $03
DEF POKEMON_POWER EQU $04
DEF RESIDUAL_F EQU 7
DEF RESIDUAL EQU 1 << RESIDUAL_F
; Bit mask for CheckLoadedAttackFlag
; for flag address from wLoadedAttackFlag1
ATTACK_FLAG1_ADDRESS EQU $0 << 3
ATTACK_FLAG2_ADDRESS EQU $1 << 3
ATTACK_FLAG3_ADDRESS EQU $2 << 3
DEF ATTACK_FLAG1_ADDRESS EQU $0 << 3
DEF ATTACK_FLAG2_ADDRESS EQU $1 << 3
DEF ATTACK_FLAG3_ADDRESS EQU $2 << 3
; CARD_DATA_ATTACK*_FLAG1 constants
INFLICT_POISON_F EQU %000
INFLICT_SLEEP_F EQU %001
INFLICT_PARALYSIS_F EQU %010
INFLICT_CONFUSION_F EQU %011
LOW_RECOIL_F EQU %100
DAMAGE_TO_OPPONENT_BENCH_F EQU %101
HIGH_RECOIL_F EQU %110
DRAW_CARD_F EQU %111
DEF INFLICT_POISON_F EQU %000
DEF INFLICT_SLEEP_F EQU %001
DEF INFLICT_PARALYSIS_F EQU %010
DEF INFLICT_CONFUSION_F EQU %011
DEF LOW_RECOIL_F EQU %100
DEF DAMAGE_TO_OPPONENT_BENCH_F EQU %101
DEF HIGH_RECOIL_F EQU %110
DEF DRAW_CARD_F EQU %111
; CARD_DATA_ATTACK*_FLAG2 constants
; bits 5, 6 and 7 cover a wide variety of effects
SWITCH_OPPONENT_POKEMON_F EQU %000
HEAL_USER_F EQU %001
NULLIFY_OR_WEAKEN_ATTACK_F EQU %010
DISCARD_ENERGY_F EQU %011
ATTACHED_ENERGY_BOOST_F EQU %100
FLAG_2_BIT_5_F EQU %101
FLAG_2_BIT_6_F EQU %110
FLAG_2_BIT_7_F EQU %111
DEF SWITCH_OPPONENT_POKEMON_F EQU %000
DEF HEAL_USER_F EQU %001
DEF NULLIFY_OR_WEAKEN_ATTACK_F EQU %010
DEF DISCARD_ENERGY_F EQU %011
DEF ATTACHED_ENERGY_BOOST_F EQU %100
DEF FLAG_2_BIT_5_F EQU %101
DEF FLAG_2_BIT_6_F EQU %110
DEF FLAG_2_BIT_7_F EQU %111
; CARD_DATA_ATTACK*_FLAG3 constants
; bit 1 covers a wide variety of effects
; bits 2-7 are unused
BOOST_IF_TAKEN_DAMAGE_F EQU %000
SPECIAL_AI_HANDLING_F EQU %001
DEF BOOST_IF_TAKEN_DAMAGE_F EQU %000
DEF SPECIAL_AI_HANDLING_F EQU %001
; CARD_DATA_ATTACK*_FLAG1_F constants
INFLICT_POISON EQU $1 << INFLICT_POISON_F
INFLICT_SLEEP EQU $1 << INFLICT_SLEEP_F
INFLICT_PARALYSIS EQU $1 << INFLICT_PARALYSIS_F
INFLICT_CONFUSION EQU $1 << INFLICT_CONFUSION_F
LOW_RECOIL EQU $1 << LOW_RECOIL_F
DAMAGE_TO_OPPONENT_BENCH EQU $1 << DAMAGE_TO_OPPONENT_BENCH_F
HIGH_RECOIL EQU $1 << HIGH_RECOIL_F
DRAW_CARD EQU $1 << DRAW_CARD_F
DEF INFLICT_POISON EQU $1 << INFLICT_POISON_F
DEF INFLICT_SLEEP EQU $1 << INFLICT_SLEEP_F
DEF INFLICT_PARALYSIS EQU $1 << INFLICT_PARALYSIS_F
DEF INFLICT_CONFUSION EQU $1 << INFLICT_CONFUSION_F
DEF LOW_RECOIL EQU $1 << LOW_RECOIL_F
DEF DAMAGE_TO_OPPONENT_BENCH EQU $1 << DAMAGE_TO_OPPONENT_BENCH_F
DEF HIGH_RECOIL EQU $1 << HIGH_RECOIL_F
DEF DRAW_CARD EQU $1 << DRAW_CARD_F
; CARD_DATA_ATTACK*_FLAG2_F constants
; bits 5, 6 and 7 cover a wide variety of effects
SWITCH_OPPONENT_POKEMON EQU $1 << SWITCH_OPPONENT_POKEMON_F
HEAL_USER EQU $1 << HEAL_USER_F
NULLIFY_OR_WEAKEN_ATTACK EQU $1 << NULLIFY_OR_WEAKEN_ATTACK_F
DISCARD_ENERGY EQU $1 << DISCARD_ENERGY_F
ATTACHED_ENERGY_BOOST EQU $1 << ATTACHED_ENERGY_BOOST_F
FLAG_2_BIT_5 EQU $1 << FLAG_2_BIT_5_F
FLAG_2_BIT_6 EQU $1 << FLAG_2_BIT_6_F
FLAG_2_BIT_7 EQU $1 << FLAG_2_BIT_7_F
DEF SWITCH_OPPONENT_POKEMON EQU $1 << SWITCH_OPPONENT_POKEMON_F
DEF HEAL_USER EQU $1 << HEAL_USER_F
DEF NULLIFY_OR_WEAKEN_ATTACK EQU $1 << NULLIFY_OR_WEAKEN_ATTACK_F
DEF DISCARD_ENERGY EQU $1 << DISCARD_ENERGY_F
DEF ATTACHED_ENERGY_BOOST EQU $1 << ATTACHED_ENERGY_BOOST_F
DEF FLAG_2_BIT_5 EQU $1 << FLAG_2_BIT_5_F
DEF FLAG_2_BIT_6 EQU $1 << FLAG_2_BIT_6_F
DEF FLAG_2_BIT_7 EQU $1 << FLAG_2_BIT_7_F
; CARD_DATA_ATTACK*_FLAG3_F constants
; bit 1 covers a wide variety of effects
; bits 2-7 are unused
BOOST_IF_TAKEN_DAMAGE EQU $1 << BOOST_IF_TAKEN_DAMAGE_F
SPECIAL_AI_HANDLING EQU $1 << SPECIAL_AI_HANDLING_F
DEF BOOST_IF_TAKEN_DAMAGE EQU $1 << BOOST_IF_TAKEN_DAMAGE_F
DEF SPECIAL_AI_HANDLING EQU $1 << SPECIAL_AI_HANDLING_F
; special CARD_DATA_RETREAT_COST values
UNABLE_RETREAT EQU $64
DEF UNABLE_RETREAT EQU $64
; attack index constants
FIRST_ATTACK_OR_PKMN_POWER EQU $0
SECOND_ATTACK EQU $1
DEF FIRST_ATTACK_OR_PKMN_POWER EQU $0
DEF SECOND_ATTACK EQU $1
; whether attack with the ATTACHED_ENERGY_BOOST flag
; has limit on attached energy cards boost.
MAX_ENERGY_BOOST_IS_LIMITED EQU $2
MAX_ENERGY_BOOST_IS_NOT_LIMITED EQU $3
DEF MAX_ENERGY_BOOST_IS_LIMITED EQU $2
DEF MAX_ENERGY_BOOST_IS_NOT_LIMITED EQU $3

View File

@ -322,7 +322,7 @@ ENDM
fwcharmap 0, "—", $78
fwcharmap 0, "~", $79
FW_SPACE EQU $70
DEF FW_SPACE EQU $70
MACRO txsymbol
const SYM_\1

View File

@ -1,9 +1,9 @@
; wPreviousAIFlags and wCurrentAIFlags constants
AI_FLAG_USED_PLUSPOWER EQU 1 << 0
AI_FLAG_USED_SWITCH EQU 1 << 1
AI_FLAG_USED_PROFESSOR_OAK EQU 1 << 2
AI_FLAG_MODIFIED_HAND EQU 1 << 3
AI_FLAG_USED_GUST_OF_WIND EQU 1 << 4
DEF AI_FLAG_USED_PLUSPOWER EQU 1 << 0
DEF AI_FLAG_USED_SWITCH EQU 1 << 1
DEF AI_FLAG_USED_PROFESSOR_OAK EQU 1 << 2
DEF AI_FLAG_MODIFIED_HAND EQU 1 << 3
DEF AI_FLAG_USED_GUST_OF_WIND EQU 1 << 4
; used as input for AIProcessEnergyCards to determine what to check
; and whether to play card after the routine is over.
@ -11,9 +11,9 @@ AI_FLAG_USED_GUST_OF_WIND EQU 1 << 4
; not to actually play the energy card after it's finished,
; but AIProcessEnergyCards checks whether ANY flag is set in order
; to decide not to play it, so it's redundant in the presence of another flag.
AI_ENERGY_FLAG_DONT_PLAY EQU 1 << 0 ; whether to play energy card (?)
AI_ENERGY_FLAG_SKIP_EVOLUTION EQU 1 << 1 ; whether to check if card has evolutions
AI_ENERGY_FLAG_SKIP_ARENA_CARD EQU 1 << 7 ; whether to include Arena card in determining which card to attach energy
DEF AI_ENERGY_FLAG_DONT_PLAY EQU 1 << 0 ; whether to play energy card (?)
DEF AI_ENERGY_FLAG_SKIP_EVOLUTION EQU 1 << 1 ; whether to check if card has evolutions
DEF AI_ENERGY_FLAG_SKIP_ARENA_CARD EQU 1 << 7 ; whether to include Arena card in determining which card to attach energy
; used to determine which Trainer cards for AI
; to process in AIProcessHandTrainerCards.
@ -42,15 +42,15 @@ AI_ENERGY_FLAG_SKIP_ARENA_CARD EQU 1 << 7 ; whether to include Arena card in det
; used by wAIBarrierFlagCounter to determine
; whether Player is running Mewtwo1 mill deck.
; flag set means true, flag not set means false.
AI_MEWTWO_MILL_F EQU 7
AI_MEWTWO_MILL EQU 1 << AI_MEWTWO_MILL_F
DEF AI_MEWTWO_MILL_F EQU 7
DEF AI_MEWTWO_MILL EQU 1 << AI_MEWTWO_MILL_F
; defines the behaviour of HandleAIEnergyTrans, for determining
; whether to move energy cards from the Bench to the Arena or vice-versa
; and the number of energy cards needed for achieving that.
AI_ENERGY_TRANS_RETREAT EQU $9 ; moves energy cards needed for Retreat Cost
AI_ENERGY_TRANS_ATTACK EQU $d ; moves energy cards needed for second attack
AI_ENERGY_TRANS_TO_BENCH EQU $e ; moves energy cards away from Arena card
DEF AI_ENERGY_TRANS_RETREAT EQU $9 ; moves energy cards needed for Retreat Cost
DEF AI_ENERGY_TRANS_ATTACK EQU $d ; moves energy cards needed for second attack
DEF AI_ENERGY_TRANS_TO_BENCH EQU $e ; moves energy cards away from Arena card
; used to know which AI routine to call in
; the AIAction pointer tables in AIDoAction
@ -67,12 +67,12 @@ AI_ENERGY_TRANS_TO_BENCH EQU $e ; moves energy cards away from Arena card
; %10'0001 = second prize card
; %10'0010 = third prize card
; etc...
AI_PEEK_TARGET_PRIZE_F EQU 6
AI_PEEK_TARGET_PRIZE EQU 1 << AI_PEEK_TARGET_PRIZE_F
DEF AI_PEEK_TARGET_PRIZE_F EQU 6
DEF AI_PEEK_TARGET_PRIZE EQU 1 << AI_PEEK_TARGET_PRIZE_F
; this bit is set when the AI decides to use Peek on Player hand card,
; with the following bits deciding which one to Peek. That is:
; %1XXX XXXX, where XXX XXXX is the deck index of card chosen
AI_PEEK_TARGET_HAND_F EQU 7
AI_PEEK_TARGET_HAND EQU 1 << AI_PEEK_TARGET_HAND_F
DEF AI_PEEK_TARGET_HAND_F EQU 7
DEF AI_PEEK_TARGET_HAND EQU 1 << AI_PEEK_TARGET_HAND_F
; all bits set means AI chose to look at Player's top deck card
AI_PEEK_TARGET_DECK EQU $ff
DEF AI_PEEK_TARGET_DECK EQU $ff

View File

@ -65,5 +65,5 @@ ENDM
deck_const FLAMETHROWER_DECK ; $34
deck_const RESHUFFLE_DECK ; $35
deck_const IMAKUNI_DECK ; $36
DECKS_END EQU const_value - 1
DECK_IDS_END EQU DECKS_END - 2
DEF DECKS_END EQU const_value - 1
DEF DECK_IDS_END EQU DECKS_END - 2

View File

@ -1,177 +1,177 @@
MAX_BENCH_POKEMON EQU 5
MAX_PLAY_AREA_POKEMON EQU 6 ; arena + bench
MAX_HP EQU 120
HP_BAR_LENGTH EQU MAX_HP / 10
DEF MAX_BENCH_POKEMON EQU 5
DEF MAX_PLAY_AREA_POKEMON EQU 6 ; arena + bench
DEF MAX_HP EQU 120
DEF HP_BAR_LENGTH EQU MAX_HP / 10
STARTING_HAND_SIZE EQU 7
DEF STARTING_HAND_SIZE EQU 7
; hWhoseTurn constants
PLAYER_TURN EQUS "HIGH(wPlayerDuelVariables)"
OPPONENT_TURN EQUS "HIGH(wOpponentDuelVariables)"
DEF PLAYER_TURN EQUS "HIGH(wPlayerDuelVariables)"
DEF OPPONENT_TURN EQUS "HIGH(wOpponentDuelVariables)"
; wDuelType constants
DUELTYPE_LINK EQU $1
DUELTYPE_PRACTICE EQU $80
DEF DUELTYPE_LINK EQU $1
DEF DUELTYPE_PRACTICE EQU $80
; for normal duels (vs AI), wDuelType is $80 + [wOpponentDeckID]
; wDuelFinished constants
DUEL_NOT_FINISHED EQU $0
TURN_PLAYER_WON EQU $1
TURN_PLAYER_LOST EQU $2
TURN_PLAYER_TIED EQU $3
DEF DUEL_NOT_FINISHED EQU $0
DEF TURN_PLAYER_WON EQU $1
DEF TURN_PLAYER_LOST EQU $2
DEF TURN_PLAYER_TIED EQU $3
; wDuelResult constants
DUEL_WIN EQU $0
DUEL_LOSS EQU $1
DEF DUEL_WIN EQU $0
DEF DUEL_LOSS EQU $1
; wPlayerDuelVariables or wOpponentDuelVariables constants
DUELVARS_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00
DUELVARS_PRIZE_CARDS EQUS "LOW(wPlayerPrizeCards)" ; 3c
DUELVARS_HAND EQUS "LOW(wPlayerHand)" ; 42
DUELVARS_DECK_CARDS EQUS "LOW(wPlayerDeckCards)" ; 7e
DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "LOW(wPlayerNumberOfCardsNotInDeck)" ; ba
DUELVARS_ARENA_CARD EQUS "LOW(wPlayerArenaCard)" ; bb
DUELVARS_BENCH EQUS "LOW(wPlayerBench)" ; bc
DUELVARS_ARENA_CARD_FLAGS EQUS "LOW(wPlayerArenaCardFlags)" ; c2
DUELVARS_ARENA_CARD_HP EQUS "LOW(wPlayerArenaCardHP)" ; c8
DUELVARS_BENCH1_CARD_HP EQUS "LOW(wPlayerBench1CardHP)" ; c9
DUELVARS_BENCH2_CARD_HP EQUS "LOW(wPlayerBench2CardHP)" ; ca
DUELVARS_BENCH3_CARD_HP EQUS "LOW(wPlayerBench3CardHP)" ; cb
DUELVARS_BENCH4_CARD_HP EQUS "LOW(wPlayerBench4CardHP)" ; cc
DUELVARS_BENCH5_CARD_HP EQUS "LOW(wPlayerBench5CardHP)" ; cd
DUELVARS_ARENA_CARD_STAGE EQUS "LOW(wPlayerArenaCardStage)" ; ce
DUELVARS_BENCH1_CARD_STAGE EQUS "LOW(wPlayerBench1CardStage)" ; cf
DUELVARS_BENCH2_CARD_STAGE EQUS "LOW(wPlayerBench2CardStage)" ; d0
DUELVARS_BENCH3_CARD_STAGE EQUS "LOW(wPlayerBench3CardStage)" ; d1
DUELVARS_BENCH4_CARD_STAGE EQUS "LOW(wPlayerBench4CardStage)" ; d2
DUELVARS_BENCH5_CARD_STAGE EQUS "LOW(wPlayerBench5CardStage)" ; d3
DUELVARS_ARENA_CARD_CHANGED_TYPE EQUS "LOW(wPlayerArenaCardChangedType)" ; d4
DUELVARS_BENCH1_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench1CardChangedType)" ; d5
DUELVARS_BENCH2_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench2CardChangedType)" ; d6
DUELVARS_BENCH3_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench3CardChangedType)" ; d7
DUELVARS_BENCH4_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench4CardChangedType)" ; d8
DUELVARS_BENCH5_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench5CardChangedType)" ; d9
DUELVARS_ARENA_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerArenaCardAttachedDefender)" ; da
DUELVARS_BENCH1_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench1CardAttachedDefender)" ; db
DUELVARS_BENCH2_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench2CardAttachedDefender)" ; dc
DUELVARS_BENCH3_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench3CardAttachedDefender)" ; dd
DUELVARS_BENCH4_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench4CardAttachedDefender)" ; de
DUELVARS_BENCH5_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench5CardAttachedDefender)" ; df
DUELVARS_ARENA_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerArenaCardAttachedPluspower)" ; e0
DUELVARS_BENCH1_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench1CardAttachedPluspower)" ; e1
DUELVARS_BENCH2_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench2CardAttachedPluspower)" ; e2
DUELVARS_BENCH3_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench3CardAttachedPluspower)" ; e3
DUELVARS_BENCH4_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench4CardAttachedPluspower)" ; e4
DUELVARS_BENCH5_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench5CardAttachedPluspower)" ; e5
DUELVARS_ARENA_CARD_SUBSTATUS1 EQUS "LOW(wPlayerArenaCardSubstatus1)" ; e7
DUELVARS_ARENA_CARD_SUBSTATUS2 EQUS "LOW(wPlayerArenaCardSubstatus2)" ; e8
DUELVARS_ARENA_CARD_CHANGED_WEAKNESS EQUS "LOW(wPlayerArenaCardChangedWeakness)" ; e9
DUELVARS_ARENA_CARD_CHANGED_RESISTANCE EQUS "LOW(wPlayerArenaCardChangedResistance)" ; ea
DUELVARS_ARENA_CARD_SUBSTATUS3 EQUS "LOW(wPlayerArenaCardSubstatus3)" ; eb
DUELVARS_PRIZES EQUS "LOW(wPlayerPrizes)" ; ec
DUELVARS_NUMBER_OF_CARDS_IN_DISCARD_PILE EQUS "LOW(wPlayerNumberOfCardsInDiscardPile)" ; ed
DUELVARS_NUMBER_OF_CARDS_IN_HAND EQUS "LOW(wPlayerNumberOfCardsInHand)" ; ee
DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA EQUS "LOW(wPlayerNumberOfPokemonInPlayArea)" ; ef
DUELVARS_ARENA_CARD_STATUS EQUS "LOW(wPlayerArenaCardStatus)" ; f0
DUELVARS_DUELIST_TYPE EQUS "LOW(wPlayerDuelistType)" ; f1
DUELVARS_ARENA_CARD_DISABLED_ATTACK_INDEX EQUS "LOW(wPlayerArenaCardDisabledAttackIndex)" ; f2
DUELVARS_ARENA_CARD_LAST_TURN_DAMAGE EQUS "LOW(wPlayerArenaCardLastTurnDamage)" ; f3
DUELVARS_ARENA_CARD_LAST_TURN_STATUS EQUS "LOW(wPlayerArenaCardLastTurnStatus)" ; f5
DUELVARS_ARENA_CARD_LAST_TURN_SUBSTATUS2 EQUS "LOW(wPlayerArenaCardLastTurnSubstatus2)" ; f6
DUELVARS_ARENA_CARD_LAST_TURN_CHANGE_WEAK EQUS "LOW(wPlayerArenaCardLastTurnChangeWeak)" ; f7
DUELVARS_ARENA_CARD_LAST_TURN_EFFECT EQUS "LOW(wPlayerArenaCardLastTurnEffect)" ; f8
DEF DUELVARS_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00
DEF DUELVARS_PRIZE_CARDS EQUS "LOW(wPlayerPrizeCards)" ; 3c
DEF DUELVARS_HAND EQUS "LOW(wPlayerHand)" ; 42
DEF DUELVARS_DECK_CARDS EQUS "LOW(wPlayerDeckCards)" ; 7e
DEF DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "LOW(wPlayerNumberOfCardsNotInDeck)" ; ba
DEF DUELVARS_ARENA_CARD EQUS "LOW(wPlayerArenaCard)" ; bb
DEF DUELVARS_BENCH EQUS "LOW(wPlayerBench)" ; bc
DEF DUELVARS_ARENA_CARD_FLAGS EQUS "LOW(wPlayerArenaCardFlags)" ; c2
DEF DUELVARS_ARENA_CARD_HP EQUS "LOW(wPlayerArenaCardHP)" ; c8
DEF DUELVARS_BENCH1_CARD_HP EQUS "LOW(wPlayerBench1CardHP)" ; c9
DEF DUELVARS_BENCH2_CARD_HP EQUS "LOW(wPlayerBench2CardHP)" ; ca
DEF DUELVARS_BENCH3_CARD_HP EQUS "LOW(wPlayerBench3CardHP)" ; cb
DEF DUELVARS_BENCH4_CARD_HP EQUS "LOW(wPlayerBench4CardHP)" ; cc
DEF DUELVARS_BENCH5_CARD_HP EQUS "LOW(wPlayerBench5CardHP)" ; cd
DEF DUELVARS_ARENA_CARD_STAGE EQUS "LOW(wPlayerArenaCardStage)" ; ce
DEF DUELVARS_BENCH1_CARD_STAGE EQUS "LOW(wPlayerBench1CardStage)" ; cf
DEF DUELVARS_BENCH2_CARD_STAGE EQUS "LOW(wPlayerBench2CardStage)" ; d0
DEF DUELVARS_BENCH3_CARD_STAGE EQUS "LOW(wPlayerBench3CardStage)" ; d1
DEF DUELVARS_BENCH4_CARD_STAGE EQUS "LOW(wPlayerBench4CardStage)" ; d2
DEF DUELVARS_BENCH5_CARD_STAGE EQUS "LOW(wPlayerBench5CardStage)" ; d3
DEF DUELVARS_ARENA_CARD_CHANGED_TYPE EQUS "LOW(wPlayerArenaCardChangedType)" ; d4
DEF DUELVARS_BENCH1_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench1CardChangedType)" ; d5
DEF DUELVARS_BENCH2_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench2CardChangedType)" ; d6
DEF DUELVARS_BENCH3_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench3CardChangedType)" ; d7
DEF DUELVARS_BENCH4_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench4CardChangedType)" ; d8
DEF DUELVARS_BENCH5_CARD_CHANGED_COLOR EQUS "LOW(wPlayerBench5CardChangedType)" ; d9
DEF DUELVARS_ARENA_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerArenaCardAttachedDefender)" ; da
DEF DUELVARS_BENCH1_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench1CardAttachedDefender)" ; db
DEF DUELVARS_BENCH2_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench2CardAttachedDefender)" ; dc
DEF DUELVARS_BENCH3_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench3CardAttachedDefender)" ; dd
DEF DUELVARS_BENCH4_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench4CardAttachedDefender)" ; de
DEF DUELVARS_BENCH5_CARD_ATTACHED_DEFENDER EQUS "LOW(wPlayerBench5CardAttachedDefender)" ; df
DEF DUELVARS_ARENA_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerArenaCardAttachedPluspower)" ; e0
DEF DUELVARS_BENCH1_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench1CardAttachedPluspower)" ; e1
DEF DUELVARS_BENCH2_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench2CardAttachedPluspower)" ; e2
DEF DUELVARS_BENCH3_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench3CardAttachedPluspower)" ; e3
DEF DUELVARS_BENCH4_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench4CardAttachedPluspower)" ; e4
DEF DUELVARS_BENCH5_CARD_ATTACHED_PLUSPOWER EQUS "LOW(wPlayerBench5CardAttachedPluspower)" ; e5
DEF DUELVARS_ARENA_CARD_SUBSTATUS1 EQUS "LOW(wPlayerArenaCardSubstatus1)" ; e7
DEF DUELVARS_ARENA_CARD_SUBSTATUS2 EQUS "LOW(wPlayerArenaCardSubstatus2)" ; e8
DEF DUELVARS_ARENA_CARD_CHANGED_WEAKNESS EQUS "LOW(wPlayerArenaCardChangedWeakness)" ; e9
DEF DUELVARS_ARENA_CARD_CHANGED_RESISTANCE EQUS "LOW(wPlayerArenaCardChangedResistance)" ; ea
DEF DUELVARS_ARENA_CARD_SUBSTATUS3 EQUS "LOW(wPlayerArenaCardSubstatus3)" ; eb
DEF DUELVARS_PRIZES EQUS "LOW(wPlayerPrizes)" ; ec
DEF DUELVARS_NUMBER_OF_CARDS_IN_DISCARD_PILE EQUS "LOW(wPlayerNumberOfCardsInDiscardPile)" ; ed
DEF DUELVARS_NUMBER_OF_CARDS_IN_HAND EQUS "LOW(wPlayerNumberOfCardsInHand)" ; ee
DEF DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA EQUS "LOW(wPlayerNumberOfPokemonInPlayArea)" ; ef
DEF DUELVARS_ARENA_CARD_STATUS EQUS "LOW(wPlayerArenaCardStatus)" ; f0
DEF DUELVARS_DUELIST_TYPE EQUS "LOW(wPlayerDuelistType)" ; f1
DEF DUELVARS_ARENA_CARD_DISABLED_ATTACK_INDEX EQUS "LOW(wPlayerArenaCardDisabledAttackIndex)" ; f2
DEF DUELVARS_ARENA_CARD_LAST_TURN_DAMAGE EQUS "LOW(wPlayerArenaCardLastTurnDamage)" ; f3
DEF DUELVARS_ARENA_CARD_LAST_TURN_STATUS EQUS "LOW(wPlayerArenaCardLastTurnStatus)" ; f5
DEF DUELVARS_ARENA_CARD_LAST_TURN_SUBSTATUS2 EQUS "LOW(wPlayerArenaCardLastTurnSubstatus2)" ; f6
DEF DUELVARS_ARENA_CARD_LAST_TURN_CHANGE_WEAK EQUS "LOW(wPlayerArenaCardLastTurnChangeWeak)" ; f7
DEF DUELVARS_ARENA_CARD_LAST_TURN_EFFECT EQUS "LOW(wPlayerArenaCardLastTurnEffect)" ; f8
; card location constants (DUELVARS_CARD_LOCATIONS)
CARD_LOCATION_DECK EQU $00
CARD_LOCATION_HAND EQU $01
CARD_LOCATION_DISCARD_PILE EQU $02
CARD_LOCATION_PRIZE EQU $08
CARD_LOCATION_ARENA EQU $10
CARD_LOCATION_BENCH_1 EQU $11
CARD_LOCATION_BENCH_2 EQU $12
CARD_LOCATION_BENCH_3 EQU $13
CARD_LOCATION_BENCH_4 EQU $14
CARD_LOCATION_BENCH_5 EQU $15
DEF CARD_LOCATION_DECK EQU $00
DEF CARD_LOCATION_HAND EQU $01
DEF CARD_LOCATION_DISCARD_PILE EQU $02
DEF CARD_LOCATION_PRIZE EQU $08
DEF CARD_LOCATION_ARENA EQU $10
DEF CARD_LOCATION_BENCH_1 EQU $11
DEF CARD_LOCATION_BENCH_2 EQU $12
DEF CARD_LOCATION_BENCH_3 EQU $13
DEF CARD_LOCATION_BENCH_4 EQU $14
DEF CARD_LOCATION_BENCH_5 EQU $15
; card location flags (DUELVARS_CARD_LOCATIONS)
CARD_LOCATION_PLAY_AREA_F EQU 4 ; includes arena and bench
CARD_LOCATION_PLAY_AREA EQU 1 << CARD_LOCATION_PLAY_AREA_F
CARD_LOCATION_JUST_DRAWN_F EQU 6
CARD_LOCATION_JUST_DRAWN EQU 1 << CARD_LOCATION_JUST_DRAWN_F
DEF CARD_LOCATION_PLAY_AREA_F EQU 4 ; includes arena and bench
DEF CARD_LOCATION_PLAY_AREA EQU 1 << CARD_LOCATION_PLAY_AREA_F
DEF CARD_LOCATION_JUST_DRAWN_F EQU 6
DEF CARD_LOCATION_JUST_DRAWN EQU 1 << CARD_LOCATION_JUST_DRAWN_F
; play area location offsets (CARD_LOCATION_* - CARD_LOCATION_PLAY_AREA)
PLAY_AREA_ARENA EQU $0
PLAY_AREA_BENCH_1 EQU $1
PLAY_AREA_BENCH_2 EQU $2
PLAY_AREA_BENCH_3 EQU $3
PLAY_AREA_BENCH_4 EQU $4
PLAY_AREA_BENCH_5 EQU $5
DEF PLAY_AREA_ARENA EQU $0
DEF PLAY_AREA_BENCH_1 EQU $1
DEF PLAY_AREA_BENCH_2 EQU $2
DEF PLAY_AREA_BENCH_3 EQU $3
DEF PLAY_AREA_BENCH_4 EQU $4
DEF PLAY_AREA_BENCH_5 EQU $5
; duelist types (DUELVARS_DUELIST_TYPE)
DUELIST_TYPE_PLAYER EQU $00
DUELIST_TYPE_LINK_OPP EQU $01
DUELIST_TYPE_AI_OPP EQU $80 ; $80 + [wOpponentDeckID]
DEF DUELIST_TYPE_PLAYER EQU $00
DEF DUELIST_TYPE_LINK_OPP EQU $01
DEF DUELIST_TYPE_AI_OPP EQU $80 ; $80 + [wOpponentDeckID]
; status conditions (DUELVARS_ARENA_CARD_STATUS)
; two statuses can be combined if they are identified by a different nybble
NO_STATUS EQU $00
CONFUSED EQU $01
ASLEEP EQU $02
PARALYZED EQU $03
POISONED EQU $80
DOUBLE_POISONED EQU $c0
DEF NO_STATUS EQU $00
DEF CONFUSED EQU $01
DEF ASLEEP EQU $02
DEF PARALYZED EQU $03
DEF POISONED EQU $80
DEF DOUBLE_POISONED EQU $c0
DOUBLE_POISONED_F EQU 6
POISONED_F EQU 7
DEF DOUBLE_POISONED_F EQU 6
DEF POISONED_F EQU 7
CNF_SLP_PRZ EQU $0f ; confused, asleep or paralyzed
PSN_DBLPSN EQU $f0 ; poisoned or double poisoned
PSN_DAMAGE EQU 10
DBLPSN_DAMAGE EQU 20
DEF CNF_SLP_PRZ EQU $0f ; confused, asleep or paralyzed
DEF PSN_DBLPSN EQU $f0 ; poisoned or double poisoned
DEF PSN_DAMAGE EQU 10
DEF DBLPSN_DAMAGE EQU 20
; substatus conditions (DUELVARS_ARENA_CARD_SUBSTATUS*)
; SUBSTATUS1 are checked on a defending Pokemon
SUBSTATUS1_AGILITY EQU $0c
SUBSTATUS1_FLY EQU $0d
SUBSTATUS1_HARDEN EQU $0e
SUBSTATUS1_NO_DAMAGE_STIFFEN EQU $0f
SUBSTATUS1_NO_DAMAGE_10 EQU $10
SUBSTATUS1_NO_DAMAGE_11 EQU $11
SUBSTATUS1_REDUCE_BY_20 EQU $13
SUBSTATUS1_BARRIER EQU $14
SUBSTATUS1_HALVE_DAMAGE EQU $15
SUBSTATUS1_DESTINY_BOND EQU $16
SUBSTATUS1_NO_DAMAGE_17 EQU $17
SUBSTATUS1_NEXT_TURN_DOUBLE_DAMAGE EQU $19
SUBSTATUS1_REDUCE_BY_10 EQU $1e
DEF SUBSTATUS1_AGILITY EQU $0c
DEF SUBSTATUS1_FLY EQU $0d
DEF SUBSTATUS1_HARDEN EQU $0e
DEF SUBSTATUS1_NO_DAMAGE_STIFFEN EQU $0f
DEF SUBSTATUS1_NO_DAMAGE_10 EQU $10
DEF SUBSTATUS1_NO_DAMAGE_11 EQU $11
DEF SUBSTATUS1_REDUCE_BY_20 EQU $13
DEF SUBSTATUS1_BARRIER EQU $14
DEF SUBSTATUS1_HALVE_DAMAGE EQU $15
DEF SUBSTATUS1_DESTINY_BOND EQU $16
DEF SUBSTATUS1_NO_DAMAGE_17 EQU $17
DEF SUBSTATUS1_NEXT_TURN_DOUBLE_DAMAGE EQU $19
DEF SUBSTATUS1_REDUCE_BY_10 EQU $1e
; SUBSTATUS2 are checked on an attacking Pokemon
SUBSTATUS2_SMOKESCREEN EQU $01
SUBSTATUS2_SAND_ATTACK EQU $02
SUBSTATUS2_REDUCE_BY_20 EQU $03
SUBSTATUS2_AMNESIA EQU $04
SUBSTATUS2_TAIL_WAG EQU $05
SUBSTATUS2_LEER EQU $06
SUBSTATUS2_POUNCE EQU $07
SUBSTATUS2_CONVERSION2 EQU $08
SUBSTATUS2_UNABLE_RETREAT EQU $09
SUBSTATUS2_BONE_ATTACK EQU $0b
SUBSTATUS2_GROWL EQU $12
DEF SUBSTATUS2_SMOKESCREEN EQU $01
DEF SUBSTATUS2_SAND_ATTACK EQU $02
DEF SUBSTATUS2_REDUCE_BY_20 EQU $03
DEF SUBSTATUS2_AMNESIA EQU $04
DEF SUBSTATUS2_TAIL_WAG EQU $05
DEF SUBSTATUS2_LEER EQU $06
DEF SUBSTATUS2_POUNCE EQU $07
DEF SUBSTATUS2_CONVERSION2 EQU $08
DEF SUBSTATUS2_UNABLE_RETREAT EQU $09
DEF SUBSTATUS2_BONE_ATTACK EQU $0b
DEF SUBSTATUS2_GROWL EQU $12
SUBSTATUS3_THIS_TURN_DOUBLE_DAMAGE EQU 0
SUBSTATUS3_HEADACHE EQU 1
DEF SUBSTATUS3_THIS_TURN_DOUBLE_DAMAGE EQU 0
DEF SUBSTATUS3_HEADACHE EQU 1
; DUELVARS_ARENA_CARD_FLAGS constants
USED_PKMN_POWER_THIS_TURN_F EQU 5
USED_LEEK_SLAP_THIS_DUEL_F EQU 6
CAN_EVOLVE_THIS_TURN_F EQU 7
DEF USED_PKMN_POWER_THIS_TURN_F EQU 5
DEF USED_LEEK_SLAP_THIS_DUEL_F EQU 6
DEF CAN_EVOLVE_THIS_TURN_F EQU 7
USED_PKMN_POWER_THIS_TURN EQU 1 << USED_PKMN_POWER_THIS_TURN_F
USED_LEEK_SLAP_THIS_DUEL EQU 1 << USED_LEEK_SLAP_THIS_DUEL_F
CAN_EVOLVE_THIS_TURN EQU 1 << CAN_EVOLVE_THIS_TURN_F
DEF USED_PKMN_POWER_THIS_TURN EQU 1 << USED_PKMN_POWER_THIS_TURN_F
DEF USED_LEEK_SLAP_THIS_DUEL EQU 1 << USED_LEEK_SLAP_THIS_DUEL_F
DEF CAN_EVOLVE_THIS_TURN EQU 1 << CAN_EVOLVE_THIS_TURN_F
; DUELVARS_ARENA_CARD_LAST_TURN_EFFECT constants
const_def
@ -180,36 +180,36 @@ CAN_EVOLVE_THIS_TURN EQU 1 << CAN_EVOLVE_THIS_TURN_F
const LAST_TURN_EFFECT_AMNESIA ; $02
; *_CHANGED_COLOR constants
HAS_CHANGED_COLOR_F EQU 7
HAS_CHANGED_COLOR EQU 1 << HAS_CHANGED_COLOR_F
DEF HAS_CHANGED_COLOR_F EQU 7
DEF HAS_CHANGED_COLOR EQU 1 << HAS_CHANGED_COLOR_F
; flag in wDamage + 1 that indicates
; whether damage is unaffected by Weakness/Resistance
UNAFFECTED_BY_WEAKNESS_RESISTANCE_F EQU 7
DEF UNAFFECTED_BY_WEAKNESS_RESISTANCE_F EQU 7
; effect command constants (TryExecuteEffectCommandFunction)
; ordered by (roughly) execution time
EFFECTCMDTYPE_INITIAL_EFFECT_1 EQU $01
EFFECTCMDTYPE_INITIAL_EFFECT_2 EQU $02
EFFECTCMDTYPE_DISCARD_ENERGY EQU $06
EFFECTCMDTYPE_REQUIRE_SELECTION EQU $05
EFFECTCMDTYPE_BEFORE_DAMAGE EQU $03
EFFECTCMDTYPE_AFTER_DAMAGE EQU $04
EFFECTCMDTYPE_AI_SELECTION EQU $08
EFFECTCMDTYPE_AI_SWITCH_DEFENDING_PKMN EQU $0a
EFFECTCMDTYPE_PKMN_POWER_TRIGGER EQU $07
EFFECTCMDTYPE_AI EQU $09
DEF EFFECTCMDTYPE_INITIAL_EFFECT_1 EQU $01
DEF EFFECTCMDTYPE_INITIAL_EFFECT_2 EQU $02
DEF EFFECTCMDTYPE_DISCARD_ENERGY EQU $06
DEF EFFECTCMDTYPE_REQUIRE_SELECTION EQU $05
DEF EFFECTCMDTYPE_BEFORE_DAMAGE EQU $03
DEF EFFECTCMDTYPE_AFTER_DAMAGE EQU $04
DEF EFFECTCMDTYPE_AI_SELECTION EQU $08
DEF EFFECTCMDTYPE_AI_SWITCH_DEFENDING_PKMN EQU $0a
DEF EFFECTCMDTYPE_PKMN_POWER_TRIGGER EQU $07
DEF EFFECTCMDTYPE_AI EQU $09
; wDamageEffectiveness constants
WEAKNESS EQU 1
RESISTANCE EQU 2
DEF WEAKNESS EQU 1
DEF RESISTANCE EQU 2
; wNoDamageOrEffect constants
NO_DAMAGE_OR_EFFECT_AGILITY EQU $01
NO_DAMAGE_OR_EFFECT_BARRIER EQU $02
NO_DAMAGE_OR_EFFECT_FLY EQU $03
NO_DAMAGE_OR_EFFECT_TRANSPARENCY EQU $04
NO_DAMAGE_OR_EFFECT_NSHIELD EQU $05
DEF NO_DAMAGE_OR_EFFECT_AGILITY EQU $01
DEF NO_DAMAGE_OR_EFFECT_BARRIER EQU $02
DEF NO_DAMAGE_OR_EFFECT_FLY EQU $03
DEF NO_DAMAGE_OR_EFFECT_TRANSPARENCY EQU $04
DEF NO_DAMAGE_OR_EFFECT_NSHIELD EQU $05
; OppAction_* constants (OppActionTable)
const_def
@ -251,22 +251,22 @@ NO_DAMAGE_OR_EFFECT_NSHIELD EQU $05
const PRACTICEDUEL_REPLACE_KNOCKED_OUT_POKEMON
; wEffectFailed constants
EFFECT_FAILED_NO_EFFECT EQU $01
EFFECT_FAILED_UNSUCCESSFUL EQU $02
DEF EFFECT_FAILED_NO_EFFECT EQU $01
DEF EFFECT_FAILED_UNSUCCESSFUL EQU $02
; wAnimationQueue length
ANIMATION_QUEUE_LENGTH EQU 7
DEF ANIMATION_QUEUE_LENGTH EQU 7
PRIZES_1 EQU $01
PRIZES_2 EQU $02
PRIZES_3 EQU $03
PRIZES_4 EQU $04
PRIZES_5 EQU $05
PRIZES_6 EQU $06
DEF PRIZES_1 EQU $01
DEF PRIZES_2 EQU $02
DEF PRIZES_3 EQU $03
DEF PRIZES_4 EQU $04
DEF PRIZES_5 EQU $05
DEF PRIZES_6 EQU $06
; constants to use as input to LookForCardInDeck
SEARCHEFFECT_CARD_ID EQU $0
SEARCHEFFECT_NIDORAN EQU $1
SEARCHEFFECT_BASIC_FIGHTING EQU $2
SEARCHEFFECT_BASIC_ENERGY EQU $3
SEARCHEFFECT_POKEMON EQU $4
DEF SEARCHEFFECT_CARD_ID EQU $0
DEF SEARCHEFFECT_NIDORAN EQU $1
DEF SEARCHEFFECT_BASIC_FIGHTING EQU $2
DEF SEARCHEFFECT_BASIC_ENERGY EQU $3
DEF SEARCHEFFECT_POKEMON EQU $4

View File

@ -1,28 +1,28 @@
; wCardPageNumber constants
CARDPAGE_POKEMON_OVERVIEW EQU $01
CARDPAGE_POKEMON_ATTACK1_1 EQU $02
CARDPAGE_POKEMON_ATTACK1_2 EQU $03
CARDPAGE_POKEMON_ATTACK2_1 EQU $04
CARDPAGE_POKEMON_ATTACK2_2 EQU $05
CARDPAGE_POKEMON_DESCRIPTION EQU $06
CARDPAGE_ENERGY EQU $09
CARDPAGE_TRAINER_1 EQU $0d
CARDPAGE_TRAINER_2 EQU $0e
DEF CARDPAGE_POKEMON_OVERVIEW EQU $01
DEF CARDPAGE_POKEMON_ATTACK1_1 EQU $02
DEF CARDPAGE_POKEMON_ATTACK1_2 EQU $03
DEF CARDPAGE_POKEMON_ATTACK2_1 EQU $04
DEF CARDPAGE_POKEMON_ATTACK2_2 EQU $05
DEF CARDPAGE_POKEMON_DESCRIPTION EQU $06
DEF CARDPAGE_ENERGY EQU $09
DEF CARDPAGE_TRAINER_1 EQU $0d
DEF CARDPAGE_TRAINER_2 EQU $0e
; wAttackPageNumber constants
ATTACKPAGE_ATTACK1_1 EQU $00
ATTACKPAGE_ATTACK1_2 EQU $01
ATTACKPAGE_ATTACK2_1 EQU $02
ATTACKPAGE_ATTACK2_2 EQU $03
DEF ATTACKPAGE_ATTACK1_1 EQU $00
DEF ATTACKPAGE_ATTACK1_2 EQU $01
DEF ATTACKPAGE_ATTACK2_1 EQU $02
DEF ATTACKPAGE_ATTACK2_2 EQU $03
; wCardPageType constants
CARDPAGETYPE_NOT_PLAY_AREA EQU $00
CARDPAGETYPE_PLAY_AREA EQU $01
DEF CARDPAGETYPE_NOT_PLAY_AREA EQU $00
DEF CARDPAGETYPE_PLAY_AREA EQU $01
; card type header constants ($10-tile headers in DuelCardHeaderGraphics)
HEADER_TRAINER EQU $00
HEADER_ENERGY EQU $01
HEADER_POKEMON EQU $02
DEF HEADER_TRAINER EQU $00
DEF HEADER_ENERGY EQU $01
DEF HEADER_POKEMON EQU $02
; Box message id's
const_def
@ -35,20 +35,20 @@ HEADER_POKEMON EQU $02
const BOXMSG_COIN_TOSS
; wDuelDisplayedScreen constants
DUEL_MAIN_SCENE EQU $01
PLAY_AREA_CARD_LIST EQU $02
UNKNOWN_SCREEN_4 EQU $04 ; used for some animations
UNKNOWN_SCREEN_5 EQU $05 ; used for some animations
COIN_TOSS EQU $06
DRAW_CARDS EQU $07
LARGE_CARD_PICTURE EQU $08
SHUFFLE_DECK EQU $09
CHECK_PLAY_AREA EQU $0a
DEF DUEL_MAIN_SCENE EQU $01
DEF PLAY_AREA_CARD_LIST EQU $02
DEF UNKNOWN_SCREEN_4 EQU $04 ; used for some animations
DEF UNKNOWN_SCREEN_5 EQU $05 ; used for some animations
DEF COIN_TOSS EQU $06
DEF DRAW_CARDS EQU $07
DEF LARGE_CARD_PICTURE EQU $08
DEF SHUFFLE_DECK EQU $09
DEF CHECK_PLAY_AREA EQU $0a
; wCardListItemSelectionMenuType constants
;NONE EQU $00
PLAY_CHECK EQU $01
SELECT_CHECK EQU $02
DEF PLAY_CHECK EQU $01
DEF SELECT_CHECK EQU $02
; wInPlayAreaCurPosition constants
const_def

View File

@ -1,38 +1,38 @@
; screen size
SCREEN_WIDTH EQU 20 ; tiles
SCREEN_HEIGHT EQU 18 ; tiles
DEF SCREEN_WIDTH EQU 20 ; tiles
DEF SCREEN_HEIGHT EQU 18 ; tiles
; background map size
BG_MAP_WIDTH EQU 32 ; tiles
BG_MAP_HEIGHT EQU 32 ; tiles
DEF BG_MAP_WIDTH EQU 32 ; tiles
DEF BG_MAP_HEIGHT EQU 32 ; tiles
; cgb palette size
CGB_PAL_SIZE EQU 8 ; bytes
palettes EQUS "* CGB_PAL_SIZE"
DEF CGB_PAL_SIZE EQU 8 ; bytes
DEF palettes EQUS "* CGB_PAL_SIZE"
NUM_BACKGROUND_PALETTES EQU 8
NUM_OBJECT_PALETTES EQU 8
DEF NUM_BACKGROUND_PALETTES EQU 8
DEF NUM_OBJECT_PALETTES EQU 8
PALRGB_WHITE EQU (31 << 10 | 31 << 5 | 31)
DEF PALRGB_WHITE EQU (31 << 10 | 31 << 5 | 31)
; tile size
TILE_SIZE EQU 16 ; bytes
tiles EQUS "* TILE_SIZE"
DEF TILE_SIZE EQU 16 ; bytes
DEF tiles EQUS "* TILE_SIZE"
TILE_SIZE_1BPP EQU 8 ; bytes
tiles_1bpp EQUS "* TILE_SIZE_1BPP"
DEF TILE_SIZE_1BPP EQU 8 ; bytes
DEF tiles_1bpp EQUS "* TILE_SIZE_1BPP"
; icon tile offsets
ICON_TILE_BASIC_POKEMON EQU $d0
ICON_TILE_STAGE_1_POKEMON EQU $d4
ICON_TILE_STAGE_2_POKEMON EQU $d8
ICON_TILE_TRAINER EQU $dc
DEF ICON_TILE_BASIC_POKEMON EQU $d0
DEF ICON_TILE_STAGE_1_POKEMON EQU $d4
DEF ICON_TILE_STAGE_2_POKEMON EQU $d8
DEF ICON_TILE_TRAINER EQU $dc
ICON_TILE_FIRE EQU $e0
ICON_TILE_GRASS EQU $e4
ICON_TILE_LIGHTNING EQU $e8
ICON_TILE_WATER EQU $ec
ICON_TILE_FIGHTING EQU $f0
ICON_TILE_PSYCHIC EQU $f4
ICON_TILE_COLORLESS EQU $f8
ICON_TILE_ENERGY EQU $fc
DEF ICON_TILE_FIRE EQU $e0
DEF ICON_TILE_GRASS EQU $e4
DEF ICON_TILE_LIGHTNING EQU $e8
DEF ICON_TILE_WATER EQU $ec
DEF ICON_TILE_FIGHTING EQU $f0
DEF ICON_TILE_PSYCHIC EQU $f4
DEF ICON_TILE_COLORLESS EQU $f8
DEF ICON_TILE_ENERGY EQU $fc

View File

@ -1,193 +1,193 @@
; From http://bgb.bircd.org/pandocs.htm and https://github.com/tobiasvl/hardware.inc
GBC EQU $11
DEF GBC EQU $11
; MBC3
MBC3SRamEnable EQU $0000
MBC3RomBank EQU $2000
MBC3SRamBank EQU $4000
MBC3LatchClock EQU $6000
MBC3RTC EQU $a000
DEF MBC3SRamEnable EQU $0000
DEF MBC3RomBank EQU $2000
DEF MBC3SRamBank EQU $4000
DEF MBC3LatchClock EQU $6000
DEF MBC3RTC EQU $a000
SRAM_DISABLE EQU $00
SRAM_ENABLE EQU $0a
DEF SRAM_DISABLE EQU $00
DEF SRAM_ENABLE EQU $0a
NUM_SRAM_BANKS EQU 4
DEF NUM_SRAM_BANKS EQU 4
RTC_S EQU $08 ; Seconds 0-59 (0-3Bh)
RTC_M EQU $09 ; Minutes 0-59 (0-3Bh)
RTC_H EQU $0a ; Hours 0-23 (0-17h)
RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
DEF RTC_S EQU $08 ; Seconds 0-59 (0-3Bh)
DEF RTC_M EQU $09 ; Minutes 0-59 (0-3Bh)
DEF RTC_H EQU $0a ; Hours 0-23 (0-17h)
DEF RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
DEF RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
; Bit 0 Most significant bit of Day Counter (Bit 8)
; Bit 6 Halt (0=Active, 1=Stop Timer)
; Bit 7 Day Counter Carry Bit (1=Counter Overflow)
; interrupt flags
INT_VBLANK EQU 0
INT_LCD_STAT EQU 1
INT_TIMER EQU 2
INT_SERIAL EQU 3
INT_JOYPAD EQU 4
DEF INT_VBLANK EQU 0
DEF INT_LCD_STAT EQU 1
DEF INT_TIMER EQU 2
DEF INT_SERIAL EQU 3
DEF INT_JOYPAD EQU 4
; OAM attribute flags
OAM_PALETTE EQU %111
OAM_TILE_BANK EQU 3
OAM_OBP_NUM EQU 4 ; Non CGB Mode Only
OAM_X_FLIP EQU 5
OAM_Y_FLIP EQU 6
OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
DEF OAM_PALETTE EQU %111
DEF OAM_TILE_BANK EQU 3
DEF OAM_OBP_NUM EQU 4 ; Non CGB Mode Only
DEF OAM_X_FLIP EQU 5
DEF OAM_Y_FLIP EQU 6
DEF OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; Hardware registers
rJOYP EQU $ff00 ; Joypad (R/W)
P15 EQU %00100000
JOY_BTNS_SELECT EQU P15
P14 EQU %00010000
JOY_DPAD_SELECT EQU P14
JOY_INPUT_MASK EQU %00001111
P13 EQU %00001000
P12 EQU %00000100
P11 EQU %00000010
P10 EQU %00000001
JOY_INPUT_DOWN EQU P13
JOY_INPUT_UP EQU P12
JOY_INPUT_LEFT EQU P11
JOY_INPUT_RIGHT EQU P10
JOY_INPUT_START EQU P13
JOY_INPUT_SELECT EQU P12
JOY_INPUT_B EQU P11
JOY_INPUT_A EQU P10
SNES_JOYPAD1 EQU $3 ; lower two bits
SNES_JOYPAD2 EQU $2 ; lower two bits
SNES_JOYPAD3 EQU $1 ; lower two bits
SNES_JOYPAD4 EQU $0 ; lower two bits
DEF rJOYP EQU $ff00 ; Joypad (R/W)
DEF P15 EQU %00100000
DEF JOY_BTNS_SELECT EQU P15
DEF P14 EQU %00010000
DEF JOY_DPAD_SELECT EQU P14
DEF JOY_INPUT_MASK EQU %00001111
DEF P13 EQU %00001000
DEF P12 EQU %00000100
DEF P11 EQU %00000010
DEF P10 EQU %00000001
DEF JOY_INPUT_DOWN EQU P13
DEF JOY_INPUT_UP EQU P12
DEF JOY_INPUT_LEFT EQU P11
DEF JOY_INPUT_RIGHT EQU P10
DEF JOY_INPUT_START EQU P13
DEF JOY_INPUT_SELECT EQU P12
DEF JOY_INPUT_B EQU P11
DEF JOY_INPUT_A EQU P10
DEF SNES_JOYPAD1 EQU $3 ; lower two bits
DEF SNES_JOYPAD2 EQU $2 ; lower two bits
DEF SNES_JOYPAD3 EQU $1 ; lower two bits
DEF SNES_JOYPAD4 EQU $0 ; lower two bits
rSB EQU $ff01 ; Serial transfer data (R/W)
rSC EQU $ff02 ; Serial Transfer Control (R/W)
SC_START EQU $80
SC_INTERNAL EQU $01
SC_EXTERNAL EQU $00
DEF rSB EQU $ff01 ; Serial transfer data (R/W)
DEF rSC EQU $ff02 ; Serial Transfer Control (R/W)
DEF SC_START EQU $80
DEF SC_INTERNAL EQU $01
DEF SC_EXTERNAL EQU $00
rDIV EQU $ff04 ; Divider Register (R/W)
rTIMA EQU $ff05 ; Timer counter (R/W)
rTMA EQU $ff06 ; Timer Modulo (R/W)
rTAC EQU $ff07 ; Timer Control (R/W)
TAC_START EQU $04
TAC_STOP EQU $00
TAC_4096_HZ EQU $00
TAC_262144_HZ EQU $01
TAC_65536_HZ EQU $02
TAC_16384_HZ EQU $03
DEF rDIV EQU $ff04 ; Divider Register (R/W)
DEF rTIMA EQU $ff05 ; Timer counter (R/W)
DEF rTMA EQU $ff06 ; Timer Modulo (R/W)
DEF rTAC EQU $ff07 ; Timer Control (R/W)
DEF TAC_START EQU $04
DEF TAC_STOP EQU $00
DEF TAC_4096_HZ EQU $00
DEF TAC_262144_HZ EQU $01
DEF TAC_65536_HZ EQU $02
DEF TAC_16384_HZ EQU $03
rIF EQU $ff0f ; Interrupt Flag (R/W)
DEF rIF EQU $ff0f ; Interrupt Flag (R/W)
rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
DEF rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
DEF rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
DEF rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
DEF rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
DEF rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
DEF rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
DEF rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
DEF rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
DEF rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
rNR31 EQU $ff1b ; Channel 3 Sound Length
rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
DEF rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
DEF rNR31 EQU $ff1b ; Channel 3 Sound Length
DEF rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
DEF rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
DEF rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W)
DEF rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
DEF rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
DEF rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
DEF rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W)
rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
rNR52 EQU $ff26 ; Sound on/off
DEF rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
DEF rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
DEF rNR52 EQU $ff26 ; Sound on/off
rLCDC EQU $ff40 ; LCD Control (R/W)
LCDC_OFF EQU %01111111 ; LCD Control Operation (and)
LCDC_ON EQU %10000000 ; LCD Control Operation (ld/or)
LCDC_ENABLE_F EQU 7
LCDC_WIN9800 EQU %10111111 ; Window Tile Map Display Select (and)
LCDC_WIN9C00 EQU %01000000 ; Window Tile Map Display Select (ld/or)
LCDC_WINSELECT EQU LCDC_WIN9C00
LCDC_WINOFF EQU %11011111 ; Window Display (and)
LCDC_WINON EQU %00100000 ; Window Display (ld/or)
LCDC_WINENABLE EQU LCDC_WINON
LCDC_BG8800 EQU %11101111 ; BG & Window Tile Data Select (and)
LCDC_BG8000 EQU %00010000 ; BG & Window Tile Data Select (ld/or)
LCDC_BGTILEDATA EQU LCDC_BG8000
LCDC_BG9800 EQU %11110111 ; BG Tile Map Display Select (and)
LCDC_BG9C00 EQU %00001000 ; BG Tile Map Display Select (ld/or)
LCDC_BGTILEMAP EQU LCDC_BG9C00
LCDC_OBJ8 EQU %11111011 ; OBJ Construction (and)
LCDC_OBJ16 EQU %00000100 ; OBJ Construction (ld/or)
LCDC_OBJSIZE EQU LCDC_OBJ16
LCDC_OBJOFF EQU %11111101 ; OBJ Display (and)
LCDC_OBJON EQU %00000010 ; OBJ Display (ld/or)
LCDC_OBJENABLE EQU LCDC_OBJON
LCDC_BGOFF EQU %11111110 ; BG Display (and)
LCDC_BGON EQU %00000001 ; BG Display (ld/or)
LCDC_BGENABLE EQU LCDC_BGON
DEF rLCDC EQU $ff40 ; LCD Control (R/W)
DEF LCDC_OFF EQU %01111111 ; LCD Control Operation (and)
DEF LCDC_ON EQU %10000000 ; LCD Control Operation (ld/or)
DEF LCDC_ENABLE_F EQU 7
DEF LCDC_WIN9800 EQU %10111111 ; Window Tile Map Display Select (and)
DEF LCDC_WIN9C00 EQU %01000000 ; Window Tile Map Display Select (ld/or)
DEF LCDC_WINSELECT EQU LCDC_WIN9C00
DEF LCDC_WINOFF EQU %11011111 ; Window Display (and)
DEF LCDC_WINON EQU %00100000 ; Window Display (ld/or)
DEF LCDC_WINENABLE EQU LCDC_WINON
DEF LCDC_BG8800 EQU %11101111 ; BG & Window Tile Data Select (and)
DEF LCDC_BG8000 EQU %00010000 ; BG & Window Tile Data Select (ld/or)
DEF LCDC_BGTILEDATA EQU LCDC_BG8000
DEF LCDC_BG9800 EQU %11110111 ; BG Tile Map Display Select (and)
DEF LCDC_BG9C00 EQU %00001000 ; BG Tile Map Display Select (ld/or)
DEF LCDC_BGTILEMAP EQU LCDC_BG9C00
DEF LCDC_OBJ8 EQU %11111011 ; OBJ Construction (and)
DEF LCDC_OBJ16 EQU %00000100 ; OBJ Construction (ld/or)
DEF LCDC_OBJSIZE EQU LCDC_OBJ16
DEF LCDC_OBJOFF EQU %11111101 ; OBJ Display (and)
DEF LCDC_OBJON EQU %00000010 ; OBJ Display (ld/or)
DEF LCDC_OBJENABLE EQU LCDC_OBJON
DEF LCDC_BGOFF EQU %11111110 ; BG Display (and)
DEF LCDC_BGON EQU %00000001 ; BG Display (ld/or)
DEF LCDC_BGENABLE EQU LCDC_BGON
rSTAT EQU $ff41 ; LCDC Status (R/W)
STAT_LYC EQU 6 ; LYC=LY Coincidence
STAT_MODE_OAM EQU 5 ; Mode 10 (OAM)
STAT_MODE_VBLANK EQU 4 ; Mode 01 (V-Blank)
STAT_MODE_HBLANK EQU 3 ; Mode 00 (H-Blank)
STAT_LYCFLAG EQU 2 ; 0:LYC<>LY, 1:LYC=LY
STAT_LCDC_STATUS EQU %00000011
STAT_ON_HBLANK EQU %00000000 ; H-Blank
STAT_ON_VBLANK EQU %00000001 ; V-Blank
STAT_ON_OAM EQU %00000010 ; OAM-RAM is used by system
STAT_ON_LCD EQU %00000011 ; Both OAM and VRAM used by system
STAT_BUSY EQU 1 ; When set, VRAM and OAM access is unsafe
DEF rSTAT EQU $ff41 ; LCDC Status (R/W)
DEF STAT_LYC EQU 6 ; LYC=LY Coincidence
DEF STAT_MODE_OAM EQU 5 ; Mode 10 (OAM)
DEF STAT_MODE_VBLANK EQU 4 ; Mode 01 (V-Blank)
DEF STAT_MODE_HBLANK EQU 3 ; Mode 00 (H-Blank)
DEF STAT_LYCFLAG EQU 2 ; 0:LYC<>LY, 1:LYC=LY
DEF STAT_LCDC_STATUS EQU %00000011
DEF STAT_ON_HBLANK EQU %00000000 ; H-Blank
DEF STAT_ON_VBLANK EQU %00000001 ; V-Blank
DEF STAT_ON_OAM EQU %00000010 ; OAM-RAM is used by system
DEF STAT_ON_LCD EQU %00000011 ; Both OAM and VRAM used by system
DEF STAT_BUSY EQU 1 ; When set, VRAM and OAM access is unsafe
rSCY EQU $ff42 ; Scroll Y (R/W)
rSCX EQU $ff43 ; Scroll X (R/W)
DEF rSCY EQU $ff42 ; Scroll Y (R/W)
DEF rSCX EQU $ff43 ; Scroll X (R/W)
rLY EQU $ff44 ; LCDC Y-Coordinate (R)
LY_VBLANK EQU 145
rLYC EQU $ff45 ; LY Compare (R/W)
DEF rLY EQU $ff44 ; LCDC Y-Coordinate (R)
DEF LY_VBLANK EQU 145
DEF rLYC EQU $ff45 ; LY Compare (R/W)
rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
DEF rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
DEF rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
DEF rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
DEF rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
rWY EQU $ff4a ; Window Y Position (R/W)
rWX EQU $ff4b ; Window X Position minus 7 (R/W)
DEF rWY EQU $ff4a ; Window Y Position (R/W)
DEF rWX EQU $ff4b ; Window X Position minus 7 (R/W)
rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
DEF rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
DEF rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
DEF rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
DEF rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
DEF rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
DEF rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
DEF rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
DEF rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
DEF rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
DEF rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
DEF rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
DEF rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
DEF rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
DEF rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only)
rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only)
DEF rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
DEF rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
DEF rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
DEF rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
DEF rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only)
DEF rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only)
rIE EQU $ffff ; Interrupt Enable (R/W)
DEF rIE EQU $ffff ; Interrupt Enable (R/W)

View File

@ -52,19 +52,19 @@
; Size of map data. See data/npc_map_data.asm and data/map_objects.asm
; for more info on what these represent
NPC_MAP_SIZE EQU $06
MAP_OBJECT_SIZE EQU $09
DEF NPC_MAP_SIZE EQU $06
DEF MAP_OBJECT_SIZE EQU $09
; Most of these aren't fully understood so the names aren't great
MAP_SCRIPT_SIZE EQU $0f
MAP_SCRIPT_NPCS EQU $00
MAP_SCRIPT_POST_NPC EQU $02
MAP_SCRIPT_OBJECTS EQU $04
MAP_SCRIPT_PRESSED_A EQU $06
MAP_SCRIPT_LOAD_MAP EQU $08
MAP_SCRIPT_AFTER_DUEL EQU $0a
MAP_SCRIPT_MOVED_PLAYER EQU $0c
MAP_SCRIPT_CLOSE_TEXTBOX EQU $0e
DEF MAP_SCRIPT_SIZE EQU $0f
DEF MAP_SCRIPT_NPCS EQU $00
DEF MAP_SCRIPT_POST_NPC EQU $02
DEF MAP_SCRIPT_OBJECTS EQU $04
DEF MAP_SCRIPT_PRESSED_A EQU $06
DEF MAP_SCRIPT_LOAD_MAP EQU $08
DEF MAP_SCRIPT_AFTER_DUEL EQU $0a
DEF MAP_SCRIPT_MOVED_PLAYER EQU $0c
DEF MAP_SCRIPT_CLOSE_TEXTBOX EQU $0e
; map palettes for use in SGB mode
const_def 1
@ -91,4 +91,4 @@ MAP_SCRIPT_CLOSE_TEXTBOX EQU $0e
const MAP_EVENT_SCIENCE_DECK_MACHINE ; $8
const MAP_EVENT_FIRE_DECK_MACHINE ; $9
const MAP_EVENT_CHALLENGE_MACHINE ; $a
NUM_MAP_EVENTS EQU const_value
DEF NUM_MAP_EVENTS EQU const_value

View File

@ -1,22 +1,22 @@
; filter types for CardTypeFilters
; used to categorise the different cards
; i.e. in the deck building screen
FILTER_FIRE EQUS "TYPE_PKMN_FIRE"
FILTER_GRASS EQUS "TYPE_PKMN_GRASS"
FILTER_LIGHTNING EQUS "TYPE_PKMN_LIGHTNING"
FILTER_WATER EQUS "TYPE_PKMN_WATER"
FILTER_FIGHTING EQUS "TYPE_PKMN_FIGHTING"
FILTER_PSYCHIC EQUS "TYPE_PKMN_PSYCHIC"
FILTER_COLORLESS EQUS "TYPE_PKMN_COLORLESS"
FILTER_TRAINER EQUS "TYPE_TRAINER"
FILTER_ENERGY EQU $20
DEF FILTER_FIRE EQUS "TYPE_PKMN_FIRE"
DEF FILTER_GRASS EQUS "TYPE_PKMN_GRASS"
DEF FILTER_LIGHTNING EQUS "TYPE_PKMN_LIGHTNING"
DEF FILTER_WATER EQUS "TYPE_PKMN_WATER"
DEF FILTER_FIGHTING EQUS "TYPE_PKMN_FIGHTING"
DEF FILTER_PSYCHIC EQUS "TYPE_PKMN_PSYCHIC"
DEF FILTER_COLORLESS EQUS "TYPE_PKMN_COLORLESS"
DEF FILTER_TRAINER EQUS "TYPE_TRAINER"
DEF FILTER_ENERGY EQU $20
NUM_FILTERS EQU 9
DEF NUM_FILTERS EQU 9
NUM_DECK_CONFIRMATION_VISIBLE_CARDS EQU 7
NUM_CARD_ALBUM_VISIBLE_CARDS EQU 7
NUM_FILTERED_LIST_VISIBLE_CARDS EQU 6
NUM_DECK_MACHINE_VISIBLE_DECKS EQU 5
DEF NUM_DECK_CONFIRMATION_VISIBLE_CARDS EQU 7
DEF NUM_CARD_ALBUM_VISIBLE_CARDS EQU 7
DEF NUM_FILTERED_LIST_VISIBLE_CARDS EQU 6
DEF NUM_DECK_MACHINE_VISIBLE_DECKS EQU 5
; deck flags
const_def
@ -25,22 +25,22 @@ NUM_DECK_MACHINE_VISIBLE_DECKS EQU 5
const DECK_3_F ; $2
const DECK_4_F ; $3
DECK_1 EQU 1 << DECK_1_F ; $1
DECK_2 EQU 1 << DECK_2_F ; $2
DECK_3 EQU 1 << DECK_3_F ; $4
DECK_4 EQU 1 << DECK_4_F ; $8
DEF DECK_1 EQU 1 << DECK_1_F ; $1
DEF DECK_2 EQU 1 << DECK_2_F ; $2
DEF DECK_3 EQU 1 << DECK_3_F ; $4
DEF DECK_4 EQU 1 << DECK_4_F ; $8
ALL_DECKS EQU $ff
DEF ALL_DECKS EQU $ff
NUM_DECK_SAVE_MACHINE_SLOTS EQU 60
NUM_DECK_MACHINE_SLOTS EQU 5
DEF NUM_DECK_SAVE_MACHINE_SLOTS EQU 60
DEF NUM_DECK_MACHINE_SLOTS EQU 5
; TODO find a way to not have these hardcoded?
NUM_CARDS_COLOSSEUM EQU 56
NUM_CARDS_EVOLUTION EQU 50
NUM_CARDS_MYSTERY EQU 51
NUM_CARDS_LABORATORY EQU 51
NUM_CARDS_PROMOTIONAL EQU 20
DEF NUM_CARDS_COLOSSEUM EQU 56
DEF NUM_CARDS_EVOLUTION EQU 50
DEF NUM_CARDS_MYSTERY EQU 51
DEF NUM_CARDS_LABORATORY EQU 51
DEF NUM_CARDS_PROMOTIONAL EQU 20
; wOwnedPhantomCardFlags flags
const_def

View File

@ -1,38 +1,38 @@
; buttons
A_BUTTON_F EQU 0
B_BUTTON_F EQU 1
SELECT_F EQU 2
START_F EQU 3
D_RIGHT_F EQU 4
D_LEFT_F EQU 5
D_UP_F EQU 6
D_DOWN_F EQU 7
DEF A_BUTTON_F EQU 0
DEF B_BUTTON_F EQU 1
DEF SELECT_F EQU 2
DEF START_F EQU 3
DEF D_RIGHT_F EQU 4
DEF D_LEFT_F EQU 5
DEF D_UP_F EQU 6
DEF D_DOWN_F EQU 7
A_BUTTON EQU 1 << A_BUTTON_F ; $01
B_BUTTON EQU 1 << B_BUTTON_F ; $02
SELECT EQU 1 << SELECT_F ; $04
START EQU 1 << START_F ; $08
D_RIGHT EQU 1 << D_RIGHT_F ; $10
D_LEFT EQU 1 << D_LEFT_F ; $20
D_UP EQU 1 << D_UP_F ; $40
D_DOWN EQU 1 << D_DOWN_F ; $80
DEF A_BUTTON EQU 1 << A_BUTTON_F ; $01
DEF B_BUTTON EQU 1 << B_BUTTON_F ; $02
DEF SELECT EQU 1 << SELECT_F ; $04
DEF START EQU 1 << START_F ; $08
DEF D_RIGHT EQU 1 << D_RIGHT_F ; $10
DEF D_LEFT EQU 1 << D_LEFT_F ; $20
DEF D_UP EQU 1 << D_UP_F ; $40
DEF D_DOWN EQU 1 << D_DOWN_F ; $80
BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START ; $0f
D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN ; $f0
DEF BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START ; $0f
DEF D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN ; $f0
; console types (wConsole)
CONSOLE_DMG EQU $00
CONSOLE_SGB EQU $01
CONSOLE_CGB EQU $02
DEF CONSOLE_DMG EQU $00
DEF CONSOLE_SGB EQU $01
DEF CONSOLE_CGB EQU $02
; wReentrancyFlag bits
IN_VBLANK EQU 0
IN_TIMER EQU 1
DEF IN_VBLANK EQU 0
DEF IN_TIMER EQU 1
; wFlushPaletteFlags constants
FLUSH_ONE_PAL EQU %10000000
FLUSH_ALL_PALS EQU %11000000
FLUSH_ALL_PALS_F EQU 6
DEF FLUSH_ONE_PAL EQU %10000000
DEF FLUSH_ALL_PALS EQU %11000000
DEF FLUSH_ALL_PALS_F EQU 6
; Game event constants (wGameEvent)
const_def
@ -43,24 +43,24 @@ FLUSH_ALL_PALS_F EQU 6
const GAME_EVENT_CREDITS ; $4
const GAME_EVENT_CONTINUE_DUEL ; $5
const GAME_EVENT_CHALLENGE_MACHINE ; $6
NUM_GAME_EVENTS EQU const_value
DEF NUM_GAME_EVENTS EQU const_value
OWMODE_MAP EQU 0
OWMODE_MOVE EQU 1
OWMODE_START_SCRIPT EQU 2
OWMODE_SCRIPT EQU 3
DEF OWMODE_MAP EQU 0
DEF OWMODE_MOVE EQU 1
DEF OWMODE_START_SCRIPT EQU 2
DEF OWMODE_SCRIPT EQU 3
; overworld NPC flag constants (see wOverworldNPCFlags)
AUTO_CLOSE_TEXTBOX EQU 0
RESTORE_FACING_DIRECTION EQU 1
HIDE_ALL_NPC_SPRITES EQU 7
DEF AUTO_CLOSE_TEXTBOX EQU 0
DEF RESTORE_FACING_DIRECTION EQU 1
DEF HIDE_ALL_NPC_SPRITES EQU 7
; max number of player names that
; can be written to sCardPopNameList
CARDPOP_NAME_LIST_MAX_ELEMS EQU 16
CARDPOP_NAME_LIST_SIZE EQUS "CARDPOP_NAME_LIST_MAX_ELEMS * NAME_BUFFER_LENGTH"
DEF CARDPOP_NAME_LIST_MAX_ELEMS EQU 16
DEF CARDPOP_NAME_LIST_SIZE EQUS "CARDPOP_NAME_LIST_MAX_ELEMS * NAME_BUFFER_LENGTH"
NUM_CHALLENGE_MACHINE_OPPONENTS EQU 5
DEF NUM_CHALLENGE_MACHINE_OPPONENTS EQU 5
; commands transmitted through IR to be
; executed by the other device
@ -71,7 +71,7 @@ NUM_CHALLENGE_MACHINE_OPPONENTS EQU 5
const IRCMD_TRANSMIT_DATA ; $2
const IRCMD_RECEIVE_DATA ; $3
const IRCMD_CALL_FUNCTION ; $4
NUM_IR_COMMANDS EQU const_value
DEF NUM_IR_COMMANDS EQU const_value
; parameters for IR communication
; (see InitIRCommunications)
@ -80,7 +80,7 @@ NUM_IR_COMMANDS EQU const_value
const IRPARAM_SEND_CARDS ; $2
const IRPARAM_SEND_DECK ; $3
NULL EQU $0000
DEF NULL EQU $0000
FALSE EQU 0
TRUE EQU 1
DEF FALSE EQU 0
DEF TRUE EQU 1

View File

@ -31,4 +31,4 @@
const MUSIC_MEDAL ; $1d
const MUSIC_UNUSED_1E ; $1e
NUM_SONGS = const_value
DEF NUM_SONGS = const_value

View File

@ -1,6 +1,6 @@
NAME_BUFFER_LENGTH EQU 16
DEF NAME_BUFFER_LENGTH EQU 16
MAX_PLAYER_NAME_LENGTH EQU 6 * 2
MAX_DECK_NAME_LENGTH EQU 20 * 1 ; note that its unit is byte!
DEF MAX_PLAYER_NAME_LENGTH EQU 6 * 2
DEF MAX_DECK_NAME_LENGTH EQU 20 * 1 ; note that its unit is byte!
NAMING_SCREEN_BUFFER_LENGTH EQU 24
DEF NAMING_SCREEN_BUFFER_LENGTH EQU 24

View File

@ -1,4 +1,4 @@
LOADED_NPC_MAX EQU $08
DEF LOADED_NPC_MAX EQU $08
; wLoadedNPCs structure
const_def
@ -12,9 +12,9 @@ LOADED_NPC_MAX EQU $08
const LOADED_NPC_DIRECTION_BACKUP
const LOADED_NPC_MOVEMENT_STEP
const LOADED_NPC_MOVEMENT_PTR
const_value = const_value+1
DEF const_value = const_value+1
const LOADED_NPC_FIELD_0B
LOADED_NPC_LENGTH EQU const_value
DEF LOADED_NPC_LENGTH EQU const_value
; npc_struct constants
const_def
@ -24,14 +24,14 @@ LOADED_NPC_LENGTH EQU const_value
const NPC_DATA_ANIM_CGB
const NPC_DATA_FLAGS
const NPC_DATA_SCRIPT_PTR
const_value = const_value+1
DEF const_value = const_value+1
const NPC_DATA_NAME_TEXT
const_value = const_value+1
DEF const_value = const_value+1
const NPC_DATA_DUELIST_PICTURE
const NPC_DATA_DECK_ID
const NPC_DATA_DUEL_THEME_ID
const NPC_DATA_MATCH_START_ID
NPC_DATA_LENGTH EQU const_value
DEF NPC_DATA_LENGTH EQU const_value
const_def 1
const PLAYER_PIC ; $01
@ -200,6 +200,6 @@ NPC_DATA_LENGTH EQU const_value
const NPC_FLAG_MOVING_F ; $5
const NPC_FLAG_UNKNOWN_F ; $6
NPC_FLAG_DIRECTIONLESS EQU 1 << NPC_FLAG_DIRECTIONLESS_F
NPC_FLAG_MOVING EQU 1 << NPC_FLAG_MOVING_F
NPC_FLAG_UNKNOWN EQU 1 << NPC_FLAG_UNKNOWN_F
DEF NPC_FLAG_DIRECTIONLESS EQU 1 << NPC_FLAG_DIRECTIONLESS_F
DEF NPC_FLAG_MOVING EQU 1 << NPC_FLAG_MOVING_F
DEF NPC_FLAG_UNKNOWN EQU 1 << NPC_FLAG_UNKNOWN_F

View File

@ -10,8 +10,8 @@
const PRINTER_ERROR_BATTERIES_LOST_CHARGE ; $7
; printer packet types
PRINTERPKT_INIT EQU $01
PRINTERPKT_PRINT_INSTRUCTION EQU $02
PRINTERPKT_DATA EQU $04
PRINTERPKT_BREAK EQU $08
PRINTERPKT_NUL EQU $0f
DEF PRINTERPKT_INIT EQU $01
DEF PRINTERPKT_PRINT_INSTRUCTION EQU $02
DEF PRINTERPKT_DATA EQU $04
DEF PRINTERPKT_BREAK EQU $08
DEF PRINTERPKT_NUL EQU $0f

View File

@ -118,91 +118,91 @@
const EVENT_CONSOLE ; $74
const EVENT_SAM_MENU_CHOICE ; $75
const EVENT_AARON_DECK_MENU_CHOICE ; $76
EVENT_FLAG_AMOUNT EQU const_value
DEF EVENT_FLAG_AMOUNT EQU const_value
EVENT_VAR_BYTES EQU $40
DEF EVENT_VAR_BYTES EQU $40
; EVENT_PUPIL_MICHAEL_STATE
; EVENT_PUPIL_CHRIS_STATE
; EVENT_PUPIL_JESSICA_STATE
PUPIL_INACTIVE EQU 0
PUPIL_ACTIVE EQU 1
PUPIL_TALKED EQU 2
PUPIL_DEFEATED EQU 8
PUPIL_REVISITED EQU 9
DEF PUPIL_INACTIVE EQU 0
DEF PUPIL_ACTIVE EQU 1
DEF PUPIL_TALKED EQU 2
DEF PUPIL_DEFEATED EQU 8
DEF PUPIL_REVISITED EQU 9
; EVENT_GAL1_TRADE_STATE
GAL1_TRADE_NOT_OFFERED EQU 0
GAL1_TRADE_OFFERED EQU 1
GAL1_TRADE_COMPLETED EQU 2
DEF GAL1_TRADE_NOT_OFFERED EQU 0
DEF GAL1_TRADE_OFFERED EQU 1
DEF GAL1_TRADE_COMPLETED EQU 2
; EVENT_IMAKUNI_STATE
IMAKUNI_NOT_MENTIONED EQU 0
IMAKUNI_MENTIONED EQU 1
IMAKUNI_TALKED EQU 2
DEF IMAKUNI_NOT_MENTIONED EQU 0
DEF IMAKUNI_MENTIONED EQU 1
DEF IMAKUNI_TALKED EQU 2
; EVENT_MATTHEW_STATE
MATTHEW_TALKED EQU 1
MATTHEW_DEFEATED EQU 2
DEF MATTHEW_TALKED EQU 1
DEF MATTHEW_DEFEATED EQU 2
; EVENT_CHAP2_TRADE_STATE
CHAP2_TRADE_NOT_OFFERED EQU 0
CHAP2_TRADE_OFFERED EQU 1
CHAP2_TRADE_COMPLETED EQU 2
DEF CHAP2_TRADE_NOT_OFFERED EQU 0
DEF CHAP2_TRADE_OFFERED EQU 1
DEF CHAP2_TRADE_COMPLETED EQU 2
; EVENT_DAVID_STATE
DAVID_TALKED EQU 1
DAVID_DEFEATED EQU 2
DEF DAVID_TALKED EQU 1
DEF DAVID_DEFEATED EQU 2
; EVENT_ISHIHARA_TRADE_STATE
ISHIHARA_INTRODUCTION EQU 0
ISHIHARA_TRADE_1_RUMORED EQU 1
ISHIHARA_TRADE_1_OFFERED EQU 2
ISHIHARA_TRADE_2_RUMORED EQU 3
ISHIHARA_TRADE_2_OFFERED EQU 4
ISHIHARA_TRADE_3_RUMORED EQU 5
ISHIHARA_TRADE_3_OFFERED EQU 6
ISHIHARA_TRADES_COMPLETE EQU 7
ISHIHARA_LEFT EQU 8
DEF ISHIHARA_INTRODUCTION EQU 0
DEF ISHIHARA_TRADE_1_RUMORED EQU 1
DEF ISHIHARA_TRADE_1_OFFERED EQU 2
DEF ISHIHARA_TRADE_2_RUMORED EQU 3
DEF ISHIHARA_TRADE_2_OFFERED EQU 4
DEF ISHIHARA_TRADE_3_RUMORED EQU 5
DEF ISHIHARA_TRADE_3_OFFERED EQU 6
DEF ISHIHARA_TRADES_COMPLETE EQU 7
DEF ISHIHARA_LEFT EQU 8
; EVENT_LAD2_STATE
LAD2_SLOWPOKE_AVAILABLE EQU 1
LAD2_SLOWPOKE_GONE EQU 2
DEF LAD2_SLOWPOKE_AVAILABLE EQU 1
DEF LAD2_SLOWPOKE_GONE EQU 2
; EVENT_MAN1_GIFT_SEQUENCE_STATE
MAN1_GIFT_SEQUENCE_COMPLETE EQU 6
DEF MAN1_GIFT_SEQUENCE_COMPLETE EQU 6
; EVENT_PAPPY1_STATE
PAPPY1_TALKED EQU 1
PAPPY1_CHALLENGE_ACCEPTED EQU 2
PAPPY1_CHALLENGE_COMPLETE EQU 3
DEF PAPPY1_TALKED EQU 1
DEF PAPPY1_CHALLENGE_ACCEPTED EQU 2
DEF PAPPY1_CHALLENGE_COMPLETE EQU 3
; EVENT_JOSHUA_STATE
JOSHUA_TALKED EQU 1
JOSHUA_DEFEATED EQU 2
DEF JOSHUA_TALKED EQU 1
DEF JOSHUA_DEFEATED EQU 2
; EVENT_IMAKUNI_ROOM
IMAKUNI_FIGHTING_CLUB EQU 0
IMAKUNI_SCIENCE_CLUB EQU 1
IMAKUNI_LIGHTNING_CLUB EQU 2
IMAKUNI_WATER_CLUB EQU 3
DEF IMAKUNI_FIGHTING_CLUB EQU 0
DEF IMAKUNI_SCIENCE_CLUB EQU 1
DEF IMAKUNI_LIGHTNING_CLUB EQU 2
DEF IMAKUNI_WATER_CLUB EQU 3
; EVENT_NIKKI_STATE
NIKKI_IN_ISHIHARAS_HOUSE EQU 1
NIKKI_IN_GRASS_CLUB EQU 2
DEF NIKKI_IN_ISHIHARAS_HOUSE EQU 1
DEF NIKKI_IN_GRASS_CLUB EQU 2
; EVENT_LASS2_TRADE_STATE
LASS2_TRADE_1_AVAILABLE EQU 0
LASS2_TRADE_1_OFFERED EQU 1
LASS2_TRADE_2_AVAILABLE EQU 2
LASS2_TRADE_2_OFFERED EQU 3
LASS2_TRADE_3_AVAILABLE EQU 4
LASS2_TRADE_3_OFFERED EQU 5
LASS2_TRADES_COMPLETE EQU 6
DEF LASS2_TRADE_1_AVAILABLE EQU 0
DEF LASS2_TRADE_1_OFFERED EQU 1
DEF LASS2_TRADE_2_AVAILABLE EQU 2
DEF LASS2_TRADE_2_OFFERED EQU 3
DEF LASS2_TRADE_3_AVAILABLE EQU 4
DEF LASS2_TRADE_3_OFFERED EQU 5
DEF LASS2_TRADES_COMPLETE EQU 6
; EVENT_MASON_LAB_STATE
MASON_LAB_IN_PRACTICE_DUEL EQU 1
MASON_LAB_RECEIVED_STARTER_DECK EQU 3
DEF MASON_LAB_IN_PRACTICE_DUEL EQU 1
DEF MASON_LAB_RECEIVED_STARTER_DECK EQU 3
; EVENT_CHALLENGE_CUP_1_STATE
; EVENT_CHALLENGE_CUP_2_STATE
@ -210,75 +210,75 @@ MASON_LAB_RECEIVED_STARTER_DECK EQU 3
; EVENT_CHALLENGE_CUP_1_RESULT
; EVENT_CHALLENGE_CUP_2_RESULT
; EVENT_CHALLENGE_CUP_3_RESULT
CHALLENGE_CUP_NOT_STARTED EQU 0
CHALLENGE_CUP_READY_TO_START EQU 1
CHALLENGE_CUP_WON EQU 2
CHALLENGE_CUP_LOST EQU 3
CHALLENGE_CUP_OVER EQU 7
DEF CHALLENGE_CUP_NOT_STARTED EQU 0
DEF CHALLENGE_CUP_READY_TO_START EQU 1
DEF CHALLENGE_CUP_WON EQU 2
DEF CHALLENGE_CUP_LOST EQU 3
DEF CHALLENGE_CUP_OVER EQU 7
; EVENT_RONALD_FIRST_DUEL_STATE
; EVENT_RONALD_SECOND_DUEL_STATE
RONALD_DUEL_WON EQU 1
RONALD_DUEL_LOST EQU 2
DEF RONALD_DUEL_WON EQU 1
DEF RONALD_DUEL_LOST EQU 2
; EVENT_POKEMON_DOME_STATE
POKEMON_DOME_CHALLENGED EQU 1
POKEMON_DOME_DEFEATED EQU 2
DEF POKEMON_DOME_CHALLENGED EQU 1
DEF POKEMON_DOME_DEFEATED EQU 2
; EVENT_COURTNEY_STATE
COURTNEY_CHALLENGED EQU 1
COURTNEY_DEFEATED EQU 2
DEF COURTNEY_CHALLENGED EQU 1
DEF COURTNEY_DEFEATED EQU 2
; EVENT_STEVE_STATE
STEVE_CHALLENGED EQU 1
STEVE_DEFEATED EQU 2
DEF STEVE_CHALLENGED EQU 1
DEF STEVE_DEFEATED EQU 2
; EVENT_JACK_STATE
JACK_CHALLENGED EQU 1
JACK_DEFEATED EQU 2
DEF JACK_CHALLENGED EQU 1
DEF JACK_DEFEATED EQU 2
; EVENT_ROD_STATE
ROD_CHALLENGED EQU 1
ROD_DEFEATED EQU 2
DEF ROD_CHALLENGED EQU 1
DEF ROD_DEFEATED EQU 2
; EVENT_RONALD_POKEMON_DOME_STATE
RONALD_CHALLENGED EQU 1
RONALD_DEFEATED EQU 2
DEF RONALD_CHALLENGED EQU 1
DEF RONALD_DEFEATED EQU 2
; EVENT_GIFT_CENTER_MENU_CHOICE
GIFT_CENTER_MENU_SEND_CARD EQU 0
GIFT_CENTER_MENU_RECEIVE_CARD EQU 1
GIFT_CENTER_MENU_SEND_DECK EQU 2
GIFT_CENTER_MENU_RECEIVE_DECK EQU 3
GIFT_CENTER_MENU_EXIT EQU 4
DEF GIFT_CENTER_MENU_SEND_CARD EQU 0
DEF GIFT_CENTER_MENU_RECEIVE_CARD EQU 1
DEF GIFT_CENTER_MENU_SEND_DECK EQU 2
DEF GIFT_CENTER_MENU_RECEIVE_DECK EQU 3
DEF GIFT_CENTER_MENU_EXIT EQU 4
; EVENT_SAM_MENU_CHOICE
; normal menu
SAM_MENU_NORMAL_DUEL EQU 0
SAM_MENU_PRACTICE_DUEL EQU 1
SAM_MENU_RULES EQU 2
SAM_MENU_NOTHING EQU 3
DEF SAM_MENU_NORMAL_DUEL EQU 0
DEF SAM_MENU_PRACTICE_DUEL EQU 1
DEF SAM_MENU_RULES EQU 2
DEF SAM_MENU_NOTHING EQU 3
; rules menu
SAM_MENU_ENERGY EQU 0
SAM_MENU_ATTACKING EQU 1
SAM_MENU_RETREATING EQU 2
SAM_MENU_EVOLVING EQU 3
SAM_MENU_POKEMON_POWER EQU 4
SAM_MENU_ENDING_YOUR_TURN EQU 5
SAM_MENU_WIN_OR_LOSS EQU 6
SAM_MENU_NOTHING_TO_ASK EQU 7
DEF SAM_MENU_ENERGY EQU 0
DEF SAM_MENU_ATTACKING EQU 1
DEF SAM_MENU_RETREATING EQU 2
DEF SAM_MENU_EVOLVING EQU 3
DEF SAM_MENU_POKEMON_POWER EQU 4
DEF SAM_MENU_ENDING_YOUR_TURN EQU 5
DEF SAM_MENU_WIN_OR_LOSS EQU 6
DEF SAM_MENU_NOTHING_TO_ASK EQU 7
; EVENT_AARON_DECK_MENU_CHOICE
AARON_DECK_MENU_CANCEL EQU 3
DEF AARON_DECK_MENU_CANCEL EQU 3
NORTH EQU $00
EAST EQU $01
SOUTH EQU $02
WEST EQU $03
NO_MOVE EQU %10000000 ; For rotations without movement
DIRECTION_MASK EQU $ff ^ NO_MOVE
DEF NORTH EQU $00
DEF EAST EQU $01
DEF SOUTH EQU $02
DEF WEST EQU $03
DEF NO_MOVE EQU %10000000 ; For rotations without movement
DEF DIRECTION_MASK EQU $ff ^ NO_MOVE
VARIABLE_CARD EQU 0 ; use the card located in wCardReceived instead of using the script's argument
DEF VARIABLE_CARD EQU 0 ; use the card located in wCardReceived instead of using the script's argument
; medal flags set in EVENT_MEDAL_FLAGS
const_def
@ -291,18 +291,18 @@ VARIABLE_CARD EQU 0 ; use the card located in wCardReceived instead of using the
const SCIENCE_MEDAL_F ; 6
const GRASS_MEDAL_F ; 7
FIGHTING_MEDAL EQU 1 << FIGHTING_MEDAL_F
ROCK_MEDAL EQU 1 << ROCK_MEDAL_F
PSYCHIC_MEDAL EQU 1 << PSYCHIC_MEDAL_F
LIGHTNING_MEDAL EQU 1 << LIGHTNING_MEDAL_F
WATER_MEDAL EQU 1 << WATER_MEDAL_F
FIRE_MEDAL EQU 1 << FIRE_MEDAL_F
SCIENCE_MEDAL EQU 1 << SCIENCE_MEDAL_F
GRASS_MEDAL EQU 1 << GRASS_MEDAL_F
DEF FIGHTING_MEDAL EQU 1 << FIGHTING_MEDAL_F
DEF ROCK_MEDAL EQU 1 << ROCK_MEDAL_F
DEF PSYCHIC_MEDAL EQU 1 << PSYCHIC_MEDAL_F
DEF LIGHTNING_MEDAL EQU 1 << LIGHTNING_MEDAL_F
DEF WATER_MEDAL EQU 1 << WATER_MEDAL_F
DEF FIRE_MEDAL EQU 1 << FIRE_MEDAL_F
DEF SCIENCE_MEDAL EQU 1 << SCIENCE_MEDAL_F
DEF GRASS_MEDAL EQU 1 << GRASS_MEDAL_F
NUM_MEDALS EQU 8
DEF NUM_MEDALS EQU 8
; total number of packs that are obtained through the PC
NUM_PC_PACKS EQU 15
PACK_UNOPENED_F EQU 7
PACK_UNOPENED EQU 1 << PACK_UNOPENED_F
DEF NUM_PC_PACKS EQU 15
DEF PACK_UNOPENED_F EQU 7
DEF PACK_UNOPENED EQU 1 << PACK_UNOPENED_F

View File

@ -1,40 +1,40 @@
SGB_PACKET_SIZE EQU $10 ; bytes
DEF SGB_PACKET_SIZE EQU $10 ; bytes
PAL01 EQU $00 ; Set SGB Palette 0,1 Data
PAL23 EQU $01 ; Set SGB Palette 2,3 Data
PAL03 EQU $02 ; Set SGB Palette 0,3 Data
PAL12 EQU $03 ; Set SGB Palette 1,2 Data
ATTR_BLK EQU $04 ; "Block" Area Designation Mode
ATTR_LIN EQU $05 ; "Line" Area Designation Mode
ATTR_DIV EQU $06 ; "Divide" Area Designation Mode
ATTR_CHR EQU $07 ; "1CHR" Area Designation Mode
SOUND EQU $08 ; Sound On/Off
SOU_TRN EQU $09 ; Transfer Sound PRG/DATA
PAL_SET EQU $0a ; Set SGB Palette Indirect
PAL_TRN EQU $0b ; Set System Color Palette Data
ATRC_EN EQU $0c ; Enable/disable Attraction Mode
TEST_EN EQU $0d ; Speed Function
ICON_EN EQU $0e ; SGB Function
DATA_SND EQU $0f ; SUPER NES WRAM Transfer 1
DATA_TRN EQU $10 ; SUPER NES WRAM Transfer 2
MLT_REQ EQU $11 ; Controller 2 Request
JUMP EQU $12 ; Set SNES Program Counter
CHR_TRN EQU $13 ; Transfer Character Font Data
PCT_TRN EQU $14 ; Set Screen Data Color Data
ATTR_TRN EQU $15 ; Set Attribute from ATF
ATTR_SET EQU $16 ; Set Data to ATF
MASK_EN EQU $17 ; Game Boy Window Mask
OBJ_TRN EQU $18 ; Super NES OBJ Mode
DEF PAL01 EQU $00 ; Set SGB Palette 0,1 Data
DEF PAL23 EQU $01 ; Set SGB Palette 2,3 Data
DEF PAL03 EQU $02 ; Set SGB Palette 0,3 Data
DEF PAL12 EQU $03 ; Set SGB Palette 1,2 Data
DEF ATTR_BLK EQU $04 ; "Block" Area Designation Mode
DEF ATTR_LIN EQU $05 ; "Line" Area Designation Mode
DEF ATTR_DIV EQU $06 ; "Divide" Area Designation Mode
DEF ATTR_CHR EQU $07 ; "1CHR" Area Designation Mode
DEF SOUND EQU $08 ; Sound On/Off
DEF SOU_TRN EQU $09 ; Transfer Sound PRG/DATA
DEF PAL_SET EQU $0a ; Set SGB Palette Indirect
DEF PAL_TRN EQU $0b ; Set System Color Palette Data
DEF ATRC_EN EQU $0c ; Enable/disable Attraction Mode
DEF TEST_EN EQU $0d ; Speed Function
DEF ICON_EN EQU $0e ; SGB Function
DEF DATA_SND EQU $0f ; SUPER NES WRAM Transfer 1
DEF DATA_TRN EQU $10 ; SUPER NES WRAM Transfer 2
DEF MLT_REQ EQU $11 ; Controller 2 Request
DEF JUMP EQU $12 ; Set SNES Program Counter
DEF CHR_TRN EQU $13 ; Transfer Character Font Data
DEF PCT_TRN EQU $14 ; Set Screen Data Color Data
DEF ATTR_TRN EQU $15 ; Set Attribute from ATF
DEF ATTR_SET EQU $16 ; Set Data to ATF
DEF MASK_EN EQU $17 ; Game Boy Window Mask
DEF OBJ_TRN EQU $18 ; Super NES OBJ Mode
ATTR_BLK_CTRL_INSIDE EQU 1
ATTR_BLK_CTRL_LINE EQU 2
ATTR_BLK_CTRL_OUTSIDE EQU 4
DEF ATTR_BLK_CTRL_INSIDE EQU 1
DEF ATTR_BLK_CTRL_LINE EQU 2
DEF ATTR_BLK_CTRL_OUTSIDE EQU 4
MLT_REQ_1_PLAYER EQU 0
MLT_REQ_2_PLAYERS EQU 1
MLT_REQ_4_PLAYERS EQU 3
DEF MLT_REQ_1_PLAYER EQU 0
DEF MLT_REQ_2_PLAYERS EQU 1
DEF MLT_REQ_4_PLAYERS EQU 3
MASK_EN_CANCEL_MASK EQU 0
MASK_EN_FREEZE_SCREEN EQU 1
MASK_EN_BLANK_SCREEN_BLACK EQU 2
MASK_EN_BLANK_SCREEN_COLOR_0 EQU 3
DEF MASK_EN_CANCEL_MASK EQU 0
DEF MASK_EN_FREEZE_SCREEN EQU 1
DEF MASK_EN_BLANK_SCREEN_BLACK EQU 2
DEF MASK_EN_BLANK_SCREEN_COLOR_0 EQU 3

View File

@ -1,5 +1,5 @@
; wSpriteAnimBuffer
SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
DEF SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
; sprite_anim_struct constants
const_def
@ -11,15 +11,15 @@ SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
const SPRITE_ANIM_ID
const SPRITE_ANIM_BANK
const SPRITE_ANIM_POINTER
const_value = const_value+1 ; pointer
DEF const_value = const_value+1 ; pointer
const SPRITE_ANIM_FRAME_OFFSET_POINTER
const_value = const_value+1 ; pointer
DEF const_value = const_value+1 ; pointer
const SPRITE_ANIM_FRAME_BANK
const SPRITE_ANIM_FRAME_DATA_POINTER
const_value = const_value+1 ; pointer
DEF const_value = const_value+1 ; pointer
const SPRITE_ANIM_COUNTER
const SPRITE_ANIM_FLAGS
SPRITE_ANIM_LENGTH EQU const_value
DEF SPRITE_ANIM_LENGTH EQU const_value
; SPRITE_ANIM_FLAGS values
const_def
@ -32,7 +32,7 @@ SPRITE_ANIM_LENGTH EQU const_value
const SPRITE_ANIM_FLAG_6
const SPRITE_ANIM_FLAG_UNSKIPPABLE
SPRITE_FRAME_OFFSET_SIZE EQU 4
DEF SPRITE_FRAME_OFFSET_SIZE EQU 4
const_def
const SPRITE_OW_PLAYER ; $00

View File

@ -1,51 +1,51 @@
TX_END EQU $00 ; terminates the text
DEF TX_END EQU $00 ; terminates the text
; usage: TX_FULLWIDTH*, char1, TX_FULLWIDTH*, char2, ...
; source: gfx/fonts/full_width/1_kanji2.1bpp
TX_FULLWIDTH1 EQU $01
DEF TX_FULLWIDTH1 EQU $01
; source: gfx/fonts/full_width/2_kanji3.1bpp
TX_FULLWIDTH2 EQU $02
DEF TX_FULLWIDTH2 EQU $02
; source: gfx/fonts/full_width/3.1bpp (contains latin letters and symbols)
TX_FULLWIDTH3 EQU $03
DEF TX_FULLWIDTH3 EQU $03
; source: gfx/fonts/full_width/4.1bpp
TX_FULLWIDTH4 EQU $04
DEF TX_FULLWIDTH4 EQU $04
TX_CTRL_START EQU $05
DEF TX_CTRL_START EQU $05
; usage: TX_SYMBOL, char1, TX_SYMBOL, char2, ...
; source: gfx/fonts/symbols.2bpp
; note: precede each symbol with TX_SYMBOL only when it's going to be processed as text.
; if copying directly to VRAM, don't precede symbols with TX_SYMBOL as they are just tile numbers.
TX_SYMBOL EQU $05
DEF TX_SYMBOL EQU $05
; usage: TX_HALFWIDTH, char1, char2, ...
; source: gfx/fonts/half_width.1bpp
TX_HALFWIDTH EQU $06 ; sets wFontWidth to HALF_WIDTH
DEF TX_HALFWIDTH EQU $06 ; sets wFontWidth to HALF_WIDTH
; usage: <half width text>, TX_HALF2FULL, <full width text>
TX_HALF2FULL EQU $07 ; sets wFontWidth to FULL_WIDTH, and hJapaneseSyllabary to TX_KATAKANA
DEF TX_HALF2FULL EQU $07 ; sets wFontWidth to FULL_WIDTH, and hJapaneseSyllabary to TX_KATAKANA
TX_RAM1 EQU $09 ; prints the player's name or, in a duel, the turn duelist's name
TX_LINE EQU "\n" ; advances to a new line
TX_RAM2 EQU $0b ; prints text from wTxRam2 or wTxRam2_b
TX_RAM3 EQU $0c ; prints a number from wTxRam3 or wTxRam3_b
DEF TX_RAM1 EQU $09 ; prints the player's name or, in a duel, the turn duelist's name
DEF TX_LINE EQU "\n" ; advances to a new line
DEF TX_RAM2 EQU $0b ; prints text from wTxRam2 or wTxRam2_b
DEF TX_RAM3 EQU $0c ; prints a number from wTxRam3 or wTxRam3_b
; usage: TX_FULLWIDTH*, char1, char2, ...
; sources:
; gfx/fonts/full_width/0_1_hiragana.1bpp (characters below $60)
; gfx/fonts/full_width/0_2_digits_kanji1.1bpp (characters above or equal to $60)
TX_HIRAGANA EQU $0e ; sets hJapaneseSyllabary to TX_HIRAGANA
DEF TX_HIRAGANA EQU $0e ; sets hJapaneseSyllabary to TX_HIRAGANA
; sources:
; gfx/fonts/full_width/0_0_katakana.1bpp (characters below $60)
; gfx/fonts/full_width/0_2_digits_kanji1.1bpp (characters above or equal to $60)
TX_KATAKANA EQU $0f ; sets hJapaneseSyllabary to TX_KATAKANA
DEF TX_KATAKANA EQU $0f ; sets hJapaneseSyllabary to TX_KATAKANA
; db char1, char2, ... defaults to the value at hJapaneseSyllabary, unless
; wFontWidth was set to HALF_WIDTH by TX_HALFWIDTH (it is FULL_WIDTH by default).
; hJapaneseSyllabary is TX_KATAKANA by default.
TX_CTRL_END EQU $10
DEF TX_CTRL_END EQU $10
; wFontWidth constants
FULL_WIDTH EQU $0
HALF_WIDTH EQU $1 ; non-0
DEF FULL_WIDTH EQU $0
DEF HALF_WIDTH EQU $1 ; non-0

View File

@ -826,5 +826,5 @@ ChallengeMachine_OpponentDeckIDs:
db GRASS_AND_PSYCHIC_DECK_ID
db IMAKUNI_DECK_ID
CLUB_MASTERS_START EQU ChallengeMachine_OpponentDeckIDs.club_masters - ChallengeMachine_OpponentDeckIDs.club_members
GRAND_MASTERS_START EQU ChallengeMachine_OpponentDeckIDs.grand_masters - ChallengeMachine_OpponentDeckIDs.club_members
DEF CLUB_MASTERS_START EQU ChallengeMachine_OpponentDeckIDs.club_masters - ChallengeMachine_OpponentDeckIDs.club_members
DEF GRAND_MASTERS_START EQU ChallengeMachine_OpponentDeckIDs.grand_masters - ChallengeMachine_OpponentDeckIDs.club_members

View File

@ -60,7 +60,7 @@ ENDM
; the rst $38 handler is a single ret instruction
; probably used for testing purposes during development
debug_nop EQUS "rst $38"
DEF debug_nop EQUS "rst $38"
; Returns to the pointer in bc instead of where the stack was.
MACRO retbc

View File

@ -1,4 +1,4 @@
start_script EQUS "rst $20"
DEF start_script EQUS "rst $20"
MACRO run_command
db \1_index

View File

@ -1,8 +1,8 @@
text EQUS "db TX_HALFWIDTH, "
line EQUS "db TX_LINE, "
done EQUS "db TX_END"
DEF text EQUS "db TX_HALFWIDTH, "
DEF line EQUS "db TX_LINE, "
DEF done EQUS "db TX_END"
half2full EQUS "db TX_HALF2FULL"
DEF half2full EQUS "db TX_HALF2FULL"
MACRO katakana
db TX_KATAKANA

View File

@ -1,7 +1,7 @@
; poketcg requires rgbds 0.4.1 or newer.
MAJOR EQU 0
MINOR EQU 4
PATCH EQU 1
DEF MAJOR EQU 0
DEF MINOR EQU 4
DEF PATCH EQU 1
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
fail "poketcg requires rgbds {MAJOR}.{MINOR}.{PATCH} or newer."