Routines |
Prev: 61625 | Up: Map | Next: 61720 |
61638 | LD DE,24576 | Point DE at table of bitmap data for Magic Knight at his current location | ||
61641 | LD A,(24841) | Load HL with double Magic Knight's current y-coordinate (pixels)... | ||
61644 | LD L,A | ... | ||
61645 | LD H,0 | ... | ||
61647 | ADD HL,HL | ... | ||
61648 | LD BC,65140 | Point BC at table of display file addresses of start of each pixel row | ||
61651 | ADD HL,BC | Add double y-coordinate as offset in HL | ||
61652 | LD (23412),HL | Store pointer to entry for pixel row at Magic Knight's current y-coordinate | ||
61655 | LD A,(24840) | Load A with Magic Knight's current x-coordinate (pixels) | ||
61658 | RRCA | Divide by two | ||
61659 | PUSH AF | Store AF (A = Magic Knight's current x-coordinate in pixels, divided by two) | ||
61660 | AND 3 | Clear all but the lowest three bits... | ||
61662 | LD (24843),A | ...and store the remaining value as Magic Knight's current frame index | ||
61665 | POP AF | Restore AF (A = Magic Knight's current x-coordinate in pixels, divided by two) | ||
61666 | RRCA | Divide Magic Knight's current x-coordinate in pixels by eight and remove remainder... | ||
61667 | RRCA | ... | ||
61668 | AND 31 | ... | ||
61670 | LD (23414),A | Store value (Magic Knight's current x-coordinate in characters) at 23414... | ||
61673 | LD C,A | ...and load into C | ||
61674 | LD B,32 | Load B with 32 (as Magic Knight is 32 pixels tall) | ||
61676 | LD IX,(23412) | Load IX with pointer to entry for pixel row at Magic Knight's current y-coordinate | ||
61680 | PUSH BC | Store BC (B = remaining number of pixel rows to store, C = Magic Knight's x-coordinate in characters) | ||
61681 | LD L,(IX+0) | Load display file address of pixel row at IX into HL... | ||
61684 | INC IX | ...and advance IX to entry for next pixel row down... | ||
61686 | LD H,(IX+0) | ... | ||
61689 | INC IX | ... | ||
61691 | LD B,0 | Set B to zero (BC = Magic Knight's current x-coordinate in characters) | ||
61693 | ADD HL,BC | Add BC to HL as offset | ||
61694 | LD A,(HL) | Copy three bytes of graphic data from display file address... | ||
61695 | LD (DE),A | ...into table of background bitmap data... | ||
61696 | INC HL | ...as Magic Knight can only occupy three consecutive character blocks horizontally... | ||
61697 | INC DE | ... | ||
61698 | LD A,(HL) | ... | ||
61699 | LD (DE),A | ... | ||
61700 | INC HL | ... | ||
61701 | INC DE | ... | ||
61702 | LD A,(HL) | ... | ||
61703 | LD (DE),A | ... | ||
61704 | INC DE | ... | ||
61705 | POP BC | Restore BC (B = remaining number of pixel rows to store, C = Magic Knight's x-coordinate in characters) | ||
61706 | DJNZ 61680 | Decrease B (remaining number of pixel rows to store) and loop back to 61680 if non-zero for next pixel row | ||
61708 | LD HL,24576 | Copy contents of table of bitmap data for Magic Knight at his current location to table of background bitmap data 24672... | ||
61711 | LD DE,24672 | ... | ||
61714 | LD BC,96 | ... | ||
61717 | LDIR | ... | ||
61719 | RET | Return |
Prev: 61625 | Up: Map | Next: 61720 |