123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- IsPlayerOnDungeonWarp:
- xor a
- ld [wWhichDungeonWarp], a
- ld a, [wd72d]
- bit 4, a
- ret nz
- call ArePlayerCoordsInArray
- ret nc
- ld a, [wCoordIndex]
- ld [wWhichDungeonWarp], a
- ld hl, wd72d
- set 4, [hl]
- ld hl, wd732
- set 4, [hl]
- ret
- ; if a hidden object was found, stores $00 in [$ffee], else stores $ff
- CheckForHiddenObject:
- ld hl, $ffeb
- xor a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld de, $0
- ld hl, HiddenObjectMaps
- .hiddenMapLoop
- ld a, [hli]
- ld b, a
- cp $ff
- jr z, .noMatch
- ld a, [wCurMap]
- cp b
- jr z, .foundMatchingMap
- inc de
- inc de
- jr .hiddenMapLoop
- .foundMatchingMap
- ld hl, HiddenObjectPointers
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push hl
- ld hl, wHiddenObjectFunctionArgument
- xor a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- pop hl
- .hiddenObjectLoop
- ld a, [hli]
- cp $ff
- jr z, .noMatch
- ld [wHiddenObjectY], a
- ld b, a
- ld a, [hli]
- ld [wHiddenObjectX], a
- ld c, a
- call CheckIfCoordsInFrontOfPlayerMatch
- ld a, [hCoordsInFrontOfPlayerMatch]
- and a
- jr z, .foundMatchingObject
- inc hl
- inc hl
- inc hl
- inc hl
- push hl
- ld hl, wHiddenObjectIndex
- inc [hl]
- pop hl
- jr .hiddenObjectLoop
- .foundMatchingObject
- ld a, [hli]
- ld [wHiddenObjectFunctionArgument], a
- ld a, [hli]
- ld [wHiddenObjectFunctionRomBank], a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ret
- .noMatch
- ld a, $ff
- ld [$ffee], a
- ret
- ; checks if the coordinates in front of the player's sprite match Y in b and X in c
- ; [hCoordsInFrontOfPlayerMatch] = $00 if they match, $ff if they don't match
- CheckIfCoordsInFrontOfPlayerMatch:
- ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
- cp SPRITE_FACING_UP
- jr z, .facingUp
- cp SPRITE_FACING_LEFT
- jr z, .facingLeft
- cp SPRITE_FACING_RIGHT
- jr z, .facingRight
- ; facing down
- ld a, [wYCoord]
- inc a
- jr .upDownCommon
- .facingUp
- ld a, [wYCoord]
- dec a
- .upDownCommon
- cp b
- jr nz, .didNotMatch
- ld a, [wXCoord]
- cp c
- jr nz, .didNotMatch
- jr .matched
- .facingLeft
- ld a, [wXCoord]
- dec a
- jr .leftRightCommon
- .facingRight
- ld a, [wXCoord]
- inc a
- .leftRightCommon
- cp c
- jr nz, .didNotMatch
- ld a, [wYCoord]
- cp b
- jr nz, .didNotMatch
- .matched
- xor a
- jr .done
- .didNotMatch
- ld a, $ff
- .done
- ld [hCoordsInFrontOfPlayerMatch], a
- ret
- INCLUDE "data/hidden_objects.asm"
|