Prev: 24891 Up: Map Next: 25394
25240: Game Initialisation
Used by the routine at SecurityCheck.
Blank the 1UP, 2UP and HI scores.
GameInitialisation 25240 LD HL,24329 Write 0 to 11 bytes from HighScore_1 to 24339.
25243 LD BC,2816
GameInitialisation_Loop 25246 LD (HL),C
25247 INC HL
25248 DJNZ GameInitialisation_Loop
This calculates a "checksum" of the BEEPER routine. The expected value at the end is 0 and if Sound_Enable does not contain 0 then the game is muted.
25250 LD HL,949 HL=BEEPER.
25253 LD B,67 B=67 (counter).
25255 XOR A A=0.
Mute_Loop 25256 ADD A,(HL) Add the byte at HL to A.
25257 INC HL Increment HL by one.
25258 DJNZ Mute_Loop Decrease counter by one and loop back to Mute_Loop until counter is zero.
25260 ADD A,104 A=A + 104.
25262 LD (24333),A Store this number at Sound_Enable.
25265 XOR A Write 0 to BORDCR.
25266 LD (23624),A
This entry point is used by the routine at GameOver_1UP.
Game_Restart 25269 DI Disable interrupts.
25270 LD SP,24320 Set the stack pointer to SecurityCheck.
25273 CALL CreateWindow Call CreateWindow.
GameSelect_Loop 25276 CALL GameMenu Call GameMenu.
25279 LD A,247 Read from the keyboard;
Port Number Bit
0 1 2 3 4
247 1 2 3 4 5
25281 OUT (253),A
25283 IN A,(254)
25285 CPL Flip the bits.
25286 LD E,A E=A.
25287 LD A,(24332) A=GameOptions.
Handle 1UP selection.
25290 BIT 0,E Has key "1" been pressed? ("1 PLAYER GAME").
25292 JR Z,GameSelect_CheckP2 If not jump to GameSelect_CheckP2.
25294 RES 0,A Set player count = 1.
Handle 2UP selection.
GameSelect_CheckP2 25296 BIT 1,E Has key "2" been pressed? ("2 PLAYER GAME").
25298 JR Z,GameSelect_CheckKeyboard If not jump to GameSelect_CheckKeyboard.
25300 SET 0,A Set player count = 2.
Handle Keyboard selection.
GameSelect_CheckKeyboard 25302 BIT 2,E Has key "3" been pressed? ("KEYBOARD").
25304 JR Z,GameSelect_CheckKempston If not jump to GameSelect_CheckKempston.
25306 AND %11111001 Keep only bits 0, 3-7.
Handle Kempston Joystick selection.
GameSelect_CheckKempston 25308 BIT 3,E Has key "4" been pressed? ("KEMPSTON JOYSTICK").
25310 JR Z,GameSelect_CheckCursor If not jump to GameSelect_CheckCursor.
25312 AND %11111001 Keep only bits.
25314 OR %00000010 Set bit 1.
Handle Cursor Joystick selection.
GameSelect_CheckCursor 25316 BIT 4,E Has key "5" been pressed? ("CURSOR JOYSTICK").
25318 JR Z,GameSelect_CheckStart If not jump to GameSelect_CheckStart.
25320 AND %11111001 Keep only bits 0, 3-7.
25322 OR %00000100 Set bit 2.
GameSelect_CheckStart 25324 LD (24332),A Store A at GameOptions.
"0" for "Start Game" is on a different port.
25327 LD A,239 Read from the keyboard;
Port Number Bit
0 1 2 3 4
239 0 9 8 7 6
25329 OUT (253),A
25331 IN A,(254)
25333 CPL Flip the bits.
Handle starting a new game.
25334 BIT 0,A Has key "0" been pressed? ("START GAME").
25336 JP NZ,StartGame If so, jump to StartGame.
Handle flashing each selection.
25339 LD HL,25439 HL=GameSelection_Attributes+1 (i.e. ignoring "Game Selection" as it doesn't flash).
25342 LD A,(24332) C=GameOptions.
25345 LD C,A
25346 BIT 0,C If a 1UP game is selected, jump to MenuAttrHandleJoystick.
25348 JR NZ,MenuAttrHandleJoystick
25350 CALL MenuAttributeSetUnset Call MenuAttributeSetUnset.
MenuAttrHandler 25353 LD B,3 B=3.
25355 LD A,C A=C.
25356 RRCA
MenuAttrHandler_Loop 25357 AND %00000011 Keep only bits 0-1.
25359 JR Z,MenuAttrHandle2UP
25361 CALL MenuAttributeUnSetFirst Call MenuAttributeUnSetFirst.
GameInitialisation_0 25364 DEC A Decrease A by one.
25365 DJNZ MenuAttrHandler_Loop Decrease counter by one and loop back to MenuAttrHandler_Loop until counter is zero.
25367 JP GameSelect_Loop Jump back to GameSelect_Loop.
Handle flashing 2UP.
MenuAttrHandle2UP 25370 CALL MenuAttributeSetFirst Call MenuAttributeSetFirst.
25373 JR GameInitialisation_0 Jump to GameInitialisation_0.
Handle flashing joystick.
MenuAttrHandleJoystick 25375 CALL MenuAttributeUnsetSet Call MenuAttributeUnsetSet.
25378 JR MenuAttrHandler Jump to MenuAttrHandler.
Set the first menu item, unset the second.
MenuAttributeSetUnset 25380 SET 7,(HL) Set the FLASH attribute for the menu attribute.
25382 INC HL Move onto the next menu attribute.
MenuAttributeUnSetFirst 25383 RES 7,(HL) Unset the FLASH attribute for the menu attribute.
25385 INC HL Move onto the next menu attribute.
25386 RET Return.
Unset the first menu item, set the second.
MenuAttributeUnsetSet 25387 RES 7,(HL) Unset the FLASH attribute for the menu attribute.
25389 INC HL Move onto the next menu attribute.
MenuAttributeSetFirst 25390 SET 7,(HL) Set the FLASH attribute for the menu attribute.
25392 INC HL Move onto the next menu attribute.
25393 RET Return.
View the equivalent code in;
Prev: 24891 Up: Map Next: 25394