Prev: D064 Up: Map Next: D0D0
D078: Check Object Visibility
Output
F Carry flag set if object is visible
CheckObjectVisibility D078 PUSH IX Stash IX, IY and BC on the stack.
D07A PUSH IY
D07C PUSH BC
D07D LD IX,($A017) IX=*CurrentCharacterData.
D081 LD A,(IX+$04) A=*IX+04.
D084 AND %10000000 Keep only bit 7.
D086 JR Z,CheckObjectVisibility_2 Jump to CheckObjectVisibility_2 if ?? is equal to 00.
D088 CALL CheckObjectMother Call CheckObjectMother.
D08B INC A Increment A by one.
D08C JR NZ,CheckObjectVisibility_0 Jump to CheckObjectVisibility_0 if A is not equal to 00.
D08E CALL FetchCurrentCharacterLocation Call FetchCurrentCharacterLocation.
D091 BIT 7,(IX+$00) Jump to CheckObjectVisibility_2 if bit 7 of *IX+00 is set.
D095 JR NZ,CheckObjectVisibility_2
D097 CALL GetTimePeriod Call GetTimePeriod.
D09A CP $01 Jump to CheckObjectVisibility_2 if the time-period code is anything other than late night/ evening (8 PM - 5 AM).
D09C JR NZ,CheckObjectVisibility_2
It's late night/ evening (8 PM - 5 AM).
CheckObjectVisibility_0 D09E LD IX,$8B6F IX=Table_Objects.
CheckObjectVisibility_1 D0A2 CALL FetchNextObject Call FetchNextObject.
D0A5 JR Z,CheckObjectVisibility_3 Jump to CheckObjectVisibility_3 if A is equal to 01.
D0A7 LD A,(IY+$00) Jump to CheckObjectVisibility_1 if *IY+00 is not equal to 01.
D0AA CP $01
D0AC JR NZ,CheckObjectVisibility_1
D0AE LD A,(IY+$05) A=*IY+05.
D0B1 XOR %10110111 Flip bits 0-2, 4-5, 7.
D0B3 AND %01011100 Keep only bits 2-4, 6.
D0B5 JR NZ,CheckObjectVisibility_1 Jump to CheckObjectVisibility_1 if A is not equal to 01.
D0B7 LD A,(IY+$04) A=*IY+04.
D0BA AND %10000000 Keep only bit 7.
D0BC JR Z,CheckObjectVisibility_1 Jump to CheckObjectVisibility_1 if A is equal to 01.
D0BE LD A,(IX+$00) A=*IX+00.
D0C1 CALL CheckObjectLocationMatch Call CheckObjectLocationMatch.
D0C4 JR Z,CheckObjectVisibility_1 Jump to CheckObjectVisibility_1 if A is equal to 01.
CheckObjectVisibility_2 D0C6 AND A Set flags.
D0C7 JR CheckObjectVisibility_4 Jump to CheckObjectVisibility_4.
CheckObjectVisibility_3 D0C9 SCF Set the carry flag.
CheckObjectVisibility_4 D0CA POP BC Restore BC, IY and IX from the stack.
D0CB POP IY
D0CD POP IX
D0CF RET Return.
Prev: D064 Up: Map Next: D0D0