![]() |
Routines |
| Prev: B951 | Up: Map | Next: B9AC |
| B952 | LD A,$B8 | Set the fork lift's position on the ground. | ||
| B954 | LD ($AF88),A | |||
| B957 | CALL $B902 | Clear the playing area. | ||
| B95A | LD A,(IY+$0F) | Get the current room in A. | ||
| B95D | ADD A,A | Double it to get a word offset. | ||
| B95E | LD E,A | Put this in DE. | ||
| B95F | LD D,$00 | |||
| B961 | LD HL,$CDB5 | Add the base address of the room data. (CDB5) | ||
| B964 | ADD HL,DE | |||
| B965 | LD E,(HL) | Put the actual address in DE. | ||
| B966 | INC HL | |||
| B967 | LD D,(HL) | |||
| B968 | EX DE,HL | Swap DE and HL. | ||
|
This entry point is used by the routines at EFC7 and F177. At this point, HL points to the room graphics data.
|
||||
| B969 | LD D,(HL) | Put the first two bytes in DE. | ||
| B96A | INC HL | |||
| B96B | LD E,(HL) | |||
| B96C | INC HL | |||
| B96D | LD A,D | Get the first byte and reset bit 7. | ||
| B96E | AND $7F | |||
| B970 | CP $7F | Should the screen be refreshed now? | ||
| B972 | JR Z,$B9A8 | Jump forward if so. | ||
| B974 | CP $7E | Is this data flag dependent? | ||
| B976 | JR NZ,$B982 | Jump forward if not. | ||
|
These graphics are flag dependent.
|
||||
| B978 | LD A,E | Put the second byte in A. | ||
| B979 | CALL $EC1D | Is the flag set? | ||
| B97C | JR NZ,$B969 | Jump forward if so. | ||
| B97E | INC HL | Otherwise skip over this entry as it shouldn't be drawn. | ||
| B97F | INC HL | |||
| B980 | JR $B969 | |||
|
The graphics can be drawn.
|
||||
| B982 | PUSH HL | Store HL. | ||
| B983 | LD B,A | Put the first byte as the block ID in B. | ||
| B984 | LD A,E | Get the second value. | ||
| B985 | AND $F8 | Put only the top 5 bits as a value in C. | ||
| B987 | RRA | |||
| B988 | RRA | |||
| B989 | RRA | |||
| B98A | LD C,A | |||
| B98B | RL D | Double D. | ||
| B98D | RL E | Double E and add the top bit of the previous value of D. | ||
| B98F | LD A,E | Get the top four bits of the second value. | ||
| B990 | AND $0F | |||
| B992 | ADD A,$05 | Start drawing from row 5. | ||
| B994 | LD D,A | Put the row in D. | ||
| B995 | LD E,C | Put the column in E. | ||
| B996 | LD L,B | Put the block ID in HL. | ||
| B997 | LD H,$00 | |||
| B999 | ADD HL,HL | Double it to get a word offset. | ||
| B99A | LD BC,$BD86 | Add the basic offset of the room block components (BD86) | ||
| B99D | ADD HL,BC | |||
| B99E | LD A,(HL) | Put the address found in HL. | ||
| B99F | INC HL | |||
| B9A0 | LD H,(HL) | |||
| B9A1 | LD L,A | |||
| B9A2 | CALL $B84B | Draw the graphic string. | ||
| B9A5 | POP HL | Restore HL. | ||
| B9A6 | JR $B969 | Jump back to draw some more. | ||
| B9A8 | CALL $B9AC | Copy the data to the working buffer. | ||
| B9AB | RET | |||
| Prev: B951 | Up: Map | Next: B9AC |