mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
HP bar animation addresses and AI switch
This commit is contained in:
parent
e515543500
commit
12396874cf
@ -571,20 +571,20 @@ EnemyUsedFullHeal: ; 383a3 (e:43a3)
|
|||||||
|
|
||||||
EnemyUsedMaxPotion: ; 383ae (e:43ae)
|
EnemyUsedMaxPotion: ; 383ae (e:43ae)
|
||||||
ld a, MAX_POTION
|
ld a, MAX_POTION
|
||||||
ld [wd1f1], a
|
ld [CurEnemyItem], a
|
||||||
jr FullRestoreContinue
|
jr FullRestoreContinue
|
||||||
|
|
||||||
EnemyUsedFullRestore: ; 383b5 (e:43b5)
|
EnemyUsedFullRestore: ; 383b5 (e:43b5)
|
||||||
call AI_HealStatus
|
call AI_HealStatus
|
||||||
ld a, FULL_RESTORE
|
ld a, FULL_RESTORE
|
||||||
ld [wd1f1], a
|
ld [CurEnemyItem], a
|
||||||
ld hl, EnemySubStatus3
|
ld hl, EnemySubStatus3
|
||||||
res SUBSTATUS_CONFUSED, [hl]
|
res SUBSTATUS_CONFUSED, [hl]
|
||||||
xor a
|
xor a
|
||||||
ld [EnemyConfuseCount], a
|
ld [EnemyConfuseCount], a
|
||||||
|
|
||||||
FullRestoreContinue: ; 383c6
|
FullRestoreContinue: ; 383c6
|
||||||
ld de, wd1ec
|
ld de, wCurHPAnimOldHP
|
||||||
ld hl, EnemyMonHP + 1
|
ld hl, EnemyMonHP + 1
|
||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
ld [de], a
|
ld [de], a
|
||||||
@ -596,11 +596,11 @@ FullRestoreContinue: ; 383c6
|
|||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
ld [de], a
|
ld [de], a
|
||||||
inc de
|
inc de
|
||||||
ld [Buffer1], a
|
ld [wCurHPAnimMaxHP], a
|
||||||
ld [EnemyMonHP + 1], a
|
ld [EnemyMonHP + 1], a
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [de], a
|
ld [de], a
|
||||||
ld [Buffer2], a
|
ld [wCurHPAnimMaxHP + 1], a
|
||||||
ld [EnemyMonHP], a
|
ld [EnemyMonHP], a
|
||||||
jr EnemyPotionFinish
|
jr EnemyPotionFinish
|
||||||
; 383e8 (e:43e8)
|
; 383e8 (e:43e8)
|
||||||
@ -620,20 +620,20 @@ EnemyUsedHyperPotion: ; 383f4 (e:43f4)
|
|||||||
ld b, 200
|
ld b, 200
|
||||||
|
|
||||||
EnemyPotionContinue: ; 383f8
|
EnemyPotionContinue: ; 383f8
|
||||||
ld [wd1f1], a
|
ld [CurEnemyItem], a
|
||||||
ld hl, EnemyMonHP + 1
|
ld hl, EnemyMonHP + 1
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [wd1ec], a
|
ld [wCurHPAnimOldHP], a
|
||||||
add b
|
add b
|
||||||
ld [hld], a
|
ld [hld], a
|
||||||
ld [wd1ee], a
|
ld [wCurHPAnimNewHP], a
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [wd1ec + 1], a
|
ld [wCurHPAnimOldHP + 1], a
|
||||||
ld [wd1ee + 1], a
|
ld [wCurHPAnimNewHP + 1], a
|
||||||
jr nc, .ok
|
jr nc, .ok
|
||||||
inc a
|
inc a
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
ld [wd1ee + 1], a
|
ld [wCurHPAnimNewHP + 1], a
|
||||||
.ok
|
.ok
|
||||||
inc hl
|
inc hl
|
||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
@ -641,22 +641,22 @@ EnemyPotionContinue: ; 383f8
|
|||||||
ld de, EnemyMonMaxHP + 1
|
ld de, EnemyMonMaxHP + 1
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
dec de
|
dec de
|
||||||
ld [Buffer1], a
|
ld [wCurHPAnimMaxHP], a
|
||||||
sub b
|
sub b
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
ld [Buffer2], a
|
ld [wCurHPAnimMaxHP + 1], a
|
||||||
sbc b
|
sbc b
|
||||||
jr nc, EnemyPotionFinish
|
jr nc, EnemyPotionFinish
|
||||||
inc de
|
inc de
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
dec de
|
dec de
|
||||||
ld [hld], a
|
ld [hld], a
|
||||||
ld [wd1ee], a
|
ld [wCurHPAnimNewHP], a
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
ld [wd1ef], a
|
ld [wCurHPAnimNewHP + 1], a
|
||||||
|
|
||||||
EnemyPotionFinish: ; 38436
|
EnemyPotionFinish: ; 38436
|
||||||
call PrintText_UsedItemOn
|
call PrintText_UsedItemOn
|
||||||
@ -843,7 +843,7 @@ EnemyUsedXSpecial: ; 38553
|
|||||||
; a = ITEM_CONSTANT
|
; a = ITEM_CONSTANT
|
||||||
; b = BATTLE_CONSTANT (ATTACK, DEFENSE, SPEED, SP_ATTACK, SP_DEFENSE, ACCURACY, EVASION)
|
; b = BATTLE_CONSTANT (ATTACK, DEFENSE, SPEED, SP_ATTACK, SP_DEFENSE, ACCURACY, EVASION)
|
||||||
EnemyUsedXItem:
|
EnemyUsedXItem:
|
||||||
ld [wd1f1], a
|
ld [CurEnemyItem], a
|
||||||
push bc
|
push bc
|
||||||
call PrintText_UsedItemOn
|
call PrintText_UsedItemOn
|
||||||
pop bc
|
pop bc
|
||||||
@ -855,13 +855,13 @@ EnemyUsedXItem:
|
|||||||
; Parameter
|
; Parameter
|
||||||
; a = ITEM_CONSTANT
|
; a = ITEM_CONSTANT
|
||||||
PrintText_UsedItemOn_AND_AIUpdateHUD: ; 38568
|
PrintText_UsedItemOn_AND_AIUpdateHUD: ; 38568
|
||||||
ld [wd1f1], a
|
ld [CurEnemyItem], a
|
||||||
call PrintText_UsedItemOn
|
call PrintText_UsedItemOn
|
||||||
jp AIUpdateHUD
|
jp AIUpdateHUD
|
||||||
; 38571
|
; 38571
|
||||||
|
|
||||||
PrintText_UsedItemOn: ; 38571
|
PrintText_UsedItemOn: ; 38571
|
||||||
ld a, [wd1f1]
|
ld a, [CurEnemyItem]
|
||||||
ld [wd265], a
|
ld [wd265], a
|
||||||
call GetItemName
|
call GetItemName
|
||||||
ld hl, StringBuffer1
|
ld hl, StringBuffer1
|
||||||
|
@ -136,9 +136,11 @@ CheckPlayerMoveTypeMatchups: ; 3484e
|
|||||||
jr c, .loop2
|
jr c, .loop2
|
||||||
|
|
||||||
; neutral
|
; neutral
|
||||||
rept 5
|
|
||||||
inc c
|
inc c
|
||||||
endr
|
inc c
|
||||||
|
inc c
|
||||||
|
inc c
|
||||||
|
inc c
|
||||||
cp 10
|
cp 10
|
||||||
jr z, .loop2
|
jr z, .loop2
|
||||||
|
|
||||||
@ -161,11 +163,6 @@ endr
|
|||||||
|
|
||||||
.doubledown
|
.doubledown
|
||||||
call .DecreaseScore
|
call .DecreaseScore
|
||||||
|
|
||||||
; fallthrough
|
|
||||||
; 34931
|
|
||||||
|
|
||||||
|
|
||||||
.DecreaseScore: ; 34931
|
.DecreaseScore: ; 34931
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
dec a
|
dec a
|
||||||
@ -173,7 +170,6 @@ endr
|
|||||||
ret
|
ret
|
||||||
; 34939
|
; 34939
|
||||||
|
|
||||||
|
|
||||||
.IncreaseScore: ; 34939
|
.IncreaseScore: ; 34939
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
inc a
|
inc a
|
||||||
@ -198,16 +194,16 @@ CheckAbleToSwitch: ; 34941
|
|||||||
; Perish count is 1
|
; Perish count is 1
|
||||||
|
|
||||||
call FindAliveEnemyMons
|
call FindAliveEnemyMons
|
||||||
call FindEnemyMonsWithEnoughHP
|
call FindEnemyMonsWithAtLeastQuarterMaxHP
|
||||||
call FindEnemyMonsThatResistPlayer
|
call FindEnemyMonsThatResistPlayer
|
||||||
call Function34a85
|
call FindAliveEnemyMonsWithASuperEffectiveMove
|
||||||
|
|
||||||
ld a, e
|
ld a, e
|
||||||
cp 2
|
cp 2
|
||||||
jr nz, .not_2
|
jr nz, .not_2
|
||||||
|
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
add $30
|
add $30 ; maximum chance
|
||||||
ld [wEnemySwitchMonParam], a
|
ld [wEnemySwitchMonParam], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -223,12 +219,11 @@ CheckAbleToSwitch: ; 34941
|
|||||||
jr nc, .loop1
|
jr nc, .loop1
|
||||||
|
|
||||||
ld a, b
|
ld a, b
|
||||||
add $30
|
add $30 ; maximum chance
|
||||||
ld [wEnemySwitchMonParam], a
|
ld [wEnemySwitchMonParam], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.no_perish
|
.no_perish
|
||||||
|
|
||||||
call CheckPlayerMoveTypeMatchups
|
call CheckPlayerMoveTypeMatchups
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
cp 11
|
cp 11
|
||||||
@ -238,13 +233,13 @@ CheckAbleToSwitch: ; 34941
|
|||||||
and a
|
and a
|
||||||
jr z, .no_last_counter_move
|
jr z, .no_last_counter_move
|
||||||
|
|
||||||
call Function34a2a
|
call FindEnemyMonsImmuneToLastCounterMove
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
and a
|
and a
|
||||||
jr z, .no_last_counter_move
|
jr z, .no_last_counter_move
|
||||||
|
|
||||||
ld c, a
|
ld c, a
|
||||||
call Function34aa7
|
call FindEnemyMonsWithASuperEffectiveMove
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
cp $ff
|
cp $ff
|
||||||
ret z
|
ret z
|
||||||
@ -285,9 +280,9 @@ CheckAbleToSwitch: ; 34941
|
|||||||
ret nc
|
ret nc
|
||||||
|
|
||||||
call FindAliveEnemyMons
|
call FindAliveEnemyMons
|
||||||
call FindEnemyMonsWithEnoughHP
|
call FindEnemyMonsWithAtLeastQuarterMaxHP
|
||||||
call FindEnemyMonsThatResistPlayer
|
call FindEnemyMonsThatResistPlayer
|
||||||
call Function34a85
|
call FindAliveEnemyMonsWithASuperEffectiveMove
|
||||||
|
|
||||||
ld a, e
|
ld a, e
|
||||||
cp $2
|
cp $2
|
||||||
@ -352,7 +347,7 @@ FindAliveEnemyMons: ; 349f4
|
|||||||
; 34a2a
|
; 34a2a
|
||||||
|
|
||||||
|
|
||||||
Function34a2a: ; 34a2a
|
FindEnemyMonsImmuneToLastCounterMove: ; 34a2a
|
||||||
ld hl, OTPartyMon1
|
ld hl, OTPartyMon1
|
||||||
ld a, [OTPartyCount]
|
ld a, [OTPartyCount]
|
||||||
ld b, a
|
ld b, a
|
||||||
@ -361,44 +356,50 @@ Function34a2a: ; 34a2a
|
|||||||
xor a
|
xor a
|
||||||
ld [wEnemyAISwitchScore], a
|
ld [wEnemyAISwitchScore], a
|
||||||
|
|
||||||
.asm_34a39
|
.loop
|
||||||
ld a, [CurOTMon]
|
ld a, [CurOTMon]
|
||||||
cp d
|
cp d
|
||||||
push hl
|
push hl
|
||||||
jr z, .asm_34a77
|
jr z, .next
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
push bc
|
push bc
|
||||||
|
|
||||||
|
; If the Pokemon has at least 1 HP...
|
||||||
ld bc, MON_HP
|
ld bc, MON_HP
|
||||||
add hl, bc
|
add hl, bc
|
||||||
pop bc
|
pop bc
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
or [hl]
|
or [hl]
|
||||||
pop hl
|
pop hl
|
||||||
jr z, .asm_34a77
|
jr z, .next
|
||||||
|
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [CurSpecies], a
|
ld [CurSpecies], a
|
||||||
call GetBaseData
|
call GetBaseData
|
||||||
|
|
||||||
|
; the enemy's last move is damaging...
|
||||||
ld a, [LastEnemyCounterMove]
|
ld a, [LastEnemyCounterMove]
|
||||||
dec a
|
dec a
|
||||||
ld hl, Moves + MOVE_POWER
|
ld hl, Moves + MOVE_POWER
|
||||||
call GetMoveAttr
|
call GetMoveAttr
|
||||||
and a
|
and a
|
||||||
jr z, .asm_34a77
|
jr z, .next
|
||||||
|
|
||||||
|
; and the Pokemon is immune to it...
|
||||||
inc hl
|
inc hl
|
||||||
call GetMoveByte
|
call GetMoveByte
|
||||||
ld hl, BaseType
|
ld hl, BaseType
|
||||||
call CheckTypeMatchup
|
call CheckTypeMatchup
|
||||||
ld a, [wTypeMatchup]
|
ld a, [wTypeMatchup]
|
||||||
and a
|
and a
|
||||||
jr nz, .asm_34a77
|
jr nz, .next
|
||||||
|
|
||||||
|
; ... encourage that Pokemon.
|
||||||
ld a, [wEnemyAISwitchScore]
|
ld a, [wEnemyAISwitchScore]
|
||||||
or c
|
or c
|
||||||
ld [wEnemyAISwitchScore], a
|
ld [wEnemyAISwitchScore], a
|
||||||
.asm_34a77
|
.next
|
||||||
pop hl
|
pop hl
|
||||||
dec b
|
dec b
|
||||||
ret z
|
ret z
|
||||||
@ -410,11 +411,11 @@ Function34a2a: ; 34a2a
|
|||||||
|
|
||||||
inc d
|
inc d
|
||||||
srl c
|
srl c
|
||||||
jr .asm_34a39
|
jr .loop
|
||||||
; 34a85
|
; 34a85
|
||||||
|
|
||||||
|
|
||||||
Function34a85: ; 34a85
|
FindAliveEnemyMonsWithASuperEffectiveMove: ; 34a85
|
||||||
push bc
|
push bc
|
||||||
ld a, [OTPartyCount]
|
ld a, [OTPartyCount]
|
||||||
ld e, a
|
ld e, a
|
||||||
@ -444,13 +445,9 @@ Function34a85: ; 34a85
|
|||||||
|
|
||||||
and c
|
and c
|
||||||
ld c, a
|
ld c, a
|
||||||
|
FindEnemyMonsWithASuperEffectiveMove: ; 34aa7
|
||||||
|
|
||||||
; fallthrough
|
ld a, -1
|
||||||
; 34aa7
|
|
||||||
|
|
||||||
Function34aa7: ; 34aa7
|
|
||||||
|
|
||||||
ld a, $ff
|
|
||||||
ld [wEnemyAISwitchScore], a
|
ld [wEnemyAISwitchScore], a
|
||||||
ld hl, OTPartyMon1Moves
|
ld hl, OTPartyMon1Moves
|
||||||
ld b, 1 << (PARTY_LENGTH - 1)
|
ld b, 1 << (PARTY_LENGTH - 1)
|
||||||
@ -463,32 +460,40 @@ Function34aa7: ; 34aa7
|
|||||||
|
|
||||||
push hl
|
push hl
|
||||||
push bc
|
push bc
|
||||||
|
; for move on mon:
|
||||||
ld b, NUM_MOVES
|
ld b, NUM_MOVES
|
||||||
ld c, 0
|
ld c, 0
|
||||||
.loop3
|
.loop3
|
||||||
|
; if move is None: break
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
and a
|
and a
|
||||||
push hl
|
push hl
|
||||||
jr z, .break3
|
jr z, .break3
|
||||||
|
|
||||||
|
; if move has no power: continue
|
||||||
dec a
|
dec a
|
||||||
ld hl, Moves + MOVE_POWER
|
ld hl, Moves + MOVE_POWER
|
||||||
call GetMoveAttr
|
call GetMoveAttr
|
||||||
and a
|
and a
|
||||||
jr z, .nope
|
jr z, .nope
|
||||||
|
|
||||||
|
; check type matchups
|
||||||
inc hl
|
inc hl
|
||||||
call GetMoveByte
|
call GetMoveByte
|
||||||
ld hl, BattleMonType1
|
ld hl, BattleMonType1
|
||||||
call CheckTypeMatchup
|
call CheckTypeMatchup
|
||||||
|
|
||||||
|
; if immune or not very effective: continue
|
||||||
ld a, [wTypeMatchup]
|
ld a, [wTypeMatchup]
|
||||||
cp 10
|
cp 10
|
||||||
jr c, .nope
|
jr c, .nope
|
||||||
|
|
||||||
|
; if neutral: load 1 and continue
|
||||||
ld e, 1
|
ld e, 1
|
||||||
cp 10 + 1
|
cp 10 + 1
|
||||||
jr c, .nope
|
jr c, .nope
|
||||||
|
|
||||||
|
; if super-effective: load 2 and break
|
||||||
ld e, 2
|
ld e, 2
|
||||||
jr .break3
|
jr .break3
|
||||||
|
|
||||||
@ -505,18 +510,19 @@ Function34aa7: ; 34aa7
|
|||||||
ld a, e
|
ld a, e
|
||||||
pop bc
|
pop bc
|
||||||
pop hl
|
pop hl
|
||||||
cp $2
|
cp 2
|
||||||
jr z, .done2
|
jr z, .done2 ; at least one move is super-effective
|
||||||
|
cp 1
|
||||||
cp $1
|
jr nz, .next ; no move does more than half damage
|
||||||
jr nz, .next
|
|
||||||
|
|
||||||
|
; encourage this pokemon
|
||||||
ld a, d
|
ld a, d
|
||||||
or b
|
or b
|
||||||
ld d, a
|
ld d, a
|
||||||
jr .next
|
jr .next ; such a long jump
|
||||||
|
|
||||||
.next
|
.next
|
||||||
|
; next pokemon?
|
||||||
push bc
|
push bc
|
||||||
ld bc, PARTYMON_STRUCT_LENGTH
|
ld bc, PARTYMON_STRUCT_LENGTH
|
||||||
add hl, bc
|
add hl, bc
|
||||||
@ -524,12 +530,14 @@ Function34aa7: ; 34aa7
|
|||||||
srl b
|
srl b
|
||||||
jr nc, .loop
|
jr nc, .loop
|
||||||
|
|
||||||
|
; if no pokemon has a super-effective move: return
|
||||||
ld a, d
|
ld a, d
|
||||||
ld b, a
|
ld b, a
|
||||||
and a
|
and a
|
||||||
ret z
|
ret z
|
||||||
|
|
||||||
.done2
|
.done2
|
||||||
|
; convert the bit flag to an int and return
|
||||||
push bc
|
push bc
|
||||||
sla b
|
sla b
|
||||||
sla b
|
sla b
|
||||||
@ -608,7 +616,7 @@ FindEnemyMonsThatResistPlayer: ; 34b20
|
|||||||
; 34b77
|
; 34b77
|
||||||
|
|
||||||
|
|
||||||
FindEnemyMonsWithEnoughHP: ; 34b77
|
FindEnemyMonsWithAtLeastQuarterMaxHP: ; 34b77
|
||||||
push bc
|
push bc
|
||||||
ld de, OTPartySpecies
|
ld de, OTPartySpecies
|
||||||
ld b, 1 << (PARTY_LENGTH - 1)
|
ld b, 1 << (PARTY_LENGTH - 1)
|
||||||
@ -629,13 +637,12 @@ FindEnemyMonsWithEnoughHP: ; 34b77
|
|||||||
inc hl
|
inc hl
|
||||||
inc hl
|
inc hl
|
||||||
; hl = MaxHP + 1
|
; hl = MaxHP + 1
|
||||||
; b = (4 * b) % $100 + (c & 3)
|
; bc = [CurHP] * 4
|
||||||
; c = c / 4
|
|
||||||
srl c
|
srl c
|
||||||
rl b
|
rl b
|
||||||
srl c
|
srl c
|
||||||
rl b
|
rl b
|
||||||
; a = (MaxHP / $100) - b - (1 if c > (MaxHP % $100) else 0)
|
; if bc >= [hl], encourage
|
||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
cp c
|
cp c
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
|
@ -41,10 +41,10 @@ _AnimateHPBar: ; d627
|
|||||||
; d65f
|
; d65f
|
||||||
|
|
||||||
.IsMaximumMoreThan48Pixels: ; d65f
|
.IsMaximumMoreThan48Pixels: ; d65f
|
||||||
ld a, [Buffer2]
|
ld a, [wCurHPAnimMaxHP + 1]
|
||||||
and a
|
and a
|
||||||
jr nz, .player
|
jr nz, .player
|
||||||
ld a, [Buffer1]
|
ld a, [wCurHPAnimMaxHP]
|
||||||
cp 6 * 8
|
cp 6 * 8
|
||||||
jr nc, .player
|
jr nc, .player
|
||||||
and a
|
and a
|
||||||
@ -56,11 +56,8 @@ _AnimateHPBar: ; d627
|
|||||||
; d670
|
; d670
|
||||||
|
|
||||||
.ComputePixels: ; d670
|
.ComputePixels: ; d670
|
||||||
; Buffer1-2: Max HP
|
|
||||||
; Buffer3-4: Old HP
|
|
||||||
; Buffer5-6: New HP
|
|
||||||
push hl
|
push hl
|
||||||
ld hl, Buffer1
|
ld hl, wCurHPAnimMaxHP
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
@ -74,20 +71,20 @@ _AnimateHPBar: ; d627
|
|||||||
ld a, e
|
ld a, e
|
||||||
ld [wCurHPBarPixels], a
|
ld [wCurHPBarPixels], a
|
||||||
|
|
||||||
ld a, [Buffer5]
|
ld a, [wCurHPAnimNewHP]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [Buffer6]
|
ld a, [wCurHPAnimNewHP + 1]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, [Buffer1]
|
ld a, [wCurHPAnimMaxHP]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, [Buffer2]
|
ld a, [wCurHPAnimMaxHP + 1]
|
||||||
ld d, a
|
ld d, a
|
||||||
call ComputeHPBarPixels
|
call ComputeHPBarPixels
|
||||||
ld a, e
|
ld a, e
|
||||||
ld [wNewHPBarPixels], a
|
ld [wNewHPBarPixels], a
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
ld hl, Buffer3
|
ld hl, wCurHPAnimOldHP
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
@ -104,18 +101,18 @@ _AnimateHPBar: ; d627
|
|||||||
sbc b
|
sbc b
|
||||||
ld d, a
|
ld d, a
|
||||||
jr c, .negative
|
jr c, .negative
|
||||||
ld a, [Buffer3]
|
ld a, [wCurHPAnimOldHP]
|
||||||
ld [wd1f5], a
|
ld [wCurHPAnimLowHP], a
|
||||||
ld a, [Buffer5]
|
ld a, [wCurHPAnimNewHP]
|
||||||
ld [wd1f6], a
|
ld [wCurHPAnimHighHP], a
|
||||||
ld bc, 1
|
ld bc, 1
|
||||||
jr .got_direction
|
jr .got_direction
|
||||||
|
|
||||||
.negative
|
.negative
|
||||||
ld a, [Buffer3]
|
ld a, [wCurHPAnimOldHP]
|
||||||
ld [wd1f6], a
|
ld [wCurHPAnimHighHP], a
|
||||||
ld a, [Buffer5]
|
ld a, [wCurHPAnimNewHP]
|
||||||
ld [wd1f5], a
|
ld [wCurHPAnimLowHP], a
|
||||||
ld a, e
|
ld a, e
|
||||||
xor $ff
|
xor $ff
|
||||||
inc a
|
inc a
|
||||||
@ -126,9 +123,9 @@ _AnimateHPBar: ; d627
|
|||||||
ld bc, -1
|
ld bc, -1
|
||||||
.got_direction
|
.got_direction
|
||||||
ld a, d
|
ld a, d
|
||||||
ld [wd1f3], a
|
ld [wCurHPAnimDeltaHP], a
|
||||||
ld a, e
|
ld a, e
|
||||||
ld [wd1f4], a
|
ld [wCurHPAnimDeltaHP + 1], a
|
||||||
ret
|
ret
|
||||||
; d6e2
|
; d6e2
|
||||||
|
|
||||||
@ -151,7 +148,7 @@ ShortAnim_UpdateVariables: ; d6e2
|
|||||||
|
|
||||||
LongAnim_UpdateVariables: ; d6f5
|
LongAnim_UpdateVariables: ; d6f5
|
||||||
.loop
|
.loop
|
||||||
ld hl, Buffer3
|
ld hl, wCurHPAnimOldHP
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
@ -171,13 +168,13 @@ LongAnim_UpdateVariables: ; d6f5
|
|||||||
ld h, d
|
ld h, d
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, l
|
ld a, l
|
||||||
ld [Buffer3], a
|
ld [wCurHPAnimOldHP], a
|
||||||
ld a, h
|
ld a, h
|
||||||
ld [Buffer4], a
|
ld [wCurHPAnimOldHP + 1], a
|
||||||
push hl
|
push hl
|
||||||
push de
|
push de
|
||||||
push bc
|
push bc
|
||||||
ld hl, Buffer1
|
ld hl, wCurHPAnimMaxHP
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
@ -222,13 +219,13 @@ ShortHPBarAnim_UpdateTiles: ; d730
|
|||||||
|
|
||||||
LongHPBarAnim_UpdateTiles: ; d749
|
LongHPBarAnim_UpdateTiles: ; d749
|
||||||
call HPBarAnim_UpdateHPRemaining
|
call HPBarAnim_UpdateHPRemaining
|
||||||
ld a, [Buffer3]
|
ld a, [wCurHPAnimOldHP]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [Buffer4]
|
ld a, [wCurHPAnimOldHP + 1]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, [Buffer1]
|
ld a, [wCurHPAnimMaxHP]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, [Buffer2]
|
ld a, [wCurHPAnimMaxHP + 1]
|
||||||
ld d, a
|
ld d, a
|
||||||
call ComputeHPBarPixels
|
call ComputeHPBarPixels
|
||||||
ld c, e
|
ld c, e
|
||||||
@ -277,9 +274,9 @@ HPBarAnim_UpdateHPRemaining: ; d784
|
|||||||
ld [hli], a
|
ld [hli], a
|
||||||
ld [hld], a
|
ld [hld], a
|
||||||
dec hl
|
dec hl
|
||||||
ld a, [Buffer3]
|
ld a, [wCurHPAnimOldHP]
|
||||||
ld [StringBuffer2 + 1], a
|
ld [StringBuffer2 + 1], a
|
||||||
ld a, [Buffer4]
|
ld a, [wCurHPAnimOldHP + 1]
|
||||||
ld [StringBuffer2], a
|
ld [StringBuffer2], a
|
||||||
ld de, StringBuffer2
|
ld de, StringBuffer2
|
||||||
lb bc, 2, 3
|
lb bc, 2, 3
|
||||||
@ -292,9 +289,9 @@ HPBarAnim_PaletteUpdate: ; d7b4
|
|||||||
ld a, [hCGB]
|
ld a, [hCGB]
|
||||||
and a
|
and a
|
||||||
ret z
|
ret z
|
||||||
ld hl, wd1f0
|
ld hl, wCurHPAnimPal
|
||||||
call SetHPPal
|
call SetHPPal
|
||||||
ld a, [wd1f0]
|
ld a, [wCurHPAnimPal]
|
||||||
ld c, a
|
ld c, a
|
||||||
callba ApplyHPBarPals
|
callba ApplyHPBarPals
|
||||||
ret
|
ret
|
||||||
@ -375,7 +372,7 @@ HPBarAnim_BGMapUpdate: ; d7c9
|
|||||||
; d839
|
; d839
|
||||||
|
|
||||||
ShortHPBar_CalcPixelFrame: ; d839
|
ShortHPBar_CalcPixelFrame: ; d839
|
||||||
ld a, [Buffer1]
|
ld a, [wCurHPAnimMaxHP]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld b, 0
|
ld b, 0
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
@ -411,24 +408,24 @@ ShortHPBar_CalcPixelFrame: ; d839
|
|||||||
jr c, .no_carry
|
jr c, .no_carry
|
||||||
inc b
|
inc b
|
||||||
.no_carry
|
.no_carry
|
||||||
ld a, [wd1f5]
|
ld a, [wCurHPAnimLowHP]
|
||||||
cp b
|
cp b
|
||||||
jr nc, .finish
|
jr nc, .finish
|
||||||
ld a, [wd1f6]
|
ld a, [wCurHPAnimHighHP]
|
||||||
cp b
|
cp b
|
||||||
jr c, .finish
|
jr c, .finish
|
||||||
ld a, b
|
ld a, b
|
||||||
.finish
|
.finish
|
||||||
ld [Buffer3], a
|
ld [wCurHPAnimOldHP], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.return_zero
|
.return_zero
|
||||||
xor a
|
xor a
|
||||||
ld [Buffer3], a
|
ld [wCurHPAnimOldHP], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.return_max
|
.return_max
|
||||||
ld a, [Buffer1]
|
ld a, [wCurHPAnimMaxHP]
|
||||||
ld [Buffer3], a
|
ld [wCurHPAnimOldHP], a
|
||||||
ret
|
ret
|
||||||
; d88c
|
; d88c
|
||||||
|
@ -7450,17 +7450,17 @@ Function10339a: ; 10339a
|
|||||||
Function1033af: ; 1033af
|
Function1033af: ; 1033af
|
||||||
call GetJoypad
|
call GetJoypad
|
||||||
ld a, [hJoyPressed]
|
ld a, [hJoyPressed]
|
||||||
bit 5, a
|
bit D_LEFT_F, a
|
||||||
jr nz, .left
|
jr nz, .left
|
||||||
bit 4, a
|
bit D_RIGHT_F, a
|
||||||
jr nz, .right
|
jr nz, .right
|
||||||
bit 1, a
|
bit B_BUTTON_F, a
|
||||||
jr nz, .b
|
jr nz, .b
|
||||||
bit 0, a
|
bit A_BUTTON_F, a
|
||||||
jr nz, .a
|
jr nz, .a
|
||||||
bit 6, a
|
bit D_UP_F, a
|
||||||
jr nz, .up
|
jr nz, .up
|
||||||
bit 7, a
|
bit D_DOWN_F, a
|
||||||
jr nz, .down
|
jr nz, .down
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -7468,7 +7468,7 @@ Function1033af: ; 1033af
|
|||||||
ld a, [wd1f0]
|
ld a, [wd1f0]
|
||||||
dec a
|
dec a
|
||||||
ld [wd1f0], a
|
ld [wd1f0], a
|
||||||
cp $01
|
cp 1
|
||||||
ret nc
|
ret nc
|
||||||
ld a, [wd1ee]
|
ld a, [wd1ee]
|
||||||
ld [wd1f0], a
|
ld [wd1f0], a
|
||||||
@ -7482,7 +7482,7 @@ Function1033af: ; 1033af
|
|||||||
ld a, [wd1ee]
|
ld a, [wd1ee]
|
||||||
cp c
|
cp c
|
||||||
ret nc
|
ret nc
|
||||||
ld a, $01
|
ld a, 1
|
||||||
ld [wd1f0], a
|
ld [wd1f0], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -7494,8 +7494,8 @@ Function1033af: ; 1033af
|
|||||||
|
|
||||||
.a
|
.a
|
||||||
ld a, [wd1f3]
|
ld a, [wd1f3]
|
||||||
cp $03
|
cp 3
|
||||||
jr nz, .asm_103412
|
jr nz, .a_return
|
||||||
ld de, SFX_TRANSACTION
|
ld de, SFX_TRANSACTION
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
ld hl, Buffer2
|
ld hl, Buffer2
|
||||||
@ -7506,9 +7506,9 @@ Function1033af: ; 1033af
|
|||||||
|
|
||||||
.left
|
.left
|
||||||
.right
|
.right
|
||||||
.asm_103412
|
.a_return
|
||||||
ld a, [wd1f3]
|
ld a, [wd1f3]
|
||||||
cp $03
|
cp 3
|
||||||
ret z
|
ret z
|
||||||
ld de, SFX_PUSH_BUTTON
|
ld de, SFX_PUSH_BUTTON
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
|
21
wram.asm
21
wram.asm
@ -2022,7 +2022,20 @@ TilesetPalettes:: ; d1e6
|
|||||||
EvolvableFlags:: ; d1e8
|
EvolvableFlags:: ; d1e8
|
||||||
flag_array PARTY_LENGTH
|
flag_array PARTY_LENGTH
|
||||||
|
|
||||||
wForceEvolution:: ds 1
|
wForceEvolution:: db ; d1e9
|
||||||
|
|
||||||
|
; HP bar animations
|
||||||
|
wCurHPAnimMaxHP:: dw ; d1ea
|
||||||
|
wCurHPAnimOldHP:: dw ; d1ec
|
||||||
|
wCurHPAnimNewHP:: dw ; d1ee
|
||||||
|
wCurHPAnimPal:: db ; d1f0
|
||||||
|
wCurHPBarPixels:: db ; d1f1
|
||||||
|
wNewHPBarPixels:: db ; d1f2
|
||||||
|
wCurHPAnimDeltaHP:: dw ; d1f3
|
||||||
|
wCurHPAnimLowHP:: db ; d1f5
|
||||||
|
wCurHPAnimHighHP:: db ; d1f6
|
||||||
|
ds wCurHPAnimMaxHP - @
|
||||||
|
|
||||||
MagikarpLength::
|
MagikarpLength::
|
||||||
Buffer1:: ; d1ea
|
Buffer1:: ; d1ea
|
||||||
ds 1
|
ds 1
|
||||||
@ -2039,14 +2052,14 @@ wd1ee:: ds 1
|
|||||||
Buffer6::
|
Buffer6::
|
||||||
wd1ef:: ds 1
|
wd1ef:: ds 1
|
||||||
wd1f0:: ds 1
|
wd1f0:: ds 1
|
||||||
wCurHPBarPixels::
|
CurEnemyItem::
|
||||||
wd1f1:: ds 1
|
wd1f1:: ds 1
|
||||||
wNewHPBarPixels::
|
|
||||||
wd1f2:: ds 1
|
wd1f2:: ds 1
|
||||||
wd1f3:: ds 1
|
wd1f3:: ds 1
|
||||||
wd1f4:: ds 1
|
wd1f4:: ds 1
|
||||||
wd1f5:: ds 1
|
wd1f5:: ds 1
|
||||||
wd1f6:: ds 4
|
wd1f6::
|
||||||
|
ds 4
|
||||||
|
|
||||||
LinkBattleRNs:: ; d1fa
|
LinkBattleRNs:: ; d1fa
|
||||||
ds 10
|
ds 10
|
||||||
|
Loading…
Reference in New Issue
Block a user