![]() |
Routines |
Prev: 26320 | Up: Map | Next: 26375 |
An alien has been hit. Replace its graphic with the explosion graphic.
Used by the routine at alien_hit.
|
||||||||||||
draw_alien_explosion | 26337 | LD BC,(_EXPLOSION_CX_CY) | Bullet cx,cy, that's the explosion place 26101 is ypos, goes into B, 26100 is xpos goes into C | |||||||||
26341 | CALL cxy2saddr | cxy2saddr: DE = screen address of char C,B | ||||||||||
26344 | LD HL,(_EXPLOSION_GFX_TOP) | Pick up top row of graphic to draw | ||||||||||
26347 | CALL draw_alien_explosion_0 | Call down to draw the top 2 chars of explosion | ||||||||||
26350 | LD BC,(_EXPLOSION_CX_CY) | Bullet cx,cy, that's the explosion place | ||||||||||
26354 | INC B | inc cy, ready for bottom 2 chars of explosion | ||||||||||
Bit of an odd way of moving the graphics bytes into the screen. It uses LDI to do 2 bytes, then restores the registers to put back half of the effects of that instruction.
This entry point is used by the routine at alien_hit.
|
||||||||||||
26355 | CALL cxy2saddr | cxy2saddr: DE = screen address of char C,B | ||||||||||
26358 | LD HL,(_EXPLOSION_GFX_BOTTOM) | Pick up bottom row of graphic to draw | ||||||||||
draw_alien_explosion_0 | 26361 | LD B,8 | 8 scans | |||||||||
draw_alien_explosion_1 | 26363 | LDI | Graphic to screen, left side | |||||||||
26365 | LDI | Graphic to screen, right side | ||||||||||
26367 | DEC DE | Back up 2 screen bytes | ||||||||||
26368 | DEC DE | |||||||||||
26369 | INC BC | Restore BC | ||||||||||
26370 | INC BC | |||||||||||
26371 | INC D | Go down one screen row | ||||||||||
26372 | DJNZ draw_alien_explosion_1 | |||||||||||
26374 | RET |
Prev: 26320 | Up: Map | Next: 26375 |