summaryrefslogtreecommitdiff
path: root/src/constants
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-08-13 14:54:31 +0200
committerGitHub <noreply@github.com>2018-08-13 14:54:31 +0200
commitf5330d15daed2d77ff48360554a36162843fe199 (patch)
treef8142591ea01c720be6d6b979b2fadb84e3018f0 /src/constants
parent783f5fe610c69006742b4976ab4f183f39512d89 (diff)
parent3581a4baed71f596eedb9c234b910f1d6a7736be (diff)
Merge pull request #48 from xCrystal/master
More home and bank1 progress
Diffstat (limited to 'src/constants')
-rw-r--r--src/constants/card_constants.asm258
-rw-r--r--src/constants/card_data_constants.asm62
-rw-r--r--src/constants/charmaps.asm11
-rw-r--r--src/constants/deck_constants.asm7
-rw-r--r--src/constants/duel_constants.asm41
-rw-r--r--src/constants/gfx_constants.asm28
-rw-r--r--src/constants/hardware_constants.asm110
-rw-r--r--src/constants/misc_constants.asm35
-rw-r--r--src/constants/sgb_constants.asm2
-rw-r--r--src/constants/sprite_constants.asm22
-rw-r--r--src/constants/text_constants.asm2
11 files changed, 356 insertions, 222 deletions
diff --git a/src/constants/card_constants.asm b/src/constants/card_constants.asm
index 30560c2..df6da6b 100644
--- a/src/constants/card_constants.asm
+++ b/src/constants/card_constants.asm
@@ -8,12 +8,12 @@
const DOUBLE_COLORLESS_ENERGY ; $07
const BULBASAUR ; $08
const IVYSAUR ; $09
- const VENUSAUR1 ; $0A
- const VENUSAUR2 ; $0B
- const CATERPIE ; $0C
- const METAPOD ; $0D
- const BUTTERFREE ; $0E
- const WEEDLE ; $0F
+ const VENUSAUR1 ; $0a
+ const VENUSAUR2 ; $0b
+ const CATERPIE ; $0c
+ const METAPOD ; $0d
+ const BUTTERFREE ; $0e
+ const WEEDLE ; $0f
const KAKUNA ; $10
const BEEDRILL ; $11
const EKANS ; $12
@@ -24,12 +24,12 @@
const NIDORANM ; $17
const NIDORINO ; $18
const NIDOKING ; $19
- const ZUBAT ; $1A
- const GOLBAT ; $1B
- const ODDISH ; $1C
- const GLOOM ; $1D
- const VILEPLUME ; $1E
- const PARAS ; $1F
+ const ZUBAT ; $1a
+ const GOLBAT ; $1b
+ const ODDISH ; $1c
+ const GLOOM ; $1d
+ const VILEPLUME ; $1e
+ const PARAS ; $1f
const PARASECT ; $20
const VENONAT ; $21
const VENOMOTH ; $22
@@ -40,12 +40,12 @@
const MUK ; $27
const EXEGGCUTE ; $28
const EXEGGUTOR ; $29
- const KOFFING ; $2A
- const WEEZING ; $2B
- const TANGELA1 ; $2C
- const TANGELA2 ; $2D
- const SCYTHER ; $2E
- const PINSIR ; $2F
+ const KOFFING ; $2a
+ const WEEZING ; $2b
+ const TANGELA1 ; $2c
+ const TANGELA2 ; $2d
+ const SCYTHER ; $2e
+ const PINSIR ; $2f
const CHARMANDER ; $30
const CHARMELEON ; $31
const CHARIZARD ; $32
@@ -56,12 +56,12 @@
const ARCANINE1 ; $37
const ARCANINE2 ; $38
const PONYTA ; $39
- const RAPIDASH ; $3A
- const MAGMAR1 ; $3B
- const MAGMAR2 ; $3C
- const FLAREON1 ; $3D
- const FLAREON2 ; $3E
- const MOLTRES1 ; $3F
+ const RAPIDASH ; $3a
+ const MAGMAR1 ; $3b
+ const MAGMAR2 ; $3c
+ const FLAREON1 ; $3d
+ const FLAREON2 ; $3e
+ const MOLTRES1 ; $3f
const MOLTRES2 ; $40
const SQUIRTLE ; $41
const WARTORTLE ; $42
@@ -72,12 +72,12 @@
const POLIWHIRL ; $47
const POLIWRATH ; $48
const TENTACOOL ; $49
- const TENTACRUEL ; $4A
- const SEEL ; $4B
- const DEWGONG ; $4C
- const SHELLDER ; $4D
- const CLOYSTER ; $4E
- const KRABBY ; $4F
+ const TENTACRUEL ; $4a
+ const SEEL ; $4b
+ const DEWGONG ; $4c
+ const SHELLDER ; $4d
+ const CLOYSTER ; $4e
+ const KRABBY ; $4f
const KINGLER ; $50
const HORSEA ; $51
const SEADRA ; $52
@@ -88,12 +88,12 @@
const MAGIKARP ; $57
const GYARADOS ; $58
const LAPRAS ; $59
- const VAPOREON1 ; $5A
- const VAPOREON2 ; $5B
- const OMANYTE ; $5C
- const OMASTAR ; $5D
- const ARTICUNO1 ; $5E
- const ARTICUNO2 ; $5F
+ const VAPOREON1 ; $5a
+ const VAPOREON2 ; $5b
+ const OMANYTE ; $5c
+ const OMASTAR ; $5d
+ const ARTICUNO1 ; $5e
+ const ARTICUNO2 ; $5f
const PIKACHU1 ; $60
const PIKACHU2 ; $61
const PIKACHU3 ; $62
@@ -104,12 +104,12 @@
const RAICHU1 ; $67
const RAICHU2 ; $68
const MAGNEMITE1 ; $69
- const MAGNEMITE2 ; $6A
- const MAGNETON1 ; $6B
- const MAGNETON2 ; $6C
- const VOLTORB ; $6D
- const ELECTRODE1 ; $6E
- const ELECTRODE2 ; $6F
+ const MAGNEMITE2 ; $6a
+ const MAGNETON1 ; $6b
+ const MAGNETON2 ; $6c
+ const VOLTORB ; $6d
+ const ELECTRODE1 ; $6e
+ const ELECTRODE2 ; $6f
const ELECTABUZZ1 ; $70
const ELECTABUZZ2 ; $71
const JOLTEON1 ; $72
@@ -120,12 +120,12 @@
const SANDSHREW ; $77
const SANDSLASH ; $78
const DIGLETT ; $79
- const DUGTRIO ; $7A
- const MANKEY ; $7B
- const PRIMEAPE ; $7C
- const MACHOP ; $7D
- const MACHOKE ; $7E
- const MACHAMP ; $7F
+ const DUGTRIO ; $7a
+ const MANKEY ; $7b
+ const PRIMEAPE ; $7c
+ const MACHOP ; $7d
+ const MACHOKE ; $7e
+ const MACHAMP ; $7f
const GEODUDE ; $80
const GRAVELER ; $81
const GOLEM ; $82
@@ -136,12 +136,12 @@
const HITMONLEE ; $87
const HITMONCHAN ; $88
const RHYHORN ; $89
- const RHYDON ; $8A
- const KABUTO ; $8B
- const KABUTOPS ; $8C
- const AERODACTYL ; $8D
- const ABRA ; $8E
- const KADABRA ; $8F
+ const RHYDON ; $8a
+ const KABUTO ; $8b
+ const KABUTOPS ; $8c
+ const AERODACTYL ; $8d
+ const ABRA ; $8e
+ const KADABRA ; $8f
const ALAKAZAM ; $90
const SLOWPOKE1 ; $91
const SLOWPOKE2 ; $92
@@ -152,79 +152,79 @@
const HAUNTER2 ; $97
const GENGAR ; $98
const DROWZEE ; $99
- const HYPNO ; $9A
- const MR_MIME ; $9B
- const JYNX ; $9C
- const MEWTWO1 ; $9D
- const MEWTWO2 ; $9E
- const MEWTWO3 ; $9F
- const MEW1 ; $A0
- const MEW2 ; $A1
- const MEW3 ; $A2
- const PIDGEY ; $A3
- const PIDGEOTTO ; $A4
- const PIDGEOT1 ; $A5
- const PIDGEOT2 ; $A6
- const RATTATA ; $A7
- const RATICATE ; $A8
- const SPEAROW ; $A9
- const FEAROW ; $AA
- const CLEFAIRY ; $AB
- const CLEFABLE ; $AC
- const JIGGLYPUFF1 ; $AD
- const JIGGLYPUFF2 ; $AE
- const JIGGLYPUFF3 ; $AF
- const WIGGLYTUFF ; $B0
- const MEOWTH1 ; $B1
- const MEOWTH2 ; $B2
- const PERSIAN ; $B3
- const FARFETCHD ; $B4
- const DODUO ; $B5
- const DODRIO ; $B6
- const LICKITUNG ; $B7
- const CHANSEY ; $B8
- const KANGASKHAN ; $B9
- const TAUROS ; $BA
- const DITTO ; $BB
- const EEVEE ; $BC
- const PORYGON ; $BD
- const SNORLAX ; $BE
- const DRATINI ; $BF
- const DRAGONAIR ; $C0
- const DRAGONITE1 ; $C1
- const DRAGONITE2 ; $C2
- const PROFESSOR_OAK ; $C3
- const IMPOSTER_PROFESSOR_OAK ; $C4
- const BILL ; $C5
- const MR_FUJI ; $C6
- const LASS ; $C7
- const IMAKUNI_CARD ; $C8
- const POKEMON_TRADER ; $C9
- const POKEMON_BREEDER ; $CA
- const CLEFAIRY_DOLL ; $CB
- const MYSTERIOUS_FOSSIL ; $CC
- const ENERGY_RETRIEVAL ; $CD
- const SUPER_ENERGY_RETRIEVAL ; $CE
- const ENERGY_SEARCH ; $CF
- const ENERGY_REMOVAL ; $D0
- const SUPER_ENERGY_REMOVAL ; $D1
- const SWITCH ; $D2
- const POKEMON_CENTER ; $D3
- const POKE_BALL ; $D4
- const SCOOP_UP ; $D5
- const COMPUTER_SEARCH ; $D6
- const POKEDEX ; $D7
- const PLUSPOWER ; $D8
- const DEFENDER ; $D9
- const ITEM_FINDER ; $DA
- const GUST_OF_WIND ; $DB
- const DEVOLUTION_SPRAY ; $DC
- const POTION ; $DD
- const SUPER_POTION ; $DE
- const FULL_HEAL ; $DF
- const REVIVE ; $E0
- const MAINTENANCE ; $E1
- const POKEMON_FLUTE ; $E2
- const GAMBLER ; $E3
- const RECYCLE ; $E4
+ const HYPNO ; $9a
+ const MR_MIME ; $9b
+ const JYNX ; $9c
+ const MEWTWO1 ; $9d
+ const MEWTWO2 ; $9e
+ const MEWTWO3 ; $9f
+ const MEW1 ; $a0
+ const MEW2 ; $a1
+ const MEW3 ; $a2
+ const PIDGEY ; $a3
+ const PIDGEOTTO ; $a4
+ const PIDGEOT1 ; $a5
+ const PIDGEOT2 ; $a6
+ const RATTATA ; $a7
+ const RATICATE ; $a8
+ const SPEAROW ; $a9
+ const FEAROW ; $aa
+ const CLEFAIRY ; $ab
+ const CLEFABLE ; $ac
+ const JIGGLYPUFF1 ; $ad
+ const JIGGLYPUFF2 ; $ae
+ const JIGGLYPUFF3 ; $af
+ const WIGGLYTUFF ; $b0
+ const MEOWTH1 ; $b1
+ const MEOWTH2 ; $b2
+ const PERSIAN ; $b3
+ const FARFETCHD ; $b4
+ const DODUO ; $b5
+ const DODRIO ; $b6
+ const LICKITUNG ; $b7
+ const CHANSEY ; $b8
+ const KANGASKHAN ; $b9
+ const TAUROS ; $ba
+ const DITTO ; $bb
+ const EEVEE ; $bc
+ const PORYGON ; $bd
+ const SNORLAX ; $be
+ const DRATINI ; $bf
+ const DRAGONAIR ; $c0
+ const DRAGONITE1 ; $c1
+ const DRAGONITE2 ; $c2
+ const PROFESSOR_OAK ; $c3
+ const IMPOSTER_PROFESSOR_OAK ; $c4
+ const BILL ; $c5
+ const MR_FUJI ; $c6
+ const LASS ; $c7
+ const IMAKUNI_CARD ; $c8
+ const POKEMON_TRADER ; $c9
+ const POKEMON_BREEDER ; $ca
+ const CLEFAIRY_DOLL ; $cb
+ const MYSTERIOUS_FOSSIL ; $cc
+ const ENERGY_RETRIEVAL ; $cd
+ const SUPER_ENERGY_RETRIEVAL ; $ce
+ const ENERGY_SEARCH ; $cf
+ const ENERGY_REMOVAL ; $d0
+ const SUPER_ENERGY_REMOVAL ; $d1
+ const SWITCH ; $d2
+ const POKEMON_CENTER ; $d3
+ const POKE_BALL ; $d4
+ const SCOOP_UP ; $d5
+ const COMPUTER_SEARCH ; $d6
+ const POKEDEX ; $d7
+ const PLUSPOWER ; $d8
+ const DEFENDER ; $d9
+ const ITEM_FINDER ; $da
+ const GUST_OF_WIND ; $db
+ const DEVOLUTION_SPRAY ; $dc
+ const POTION ; $dd
+ const SUPER_POTION ; $de
+ const FULL_HEAL ; $df
+ const REVIVE ; $e0
+ const MAINTENANCE ; $e1
+ const POKEMON_FLUTE ; $e2
+ const GAMBLER ; $e3
+ const RECYCLE ; $e4
NUM_CARDS EQU const_value + -1
diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm
index c110a69..4840171 100644
--- a/src/constants/card_data_constants.asm
+++ b/src/constants/card_data_constants.asm
@@ -32,7 +32,7 @@ ENERGY_CARD_DATA_LENGTH EQU $0e
; TYPE_PKMN card only
CARD_DATA_MOVE1 EQU $0c
-CARD_DATA_MOVE1_ENERGY EQU $0c
+CARD_DATA_MOVE1_ENERGY_COST EQU $0c
CARD_DATA_MOVE1_NAME EQU $10
CARD_DATA_MOVE1_DESCRIPTION EQU $12
CARD_DATA_MOVE1_DAMAGE EQU $16
@@ -46,7 +46,7 @@ CARD_DATA_MOVE1_ANIMATION EQU $1e
; TYPE_PKMN card only
CARD_DATA_MOVE2 EQU $1f
-CARD_DATA_MOVE2_ENERGY EQU $1f
+CARD_DATA_MOVE2_ENERGY_COST EQU $1f
CARD_DATA_MOVE2_NAME EQU $23
CARD_DATA_MOVE2_DESCRIPTION EQU $25
CARD_DATA_MOVE2_DAMAGE EQU $29
@@ -75,15 +75,15 @@ PKMN_CARD_DATA_LENGTH EQU $41
; generic type (color) constants
const_def
- const FIRE ; $0
- const GRASS ; $1
- const LIGHTNING ; $2
- const WATER ; $3
- const FIGHTING ; $4
- const PSYCHIC ; $5
+ const FIRE ; $00
+ const GRASS ; $01
+ const LIGHTNING ; $02
+ const WATER ; $03
+ const FIGHTING ; $04
+ const PSYCHIC ; $05
NUM_COLORED_TYPES EQU const_value
- const COLORLESS ; $6
- const UNUSED_TYPE ; $7
+ const COLORLESS ; $06
+ const UNUSED_TYPE ; $07
NUM_TYPES EQU const_value
; CARD_DATA_TYPE constants
@@ -120,12 +120,12 @@ STAR EQU $2
PROMOSTAR EQU $ff
; CARD_DATA_SET constants (set 1)
-COLOSSEUM EQU $00
-EVOLUTION EQU $10
-MYSTERY EQU $20
-LABORATORY EQU $30
-PROMOTIONAL EQU $40
-ENERGY EQU $50
+COLOSSEUM EQU $0 << 4
+EVOLUTION EQU $1 << 4
+MYSTERY EQU $2 << 4
+LABORATORY EQU $3 << 4
+PROMOTIONAL EQU $4 << 4
+ENERGY EQU $5 << 4
; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
@@ -134,9 +134,9 @@ GB EQU $7
PRO EQU $8
; CARD_DATA_STAGE constants
-BASIC EQU $0
-STAGE1 EQU $1
-STAGE2 EQU $2
+BASIC EQU $00
+STAGE1 EQU $01
+STAGE2 EQU $02
; CARD_DATA_WEAKNESS and CARD_DATA_RESISTANCE constants
WR_FIRE EQU $80
@@ -147,13 +147,13 @@ WR_FIGHTING EQU $08
WR_PSYCHIC EQU $04
; CARD_DATA_MOVE*_CATEGORY constants
-DAMAGE_NORMAL EQU $0
-DAMAGE_PLUS EQU $1
-DAMAGE_MINUS EQU $2
-DAMAGE_X EQU $3
-POKEMON_POWER EQU $4
-RESIDUAL_F EQU 7
-RESIDUAL EQU 1 << RESIDUAL_F
+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
; CARD_DATA_MOVE*_FLAG1 constants
INFLICT_POISON EQU %00000001
@@ -196,6 +196,16 @@ CARDPAGE_ENERGY EQU $09
CARDPAGE_TRAINER_1 EQU $0d
CARDPAGE_TRAINER_2 EQU $0e
+; wMovePageNumber constants
+MOVEPAGE_MOVE1_1 EQU $00
+MOVEPAGE_MOVE1_2 EQU $01
+MOVEPAGE_MOVE2_1 EQU $02
+MOVEPAGE_MOVE2_2 EQU $03
+
+; wCardPageType constants
+CARDPAGETYPE_NOT_PLAY_AREA EQU $00
+CARDPAGETYPE_PLAY_AREA EQU $01
+
; card type header constants ($10-tile headers in DuelCardHeaderGraphics)
HEADER_TRAINER EQU $00
HEADER_ENERGY EQU $01
diff --git a/src/constants/charmaps.asm b/src/constants/charmaps.asm
index 5bd21be..baa3f46 100644
--- a/src/constants/charmaps.asm
+++ b/src/constants/charmaps.asm
@@ -9,6 +9,10 @@
charmap "♀", "%"
charmap "”", "\""
+fwcharmap: MACRO
+ charmap STRCAT("FW\1_", \2), \3
+ENDM
+
; TX_FULLWIDTH3
fwcharmap 3, "A", $30
fwcharmap 3, "B", $31
@@ -310,6 +314,11 @@
FW_SPACE EQU $70
+txsymbol: MACRO
+ const SYM_\1
+ charmap "\1>", const_value + -1
+ENDM
+
; TX_SYMBOL
; TODO: If user-defined functions ever become a thing a symbol(*) syntax
; would probably be preferred over SYM_*
@@ -329,7 +338,7 @@ FW_SPACE EQU $70
txsymbol PARALYZED ; $0b
txsymbol CURSOR_U ; $0c
txsymbol POKEMON ; $0d
- txsymbol UNKNOWN_0E ; $0e
+ txsymbol MOVE_DESCR ; $0e
txsymbol CURSOR_R ; $0f
txsymbol HP ; $10
txsymbol Lv ; $11
diff --git a/src/constants/deck_constants.asm b/src/constants/deck_constants.asm
index 6b16d63..4105242 100644
--- a/src/constants/deck_constants.asm
+++ b/src/constants/deck_constants.asm
@@ -1,3 +1,10 @@
+deck_const: MACRO
+if const_value >= 2
+\1_ID EQU const_value + -2
+endc
+ const \1
+ENDM
+
; Both *_DECK and *_DECK_ID constants are defined here.
; *_DECK constants are to be used with LoadDeck and related routines.
; *_DECK_ID constants are specific to be loaded into wOpponentDeckID.
diff --git a/src/constants/duel_constants.asm b/src/constants/duel_constants.asm
index eaa9a65..ee6b940 100644
--- a/src/constants/duel_constants.asm
+++ b/src/constants/duel_constants.asm
@@ -21,18 +21,9 @@ TURN_PLAYER_TIED EQU $3
DUEL_WIN EQU $0
DUEL_LOSS EQU $1
-; Box message id's
- const_def
- const BOXMSG_PLAYERS_TURN
- const BOXMSG_OPPONENTS_TURN
- const BOXMSG_BETWEEN_TURNS
- const BOXMSG_DECISION
- const BOXMSG_BENCH_POKEMON
- const BOXMSG_ARENA_POKEMON
- const BOXMSG_COIN_TOSS
-
; 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
@@ -81,6 +72,8 @@ DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA EQUS "LOW(wPlayerNumberOfPokemonInPlayA
DUELVARS_ARENA_CARD_STATUS EQUS "LOW(wPlayerArenaCardStatus)" ; f0
DUELVARS_DUELIST_TYPE EQUS "LOW(wPlayerDuelistType)" ; f1
DUELVARS_ARENA_CARD_DISABLED_MOVE_INDEX EQUS "LOW(wPlayerArenaCardDisabledMoveIndex)" ; f2
+DUELVARS_ARENA_CARD_LAST_TURN_DAMAGE EQUS "LOW(wPlayerArenaCardLastTurnDamage)" ; f3
+DUELVARS_ARENA_CARD_LAST_TURN_STATUS EQUS "LOW(wPlayerArenaCardLastTurnStatus)" ; f5
; card location constants (DUELVARS_CARD_LOCATIONS)
CARD_LOCATION_DECK EQU $00
@@ -123,8 +116,11 @@ POISONED EQU $80
DOUBLE_POISONED EQU $c0
CNF_SLP_PRZ EQU $0f ; confused, asleep or paralyzed
+PSN_DBLPSN EQU $f0 ; poisoned or double poisoned
; 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
@@ -139,6 +135,7 @@ SUBSTATUS1_NO_DAMAGE_17 EQU $17
SUBSTATUS1_NEXT_TURN_DOUBLE_DAMAGE EQU $19
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
@@ -167,3 +164,27 @@ NO_DAMAGE_OR_EFFECT_NSHIELD EQU $05
; wDamageEffectiveness constants
WEAKNESS EQU 1
RESISTANCE EQU 2
+
+; Box message id's
+ const_def
+ const BOXMSG_PLAYERS_TURN
+ const BOXMSG_OPPONENTS_TURN
+ const BOXMSG_BETWEEN_TURNS
+ const BOXMSG_DECISION
+ const BOXMSG_BENCH_POKEMON
+ const BOXMSG_ARENA_POKEMON
+ const BOXMSG_COIN_TOSS
+
+; wDuelDisplayedScreen constants
+DUEL_MAIN_SCENE EQU $01
+PLAY_AREA_CARD_LIST EQU $02
+COIN_TOSS EQU $06
+DRAW_CARDS EQU $07
+LARGE_CARD_PICTURE EQU $08
+SHUFFLE_DECK EQU $09
+CHECK_PLAY_AREA EQU $0a
+
+; wCardListItemSelectionMenuType constants
+;NONE EQU $00
+PLAY_CHECK EQU $01
+SELECT_CHECK EQU $02
diff --git a/src/constants/gfx_constants.asm b/src/constants/gfx_constants.asm
index 4ab84d2..61f49b8 100644
--- a/src/constants/gfx_constants.asm
+++ b/src/constants/gfx_constants.asm
@@ -16,31 +16,3 @@ tiles EQUS "* TILE_SIZE"
TILE_SIZE_1BPP EQU 8 ; bytes
tiles_1bpp EQUS "* TILE_SIZE_1BPP"
-
-; wFlushPaletteFlags constants
-FLUSH_ONE EQU %10000000
-FLUSH_ALL EQU %11000000
-FLUSH_ALL_F EQU 6
-
-; wSpriteAnimBuffer
-SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
-
-; sprite_anim_struct constants
- const_def
- const SPRITE_ANIM_FIELD_00
- const SPRITE_ANIM_FIELD_01
- const SPRITE_ANIM_COORD_X
- const SPRITE_ANIM_COORD_Y
- const SPRITE_ANIM_TILE_ID
- const SPRITE_ANIM_FIELD_05
- const SPRITE_ANIM_FIELD_06
- const SPRITE_ANIM_FIELD_07
- const SPRITE_ANIM_FIELD_08
- const SPRITE_ANIM_FIELD_09
- const SPRITE_ANIM_FIELD_0A
- const SPRITE_ANIM_FIELD_0B
- const SPRITE_ANIM_FIELD_0C
- const SPRITE_ANIM_FIELD_0D
- const SPRITE_ANIM_MOVEMENT_COUNTER
- const SPRITE_ANIM_FIELD_0F
-SPRITE_ANIM_LENGTH EQU const_value
diff --git a/src/constants/hardware_constants.asm b/src/constants/hardware_constants.asm
index fe2731f..3b36a9d 100644
--- a/src/constants/hardware_constants.asm
+++ b/src/constants/hardware_constants.asm
@@ -1,4 +1,4 @@
-; From http://bgb.bircd.org/pandocs.htm
+; From http://bgb.bircd.org/pandocs.htm and https://github.com/tobiasvl/hardware.inc
GBC EQU $11
@@ -24,11 +24,11 @@ RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
; Bit 7 Day Counter Carry Bit (1=Counter Overflow)
; interrupt flags
-VBLANK EQU 0
-LCD_STAT EQU 1
-TIMER EQU 2
-SERIAL EQU 3
-JOYPAD EQU 4
+INT_VBLANK EQU 0
+INT_LCD_STAT EQU 1
+INT_TIMER EQU 2
+INT_SERIAL EQU 3
+INT_JOYPAD EQU 4
; OAM attribute flags
OAM_PALETTE EQU %111
@@ -40,74 +40,154 @@ 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
+
rSB EQU $ff01 ; Serial transfer data (R/W)
rSC EQU $ff02 ; Serial Transfer Control (R/W)
-SC_ON EQU 7
-SC_CGB EQU 1
-SC_CLOCK EQU 0
+SC_START EQU $80
+SC_INTERNAL EQU $01
+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_ON EQU 2
-TAC_4096_HZ EQU 0
-TAC_262144_HZ EQU 1
-TAC_65536_HZ EQU 2
-TAC_16384_HZ EQU 3
+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
+
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)
+
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)
+
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)
+
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; Inital (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
+
rLCDC EQU $ff40 ; LCD Control (R/W)
-LCDC_ON EQU 7
+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
+
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
+
rSCY EQU $ff42 ; Scroll Y (R/W)
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)
+
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
+
rWY EQU $ff4a ; Window Y Position (R/W)
rWX EQU $ff4b ; Window X Position minus 7 (R/W)
+
rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
+
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
+
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
+
rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
+
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)
+
rIE EQU $ffff ; Interrupt Enable (R/W)
diff --git a/src/constants/misc_constants.asm b/src/constants/misc_constants.asm
index a6511df..b31631a 100644
--- a/src/constants/misc_constants.asm
+++ b/src/constants/misc_constants.asm
@@ -1,17 +1,12 @@
-; console types (wConsole)
-CONSOLE_DMG EQU $00
-CONSOLE_SGB EQU $01
-CONSOLE_CGB EQU $02
-
; 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
+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
A_BUTTON EQU 1 << A_BUTTON_F ; $01
B_BUTTON EQU 1 << B_BUTTON_F ; $02
@@ -25,6 +20,20 @@ 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
+; console types (wConsole)
+CONSOLE_DMG EQU $00
+CONSOLE_SGB EQU $01
+CONSOLE_CGB EQU $02
+
+; wReentrancyFlag bits
+IN_VBLANK EQU 0
+IN_TIMER EQU 1
+
+; wFlushPaletteFlags constants
+FLUSH_ONE_PAL EQU %10000000
+FLUSH_ALL_PALS EQU %11000000
+FLUSH_ALL_PALS_F EQU 6
+
; Game event constants (wGameEvent)
const_def
const GAME_EVENT_OVERWORLD ; $0
diff --git a/src/constants/sgb_constants.asm b/src/constants/sgb_constants.asm
index 6ba250e..a6a58af 100644
--- a/src/constants/sgb_constants.asm
+++ b/src/constants/sgb_constants.asm
@@ -1,3 +1,5 @@
+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
diff --git a/src/constants/sprite_constants.asm b/src/constants/sprite_constants.asm
new file mode 100644
index 0000000..dc051d9
--- /dev/null
+++ b/src/constants/sprite_constants.asm
@@ -0,0 +1,22 @@
+; wSpriteAnimBuffer
+SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
+
+; sprite_anim_struct constants
+ const_def
+ const SPRITE_ANIM_FIELD_00
+ const SPRITE_ANIM_FIELD_01
+ const SPRITE_ANIM_COORD_X
+ const SPRITE_ANIM_COORD_Y
+ const SPRITE_ANIM_TILE_ID
+ const SPRITE_ANIM_FIELD_05
+ const SPRITE_ANIM_FIELD_06
+ const SPRITE_ANIM_FIELD_07
+ const SPRITE_ANIM_FIELD_08
+ const SPRITE_ANIM_FIELD_09
+ const SPRITE_ANIM_FIELD_0A
+ const SPRITE_ANIM_FIELD_0B
+ const SPRITE_ANIM_FIELD_0C
+ const SPRITE_ANIM_FIELD_0D
+ const SPRITE_ANIM_MOVEMENT_COUNTER
+ const SPRITE_ANIM_FIELD_0F
+SPRITE_ANIM_LENGTH EQU const_value
diff --git a/src/constants/text_constants.asm b/src/constants/text_constants.asm
index 3a50b59..97c8313 100644
--- a/src/constants/text_constants.asm
+++ b/src/constants/text_constants.asm
@@ -14,6 +14,8 @@ 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
; usage: TX_HALFWIDTH, char1, char2, ...