Routines |
Prev: 36147 | Up: Map | Next: 36288 |
36203 | LD HL,32768 | Point HL at the first room layout byte at 32768 | ||
36206 | LD IX,24064 | Point IX at the first byte of the attribute buffer at 24064 | ||
The following loop copies the attribute bytes for the background, floor, wall and nasty tiles into the buffer at 24064.
|
||||
36210 | LD A,(HL) | Pick up a room layout byte | ||
36211 | RLCA | Move bits 6 and 7 into bits 0 and 1 | ||
36212 | RLCA | |||
36213 | CALL 36288 | Copy the attribute byte for this tile into the buffer at 24064 | ||
36216 | LD A,(HL) | Pick up the room layout byte again | ||
36217 | RRCA | Move bits 4 and 5 into bits 0 and 1 | ||
36218 | RRCA | |||
36219 | RRCA | |||
36220 | RRCA | |||
36221 | CALL 36288 | Copy the attribute byte for this tile into the buffer at 24064 | ||
36224 | LD A,(HL) | Pick up the room layout byte again | ||
36225 | RRCA | Move bits 2 and 3 into bits 0 and 1 | ||
36226 | RRCA | |||
36227 | CALL 36288 | Copy the attribute byte for this tile into the buffer at 24064 | ||
36230 | LD A,(HL) | Pick up the room layout byte again; this time the required bit-pair is already in bits 0 and 1 | ||
36231 | CALL 36288 | Copy the attribute byte for this tile into the buffer at 24064 | ||
36234 | INC HL | Point HL at the next room layout byte | ||
36235 | LD A,L | Have we processed all 128 room layout bytes yet? | ||
36236 | AND 128 | |||
36238 | JR Z,36210 | If not, jump back to process the next one | ||
Next consider the conveyor tiles (if any).
|
||||
36240 | LD A,(32985) | Pick up the length of the conveyor from 32985 | ||
36243 | OR A | Is there a conveyor in the room? | ||
36244 | JR Z,36257 | Jump if not | ||
36246 | LD HL,(32983) | Pick up the address of the conveyor's location in the attribute buffer at 24064 from 32983 | ||
36249 | LD B,A | B will count the conveyor tiles | ||
36250 | LD A,(32973) | Pick up the attribute byte for the conveyor tile from 32973 | ||
36253 | LD (HL),A | Copy the attribute bytes for the conveyor tiles into the buffer at 24064 | ||
36254 | INC HL | |||
36255 | DJNZ 36253 | |||
And finally consider the ramp tiles (if any).
|
||||
36257 | LD A,(32989) | Pick up the length of the ramp from 32989 | ||
36260 | OR A | Is there a ramp in the room? | ||
36261 | RET Z | Return if not | ||
36262 | LD HL,(32987) | Pick up the address of the ramp's location in the attribute buffer at 24064 from 32987 | ||
36265 | LD A,(32986) | Pick up the ramp direction from 32986; A=0 (ramp goes up to the left) or 1 (ramp goes up to the right) | ||
36268 | AND 1 | |||
36270 | RLCA | Now DE=-33 (ramp goes up to the left) or -31 (ramp goes up to the right) | ||
36271 | ADD A,223 | |||
36273 | LD E,A | |||
36274 | LD D,255 | |||
36276 | LD A,(32989) | Pick up the length of the ramp from 32989 | ||
36279 | LD B,A | B will count the ramp tiles | ||
36280 | LD A,(32964) | Pick up the attribute byte for the ramp tile from 32964 | ||
36283 | LD (HL),A | Copy the attribute bytes for the ramp tiles into the buffer at 24064 | ||
36284 | ADD HL,DE | |||
36285 | DJNZ 36283 | |||
36287 | RET |
Prev: 36147 | Up: Map | Next: 36288 |