![]() |
Routines |
| Prev: 48329 | Up: Map | Next: 48459 |
|
Used by the routine at RecordResultCharacterScript.
Follows the object link and compares it with the character on screen.
|
||||
| ProcessObjectPointer | 48390 | PUSH IY | Save the schedule entry. | |
| 48392 | PUSH IX | Copy the character record from IX into IY. | ||
| 48394 | POP IY | |||
| 48396 | LD IX,40950 | Point at the object display link. | ||
| ProcessObjectPointer_Loop | 48400 | CALL FetchObjectPointerFromStack | Go to ProcessObjectPointer_TestStepSucceedsScript if the object pointer is zero. | |
| 48403 | JR Z,ProcessObjectPointer_TestStepSucceedsScript | |||
| 48405 | LD B,(IX+2) | Take the byte at IX+2 into B and the byte at IY+2 into C. | ||
| 48408 | LD C,(IY+2) | |||
| 48411 | LD A,(IX+0) | Jump ahead to ProcessObjectPointer_Next if this id matches the character id. | ||
| 48414 | CP (IY+0) | |||
| 48417 | JR Z,ProcessObjectPointer_Next | |||
| 48419 | LD C,(IY+0) | Store IY+0 in C and jump ahead to ProcessObjectPointer_Next if the id in A matches IY+2. | ||
| 48422 | CP (IY+2) | |||
| 48425 | JR Z,ProcessObjectPointer_Next | |||
| 48427 | LD B,(IX+0) | Read the record's flag byte. | ||
| 48430 | LD A,(IX+2) | Jump ahead to ProcessObjectPointer_Next if the byte at IX+2 matches the byte at IY+2. | ||
| 48433 | CP (IY+2) | |||
| 48436 | JR Z,ProcessObjectPointer_Next | |||
| 48438 | LD C,(IY+2) | Jump back to ProcessObjectPointer_Loop while this id does not match the character id. | ||
| 48441 | CP (IY+0) | |||
| 48444 | JR NZ,ProcessObjectPointer_Loop | |||
| ProcessObjectPointer_Next | 48446 | LD A,B | Go to ProcessObjectPointer_Loop if the object id matches the character. | |
| 48447 | CP C | |||
| 48448 | JR Z,ProcessObjectPointer_Loop | |||
| 48450 | POP IY | |||
| 48452 | XOR A | Clear A. | ||
| 48453 | RET | Return. | ||
| ProcessObjectPointer_TestStepSucceedsScript | 48454 | OR 1 | Reset the zero flag. | |
| 48456 | POP IY | Restore IY from the stack. | ||
| 48458 | RET | Return. | ||
| Prev: 48329 | Up: Map | Next: 48459 |