| Gyruss | Routines |
| Prev: 8790 | Up: Map | Next: 8815 |
|
Search for a value (pattern OR $80) in map. If not found, allocate an entry. If found, calculate coordinates and move towards them. Used by the routine at handle_sprite_types_0E_11.
|
||||||||
| move_towards_center | 87D5 | LD A,(sprite_countdown) | Return if countdown | |||||
| 87D8 | OR A | is not zero | ||||||
| 87D9 | RET NZ | ... | ||||||
| 87DA | INC (IX+$05) | Mark for pattern reload | ||||||
| 87DD | LD A,(IX+$0A) | Get pattern | ||||||
| 87E0 | OR $80 | Set bit 7 | ||||||
| 87E2 | LD B,$24 | Size of map | ||||||
| 87E4 | LD HL,center_enemy_map | Address of map | ||||||
| move_towards_center_0 | 87E7 | CP (HL) | Check entry | |||||
| 87E8 | JR Z,move_towards_center_1 | Break out if found | ||||||
| 87EA | INC HL | Next map address | ||||||
| 87EB | DJNZ move_towards_center_0 | Loop up to 36 times | ||||||
| 87ED | LD A,(IX+$0A) | Get pattern (already set?) | ||||||
| 87F0 | OR $80 | Set bit 7 | ||||||
| 87F2 | JP allocate_map_entry | Add pattern to map. Return to return_from_sprite_handler | ||||||
| move_towards_center_1 | 87F5 | CALL polar_coord_from_map | Now DE contains polar y,x | |||||
| 87F8 | LD A,E | Get x from map | ||||||
| 87F9 | CP (IX+$02) | Compare with polar x | ||||||
| 87FC | JR Z,move_towards_center_2 | If same, skip ahead | ||||||
| 87FE | JP move_towards_x | Else jump out to move_towards_x | ||||||
| move_towards_center_2 | 8801 | LD (IX+$00),$0E | Change sprite type to enemy | |||||
|
Move towards y
|
||||||||
| 8805 | LD A,(IX+$01) | Get polar y | ||||||
| 8808 | CP D | Compare with polar y from map | ||||||
| 8809 | JR Z,return_enemy_to_map | If same, return enemy to map | ||||||
| 880B | JR C,move_towards_center_3 | If less than, skip to increment polar y | ||||||
| 880D | DEC (IX+$01) | Decrement polar y | ||||||
| 8810 | RET | Return to return_from_sprite_handler | ||||||
| move_towards_center_3 | 8811 | INC (IX+$01) | Increment polar y | |||||
| 8814 | RET | Return to return_from_sprite_handler | ||||||
| Prev: 8790 | Up: Map | Next: 8815 |