mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
3684 lines
45 KiB
NASM
3684 lines
45 KiB
NASM
|
|
||
|
INCLUDE "engine/facings.asm"
|
||
|
|
||
|
Data4273:: ; 4273
|
||
|
db $00, $00, $01, $02, $00, $00
|
||
|
db $06, $00, $01, $0c, $00, $00
|
||
|
db $03, $00, $01, $00, $00, $00
|
||
|
db $04, $00, $01, $00, $00, $00
|
||
|
db $01, $00, $01, $00, $00, $00
|
||
|
db $02, $00, $01, $00, $00, $00
|
||
|
db $06, $00, $01, $00, $00, $00
|
||
|
db $06, $01, $01, $00, $00, $00
|
||
|
db $06, $02, $01, $00, $00, $00
|
||
|
db $06, $03, $01, $00, $00, $00
|
||
|
db $05, $00, $01, $00, $00, $00
|
||
|
db $07, $00, $01, $02, $00, $00
|
||
|
db $08, $00, $01, $00, $00, $00
|
||
|
db $09, $00, $01, $00, $00, $00
|
||
|
db $0a, $00, $01, $00, $00, $00
|
||
|
db $0b, $00, $01, $00, $00, $00
|
||
|
db $0c, $00, $01, $00, $00, $00
|
||
|
db $0d, $00, $01, $00, $00, $00
|
||
|
db $0e, $00, $01, $00, $00, $00
|
||
|
db $0f, $00, $01, $02, $00, $00
|
||
|
db $10, $00, $01, $02, $00, $00
|
||
|
db $15, $00, $09, $2e, $01, $c0
|
||
|
db $16, $00, $0a, $2e, $00, $00
|
||
|
db $06, $00, $01, $0c, $00, $00
|
||
|
db $06, $00, $01, $2e, $10, $00
|
||
|
db $11, $00, $01, $2e, $00, $40
|
||
|
db $12, $00, $01, $02, $00, $00
|
||
|
db $13, $00, $00, $8e, $01, $00
|
||
|
db $14, $00, $08, $8e, $02, $00
|
||
|
db $17, $00, $00, $82, $00, $00
|
||
|
db $19, $02, $01, $00, $00, $00
|
||
|
db $18, $03, $01, $00, $00, $00
|
||
|
db $11, $00, $0c, $2e, $01, $c0
|
||
|
db $11, $00, $0d, $2e, $01, $c0
|
||
|
db $1a, $00, $0e, $8e, $01, $00
|
||
|
db $1b, $00, $0f, $8e, $02, $00
|
||
|
db $03, $00, $01, $00, $00, $20
|
||
|
db $00, $00, $01, $00, $00, $00
|
||
|
; 4357
|
||
|
|
||
|
|
||
|
Function4357:: ; 4357
|
||
|
push bc
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
push af
|
||
|
ld h, b
|
||
|
ld l, c
|
||
|
ld bc, ObjectStruct2 - ObjectStruct1
|
||
|
xor a
|
||
|
call ByteFill
|
||
|
pop af
|
||
|
cp $ff
|
||
|
jr z, .asm_4379
|
||
|
bit 7, a
|
||
|
jr nz, .asm_4379
|
||
|
call GetMapObject
|
||
|
ld hl, OBJECT_00
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
|
||
|
.asm_4379
|
||
|
pop bc
|
||
|
ret
|
||
|
; 437b
|
||
|
|
||
|
Function437b: ; 437b
|
||
|
call Function4386
|
||
|
ret c
|
||
|
call Function43f3
|
||
|
call Function4427
|
||
|
ret
|
||
|
; 4386
|
||
|
|
||
|
Function4386: ; 4386
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 6, [hl]
|
||
|
ld a, [XCoord]
|
||
|
ld e, a
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add $1
|
||
|
sub e
|
||
|
jr c, .asm_43b2
|
||
|
cp $c
|
||
|
jr nc, .asm_43b2
|
||
|
ld a, [YCoord]
|
||
|
ld e, a
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add $1
|
||
|
sub e
|
||
|
jr c, .asm_43b2
|
||
|
cp $b
|
||
|
jr nc, .asm_43b2
|
||
|
jr .asm_43dc
|
||
|
|
||
|
.asm_43b2
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
set 6, [hl]
|
||
|
ld a, [XCoord]
|
||
|
ld e, a
|
||
|
ld hl, OBJECT_20
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add $1
|
||
|
sub e
|
||
|
jr c, .asm_43de
|
||
|
cp $c
|
||
|
jr nc, .asm_43de
|
||
|
ld a, [YCoord]
|
||
|
ld e, a
|
||
|
ld hl, OBJECT_21
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add $1
|
||
|
sub e
|
||
|
jr c, .asm_43de
|
||
|
cp $b
|
||
|
jr nc, .asm_43de
|
||
|
|
||
|
.asm_43dc
|
||
|
and a
|
||
|
ret
|
||
|
|
||
|
.asm_43de
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 1, [hl]
|
||
|
jr nz, .asm_43eb
|
||
|
call Function4357
|
||
|
scf
|
||
|
ret
|
||
|
|
||
|
.asm_43eb
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
set 6, [hl]
|
||
|
and a
|
||
|
ret
|
||
|
; 43f3
|
||
|
|
||
|
Function43f3: ; 43f3
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
jr z, .asm_4409
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 5, [hl]
|
||
|
jr nz, .asm_4426
|
||
|
cp $1
|
||
|
jr z, .asm_4414
|
||
|
jr .asm_4421
|
||
|
|
||
|
.asm_4409
|
||
|
call Function47bc
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 5, [hl]
|
||
|
jr nz, .asm_4426
|
||
|
|
||
|
.asm_4414
|
||
|
call Function47dd
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
ret z
|
||
|
cp $1
|
||
|
ret z
|
||
|
|
||
|
.asm_4421
|
||
|
ld hl, Pointers4b45
|
||
|
rst JumpTable
|
||
|
ret
|
||
|
|
||
|
.asm_4426
|
||
|
ret
|
||
|
; 4427
|
||
|
|
||
|
Function4427: ; 4427
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 0, [hl]
|
||
|
jr nz, Function44a3
|
||
|
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 6, [hl]
|
||
|
jr nz, Function44a3
|
||
|
|
||
|
bit 5, [hl]
|
||
|
jr nz, Function4448
|
||
|
|
||
|
ld de, Pointers445f
|
||
|
jr Function444d
|
||
|
; 4440
|
||
|
|
||
|
Function4440: ; 4440
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 0, [hl]
|
||
|
jr nz, Function44a3
|
||
|
; fallthrough
|
||
|
; 4448
|
||
|
|
||
|
Function4448: ; 4448
|
||
|
ld de, Pointers445f + 2
|
||
|
jr Function444d
|
||
|
; 444d
|
||
|
|
||
|
Function444d: ; 444d
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld l, a
|
||
|
ld h, 0
|
||
|
add hl, hl
|
||
|
add hl, hl
|
||
|
add hl, de
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
call _hl_
|
||
|
ret
|
||
|
; 445f
|
||
|
|
||
|
Pointers445f: ; 445f
|
||
|
dw Function44a3
|
||
|
dw Function44a3
|
||
|
dw Function44b5
|
||
|
dw Function44aa
|
||
|
dw Function44c1
|
||
|
dw Function44aa
|
||
|
dw Function4508
|
||
|
dw Function44aa
|
||
|
dw Function4529
|
||
|
dw Function44aa
|
||
|
dw Function4539
|
||
|
dw Function44a3
|
||
|
dw Function456e
|
||
|
dw Function456e
|
||
|
dw Function457b
|
||
|
dw Function44a3
|
||
|
dw Function4582
|
||
|
dw Function4582
|
||
|
dw Function4589
|
||
|
dw Function4589
|
||
|
dw Function4590
|
||
|
dw Function45a4
|
||
|
dw Function45ab
|
||
|
dw Function44aa
|
||
|
dw Function45be
|
||
|
dw Function45be
|
||
|
dw Function45c5
|
||
|
dw Function45c5
|
||
|
dw Function45da
|
||
|
dw Function44a3
|
||
|
dw Function45ed
|
||
|
dw Function44a3
|
||
|
dw Function44e4
|
||
|
dw Function44aa
|
||
|
; 44a3
|
||
|
|
||
|
Function44a3: ; 44a3
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
; 44aa
|
||
|
|
||
|
Function44aa: ; 44aa
|
||
|
call GetSpriteDirection
|
||
|
or $0
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 44b5
|
||
|
|
||
|
Function44b5: ; 44b5
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $1
|
||
|
jr nz, Function44c1
|
||
|
jp Function44aa
|
||
|
; 44c1
|
||
|
|
||
|
Function44c1: ; 44c1
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 3, [hl]
|
||
|
jp nz, Function44aa
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
and $f
|
||
|
ld [hl], a
|
||
|
rrca
|
||
|
rrca
|
||
|
and $3
|
||
|
ld d, a
|
||
|
call GetSpriteDirection
|
||
|
or $0
|
||
|
or d
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 44e4
|
||
|
|
||
|
Function44e4: ; 44e4
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 3, [hl]
|
||
|
jp nz, Function44aa
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add $2
|
||
|
and $f
|
||
|
ld [hl], a
|
||
|
rrca
|
||
|
rrca
|
||
|
and $3
|
||
|
ld d, a
|
||
|
call GetSpriteDirection
|
||
|
or $0
|
||
|
or d
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4508
|
||
|
|
||
|
Function4508: ; 4508
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 3, [hl]
|
||
|
jp nz, Function44aa
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
rrca
|
||
|
rrca
|
||
|
rrca
|
||
|
and $3
|
||
|
ld d, a
|
||
|
call GetSpriteDirection
|
||
|
or $0
|
||
|
or d
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4529
|
||
|
|
||
|
Function4529: ; 4529
|
||
|
call Function453f
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
or $0
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4539
|
||
|
|
||
|
Function4539: ; 4539
|
||
|
call Function453f
|
||
|
jp Function44a3
|
||
|
; 453f
|
||
|
|
||
|
Function453f: ; 453f
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $f0
|
||
|
ld e, a
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
and $f
|
||
|
ld d, a
|
||
|
cp $4
|
||
|
jr c, .asm_4558
|
||
|
ld d, 0
|
||
|
ld a, e
|
||
|
add $10
|
||
|
and $30
|
||
|
ld e, a
|
||
|
|
||
|
.asm_4558
|
||
|
ld a, d
|
||
|
or e
|
||
|
ld [hl], a
|
||
|
swap e
|
||
|
ld d, 0
|
||
|
ld hl, .Directions
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 456a
|
||
|
|
||
|
.Directions ; 456a
|
||
|
db $00, $0c, $04, $08
|
||
|
; 456e
|
||
|
|
||
|
Function456e: ; 456e
|
||
|
call GetSpriteDirection
|
||
|
rrca
|
||
|
rrca
|
||
|
add $10
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 457b
|
||
|
|
||
|
Function457b: ; 457b
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $15
|
||
|
ret
|
||
|
; 4582
|
||
|
|
||
|
Function4582: ; 4582
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $14
|
||
|
ret
|
||
|
; 4589
|
||
|
|
||
|
Function4589: ; 4589
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $17
|
||
|
ret
|
||
|
; 4590
|
||
|
|
||
|
Function4590: ; 4590
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
and $f
|
||
|
ld [hl], a
|
||
|
and $8
|
||
|
jr z, Function45a4
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ret
|
||
|
; 45a4
|
||
|
|
||
|
Function45a4: ; 45a4
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ret
|
||
|
; 45ab
|
||
|
|
||
|
Function45ab: ; 45ab
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
ld [hl], a
|
||
|
and $c
|
||
|
rrca
|
||
|
rrca
|
||
|
add $18
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 45be
|
||
|
|
||
|
Function45be: ; 45be
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $16
|
||
|
ret
|
||
|
; 45c5
|
||
|
|
||
|
Function45c5: ; 45c5
|
||
|
ld a, [VariableSprites + 3]
|
||
|
ld d, $17
|
||
|
cp $33
|
||
|
jr z, .asm_45d4
|
||
|
cp $47
|
||
|
jr z, .asm_45d4
|
||
|
ld d, $16
|
||
|
|
||
|
.asm_45d4
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], d
|
||
|
ret
|
||
|
; 45da
|
||
|
|
||
|
Function45da: ; 45da
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
and 2
|
||
|
ld a, $1c
|
||
|
jr z, .asm_45eb
|
||
|
inc a
|
||
|
.asm_45eb
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 45ed
|
||
|
|
||
|
Function45ed: ; 45ed
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
and 4
|
||
|
ld a, $1e
|
||
|
jr z, .asm_45fe
|
||
|
inc a
|
||
|
|
||
|
.asm_45fe
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4600
|
||
|
|
||
|
Function4600: ; 4600
|
||
|
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_NEXT_MAP_X
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_NEXT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_NEXT_TILE
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
call Function4661
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
|
||
|
call Function4679
|
||
|
ret
|
||
|
; 462a
|
||
|
|
||
|
Function462a: ; 462a
|
||
|
|
||
|
ld hl, OBJECT_NEXT_MAP_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ld hl, OBJECT_NEXT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ret
|
||
|
; 463f
|
||
|
|
||
|
Function463f: ; 463f
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 3, [hl]
|
||
|
jr z, .asm_464f
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call Function4661
|
||
|
|
||
|
.asm_464f
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call Function4679
|
||
|
ret c
|
||
|
ld hl, OBJECT_NEXT_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call Function4679
|
||
|
ret
|
||
|
; 4661
|
||
|
|
||
|
Function4661: ; 4661
|
||
|
call Function188e
|
||
|
jr z, .asm_466b
|
||
|
call Function1875
|
||
|
jr c, .asm_4672
|
||
|
|
||
|
.asm_466b
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
set 3, [hl]
|
||
|
ret
|
||
|
|
||
|
.asm_4672
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 3, [hl]
|
||
|
ret
|
||
|
; 4679
|
||
|
|
||
|
Function4679: ; 4679
|
||
|
and a
|
||
|
ret
|
||
|
; 467b
|
||
|
|
||
|
Function467b: ; 467b
|
||
|
xor a
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
ld [hli], a
|
||
|
ld [hli], a
|
||
|
ld [hli], a
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
; 4690
|
||
|
|
||
|
Function4690: ; 4690
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, bc
|
||
|
bit 2, [hl]
|
||
|
jr nz, .asm_46a6
|
||
|
|
||
|
add a
|
||
|
add a
|
||
|
and $c
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
.asm_46a6
|
||
|
; fallthrough
|
||
|
; 46a6
|
||
|
|
||
|
Function46a6: ; 46a6
|
||
|
|
||
|
call GetStepVector
|
||
|
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ld a, d
|
||
|
call Function4730
|
||
|
ld hl, OBJECT_NEXT_MAP_X
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld d, a
|
||
|
|
||
|
ld a, e
|
||
|
call Function4730
|
||
|
ld hl, OBJECT_NEXT_MAP_Y
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld e, a
|
||
|
|
||
|
push bc
|
||
|
call Function2a3c
|
||
|
pop bc
|
||
|
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
|
||
|
ret
|
||
|
; 46d7
|
||
|
|
||
|
Function46d7: ; 46d7
|
||
|
|
||
|
call GetStepVector
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add d
|
||
|
ld [hl], a
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add e
|
||
|
ld [hl], a
|
||
|
|
||
|
ret
|
||
|
; 46e9
|
||
|
|
||
|
GetStepVector: ; 46e9
|
||
|
; Return (x, y, duration, speed) in (d, e, a, h).
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $f
|
||
|
add a
|
||
|
add a
|
||
|
ld l, a
|
||
|
ld h, 0
|
||
|
ld de, StepVectors
|
||
|
add hl, de
|
||
|
ld d, [hl]
|
||
|
inc hl
|
||
|
ld e, [hl]
|
||
|
inc hl
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ret
|
||
|
; 4700
|
||
|
|
||
|
StepVectors: ; 4700
|
||
|
; x, y, duration, speed
|
||
|
; slow
|
||
|
db 0, 1, 16, 1
|
||
|
db 0, -1, 16, 1
|
||
|
db -1, 0, 16, 1
|
||
|
db 1, 0, 16, 1
|
||
|
; normal
|
||
|
db 0, 2, 8, 2
|
||
|
db 0, -2, 8, 2
|
||
|
db -2, 0, 8, 2
|
||
|
db 2, 0, 8, 2
|
||
|
; fast
|
||
|
db 0, 4, 4, 4
|
||
|
db 0, -4, 4, 4
|
||
|
db -4, 0, 4, 4
|
||
|
db 4, 0, 4, 4
|
||
|
; 4730
|
||
|
|
||
|
Function4730: ; 4730
|
||
|
add a
|
||
|
ret z
|
||
|
ld a, 1
|
||
|
ret nc
|
||
|
ld a, -1
|
||
|
ret
|
||
|
; 4738
|
||
|
|
||
|
Function4738: ; 4738
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $3
|
||
|
ld [wd151], a
|
||
|
call Function46d7
|
||
|
ld a, [wd14e]
|
||
|
add d
|
||
|
ld [wd14e], a
|
||
|
ld a, [wd14f]
|
||
|
add e
|
||
|
ld [wd14f], a
|
||
|
ld hl, wd150
|
||
|
set 5, [hl]
|
||
|
ret
|
||
|
; 4759
|
||
|
|
||
|
Function4759: ; 4759
|
||
|
push bc
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call GetMapObject
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
pop bc
|
||
|
ret
|
||
|
; 4769
|
||
|
|
||
|
Function4769: ; 4769
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp $ff
|
||
|
jr z, .asm_477d
|
||
|
push bc
|
||
|
call GetMapObject
|
||
|
ld hl, $0004
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.asm_477d
|
||
|
ld a, $6
|
||
|
ret
|
||
|
; 4780
|
||
|
|
||
|
Function4780: ; 4780
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ret
|
||
|
; 4787
|
||
|
|
||
|
Function4787: ; 4787
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ret
|
||
|
; 478d
|
||
|
|
||
|
Function478d: ; 478d
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret
|
||
|
; 4793
|
||
|
|
||
|
Function4793: ; 4793
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop hl
|
||
|
rst JumpTable
|
||
|
ret
|
||
|
; 479b
|
||
|
|
||
|
Function479b: ; 479b
|
||
|
ld hl, OBJECT_28
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ret
|
||
|
; 47a2
|
||
|
|
||
|
Function47a2: ; 47a2
|
||
|
ld hl, OBJECT_28
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ret
|
||
|
; 47a8
|
||
|
|
||
|
Function47a8: ; 47a8
|
||
|
ld hl, OBJECT_28
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop hl
|
||
|
rst JumpTable
|
||
|
ret
|
||
|
; 47b0
|
||
|
|
||
|
Function47b0: ; 47b0
|
||
|
ld hl, OBJECT_28
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ret
|
||
|
; 47b6
|
||
|
|
||
|
Function47b6: ; 47b6
|
||
|
ld hl, OBJECT_28
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 47bc
|
||
|
|
||
|
Function47bc: ; 47bc
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
push bc
|
||
|
call Function2a3c
|
||
|
pop bc
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
call Function4600
|
||
|
call Function467b
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 47dd
|
||
|
|
||
|
Function47dd: ; 47dd
|
||
|
call Function479b
|
||
|
call Function1a2f
|
||
|
ld a, [hl]
|
||
|
ld hl, .Pointers
|
||
|
rst JumpTable
|
||
|
ret
|
||
|
; 47e9
|
||
|
|
||
|
.Pointers ; 47e9
|
||
|
dw Function4821
|
||
|
dw Function4822
|
||
|
dw Function482c
|
||
|
dw Function4838
|
||
|
dw Function4842
|
||
|
dw Function4851
|
||
|
dw Function4869
|
||
|
dw Function487c
|
||
|
dw Function4882
|
||
|
dw Function4888
|
||
|
dw Function488e
|
||
|
dw Function4891
|
||
|
dw Function4894
|
||
|
dw Function4897
|
||
|
dw Function489d
|
||
|
dw Function48a0
|
||
|
dw Function48a6
|
||
|
dw Function48ac
|
||
|
dw Function48ff
|
||
|
dw Function49e5
|
||
|
dw Function4a21
|
||
|
dw Function4958
|
||
|
dw Function496e
|
||
|
dw Function4abc
|
||
|
dw Function498d
|
||
|
dw Function4984
|
||
|
dw Function4a46
|
||
|
dw Function4a89
|
||
|
; 4821
|
||
|
|
||
|
Function4821: ; 4821
|
||
|
ret
|
||
|
; 4822
|
||
|
|
||
|
Function4822: ; 4822
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and 1
|
||
|
jp Function4af0
|
||
|
; 482c
|
||
|
|
||
|
Function482c: ; 482c
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and 1
|
||
|
or 2
|
||
|
jp Function4af0
|
||
|
; 4838
|
||
|
|
||
|
Function4838: ; 4838
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and 3
|
||
|
jp Function4af0
|
||
|
; 4842
|
||
|
|
||
|
Function4842: ; 4842
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and $c
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
jp Function4b1d
|
||
|
; 4851
|
||
|
|
||
|
Function4851: ; 4851
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $c
|
||
|
ld d, a
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and $c
|
||
|
cp d
|
||
|
jr nz, .asm_4865
|
||
|
xor $c
|
||
|
|
||
|
.asm_4865
|
||
|
ld [hl], a
|
||
|
jp Function4b26
|
||
|
; 4869
|
||
|
|
||
|
Function4869: ; 4869
|
||
|
call Function462a
|
||
|
call Function467b
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $5
|
||
|
ret
|
||
|
; 487c
|
||
|
|
||
|
Function487c: ; 487c
|
||
|
ld hl, Function5000
|
||
|
jp Function5041
|
||
|
; 4882
|
||
|
|
||
|
Function4882: ; 4882
|
||
|
ld hl, Function5015
|
||
|
jp Function5041
|
||
|
; 4888
|
||
|
|
||
|
Function4888: ; 4888
|
||
|
ld hl, Function5026
|
||
|
jp Function5041
|
||
|
; 488e
|
||
|
|
||
|
Function488e: ; 488e
|
||
|
jp Function5037
|
||
|
; 4891
|
||
|
|
||
|
Function4891: ; 4891
|
||
|
jp Function5037
|
||
|
; 4894
|
||
|
|
||
|
Function4894: ; 4894
|
||
|
jp Function5037
|
||
|
; 4897
|
||
|
|
||
|
Function4897: ; 4897
|
||
|
ld hl, Function5000
|
||
|
jp Function5041
|
||
|
; 489d
|
||
|
|
||
|
Function489d: ; 489d
|
||
|
jp Function5037
|
||
|
; 48a0
|
||
|
|
||
|
Function48a0: ; 48a0
|
||
|
ld hl, Function54e6
|
||
|
jp Function5041
|
||
|
; 48a6
|
||
|
|
||
|
Function48a6: ; 48a6
|
||
|
ld hl, Function500e
|
||
|
jp Function5041
|
||
|
; 48ac
|
||
|
|
||
|
Function48ac: ; 48ac
|
||
|
call Function4793
|
||
|
dw Function48b3
|
||
|
dw Function48f8
|
||
|
; 48b3
|
||
|
|
||
|
Function48b3: ; 48b3
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call CheckPitTile
|
||
|
jr z, .asm_48f5
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 2, [hl]
|
||
|
res 2, [hl]
|
||
|
jr z, .asm_48ee
|
||
|
ld hl, OBJECT_32
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $3
|
||
|
or $0
|
||
|
call Function4690
|
||
|
call Function6ec1
|
||
|
jr c, .asm_48eb
|
||
|
ld de, SFX_STRENGTH
|
||
|
call PlaySFX
|
||
|
call Function5538
|
||
|
call Function463f
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $f
|
||
|
ret
|
||
|
|
||
|
.asm_48eb
|
||
|
call Function462a
|
||
|
|
||
|
.asm_48ee
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
|
||
|
.asm_48f5
|
||
|
call Function4787
|
||
|
; fallthrough
|
||
|
; 48f8
|
||
|
|
||
|
Function48f8: ; 48f8
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
; 48ff
|
||
|
|
||
|
Function48ff: ; 48ff
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
ld hl, OBJECT_32
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
push bc
|
||
|
call Function1ae5
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp $ff
|
||
|
jr z, .asm_494a
|
||
|
ld hl, OBJECT_NEXT_MAP_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp d
|
||
|
jr z, .asm_492d
|
||
|
jr c, .asm_4929
|
||
|
ld a, $3
|
||
|
jr .asm_493d
|
||
|
|
||
|
.asm_4929
|
||
|
ld a, $2
|
||
|
jr .asm_493d
|
||
|
|
||
|
.asm_492d
|
||
|
ld hl, OBJECT_NEXT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp e
|
||
|
jr z, .asm_494a
|
||
|
jr c, .asm_493b
|
||
|
ld a, $0
|
||
|
jr .asm_493d
|
||
|
|
||
|
.asm_493b
|
||
|
ld a, $1
|
||
|
|
||
|
.asm_493d
|
||
|
ld d, a
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $c
|
||
|
or d
|
||
|
pop bc
|
||
|
jp Function5412
|
||
|
|
||
|
.asm_494a
|
||
|
pop bc
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4958
|
||
|
|
||
|
Function4958: ; 4958
|
||
|
call Function467b
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $9
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ret
|
||
|
; 496e
|
||
|
|
||
|
Function496e: ; 496e
|
||
|
call Function467b
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ret
|
||
|
; 4984
|
||
|
|
||
|
Function4984: ; 4984
|
||
|
call Function4793
|
||
|
dw Function4996
|
||
|
dw Function499c
|
||
|
dw Function49b8
|
||
|
; 498d
|
||
|
|
||
|
Function498d: ; 498d
|
||
|
call Function4793
|
||
|
dw Function4996
|
||
|
dw Function499c
|
||
|
dw Function49c4
|
||
|
; 4996
|
||
|
|
||
|
Function4996: ; 4996
|
||
|
call Function467b
|
||
|
call Function4787
|
||
|
; fallthrough
|
||
|
; 499c
|
||
|
|
||
|
Function499c: ; 499c
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ld hl, OBJECT_32
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld a, $10
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $3
|
||
|
call Function4787
|
||
|
ret
|
||
|
; 49b8
|
||
|
|
||
|
Function49b8: ; 49b8
|
||
|
ld de, .data_49c0
|
||
|
call Function49d0
|
||
|
jr Function4984
|
||
|
; 49c0
|
||
|
|
||
|
.data_49c0 ; 49c0
|
||
|
db $0c, $08, $00, $04
|
||
|
; 49c4
|
||
|
|
||
|
Function49c4: ; 49c4
|
||
|
ld de, .data_49cc
|
||
|
call Function49d0
|
||
|
jr Function498d
|
||
|
; 49cc
|
||
|
|
||
|
.data_49cc ; 49cc
|
||
|
db $08, $0c, $04, $00
|
||
|
; 49d0
|
||
|
|
||
|
Function49d0: ; 49d0
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $c
|
||
|
rrca
|
||
|
rrca
|
||
|
push hl
|
||
|
ld l, a
|
||
|
ld h, $0
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
pop hl
|
||
|
ld [hl], a
|
||
|
call Function478d
|
||
|
ret
|
||
|
; 49e5
|
||
|
|
||
|
Function49e5: ; 49e5
|
||
|
call Function4aa8
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $7
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
add a
|
||
|
add $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
and 3
|
||
|
ld d, $e
|
||
|
cp 0
|
||
|
jr z, .asm_4a0f
|
||
|
cp 1
|
||
|
jr z, .asm_4a0f
|
||
|
ld d, $c
|
||
|
|
||
|
.asm_4a0f
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], d
|
||
|
ld hl, OBJECT_SPRITE_X_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $13
|
||
|
ret
|
||
|
; 4a21
|
||
|
|
||
|
Function4a21: ; 4a21
|
||
|
call Function467b
|
||
|
call Function4aa8
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $8
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $f0
|
||
|
ld hl, OBJECT_SPRITE_X_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $13
|
||
|
ret
|
||
|
; 4a46
|
||
|
|
||
|
Function4a46: ; 4a46
|
||
|
call Function467b
|
||
|
call Function4aa8
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $e
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
add a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
and 3
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, .data_4a81
|
||
|
add hl, de
|
||
|
add hl, de
|
||
|
ld d, [hl]
|
||
|
inc hl
|
||
|
ld e, [hl]
|
||
|
ld hl, OBJECT_SPRITE_X_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], d
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], e
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $13
|
||
|
ret
|
||
|
; 4a81
|
||
|
|
||
|
.data_4a81 ; 4a81
|
||
|
; x, y
|
||
|
db 0, -4
|
||
|
db 0, 8
|
||
|
db 6, 2
|
||
|
db -6, 2
|
||
|
; 4a89
|
||
|
|
||
|
Function4a89: ; 4a89
|
||
|
call Function467b
|
||
|
call Function4aa8
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $f
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
add $ff
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $13
|
||
|
ret
|
||
|
; 4aa8
|
||
|
|
||
|
Function4aa8: ; 4aa8
|
||
|
ld hl, OBJECT_32
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
push bc
|
||
|
call Function1ae5
|
||
|
ld d, b
|
||
|
ld e, c
|
||
|
pop bc
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld [hl], e
|
||
|
inc hl
|
||
|
ld [hl], d
|
||
|
ret
|
||
|
; 4abc
|
||
|
|
||
|
Function4abc: ; 4abc
|
||
|
call Function467b
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_32
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
call Function4ade
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], e
|
||
|
ld hl, OBJECT_30
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $15
|
||
|
ret
|
||
|
; 4ade
|
||
|
|
||
|
Function4ade: ; 4ade
|
||
|
ld d, a
|
||
|
and $3f
|
||
|
ld e, a
|
||
|
ld a, d
|
||
|
rlca
|
||
|
rlca
|
||
|
and $3
|
||
|
ld d, a
|
||
|
inc d
|
||
|
ld a, $1
|
||
|
.asm_4aeb
|
||
|
dec d
|
||
|
ret z
|
||
|
add a
|
||
|
jr .asm_4aeb
|
||
|
; 4af0
|
||
|
|
||
|
Function4af0: ; 4af0
|
||
|
call Function4690
|
||
|
call Function6ec1
|
||
|
jr c, Function4b17
|
||
|
call Function463f
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $2
|
||
|
ld hl, wd4cf
|
||
|
ld a, [$ffaf]
|
||
|
cp [hl]
|
||
|
jr z, .asm_4b10
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $7
|
||
|
ret
|
||
|
|
||
|
.asm_4b10
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $6
|
||
|
ret
|
||
|
|
||
|
Function4b17: ; 4b17
|
||
|
call Function467b
|
||
|
call Function462a
|
||
|
; fallthrough
|
||
|
; 4b1d
|
||
|
|
||
|
Function4b1d: ; 4b1d
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and $7f
|
||
|
jr Function4b2d
|
||
|
; 4b26
|
||
|
|
||
|
Function4b26: ; 4b26
|
||
|
call Random
|
||
|
ld a, [hRandomAdd]
|
||
|
and $1f
|
||
|
; fallthrough
|
||
|
; 4b2d
|
||
|
|
||
|
Function4b2d: ; 4b2d
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $3
|
||
|
ret
|
||
|
; 4b45
|
||
|
|
||
|
Pointers4b45: ; 4b45
|
||
|
dw Function47bc
|
||
|
dw Function47dd
|
||
|
dw Function4e2b
|
||
|
dw Function4ddd
|
||
|
dw Function4e21
|
||
|
dw Function4e0c
|
||
|
dw Function4e56
|
||
|
dw Function4e47
|
||
|
dw Function4b86
|
||
|
dw Function4bbf
|
||
|
dw Function4e83
|
||
|
dw Function4dff
|
||
|
dw Function4c18
|
||
|
dw Function4c89
|
||
|
dw Function4d14
|
||
|
dw Function4ecd
|
||
|
dw Function4d7e
|
||
|
dw Function4daf
|
||
|
dw Function4dc8
|
||
|
dw Function4f04
|
||
|
dw Function4f33
|
||
|
dw Function4f33
|
||
|
dw Function4f77
|
||
|
dw Function4f7a
|
||
|
dw Function4df0
|
||
|
dw Function4f83
|
||
|
; 4b79
|
||
|
|
||
|
Function4b79: ; 4b79
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4b86
|
||
|
|
||
|
Function4b86: ; 4b86
|
||
|
call Function47a8
|
||
|
dw Function4b8d
|
||
|
dw Function4ba9
|
||
|
; 4b8d
|
||
|
|
||
|
Function4b8d: ; 4b8d
|
||
|
call Function46d7
|
||
|
call UpdateJumpPosition
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function4600
|
||
|
call Function46a6
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 3, [hl]
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4ba9
|
||
|
|
||
|
Function4ba9: ; 4ba9
|
||
|
call Function46d7
|
||
|
call UpdateJumpPosition
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4bbf
|
||
|
|
||
|
Function4bbf: ; 4bbf
|
||
|
call Function47a8
|
||
|
dw Function4bca
|
||
|
dw Function4bd2
|
||
|
dw Function4bf2
|
||
|
dw Function4bfd
|
||
|
; 4bca
|
||
|
|
||
|
Function4bca: ; 4bca
|
||
|
ld hl, wd150
|
||
|
set 7, [hl]
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4bd2
|
||
|
|
||
|
Function4bd2: ; 4bd2
|
||
|
call UpdateJumpPosition
|
||
|
call Function4738
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 3, [hl]
|
||
|
ld hl, wd150
|
||
|
set 6, [hl]
|
||
|
set 4, [hl]
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4bf2
|
||
|
|
||
|
Function4bf2: ; 4bf2
|
||
|
call Function46a6
|
||
|
ld hl, wd150
|
||
|
set 7, [hl]
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4bfd
|
||
|
|
||
|
Function4bfd: ; 4bfd
|
||
|
call UpdateJumpPosition
|
||
|
call Function4738
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, wd150
|
||
|
set 6, [hl]
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4c18
|
||
|
|
||
|
Function4c18: ; 4c18
|
||
|
call Function47a8
|
||
|
dw Function4c23
|
||
|
dw Function4c32
|
||
|
dw Function4c42
|
||
|
dw Function4c5d
|
||
|
; 4c23
|
||
|
|
||
|
Function4c23: ; 4c23
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4c32
|
||
|
|
||
|
Function4c32: ; 4c32
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4c42
|
||
|
|
||
|
Function4c42: ; 4c42
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 3, [hl]
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4c5d
|
||
|
|
||
|
Function4c5d: ; 4c5d
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
ld d, $60
|
||
|
call Sine
|
||
|
ld a, h
|
||
|
sub $60
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4c89
|
||
|
|
||
|
Function4c89: ; 4c89
|
||
|
call Function47a8
|
||
|
dw Function4c9a
|
||
|
dw Function4caa
|
||
|
dw Function4cb3
|
||
|
dw Function4cc9
|
||
|
dw Function4ceb
|
||
|
dw Function4cf5
|
||
|
dw Function4d01
|
||
|
; 4c9a
|
||
|
|
||
|
Function4c9a: ; 4c9a
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4caa
|
||
|
|
||
|
Function4caa: ; 4caa
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4cb3
|
||
|
|
||
|
Function4cb3: ; 4cb3
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4cc9
|
||
|
|
||
|
Function4cc9: ; 4cc9
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
ld d, $60
|
||
|
call Sine
|
||
|
ld a, h
|
||
|
sub $60
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4ceb
|
||
|
|
||
|
Function4ceb: ; 4ceb
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
ret
|
||
|
; 4cf5
|
||
|
|
||
|
Function4cf5: ; 4cf5
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $4
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
; 4d01
|
||
|
|
||
|
Function4d01: ; 4d01
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4d14
|
||
|
|
||
|
Function4d14: ; 4d14
|
||
|
call Function47a8
|
||
|
dw Function4d1f
|
||
|
dw Function4d2e
|
||
|
dw Function4d4f
|
||
|
dw Function4d6b
|
||
|
; 4d1f
|
||
|
|
||
|
Function4d1f: ; 4d1f
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4d2e
|
||
|
|
||
|
Function4d2e: ; 4d2e
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $2
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4d4f
|
||
|
|
||
|
Function4d4f: ; 4d4f
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
ld d, $60
|
||
|
call Sine
|
||
|
ld a, h
|
||
|
sub $60
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4d6b
|
||
|
|
||
|
Function4d6b: ; 4d6b
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4d7e
|
||
|
|
||
|
Function4d7e: ; 4d7e
|
||
|
call Function47a8
|
||
|
dw Function4d85
|
||
|
dw Function4d94
|
||
|
; 4d85
|
||
|
|
||
|
Function4d85: ; 4d85
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $8
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4d94
|
||
|
|
||
|
Function4d94: ; 4d94
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
xor 1
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4daf
|
||
|
|
||
|
Function4daf: ; 4daf
|
||
|
call Function4db5
|
||
|
jp Function4b79
|
||
|
; 4db5
|
||
|
|
||
|
Function4db5: ; 4db5
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $1
|
||
|
ld a, $1
|
||
|
jr z, .asm_4dc2
|
||
|
ld a, $0
|
||
|
|
||
|
.asm_4dc2
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4dc8
|
||
|
|
||
|
Function4dc8: ; 4dc8
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $1
|
||
|
ld a, $4
|
||
|
jr z, .asm_4dd5
|
||
|
ld a, $5
|
||
|
|
||
|
.asm_4dd5
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
jp Function4b79
|
||
|
; 4ddd
|
||
|
|
||
|
Function4ddd: ; 4ddd
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4df0
|
||
|
|
||
|
Function4df0: ; 4df0
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
jp Function4357
|
||
|
; 4dff
|
||
|
|
||
|
Function4dff: ; 4dff
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4e0c
|
||
|
|
||
|
Function4e0c: ; 4e0c
|
||
|
call Function47a8
|
||
|
dw Function4e13
|
||
|
dw Function4e21
|
||
|
; 4e13
|
||
|
|
||
|
Function4e13: ; 4e13
|
||
|
call Function4769
|
||
|
call Function1a47
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4e21
|
||
|
|
||
|
Function4e21: ; 4e21
|
||
|
call Function4fb2
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
; 4e2b
|
||
|
|
||
|
Function4e2b: ; 4e2b
|
||
|
call Function4fb2
|
||
|
call Function46d7
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4e47
|
||
|
|
||
|
Function4e47: ; 4e47
|
||
|
call Function46d7
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function4600
|
||
|
jp Function4b1d
|
||
|
; 4e56
|
||
|
|
||
|
Function4e56: ; 4e56
|
||
|
; AnimateStep?
|
||
|
call Function47a8
|
||
|
dw Function4e5d
|
||
|
dw Function4e65
|
||
|
; 4e5d
|
||
|
|
||
|
Function4e5d: ; 4e5d
|
||
|
ld hl, wd150
|
||
|
set 7, [hl]
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4e65
|
||
|
|
||
|
Function4e65: ; 4e65
|
||
|
call Function4738
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, wd150
|
||
|
set 6, [hl]
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4e83
|
||
|
|
||
|
Function4e83: ; 4e83
|
||
|
call Function47a8
|
||
|
dw Function4e8e
|
||
|
dw Function4ea4
|
||
|
dw Function4ead
|
||
|
dw Function4ec0
|
||
|
; 4e8e
|
||
|
|
||
|
Function4e8e: ; 4e8e
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld [hl], $2
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $2
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4ea4
|
||
|
|
||
|
Function4ea4: ; 4ea4
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4ead
|
||
|
|
||
|
Function4ead: ; 4ead
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $2
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4ec0
|
||
|
|
||
|
Function4ec0: ; 4ec0
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4ecd
|
||
|
|
||
|
Function4ecd: ; 4ecd
|
||
|
call Function46d7
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
push bc
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld b, a
|
||
|
callba Function807e
|
||
|
pop bc
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 2, [hl]
|
||
|
call Function4600
|
||
|
ld hl, OBJECT_07
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4f04
|
||
|
|
||
|
Function4f04: ; 4f04
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
inc hl
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_00
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
jr z, .asm_4f30
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
ret z
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
|
||
|
.asm_4f30
|
||
|
jp Function4357
|
||
|
; 4f33
|
||
|
|
||
|
Function4f33: ; 4f33
|
||
|
call Function47a8
|
||
|
dw Function4f3a
|
||
|
dw Function4f43
|
||
|
; 4f3a
|
||
|
|
||
|
Function4f3a: ; 4f3a
|
||
|
xor a
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
call Function47a2
|
||
|
; fallthrough
|
||
|
; 4f43
|
||
|
|
||
|
Function4f43: ; 4f43
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld a, [wd14f]
|
||
|
sub d
|
||
|
ld [wd14f], a
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
jr z, .asm_4f68
|
||
|
ld a, [hl]
|
||
|
call Function4f6c
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld d, a
|
||
|
ld a, [wd14f]
|
||
|
add d
|
||
|
ld [wd14f], a
|
||
|
ret
|
||
|
|
||
|
.asm_4f68
|
||
|
call Function4357
|
||
|
ret
|
||
|
; 4f6c
|
||
|
|
||
|
Function4f6c: ; 4f6c
|
||
|
ld hl, OBJECT_30
|
||
|
add hl, bc
|
||
|
and 1
|
||
|
ld a, [hl]
|
||
|
ret z
|
||
|
cpl
|
||
|
inc a
|
||
|
ret
|
||
|
; 4f77
|
||
|
|
||
|
Function4f77: ; 4f77
|
||
|
call Function47a8 ; ????
|
||
|
; 4f7a
|
||
|
|
||
|
Function4f7a: ; 4f7a
|
||
|
call Function47a8
|
||
|
dw Function4f83
|
||
|
dw Function4f83
|
||
|
dw Function4f83
|
||
|
; 4f83
|
||
|
|
||
|
Function4f83: ; 4f83
|
||
|
call Function47a8
|
||
|
dw Function4f8a
|
||
|
dw Function4f99
|
||
|
; 4f8a
|
||
|
|
||
|
Function4f8a: ; 4f8a
|
||
|
ld hl, OBJECT_11
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
ld [hl], $10
|
||
|
call Function47a2
|
||
|
; 4f99
|
||
|
|
||
|
Function4f99: ; 4f99
|
||
|
ld hl, OBJECT_STEP_DURATION
|
||
|
add hl, bc
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], $60
|
||
|
ld hl, OBJECT_12
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $1
|
||
|
ret
|
||
|
; 4fb2
|
||
|
|
||
|
Function4fb2: ; 4fb2
|
||
|
ret
|
||
|
; 4fb3
|
||
|
|
||
|
Function4fb3: ; 4fb3
|
||
|
ld hl, OBJECT_29
|
||
|
add hl, bc
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
srl a
|
||
|
srl a
|
||
|
and 7
|
||
|
ld l, a
|
||
|
ld h, 0
|
||
|
ld de, .y
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4fcd
|
||
|
|
||
|
.y ; 4fcd
|
||
|
db 0, -1, -2, -3, -4, -3, -2, -1
|
||
|
; 4fd5
|
||
|
|
||
|
UpdateJumpPosition: ; 4fd5
|
||
|
call GetStepVector
|
||
|
ld a, h
|
||
|
ld hl, OBJECT_31
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
add e
|
||
|
ld [hl], a
|
||
|
nop
|
||
|
srl e
|
||
|
ld d, 0
|
||
|
ld hl, .y
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 4ff0
|
||
|
|
||
|
.y ; 4ff0
|
||
|
db -4, -6, -8, -10, -11, -12, -12, -12
|
||
|
db -11, -10, -9, -8, -6, -4, 0, 0
|
||
|
; 5000
|
||
|
|
||
|
Function5000: ; 5000
|
||
|
ld a, [wc2de]
|
||
|
ld hl, wc2df
|
||
|
ld [hl], a
|
||
|
ld a, $3e
|
||
|
ld [wc2de], a
|
||
|
ld a, [hl]
|
||
|
ret
|
||
|
; 500e
|
||
|
|
||
|
Function500e: ; 500e
|
||
|
ld hl, wc2e3
|
||
|
call Function1aae
|
||
|
ret
|
||
|
; 5015
|
||
|
|
||
|
Function5015: ; 5015
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
inc [hl]
|
||
|
ld d, 0
|
||
|
ld hl, wc2e2
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ret
|
||
|
; 5026
|
||
|
|
||
|
Function5026: ; 5026
|
||
|
ld hl, OBJECT_27
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
inc [hl]
|
||
|
ld d, 0
|
||
|
ld hl, wc2e6
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ret
|
||
|
; 5037
|
||
|
|
||
|
Function5037: ; 5037
|
||
|
ld hl, Function503d
|
||
|
jp Function5041
|
||
|
; 503d
|
||
|
|
||
|
Function503d: ; 503d
|
||
|
ld a, [wc2e2]
|
||
|
ret
|
||
|
; 5041
|
||
|
|
||
|
Function5041: ; 5041
|
||
|
call Function5055
|
||
|
.asm_5044
|
||
|
xor a
|
||
|
ld [wc2ea], a
|
||
|
call Function505e
|
||
|
call Function506b
|
||
|
ld a, [wc2ea]
|
||
|
and a
|
||
|
jr nz, .asm_5044
|
||
|
ret
|
||
|
; 5055
|
||
|
|
||
|
Function5055: ; 5055
|
||
|
ld a, l
|
||
|
ld [wc2eb], a
|
||
|
ld a, h
|
||
|
ld [wc2ec], a
|
||
|
ret
|
||
|
; 505e
|
||
|
|
||
|
Function505e: ; 505e
|
||
|
ld hl, wc2eb
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
jp [hl]
|
||
|
; 5065
|
||
|
|
||
|
Function5065: ; 5065
|
||
|
ld a, $1
|
||
|
ld [wc2ea], a
|
||
|
ret
|
||
|
; 506b
|
||
|
|
||
|
Function506b: ; 506b
|
||
|
push af
|
||
|
call Function54b8
|
||
|
pop af
|
||
|
ld hl, MovementPointers
|
||
|
rst JumpTable
|
||
|
ret
|
||
|
; 5075
|
||
|
|
||
|
|
||
|
; 5075
|
||
|
INCLUDE "engine/movement.asm"
|
||
|
; 54b8
|
||
|
|
||
|
|
||
|
Function54b8: ; 54b8
|
||
|
ld e, a
|
||
|
ld a, [wd4ce]
|
||
|
cp $ff
|
||
|
ret z
|
||
|
ld a, [wd4cd]
|
||
|
ld d, a
|
||
|
ld a, [$ffaf]
|
||
|
cp d
|
||
|
ret nz
|
||
|
ld a, e
|
||
|
cp $3e
|
||
|
ret z
|
||
|
cp $47
|
||
|
ret z
|
||
|
cp $4b
|
||
|
ret z
|
||
|
cp $50
|
||
|
ret z
|
||
|
cp $8
|
||
|
ret c
|
||
|
push af
|
||
|
ld hl, wd4d0
|
||
|
inc [hl]
|
||
|
ld e, [hl]
|
||
|
ld d, 0
|
||
|
ld hl, wd4d1
|
||
|
add hl, de
|
||
|
pop af
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 54e6
|
||
|
|
||
|
Function54e6: ; 54e6
|
||
|
ld hl, wd4d0
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
jr z, .asm_5503
|
||
|
cp $ff
|
||
|
jr z, .asm_5503
|
||
|
dec [hl]
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, wd4d1
|
||
|
add hl, de
|
||
|
inc e
|
||
|
ld a, $ff
|
||
|
.asm_54fc
|
||
|
ld d, [hl]
|
||
|
ld [hld], a
|
||
|
ld a, d
|
||
|
dec e
|
||
|
jr nz, .asm_54fc
|
||
|
ret
|
||
|
|
||
|
.asm_5503
|
||
|
call Function550a
|
||
|
ret c
|
||
|
ld a, $3e
|
||
|
ret
|
||
|
; 550a
|
||
|
|
||
|
Function550a: ; 550a
|
||
|
ld a, [wd4cd]
|
||
|
cp $ff
|
||
|
jr z, .asm_5520
|
||
|
push bc
|
||
|
call Function1ae5
|
||
|
ld hl, OBJECT_00
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop bc
|
||
|
and a
|
||
|
jr z, .asm_5520
|
||
|
and a
|
||
|
ret
|
||
|
|
||
|
.asm_5520
|
||
|
ld a, $ff
|
||
|
ld [wd4ce], a
|
||
|
ld a, $47
|
||
|
scf
|
||
|
ret
|
||
|
; 5529
|
||
|
|
||
|
Function5529: ; 5529
|
||
|
push bc
|
||
|
ld de, .data_5535
|
||
|
call Function55b9
|
||
|
call Function55ac
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.data_5535
|
||
|
db $00, $05, $1b
|
||
|
; 5538
|
||
|
|
||
|
Function5538: ; 5538
|
||
|
push bc
|
||
|
ld de, .data_5544
|
||
|
call Function55b9
|
||
|
call Function55ac
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.data_5544
|
||
|
db $00, $05, $22
|
||
|
; 5547
|
||
|
|
||
|
Function5547: ; 5547
|
||
|
push bc
|
||
|
ld de, .data_5553
|
||
|
call Function55b9
|
||
|
call Function55ac
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.data_5553
|
||
|
db $00, $05, $1c
|
||
|
; 5556
|
||
|
|
||
|
Function5556: ; 5556
|
||
|
push bc
|
||
|
ld de, .data_5562
|
||
|
call Function55b9
|
||
|
call Function55ac
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.data_5562
|
||
|
db $00, $06, $23
|
||
|
; 5565
|
||
|
|
||
|
Function5565: ; 5565
|
||
|
push bc
|
||
|
push af
|
||
|
ld de, .data_5576
|
||
|
call Function55b9
|
||
|
pop af
|
||
|
ld [wc2f5], a
|
||
|
call Function55ac
|
||
|
pop bc
|
||
|
ret
|
||
|
|
||
|
.data_5576
|
||
|
db $00, $05, $1d
|
||
|
; 5579
|
||
|
|
||
|
Function5579: ; 5579
|
||
|
push bc
|
||
|
ld a, [$ffaf]
|
||
|
ld c, a
|
||
|
call Function5582
|
||
|
pop bc
|
||
|
ret
|
||
|
; 5582
|
||
|
|
||
|
Function5582: ; 5582
|
||
|
ld de, ObjectStructs
|
||
|
ld a, $d
|
||
|
.asm_5587
|
||
|
push af
|
||
|
ld hl, OBJECT_04
|
||
|
add hl, de
|
||
|
bit 7, [hl]
|
||
|
jr z, .asm_55a1
|
||
|
ld hl, OBJECT_00
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
and a
|
||
|
jr z, .asm_55a1
|
||
|
push bc
|
||
|
xor a
|
||
|
ld bc, ObjectStruct2 - ObjectStruct1
|
||
|
call ByteFill
|
||
|
pop bc
|
||
|
|
||
|
.asm_55a1
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, de
|
||
|
ld d, h
|
||
|
ld e, l
|
||
|
pop af
|
||
|
dec a
|
||
|
jr nz, .asm_5587
|
||
|
ret
|
||
|
; 55ac
|
||
|
|
||
|
Function55ac: ; 55ac
|
||
|
call Function1a13
|
||
|
ret nc
|
||
|
ld d, h
|
||
|
ld e, l
|
||
|
callba Function8286
|
||
|
ret
|
||
|
; 55b9
|
||
|
|
||
|
Function55b9: ; 55b9
|
||
|
ld hl, wc2f0
|
||
|
ld [hl], $ff
|
||
|
inc hl
|
||
|
ld [hl], $ff
|
||
|
inc hl
|
||
|
ld a, [de]
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
ld a, [de]
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
ld a, [de]
|
||
|
ld [hli], a
|
||
|
ld a, [$ffaf]
|
||
|
ld [hli], a
|
||
|
push hl
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
pop hl
|
||
|
ld [hl], d
|
||
|
inc hl
|
||
|
ld [hl], e
|
||
|
inc hl
|
||
|
ld [hl], $ff
|
||
|
ret
|
||
|
; 55e0
|
||
|
|
||
|
Function55e0:: ; 55e0
|
||
|
ld a, [VramState]
|
||
|
bit 0, a
|
||
|
ret z
|
||
|
ld bc, ObjectStructs
|
||
|
xor a
|
||
|
.asm_55ea
|
||
|
ld [$ffaf], a
|
||
|
call Function1af1
|
||
|
jr z, .asm_55f4
|
||
|
call Function565c
|
||
|
|
||
|
.asm_55f4
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
ld a, [$ffaf]
|
||
|
inc a
|
||
|
cp $d
|
||
|
jr nz, .asm_55ea
|
||
|
ret
|
||
|
; 5602
|
||
|
|
||
|
Function5602: ; 5602
|
||
|
call Function5645
|
||
|
ld a, $0
|
||
|
call Function5629
|
||
|
ld a, [wd459]
|
||
|
bit 7, a
|
||
|
jr z, .asm_5619
|
||
|
ld a, [$ffe0]
|
||
|
and a
|
||
|
jr z, .asm_5619
|
||
|
call Function5629
|
||
|
|
||
|
.asm_5619
|
||
|
call Function5920
|
||
|
ret
|
||
|
; 561d
|
||
|
|
||
|
Function561d: ; 561d
|
||
|
call Function5645
|
||
|
ld a, $0
|
||
|
call Function5629
|
||
|
call Function5920
|
||
|
ret
|
||
|
; 5629
|
||
|
|
||
|
Function5629: ; 5629
|
||
|
cp $10
|
||
|
ret nc
|
||
|
call GetMapObject
|
||
|
ld hl, $0000
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp $ff
|
||
|
ret z
|
||
|
cp $d
|
||
|
ret nc
|
||
|
call Function1ae5
|
||
|
call Function1af1
|
||
|
ret z
|
||
|
call Function5673
|
||
|
ret
|
||
|
; 5645
|
||
|
|
||
|
Function5645: ; 5645
|
||
|
xor a
|
||
|
ld bc, ObjectStructs
|
||
|
.asm_5649
|
||
|
ld [$ffaf], a
|
||
|
call Function5680
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
ld a, [$ffaf]
|
||
|
inc a
|
||
|
cp $d
|
||
|
jr nz, .asm_5649
|
||
|
ret
|
||
|
; 565c
|
||
|
|
||
|
Function565c: ; 565c
|
||
|
push bc
|
||
|
call Function56cd
|
||
|
pop bc
|
||
|
jr c, Function5680
|
||
|
call Function56a3
|
||
|
jr c, Function5680
|
||
|
call Function5688
|
||
|
callba Function4440
|
||
|
xor a
|
||
|
ret
|
||
|
; 5673
|
||
|
|
||
|
Function5673: ; 5673
|
||
|
call Function56a3
|
||
|
jr c, Function5680
|
||
|
callba Function4440
|
||
|
xor a
|
||
|
ret
|
||
|
; 5680
|
||
|
|
||
|
Function5680: ; 5680
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld [hl], $ff
|
||
|
scf
|
||
|
ret
|
||
|
; 5688
|
||
|
|
||
|
Function5688: ; 5688
|
||
|
push bc
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
call Function2a3c
|
||
|
pop bc
|
||
|
ld hl, OBJECT_STANDING_TILE
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
callba Function463f
|
||
|
ret
|
||
|
; 56a3
|
||
|
|
||
|
Function56a3: ; 56a3
|
||
|
ld hl, OBJECT_MAP_X
|
||
|
add hl, bc
|
||
|
ld d, [hl]
|
||
|
ld hl, OBJECT_MAP_Y
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
inc d
|
||
|
inc e
|
||
|
ld a, [XCoord]
|
||
|
cp d
|
||
|
jr z, .asm_56bc
|
||
|
jr nc, .asm_56cb
|
||
|
add $b
|
||
|
cp d
|
||
|
jr c, .asm_56cb
|
||
|
|
||
|
.asm_56bc
|
||
|
ld a, [YCoord]
|
||
|
cp e
|
||
|
jr z, .asm_56c9
|
||
|
jr nc, .asm_56cb
|
||
|
add $a
|
||
|
cp e
|
||
|
jr c, .asm_56cb
|
||
|
|
||
|
.asm_56c9
|
||
|
xor a
|
||
|
ret
|
||
|
|
||
|
.asm_56cb
|
||
|
scf
|
||
|
ret
|
||
|
; 56cd
|
||
|
|
||
|
Function56cd: ; 56cd
|
||
|
ld a, [wd14c]
|
||
|
ld d, a
|
||
|
ld hl, OBJECT_SPRITE_X_OFFSET
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
add d
|
||
|
cp $f0
|
||
|
jr nc, .asm_56e5
|
||
|
cp $a0
|
||
|
jp nc, .asm_5768
|
||
|
|
||
|
.asm_56e5
|
||
|
and $7
|
||
|
ld d, $2
|
||
|
cp $4
|
||
|
jr c, .asm_56ef
|
||
|
ld d, $3
|
||
|
|
||
|
.asm_56ef
|
||
|
ld a, [hl]
|
||
|
srl a
|
||
|
srl a
|
||
|
srl a
|
||
|
cp $14
|
||
|
jr c, .asm_56fc
|
||
|
sub $20
|
||
|
|
||
|
.asm_56fc
|
||
|
ld [$ffbd], a
|
||
|
ld a, [wd14d]
|
||
|
ld e, a
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
add e
|
||
|
cp $f0
|
||
|
jr nc, .asm_5715
|
||
|
cp $90
|
||
|
jr nc, .asm_5768
|
||
|
|
||
|
.asm_5715
|
||
|
and $7
|
||
|
ld e, $2
|
||
|
cp $4
|
||
|
jr c, .asm_571f
|
||
|
ld e, $3
|
||
|
|
||
|
.asm_571f
|
||
|
ld a, [hl]
|
||
|
srl a
|
||
|
srl a
|
||
|
srl a
|
||
|
cp $12
|
||
|
jr c, .asm_572c
|
||
|
sub $20
|
||
|
|
||
|
.asm_572c
|
||
|
ld [$ffbe], a
|
||
|
ld hl, OBJECT_PALETTE
|
||
|
add hl, bc
|
||
|
bit 7, [hl]
|
||
|
jr z, .asm_573e
|
||
|
ld a, d
|
||
|
add $2
|
||
|
ld d, a
|
||
|
ld a, e
|
||
|
add $2
|
||
|
ld e, a
|
||
|
|
||
|
.asm_573e
|
||
|
ld a, d
|
||
|
ld [$ffbf], a
|
||
|
.asm_5741
|
||
|
ld a, [$ffbf]
|
||
|
ld d, a
|
||
|
ld a, [$ffbe]
|
||
|
add e
|
||
|
dec a
|
||
|
cp $12
|
||
|
jr nc, .asm_5763
|
||
|
ld b, a
|
||
|
.asm_574d
|
||
|
ld a, [$ffbd]
|
||
|
add d
|
||
|
dec a
|
||
|
cp $14
|
||
|
jr nc, .asm_5760
|
||
|
ld c, a
|
||
|
push bc
|
||
|
call GetTileCoord
|
||
|
pop bc
|
||
|
ld a, [hl]
|
||
|
cp $60
|
||
|
jr nc, .asm_5768
|
||
|
|
||
|
.asm_5760
|
||
|
dec d
|
||
|
jr nz, .asm_574d
|
||
|
|
||
|
.asm_5763
|
||
|
dec e
|
||
|
jr nz, .asm_5741
|
||
|
and a
|
||
|
ret
|
||
|
|
||
|
.asm_5768
|
||
|
scf
|
||
|
ret
|
||
|
; 576a
|
||
|
|
||
|
Function576a:: ; 576a
|
||
|
call Function5771
|
||
|
call Function5781
|
||
|
ret
|
||
|
; 5771
|
||
|
|
||
|
Function5771: ; 5771
|
||
|
xor a
|
||
|
ld [wd14e], a
|
||
|
ld [wd14f], a
|
||
|
ld [wd150], a
|
||
|
ld a, $ff
|
||
|
ld [wd151], a
|
||
|
ret
|
||
|
; 5781
|
||
|
|
||
|
Function5781: ; 5781
|
||
|
ld bc, ObjectStructs
|
||
|
xor a
|
||
|
.asm_5785
|
||
|
ld [$ffaf], a
|
||
|
call Function1af1
|
||
|
jr z, .asm_578f
|
||
|
call Function437b
|
||
|
|
||
|
.asm_578f
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
ld a, [$ffaf]
|
||
|
inc a
|
||
|
cp $d
|
||
|
jr nz, .asm_5785
|
||
|
ret
|
||
|
; 579d
|
||
|
|
||
|
Function579d: ; 579d
|
||
|
ld a, $3e
|
||
|
ld [wc2de], a
|
||
|
ld [wc2df], a
|
||
|
xor a
|
||
|
ld [wd04e], a
|
||
|
ld [wd4e2], a
|
||
|
call Function57bc
|
||
|
callba Function149c6
|
||
|
call c, Function57d9
|
||
|
call Function57ca
|
||
|
ret
|
||
|
; 57bc
|
||
|
|
||
|
Function57bc: ; 57bc
|
||
|
ld hl, wd45b
|
||
|
bit 7, [hl]
|
||
|
jr nz, .asm_57c4
|
||
|
ret
|
||
|
|
||
|
.asm_57c4
|
||
|
ld a, $0
|
||
|
ld [PlayerAction], a
|
||
|
ret
|
||
|
; 57ca
|
||
|
|
||
|
Function57ca: ; 57ca
|
||
|
ld hl, wd45b
|
||
|
bit 5, [hl]
|
||
|
ret z
|
||
|
ld a, [wd45b]
|
||
|
and $3
|
||
|
add a
|
||
|
add a
|
||
|
jr Function57db
|
||
|
; 57d9
|
||
|
|
||
|
Function57d9: ; 57d9
|
||
|
ld a, $0
|
||
|
; fallthrough
|
||
|
; 57db
|
||
|
|
||
|
Function57db: ; 57db
|
||
|
ld bc, PlayerStruct
|
||
|
call Function1af8
|
||
|
ret
|
||
|
; 57e2
|
||
|
|
||
|
Function57e2: ; 57e2
|
||
|
ld a, d
|
||
|
and $80
|
||
|
ret z
|
||
|
ld bc, $0000 ; debug?
|
||
|
ld hl, OBJECT_08
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
or d
|
||
|
ld [hl], a
|
||
|
ld a, d
|
||
|
swap a
|
||
|
and $7
|
||
|
ld d, a
|
||
|
ld bc, PlayerStruct
|
||
|
ld hl, OBJECT_PALETTE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $f8
|
||
|
or d
|
||
|
ld [hl], a
|
||
|
ret
|
||
|
; 5803
|
||
|
|
||
|
Function5803:: ; 5803
|
||
|
push bc
|
||
|
ld a, b
|
||
|
call Function5815
|
||
|
pop bc
|
||
|
ret c
|
||
|
ld a, c
|
||
|
call Function582c
|
||
|
callba Function848a
|
||
|
ret
|
||
|
; 5815
|
||
|
|
||
|
Function5815: ; 5815
|
||
|
call Function18de
|
||
|
ret c
|
||
|
ld a, [$ffb0]
|
||
|
ld [wd4cd], a
|
||
|
ret
|
||
|
; 581f
|
||
|
|
||
|
Function581f:: ; 581f
|
||
|
call Function5826
|
||
|
call Function5847
|
||
|
ret
|
||
|
; 5826
|
||
|
|
||
|
Function5826: ; 5826
|
||
|
ld a, $ff
|
||
|
ld [wd4cd], a
|
||
|
ret
|
||
|
; 582c
|
||
|
|
||
|
Function582c: ; 582c
|
||
|
push af
|
||
|
call Function5847
|
||
|
pop af
|
||
|
call Function18de
|
||
|
ret c
|
||
|
ld hl, OBJECT_03
|
||
|
add hl, bc
|
||
|
ld [hl], $13
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ld a, [$ffb0]
|
||
|
ld [wd4ce], a
|
||
|
ret
|
||
|
; 5847
|
||
|
|
||
|
Function5847: ; 5847
|
||
|
ld a, [wd4ce]
|
||
|
cp $ff
|
||
|
ret z
|
||
|
call Function1ae5
|
||
|
callba Function58e3
|
||
|
ld a, $ff
|
||
|
ld [wd4ce], a
|
||
|
ret
|
||
|
; 585c
|
||
|
|
||
|
Function585c:: ; 585c
|
||
|
ld a, c
|
||
|
call Function18de
|
||
|
ret c
|
||
|
push bc
|
||
|
call Function587a
|
||
|
pop bc
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 5, [hl]
|
||
|
xor a
|
||
|
ret
|
||
|
; 586e
|
||
|
|
||
|
Function586e: ; 586e
|
||
|
call Function18de
|
||
|
ret c
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
set 5, [hl]
|
||
|
xor a
|
||
|
ret
|
||
|
; 587a
|
||
|
|
||
|
Function587a: ; 587a
|
||
|
ld bc, ObjectStructs
|
||
|
xor a
|
||
|
.asm_587e
|
||
|
push af
|
||
|
call Function1af1
|
||
|
jr z, .asm_588a
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
set 5, [hl]
|
||
|
|
||
|
.asm_588a
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
pop af
|
||
|
inc a
|
||
|
cp $d
|
||
|
jr nz, .asm_587e
|
||
|
ret
|
||
|
; 5897
|
||
|
|
||
|
Function5897:: ; 5897
|
||
|
ld a, [wd4cd]
|
||
|
cp $ff
|
||
|
ret z
|
||
|
push bc
|
||
|
call Function1ae5
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop bc
|
||
|
cp c
|
||
|
ret nz
|
||
|
ld a, [wd4ce]
|
||
|
cp $ff
|
||
|
ret z
|
||
|
call Function1ae5
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 5, [hl]
|
||
|
ret
|
||
|
; 58b9
|
||
|
|
||
|
Function58b9:: ; 58b9
|
||
|
push bc
|
||
|
ld bc, ObjectStructs
|
||
|
xor a
|
||
|
.asm_58be
|
||
|
push af
|
||
|
call Function1af1
|
||
|
jr z, .asm_58ca
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 5, [hl]
|
||
|
|
||
|
.asm_58ca
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
pop af
|
||
|
inc a
|
||
|
cp $d
|
||
|
jr nz, .asm_58be
|
||
|
pop bc
|
||
|
ret
|
||
|
; 58d8
|
||
|
|
||
|
Function58d8: ; 58d8
|
||
|
call Function18de
|
||
|
ret c
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
res 5, [hl]
|
||
|
ret
|
||
|
; 58e3
|
||
|
|
||
|
Function58e3: ; 58e3
|
||
|
ld hl, OBJECT_01
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp $ff
|
||
|
jp z, Function5903
|
||
|
push bc
|
||
|
call GetMapObject
|
||
|
ld hl, $0004
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
pop bc
|
||
|
ld hl, OBJECT_03
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ret
|
||
|
; 5903
|
||
|
|
||
|
Function5903: ; 5903
|
||
|
call GetSpriteDirection
|
||
|
rrca
|
||
|
rrca
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, .data_591c
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
ld hl, OBJECT_03
|
||
|
add hl, bc
|
||
|
ld [hl], a
|
||
|
ld hl, OBJECT_09
|
||
|
add hl, bc
|
||
|
ld [hl], $0
|
||
|
ret
|
||
|
|
||
|
.data_591c
|
||
|
db 6, 7, 8, 9
|
||
|
; 5920
|
||
|
|
||
|
Function5920:: ; 5920
|
||
|
ld a, [VramState]
|
||
|
bit 0, a
|
||
|
ret z
|
||
|
xor a
|
||
|
ld [$ffbd], a
|
||
|
ld a, [hOAMUpdate]
|
||
|
push af
|
||
|
ld a, $1
|
||
|
ld [hOAMUpdate], a
|
||
|
call Function5991
|
||
|
call Function593a
|
||
|
pop af
|
||
|
ld [hOAMUpdate], a
|
||
|
ret
|
||
|
; 593a
|
||
|
|
||
|
Function593a: ; 593a
|
||
|
ld a, [VramState]
|
||
|
bit 1, a
|
||
|
ld b, $a0
|
||
|
jr z, .asm_5945
|
||
|
ld b, $70
|
||
|
|
||
|
.asm_5945
|
||
|
ld a, [$ffbd]
|
||
|
cp b
|
||
|
ret nc
|
||
|
ld l, a
|
||
|
ld h, $c4
|
||
|
ld de, OBJECT_04
|
||
|
ld a, b
|
||
|
ld c, $a0
|
||
|
.asm_5952
|
||
|
ld [hl], c
|
||
|
add hl, de
|
||
|
cp l
|
||
|
jr nz, .asm_5952
|
||
|
ret
|
||
|
; 5958
|
||
|
|
||
|
Function5958: ; 5958
|
||
|
push hl
|
||
|
push de
|
||
|
push bc
|
||
|
ld a, [wd14c]
|
||
|
ld d, a
|
||
|
ld a, [wd14d]
|
||
|
ld e, a
|
||
|
ld bc, ObjectStructs
|
||
|
ld a, $d
|
||
|
|
||
|
.asm_5968
|
||
|
push af
|
||
|
call Function1af1
|
||
|
jr z, .asm_597c
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add d
|
||
|
ld [hl], a
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
add e
|
||
|
ld [hl], a
|
||
|
|
||
|
.asm_597c
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
pop af
|
||
|
dec a
|
||
|
jr nz, .asm_5968
|
||
|
|
||
|
xor a
|
||
|
ld [wd14c], a
|
||
|
ld [wd14d], a
|
||
|
pop bc
|
||
|
pop de
|
||
|
pop hl
|
||
|
ret
|
||
|
; 5991
|
||
|
|
||
|
Function5991: ; 5991
|
||
|
call Function59a4
|
||
|
ld c, $30
|
||
|
call Function59f3
|
||
|
ld c, $20
|
||
|
call Function59f3
|
||
|
ld c, $10
|
||
|
call Function59f3
|
||
|
ret
|
||
|
; 59a4
|
||
|
|
||
|
Function59a4: ; 59a4
|
||
|
xor a
|
||
|
ld hl, wc2eb
|
||
|
ld bc, 13
|
||
|
call ByteFill
|
||
|
|
||
|
ld d, 0
|
||
|
ld bc, ObjectStructs
|
||
|
ld hl, wc2eb
|
||
|
.loop
|
||
|
push hl
|
||
|
call Function1af1
|
||
|
jr z, .skip
|
||
|
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp -1
|
||
|
jr z, .skip
|
||
|
|
||
|
; Define the sprite priority.
|
||
|
ld e, $10
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
bit 0, [hl]
|
||
|
jr nz, .add
|
||
|
ld e, $20
|
||
|
bit 1, [hl]
|
||
|
jr z, .add
|
||
|
ld e, $30
|
||
|
jr .add
|
||
|
|
||
|
.skip
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
pop hl
|
||
|
jr .next
|
||
|
|
||
|
.add
|
||
|
ld hl, ObjectStruct2 - ObjectStruct1
|
||
|
add hl, bc
|
||
|
ld b, h
|
||
|
ld c, l
|
||
|
pop hl
|
||
|
ld a, d
|
||
|
or e
|
||
|
ld [hli], a
|
||
|
|
||
|
.next
|
||
|
inc d
|
||
|
ld a, d
|
||
|
cp $d
|
||
|
jr nz, .loop
|
||
|
ret
|
||
|
; 59f3
|
||
|
|
||
|
Function59f3: ; 59f3
|
||
|
ld hl, wc2eb
|
||
|
.next
|
||
|
ld a, [hli]
|
||
|
ld d, a
|
||
|
and $f0
|
||
|
ret z
|
||
|
cp c
|
||
|
jr nz, .next
|
||
|
|
||
|
push bc
|
||
|
push hl
|
||
|
ld a, d
|
||
|
and $f
|
||
|
call Function5ac2
|
||
|
call Function5a0d
|
||
|
pop hl
|
||
|
pop bc
|
||
|
jr .next
|
||
|
; 5a0d
|
||
|
|
||
|
Function5a0d: ; 5a0d
|
||
|
ld hl, OBJECT_SPRITE
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
and $7f
|
||
|
ld [$ffc1], a
|
||
|
|
||
|
xor a
|
||
|
bit 7, [hl]
|
||
|
jr nz, .asm_5a1d
|
||
|
or 8
|
||
|
.asm_5a1d
|
||
|
|
||
|
ld hl, OBJECT_FLAGS
|
||
|
add hl, bc
|
||
|
ld e, [hl]
|
||
|
bit 7, e
|
||
|
jr z, .asm_5a28
|
||
|
or $80
|
||
|
.asm_5a28
|
||
|
|
||
|
bit 4, e
|
||
|
jr z, .asm_5a2e
|
||
|
or $10
|
||
|
.asm_5a2e
|
||
|
|
||
|
ld hl, OBJECT_PALETTE
|
||
|
add hl, bc
|
||
|
ld d, a
|
||
|
ld a, [hl]
|
||
|
and 7
|
||
|
or d
|
||
|
ld d, a
|
||
|
|
||
|
xor a
|
||
|
bit 3, e
|
||
|
jr z, .asm_5a3f
|
||
|
or $80
|
||
|
.asm_5a3f
|
||
|
ld [$ffc2], a
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_X
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_X_OFFSET
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
|
||
|
add 8
|
||
|
|
||
|
ld e, a
|
||
|
ld a, [wd14c]
|
||
|
add e
|
||
|
ld [$ffbf], a
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_Y
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
|
||
|
ld hl, OBJECT_SPRITE_Y_OFFSET
|
||
|
add hl, bc
|
||
|
add [hl]
|
||
|
|
||
|
add 12
|
||
|
|
||
|
ld e, a
|
||
|
ld a, [wd14d]
|
||
|
add e
|
||
|
ld [$ffc0], a
|
||
|
|
||
|
ld hl, OBJECT_FACING
|
||
|
add hl, bc
|
||
|
ld a, [hl]
|
||
|
cp -1
|
||
|
jp z, .done
|
||
|
cp NUM_FACINGS
|
||
|
jp nc, .done
|
||
|
|
||
|
ld l, a
|
||
|
ld h, 0
|
||
|
add hl, hl
|
||
|
ld bc, Facings
|
||
|
add hl, bc
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
|
||
|
ld a, [$ffbd]
|
||
|
ld c, a
|
||
|
ld b, Sprites / $100
|
||
|
ld a, [hli]
|
||
|
ld [$ffbe], a
|
||
|
add c
|
||
|
cp SpritesEnd % $100
|
||
|
jr nc, .full
|
||
|
|
||
|
.addsprite
|
||
|
ld a, [$ffc0]
|
||
|
add [hl]
|
||
|
inc hl
|
||
|
|
||
|
ld [bc], a
|
||
|
inc c
|
||
|
|
||
|
ld a, [$ffbf]
|
||
|
add [hl]
|
||
|
inc hl
|
||
|
|
||
|
ld [bc], a
|
||
|
inc c
|
||
|
|
||
|
ld e, [hl]
|
||
|
inc hl
|
||
|
|
||
|
ld a, [$ffc1]
|
||
|
bit 2, e
|
||
|
jr z, .asm_5aa3
|
||
|
xor a
|
||
|
.asm_5aa3
|
||
|
add [hl]
|
||
|
inc hl
|
||
|
|
||
|
ld [bc], a
|
||
|
inc c
|
||
|
|
||
|
ld a, e
|
||
|
bit 1, a
|
||
|
jr z, .asm_5aaf
|
||
|
ld a, [$ffc2]
|
||
|
or e
|
||
|
.asm_5aaf
|
||
|
and $f0
|
||
|
or d
|
||
|
ld [bc], a
|
||
|
inc c
|
||
|
|
||
|
ld a, [$ffbe]
|
||
|
dec a
|
||
|
ld [$ffbe], a
|
||
|
jr nz, .addsprite
|
||
|
|
||
|
ld a, c
|
||
|
ld [$ffbd], a
|
||
|
|
||
|
.done
|
||
|
xor a
|
||
|
ret
|
||
|
|
||
|
.full
|
||
|
scf
|
||
|
ret
|
||
|
; 5ac2
|
||
|
|
||
|
Function5ac2: ; 5ac2
|
||
|
ld c, a
|
||
|
ld b, 0
|
||
|
ld hl, .Addresses
|
||
|
add hl, bc
|
||
|
add hl, bc
|
||
|
ld c, [hl]
|
||
|
inc hl
|
||
|
ld b, [hl]
|
||
|
ret
|
||
|
; 5ace
|
||
|
|
||
|
.Addresses ; 5ace
|
||
|
dw PlayerStruct
|
||
|
dw ObjectStruct1
|
||
|
dw ObjectStruct2
|
||
|
dw ObjectStruct3
|
||
|
dw ObjectStruct4
|
||
|
dw ObjectStruct5
|
||
|
dw ObjectStruct6
|
||
|
dw ObjectStruct7
|
||
|
dw ObjectStruct8
|
||
|
dw ObjectStruct9
|
||
|
dw ObjectStruct10
|
||
|
dw ObjectStruct11
|
||
|
dw ObjectStruct12
|
||
|
; 5ae8
|
||
|
|