summaryrefslogtreecommitdiff
path: root/src/constants
diff options
context:
space:
mode:
authorDaniel Harding <33dannye@gmail.com>2018-03-15 22:59:31 -0500
committerGitHub <noreply@github.com>2018-03-15 22:59:31 -0500
commitd5e21ce300222d80c3e4c35ada6451a67817a9ea (patch)
treecf4f10d597cf4e29764177b20d41bef590ef81ca /src/constants
parent96b32412d82bdee2756b1a300b05d2647da9ad1f (diff)
parent9b94866531970895c0f059ba123273e3959196b8 (diff)
Merge pull request #37 from xCrystal/master
Bank 1 duel engine disassembly ; general labeling and documentation ; more text symbols ; split duel graphics
Diffstat (limited to 'src/constants')
-rw-r--r--src/constants/card_data_constants.asm17
-rw-r--r--src/constants/duel_constants.asm108
-rw-r--r--src/constants/gfx_constants.asm4
-rw-r--r--src/constants/hardware_constants.asm1
-rw-r--r--src/constants/text_constants.asm62
5 files changed, 135 insertions, 57 deletions
diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm
index 6b6d299..e857aa6 100644
--- a/src/constants/card_data_constants.asm
+++ b/src/constants/card_data_constants.asm
@@ -96,6 +96,7 @@ TYPE_PKMN_PSYCHIC EQU PSYCHIC
TYPE_PKMN_COLORLESS EQU COLORLESS
TYPE_PKMN_UNUSED EQU UNUSED_TYPE
const_def TYPE_PKMN_UNUSED + 1 - TYPE_PKMN_FIRE
+TYPE_ENERGY EQU const_value
const TYPE_ENERGY_FIRE ; $08
const TYPE_ENERGY_GRASS ; $09
const TYPE_ENERGY_LIGHTNING ; $0a
@@ -183,3 +184,19 @@ FLAG_3_BIT_1 EQU %00000010
; special CARD_DATA_RETREAT_COST values
UNABLE_RETREAT EQU $64
+
+; wCardPageNumber constants
+CARDPAGE_POKEMON_OVERVIEW EQU $01
+CARDPAGE_POKEMON_MOVE1_1 EQU $02
+CARDPAGE_POKEMON_MOVE1_2 EQU $03
+CARDPAGE_POKEMON_MOVE2_1 EQU $04
+CARDPAGE_POKEMON_MOVE2_2 EQU $05
+CARDPAGE_POKEMON_DESCRIPTION EQU $06
+CARDPAGE_ENERGY EQU $09
+CARDPAGE_TRAINER_1 EQU $0d
+CARDPAGE_TRAINER_2 EQU $0e
+
+; card type header constants ($10-tile headers in DuelCardHeaderGraphics)
+HEADER_TRAINER EQU $00
+HEADER_ENERGY EQU $01
+HEADER_POKEMON EQU $02
diff --git a/src/constants/duel_constants.asm b/src/constants/duel_constants.asm
index d033722..eaa9a65 100644
--- a/src/constants/duel_constants.asm
+++ b/src/constants/duel_constants.asm
@@ -1,14 +1,25 @@
MAX_BENCH_POKEMON EQU 5
MAX_PLAY_AREA_POKEMON EQU 6 ; arena + bench
+MAX_HP EQU 120
+HP_BAR_LENGTH EQU MAX_HP / 10
; hWhoseTurn constants
PLAYER_TURN EQUS "HIGH(wPlayerDuelVariables)"
OPPONENT_TURN EQUS "HIGH(wOpponentDuelVariables)"
+; wDuelType constants
+DUELTYPE_LINK EQU $1
+DUELTYPE_PRACTICE EQU $80
+; for normal duels (vs AI), wDuelType is $80 + [wOpponentDeckID]
+
; wDuelFinished constants
-DUEL_WON EQU $1
-DUEL_LOST EQU $2
-DUEL_DRAW EQU $3
+TURN_PLAYER_WON EQU $1
+TURN_PLAYER_LOST EQU $2
+TURN_PLAYER_TIED EQU $3
+
+; wDuelResult constants
+DUEL_WIN EQU $0
+DUEL_LOSS EQU $1
; Box message id's
const_def
@@ -21,42 +32,55 @@ DUEL_DRAW EQU $3
const BOXMSG_COIN_TOSS
; wPlayerDuelVariables or wOpponentDuelVariables constants
-DUELVARS_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00
-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_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_TYPE EQUS "LOW(wPlayerBench1CardChangedType)" ; d5
-DUELVARS_BENCH2_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench2CardChangedType)" ; d6
-DUELVARS_BENCH3_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench3CardChangedType)" ; d7
-DUELVARS_BENCH4_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench4CardChangedType)" ; d8
-DUELVARS_BENCH5_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench5CardChangedType)" ; d9
-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 EQUS "LOW(wPlayerNumberOfPokemonInPlay)" ; ef
-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_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00
+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_C2 EQU $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_TYPE EQUS "LOW(wPlayerBench1CardChangedType)" ; d5
+DUELVARS_BENCH2_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench2CardChangedType)" ; d6
+DUELVARS_BENCH3_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench3CardChangedType)" ; d7
+DUELVARS_BENCH4_CARD_CHANGED_TYPE EQUS "LOW(wPlayerBench4CardChangedType)" ; d8
+DUELVARS_BENCH5_CARD_CHANGED_TYPE 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_MOVE_INDEX EQUS "LOW(wPlayerArenaCardDisabledMoveIndex)" ; f2
; card location constants (DUELVARS_CARD_LOCATIONS)
CARD_LOCATION_DECK EQU $00
@@ -87,7 +111,7 @@ 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
+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
@@ -129,6 +153,10 @@ SUBSTATUS2_GROWL EQU $12
SUBSTATUS3_THIS_TURN_DOUBLE_DAMAGE EQU 0
SUBSTATUS3_HEADACHE EQU 1
+; DUELVARS_ARENA_CARD_FLAGS_C2 constants
+CAN_EVOLVE_THIS_TURN_F EQU 7
+CAN_EVOLVE_THIS_TURN EQU 1 << CAN_EVOLVE_THIS_TURN_F
+
; wNoDamageOrEffect constants
NO_DAMAGE_OR_EFFECT_AGILITY EQU $01
NO_DAMAGE_OR_EFFECT_BARRIER EQU $02
diff --git a/src/constants/gfx_constants.asm b/src/constants/gfx_constants.asm
index 2f5ca4a..f5915d3 100644
--- a/src/constants/gfx_constants.asm
+++ b/src/constants/gfx_constants.asm
@@ -8,9 +8,11 @@ BG_MAP_HEIGHT EQU 32 ; tiles
; cgb palette size
CGB_PAL_SIZE EQU 8 ; bytes
+palettes EQUS "* CGB_PAL_SIZE"
; tile size
TILE_SIZE EQU 16 ; bytes
+tiles EQUS "* TILE_SIZE"
; wFlushPaletteFlags constants
FLUSH_ONE EQU %10000000
@@ -38,4 +40,4 @@ SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
const SPRITE_ANIM_FIELD_0D
const SPRITE_ANIM_MOVEMENT_COUNTER
const SPRITE_ANIM_FIELD_0F
-SPRITE_ANIM_LENGTH EQU const_value \ No newline at end of file
+SPRITE_ANIM_LENGTH EQU const_value
diff --git a/src/constants/hardware_constants.asm b/src/constants/hardware_constants.asm
index 0471e74..098b569 100644
--- a/src/constants/hardware_constants.asm
+++ b/src/constants/hardware_constants.asm
@@ -113,4 +113,3 @@ 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/text_constants.asm b/src/constants/text_constants.asm
index 062f5e4..3c93cdf 100644
--- a/src/constants/text_constants.asm
+++ b/src/constants/text_constants.asm
@@ -1,20 +1,52 @@
-TX_START EQU $06
-TX_LINE EQU "\n"
-TX_END EQU $00
-
-TX_RAM1 EQU $09
-TX_RAM2 EQU $0B
-TX_RAM3 EQU $0C
+TX_END EQU $00
+TX_SYMBOL EQU $05
+TX_START EQU $06
+TX_RAM1 EQU $09
+TX_LINE EQU "\n" ; $0a
+TX_RAM2 EQU $0B
+TX_RAM3 EQU $0C
text EQUS "db TX_START, "
line EQUS "db TX_LINE, "
done EQUS "db TX_END"
-TX_FIRE EQUS "$05, $01"
-TX_GRASS EQUS "$05, $02"
-TX_LIGHTNING EQUS "$05, $03"
-TX_WATER EQUS "$05, $04"
-TX_FIGHTING EQUS "$05, $05"
-TX_PSYCHIC EQUS "$05, $06"
-TX_COLORLESS EQUS "$05, $07"
-TX_LVL EQUS "$05, $11"
+ charmap "é", "`"
+ charmap "♂", "$"
+ charmap "♀", "%"
+ charmap "”", "\""
+
+; TX_SYMBOL (full-tile symbols loaded into v0Tiles2)
+ charmap "<", TX_SYMBOL
+ charmap " >", $00
+ charmap "FIRE>", $01
+ charmap "GRASS>", $02
+ charmap "LIGHTNING>", $03
+ charmap "WATER>", $04
+ charmap "FIGHTING>", $05
+ charmap "PSYCHIC>", $06
+ charmap "COLORLESS>", $07
+ charmap "POISONED>", $08
+ charmap "ASLEEP>", $09
+ charmap "CONFUSED>", $0a
+ charmap "PARALYZED>", $0b
+ charmap "PKMN_ICON>", $0d ; icon displayed along with no. of Pkmn in duel screen
+ charmap "HP>", $10
+ charmap "Lv>", $11
+ charmap "E>", $12
+ charmap "No>", $13
+ charmap "PLUSPOWER>", $14
+ charmap "DEFENDER>", $15
+ charmap "🌕>", $16 ; HP tile
+ charmap "🌑>", $17 ; HP tile with damage counter
+ charmap "0>", $20
+ charmap "1>", $21
+ charmap "2>", $22
+ charmap "3>", $23
+ charmap "4>", $24
+ charmap "5>", $25
+ charmap "6>", $26
+ charmap "7>", $27
+ charmap "8>", $28
+ charmap "9>", $29
+ charmap "+>", $2b
+ charmap "PRIZE_ICON>", $30 ; icon displayed along with no. of prizes in duel screen