Prev: EDC6 Up: Map Next: EEA2
EDF7: Action 7 SPACE. Play the "asteroids" phone box game
EDF7 XOR A Reset the "create new lightning bolts" flag. (FAEF)
EDF8 LD ($FAEF),A
EDFB DEC A Set the missile as inactive. (F9F0)
EDFC LD ($F9F0),A
Set the starting position as left or right, depending on which phone booth was entered.
EDFF LD (IY+$00),$6E Set the current graphic to the space ship. (9158)
EE03 LD A,(IY+$05) Get the x co-ordinate.
EE06 CP $80 If it's less then 80 then set to 30 otherwise set it to C0.
EE08 LD (IY+$05),$C0
EE0C JR NC,$EE12
EE0E LD (IY+$05),$30
EE12 LD (IY+$0A),$78 Set the y co-ordinate to 78.
EE16 LD HL,$F879 Copy the initial state (F879) to the working state (80A9).
EE19 LD DE,$80A9
EE1C LD BC,$003C
EE1F LDIR
EE21 CALL $B902 Clear the playing area.
Put stars randomly on-screen.
EE24 LD HL,$4800 Point HL at the start of the main playing area.
EE27 LD D,$00 Set D to 0.
EE29 LD A,$53 Set R to 53 used to generate a random number.
EE2B LD R,A
EE2D LD A,R Put the next value of R in E, in ensuring a pseudo-random offset will be used.
EE2F LD E,A
EE30 LD (HL),$20 Set bit 5, to print a dot.
EE32 ADD HL,DE Move to the next random place.
EE33 LD A,H Continue until we run out of screen and hit the attribute area.
EE34 CP $58
EE36 JR NZ,$EE2D
EE38 LD HL,$7F02 Point HL at the background graphic. (7F02)
EE3B LD DE,$0F04 Set the position.
EE3E CALL $B84B Draw the graphic.
EE41 CALL $B9AC Copy the screen to the graphic buffer.
Run the main loop of the game.
EE44 CALL $BAB4 Update the "{character} is in {room}" tick count, if any.
EE47 CALL $EEA2 Update the sprite buffers.
EE4A CALL $F93A Check for player's movement.
EE4D CALL $F9F5 Move the objects around and check for firing.
EE50 CALL $F9F5
EE53 CALL $F9F5
EE56 CALL $F8B9
EE59 CALL $B9FB Put sprites on screen.
See if the player is near one of the exit portals.
EE5C LD A,(IY+$05) Get the X co-ordinate.
EE5F LD B,A Is it close enough to the right portal?
EE60 SUB $24
EE62 CP $F8
EE64 JR NC,$EE6D Jump forward if so.
EE66 LD A,B Is it close enough to the left portal?
EE67 SUB $D4
EE69 CP $F8
EE6B JR C,$EE44 Jump back if not and run the main loop again.
The x co-ordinate lines up with a portal, so check the y co-ordinate.
EE6D LD A,(IY+$0A) Get the Y co-ordinate.
EE70 SUB $7C Is it close enough to the portal?
EE72 CP $F8
EE74 JR C,$EE44 Jump back if not and run the main loop again.
The player is by a portal. Work out which one it was, and drop them back into town.
EE76 LD A,B Get the X co-ordinate previously stored in B.
EE77 CP $80 Is it less than 80? ie: left hand side
EE79 JR NC,$EE85 If it is, set the x co-ordinates as DC and the room as 01 (Stamp Street), otherwise, set the x co-ordinate as 04 and the room as 13 (Reference Road).
EE7B LD (IY+$05),$04
EE7F LD (IY+$0F),$13
EE83 JR $EE8D
@labe l=Space_Game_4
EE85 LD (IY+$05),$DC
EE89 LD (IY+$0F),$01
This entry point is used by the routines at EFC7 and F177.
EE8D CALL $B952 Draw the room.
EE90 LD (IY+$0A),$98 Set the y co-ordinate as 98 ie: on the floor
EE94 LD (IY+$46),$00 Set the character as not jumping.
EE98 LD (IY+$00),$00 Set the frame ID back to 0.
EE9C LD SP,$FC00 Reset the stack to its initial place.
EE9F JP $8194 Jump back to the main game loop.
Prev: EDC6 Up: Map Next: EEA2