Routines |
Prev: 38512 | Up: Map | Next: 38660 |
Used by the routine at 31370.
|
||||||||||||||
38539 | LD IX,23296 | Store object's position data temporarily at 23296 - 23298... | ||||||||||||
38543 | LD (IX+1),C | ...x-coordinate... | ||||||||||||
38546 | LD (IX+2),B | ...y-coordinate... | ||||||||||||
38549 | LD C,A | Load index of object of interest into C | ||||||||||||
This entry point is used by the routine at 38512.
|
||||||||||||||
38550 | PUSH BC | Store BC | ||||||||||||
38551 | PUSH IX | Store IX | ||||||||||||
38553 | LD A,C | Load HL with eight times current object number... | ||||||||||||
38554 | ADD A,A | ... | ||||||||||||
38555 | ADD A,A | ... | ||||||||||||
38556 | LD L,A | ... | ||||||||||||
38557 | LD H,0 | ... | ||||||||||||
38559 | ADD HL,HL | ... | ||||||||||||
38560 | LD DE,42249 | Point DE at last byte (graphic index) of "nothing at all" properties | ||||||||||||
38563 | ADD HL,DE | Add eight times current object index as offset | ||||||||||||
38564 | LD A,(HL) | Load graphic index into A... | ||||||||||||
38565 | PUSH AF | ...and store | ||||||||||||
38566 | DEC HL | Move pointer back one byte to point at attribute of object... | ||||||||||||
38567 | LD A,(HL) | ... | ||||||||||||
38568 | LD (23695),A | ...and store value at 23695 | ||||||||||||
38571 | LD C,(IX+1) | Load C with x-coordinate of current object | ||||||||||||
38574 | LD B,(IX+2) | Load B with y-coordinate of current object | ||||||||||||
38577 | DEC B | Decrease y-coordinate by one | ||||||||||||
38578 | XOR A | Set A to zero | ||||||||||||
38579 | LD (23483),A | Reset all terrain interaction parameter flags | ||||||||||||
38582 | POP AF | Restore graphic index to A | ||||||||||||
38583 | PUSH AF | And store again | ||||||||||||
38584 | PUSH IX | Store IX (pointer to position data for current object) | ||||||||||||
38586 | CALL 29955 | Draw the object in OR mode | ||||||||||||
38589 | POP IX | Restore IX | ||||||||||||
38591 | POP AF | Restore graphic index to A | ||||||||||||
38592 | ADD A,A | Load into HL... | ||||||||||||
38593 | LD L,A | ... | ||||||||||||
38594 | LD H,0 | ... | ||||||||||||
38596 | ADD HL,HL | ...and multiply by four | ||||||||||||
38597 | LD DE,42643 | Point DE at height property of first object in graphics data lookup table... | ||||||||||||
38600 | ADD HL,DE | ...and add four times graphic index (as entries are 4 bytes wide) as offset to get entry for current object | ||||||||||||
38601 | LD A,(HL) | Load height property of current object into A... | ||||||||||||
38602 | LD (38616),A | ...and modify later instruction with this data | ||||||||||||
38605 | LD C,(IX+1) | Load C with x-coordinate of current object | ||||||||||||
38608 | LD B,(IX+2) | Load B with y-coordinate of current object | ||||||||||||
38611 | DEC B | Decrease y-coordinate by one | ||||||||||||
38612 | CALL 36586 | Point HL at terrain interaction data for character coordinates x=C, y=B | ||||||||||||
38615 | LD A,0 | Load A with "height" property of graphic of current object (x=height property of current object's graphic) | ||||||||||||
38617 | AND 192 | Discard all but the two most significant bits | ||||||||||||
38619 | OR (HL) | Combine with terrain interaction data already present for that block... | ||||||||||||
38620 | LD (HL),A | ... | ||||||||||||
38621 | INC HL | Advance HL to next byte in terrain interaction data | ||||||||||||
38622 | LD A,(38616) | Load A with height property of graphic of current object | ||||||||||||
38625 | RLCA | Next two bits correspond to next character block's terrain interaction data... | ||||||||||||
38626 | RLCA | ... | ||||||||||||
38627 | AND 192 | Discard all but the two most significant bits | ||||||||||||
38629 | OR (HL) | Combine with terrain interaction data already present for that block... | ||||||||||||
38630 | LD (HL),A | ... | ||||||||||||
38631 | LD BC,31 | Advance HL by 31 bytes in terrain interaction data (i.e. down a character row and to the left one character)... | ||||||||||||
38634 | ADD HL,BC | ... | ||||||||||||
38635 | LD A,(38616) | Load A with height property of graphic of current object | ||||||||||||
38638 | RLCA | Next two bits correspond to next character block's terrain interaction data... | ||||||||||||
38639 | RLCA | ... | ||||||||||||
38640 | RLCA | ... | ||||||||||||
38641 | RLCA | ... | ||||||||||||
38642 | AND 192 | Discard all but the two most significant bits | ||||||||||||
38644 | OR (HL) | Combine with terrain interaction data already present for that block... | ||||||||||||
38645 | LD (HL),A | ... | ||||||||||||
38646 | INC HL | Advance HL to next byte in terrain interaction data | ||||||||||||
38647 | LD A,(38616) | Load A with height property of graphic of current object | ||||||||||||
38650 | RRCA | Next two bits correspond to next character block's terrain interaction data... | ||||||||||||
38651 | RRCA | ... | ||||||||||||
38652 | AND 192 | Discard all but the two most significant bits | ||||||||||||
38654 | OR (HL) | Combine with terrain interaction data already present for that block... | ||||||||||||
38655 | LD (HL),A | ... | ||||||||||||
38656 | POP IX | Restore IX | ||||||||||||
38658 | POP BC | Restore BC | ||||||||||||
38659 | RET | Return |
Prev: 38512 | Up: Map | Next: 38660 |