Prev: 63678 Up: Map Next: 63766
63695: Controls: Pause/ Quit Game
Used by the routine at GameEntryPoint.
In-game Holding down "SHIFT" and pressing 1, 2 or 3 has the following effect:
Key 1 Key 2 Action
"SHIFT" "1" Pause
"SHIFT" "2" Resume
"SHIFT" "3" Quite
Controls_PauseQuit 63695 LD A,254
Port Number Bit
0 1 2 3 4
254 SHIFT Z X C V
63697 CALL ReadKeyboard Call ReadKeyboard.
63700 CP 1 Return if "SHIFT" is not being pressed.
63702 RET NZ
"SHIFT" is being held down here. Test for the number keys.
63703 CALL ReadKeyboard_1234 Call ReadKeyboard_1234.
63706 CP 4 Jump to QuitGame if "3" is being pressed.
63708 JR Z,QuitGame
63710 CP 1 Return if "1" is not being pressed.
63712 RET NZ
If "1" is being pressed - this is where the "in-game pause" loop begins.
PauseGame_Loop 63713 LD A,254
Port Number Bit
0 1 2 3 4
254 SHIFT Z X C V
63715 CALL ReadKeyboard Call ReadKeyboard.
63718 CP 1 Test for "SHIFT"...
63720 LD B,6 B=6.
63722 JR NZ,GamePaused Jump to GamePaused if "SHIFT" is not being pressed.
63724 CALL ReadKeyboard_1234 Call ReadKeyboard_1234.
63727 CP 4 Jump to TestFor_ResumeGame if "3" (quit) is not being pressed.
63729 JR NZ,TestFor_ResumeGame
Action quitting the game.
QuitGame 63731 LD A,1 Write 1 to *Game_State.
63733 LD (54269),A
To resume the game we just reset the border colour and RETurn from the pause loop.
ResumeGame 63736 XOR A Set the border to BLACK.
63737 OUT (254),A
63739 RET Return.
The game is in the pause loop so test if we want to resume.
TestFor_ResumeGame 63740 CP 2 Jump to ResumeGame if "2" is being pressed.
63742 JR Z,ResumeGame
63744 LD B,6 B=6.
Creates a nice border pattern.
GamePaused 63746 LD A,B A=B.
63747 OUT (254),A Change border very quickly to create a rainbow effect.
63749 OUT (254),A
63751 DJNZ GamePaused Decrease counter by one and loop back to GamePaused until counter is zero.
63753 CALL ReadKeyboard_1234 Call ReadKeyboard_1234.
63756 JR PauseGame_Loop Loop back to PauseGame_Loop.
Testing for the number keys.
ReadKeyboard_1234 63758 LD A,247
Port Number Bit
0 1 2 3 4
247 1 2 3 4 5
ReadKeyboard 63760 IN A,(254) Read from the keyboard.
63762 CPL Invert the bits in A.
63763 AND %00001111 Keep only bits 0-3.
63765 RET Return.
Prev: 63678 Up: Map Next: 63766