Routines |
Prev: 28334 | Up: Map | Next: 28510 |
|
||||||||
28344 | EXX | Switch BC, DE and HL with BC', DE' and HL' | ||||||
28345 | LD L,A | Load architecture style index into L | ||||||
28346 | OR A | If architecture style index is not zero... | ||||||
28347 | JP NZ,28360 | ...then jump ahead to 28360 | ||||||
28350 | LD A,(23476) | If brickwork-drawing-direction flag is zero (horizontal mode for floor and ceiling)... | ||||||
28353 | OR A | ... | ||||||
28354 | JP Z,28510 | ...then skip ahead to 28510 (blank out bitmap and set attribute to current value for 2-by-2 character block) | ||||||
28357 | JP 28471 | Move location to print and terrain interaction cursor down two character rows observing y-wrap, then return | ||||||
28360 | LD H,0 | Load four times architecture style index into HL, as entries are four bytes wide... | ||||||
28362 | LD A,L | ... | ||||||
28363 | ADD A,A | ... | ||||||
28364 | LD L,A | ... | ||||||
28365 | ADD HL,HL | ... | ||||||
28366 | LD DE,54617 | Point DE at architecture styles lookup table | ||||||
28369 | ADD HL,DE | Add HL (4 times architecture style index) as offset to this, in HL (as each entry is 4 bytes wide) | ||||||
28370 | LD DE,(36488) | Load memory location to start printing character into DE... | ||||||
28374 | LD (23296),DE | ...and store at 23296 | ||||||
28378 | LD A,(HL) | Load first architecture style element (top-left) into A | ||||||
28379 | CALL 36510 | Draw a single character block part of a wall, ceiling or floor | ||||||
28382 | LD DE,(36488) | Load memory location to start printing character into DE... | ||||||
28386 | INC DE | Advance DE by one byte... | ||||||
28387 | LD (36488),DE | ...and load into memory location to start printing character | ||||||
28391 | INC HL | Advance HL to next architecture style element (top-right) | ||||||
28392 | LD A,(HL) | Load next architecture style element into A | ||||||
28393 | CALL 36510 | Draw a single character block part of a wall, ceiling or floor | ||||||
28396 | INC HL | Advance HL to next architecture style index (bottom-left) | ||||||
28397 | EX DE,HL | Switch HL and DE (HL now display file address to print to and DE now pointer to architecture style) | ||||||
28398 | LD HL,(23296) | Advance this pointer down a character row (32 bytes from original stored value)... | ||||||
28401 | LD BC,32 | ... | ||||||
28404 | ADD HL,BC | ... | ||||||
28405 | LD (36488),HL | Load new position into memory location to start printing character | ||||||
28408 | EX DE,HL | Switch DE and HL back (HL now pointer to architecture style and DE now display file address to print to) | ||||||
28409 | LD A,(23469) | Load brickwork drawing mode into A | ||||||
28412 | CP 1 | If this is 1 [only draw one row of "bricks"]... | ||||||
28414 | JR Z,28441 | ...then jump ahead to 28441 | ||||||
28416 | CP 2 | If it is not 2 [draw row of bricks and blank row beneath]... | ||||||
28418 | JR NZ,28423 | ...then jump ahead to 28423... | ||||||
28420 | LD HL,54617 | ...else point HL at first entry (blank, i.e. no brickwork) | ||||||
28423 | LD A,(HL) | Load brickwork graphic index into A | ||||||
28424 | CALL 36510 | Draw a single character block part of a wall, ceiling or floor | ||||||
28427 | LD DE,(36488) | Load memory location to start printing character into DE... | ||||||
28431 | INC DE | Advance DE by one byte... | ||||||
28432 | LD (36488),DE | ...and load into memory location to start printing character | ||||||
28436 | INC HL | Advance HL to next brickwork graphic index... | ||||||
28437 | LD A,(HL) | ...and load into A | ||||||
28438 | CALL 36510 | Draw a single character block part of a wall, ceiling or floor | ||||||
28441 | LD HL,(23296) | Load previously stored memory location to start printing character into HL... | ||||||
28444 | LD (36488),HL | ...and place back in character drawing routine | ||||||
28447 | LD A,(23483) | Load stored, "current" terrain interaction parameter into A | ||||||
28450 | LD HL,(23481) | Load current terrain interaction table cursor position into HL | ||||||
28453 | LD (HL),A | Set this and the following character blocks to have the current terrain interaction flags... | ||||||
28454 | INC HL | ... | ||||||
28455 | LD (HL),A | ... | ||||||
28456 | LD A,(23469) | Load brickwork drawing mode into A | ||||||
28459 | OR A | If brickwork drawing mode is not zero (draw two rows) then skip ahead to 28471 (move location to print and terrain interaction cursor down two character rows observing y-wrap, then return) | ||||||
28460 | JP NZ,28471 | |||||||
28463 | LD A,(HL) | Load last written terrain interaction parameter back into A | ||||||
28464 | LD BC,31 | Advance terrain interaction table cursor by 31 bytes (to character below starting position)... | ||||||
28467 | ADD HL,BC | ... | ||||||
28468 | LD (HL),A | Set this and the following character blocks to have the current terrain interaction flags... | ||||||
28469 | INC HL | ... | ||||||
28470 | LD (HL),A | ... | ||||||
Mode 1 or 2, draw one row of bricks
This entry point is used by the routine at 28510.
|
||||||||
28471 | LD A,(23476) | If brickwork-drawing-direction flag is not zero (horizontal mode for floor and ceiling) then skip ahead to 28561 (move location to print and terrain interaction cursor down two character rows with y-wrap, as in vertical mode) | ||||||
28474 | OR A | |||||||
28475 | JR NZ,28561 | |||||||
28477 | CALL 36626 | Advance display file pointer by two characters | ||||||
28480 | LD HL,(23481) | Update current terrain interaction table cursor position onwards by two characters... | ||||||
28483 | INC HL | ... | ||||||
28484 | INC HL | ... | ||||||
28485 | LD (23481),HL | ... | ||||||
28488 | LD A,(36488) | Load LSB of memory location to start printing character into A | ||||||
28491 | AND 31 | If this is not a multiple of 32 (i.e. not at start of a pixel row)... | ||||||
28493 | JR NZ,28508 | ...then skip ahead to 28508 | ||||||
28495 | CALL 37703 | Move virtual text cursor down to start of next text row (as blocks are 2 characters high so we need to move down another character) | ||||||
28498 | LD BC,32 | Update current terrain interaction table cursor position onwards by 32 characters (i.e. down one row)... | ||||||
28501 | LD HL,(23481) | ... | ||||||
28504 | ADD HL,BC | ... | ||||||
28505 | LD (23481),HL | ... | ||||||
28508 | EXX | Switch BC, DE and HL with BC', DE' and HL', restoring values as at input | ||||||
28509 | RET | Return |
Prev: 28334 | Up: Map | Next: 28510 |