summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-02-22 13:49:27 +0100
committerxCrystal <rgr.crystal@gmail.com>2018-02-22 13:49:27 +0100
commitd543a896fd381046dee795f3020237d6da623a9e (patch)
treefd6bb143c4a40fa85ab11e8bb1a43004c289e9d5 /src
parent2e1d018a7a95880a36f3935307aeb76875797ae4 (diff)
CARD_DATA_* constants and more labeling and disasm
Diffstat (limited to 'src')
-rw-r--r--src/constants/card_data_constants.asm89
-rw-r--r--src/constants/duel_constants.asm48
-rw-r--r--src/engine/bank1.asm36
-rw-r--r--src/engine/bank3.asm2
-rw-r--r--src/engine/booster_packs.asm12
-rw-r--r--src/engine/effect_functions.asm4
-rw-r--r--src/engine/home.asm103
7 files changed, 189 insertions, 105 deletions
diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm
index 6a07ce9..d5a44bf 100644
--- a/src/constants/card_data_constants.asm
+++ b/src/constants/card_data_constants.asm
@@ -1,11 +1,70 @@
NONE EQU $0
-PKMN_CARD_DATA_LENGTH EQU $41
+; wTempCardCollection size
+CARD_COLLECTION_SIZE EQU $100
+
+; 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
+
TRN_CARD_DATA_LENGTH EQU $0e
ENERGY_CARD_DATA_LENGTH EQU $0e
-;;; generic type constants
-; double up as Pokemon card types
+; TYPE_PKMN card only
+CARD_DATA_MOVE1 EQU $0c
+CARD_DATA_MOVE1_ENERGY EQU $0c
+CARD_DATA_MOVE1_NAME EQU $10
+CARD_DATA_MOVE1_DESCRIPTION EQU $12
+CARD_DATA_MOVE1_DAMAGE EQU $16
+CARD_DATA_MOVE1_CATEGORY EQU $17
+CARD_DATA_MOVE1_EFFECT_COMMANDS EQU $18
+CARD_DATA_MOVE1_FLAG1 EQU $1a
+CARD_DATA_MOVE1_FLAG2 EQU $1b
+CARD_DATA_MOVE1_FLAG3 EQU $1c
+CARD_DATA_MOVE1_UNKNOWN1 EQU $1d
+CARD_DATA_MOVE1_ANIMATION EQU $1e
+
+; TYPE_PKMN card only
+CARD_DATA_MOVE2 EQU $1f
+CARD_DATA_MOVE2_ENERGY EQU $1f
+CARD_DATA_MOVE2_NAME EQU $23
+CARD_DATA_MOVE2_DESCRIPTION EQU $25
+CARD_DATA_MOVE2_DAMAGE EQU $29
+CARD_DATA_MOVE2_CATEGORY EQU $2a
+CARD_DATA_MOVE2_EFFECT_COMMANDS EQU $2b
+CARD_DATA_MOVE2_FLAG1 EQU $2d
+CARD_DATA_MOVE2_FLAG2 EQU $2e
+CARD_DATA_MOVE2_FLAG3 EQU $2f
+;CARD_DATA_MOVE2_UNKNOWN1 EQU $30
+CARD_DATA_MOVE2_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_KIND 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
+
+PKMN_CARD_DATA_LENGTH EQU $41
+
+; generic type constants
const_def
const FIRE ; $0
const GRASS ; $1
@@ -18,7 +77,7 @@ NUM_COLORED_TYPES EQU const_value
const UNUSED_TYPE ; $7
NUM_TYPES EQU const_value
-;;; card types
+; CARD_DATA_TYPE constants
TYPE_PKMN_FIRE EQUS "FIRE"
TYPE_PKMN_GRASS EQUS "GRASS"
TYPE_PKMN_LIGHTNING EQUS "LIGHTNING"
@@ -44,13 +103,13 @@ TYPE_PKMN EQU %111
TYPE_ENERGY_F EQU 3
TYPE_TRAINER_F EQU 4
-;;; rarity
+; CARD_DATA_RARITY constants
CIRCLE EQU $0
DIAMOND EQU $1
STAR EQU $2
PROMOSTAR EQU $FF
-;;; set 1
+; CARD_DATA_SET constants (set 1)
COLOSSEUM EQU $00
EVOLUTION EQU $10
MYSTERY EQU $20
@@ -58,18 +117,18 @@ LABORATORY EQU $30
PROMOTIONAL EQU $40
ENERGY EQU $50
-;;; set 2
+; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
FOSSIL EQU $2
GB EQU $7
PRO EQU $8
-;;; evolution stage
+; CARD_DATA_STAGE constants
BASIC EQU $0
STAGE1 EQU $1
STAGE2 EQU $2
-;;; weakness/resistance
+; CARD_DATA_WEAKNESS and CARD_DATA_RESISTANCE constants
WR_FIRE EQU $80
WR_GRASS EQU $40
WR_LIGHTNING EQU $20
@@ -77,7 +136,7 @@ WR_WATER EQU $10
WR_FIGHTING EQU $08
WR_PSYCHIC EQU $04
-;;; move category (6th param of Pokemon cards move data)
+; CARD_DATA_MOVE*_CATEGORY constants
DAMAGE_NORMAL EQU $0
DAMAGE_PLUS EQU $1
DAMAGE_MINUS EQU $2
@@ -86,7 +145,7 @@ POKEMON_POWER EQU $4
RESIDUAL_F EQU 7
RESIDUAL EQU 1 << RESIDUAL_F
-;;; flags 1 (8th param of Pokemon cards move data)
+; CARD_DATA_MOVE*_FLAG1 constants
INFLICT_POISON EQU %00000001
INFLICT_SLEEP EQU %00000010
INFLICT_PARALYSIS EQU %00000100
@@ -96,7 +155,7 @@ DAMAGE_TO_OPPONENT_BENCH EQU %00100000
HIGH_RECOIL EQU %01000000
DRAW_CARD EQU %10000000
-;;; flags 2 (9th param of Pokemon cards move data)
+; CARD_DATA_MOVE*_FLAG2 constants
; bits 5, 6 and 7 cover a wide variety of effects
SWITCH_OPPONENT_POKEMON EQU %00000001
HEAL_USER EQU %00000010
@@ -107,13 +166,11 @@ FLAG_2_BIT_5 EQU %00100000
FLAG_2_BIT_6 EQU %01000000
FLAG_2_BIT_7 EQU %10000000
-;;; flags 3 (10th param of Pokemon cards move data)
+; CARD_DATA_MOVE*_FLAG3 constants
; bit 1 covers a wide variety of effects
; bits 2-7 are unused
BOOST_IF_TAKEN_DAMAGE EQU %00000001
FLAG_3_BIT_1 EQU %00000010
-;;; special retreat values
+; special CARD_DATA_RETREAT_COST values
UNABLE_RETREAT EQU $64
-
-CARD_COLLECTION_SIZE EQU $100
diff --git a/src/constants/duel_constants.asm b/src/constants/duel_constants.asm
index ba4bb3f..956f84d 100644
--- a/src/constants/duel_constants.asm
+++ b/src/constants/duel_constants.asm
@@ -23,30 +23,30 @@ DUEL_DRAW EQU $3
const BOXMSG_COIN_TOSS
; wPlayerDuelVariables or wOpponentDuelVariables constants
-DUELVARS_CARD_LOCATIONS EQUS "wPlayerCardLocations & $ff" ; 00
-DUELVARS_HAND EQUS "wPlayerHand & $ff" ; 42
-DUELVARS_DECK_CARDS EQUS "wPlayerDeckCards & $ff" ; 7e
-DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "wPlayerNumberOfCardsNotInDeck & $ff" ; ba
-DUELVARS_ARENA_CARD EQUS "wPlayerArenaCard & $ff" ; bb
-DUELVARS_BENCH EQUS "wPlayerBench & $ff" ; bc
-DUELVARS_ARENA_CARD_HP EQUS "wPlayerArenaCardHP & $ff" ; c8
-DUELVARS_BENCH1_CARD_HP EQUS "wPlayerBench1CardHP & $ff" ; c9
-DUELVARS_BENCH2_CARD_HP EQUS "wPlayerBench2CardHP & $ff" ; ca
-DUELVARS_BENCH3_CARD_HP EQUS "wPlayerBench3CardHP & $ff" ; cb
-DUELVARS_BENCH4_CARD_HP EQUS "wPlayerBench4CardHP & $ff" ; cc
-DUELVARS_BENCH5_CARD_HP EQUS "wPlayerBench5CardHP & $ff" ; cd
-DUELVARS_ARENA_CARD_SUBSTATUS1 EQUS "wPlayerArenaCardSubstatus1 & $ff" ; e7
-DUELVARS_ARENA_CARD_SUBSTATUS2 EQUS "wPlayerArenaCardSubstatus2 & $ff" ; e8
-DUELVARS_ARENA_CARD_SUBSTATUS3 EQUS "wPlayerArenaCardSubstatus3 & $ff" ; e9
-DUELVARS_ARENA_CARD_SUBSTATUS4 EQUS "wPlayerArenaCardSubstatus4 & $ff" ; ea
-DUELVARS_ARENA_CARD_SUBSTATUS5 EQUS "wPlayerArenaCardSubstatus5 & $ff" ; eb
-DUELVARS_PRIZES EQUS "wPlayerPrizes & $ff" ; ec
-DUELVARS_NUMBER_OF_CARDS_IN_DISCARD_PILE EQUS "wPlayerNumberOfCardsInDiscardPile & $ff" ; ed
-DUELVARS_NUMBER_OF_CARDS_IN_HAND EQUS "wPlayerNumberOfCardsInHand & $ff" ; ee
-DUELVARS_NUMBER_OF_POKEMON_IN_PLAY EQUS "wPlayerNumberOfPokemonInPlay & $ff" ; ef
-DUELVARS_ARENA_CARD_STATUS EQUS "wPlayerArenaCardStatus & $ff" ; f0
-DUELVARS_DUELIST_TYPE EQUS "wPlayerDuelistType & $ff" ; f1
-DUELVARS_ARENA_CARD_DISABLED_MOVE_INDEX EQUS "wPlayerArenaCardDisabledMoveIndex & $ff" ; 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_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_SUBSTATUS1 EQUS "LOW(wPlayerArenaCardSubstatus1)" ; e7
+DUELVARS_ARENA_CARD_SUBSTATUS2 EQUS "LOW(wPlayerArenaCardSubstatus2)" ; e8
+DUELVARS_ARENA_CARD_SUBSTATUS3 EQUS "LOW(wPlayerArenaCardSubstatus3)" ; e9
+DUELVARS_ARENA_CARD_SUBSTATUS4 EQUS "LOW(wPlayerArenaCardSubstatus4)" ; ea
+DUELVARS_ARENA_CARD_SUBSTATUS5 EQUS "LOW(wPlayerArenaCardSubstatus5)" ; 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
; card location constants (DUELVARS_CARD_LOCATIONS)
CARD_LOCATION_DECK EQU $00
diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm
index d40d866..47873bc 100644
--- a/src/engine/bank1.asm
+++ b/src/engine/bank1.asm
@@ -869,7 +869,7 @@ CheckIfMoveExists: ; 4872 (1:4872)
ld a, [de]
or c
jr z, .return_no_move_found
- ld hl, wLoadedCard1Move1Category - (wLoadedCard1Move1Name + 1)
+ ld hl, CARD_DATA_MOVE1_CATEGORY - (CARD_DATA_MOVE1_NAME + 1)
add hl, de
ld a, [hl]
and $ff ^ RESIDUAL
@@ -930,12 +930,12 @@ _CheckIfEnoughEnergies: ; 48ac (1:48ac)
ld de, wLoadedCard1Move2Energy
.got_move
- ld hl, wLoadedCard1Move1Name - wLoadedCard1Move1Energy
+ ld hl, CARD_DATA_MOVE1_NAME - CARD_DATA_MOVE1_ENERGY
add hl, de
ld a, [hli]
or [hl]
jr z, .not_usable
- ld hl, wLoadedCard1Move1Category - wLoadedCard1Move1Energy
+ ld hl, CARD_DATA_MOVE1_CATEGORY - CARD_DATA_MOVE1_ENERGY
add hl, de
ld a, [hl]
cp POKEMON_POWER
@@ -1161,9 +1161,9 @@ Func_4b60: ; 4b60 (1:4b60)
Func_4cd5: ; 4cd5 (1:4cd5)
ld a, DUELVARS_DUELIST_TYPE
call GetTurnDuelistVariable
- cp $0
+ cp DUELIST_TYPE_PLAYER
jr z, .asm_4d15
- cp $1
+ cp DUELIST_TYPE_LINK_OPP
jr z, .asm_4cec
push af
push hl
@@ -1188,7 +1188,7 @@ Func_4cd5: ; 4cd5 (1:4cd5)
jr c, .asm_4d12
ld a, DUELVARS_DUELIST_TYPE
call GetTurnDuelistVariable
- ld [hl], $1
+ ld [hl], DUELIST_TYPE_LINK_OPP
or a
ret
@@ -1416,10 +1416,10 @@ ConvertTrainerCardToPokemon:
.start_ram_data_overwrite
push de
ld [hl], COLORLESS
- ld bc, wLoadedCard1HP - wLoadedCard1
+ ld bc, CARD_DATA_HP
add hl, bc
ld de, .data_to_overwrite
- ld c, wLoadedCard1Unknown2 - wLoadedCard1HP
+ ld c, CARD_DATA_UNKNOWN2 - CARD_DATA_HP
.loop
ld a, [de]
inc de
@@ -1430,16 +1430,16 @@ ConvertTrainerCardToPokemon:
ret
.data_to_overwrite
- db 10 ; hp
- ds $07 ; wLoadedCard1Move1Name - (wLoadedCard1HP + 1)
- tx DiscardName ; move1 name
- tx DiscardDescription ; move1 description
- ds $03 ; wLoadedCard1Move1Category - (wLoadedCard1Move1Description + 2)
- db POKEMON_POWER ; move1 category
- dw TrainerCardAsPokemonEffectCommands ; move1 effect commands
- ds $18 ; wLoadedCard1RetreatCost - (wLoadedCard1Move1EffectCommands + 2)
- db UNABLE_RETREAT ; retreat cost
- ds $0d ; PKMN_CARD_DATA_LENGTH - (wLoadedCard1RetreatCost + 1 - wLoadedCard1)
+ db 10 ; CARD_DATA_HP
+ ds $07 ; CARD_DATA_MOVE1_NAME - (CARD_DATA_HP + 1)
+ tx DiscardName ; CARD_DATA_MOVE1_NAME
+ tx DiscardDescription ; CARD_DATA_MOVE1_DESCRIPTION
+ ds $03 ; CARD_DATA_MOVE1_CATEGORY - (CARD_DATA_MOVE1_DESCRIPTION + 2)
+ db POKEMON_POWER ; CARD_DATA_MOVE1_CATEGORY
+ dw TrainerCardAsPokemonEffectCommands ; CARD_DATA_MOVE1_EFFECT_COMMANDS
+ ds $18 ; CARD_DATA_RETREAT_COST - (CARD_DATA_MOVE1_EFFECT_COMMANDS + 2)
+ db UNABLE_RETREAT ; CARD_DATA_RETREAT_COST
+ ds $0d ; PKMN_CARD_DATA_LENGTH - (CARD_DATA_RETREAT_COST + 1)
INCROM $6df1, $7107
diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm
index 383fe04..df4a1d5 100644
--- a/src/engine/bank3.asm
+++ b/src/engine/bank3.asm
@@ -2219,7 +2219,7 @@ Func_d00b: ; d00b (3:500b)
dec hl
ld e, a
ld d, $0
- call Func_2f45
+ call GetCardName
pop hl
ld [hl], e
inc hl
diff --git a/src/engine/booster_packs.asm b/src/engine/booster_packs.asm
index 23c3494..c24f80a 100644
--- a/src/engine/booster_packs.asm
+++ b/src/engine/booster_packs.asm
@@ -81,7 +81,7 @@ FindCardsInSetAndRarity: ; 1e226 (7:6226)
call CheckCardViable
jr c, .finished_with_current_card
ld a, [wBoosterCurrentCardType]
- call GetCardType
+ call GetBoosterCardType
push af
push hl
ld c, a
@@ -107,7 +107,7 @@ FindCardsInSetAndRarity: ; 1e226 (7:6226)
CheckCardViable: ; 1e268 (7:6268)
push bc
ld a, e
- call GetCardHeader
+ call GetCardTypeRarityAndSet
ld [wBoosterCurrentCardType], a
ld a, b
ld [wBoosterCurrentCardRarity], a
@@ -119,7 +119,7 @@ CheckCardViable: ; 1e268 (7:6268)
cp c
jr nz, .invalid_card
ld a, [wBoosterCurrentCardType]
- call GetCardType
+ call GetBoosterCardType
cp BOOSTER_CARD_TYPE_ENERGY
jr z, .return_valid_card
ld a, [wBoosterCurrentCardSet]
@@ -139,7 +139,7 @@ CheckCardViable: ; 1e268 (7:6268)
ret
; Map a card's TYPE_* constant given in a to its BOOSTER_CARD_TYPE_* constant
-GetCardType: ; 1e2a0 (7:62a0)
+GetBoosterCardType: ; 1e2a0 (7:62a0)
push hl
push bc
ld hl, CardTypeTable
@@ -439,7 +439,7 @@ AddBoosterCardsToCollection:; 1e40a (7:640a)
AddBoosterCardToTempCardCollection: ; 1e419 (7:6419)
push hl
- ld h, wTempCardCollection >> 8
+ ld h, HIGH(wTempCardCollection)
ld a, [wBoosterTempCard]
ld l, a
inc [hl]
@@ -448,7 +448,7 @@ AddBoosterCardToTempCardCollection: ; 1e419 (7:6419)
IsByteInTempCardCollectionZero: ; 1e423 (7:6423)
push hl
- ld h, wTempCardCollection >> 8
+ ld h, HIGH(wTempCardCollection)
ld a, [wBoosterTempCard]
ld l, a
ld a, [hl]
diff --git a/src/engine/effect_functions.asm b/src/engine/effect_functions.asm
index 1d49838..22d7cec 100644
--- a/src/engine/effect_functions.asm
+++ b/src/engine/effect_functions.asm
@@ -99,12 +99,12 @@ CommentedOut_2c086: ; 2c086 (b:4086)
Func_2c087: ; 2c087 (b:4087)
xor a
- jr asm_2c08c
+ jr Func_2c08c
Func_2c08a: ; 2c08a (b:408a)
ld a, $1
-asm_2c08c
+Func_2c08c:
push de
push af
ld a, $11
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 96f63c4..a889228 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -1284,6 +1284,7 @@ SwitchToCGBDoubleSpeed: ; 07e7 (0:07e7)
bit 7, [hl]
ret nz
; fallthrough
+
CGBSpeedSwitch: ; 07f1 (0:07f1)
ld a, [rIE]
push af
@@ -3491,7 +3492,7 @@ CopyMoveDataAndDamage: ; 16c0 (0:16c0)
ld hl, wLoadedCard1Move2
.got_move
ld de, wLoadedMove
- ld c, wLoadedCard1Move2 - wLoadedCard1Move1
+ ld c, CARD_DATA_MOVE2 - CARD_DATA_MOVE1
.copy_loop
ld a, [hli]
ld [de], a
@@ -3854,7 +3855,7 @@ Func_1994: ; 1994 (0:1994)
call Func_1a0e
ld b, a
call SwapTurn
- call Func_3730
+ call GetArenaPokemonWeakness
call SwapTurn
and b
jr z, .asm_19dc
@@ -3864,7 +3865,7 @@ Func_1994: ; 1994 (0:1994)
set 1, [hl]
.asm_19dc
call SwapTurn
- call Func_374a
+ call GetArenaPokemonResistance
call SwapTurn
and b
jr z, .check_pluspower_and_defender
@@ -3916,7 +3917,7 @@ Func_1a22: ; 1a22 (0:1a22)
call Func_36f6
call Func_1a0e
ld b, a
- call Func_3730
+ call GetArenaPokemonWeakness
and b
jr z, .asm_1a47
sla e
@@ -3924,7 +3925,7 @@ Func_1a22: ; 1a22 (0:1a22)
ld hl, $ccc1
set 1, [hl]
.asm_1a47
- call Func_374a
+ call GetArenaPokemonResistance
and b
jr z, .asm_1a58
ld hl, $ffe2
@@ -4505,6 +4506,7 @@ DrawRegularTextBox: ; 1e7c (0:1e7c)
cp CONSOLE_SGB
jp z, DrawRegularTextBoxSGB
; fallthrough
+
DrawRegularTextBoxDMG: ; 1e88 (0:1e88)
call DECoordToBGMap0Address
; top line (border) of the text box
@@ -4622,7 +4624,7 @@ DrawRegularTextBoxSGB: ; 1f0f (0:1f0f)
ld a, [wFrameType]
or a
ret z
-ColorizeTextBoxSGB
+ColorizeTextBoxSGB:
push bc
push de
ld hl, $cae0
@@ -4742,11 +4744,11 @@ Func_20c4: ; 20c4 (0:20c4)
Func_20d8: ; 20d8 (0:20d8)
ld b, $10
- jr asm_20de
+ jr Func_20dc.asm_20de
Func_20dc: ; 20dc (0:20dc)
ld b, $24
-asm_20de
+.asm_20de
ld hl, DuelGraphics + $980 - $4000
ld a, [wConsole]
cp CONSOLE_CGB
@@ -6558,15 +6560,17 @@ Func_2ec4: ; 2ec4 (0:2ec4)
INCROM $2ecd, $2f0a
-; load data of card with id at e to wLoadedCard1 or wLoadedCard2
+; load data of card with id at e to wLoadedCard2
LoadCardDataToBuffer2: ; 2f0a (0:2f0a)
push hl
ld hl, wLoadedCard2
jr LoadCardDataToRAM
+; load data of card with id at e to wLoadedCard1
LoadCardDataToBuffer1: ; 2f10 (0:2f10)
push hl
ld hl, wLoadedCard1
+; fallthrough
LoadCardDataToRAM: ; 2f14 (0:2f14)
push de
@@ -6586,65 +6590,65 @@ LoadCardDataToRAM: ; 2f14 (0:2f14)
jr nz, .copy_card_data_loop
call BankpopHome
or a
-
.done
pop bc
pop de
pop hl
ret
-Func_2f32: ; 2f32 (0:2f32)
+; return in a the type (TYPE_* constant) of the card with id at e
+GetCardType: ; 2f32 (0:2f32)
push hl
call GetCardPointer
- jr c, .asm_2f43
+ jr c, .done
ld a, BANK(CardPointers)
call BankpushHome2
ld l, [hl]
call BankpopHome
ld a, l
or a
-.asm_2f43
+.done
pop hl
ret
-Func_2f45: ; 2f45 (0:2f45)
+; return in a the 2-byte text id of the name of the card with id at e
+GetCardName: ; 2f45 (0:2f45)
push hl
call GetCardPointer
- jr c, .asm_2f5b
+ jr c, .done
ld a, BANK(CardPointers)
call BankpushHome2
- ld de, $0003
+ ld de, CARD_DATA_NAME
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
call BankpopHome
or a
-
-.asm_2f5b
+.done
pop hl
ret
-; from the card id in a, loads type into a, rarity into b, and set into c
-GetCardHeader: ; 2f5d (0:2f5d)
+; from the card id in a, returns type into a, rarity into b, and set into c
+GetCardTypeRarityAndSet: ; 2f5d (0:2f5d)
push hl
push de
- ld d, $00
+ ld d, 0
ld e, a
call GetCardPointer
- jr c, .card_not_found
+ jr c, .done
ld a, BANK(CardPointers)
call BankpushHome2
- ld e, [hl]
- ld bc, $5
+ ld e, [hl] ; CARD_DATA_TYPE
+ ld bc, CARD_DATA_RARITY
add hl, bc
- ld b, [hl]
+ ld b, [hl] ; CARD_DATA_RARITY
inc hl
- ld c, [hl]
+ ld c, [hl] ; CARD_DATA_SET
call BankpopHome
ld a, e
or a
-.card_not_found
+.done
pop de
pop hl
ret
@@ -7157,6 +7161,7 @@ Func_31fc: ; 31fc (0:31fc)
ld [hl], a
ld a, e
; fallthrough
+
Func_3212: ; 3212 (0:3212)
ld [rSB], a
ld a, $1
@@ -7748,13 +7753,13 @@ Func_36f7: ; 36f7 (0:36f7)
call GetTurnDuelistVariable
bit 7, a
jr nz, .asm_3718
-.asm_3703
+.has_status
ld a, e
add DUELVARS_ARENA_CARD
call GetTurnDuelistVariable
call GetCardIDFromDeckIndex
- call Func_2f32
- cp $10
+ call GetCardType
+ cp TYPE_TRAINER
jr nz, .asm_3715
ld a, $6
.asm_3715
@@ -7764,7 +7769,7 @@ Func_36f7: ; 36f7 (0:36f7)
.asm_3718
ld a, e
call CheckIfUnderAnyCannotUseStatus2
- jr c, .asm_3703
+ jr c, .has_status
ld a, e
add $d4
call GetTurnDuelistVariable
@@ -7774,28 +7779,50 @@ Func_36f7: ; 36f7 (0:36f7)
ret
; 0x3729
- INCROM $3729, $3730
+; return in a the weakness of the arena Pokemon (a == 0) or of a bench Pokemon (a > 0)
+; if a == 0 and [DUELVARS_ARENA_CARD_SUBSTATUS3] != 0, return [DUELVARS_ARENA_CARD_SUBSTATUS3] instead
+GetPlayAreaPokemonWeakness: ; 3729 (0:3729)
+ or a
+ jr z, GetArenaPokemonWeakness
+ add DUELVARS_ARENA_CARD
+ jr GetPokemonWeakness
-Func_3730: ; 3730 (0:3730)
+; return [DUELVARS_ARENA_CARD_SUBSTATUS3] in a
+; if [DUELVARS_ARENA_CARD_SUBSTATUS3] == 0, return the Pokemon's weakness value instead
+GetArenaPokemonWeakness: ; 3730 (0:3730)
ld a, DUELVARS_ARENA_CARD_SUBSTATUS3
call GetTurnDuelistVariable
or a
ret nz
ld a, DUELVARS_ARENA_CARD
+; fallthrough
+
+GetPokemonWeakness:
call GetTurnDuelistVariable
call LoadDeckCardToBuffer2
ld a, [wLoadedCard2Weakness]
ret
; 0x3743
- INCROM $3743, $374a
+; return in a the resistance of the arena Pokemon (a == 0) or of a bench Pokemon (a > 0)
+; if a == 0 and [DUELVARS_ARENA_CARD_SUBSTATUS4] != 0, return [DUELVARS_ARENA_CARD_SUBSTATUS4] instead
+GetPlayAreaPokemonResistance: ; 3743 (0:3743)
+ or a
+ jr z, GetArenaPokemonResistance
+ add DUELVARS_ARENA_CARD
+ jr GetPokemonResistance
-Func_374a: ; 374a (0:374a)
+; return [DUELVARS_ARENA_CARD_SUBSTATUS4] in a
+; if [DUELVARS_ARENA_CARD_SUBSTATUS4] == 0, return the Pokemon's resistance value instead
+GetArenaPokemonResistance: ; 374a (0:374a)
ld a, DUELVARS_ARENA_CARD_SUBSTATUS4
call GetTurnDuelistVariable
or a
ret nz
ld a, DUELVARS_ARENA_CARD
+; fallthrough
+
+GetPokemonResistance:
call GetTurnDuelistVariable
call LoadDeckCardToBuffer2
ld a, [wLoadedCard2Resistance]
@@ -7979,7 +8006,7 @@ Func_38db: ; 38db (0:38db)
xor a
ld [$ba44], a
call DisableSRAM
-asm_38ed
+.asm_38ed
farcall Func_131d3
ld a, $9
ld [wd111], a
@@ -7995,7 +8022,7 @@ Func_38fb: ; 38fb (0:38fb)
ld a, [$ba44]
call DisableSRAM
cp $ff
- jr z, asm_38ed
+ jr z, Func_38db.asm_38ed
scf
ret
@@ -8022,7 +8049,7 @@ GetFloorObjectFromPos: ; 3927 (0:3927)
INCROM $392e, $3946
-; puts a floor tile in hc given coords in bc (x,y. measured in tiles)
+; puts a floor tile in hl given coords in bc (x,y. measured in tiles)
FindFloorTileFromPos: ; 3946 (0:3946)
push bc
srl b