![]() |
Routines |
| Prev: F8B9 | Up: Map | Next: F9A4 |
|
Used by the routine at EDF7.
|
||||
| F93A | CALL $B03C | Was 'left' pressed? | ||
| F93D | OR A | |||
| F93E | JR Z,$F94E | Jump forward if it wasn't. | ||
|
'left' was pressed, so rotate anticlockwise.
|
||||
| F940 | DEC (IY+$00) | Decrement the graphic used for the player. | ||
| F943 | LD A,(IY+$00) | If it's now 6D past the end of usable sprites, set it to the maximum of 75. | ||
| F946 | CP $6D | |||
| F948 | JR NZ,$F94E | |||
| F94A | LD (IY+$00),$75 | |||
| F94E | CALL $B00B | Was 'right' pressed? | ||
| F951 | OR A | |||
| F952 | JR Z,$F962 | Jump forward if it wasn't. | ||
|
'right' was pressed, so rotate clockwise.
|
||||
| F954 | INC (IY+$00) | Increment the graphic used for the player. | ||
| F957 | LD A,(IY+$00) | If it's now 75 past the end of usable sprites, set it to the minimum of 6E. | ||
| F95A | CP $76 | |||
| F95C | JR NZ,$F962 | |||
| F95E | LD (IY+$00),$6E | |||
| F962 | CALL $ABD7 | Was 'in' pressed? | ||
| F965 | OR A | |||
| F966 | JR Z,$F994 | Jump forward if it wasn't. | ||
|
'in' was pressed, so move forward.
|
||||
| F968 | CALL $F9A4 | Put the change in co-ordinates in HL. | ||
| F96B | LD A,(IY+$05) | Get the x co-ordinate. | ||
| F96E | ADD A,(HL) | Add the offset (may be negative). | ||
| F96F | JR NZ,$F975 | If the x co-ordinate is 0, wrap around to EE. | ||
| F971 | LD A,$EE | |||
| F973 | JR $F97B | |||
| F975 | CP $F0 | If the x co-ordinate is F0 wrap around to 02. | ||
| F977 | JR NZ,$F97B | |||
| F979 | LD A,$02 | |||
| F97B | LD (IY+$05),A | Set the new x co-ordinate. | ||
| F97E | INC HL | Move to the next position in the table. | ||
| F97F | LD A,(IY+$0A) | Get the y co-ordinate | ||
| F982 | ADD A,(HL) | Add the offset (may be negative). | ||
| F983 | CP $40 | If the y co-ordinate is 40 wrap around to AC. | ||
| F985 | JR NZ,$F98B | |||
| F987 | LD A,$AC | |||
| F989 | JR $F991 | |||
| F98B | CP $AE | If the y co-ordinate is AE wrap around to 42. | ||
| F98D | JR NZ,$F991 | |||
| F98F | LD A,$42 | |||
| F991 | LD (IY+$0A),A | Set the new y co-ordinate. | ||
| F994 | LD L,(IY+$05) | Set the co-ordinates as the location to draw. (A838) | ||
| F997 | LD H,(IY+$0A) | |||
| F99A | LD ($A838),HL | |||
| F99D | LD A,(IY+$00) | Use the current sprite ID for the player. | ||
| F9A0 | CALL $A83D | Draw it and return. | ||
| F9A3 | RET | |||
| Prev: F8B9 | Up: Map | Next: F9A4 |