mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 15:08:23 +00:00
35f2bb90d4
This is mostly because of an rgbasm bug that prevents macro arguments from exceeding 16 characters, but the names were bad anyway.
520 lines
9.3 KiB
NASM
Executable file
520 lines
9.3 KiB
NASM
Executable file
Func_70510: ; 70510 (1c:4510)
|
|
call Func_706ef
|
|
ld a, $ec
|
|
ld [wSpriteStateData1 + 4], a
|
|
call Delay3
|
|
push hl
|
|
call GBFadeIn2
|
|
ld hl, W_FLAGS_D733
|
|
bit 7, [hl]
|
|
res 7, [hl]
|
|
jr nz, .asm_70568
|
|
ld a, (SFX_02_4c - SFX_Headers_02) / 3
|
|
call PlaySound
|
|
ld hl, wd732
|
|
bit 4, [hl]
|
|
res 4, [hl]
|
|
pop hl
|
|
jr nz, .asm_7055e
|
|
call Func_705aa
|
|
ld a, (SFX_02_4f - SFX_Headers_02) / 3
|
|
call PlaySound
|
|
call Func_70787
|
|
ld a, b
|
|
and a
|
|
jr nz, .asm_7055b
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
xor a
|
|
ld [hli], a
|
|
inc a
|
|
ld [hli], a
|
|
ld a, $8
|
|
ld [hli], a
|
|
ld [hl], $ff
|
|
ld hl, wcd48
|
|
call Func_70730
|
|
.asm_70558
|
|
call Func_2307
|
|
.asm_7055b
|
|
jp Func_70772
|
|
.asm_7055e
|
|
ld c, $32
|
|
call DelayFrames
|
|
call Func_705aa
|
|
jr .asm_7055b
|
|
.asm_70568
|
|
pop hl
|
|
ld de, BirdSprite ; $4d80
|
|
ld hl, vNPCSprites
|
|
ld bc, (BANK(BirdSprite) << 8) + $0c
|
|
call CopyVideoData
|
|
call Func_706d7
|
|
ld a, (SFX_02_50 - SFX_Headers_02) / 3
|
|
call PlaySound
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
xor a
|
|
ld [hli], a
|
|
ld a, $c
|
|
ld [hli], a
|
|
ld [hl], $8
|
|
ld de, FlyAnimationEnterScreenCoords ; $4592
|
|
call Func_706ae
|
|
call LoadPlayerSpriteGraphics
|
|
jr .asm_70558
|
|
|
|
FlyAnimationEnterScreenCoords: ; 70592 (1c:4592)
|
|
; y, x pairs
|
|
; This is the sequence of screen coordinates used by the overworld
|
|
; Fly animation when the player is entering a map.
|
|
db $05, $98
|
|
db $0F, $90
|
|
db $18, $88
|
|
db $20, $80
|
|
db $27, $78
|
|
db $2D, $70
|
|
db $32, $68
|
|
db $36, $60
|
|
db $39, $58
|
|
db $3B, $50
|
|
db $3C, $48
|
|
db $3C, $40
|
|
|
|
Func_705aa: ; 705aa (1c:45aa)
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
ld a, $10
|
|
ld [hli], a
|
|
ld a, $3c
|
|
ld [hli], a
|
|
call Func_7077f
|
|
ld [hl], a
|
|
jp Func_70755
|
|
|
|
_LeaveMapAnim: ; 705ba (1c:45ba)
|
|
call Func_706ef
|
|
call Func_70787
|
|
ld a, b
|
|
and a
|
|
jr z, .asm_705ef
|
|
dec a
|
|
jp nz, Func_7067d
|
|
.asm_705c8
|
|
ld a, (SFX_02_4b - SFX_Headers_02) / 3
|
|
call PlaySound
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
ld a, $f0
|
|
ld [hli], a
|
|
ld a, $ec
|
|
ld [hli], a
|
|
call Func_7077f
|
|
ld [hl], a
|
|
call Func_70755
|
|
call Func_70787
|
|
ld a, b
|
|
dec a
|
|
jr z, .asm_705e9
|
|
ld c, $a
|
|
call DelayFrames
|
|
.asm_705e9
|
|
call GBFadeOut2
|
|
jp Func_70772
|
|
.asm_705ef
|
|
ld a, $4
|
|
call StopMusic
|
|
ld a, [wd732]
|
|
bit 6, a
|
|
jr z, .asm_70610
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
ld a, $10
|
|
ld [hli], a
|
|
ld a, $ff
|
|
ld [hli], a
|
|
xor a
|
|
ld [hli], a
|
|
ld [hl], $a1
|
|
ld hl, wcd48
|
|
call Func_70730
|
|
jr .asm_705c8
|
|
.asm_70610
|
|
call Func_706d7
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
ld a, $ff
|
|
ld [hli], a
|
|
ld a, $8
|
|
ld [hli], a
|
|
ld [hl], $c
|
|
call Func_706ae
|
|
ld a, (SFX_02_50 - SFX_Headers_02) / 3
|
|
call PlaySound
|
|
ld hl, wWhichTrade ; wWhichTrade
|
|
xor a
|
|
ld [hli], a
|
|
ld a, $c
|
|
ld [hli], a
|
|
ld [hl], $c
|
|
ld de, FlyAnimationScreenCoords1 ; $464f
|
|
call Func_706ae
|
|
ld c, $28
|
|
call DelayFrames
|
|
ld hl, wTrainerEngageDistance
|
|
ld a, $b
|
|
ld [hli], a
|
|
ld [hl], $8
|
|
ld de, FlyAnimationScreenCoords2 ; $4667
|
|
call Func_706ae
|
|
call GBFadeOut2
|
|
jp Func_70772
|
|
|
|
FlyAnimationScreenCoords1: ; 7064f (1c:464f)
|
|
; y, x pairs
|
|
; This is the sequence of screen coordinates used by the first part
|
|
; of the Fly overworld animation.
|
|
db $3C, $48
|
|
db $3C, $50
|
|
db $3B, $58
|
|
db $3A, $60
|
|
db $39, $68
|
|
db $37, $70
|
|
db $37, $78
|
|
db $33, $80
|
|
db $30, $88
|
|
db $2D, $90
|
|
db $2A, $98
|
|
db $27, $A0
|
|
|
|
FlyAnimationScreenCoords2: ; 70667 (1c:4667)
|
|
; y, x pairs
|
|
; This is the sequence of screen coordinates used by the second part
|
|
; of the Fly overworld animation.
|
|
db $1A, $90
|
|
db $19, $80
|
|
db $17, $70
|
|
db $15, $60
|
|
db $12, $50
|
|
db $0F, $40
|
|
db $0C, $30
|
|
db $09, $20
|
|
db $05, $10
|
|
db $00, $00
|
|
|
|
db $F0, $00
|
|
|
|
Func_7067d: ; 7067d (1c:467d)
|
|
ld a, $ff
|
|
ld [wcfcb], a
|
|
ld a, [wOAMBuffer + $02]
|
|
ld [wOAMBuffer + $0a], a
|
|
ld a, [wOAMBuffer + $06]
|
|
ld [wOAMBuffer + $0e], a
|
|
ld a, $a0
|
|
ld [wOAMBuffer], a
|
|
ld [wOAMBuffer + $04], a
|
|
ld c, $2
|
|
call DelayFrames
|
|
ld a, $a0
|
|
ld [wOAMBuffer + $08], a
|
|
ld [wOAMBuffer + $0c], a
|
|
call GBFadeOut2
|
|
ld a, $1
|
|
ld [wcfcb], a
|
|
jp Func_70772
|
|
|
|
Func_706ae: ; 706ae (1c:46ae)
|
|
ld a, [wTrainerFacingDirection]
|
|
xor $1
|
|
ld [wTrainerFacingDirection], a
|
|
ld [wSpriteStateData1 + 2], a
|
|
call Delay3
|
|
ld a, [wWhichTrade] ; wWhichTrade
|
|
cp $ff
|
|
jr z, .asm_706cd
|
|
ld hl, wSpriteStateData1 + 4
|
|
ld a, [de]
|
|
inc de
|
|
ld [hli], a
|
|
inc hl
|
|
ld a, [de]
|
|
inc de
|
|
ld [hl], a
|
|
.asm_706cd
|
|
ld a, [wTrainerEngageDistance]
|
|
dec a
|
|
ld [wTrainerEngageDistance], a
|
|
jr nz, Func_706ae
|
|
ret
|
|
|
|
Func_706d7: ; 706d7 (1c:46d7)
|
|
ld de, BirdSprite ; $4d80
|
|
ld hl, vNPCSprites
|
|
ld bc, (BANK(BirdSprite) << 8) + $0c
|
|
call CopyVideoData
|
|
ld de, BirdSprite + $c0 ; $4e40 ; moving amination sprite
|
|
ld hl, vNPCSprites2
|
|
ld bc, (BANK(BirdSprite) << 8) + $0c
|
|
jp CopyVideoData
|
|
|
|
Func_706ef: ; 706ef (1c:46ef)
|
|
ld a, [wSpriteStateData1 + 2]
|
|
ld [wcd50], a
|
|
ld a, [wSpriteStateData1 + 4]
|
|
ld [wcd4f], a
|
|
ld hl, PlayerSpinningFacingOrder ; $4713
|
|
ld de, wcd48
|
|
ld bc, $4
|
|
call CopyData
|
|
ld a, [wSpriteStateData1 + 2]
|
|
ld hl, wcd48
|
|
.asm_7070d
|
|
cp [hl]
|
|
inc hl
|
|
jr nz, .asm_7070d
|
|
dec hl
|
|
ret
|
|
|
|
PlayerSpinningFacingOrder: ; 70713 (1c:4713)
|
|
; The order of the direction the player's sprite is facing when teleporting
|
|
; away. Creates a spinning effect.
|
|
db $00, $08, $04, $0C ; down, left, up, right
|
|
|
|
Func_70717: ; 70717 (1c:4717)
|
|
ld a, [hl]
|
|
ld [wSpriteStateData1 + 2], a
|
|
push hl
|
|
ld hl, wcd48
|
|
ld de, wcd47
|
|
ld bc, $4
|
|
call CopyData
|
|
ld a, [wcd47]
|
|
ld [wcd4b], a
|
|
pop hl
|
|
ret
|
|
|
|
Func_70730: ; 70730 (1c:4730)
|
|
call Func_70717
|
|
ld a, [wWhichTrade] ; wWhichTrade
|
|
ld c, a
|
|
and $3
|
|
jr nz, .asm_70743
|
|
ld a, [wTrainerScreenY]
|
|
cp $ff
|
|
call nz, PlaySound
|
|
.asm_70743
|
|
ld a, [wTrainerEngageDistance]
|
|
add c
|
|
ld [wWhichTrade], a ; wWhichTrade
|
|
ld c, a
|
|
ld a, [wTrainerFacingDirection]
|
|
cp c
|
|
ret z
|
|
call DelayFrames
|
|
jr Func_70730
|
|
|
|
Func_70755: ; 70755 (1c:4755)
|
|
call Func_70717
|
|
ld a, [wWhichTrade] ; wWhichTrade
|
|
ld c, a
|
|
ld a, [wSpriteStateData1 + 4]
|
|
add c
|
|
ld [wSpriteStateData1 + 4], a
|
|
ld c, a
|
|
ld a, [wTrainerEngageDistance]
|
|
cp c
|
|
ret z
|
|
ld a, [wTrainerFacingDirection]
|
|
ld c, a
|
|
call DelayFrames
|
|
jr Func_70755
|
|
|
|
Func_70772: ; 70772 (1c:4772)
|
|
ld a, [wcd4f]
|
|
ld [wSpriteStateData1 + 4], a
|
|
ld a, [wcd50]
|
|
ld [wSpriteStateData1 + 2], a
|
|
ret
|
|
|
|
Func_7077f: ; 7077f (1c:477f)
|
|
ld a, [wcf1b]
|
|
xor $1
|
|
inc a
|
|
inc a
|
|
ret
|
|
|
|
Func_70787: ; 70787 (1c:4787)
|
|
ld b, 0
|
|
ld hl, DataTable_707a9 ; $47a9
|
|
ld a, [W_CURMAPTILESET] ; W_CURMAPTILESET
|
|
ld c, a
|
|
.asm_70790
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr z, .asm_707a4
|
|
cp c
|
|
jr nz, .asm_7079e
|
|
FuncCoord 8, 9
|
|
ld a, [Coord]
|
|
cp [hl]
|
|
jr z, .asm_707a2
|
|
.asm_7079e
|
|
inc hl
|
|
inc hl
|
|
jr .asm_70790
|
|
.asm_707a2
|
|
inc hl
|
|
ld b, [hl]
|
|
.asm_707a4
|
|
ld a, b
|
|
ld [wcd5b], a
|
|
ret
|
|
|
|
; format: db tileset id, tile id, value to be put in wcd5b
|
|
DataTable_707a9: ; 707a9 (1c:47a9)
|
|
db FACILITY, $20, 1 ; warp pad
|
|
db FACILITY, $11, 2 ; hole
|
|
db CAVERN, $22, 2 ; hole
|
|
db INTERIOR, $55, 1 ; warp pad
|
|
db $FF
|
|
|
|
Func_707b6: ; 707b6 (1c:47b6)
|
|
ld c, $a
|
|
call DelayFrames
|
|
ld hl, wd736
|
|
set 6, [hl]
|
|
ld de, RedSprite ; $4180
|
|
ld hl, vNPCSprites
|
|
ld bc, (BANK(RedSprite) << 8) + $0c
|
|
call CopyVideoData
|
|
ld a, $4
|
|
ld hl, RedFishingTiles ; $4866
|
|
call Func_71771
|
|
ld a, [wSpriteStateData1 + 2]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, FishingRodGfxProperties ; $4856
|
|
add hl, bc
|
|
ld de, wOAMBuffer + $9c
|
|
ld bc, $4
|
|
call CopyData
|
|
ld c, $64
|
|
call DelayFrames
|
|
ld a, [wWhichTrade] ; wWhichTrade
|
|
and a
|
|
ld hl, NoNibbleText
|
|
jr z, .asm_70836
|
|
cp $2
|
|
ld hl, NothingHereText
|
|
jr z, .asm_70836
|
|
ld b, $a
|
|
.asm_707fe
|
|
ld hl, wSpriteStateData1 + 4
|
|
call Func_70842
|
|
ld hl, wOAMBuffer + $9c
|
|
call Func_70842
|
|
call Delay3
|
|
dec b
|
|
jr nz, .asm_707fe
|
|
ld a, [wSpriteStateData1 + 2]
|
|
cp $4
|
|
jr nz, .asm_7081c
|
|
ld a, $a0
|
|
ld [wOAMBuffer + $9c], a
|
|
.asm_7081c
|
|
ld hl, wcd4f
|
|
xor a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $4c
|
|
call Predef
|
|
ld a, [wSpriteStateData1 + 2]
|
|
cp $4
|
|
jr nz, .asm_70833
|
|
ld a, $44
|
|
ld [wOAMBuffer + $9c], a
|
|
.asm_70833
|
|
ld hl, ItsABiteText
|
|
.asm_70836
|
|
call PrintText
|
|
ld hl, wd736
|
|
res 6, [hl]
|
|
call LoadFontTilePatterns
|
|
ret
|
|
|
|
Func_70842: ; 70842 (1c:4842)
|
|
ld a, [hl]
|
|
xor $1
|
|
ld [hl], a
|
|
ret
|
|
|
|
NoNibbleText: ; 70847 (1c:4847)
|
|
TX_FAR _NoNibbleText
|
|
db "@"
|
|
|
|
NothingHereText: ; 7084c (1c:484c)
|
|
TX_FAR _NothingHereText
|
|
db "@"
|
|
|
|
ItsABiteText: ; 70851 (1c:4851)
|
|
TX_FAR _ItsABiteText
|
|
db "@"
|
|
|
|
FishingRodGfxProperties: ; 70856 (1c:4856)
|
|
; specicies how the fishing rod should be drawn on the screen
|
|
; first byte = screen y coordinate
|
|
; second byte = screen x coordinate
|
|
; third byte = tile number
|
|
; fourth byte = sprite properties
|
|
db $5B, $4C, $FD, $00 ; player facing down
|
|
db $44, $4C, $FD, $00 ; player facing up
|
|
db $50, $40, $FE, $00 ; player facing left
|
|
db $50, $58, $FE, $20 ; player facing right ($20 means "horizontally flip the tile")
|
|
|
|
RedFishingTiles: ; 70866 (1c:4866)
|
|
dw RedFishingTilesFront
|
|
db 2, BANK(RedFishingTilesFront)
|
|
dw vNPCSprites + $20
|
|
|
|
dw RedFishingTilesBack
|
|
db 2, BANK(RedFishingTilesBack)
|
|
dw vNPCSprites + $60
|
|
|
|
dw RedFishingTilesSide
|
|
db 2, BANK(RedFishingTilesSide)
|
|
dw vNPCSprites + $a0
|
|
|
|
dw RedFishingRodTiles
|
|
db 3, BANK(RedFishingRodTiles)
|
|
dw vNPCSprites2 + $7d0
|
|
|
|
_HandleMidJump: ; 7087e (1c:487e)
|
|
ld a, [wd714]
|
|
ld c, a
|
|
inc a
|
|
cp $10
|
|
jr nc, .asm_70895
|
|
ld [wd714], a
|
|
ld b, $0
|
|
ld hl, PlayerJumpingYScreenCoords ; $48ba
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wSpriteStateData1 + 4], a ; player's sprite y coordinate
|
|
ret
|
|
.asm_70895
|
|
ld a, [wWalkCounter] ; wcfc5
|
|
cp $0
|
|
ret nz
|
|
call UpdateSprites
|
|
call Delay3
|
|
xor a
|
|
ld [hJoyHeld], a
|
|
ld [hJoyPressed], a
|
|
ld [hJoyReleased], a
|
|
ld [wd714], a
|
|
ld hl, wd736
|
|
res 6, [hl]
|
|
ld hl, wd730
|
|
res 7, [hl]
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ret
|
|
|
|
PlayerJumpingYScreenCoords: ; 708ba (1c:48ba)
|
|
; Sequence of y screen coordinates for player's sprite when jumping over a ledge.
|
|
db $38, $36, $34, $32, $31, $30, $30, $30, $31, $32, $33, $34, $36, $38, $3C, $3C
|