mirror of
https://github.com/pret/pokegold.git
synced 2026-09-13 11:05:25 -05:00
Finish cleanup of bank 3.
This commit is contained in:
27
data/battle/wobble_probabilities.asm
Normal file
27
data/battle/wobble_probabilities.asm
Normal file
@@ -0,0 +1,27 @@
|
||||
WobbleProbabilities:
|
||||
; catch rate, chance of wobbling / 255
|
||||
; nLeft/255 = (nRight/255) ** 4
|
||||
db 1, 63
|
||||
db 2, 75
|
||||
db 3, 84
|
||||
db 4, 90
|
||||
db 5, 95
|
||||
db 7, 103
|
||||
db 10, 113
|
||||
db 15, 126
|
||||
db 20, 134
|
||||
db 30, 149
|
||||
db 40, 160
|
||||
db 50, 169
|
||||
db 60, 177
|
||||
db 80, 191
|
||||
db 100, 201
|
||||
db 120, 211
|
||||
db 140, 220
|
||||
db 160, 227
|
||||
db 180, 234
|
||||
db 200, 240
|
||||
db 220, 246
|
||||
db 240, 251
|
||||
db 254, 253
|
||||
db 255, 255
|
||||
17
data/items/heal_hp.asm
Normal file
17
data/items/heal_hp.asm
Normal file
@@ -0,0 +1,17 @@
|
||||
HealingHPAmounts:
|
||||
dbw FRESH_WATER, 50
|
||||
dbw SODA_POP, 60
|
||||
dbw LEMONADE, 80
|
||||
dbw HYPER_POTION, 200
|
||||
dbw SUPER_POTION, 50
|
||||
dbw POTION, 20
|
||||
dbw MAX_POTION, MAX_STAT_VALUE
|
||||
dbw FULL_RESTORE, MAX_STAT_VALUE
|
||||
dbw MOOMOO_MILK, 100
|
||||
dbw BERRY, 10
|
||||
dbw GOLD_BERRY, 30
|
||||
dbw ENERGYPOWDER, 50
|
||||
dbw ENERGY_ROOT, 200
|
||||
dbw RAGECANDYBAR, 20
|
||||
dbw BERRY_JUICE, 20
|
||||
dbw -1, 0 ; end
|
||||
19
data/items/heal_status.asm
Normal file
19
data/items/heal_status.asm
Normal file
@@ -0,0 +1,19 @@
|
||||
; See also data/battle/held_heal_status.asm
|
||||
|
||||
StatusHealingActions:
|
||||
; item, party menu action text, status
|
||||
db ANTIDOTE, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
|
||||
db BURN_HEAL, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
|
||||
db ICE_HEAL, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
|
||||
db AWAKENING, PARTYMENUTEXT_HEAL_SLP, SLP
|
||||
db PARLYZ_HEAL, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
|
||||
db FULL_HEAL, PARTYMENUTEXT_HEAL_ALL, %11111111
|
||||
db FULL_RESTORE, PARTYMENUTEXT_HEAL_ALL, %11111111
|
||||
db HEAL_POWDER, PARTYMENUTEXT_HEAL_ALL, %11111111
|
||||
db PSNCUREBERRY, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
|
||||
db PRZCUREBERRY, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
|
||||
db BURNT_BERRY, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
|
||||
db ICE_BERRY, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
|
||||
db MINT_BERRY, PARTYMENUTEXT_HEAL_SLP, SLP
|
||||
db MIRACLEBERRY, PARTYMENUTEXT_HEAL_ALL, %11111111
|
||||
db -1, 0, 0 ; end
|
||||
6
data/items/x_stats.asm
Normal file
6
data/items/x_stats.asm
Normal file
@@ -0,0 +1,6 @@
|
||||
XItemStats:
|
||||
; item, stat
|
||||
db X_ATTACK, ATTACK
|
||||
db X_DEFEND, DEFENSE
|
||||
db X_SPEED, SPEED
|
||||
db X_SPECIAL, SP_ATTACK
|
||||
@@ -1,61 +1,59 @@
|
||||
HP_BAR_MAX_PIXELS EQU $30
|
||||
|
||||
AnimateHPBar_: ; d62d (3:562d)
|
||||
call Functiond665
|
||||
jr c, .asm_d64b
|
||||
call Functiond676
|
||||
.asm_d635
|
||||
_AnimateHPBar:
|
||||
call .IsMaximumMoreThan48Pixels
|
||||
jr c, .MoreThan48Pixels
|
||||
call .ComputePixels
|
||||
.ShortAnimLoop:
|
||||
push bc
|
||||
push hl
|
||||
call Functiond6e8
|
||||
call ShortAnim_UpdateVariables
|
||||
pop hl
|
||||
pop bc
|
||||
push af
|
||||
push bc
|
||||
push hl
|
||||
call Functiond736
|
||||
call Functiond7cf
|
||||
call ShortHPBarAnim_UpdateTiles
|
||||
call HPBarAnim_BGMapUpdate
|
||||
pop hl
|
||||
pop bc
|
||||
pop af
|
||||
jr nc, .asm_d635
|
||||
jr nc, .ShortAnimLoop
|
||||
ret
|
||||
|
||||
.asm_d64b
|
||||
call Functiond676
|
||||
.asm_d64e
|
||||
.MoreThan48Pixels:
|
||||
call .ComputePixels
|
||||
.LongAnimLoop:
|
||||
push bc
|
||||
push hl
|
||||
call Functiond6fb
|
||||
call LongAnim_UpdateVariables
|
||||
pop hl
|
||||
pop bc
|
||||
ret c
|
||||
push af
|
||||
push bc
|
||||
push hl
|
||||
call Functiond74f
|
||||
call Functiond7cf
|
||||
call LongHPBarAnim_UpdateTiles
|
||||
call HPBarAnim_BGMapUpdate
|
||||
pop hl
|
||||
pop bc
|
||||
pop af
|
||||
jr nc, .asm_d64e
|
||||
jr nc, .LongAnimLoop
|
||||
ret
|
||||
|
||||
Functiond665: ; d665 (3:5665)
|
||||
.IsMaximumMoreThan48Pixels:
|
||||
ld a, [wCurHPAnimMaxHP + 1]
|
||||
and a
|
||||
jr nz, .asm_d674
|
||||
jr nz, .player
|
||||
ld a, [wCurHPAnimMaxHP]
|
||||
cp HP_BAR_MAX_PIXELS
|
||||
jr nc, .asm_d674
|
||||
cp HP_BAR_LENGTH_PX
|
||||
jr nc, .player
|
||||
and a
|
||||
ret
|
||||
|
||||
.asm_d674
|
||||
.player
|
||||
scf
|
||||
ret
|
||||
|
||||
Functiond676: ; d676 (3:5676)
|
||||
.ComputePixels:
|
||||
push hl
|
||||
ld hl, wCurHPAnimMaxHP
|
||||
ld a, [hli]
|
||||
@@ -70,6 +68,7 @@ Functiond676: ; d676 (3:5676)
|
||||
call ComputeHPBarPixels
|
||||
ld a, e
|
||||
ld [wCurHPBarPixels], a
|
||||
|
||||
ld a, [wCurHPAnimNewHP]
|
||||
ld c, a
|
||||
ld a, [wCurHPAnimNewHP + 1]
|
||||
@@ -81,6 +80,7 @@ Functiond676: ; d676 (3:5676)
|
||||
call ComputeHPBarPixels
|
||||
ld a, e
|
||||
ld [wNewHPBarPixels], a
|
||||
|
||||
push hl
|
||||
ld hl, wCurHPAnimOldHP
|
||||
ld a, [hli]
|
||||
@@ -98,15 +98,15 @@ Functiond676: ; d676 (3:5676)
|
||||
ld a, d
|
||||
sbc b
|
||||
ld d, a
|
||||
jr c, .asm_d6c7
|
||||
jr c, .negative
|
||||
ld a, [wCurHPAnimOldHP]
|
||||
ld [wCurHPAnimLowHP], a
|
||||
ld a, [wCurHPAnimNewHP]
|
||||
ld [wCurHPAnimHighHP], a
|
||||
ld bc, $1
|
||||
jr .asm_d6df
|
||||
ld bc, 1
|
||||
jr .got_direction
|
||||
|
||||
.asm_d6c7
|
||||
.negative
|
||||
ld a, [wCurHPAnimOldHP]
|
||||
ld [wCurHPAnimHighHP], a
|
||||
ld a, [wCurHPAnimNewHP]
|
||||
@@ -118,31 +118,32 @@ Functiond676: ; d676 (3:5676)
|
||||
ld a, d
|
||||
xor $ff
|
||||
ld d, a
|
||||
ld bc, rIE
|
||||
.asm_d6df
|
||||
ld bc, -1
|
||||
.got_direction
|
||||
ld a, d
|
||||
ld [wCurHPAnimDeltaHP], a
|
||||
ld a, e
|
||||
ld [wCurHPAnimDeltaHP + 1], a
|
||||
ret
|
||||
|
||||
Functiond6e8: ; d6e8 (3:56e8)
|
||||
ShortAnim_UpdateVariables:
|
||||
ld hl, wCurHPBarPixels
|
||||
ld a, [wNewHPBarPixels]
|
||||
cp [hl]
|
||||
jr nz, .asm_d6f3
|
||||
jr nz, .not_finished
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d6f3
|
||||
.not_finished
|
||||
ld a, c
|
||||
add [hl]
|
||||
ld [hl], a
|
||||
call Functiond83f
|
||||
call ShortHPBar_CalcPixelFrame
|
||||
and a
|
||||
ret
|
||||
|
||||
Functiond6fb: ; d6fb (3:56fb)
|
||||
LongAnim_UpdateVariables:
|
||||
.loop
|
||||
ld hl, wCurHPAnimOldHP
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
@@ -150,15 +151,15 @@ Functiond6fb: ; d6fb (3:56fb)
|
||||
ld d, a
|
||||
ld a, e
|
||||
cp [hl]
|
||||
jr nz, .asm_d70d
|
||||
jr nz, .next
|
||||
inc hl
|
||||
ld a, d
|
||||
cp [hl]
|
||||
jr nz, .asm_d70d
|
||||
jr nz, .next
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d70d
|
||||
.next
|
||||
ld l, e
|
||||
ld h, d
|
||||
add hl, bc
|
||||
@@ -178,27 +179,26 @@ Functiond6fb: ; d6fb (3:56fb)
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
; BUG: This routine is meant to make the HP bar move at
|
||||
; the same rate regardless of how many HP the Pokemon has.
|
||||
; In actuality, this causes Pokemon with more than 48 HP
|
||||
; to gain or lose HP at the rate of 1 HP per BGMap update
|
||||
; rather than 1 pixel on the HUD.
|
||||
; To fix, move the "ld a, e" above the "pop de".
|
||||
call ComputeHPBarPixels ; returns to e
|
||||
; This routine is buggy. The result from ComputeHPBarPixels is stored
|
||||
; in e. However, the pop de opcode deletes this result before it is even
|
||||
; used. The game then proceeds as though it never deleted that output.
|
||||
; To fix, uncomment the line below.
|
||||
call ComputeHPBarPixels
|
||||
; ld a, e
|
||||
pop bc
|
||||
pop de ; overloads e
|
||||
pop de
|
||||
pop hl
|
||||
ld a, e ; expects result from ComputeHPBarPixels
|
||||
ld a, e ; Comment or delete this line to fix the above bug.
|
||||
ld hl, wCurHPBarPixels
|
||||
cp [hl]
|
||||
jr z, Functiond6fb
|
||||
jr z, .loop
|
||||
ld [hl], a
|
||||
and a
|
||||
ret
|
||||
|
||||
Functiond736: ; d736 (3:5736)
|
||||
call Functiond78a
|
||||
ld d, $6
|
||||
ShortHPBarAnim_UpdateTiles:
|
||||
call HPBarAnim_UpdateHPRemaining
|
||||
ld d, HP_BAR_LENGTH
|
||||
ld a, [wWhichHPBar]
|
||||
and $1
|
||||
ld b, a
|
||||
@@ -206,13 +206,13 @@ Functiond736: ; d736 (3:5736)
|
||||
ld e, a
|
||||
ld c, a
|
||||
push de
|
||||
call Functiond777
|
||||
call HPBarAnim_RedrawHPBar
|
||||
pop de
|
||||
call Functiond7ba
|
||||
call HPBarAnim_PaletteUpdate
|
||||
ret
|
||||
|
||||
Functiond74f: ; d74f (3:574f)
|
||||
call Functiond78a
|
||||
LongHPBarAnim_UpdateTiles:
|
||||
call HPBarAnim_UpdateHPRemaining
|
||||
ld a, [wCurHPAnimOldHP]
|
||||
ld c, a
|
||||
ld a, [wCurHPAnimOldHP + 1]
|
||||
@@ -223,45 +223,45 @@ Functiond74f: ; d74f (3:574f)
|
||||
ld d, a
|
||||
call ComputeHPBarPixels
|
||||
ld c, e
|
||||
ld d, $6
|
||||
ld d, HP_BAR_LENGTH
|
||||
ld a, [wWhichHPBar]
|
||||
and $1
|
||||
ld b, a
|
||||
push de
|
||||
call Functiond777
|
||||
call HPBarAnim_RedrawHPBar
|
||||
pop de
|
||||
call Functiond7ba
|
||||
call HPBarAnim_PaletteUpdate
|
||||
ret
|
||||
|
||||
Functiond777: ; d777 (3:5777)
|
||||
HPBarAnim_RedrawHPBar:
|
||||
ld a, [wWhichHPBar]
|
||||
cp $2
|
||||
jr nz, .asm_d786
|
||||
ld a, $28
|
||||
jr nz, .skip
|
||||
ld a, 2 * SCREEN_WIDTH
|
||||
add l
|
||||
ld l, a
|
||||
ld a, $0
|
||||
ld a, 0
|
||||
adc h
|
||||
ld h, a
|
||||
.asm_d786
|
||||
.skip
|
||||
call DrawBattleHPBar
|
||||
ret
|
||||
|
||||
Functiond78a: ; d78a (3:578a)
|
||||
HPBarAnim_UpdateHPRemaining:
|
||||
ld a, [wWhichHPBar]
|
||||
and a
|
||||
ret z
|
||||
cp $1
|
||||
jr z, .asm_d798
|
||||
ld de, $16
|
||||
jr .asm_d79b
|
||||
jr z, .load_15
|
||||
ld de, SCREEN_WIDTH + 2
|
||||
jr .loaded_de
|
||||
|
||||
.asm_d798
|
||||
ld de, $15
|
||||
.asm_d79b
|
||||
.load_15
|
||||
ld de, SCREEN_WIDTH + 1
|
||||
.loaded_de
|
||||
push hl
|
||||
add hl, de
|
||||
ld a, $7f
|
||||
ld a, " "
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hld], a
|
||||
@@ -276,7 +276,7 @@ Functiond78a: ; d78a (3:578a)
|
||||
pop hl
|
||||
ret
|
||||
|
||||
Functiond7ba: ; d7ba (3:57ba)
|
||||
HPBarAnim_PaletteUpdate:
|
||||
ldh a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
@@ -284,45 +284,43 @@ Functiond7ba: ; d7ba (3:57ba)
|
||||
call SetHPPal
|
||||
ld a, [wCurHPAnimPal]
|
||||
ld c, a
|
||||
ld a, $2
|
||||
ld hl, $520b
|
||||
rst FarCall
|
||||
farcall ApplyHPBarPals
|
||||
ret
|
||||
|
||||
Functiond7cf: ; d7cf (3:57cf)
|
||||
HPBarAnim_BGMapUpdate:
|
||||
ldh a, [hCGB]
|
||||
and a
|
||||
jr nz, .asm_d7db
|
||||
jr nz, .cgb
|
||||
call DelayFrame
|
||||
call DelayFrame
|
||||
ret
|
||||
|
||||
.asm_d7db
|
||||
.cgb
|
||||
ld a, [wWhichHPBar]
|
||||
and a
|
||||
jr z, .asm_d82f
|
||||
jr z, .load_0
|
||||
cp $1
|
||||
jr z, .asm_d833
|
||||
jr z, .load_1
|
||||
ld a, [wCurPartyMon]
|
||||
cp $3
|
||||
jr nc, .asm_d7f0
|
||||
jr nc, .bottom_half_of_screen
|
||||
ld c, $0
|
||||
jr .asm_d7f2
|
||||
jr .got_third
|
||||
|
||||
.asm_d7f0
|
||||
.bottom_half_of_screen
|
||||
ld c, $1
|
||||
.asm_d7f2
|
||||
.got_third
|
||||
push af
|
||||
cp $2
|
||||
jr z, .asm_d805
|
||||
jr z, .skip_delay
|
||||
cp $5
|
||||
jr z, .asm_d805
|
||||
jr z, .skip_delay
|
||||
ld a, $2
|
||||
ldh [hBGMapMode], a
|
||||
ld a, c
|
||||
ldh [hBGMapThird], a
|
||||
call DelayFrame
|
||||
.asm_d805
|
||||
.skip_delay
|
||||
ld a, $1
|
||||
ldh [hBGMapMode], a
|
||||
ld a, c
|
||||
@@ -330,12 +328,12 @@ Functiond7cf: ; d7cf (3:57cf)
|
||||
call DelayFrame
|
||||
pop af
|
||||
cp $2
|
||||
jr z, .asm_d819
|
||||
jr z, .two_frames
|
||||
cp $5
|
||||
jr z, .asm_d819
|
||||
jr z, .two_frames
|
||||
ret
|
||||
|
||||
.asm_d819
|
||||
.two_frames
|
||||
inc c
|
||||
ld a, $2
|
||||
ldh [hBGMapMode], a
|
||||
@@ -349,73 +347,78 @@ Functiond7cf: ; d7cf (3:57cf)
|
||||
call DelayFrame
|
||||
ret
|
||||
|
||||
.asm_d82f
|
||||
.load_0
|
||||
ld c, $0
|
||||
jr .asm_d835
|
||||
jr .finish
|
||||
|
||||
.asm_d833
|
||||
.load_1
|
||||
ld c, $1
|
||||
.asm_d835
|
||||
.finish
|
||||
call DelayFrame
|
||||
ld a, c
|
||||
ldh [hBGMapThird], a
|
||||
call DelayFrame
|
||||
ret
|
||||
|
||||
Functiond83f: ; d83f (3:583f)
|
||||
ShortHPBar_CalcPixelFrame:
|
||||
ld a, [wCurHPAnimMaxHP]
|
||||
ld c, a
|
||||
ld b, $0
|
||||
ld hl, $0
|
||||
ld b, 0
|
||||
ld hl, 0
|
||||
ld a, [wCurHPBarPixels]
|
||||
cp HP_BAR_MAX_PIXELS
|
||||
jr nc, .asm_d88b
|
||||
cp HP_BAR_LENGTH_PX
|
||||
jr nc, .return_max
|
||||
and a
|
||||
jr z, .asm_d886
|
||||
jr z, .return_zero
|
||||
call AddNTimes
|
||||
ld b, $0
|
||||
.asm_d857
|
||||
|
||||
ld b, 0
|
||||
; This routine is buggy. If [wCurHPAnimMaxHP] * [wCurHPBarPixels] is
|
||||
; divisible by HP_BAR_LENGTH_PX, the loop runs one extra time.
|
||||
; To fix, uncomment the line below.
|
||||
.loop
|
||||
ld a, l
|
||||
sub HP_BAR_MAX_PIXELS % $100
|
||||
sub HP_BAR_LENGTH_PX
|
||||
ld l, a
|
||||
ld a, h
|
||||
sbc HP_BAR_MAX_PIXELS / $100
|
||||
sbc $0
|
||||
ld h, a
|
||||
jr c, .asm_d864
|
||||
; jr z, .done
|
||||
jr c, .done
|
||||
inc b
|
||||
jr .asm_d857
|
||||
jr .loop
|
||||
|
||||
.asm_d864
|
||||
.done
|
||||
push bc
|
||||
ld bc, $80
|
||||
add hl, bc
|
||||
pop bc
|
||||
ld a, l
|
||||
sub HP_BAR_MAX_PIXELS % $100
|
||||
sub HP_BAR_LENGTH_PX
|
||||
ld l, a
|
||||
ld a, h
|
||||
sbc HP_BAR_MAX_PIXELS / $100
|
||||
sbc $0
|
||||
ld h, a
|
||||
jr c, .asm_d875
|
||||
jr c, .no_carry
|
||||
inc b
|
||||
.asm_d875
|
||||
.no_carry
|
||||
ld a, [wCurHPAnimLowHP]
|
||||
cp b
|
||||
jr nc, .asm_d882
|
||||
jr nc, .finish
|
||||
ld a, [wCurHPAnimHighHP]
|
||||
cp b
|
||||
jr c, .asm_d882
|
||||
jr c, .finish
|
||||
ld a, b
|
||||
.asm_d882
|
||||
.finish
|
||||
ld [wCurHPAnimOldHP], a
|
||||
ret
|
||||
|
||||
.asm_d886
|
||||
.return_zero
|
||||
xor a
|
||||
ld [wCurHPAnimOldHP], a
|
||||
ret
|
||||
|
||||
.asm_d88b
|
||||
.return_max
|
||||
ld a, [wCurHPAnimMaxHP]
|
||||
ld [wCurHPAnimOldHP], a
|
||||
ret
|
||||
|
||||
45
engine/battle_anims/pokeball_wobble.asm
Normal file
45
engine/battle_anims/pokeball_wobble.asm
Normal file
@@ -0,0 +1,45 @@
|
||||
GetPokeBallWobble:
|
||||
; Returns whether a Poke Ball will wobble in the catch animation.
|
||||
; Whether a Pokemon is caught is determined beforehand.
|
||||
|
||||
ld a, [wBuffer2]
|
||||
inc a
|
||||
ld [wBuffer2], a
|
||||
|
||||
; Wobble up to 3 times.
|
||||
cp 3 + 1
|
||||
jr z, .finished
|
||||
|
||||
ld a, [wWildMon]
|
||||
and a
|
||||
ld c, 0 ; next
|
||||
ret nz
|
||||
|
||||
ld hl, WobbleProbabilities
|
||||
ld a, [wBuffer1]
|
||||
ld b, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr nc, .checkwobble
|
||||
inc hl
|
||||
jr .loop
|
||||
|
||||
.checkwobble
|
||||
ld b, [hl]
|
||||
call Random
|
||||
cp b
|
||||
ld c, 0 ; next
|
||||
ret c
|
||||
ld c, 2 ; escaped
|
||||
ret
|
||||
|
||||
.finished
|
||||
ld a, [wWildMon]
|
||||
and a
|
||||
ld c, 1 ; caught
|
||||
ret nz
|
||||
ld c, 2 ; escaped
|
||||
ret
|
||||
|
||||
INCLUDE "data/battle/wobble_probabilities.asm"
|
||||
@@ -1,4 +1,4 @@
|
||||
EngineFlagAction:: ; c01b
|
||||
EngineFlagAction::
|
||||
; Do action b on engine flag de
|
||||
;
|
||||
; b = 0: reset flag
|
||||
@@ -7,22 +7,21 @@ EngineFlagAction:: ; c01b
|
||||
;
|
||||
; Setting/resetting does not return a result.
|
||||
|
||||
|
||||
; 16-bit flag ids are considered invalid, but it's nice
|
||||
; to know that the infrastructure is there.
|
||||
|
||||
ld a, d
|
||||
cp 0
|
||||
cp HIGH(NUM_ENGINE_FLAGS)
|
||||
jr z, .ceiling
|
||||
jr c, .read ; cp 0 can't set carry!
|
||||
jr .invalid
|
||||
|
||||
; There are only $a2 engine flags, so
|
||||
; There are only NUM_ENGINE_FLAGS engine flags, so
|
||||
; anything beyond that is invalid too.
|
||||
|
||||
.ceiling
|
||||
ld a, e
|
||||
cp NUM_ENGINE_FLAGS
|
||||
cp LOW(NUM_ENGINE_FLAGS)
|
||||
jr c, .read
|
||||
|
||||
; Invalid flags are treated as flag 00.
|
||||
|
||||
@@ -1577,7 +1577,7 @@ MovementData_CastRod:
|
||||
|
||||
PutTheRodAway:
|
||||
hlcoord 1, 14
|
||||
lb bc, $3, $12
|
||||
lb bc, 3, 18
|
||||
call ClearBox
|
||||
call WaitBGMap
|
||||
xor a
|
||||
|
||||
@@ -90,9 +90,7 @@ NameRival:
|
||||
.default
|
||||
IF DEF(_GOLD)
|
||||
db "SILVER@"
|
||||
ENDC
|
||||
|
||||
IF DEF(_SILVER)
|
||||
ELIF DEF(_SILVER)
|
||||
db "GOLD@"
|
||||
ENDC
|
||||
|
||||
@@ -317,6 +315,7 @@ CheckSwarmFlag::
|
||||
ret
|
||||
|
||||
CheckPokerus:
|
||||
; Check if a monster in your party has Pokerus
|
||||
farcall _CheckPokerus
|
||||
jp ScriptReturnCarry
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,235 +1,244 @@
|
||||
_ReceiveItem:: ; d1e2 (3:51e2)
|
||||
call CheckBagOrPC
|
||||
jp nz, PutItemInPocketOrPC
|
||||
_ReceiveItem::
|
||||
call DoesHLEqualNumItems
|
||||
jp nz, PutItemInPocket
|
||||
push hl
|
||||
call CheckItemPocket
|
||||
pop de
|
||||
ld a, [wItemAttributeParamBuffer]
|
||||
dec a
|
||||
ld hl, .Jumptable
|
||||
ld hl, .Pockets
|
||||
rst JumpTable
|
||||
ret
|
||||
|
||||
.Jumptable
|
||||
dw ReceiveNormalItem
|
||||
dw ReceiveKeyItem
|
||||
dw ReceiveBall
|
||||
dw ReceiveTMHM
|
||||
.Pockets:
|
||||
; entries correspond to item types
|
||||
dw .Item
|
||||
dw .KeyItem
|
||||
dw .Ball
|
||||
dw .TMHM
|
||||
|
||||
ReceiveNormalItem:
|
||||
.Item:
|
||||
ld h, d
|
||||
ld l, e
|
||||
jp PutItemInPocketOrPC
|
||||
jp PutItemInPocket
|
||||
|
||||
ReceiveKeyItem:
|
||||
.KeyItem:
|
||||
ld h, d
|
||||
ld l, e
|
||||
jp PutItemInKeyItemPocket
|
||||
jp ReceiveKeyItem
|
||||
|
||||
ReceiveBall:
|
||||
.Ball:
|
||||
ld hl, wNumBalls
|
||||
jp PutItemInPocketOrPC
|
||||
jp PutItemInPocket
|
||||
|
||||
ReceiveTMHM:
|
||||
.TMHM:
|
||||
ld h, d
|
||||
ld l, e
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
call GetNumberedTMHM
|
||||
jp PutItemInTMPocket
|
||||
call GetTMHMNumber
|
||||
jp ReceiveTMHM
|
||||
|
||||
_TossItem:: ; d21a (3:521a)
|
||||
call CheckBagOrPC
|
||||
jr nz, remove_item_from_bag_or_pc
|
||||
_TossItem::
|
||||
call DoesHLEqualNumItems
|
||||
jr nz, .remove
|
||||
push hl
|
||||
call CheckItemPocket
|
||||
pop de
|
||||
ld a, [wItemAttributeParamBuffer]
|
||||
dec a
|
||||
ld hl, .Jumptable ; $522d
|
||||
ld hl, .Pockets
|
||||
rst JumpTable
|
||||
ret
|
||||
|
||||
.Jumptable
|
||||
dw RemoveNormalItem
|
||||
dw RemoveKeyItem
|
||||
dw RemoveBall
|
||||
dw RemoveTMHM
|
||||
.Pockets:
|
||||
; entries correspond to item types
|
||||
dw .Item
|
||||
dw .KeyItem
|
||||
dw .Ball
|
||||
dw .TMHM
|
||||
|
||||
RemoveBall:
|
||||
.Ball:
|
||||
ld hl, wNumBalls
|
||||
jp RemoveItemAndQuantity
|
||||
jp RemoveItemFromPocket
|
||||
|
||||
RemoveTMHM:
|
||||
.TMHM:
|
||||
ld h, d
|
||||
ld l, e
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
call GetNumberedTMHM
|
||||
jp RemoveTMorHM
|
||||
call GetTMHMNumber
|
||||
jp TossTMHM
|
||||
|
||||
RemoveKeyItem:
|
||||
.KeyItem:
|
||||
ld h, d
|
||||
ld l, e
|
||||
jp RemoveItemWithoutQuantity
|
||||
jp TossKeyItem
|
||||
|
||||
RemoveNormalItem:
|
||||
.Item:
|
||||
ld h, d
|
||||
ld l, e
|
||||
remove_item_from_bag_or_pc:
|
||||
jp RemoveItemAndQuantity
|
||||
|
||||
_CheckItem:: ; d251 (3:5251)
|
||||
call CheckBagOrPC
|
||||
jr nz, check_item_in_bag_or_pc
|
||||
.remove
|
||||
jp RemoveItemFromPocket
|
||||
|
||||
_CheckItem::
|
||||
call DoesHLEqualNumItems
|
||||
jr nz, .nope
|
||||
push hl
|
||||
call CheckItemPocket
|
||||
pop de
|
||||
ld a, [wItemAttributeParamBuffer]
|
||||
dec a
|
||||
ld hl, .Jumptable
|
||||
ld hl, .Pockets
|
||||
rst JumpTable
|
||||
ret
|
||||
|
||||
.Jumptable
|
||||
dw CheckNormalItem
|
||||
dw CheckKeyItem
|
||||
dw CheckBall
|
||||
dw CheckTMHM
|
||||
.Pockets:
|
||||
; entries correspond to item types
|
||||
dw .Item
|
||||
dw .KeyItem
|
||||
dw .Ball
|
||||
dw .TMHM
|
||||
|
||||
CheckBall:
|
||||
.Ball:
|
||||
ld hl, wNumBalls
|
||||
jp CheckItemWithQuantity
|
||||
jp CheckTheItem
|
||||
|
||||
CheckTMHM:
|
||||
.TMHM:
|
||||
ld h, d
|
||||
ld l, e
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
call GetNumberedTMHM
|
||||
jp CheckTMorHM
|
||||
call GetTMHMNumber
|
||||
jp CheckTMHM
|
||||
|
||||
CheckKeyItem:
|
||||
.KeyItem:
|
||||
ld h, d
|
||||
ld l, e
|
||||
jp CheckItemWithoutQuantity
|
||||
jp CheckKeyItems
|
||||
|
||||
CheckNormalItem:
|
||||
.Item:
|
||||
ld h, d
|
||||
ld l, e
|
||||
check_item_in_bag_or_pc:
|
||||
jp CheckItemWithQuantity
|
||||
|
||||
CheckBagOrPC: ; d288 (3:5288)
|
||||
.nope
|
||||
jp CheckTheItem
|
||||
|
||||
DoesHLEqualNumItems:
|
||||
ld a, l
|
||||
cp wNumItems % $100
|
||||
cp LOW(wNumItems)
|
||||
ret nz
|
||||
ld a, h
|
||||
cp wNumItems / $100
|
||||
cp HIGH(wNumItems)
|
||||
ret
|
||||
|
||||
GetPocketCapacity: ; d290 (3:5290)
|
||||
GetPocketCapacity:
|
||||
ld c, MAX_ITEMS
|
||||
ld a, e
|
||||
cp wNumItems % $100
|
||||
jr nz, .asm_d29b
|
||||
cp LOW(wNumItems)
|
||||
jr nz, .not_bag
|
||||
ld a, d
|
||||
cp wNumItems / $100
|
||||
cp HIGH(wNumItems)
|
||||
ret z
|
||||
.asm_d29b
|
||||
|
||||
.not_bag
|
||||
ld c, MAX_PC_ITEMS
|
||||
ld a, e
|
||||
cp LOW(wNumPCItems)
|
||||
jr nz, .asm_d2a6
|
||||
jr nz, .not_pc
|
||||
ld a, d
|
||||
cp HIGH(wNumPCItems)
|
||||
ret z
|
||||
.asm_d2a6
|
||||
|
||||
.not_pc
|
||||
ld c, MAX_BALLS
|
||||
ret
|
||||
|
||||
PutItemInPocketOrPC: ; d2a9 (3:52a9)
|
||||
PutItemInPocket:
|
||||
ld d, h
|
||||
ld e, l
|
||||
inc hl
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
ld b, $0
|
||||
.asm_d2b2
|
||||
ld b, 0
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp $ff
|
||||
jr z, .asm_d2ca
|
||||
cp -1
|
||||
jr z, .terminator
|
||||
cp c
|
||||
jr nz, .asm_d2c7
|
||||
ld a, $63
|
||||
jr nz, .next
|
||||
ld a, 99
|
||||
sub [hl]
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
cp b
|
||||
jr z, .asm_d2d3
|
||||
jr c, .asm_d2d3
|
||||
.asm_d2c7
|
||||
inc hl
|
||||
jr .asm_d2b2
|
||||
jr z, .ok
|
||||
jr c, .ok
|
||||
|
||||
.asm_d2ca
|
||||
.next
|
||||
inc hl
|
||||
jr .loop
|
||||
|
||||
.terminator
|
||||
call GetPocketCapacity
|
||||
ld a, [de]
|
||||
cp c
|
||||
jr c, .asm_d2d3
|
||||
jr c, .ok
|
||||
and a
|
||||
ret
|
||||
|
||||
.asm_d2d3
|
||||
.ok
|
||||
ld h, d
|
||||
ld l, e
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
ld [wItemQuantityBuffer], a
|
||||
.asm_d2df
|
||||
.loop2
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
cp $ff
|
||||
jr z, .asm_d2fc
|
||||
cp -1
|
||||
jr z, .terminator2
|
||||
cp c
|
||||
jr nz, .asm_d2df
|
||||
jr nz, .loop2
|
||||
ld a, [wItemQuantityBuffer]
|
||||
add [hl]
|
||||
cp $64
|
||||
jr nc, .asm_d2f3
|
||||
cp 100
|
||||
jr nc, .newstack
|
||||
ld [hl], a
|
||||
jr .asm_d30a
|
||||
jr .done
|
||||
|
||||
.asm_d2f3
|
||||
ld [hl], $63
|
||||
sub $63
|
||||
.newstack
|
||||
ld [hl], 99
|
||||
sub 99
|
||||
ld [wItemQuantityBuffer], a
|
||||
jr .asm_d2df
|
||||
jr .loop2
|
||||
|
||||
.asm_d2fc
|
||||
.terminator2
|
||||
dec hl
|
||||
ld a, [wCurItem]
|
||||
ld [hli], a
|
||||
ld a, [wItemQuantityBuffer]
|
||||
ld [hli], a
|
||||
ld [hl], $ff
|
||||
ld [hl], -1
|
||||
ld h, d
|
||||
ld l, e
|
||||
inc [hl]
|
||||
.asm_d30a
|
||||
|
||||
.done
|
||||
scf
|
||||
ret
|
||||
|
||||
RemoveItemAndQuantity: ; d30c (3:530c)
|
||||
RemoveItemFromPocket:
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld a, [wCurItemQuantity]
|
||||
cp c
|
||||
jr nc, .asm_d325
|
||||
jr nc, .ok ; memory
|
||||
ld c, a
|
||||
ld b, $0
|
||||
add hl, bc
|
||||
@@ -237,202 +246,206 @@ RemoveItemAndQuantity: ; d30c (3:530c)
|
||||
ld a, [wCurItem]
|
||||
cp [hl]
|
||||
inc hl
|
||||
jr z, .asm_d334
|
||||
jr z, .skip
|
||||
ld h, d
|
||||
ld l, e
|
||||
inc hl
|
||||
.asm_d325
|
||||
|
||||
.ok
|
||||
ld a, [wCurItem]
|
||||
ld b, a
|
||||
.asm_d329
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z, .asm_d334
|
||||
cp $ff
|
||||
jr z, .asm_d354
|
||||
jr z, .skip
|
||||
cp -1
|
||||
jr z, .nope
|
||||
inc hl
|
||||
jr .asm_d329
|
||||
jr .loop
|
||||
|
||||
.asm_d334
|
||||
.skip
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
sub b
|
||||
jr c, .asm_d354
|
||||
jr c, .nope
|
||||
ld [hl], a
|
||||
ld [wItemQuantityBuffer], a
|
||||
and a
|
||||
jr nz, .asm_d352
|
||||
jr nz, .yup
|
||||
dec hl
|
||||
ld b, h
|
||||
ld c, l
|
||||
inc hl
|
||||
inc hl
|
||||
.asm_d348
|
||||
.loop2
|
||||
ld a, [hli]
|
||||
ld [bc], a
|
||||
inc bc
|
||||
cp $ff
|
||||
jr nz, .asm_d348
|
||||
cp -1
|
||||
jr nz, .loop2
|
||||
ld h, d
|
||||
ld l, e
|
||||
dec [hl]
|
||||
.asm_d352
|
||||
|
||||
.yup
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d354
|
||||
.nope
|
||||
and a
|
||||
ret
|
||||
|
||||
CheckItemWithQuantity: ; d356 (3:5356)
|
||||
CheckTheItem:
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
.asm_d35a
|
||||
.loop
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
cp $ff
|
||||
jr z, .asm_d365
|
||||
cp -1
|
||||
jr z, .done
|
||||
cp c
|
||||
jr nz, .asm_d35a
|
||||
jr nz, .loop
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d365
|
||||
.done
|
||||
and a
|
||||
ret
|
||||
|
||||
PutItemInKeyItemPocket: ; d367 (3:5367)
|
||||
ld hl, wItemsEnd
|
||||
ReceiveKeyItem:
|
||||
ld hl, wNumKeyItems
|
||||
ld a, [hli]
|
||||
cp $19
|
||||
jr nc, .asm_d37f
|
||||
cp MAX_KEY_ITEMS
|
||||
jr nc, .nope
|
||||
ld c, a
|
||||
ld b, $0
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld a, [wCurItem]
|
||||
ld [hli], a
|
||||
ld [hl], $ff
|
||||
ld [hl], -1
|
||||
ld hl, wNumKeyItems
|
||||
inc [hl]
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d37f
|
||||
.nope
|
||||
and a
|
||||
ret
|
||||
|
||||
RemoveItemWithoutQuantity: ; d381 (3:5381)
|
||||
TossKeyItem:
|
||||
ld a, [wCurItemQuantity]
|
||||
ld e, a
|
||||
ld d, $0
|
||||
ld hl, wItemsEnd
|
||||
ld d, 0
|
||||
ld hl, wNumKeyItems
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nc, .asm_d394
|
||||
call FindAndTossKeyItem
|
||||
jr nc, .ok
|
||||
call .Toss
|
||||
ret nc
|
||||
jr .asm_d397
|
||||
jr .ok2
|
||||
|
||||
.asm_d394
|
||||
.ok
|
||||
dec [hl]
|
||||
inc hl
|
||||
add hl, de
|
||||
.asm_d397
|
||||
|
||||
.ok2
|
||||
ld d, h
|
||||
ld e, l
|
||||
inc hl
|
||||
.asm_d39a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
cp $ff
|
||||
jr nz, .asm_d39a
|
||||
cp -1
|
||||
jr nz, .loop
|
||||
scf
|
||||
ret
|
||||
|
||||
FindAndTossKeyItem: ; d3a3 (3:53a3)
|
||||
ld hl, wItemsEnd
|
||||
.Toss:
|
||||
ld hl, wNumKeyItems
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
.asm_d3aa
|
||||
.loop3
|
||||
inc hl
|
||||
ld a, [hl]
|
||||
cp c
|
||||
jr z, .asm_d3b5
|
||||
cp $ff
|
||||
jr nz, .asm_d3aa
|
||||
jr z, .ok3
|
||||
cp -1
|
||||
jr nz, .loop3
|
||||
xor a
|
||||
ret
|
||||
|
||||
.asm_d3b5
|
||||
.ok3
|
||||
ld a, [wNumKeyItems]
|
||||
dec a
|
||||
ld [wNumKeyItems], a
|
||||
scf
|
||||
ret
|
||||
|
||||
CheckItemWithoutQuantity: ; d3be (3:53be)
|
||||
CheckKeyItems:
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
ld hl, wKeyItems
|
||||
.asm_d3c5
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp c
|
||||
jr z, .asm_d3cf
|
||||
cp $ff
|
||||
jr nz, .asm_d3c5
|
||||
jr z, .done
|
||||
cp -1
|
||||
jr nz, .loop
|
||||
and a
|
||||
ret
|
||||
|
||||
.asm_d3cf
|
||||
.done
|
||||
scf
|
||||
ret
|
||||
|
||||
PutItemInTMPocket: ; d3d1 (3:53d1)
|
||||
ReceiveTMHM:
|
||||
dec c
|
||||
ld b, $0
|
||||
ld b, 0
|
||||
ld hl, wTMsHMs
|
||||
add hl, bc
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
add [hl]
|
||||
cp $64
|
||||
jr nc, .asm_d3e3
|
||||
cp 100
|
||||
jr nc, .toomany
|
||||
ld [hl], a
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d3e3
|
||||
.toomany
|
||||
and a
|
||||
ret
|
||||
|
||||
RemoveTMorHM: ; d3e5 (3:53e5)
|
||||
TossTMHM:
|
||||
dec c
|
||||
ld b, $0
|
||||
ld b, 0
|
||||
ld hl, wTMsHMs
|
||||
add hl, bc
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
sub b
|
||||
jr c, .asm_d406
|
||||
jr c, .nope
|
||||
ld [hl], a
|
||||
ld [wItemQuantityBuffer], a
|
||||
jr nz, .asm_d404
|
||||
jr nz, .yup
|
||||
ld a, [wTMHMPocketScrollPosition]
|
||||
and a
|
||||
jr z, .asm_d404
|
||||
jr z, .yup
|
||||
dec a
|
||||
ld [wTMHMPocketScrollPosition], a
|
||||
.asm_d404
|
||||
|
||||
.yup
|
||||
scf
|
||||
ret
|
||||
|
||||
.asm_d406
|
||||
.nope
|
||||
and a
|
||||
ret
|
||||
|
||||
CheckTMorHM: ; d408 (3:5408)
|
||||
CheckTMHM:
|
||||
dec c
|
||||
ld b, $0
|
||||
ld hl, wTMsHMs
|
||||
@@ -443,107 +456,124 @@ CheckTMorHM: ; d408 (3:5408)
|
||||
scf
|
||||
ret
|
||||
|
||||
GetNumberedTMHM:: ; d414 (3:5414)
|
||||
GetTMHMNumber::
|
||||
; Return the number of a TM/HM by item id c.
|
||||
ld a, c
|
||||
cp ITEM_C3
|
||||
jr c, .asm_d41f
|
||||
cp ITEM_DC
|
||||
jr c, .asm_d41e
|
||||
; Skip any dummy items.
|
||||
cp ITEM_C3 ; TM04-05
|
||||
jr c, .done
|
||||
cp ITEM_DC ; TM28-29
|
||||
jr c, .skip
|
||||
dec a
|
||||
.asm_d41e
|
||||
.skip
|
||||
dec a
|
||||
.asm_d41f
|
||||
sub $bf
|
||||
.done
|
||||
sub TM01
|
||||
inc a
|
||||
ld c, a
|
||||
ret
|
||||
|
||||
GetNumberedTM:
|
||||
GetNumberedTMHM:
|
||||
; Return the item id of a TM/HM by number c.
|
||||
ld a, c
|
||||
; Skip any gaps.
|
||||
cp ITEM_C3 - (TM01 - 1)
|
||||
jr c, .asm_d42f
|
||||
jr c, .done
|
||||
cp ITEM_DC - (TM01 - 1) - 1
|
||||
jr c, .asm_d42e
|
||||
jr c, .skip_one
|
||||
.skip_two
|
||||
inc a
|
||||
.asm_d42e
|
||||
.skip_one
|
||||
inc a
|
||||
.asm_d42f
|
||||
.done
|
||||
add TM01
|
||||
dec a
|
||||
ld c, a
|
||||
ret
|
||||
|
||||
_CheckTossableItem:: ; d434 (3:5434)
|
||||
ld a, $4
|
||||
_CheckTossableItem::
|
||||
; Return 1 in wItemAttributeParamBuffer and carry if wCurItem can't be removed from the bag.
|
||||
ld a, ITEMATTR_PERMISSIONS
|
||||
call GetItemAttr
|
||||
bit 7, a
|
||||
bit CANT_TOSS_F, a
|
||||
jr nz, ItemAttr_ReturnCarry
|
||||
and a
|
||||
ret
|
||||
|
||||
CheckSelectableItem:
|
||||
ld a, $4
|
||||
; Return 1 in wItemAttributeParamBuffer and carry if wCurItem can't be selected.
|
||||
ld a, ITEMATTR_PERMISSIONS
|
||||
call GetItemAttr
|
||||
bit 6, a
|
||||
bit CANT_SELECT_F, a
|
||||
jr nz, ItemAttr_ReturnCarry
|
||||
and a
|
||||
ret
|
||||
|
||||
CheckItemPocket::
|
||||
ld a, $5
|
||||
; Return the pocket for wCurItem in wItemAttributeParamBuffer.
|
||||
ld a, ITEMATTR_POCKET
|
||||
call GetItemAttr
|
||||
and $f
|
||||
ld [wItemAttributeParamBuffer], a
|
||||
ret
|
||||
|
||||
CheckItemContext:
|
||||
ld a, $6
|
||||
; Return the context for wCurItem in wItemAttributeParamBuffer.
|
||||
ld a, ITEMATTR_HELP
|
||||
call GetItemAttr
|
||||
and $f
|
||||
ld [wItemAttributeParamBuffer], a
|
||||
ret
|
||||
|
||||
CheckItemMenu:
|
||||
ld a, $6
|
||||
; Return the menu for wCurItem in wItemAttributeParamBuffer.
|
||||
ld a, ITEMATTR_HELP
|
||||
call GetItemAttr
|
||||
swap a
|
||||
and $f
|
||||
ld [wItemAttributeParamBuffer], a
|
||||
ret
|
||||
|
||||
GetItemAttr: ; d46d (3:546d)
|
||||
GetItemAttr:
|
||||
; Get attribute a of wCurItem.
|
||||
|
||||
push hl
|
||||
push bc
|
||||
|
||||
ld hl, ItemAttributes
|
||||
ld c, a
|
||||
ld b, $0
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
|
||||
xor a
|
||||
ld [wItemAttributeParamBuffer], a
|
||||
|
||||
ld a, [wCurItem]
|
||||
dec a
|
||||
ld c, a
|
||||
ld a, $7
|
||||
ld a, ITEMATTR_STRUCT_LENGTH
|
||||
call AddNTimes
|
||||
ld a, BANK(ItemAttributes)
|
||||
call GetFarByte
|
||||
|
||||
pop bc
|
||||
pop hl
|
||||
ret
|
||||
|
||||
ItemAttr_ReturnCarry:
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wItemAttributeParamBuffer], a
|
||||
scf
|
||||
ret
|
||||
|
||||
GetItemPrice:
|
||||
; Return the price of wCurItem in de.
|
||||
push hl
|
||||
push bc
|
||||
ld a, $0
|
||||
ld a, ITEMATTR_PRICE
|
||||
call GetItemAttr
|
||||
ld e, a
|
||||
ld a, $1
|
||||
ld a, ITEMATTR_PRICE_HI
|
||||
call GetItemAttr
|
||||
ld d, a
|
||||
pop bc
|
||||
|
||||
@@ -23,7 +23,7 @@ TMHMPocket:
|
||||
.ConvertItemToTMHMNumber:
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
callfar GetNumberedTM
|
||||
callfar GetNumberedTMHM
|
||||
ld a, c
|
||||
ld [wCurItem], a
|
||||
ret
|
||||
@@ -31,7 +31,7 @@ TMHMPocket:
|
||||
ConvertCurItemIntoCurTMHM:
|
||||
ld a, [wCurItem]
|
||||
ld c, a
|
||||
callfar GetNumberedTMHM
|
||||
callfar GetTMHMNumber
|
||||
ld a, c
|
||||
ld [wTempTMHM], a
|
||||
ret
|
||||
|
||||
@@ -120,4 +120,3 @@ _GetVarAction::
|
||||
ld a, [wBattleResult]
|
||||
and $ff ^ BATTLERESULT_BITMASK
|
||||
jp .loadstringbuffer2
|
||||
|
||||
|
||||
@@ -1,54 +1,62 @@
|
||||
HealParty: ; c69d (3:469d)
|
||||
HealParty:
|
||||
xor a
|
||||
ld [wCurPartyMon], a
|
||||
ld hl, wPartySpecies
|
||||
.asm_c6a4
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
jr z, .asm_c6bb
|
||||
jr z, .done
|
||||
cp EGG
|
||||
jr z, .asm_c6b2
|
||||
jr z, .next
|
||||
|
||||
push hl
|
||||
call HealPartyMon
|
||||
pop hl
|
||||
.asm_c6b2
|
||||
|
||||
.next
|
||||
ld a, [wCurPartyMon]
|
||||
inc a
|
||||
ld [wCurPartyMon], a
|
||||
jr .asm_c6a4
|
||||
jr .loop
|
||||
|
||||
.asm_c6bb
|
||||
.done
|
||||
ret
|
||||
|
||||
HealPartyMon:
|
||||
ld a, $0
|
||||
ld a, MON_SPECIES
|
||||
call GetPartyParamLocation
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, $20
|
||||
|
||||
ld hl, MON_STATUS
|
||||
add hl, de
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld hl, $24
|
||||
|
||||
ld hl, MON_MAXHP
|
||||
add hl, de
|
||||
|
||||
; bc = MON_HP
|
||||
ld b, h
|
||||
ld c, l
|
||||
dec bc
|
||||
dec bc
|
||||
|
||||
ld a, [hli]
|
||||
ld [bc], a
|
||||
inc bc
|
||||
ld a, [hl]
|
||||
ld [bc], a
|
||||
farcall Functionf900
|
||||
|
||||
farcall RestoreAllPP
|
||||
ret
|
||||
|
||||
ComputeHPBarPixels:
|
||||
; e = bc * (6 * 8) / de
|
||||
ld a, b
|
||||
or c
|
||||
jr z, .asm_c722
|
||||
jr z, .zero
|
||||
push hl
|
||||
xor a
|
||||
ldh [hMultiplicand + 0], a
|
||||
@@ -62,7 +70,7 @@ ComputeHPBarPixels:
|
||||
; We need de to be under 256 because hDivisor is only 1 byte.
|
||||
ld a, d
|
||||
and a
|
||||
jr z, .asm_c711
|
||||
jr z, .divide
|
||||
; divide de and hProduct by 4
|
||||
srl d
|
||||
rr e
|
||||
@@ -78,25 +86,25 @@ ComputeHPBarPixels:
|
||||
ldh [hDividend + 3], a
|
||||
ld a, b
|
||||
ldh [hDividend + 2], a
|
||||
.asm_c711
|
||||
.divide
|
||||
ld a, e
|
||||
ldh [hDivisor], a
|
||||
ld b, $4
|
||||
ld b, 4
|
||||
call Divide
|
||||
ldh a, [hQuotient + 3]
|
||||
ld e, a
|
||||
pop hl
|
||||
and a
|
||||
ret nz
|
||||
ld e, $1
|
||||
ld e, 1
|
||||
ret
|
||||
|
||||
.asm_c722
|
||||
ld e, $0
|
||||
.zero
|
||||
ld e, 0
|
||||
ret
|
||||
|
||||
AnimateHPBar: ; c725 (3:4725)
|
||||
AnimateHPBar:
|
||||
call WaitBGMap
|
||||
call AnimateHPBar_
|
||||
call _AnimateHPBar
|
||||
call WaitBGMap
|
||||
ret
|
||||
|
||||
@@ -803,7 +803,7 @@ RetrieveMonFromDayCareLady:
|
||||
jp RetrieveBreedmon
|
||||
|
||||
RetrieveBreedmon:
|
||||
ld hl, wPokemonData
|
||||
ld hl, wPartyCount
|
||||
ld a, [hl]
|
||||
cp PARTY_LENGTH
|
||||
jr nz, .room_in_party
|
||||
@@ -1693,7 +1693,7 @@ GivePoke::
|
||||
call CopyBytes
|
||||
pop af
|
||||
and a
|
||||
jr z, .set_caught_data
|
||||
jr z, .wildmon
|
||||
pop de
|
||||
pop bc
|
||||
pop hl
|
||||
@@ -1750,8 +1750,8 @@ GivePoke::
|
||||
call CloseSRAM
|
||||
jr .skip_nickname
|
||||
|
||||
.set_caught_data
|
||||
callfar Functionc7cd0
|
||||
.wildmon
|
||||
callfar GiveANickname_YesNo
|
||||
pop de
|
||||
jr c, .skip_nickname
|
||||
call InitNickname
|
||||
|
||||
@@ -196,7 +196,7 @@ GetTMHMName::
|
||||
push de
|
||||
ld a, [wNamedObjectIndexBuffer]
|
||||
ld c, a
|
||||
callfar GetNumberedTMHM
|
||||
callfar GetTMHMNumber
|
||||
pop de
|
||||
|
||||
; HM numbers start from 51, not 1
|
||||
|
||||
@@ -64,7 +64,6 @@ ROMX $0e
|
||||
ROMX $0f
|
||||
"Battle Core"
|
||||
ROMX $10
|
||||
org $4000
|
||||
"bank10"
|
||||
ROMX $11
|
||||
org $4000
|
||||
|
||||
13
main.asm
13
main.asm
@@ -46,6 +46,7 @@ INCLUDE "engine/pokemon/breedmon_level_growth.asm"
|
||||
INCLUDE "engine/pokemon/search2.asm"
|
||||
INCLUDE "engine/events/bug_contest/caught_mon.asm"
|
||||
INCLUDE "engine/items/item_effects.asm"
|
||||
INCLUDE "engine/battle_anims/pokeball_wobble.asm"
|
||||
INCLUDE "engine/pokemon/knows_move.asm"
|
||||
|
||||
|
||||
@@ -416,13 +417,13 @@ DoPoisonStep::
|
||||
dr $50610, $506f2
|
||||
SweetScentFromMenu::
|
||||
dr $506f2, $50763
|
||||
SquirtbottleFunction::
|
||||
_Squirtbottle::
|
||||
dr $50763, $507ac
|
||||
CardKeyFunction::
|
||||
_CardKey::
|
||||
dr $507ac, $507e7
|
||||
BasementKeyFunction::
|
||||
_BasementKey::
|
||||
dr $507e7, $50819
|
||||
SacredAshFunction::
|
||||
_SacredAsh::
|
||||
dr $50819, $5087d
|
||||
CopyMonToTempMon::
|
||||
dr $5087d, $50940
|
||||
@@ -626,7 +627,7 @@ _TownMap::
|
||||
dr $9188a, $919c1
|
||||
PlayRadio::
|
||||
dr $919c1, $91a4f
|
||||
TownMap_::
|
||||
PokegearMap::
|
||||
dr $91a4f, $91a61
|
||||
_FlyMap::
|
||||
dr $91a61, $91c7f
|
||||
@@ -679,7 +680,7 @@ PrintTodaysLuckyNumber::
|
||||
dr $c7bad, $c7bbf
|
||||
CheckPartyFullAfterContest::
|
||||
dr $c7bbf, $c7cd0
|
||||
Functionc7cd0::
|
||||
GiveANickname_YesNo::
|
||||
dr $c7cd0, $c7cde
|
||||
|
||||
|
||||
|
||||
6
wram.asm
6
wram.asm
@@ -1740,11 +1740,11 @@ wd151::
|
||||
|
||||
wFailedToFlee:: db ; d152
|
||||
wNumFleeAttempts:: db ; d153
|
||||
wd154:: ds 1 ; d154
|
||||
wROMBankBackup:: ds 1 ; d155
|
||||
wMonTriedToEvolve:: db ; d154
|
||||
wROMBankBackup:: db ; d155
|
||||
wFarByte::
|
||||
wTempBank:: db ; d156
|
||||
wTimeOfDay:: ds 1 ; d157
|
||||
wTimeOfDay:: db ; d157
|
||||
wd158:: ds 1 ; d158
|
||||
|
||||
wMapStatus:: db ; d159
|
||||
|
||||
Reference in New Issue
Block a user