diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 3683 |
1 files changed, 1 insertions, 3682 deletions
@@ -56,3688 +56,7 @@ PushOAMEnd ; 4049 -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 +INCLUDE "engine/map_objects.asm" Function5ae8: ; 5ae8 |