| Gyruss | Routines |
| Prev: 8A76 | Up: Map | Next: 8AE6 |
|
||||||||||
| move_towards_x | 8AC0 | LD B,$01 | Direction = 1 | |||||||
| 8AC2 | SUB (IX+$02) | Distance = desired x - x | ||||||||
| 8AC5 | RET Z | Return if same | ||||||||
| 8AC6 | JR NC,move_towards_x_0 | Jump if distance > 0 | ||||||||
| 8AC8 | LD B,$FF | Direction = -1 | ||||||||
| 8ACA | NEG | abs(distance) | ||||||||
| move_towards_x_0 | 8ACC | CP $21 | Is it longer than half way around? | |||||||
| 8ACE | LD A,B | A = direction | ||||||||
| 8ACF | JR C,move_towards_x_1 | Jump if not | ||||||||
| 8AD1 | NEG | Else switch direction | ||||||||
| move_towards_x_1 | 8AD3 | LD B,A | B = direction | |||||||
| 8AD4 | ADD A,(IX+$02) | Direction + x | ||||||||
| 8AD7 | AND $3F | Mod 64 | ||||||||
| 8AD9 | LD (IX+$02),A | Save new x | ||||||||
| 8ADC | LD A,$10 | $10 | ||||||||
| 8ADE | ADD A,B | $10 + direction, i.e. $0F or $11 | ||||||||
| 8ADF | LD (IX+$00),A | Change sprite type | ||||||||
| 8AE2 | INC (IX+$05) | Mark for pattern reload | ||||||||
| 8AE5 | RET | |||||||||
| Prev: 8A76 | Up: Map | Next: 8AE6 |