Routines |
Prev: 52924 | Up: Map | Next: 53019 |
52937 | LD DE,23813 | Point DE at table of bitmap data for Magic Knight at his current location | ||
52940 | LD A,(25157) | Load HL with double Magic Knight's current y-coordinate (pixels)... | ||
52943 | LD L,A | ... | ||
52944 | LD H,0 | ... | ||
52946 | ADD HL,HL | ... | ||
52947 | LD BC,26240 | Point BC at table of display file addresses of start of each pixel row | ||
52950 | ADD HL,BC | Add double y-coordinate as offset in HL | ||
52951 | LD (23420),HL | Store pointer to entry for pixel row at Magic Knight's current y-coordinate | ||
52954 | LD A,(25156) | Load A with Magic Knight's current x-coordinate (pixels) | ||
52957 | RRCA | Divide by two | ||
52958 | PUSH AF | Store AF (A = Magic Knight's current x-coordinate in pixels, divided by two) | ||
52959 | AND 3 | Clear all but the lowest three bits... | ||
52961 | LD (25159),A | ...and store the remaining value as Magic Knight's current frame index | ||
52964 | POP AF | Restore AF (A = Magic Knight's current x-coordinate in pixels, divided by two) | ||
52965 | RRCA | Divide Magic Knight's current x-coordinate in pixels by eight and remove remainder... | ||
52966 | RRCA | ... | ||
52967 | AND 31 | ... | ||
52969 | LD (23422),A | Store value (Magic Knight's current x-coordinate in characters) at 23422... | ||
52972 | LD C,A | ...and load into C | ||
52973 | LD B,32 | Load B with 32 (as Magic Knight is 32 pixels tall) | ||
52975 | LD IX,(23420) | Load IX with pointer to entry for pixel row at Magic Knight's current y-coordinate | ||
52979 | PUSH BC | Store BC (B = remaining number of pixel rows to store, C = Magic Knight's x-coordinate in characters) | ||
52980 | LD L,(IX+0) | Load display file address of pixel row at IX into HL... | ||
52983 | INC IX | ...and advance IX to entry for next pixel row down... | ||
52985 | LD H,(IX+0) | ... | ||
52988 | INC IX | ... | ||
52990 | LD B,0 | Set B to zero (BC = Magic Knight's current x-coordinate in characters) | ||
52992 | ADD HL,BC | Add BC to HL as offset | ||
52993 | LD A,(HL) | Copy three bytes of graphic data from display file address... | ||
52994 | LD (DE),A | ...into table of background bitmap data... | ||
52995 | INC HL | ...as Magic Knight can only occupy three consecutive character blocks horizontally... | ||
52996 | INC DE | ... | ||
52997 | LD A,(HL) | ... | ||
52998 | LD (DE),A | ... | ||
52999 | INC HL | ... | ||
53000 | INC DE | ... | ||
53001 | LD A,(HL) | ... | ||
53002 | LD (DE),A | ... | ||
53003 | INC DE | ... | ||
53004 | POP BC | Restore BC (B = remaining number of pixel rows to store, C = Magic Knight's x-coordinate in characters) | ||
53005 | DJNZ 52979 | Decrease B (remaining number of pixel rows to store) and loop back to 52979 if non-zero for next pixel row | ||
53007 | LD HL,23813 | Copy contents of table of bitmap data for Magic Knight at his current location to table of background bitmap data 23909... | ||
53010 | LD DE,23909 | ... | ||
53013 | LD BC,96 | ... | ||
53016 | LDIR | ... | ||
53018 | RET | Return |
Prev: 52924 | Up: Map | Next: 53019 |