| Gyruss | Routines |
| Prev: A3E1 | Up: Map | Next: A4B2 |
|
Change polar y of sprite types $0D, according to bit 2 of status_flags. Used by the routines at initial_game_loop and explode.
|
||||
| move_dots | A471 | LD HL,(tmp_center_of_projection) | Copy tmp_center_of_projection to center_of_projection | |
| A474 | LD (center_of_projection),HL | ... | ||
| A477 | LD B,$20 | 32 sprites | ||
| A479 | LD IX,sprite_data | Sprite data | ||
|
This entry point is used by the routine at move_dots_1.
|
||||
| move_dots_0 | A47D | LD A,(IX+$00) | Get type | |
| A480 | CP $0D | Is it $0D (a dot)? | ||
| A482 | JR NZ,move_dots_3 | If not then move to next sprite | ||
| A484 | PUSH BC | Save counter | ||
| A485 | LD D,(IX+$01) | Polar y | ||
| A488 | LD E,(IX+$02) | Polar x | ||
| A48B | CALL polar_to_screen | Polar to screen | ||
| A48E | LD (IX+$08),D | Set y | ||
| A491 | LD (IX+$09),E | Set x | ||
| A494 | LD A,(status_flags) | Status | ||
| A497 | BIT 2,A | Test bit | ||
| A499 | JR NZ,move_dots_1 | If 1, decrement polar y | ||
| A49B | INC (IX+$01) | Else increment polar y | ||
| A49E | JR move_dots_2 | Skip next | ||
| move_dots_1 | A4A0 | DEC (IX+$01) | Decrement polar y | |
| move_dots_2 | A4A3 | POP BC | Restore counter | |
| move_dots_3 | A4A4 | LD DE,$000C | Size of each sprite | |
| A4A7 | ADD IX,DE | Next sprite | ||
| A4A9 | DJNZ move_dots_0 | Loop 32 times | ||
| A4AB | LD HL,$8060 | Set center_of_projection back to original value | ||
| A4AE | LD (center_of_projection),HL | ... | ||
| A4B1 | RET | |||
| Prev: A3E1 | Up: Map | Next: A4B2 |