Prev: BCC9 Up: Map Next: BD4B
BD06: Process Object Pointer
Used by the routine at RecordResultCharacterScript.
Follows the object link and compares it with the character on screen.
ProcessObjectPointer BD06 PUSH IY Save the schedule entry.
BD08 PUSH IX Copy the character record from IX into IY.
BD0A POP IY
BD0C LD IX,$9FF6 Point at the object display link.
ProcessObjectPointer_Loop BD10 CALL FetchObjectPointerFromStack Go to ProcessObjectPointer_TestStepSucceedsScript if the object pointer is zero.
BD13 JR Z,ProcessObjectPointer_TestStepSucceedsScript
BD15 LD B,(IX+$02) Take the byte at IX+02 into B and the byte at IY+02 into C.
BD18 LD C,(IY+$02)
BD1B LD A,(IX+$00) Jump ahead to ProcessObjectPointer_Next if this id matches the character id.
BD1E CP (IY+$00)
BD21 JR Z,ProcessObjectPointer_Next
BD23 LD C,(IY+$00) Store IY+00 in C and jump ahead to ProcessObjectPointer_Next if the id in A matches IY+02.
BD26 CP (IY+$02)
BD29 JR Z,ProcessObjectPointer_Next
BD2B LD B,(IX+$00) Read the record's flag byte.
BD2E LD A,(IX+$02) Jump ahead to ProcessObjectPointer_Next if the byte at IX+02 matches the byte at IY+02.
BD31 CP (IY+$02)
BD34 JR Z,ProcessObjectPointer_Next
BD36 LD C,(IY+$02) Jump back to ProcessObjectPointer_Loop while this id does not match the character id.
BD39 CP (IY+$00)
BD3C JR NZ,ProcessObjectPointer_Loop
ProcessObjectPointer_Next BD3E LD A,B Go to ProcessObjectPointer_Loop if the object id matches the character.
BD3F CP C
BD40 JR Z,ProcessObjectPointer_Loop
BD42 POP IY
BD44 XOR A Clear A.
BD45 RET Return.
ProcessObjectPointer_TestStepSucceedsScript BD46 OR $01 Reset the zero flag.
BD48 POP IY Restore IY from the stack.
BD4A RET Return.
Prev: BCC9 Up: Map Next: BD4B