![]() |
Routines |
| Prev: F8BE | Up: Map | Next: F916 |
|
Used by the routine at GameEntryPoint.
|
||||||||||||||||||||
|
In-game Holding down "SHIFT" and pressing 1, 2 or 3 has the following effect:
|
||||||||||||||||||||
| Controls_PauseQuit | F8CF | LD A,$FE |
|
|||||||||||||||||
| F8D1 | CALL ReadKeyboard | Call ReadKeyboard. | ||||||||||||||||||
| F8D4 | CP $01 | Return if "SHIFT" is not being pressed. | ||||||||||||||||||
| F8D6 | RET NZ | |||||||||||||||||||
|
"SHIFT" is being held down here. Test for the number keys.
|
||||||||||||||||||||
| F8D7 | CALL ReadKeyboard_1234 | Call ReadKeyboard_1234. | ||||||||||||||||||
| F8DA | CP $04 | Jump to QuitGame if "3" is being pressed. | ||||||||||||||||||
| F8DC | JR Z,QuitGame | |||||||||||||||||||
| F8DE | CP $01 | Return if "1" is not being pressed. | ||||||||||||||||||
| F8E0 | RET NZ | |||||||||||||||||||
|
If "1" is being pressed - this is where the "in-game pause" loop begins.
|
||||||||||||||||||||
| PauseGame_Loop | F8E1 | LD A,$FE |
|
|||||||||||||||||
| F8E3 | CALL ReadKeyboard | Call ReadKeyboard. | ||||||||||||||||||
| F8E6 | CP $01 | Test for "SHIFT"... | ||||||||||||||||||
| F8E8 | LD B,$06 | B=06. | ||||||||||||||||||
| F8EA | JR NZ,GamePaused | Jump to GamePaused if "SHIFT" is not being pressed. | ||||||||||||||||||
| F8EC | CALL ReadKeyboard_1234 | Call ReadKeyboard_1234. | ||||||||||||||||||
| F8EF | CP $04 | Jump to TestFor_ResumeGame if "3" (quit) is not being pressed. | ||||||||||||||||||
| F8F1 | JR NZ,TestFor_ResumeGame | |||||||||||||||||||
|
Action quitting the game.
|
||||||||||||||||||||
| QuitGame | F8F3 | LD A,$01 | Write 01 to *Game_State. | |||||||||||||||||
| F8F5 | LD ($D3FD),A | |||||||||||||||||||
|
To resume the game we just reset the border colour and RETurn from the pause loop.
|
||||||||||||||||||||
| ResumeGame | F8F8 | XOR A | Set the border to BLACK. | |||||||||||||||||
| F8F9 | OUT ($FE),A | |||||||||||||||||||
| F8FB | RET | Return. | ||||||||||||||||||
|
The game is in the pause loop so test if we want to resume.
|
||||||||||||||||||||
| TestFor_ResumeGame | F8FC | CP $02 | Jump to ResumeGame if "2" is being pressed. | |||||||||||||||||
| F8FE | JR Z,ResumeGame | |||||||||||||||||||
| F900 | LD B,$06 | B=06. | ||||||||||||||||||
|
Creates a nice border pattern.
|
||||||||||||||||||||
| GamePaused | F902 | LD A,B | A=B. | |||||||||||||||||
| F903 | OUT ($FE),A | Change border very quickly to create a rainbow effect. | ||||||||||||||||||
| F905 | OUT ($FE),A | |||||||||||||||||||
| F907 | DJNZ GamePaused | Decrease counter by one and loop back to GamePaused until counter is zero. | ||||||||||||||||||
| F909 | CALL ReadKeyboard_1234 | Call ReadKeyboard_1234. | ||||||||||||||||||
| F90C | JR PauseGame_Loop | Loop back to PauseGame_Loop. | ||||||||||||||||||
|
Testing for the number keys.
|
||||||||||||||||||||
| ReadKeyboard_1234 | F90E | LD A,$F7 |
|
|||||||||||||||||
| ReadKeyboard | F910 | IN A,($FE) | Read from the keyboard. | |||||||||||||||||
| F912 | CPL | Invert the bits in A. | ||||||||||||||||||
| F913 | AND %00001111 | Keep only bits 0-3. | ||||||||||||||||||
| F915 | RET | Return. | ||||||||||||||||||
| Prev: F8BE | Up: Map | Next: F916 |