Routines |
Prev: F5D3 | Up: Map | Next: F64B |
First, draw the electricity wire.
|
||||
F5F1 | LD HL,$5DE7 | Point HL to the screen buffer. (5B00) | ||
F5F4 | LD DE,$0020 | Set DE to the amount to move forward by for each row. | ||
F5F7 | LD BC,$F5D3 | Set BC to the data table. (F5D3) | ||
F5FA | LD (HL),$00 | Reset all pixels on the first row. | ||
F5FC | ADD HL,DE | Move to the next row. | ||
F5FD | LD (HL),$FF | Set all pixels. | ||
F5FF | ADD HL,DE | Move to the next row. | ||
F600 | LD (HL),$00 | Reset all pixels. | ||
F602 | AND A | Move back up to the initial row. | ||
F603 | SBC HL,DE | |||
F605 | SBC HL,DE | |||
F607 | LD A,(BC) | Get the next byte. | ||
F608 | INC BC | Move to the next place in the buffer. | ||
F609 | CP $FF | Is it an end marker? | ||
F60B | JR Z,$F61D | Jump foward if it is. | ||
F60D | OR A | Is the data 0? | ||
F60E | JR Z,$F61A | Jump forward if it isn't. | ||
F610 | CP $01 | Is the data 1? | ||
F612 | JR NZ,$F617 | Jump forward if it is. | ||
F614 | ADD HL,DE | Otherwise move to the next row. | ||
F615 | JR $F61A | |||
F617 | AND A | Move up a row. | ||
F618 | SBC HL,DE | |||
F61A | INC HL | Move to the next column and repeat. | ||
F61B | JR $F5FA | |||
Now set the main data for the room.
|
||||
F61D | LD A,$06 | Moving objects decrease endurance by 6. | ||
F61F | LD ($F26E),A | |||
F622 | LD IX,$F5BE | Point IX at the movement table. | ||
F626 | LD B,$03 | 3 lightning bolts to draw. | ||
F628 | PUSH BC | Store BC. | ||
F629 | LD A,$0D | Is flag 0D (Asteroids game won) set? | ||
F62B | CALL $EC1D | |||
F62E | LD BC,$F5CA | Point BC at the first bounds table. (F5CA) | ||
F631 | JR NZ,$F636 | If the flag is set, skip the next bit. | ||
F633 | LD BC,$F5CE | Otherwise point BC at the second bounds table. (F5CE) | ||
F636 | CALL $EF35 | Update moving objects. | ||
F639 | LD A,($F5D2) | Get the next object ID to print. | ||
F63C | XOR $02 | Invert bit 2, so the ID alternates between 38 and 3A. | ||
F63E | LD ($F5D2),A | Set this for the next object ID. | ||
F641 | CALL $A8A0 | Draw moving objects. | ||
F644 | CALL $E329 | Check for collision detection. | ||
F647 | POP BC | Restore BC. | ||
F648 | DJNZ $F628 | Loop while there are more lighting bolts to draw. | ||
F64A | RET | Return. |
Prev: F5D3 | Up: Map | Next: F64B |