mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-22 19:07:35 -05:00
1040 lines
15 KiB
NASM
Executable File
1040 lines
15 KiB
NASM
Executable File
ApplyPikachuMovementData_:: ; fd2a1 (3f:52a1)
|
|
ld a, b
|
|
ld [wPikachuMovementScriptBank], a
|
|
ld a, l
|
|
ld [wPikachuMovementScriptAddress], a
|
|
ld a, h
|
|
ld [wPikachuMovementScriptAddress + 1], a
|
|
call PikachuSwapSpriteStateData
|
|
.loop
|
|
call LoadPikachuMovementCommandData
|
|
jr nc, .done
|
|
call ExecutePikachuMovementCommand
|
|
jr .loop
|
|
|
|
.done
|
|
call PikachuSwapSpriteStateData
|
|
call DelayFrame
|
|
ret
|
|
|
|
PikachuSwapSpriteStateData:
|
|
ld a, [wUpdateSpritesEnabled]
|
|
push af
|
|
ld a, $ff
|
|
ld [wUpdateSpritesEnabled], a
|
|
push hl
|
|
push de
|
|
push bc
|
|
|
|
ld hl, wSpriteStateData1
|
|
ld de, wPikachuSpriteStateData1
|
|
ld c, $10
|
|
call SwapBytes3f
|
|
|
|
ld hl, wSpriteStateData2
|
|
ld de, wPikachuSpriteStateData2
|
|
ld c, $10
|
|
call SwapBytes3f
|
|
|
|
pop bc
|
|
pop de
|
|
pop hl
|
|
pop af
|
|
ld [wUpdateSpritesEnabled], a
|
|
ret
|
|
|
|
SwapBytes3f:
|
|
.loop
|
|
ld b, [hl]
|
|
ld a, [de]
|
|
ld [hli], a
|
|
ld a, b
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .loop
|
|
ret
|
|
|
|
LoadPikachuMovementCommandData:
|
|
call GetPikachuMovementScriptByte
|
|
cp $3f
|
|
ret z
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, Data_fd3b0
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [wPikaPicAnimPointer + 1], a
|
|
ld a, [hli]
|
|
cp $80
|
|
jr nz, .no_param
|
|
call GetPikachuMovementScriptByte
|
|
.no_param
|
|
ld [wPikaPicAnimPointer], a
|
|
ld a, [hli]
|
|
ld [wPikaPicAnimCurGraphicID], a
|
|
ld a, [hli]
|
|
cp $80
|
|
jr nz, .no_param2
|
|
call GetPikachuMovementScriptByte
|
|
.no_param2
|
|
ld [wPikaPicAnimPointerSetupFinished], a
|
|
xor a
|
|
ld [wPikaPicAnimTimer], a
|
|
scf
|
|
ret
|
|
|
|
ExecutePikachuMovementCommand:
|
|
xor a
|
|
ld [wd44d], a
|
|
ld [wd457], a
|
|
ld [wd458], a
|
|
ld a, [wPlayerGrassPriority]
|
|
push af
|
|
.loop
|
|
ld bc, wSpriteStateData1
|
|
ld a, [wPikaPicAnimPointer + 1]
|
|
ld hl, Jumptable_fd4ac
|
|
call .JumpTable
|
|
ld a, [wPikaPicAnimCurGraphicID]
|
|
ld hl, Jumptable_fd65c
|
|
call .JumpTable
|
|
call Func_fd36e
|
|
call Func_fd39d
|
|
call DelayFrame
|
|
call DelayFrame
|
|
ld hl, wd44d
|
|
bit 7, [hl]
|
|
jr z, .loop
|
|
pop af
|
|
ld [wPlayerGrassPriority], a
|
|
scf
|
|
ret
|
|
|
|
.JumpTable:
|
|
ld e, a
|
|
ld d, 0
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp [hl]
|
|
|
|
Func_fd36e:
|
|
ld hl, 2
|
|
add hl, bc
|
|
ld a, [wPikaPicAnimTimer + 1]
|
|
ld [hl], a
|
|
ld a, [wPikaSpriteY]
|
|
ld d, a
|
|
ld a, [wd456]
|
|
add d
|
|
ld hl, 4
|
|
add hl, bc
|
|
ld [hl], a
|
|
ld a, [wPikaPicAnimDelay]
|
|
ld d, a
|
|
ld a, [wPikaPicTextboxStartY]
|
|
add d
|
|
ld hl, 6
|
|
add hl, bc
|
|
ld [hl], a
|
|
ld hl, wd44d
|
|
bit 6, [hl]
|
|
ret z
|
|
ld hl, wPlayerGrassPriority - wSpriteStateData1
|
|
add hl, bc
|
|
ld [hl], 0
|
|
ret
|
|
|
|
Func_fd39d:
|
|
ld hl, wd44d
|
|
bit 6, [hl]
|
|
res 6, [hl]
|
|
ld hl, wd736
|
|
res 6, [hl]
|
|
ret z
|
|
set 6, [hl]
|
|
call Func_fd7f3
|
|
ret
|
|
|
|
Data_fd3b0:
|
|
db $01, $00, $00, $00 ; $00
|
|
db $03, $80, $01, $00 ; $01
|
|
db $04, $80, $01, $00 ; $02
|
|
db $05, $80, $01, $00 ; $03
|
|
db $06, $80, $01, $00 ; $04
|
|
db $07, $80, $01, $00 ; $05
|
|
db $08, $80, $01, $00 ; $06
|
|
db $09, $80, $01, $00 ; $07
|
|
db $0a, $80, $01, $00 ; $08
|
|
db $03, $80, $06, $00 ; $09
|
|
db $04, $80, $06, $00 ; $0a
|
|
db $05, $80, $06, $00 ; $0b
|
|
db $06, $80, $06, $00 ; $0c
|
|
db $07, $80, $06, $00 ; $0d
|
|
db $08, $80, $06, $00 ; $0e
|
|
db $09, $80, $06, $00 ; $0f
|
|
db $0a, $80, $06, $00 ; $10
|
|
db $03, $80, $03, $80 ; $11
|
|
db $04, $80, $03, $80 ; $12
|
|
db $05, $80, $03, $80 ; $13
|
|
db $06, $80, $03, $80 ; $14
|
|
db $07, $80, $03, $80 ; $15
|
|
db $08, $80, $03, $80 ; $16
|
|
db $09, $80, $03, $80 ; $17
|
|
db $0a, $80, $03, $80 ; $18
|
|
db $03, $80, $07, $80 ; $19
|
|
db $04, $80, $07, $80 ; $1a
|
|
db $05, $80, $07, $80 ; $1b
|
|
db $06, $80, $07, $80 ; $1c
|
|
db $0b, $27, $02, $00 ; $1d step down
|
|
db $0c, $27, $02, $00 ; $1e step up
|
|
db $0d, $27, $02, $00 ; $1f step left
|
|
db $0e, $27, $02, $00 ; $20 step right
|
|
db $0f, $27, $02, $00 ; $21
|
|
db $10, $27, $02, $00 ; $22
|
|
db $11, $27, $02, $00 ; $23
|
|
db $12, $27, $02, $00 ; $24
|
|
db $0b, $0f, $02, $00 ; $25
|
|
db $0c, $0f, $02, $00 ; $26
|
|
db $0d, $0f, $02, $00 ; $27
|
|
db $0e, $0f, $02, $00 ; $28
|
|
db $0f, $0f, $02, $00 ; $29
|
|
db $10, $0f, $02, $00 ; $2a
|
|
db $11, $0f, $02, $00 ; $2b
|
|
db $12, $0f, $02, $00 ; $2c
|
|
db $0b, $0f, $08, $17 ; $2d
|
|
db $0c, $0f, $08, $17 ; $2e
|
|
db $0d, $0f, $08, $17 ; $2f
|
|
db $0e, $0f, $08, $17 ; $30
|
|
db $0f, $0f, $08, $17 ; $31
|
|
db $10, $0f, $08, $17 ; $32
|
|
db $11, $0f, $08, $17 ; $33
|
|
db $12, $0f, $08, $17 ; $34
|
|
db $13, $0f, $06, $00 ; $35 look down
|
|
db $14, $0f, $06, $00 ; $36 look up
|
|
db $15, $0f, $06, $00 ; $37 look left
|
|
db $16, $0f, $06, $00 ; $38 look right
|
|
db $02, $80, $04, $00 ; $39
|
|
db $02, $80, $05, $00 ; $3a
|
|
db $02, $80, $03, $80 ; $3b
|
|
db $02, $80, $07, $80 ; $3c
|
|
db $02, $80, $09, $80 ; $3d
|
|
db $02, $80, $06, $00 ; $3e
|
|
|
|
Jumptable_fd4ac:
|
|
dw Func_fd4e5
|
|
dw Func_fd4e9
|
|
dw Func_fd504
|
|
dw Func_fd50c
|
|
dw Func_fd511
|
|
dw Func_fd518
|
|
dw Func_fd52c
|
|
dw Func_fd540
|
|
dw Func_fd553
|
|
dw Func_fd566
|
|
dw Func_fd579
|
|
dw Func_fd5b1
|
|
dw Func_fd5b5
|
|
dw Func_fd5b9
|
|
dw Func_fd5bd
|
|
dw Func_fd5c1
|
|
dw Func_fd5c5
|
|
dw Func_fd5c9
|
|
dw Func_fd5cd
|
|
dw Func_fd5ea
|
|
dw Func_fd5ee
|
|
dw Func_fd5f2
|
|
dw Func_fd5f6
|
|
dw Func_fd4e5
|
|
|
|
Func_fd4dc:
|
|
ld a, [wd44d]
|
|
set 7, a
|
|
ld [wd44d], a
|
|
ret
|
|
|
|
Func_fd4e5:
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
Func_fd4e9:
|
|
ld hl, 4
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wPikaSpriteY], a
|
|
ld hl, 6
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wPikaPicAnimDelay], a
|
|
xor a
|
|
ld [wd456], a
|
|
ld [wPikaPicTextboxStartY], a
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
Func_fd504:
|
|
call Func_fd775
|
|
ret nz
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
Func_fd50c:
|
|
call GetObjectFacing
|
|
jr asm_fd58c
|
|
|
|
Func_fd511:
|
|
call GetObjectFacing
|
|
xor %100
|
|
jr asm_fd58c
|
|
|
|
Func_fd518:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd523
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd523:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT
|
|
db SPRITE_FACING_UP, SPRITE_FACING_LEFT
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_UP
|
|
db $ff
|
|
|
|
Func_fd52c:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd537
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd537:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT
|
|
db SPRITE_FACING_UP, SPRITE_FACING_RIGHT
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_UP
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN
|
|
db $ff
|
|
|
|
Func_fd540:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd54b
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd54b:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_UP | $10
|
|
db SPRITE_FACING_UP, SPRITE_FACING_LEFT | $10
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN | $10
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_RIGHT | $10
|
|
|
|
Func_fd553:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd55e
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd55e:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_DOWN | $10
|
|
db SPRITE_FACING_UP, SPRITE_FACING_RIGHT | $10
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_LEFT | $10
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_UP | $10
|
|
|
|
Func_fd566:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd571
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd571:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT | $10
|
|
db SPRITE_FACING_UP, SPRITE_FACING_DOWN | $10
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_UP | $10
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_LEFT | $10
|
|
|
|
Func_fd579:
|
|
call GetObjectFacing
|
|
ld hl, Data_fd584
|
|
call Func_fd5a0
|
|
jr asm_fd58c
|
|
|
|
Data_fd584:
|
|
db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT | $10
|
|
db SPRITE_FACING_UP, SPRITE_FACING_UP | $10
|
|
db SPRITE_FACING_LEFT, SPRITE_FACING_RIGHT | $10
|
|
db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN | $10
|
|
|
|
asm_fd58c
|
|
rrca
|
|
rrca
|
|
and $7
|
|
ld e, a
|
|
call Func_fd784
|
|
ld d, a
|
|
call UpdatePikachuPosition
|
|
call Func_fd775
|
|
ret nz
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
Func_fd5a0:
|
|
push de
|
|
ld d, a
|
|
.asm_fd5a2
|
|
ld a, [hli]
|
|
cp d
|
|
jr z, .asm_fd5ad
|
|
inc hl
|
|
cp $ff
|
|
jr nz, .asm_fd5a2
|
|
pop de
|
|
ret
|
|
|
|
.asm_fd5ad
|
|
ld a, [hl]
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
Func_fd5b1:
|
|
ld a, SPRITE_FACING_DOWN >> 2
|
|
jr asm_fd5d1
|
|
|
|
Func_fd5b5:
|
|
ld a, SPRITE_FACING_UP >> 2
|
|
jr asm_fd5d1
|
|
|
|
Func_fd5b9:
|
|
ld a, SPRITE_FACING_LEFT >> 2
|
|
jr asm_fd5d1
|
|
|
|
Func_fd5bd:
|
|
ld a, SPRITE_FACING_RIGHT >> 2
|
|
jr asm_fd5d1
|
|
|
|
Func_fd5c1:
|
|
ld e, 4
|
|
jr asm_fd5d5
|
|
|
|
Func_fd5c5:
|
|
ld e, 5
|
|
jr asm_fd5d5
|
|
|
|
Func_fd5c9:
|
|
ld e, 6
|
|
jr asm_fd5d5
|
|
|
|
Func_fd5cd:
|
|
ld e, 7
|
|
jr asm_fd5d5
|
|
|
|
asm_fd5d1
|
|
ld e, a
|
|
call SetObjectFacing
|
|
asm_fd5d5
|
|
call Func_fd784
|
|
ld d, a
|
|
push de
|
|
call UpdatePikachuPosition
|
|
pop de
|
|
call Func_fd775
|
|
ret nz
|
|
ld a, e
|
|
call Func_fd7cb
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
Func_fd5ea:
|
|
ld a, SPRITE_FACING_DOWN >> 2
|
|
jr asm_fd5fa
|
|
|
|
Func_fd5ee:
|
|
ld a, SPRITE_FACING_UP >> 2
|
|
jr asm_fd5fa
|
|
|
|
Func_fd5f2:
|
|
ld a, SPRITE_FACING_LEFT >> 2
|
|
jr asm_fd5fa
|
|
|
|
Func_fd5f6:
|
|
ld a, SPRITE_FACING_RIGHT >> 2
|
|
jr asm_fd5fa
|
|
|
|
asm_fd5fa
|
|
call SetObjectFacing
|
|
call Func_fd4dc
|
|
ret
|
|
|
|
UpdatePikachuPosition:
|
|
push de
|
|
ld d, 0
|
|
ld hl, Jumptable_fd60f
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop de
|
|
ld a, d
|
|
jp [hl]
|
|
|
|
Jumptable_fd60f:
|
|
dw MovePikachuSpriteDown
|
|
dw MovePikachuSpriteUp
|
|
dw MovePikachuSpriteLeft
|
|
dw MovePikachuSpriteRight
|
|
dw MovePikachuSpriteDownLeft
|
|
dw MovePikachuSpriteDownRight
|
|
dw MovePikachuSpriteUpLeft
|
|
dw MovePikachuSpriteUpRight
|
|
|
|
MovePikachuSpriteDown:
|
|
ld d, 0
|
|
ld e, a
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteUp:
|
|
ld d, 0
|
|
cpl
|
|
inc a
|
|
ld e, a
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteLeft:
|
|
cpl
|
|
inc a
|
|
ld d, a
|
|
ld e, 0
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteRight:
|
|
ld d, a
|
|
ld e, 0
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteDownLeft:
|
|
ld e, a
|
|
cpl
|
|
inc a
|
|
ld d, a
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteDownRight:
|
|
ld e, a
|
|
ld d, a
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteUpLeft:
|
|
cpl
|
|
inc a
|
|
ld e, a
|
|
ld d, a
|
|
jr asm_fd64d
|
|
|
|
MovePikachuSpriteUpRight:
|
|
ld d, a
|
|
cpl
|
|
inc a
|
|
ld e, a
|
|
jr asm_fd64d
|
|
|
|
asm_fd64d
|
|
ld a, [wPikaPicAnimDelay]
|
|
add d
|
|
ld [wPikaPicAnimDelay], a
|
|
ld a, [wPikaSpriteY]
|
|
add e
|
|
ld [wPikaSpriteY], a
|
|
ret
|
|
|
|
Jumptable_fd65c:
|
|
dw Func_fd678
|
|
dw Func_fd6a3
|
|
dw Func_fd698
|
|
dw Func_fd6f4
|
|
dw Func_fd6ff
|
|
dw Func_fd718
|
|
dw Func_fd68c
|
|
dw Func_fd6c6
|
|
dw Func_fd6c0
|
|
dw Func_fd6e2
|
|
dw Func_fd68b
|
|
|
|
Func_fd672:
|
|
ld hl, wd44d
|
|
set 6, [hl]
|
|
ret
|
|
|
|
Func_fd678:
|
|
ld hl, 7
|
|
add hl, bc
|
|
xor a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
call Func_fd74a
|
|
ld d, a
|
|
call GetObjectFacing
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
ret
|
|
|
|
Func_fd68b:
|
|
ret
|
|
|
|
Func_fd68c:
|
|
call Func_fd74a
|
|
ld d, a
|
|
call Func_fd755
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
ret
|
|
|
|
Func_fd698:
|
|
call Func_fd74a
|
|
ld d, a
|
|
call GetObjectFacing
|
|
or d
|
|
ld d, a
|
|
jr asm_fd6ac
|
|
|
|
Func_fd6a3:
|
|
call Func_fd74a
|
|
ld d, a
|
|
call Func_fd755
|
|
or d
|
|
ld d, a
|
|
asm_fd6ac
|
|
ld hl, 8
|
|
add hl, bc
|
|
call Func_fd78e
|
|
jr nz, .asm_fd6b6
|
|
inc [hl]
|
|
.asm_fd6b6
|
|
ld a, [hl]
|
|
rrca
|
|
rrca
|
|
and 3
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
ret
|
|
|
|
Func_fd6c0:
|
|
call GetObjectFacing
|
|
ld d, a
|
|
jr asm_fd6ca
|
|
|
|
Func_fd6c6:
|
|
call Func_fd755
|
|
ld d, a
|
|
asm_fd6ca
|
|
call Func_fd74a
|
|
or d
|
|
ld d, a
|
|
call Func_fd736
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
call Func_fd79d
|
|
ld [wd456], a
|
|
and a
|
|
ret z
|
|
call Func_fd672
|
|
ret
|
|
|
|
Func_fd6e2:
|
|
call GetObjectFacing
|
|
ld d, a
|
|
call Func_fd74a
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
call Func_fd79d
|
|
ld [wd456], a
|
|
ret
|
|
|
|
Func_fd6f4:
|
|
ld a, [wPikaPicAnimPointerSetupFinished]
|
|
and $40
|
|
cp $40
|
|
jr z, Func_fd6ff
|
|
jr Func_fd718
|
|
|
|
Func_fd6ff:
|
|
call Func_fd755
|
|
ld d, a
|
|
call Func_fd78e
|
|
jr nz, .asm_fd710
|
|
ld hl, Data_fd731
|
|
.asm_fd70b
|
|
ld a, [hli]
|
|
cp d
|
|
jr nz, .asm_fd70b
|
|
ld d, [hl]
|
|
.asm_fd710
|
|
call Func_fd74a
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
ret
|
|
|
|
Func_fd718:
|
|
call Func_fd755
|
|
ld d, a
|
|
call Func_fd78e
|
|
jr nz, .asm_fd529
|
|
ld hl, Data_fd731End
|
|
.asm_fd524
|
|
ld a, [hld]
|
|
cp d
|
|
jr nz, .asm_fd524
|
|
ld d, [hl]
|
|
.asm_fd529
|
|
call Func_fd74a
|
|
or d
|
|
ld [wPikaPicAnimTimer + 1], a
|
|
ret
|
|
|
|
Data_fd731:
|
|
db SPRITE_FACING_DOWN
|
|
db SPRITE_FACING_LEFT
|
|
db SPRITE_FACING_UP
|
|
db SPRITE_FACING_RIGHT
|
|
db SPRITE_FACING_DOWN
|
|
Data_fd731End:
|
|
|
|
Func_fd736:
|
|
push hl
|
|
ld hl, 7
|
|
add hl, bc
|
|
ld a, [hl]
|
|
inc a
|
|
and $3
|
|
ld [hli], a
|
|
jr nz, .asm_fd747
|
|
ld a, [hl]
|
|
inc a
|
|
and $3
|
|
ld [hl], a
|
|
.asm_fd747
|
|
ld a, [hl]
|
|
pop hl
|
|
ret
|
|
|
|
Func_fd74a:
|
|
push hl
|
|
ld hl, wSpriteStateData2 - wSpriteStateData1 + 14
|
|
add hl, bc
|
|
ld a, [hl]
|
|
dec a
|
|
swap a
|
|
pop hl
|
|
ret
|
|
|
|
Func_fd755:
|
|
push hl
|
|
ld hl, 2
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $c
|
|
pop hl
|
|
ret
|
|
|
|
GetObjectFacing:
|
|
push hl
|
|
ld hl, 9
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $c
|
|
pop hl
|
|
ret
|
|
|
|
SetObjectFacing:
|
|
push hl
|
|
ld hl, 9
|
|
add hl, bc
|
|
add a
|
|
add a
|
|
and $c
|
|
ld [hl], a
|
|
pop hl
|
|
ret
|
|
|
|
Func_fd775:
|
|
ld hl, wd457
|
|
inc [hl]
|
|
ld a, [wPikaPicAnimPointer]
|
|
and $1f
|
|
inc a
|
|
cp [hl]
|
|
ret nz
|
|
ld [hl], 0
|
|
ret
|
|
|
|
Func_fd784:
|
|
ld a, [wPikaPicAnimPointer]
|
|
swap a
|
|
rrca
|
|
and $3
|
|
inc a
|
|
ret
|
|
|
|
Func_fd78e:
|
|
ld hl, wd458
|
|
inc [hl]
|
|
ld a, [wPikaPicAnimPointerSetupFinished]
|
|
and $f
|
|
inc a
|
|
cp [hl]
|
|
ret nz
|
|
ld [hl], 0
|
|
ret
|
|
|
|
Func_fd79d:
|
|
call Func_fd7b2
|
|
ld a, [wd458]
|
|
add e
|
|
ld [wd458], a
|
|
add $20
|
|
ld e, a
|
|
push hl
|
|
push bc
|
|
call Sine_e
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
Func_fd7b2:
|
|
ld a, [wPikaPicAnimPointerSetupFinished]
|
|
and $f
|
|
inc a
|
|
ld d, a
|
|
ld a, [wPikaPicAnimPointerSetupFinished]
|
|
swap a
|
|
and $7
|
|
ld e, a
|
|
ld a, 1
|
|
jr z, .asm_fd7c9
|
|
.asm_fd7c5
|
|
add a
|
|
dec e
|
|
jr nz, .asm_fd7c5
|
|
.asm_fd7c9
|
|
ld e, a
|
|
ret
|
|
|
|
Func_fd7cb:
|
|
push bc
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, Data_fd7e3
|
|
add hl, bc
|
|
add hl, bc
|
|
ld d, [hl]
|
|
inc hl
|
|
ld e, [hl]
|
|
pop bc
|
|
ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add e
|
|
ld [hli], a
|
|
ld a, [hl]
|
|
add d
|
|
ld [hl], a
|
|
ret
|
|
|
|
Data_fd7e3:
|
|
db 0, 1
|
|
db 0, -1
|
|
db -1, 0
|
|
db 1, 0
|
|
db -1, 1
|
|
db 1, 1
|
|
db -1, -1
|
|
db 1, -1
|
|
|
|
Func_fd7f3:
|
|
push bc
|
|
push de
|
|
push hl
|
|
|
|
ld bc, wOAMBuffer + 4 * 36
|
|
ld a, [wPikaSpriteY]
|
|
ld e, a
|
|
ld a, [wPikaPicAnimDelay]
|
|
ld d, a
|
|
ld hl, Data_fd80b
|
|
call Func_fd814
|
|
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
Data_fd80b:
|
|
db $02
|
|
db $0c, $00, $ff, 0
|
|
db $0c, $08, $ff, 1 << OAM_X_FLIP
|
|
|
|
Func_fd814:
|
|
ld a, e
|
|
add $10
|
|
ld e, a
|
|
ld a, d
|
|
add $8
|
|
ld d, a
|
|
ld a, [hli]
|
|
.asm_fd81d
|
|
push af
|
|
ld a, [hli]
|
|
add e
|
|
ld [bc], a
|
|
inc bc
|
|
ld a, [hli]
|
|
add d
|
|
ld [bc], a
|
|
inc bc
|
|
ld a, [hli]
|
|
ld [bc], a
|
|
inc bc
|
|
ld a, [hli]
|
|
ld [bc], a
|
|
inc bc
|
|
pop af
|
|
dec a
|
|
jr nz, .asm_fd81d
|
|
ret
|
|
|
|
LoadPikachuShadowIntoVRAM:
|
|
ld hl, vNPCSprites2 + $7f * $10
|
|
ld de, LedgeHoppingShadowGFX_3F
|
|
lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8
|
|
jp CopyVideoDataDoubleAlternate
|
|
|
|
LedgeHoppingShadowGFX_3F:
|
|
INCBIN "gfx/ledge_hopping_shadow.1bpp"
|
|
LedgeHoppingShadowGFX_3FEnd:
|
|
|
|
LoadPikachuBallIconIntoVRAM:
|
|
ld hl, vNPCSprites2 + $7e * $10
|
|
ld de, GFX_fd86b
|
|
lb bc, BANK(GFX_fd86b), 1
|
|
jp CopyVideoDataDoubleAlternate
|
|
|
|
Func_fd851:
|
|
ld hl, vNPCSprites + $c * $10
|
|
ld a, 3
|
|
.asm_fd856
|
|
push af
|
|
push hl
|
|
ld de, GFX_fd86b
|
|
lb bc, BANK(GFX_fd86b), 4
|
|
call CopyVideoDataAlternate
|
|
pop hl
|
|
ld de, 4 * $10
|
|
add hl, de
|
|
pop af
|
|
dec a
|
|
jr nz, .asm_fd856
|
|
ret
|
|
|
|
GFX_fd86b:
|
|
INCBIN "gfx/unknown_fd86b.2bpp"
|
|
|
|
LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab)
|
|
ld de, PikachuSprite
|
|
lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32
|
|
ld hl, vNPCSprites + $c * $10
|
|
push bc
|
|
call CopyVideoDataAlternate
|
|
ld de, PikachuSprite + $c * $10
|
|
ld hl, vNPCSprites2 + $c * $10
|
|
ld a, [h_0xFFFC]
|
|
and a
|
|
jr z, .load
|
|
ld de, PikachuSprite + $c * $10
|
|
ld hl, vNPCSprites2 + $4c * $10
|
|
.load
|
|
pop bc
|
|
call CopyVideoDataAlternate
|
|
call LoadPikachuShadowIntoVRAM
|
|
call LoadPikachuBallIconIntoVRAM
|
|
ret
|
|
|
|
PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4)
|
|
ld a, [wCurMap]
|
|
cp PEWTER_POKECENTER
|
|
ret nz
|
|
call EnablePikachuFollowingPlayer
|
|
call StarterPikachuEmotionCommand_turnawayfromplayer
|
|
ret
|
|
|
|
PikachuFanClubCheck: ; fd8e1 (3f:58e1)
|
|
ld a, [wCurMap]
|
|
cp POKEMON_FAN_CLUB
|
|
ret nz
|
|
call EnablePikachuFollowingPlayer
|
|
call StarterPikachuEmotionCommand_turnawayfromplayer
|
|
ret
|
|
|
|
PikachuBillsHouseCheck: ; fd8ee (3f:58ee)
|
|
ld a, [wCurMap]
|
|
cp BILLS_HOUSE
|
|
ret nz
|
|
call EnablePikachuFollowingPlayer
|
|
ret
|
|
|
|
Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: ; fd8f8 (3f:58f8)
|
|
call LoadCurrentMapView
|
|
call UpdateSprites
|
|
call Delay3
|
|
ret
|
|
|
|
Cosine_e: ; cosine?
|
|
ld a, e
|
|
add $10
|
|
jr asm_fd908
|
|
|
|
Sine_e: ; sine?
|
|
ld a, e
|
|
asm_fd908
|
|
and $3f
|
|
cp $20
|
|
jr nc, .asm_fd913
|
|
call GetSine
|
|
ld a, h
|
|
ret
|
|
|
|
.asm_fd913
|
|
and $1f
|
|
call GetSine
|
|
ld a, h
|
|
cpl
|
|
inc a
|
|
ret
|
|
|
|
GetSine:
|
|
ld e, a
|
|
ld a, d
|
|
ld d, 0
|
|
ld hl, SineWave_3f
|
|
add hl, de
|
|
add hl, de
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
ld hl, 0
|
|
.asm_fd92b
|
|
srl a
|
|
jr nc, .asm_fd930
|
|
add hl, de
|
|
.asm_fd930
|
|
sla e
|
|
rl d
|
|
and a
|
|
jr nz, .asm_fd92b
|
|
ret
|
|
|
|
SineWave_3f:
|
|
sine_wave $100
|