| Chase H.Q. | Routines |
| Prev: 8E91 | Up: Map | Next: 8EE7 |
|
Used by the routine at draw_mugshots.
|
||||||||||||
| draw_mugshot | 8EB7 | PUSH BC | Preserve screen position | |||||||||
| 8EB8 | PUSH HL | Preserve address of mugshot attributes | ||||||||||
|
We assume that the bitmap data precedes the attribute bytes.
|
||||||||||||
| 8EB9 | DEC HL | Move back one byte to point at end of bitmap data | ||||||||||
| 8EBA | LD BC,$00A0 | Size of mugshot data (32x40 bitmap) | ||||||||||
| dm_loop | 8EBD | LD A,E | Save E | |||||||||
| 8EBE | LDD | Transfer four bytes (DE, HL and BC are decremented by 4) | ||||||||||
| 8EC0 | LDD | |||||||||||
| 8EC2 | LDD | |||||||||||
| 8EC4 | LDD | |||||||||||
| 8EC6 | LD E,A | Restore E | ||||||||||
| 8EC7 | JP PO,dm_plot_attrs | If BC becomes zero then proceed to dm_plot_attrs | ||||||||||
|
Move to next scanline.
|
||||||||||||
| 8ECA | LD A,D | Save for checking in a moment | ||||||||||
| 8ECB | DEC D | Move to next scanline (visually upwards) | ||||||||||
| 8ECC | AND $0F | Would it have rolled over into the top nibble? | ||||||||||
| 8ECE | JP NZ,dm_loop | No - continue | ||||||||||
|
It rolled over.
|
||||||||||||
| 8ED1 | LD A,D | Put back the bit stolen by rollover | ||||||||||
| 8ED2 | ADD A,$10 | |||||||||||
| 8ED4 | LD D,A | |||||||||||
| 8ED5 | LD A,E | Move to next chunk of 16 scanlines | ||||||||||
| 8ED6 | SUB $20 | |||||||||||
| 8ED8 | LD E,A | |||||||||||
| 8ED9 | JP NC,dm_loop | Continue if it didn't roll over | ||||||||||
| 8EDC | LD A,D | Otherwise move to the next chunk of 128 scanlines (would put us outside the back buffer) | ||||||||||
| 8EDD | SUB $10 | |||||||||||
| 8EDF | LD D,A | |||||||||||
| 8EE0 | JP dm_loop | Loop | ||||||||||
| dm_plot_attrs | 8EE3 | POP HL | Restore address of mugshot attributes | |||||||||
| 8EE4 | JP pf_attrs_bit | Exit via pf_attrs_bit | ||||||||||
| Prev: 8E91 | Up: Map | Next: 8EE7 |