![]() |
Routines |
| Prev: F673 | Up: Map | Next: F6D1 |
|
|
||||
| F674 | LD A,$04 | Moving objects decrease endurance by 4. | ||
| F676 | LD ($F26E),A | |||
| F679 | LD B,$05 | 5 objects to update. | ||
| F67B | LD IX,$F653 | Point IX at the movement table. | ||
| F67F | PUSH BC | Store the count in BC. | ||
| F680 | LD BC,$F5CA | Point BC at the bounds table. | ||
| F683 | CALL $EF35 | Update moving objects. | ||
| F686 | DEC (IX+$00) | Decrement the X position. | ||
| F689 | JR NZ,$F6BB | Jump forward if it's not zero. | ||
| F68B | LD A,($F673) | Has a bird hit a boundary in X or Y? | ||
| F68E | LD B,A | |||
| F68F | LD A,($F672) | |||
| F692 | OR B | |||
| F693 | JR NZ,$F6BB | Jump forward if they haven't. | ||
|
A bird has hit the edge of the screen, move them off in some random direction.
|
||||
| F695 | LD A,R | Get a random number between 14 and 53. | ||
| F697 | AND $3F | |||
| F699 | ADD A,$14 | |||
| F69B | LD (IX+$00),A | Set this as the new x co-ordinate. | ||
| F69E | LD A,(IX+$01) | Cycle the y co-ordinate between 0 and 6 in multiples of 2, to give an offset into the table at F653. | ||
| F6A1 | ADD A,$02 | |||
| F6A3 | CP $08 | |||
| F6A5 | JR NZ,$F6A8 | |||
| F6A7 | XOR A | |||
| F6A8 | LD (IX+$01),A | Set the new y co-ordinate. | ||
| F6AB | LD E,A | Put the y co-ordinate in DE. | ||
| F6AC | LD D,$00 | |||
| F6AE | LD HL,$F64B | Add the base address of the direction table. (F64B) | ||
| F6B1 | ADD HL,DE | |||
| F6B2 | LD A,(HL) | Set the new x and y direction changes based on the data found. | ||
| F6B3 | LD (IX-$02),A | |||
| F6B6 | INC HL | |||
| F6B7 | LD A,(HL) | |||
| F6B8 | LD (IX-$01),A | |||
|
Now draw the bird.
|
||||
| F6BB | LD A,($F671) | Get the object ID to use. | ||
| F6BE | XOR $02 | Alternate between 3C and 3E (8AF8). for the next iteration. | ||
| F6C0 | LD ($F671),A | |||
| F6C3 | CALL $A8A0 | Draw the object. | ||
| F6C6 | CALL $E329 | Check for collision detection | ||
| F6C9 | INC IX | |||
| F6CB | INC IX | |||
| F6CD | POP BC | Restore the count in BC. | ||
| F6CE | DJNZ $F67F | Loop while there are more objects to draw. | ||
| F6D0 | RET | Otherwise return. | ||
| Prev: F673 | Up: Map | Next: F6D1 |