diff options
author | xCrystal <rgr.crystal@gmail.com> | 2018-02-22 13:49:27 +0100 |
---|---|---|
committer | xCrystal <rgr.crystal@gmail.com> | 2018-02-22 13:49:27 +0100 |
commit | d543a896fd381046dee795f3020237d6da623a9e (patch) | |
tree | fd6bb143c4a40fa85ab11e8bb1a43004c289e9d5 /src | |
parent | 2e1d018a7a95880a36f3935307aeb76875797ae4 (diff) |
CARD_DATA_* constants and more labeling and disasm
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/card_data_constants.asm | 89 | ||||
-rw-r--r-- | src/constants/duel_constants.asm | 48 | ||||
-rw-r--r-- | src/engine/bank1.asm | 36 | ||||
-rw-r--r-- | src/engine/bank3.asm | 2 | ||||
-rw-r--r-- | src/engine/booster_packs.asm | 12 | ||||
-rw-r--r-- | src/engine/effect_functions.asm | 4 | ||||
-rw-r--r-- | src/engine/home.asm | 103 |
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 |