![]() |
Routines |
| Prev: BCC9 | Up: Map | Next: BD4B |
|
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 |