![]() |
Routines |
| Prev: 800A | Up: Map | Next: 80D1 |
|
Used by the routine at F33E.
|
||||||||||||||||||||
| Game_Restart | 802C | CALL CreateWindow | Call CreateWindow. | |||||||||||||||||
| 802F | CALL HallOfFame | Call HallOfFame. | ||||||||||||||||||
| 8032 | CALL CreateWindow | Call CreateWindow. | ||||||||||||||||||
|
This entry point is used by the routine at GameInitialisation.
|
||||||||||||||||||||
| GameSelect_Loop | 8035 | CALL GameMenu | Call GameMenu. | |||||||||||||||||
| 8038 | LD A,$F7 | Read from the keyboard;
|
||||||||||||||||||
| 803A | OUT ($FD),A | |||||||||||||||||||
| 803C | IN A,($FE) | |||||||||||||||||||
| 803E | CPL | Flip the bits. | ||||||||||||||||||
| 803F | LD E,A | E=A. | ||||||||||||||||||
| 8040 | LD A,($5E00) | A=GameOptions. | ||||||||||||||||||
| 8043 | LD ($5E7C),A | Write A to 5E7C. | ||||||||||||||||||
|
Handle 1UP selection.
|
||||||||||||||||||||
| GameSelect_CheckP1 | 8046 | BIT 0,E | Has key "1" been pressed? ("1 PLAYER GAME"). | |||||||||||||||||
| 8048 | JR Z,GameSelect_CheckP2 | If not jump to GameSelect_CheckP2. | ||||||||||||||||||
| 804A | RES 0,A | Set player count = 1. | ||||||||||||||||||
|
Handle 2UP selection.
|
||||||||||||||||||||
| GameSelect_CheckP2 | 804C | BIT 1,E | Has key "2" been pressed? ("2 PLAYER GAME"). | |||||||||||||||||
| 804E | JR Z,GameSelect_CheckKeyboard | If not jump to GameSelect_CheckKeyboard. | ||||||||||||||||||
| 8050 | SET 0,A | Set player count = 2. | ||||||||||||||||||
|
Handle Keyboard selection.
|
||||||||||||||||||||
| GameSelect_CheckKeyboard | 8052 | BIT 2,E | Has key "3" been pressed? ("3 KEYBOARD"). | |||||||||||||||||
| 8054 | JR Z,GameSelect_CheckKempston | If not jump to GameSelect_CheckKempston. | ||||||||||||||||||
| 8056 | AND %11111001 | Set control method = keyboard. | ||||||||||||||||||
|
Handle Kempston Joystick selection.
|
||||||||||||||||||||
| GameSelect_CheckKempston | 8058 | BIT 3,E | Has key "4" been pressed? ("4 KEMPSTON JOYSTICK"). | |||||||||||||||||
| 805A | JR Z,GameSelect_CheckCursor | If not jump to GameSelect_CheckCursor. | ||||||||||||||||||
| 805C | AND %11111001 | Strip out the control method bits. | ||||||||||||||||||
| 805E | OR %00000010 | Set control method = kempston. | ||||||||||||||||||
|
Handle Cursor Joystick selection.
|
||||||||||||||||||||
| GameSelect_CheckCursor | 8060 | BIT 4,E | Has key "5" been pressed? ("5 CURSOR JOYSTICK"). | |||||||||||||||||
| 8062 | JR Z,GameSelect_StartGame | If not jump to GameSelect_StartGame. | ||||||||||||||||||
| 8064 | AND %11111001 | Strip out the control method bits. | ||||||||||||||||||
| 8066 | OR %00000100 | Set control method = cursor. | ||||||||||||||||||
|
Handle starting a new game.
|
||||||||||||||||||||
| GameSelect_StartGame | 8068 | LD ($5E00),A | Store A at GameOptions. | |||||||||||||||||
| 806B | LD A,$EF | Read from the keyboard;
|
||||||||||||||||||
| 806D | OUT ($FD),A | |||||||||||||||||||
| 806F | IN A,($FE) | |||||||||||||||||||
| 8071 | CPL | Flip the bits. | ||||||||||||||||||
| 8072 | BIT 4,A | Has key "6" been pressed? ("6 START GAME"). | ||||||||||||||||||
| 8074 | JP NZ,StartGame | If so, jump to StartGame. | ||||||||||||||||||
| 8077 | LD A,($5E00) | C=GameOptions. | ||||||||||||||||||
| 807A | LD C,A | |||||||||||||||||||
| 807B | LD A,($5E7C) | A=5E7C. | ||||||||||||||||||
| 807E | XOR C | |||||||||||||||||||
| 807F | PUSH AF | Stash AF on the stack. | ||||||||||||||||||
| 8080 | BIT 0,A | |||||||||||||||||||
| 8082 | CALL NZ,$80FD | |||||||||||||||||||
| 8085 | POP AF | Restore AF from the stack. | ||||||||||||||||||
| 8086 | AND %00000110 | Keep only bits 1-2. | ||||||||||||||||||
| 8088 | JR Z,Game_Restart_0 | |||||||||||||||||||
| 808A | LD DE,$BA9E | DE=BA9E. | ||||||||||||||||||
| 808D | LD A,C | A=C. | ||||||||||||||||||
| 808E | AND %00000110 | Keep only bits 1-2. | ||||||||||||||||||
| 8090 | LD L,A | Create an offset in HL. | ||||||||||||||||||
| 8091 | LD H,$00 | |||||||||||||||||||
| 8093 | ADD HL,DE | HL=BA9E + offset. | ||||||||||||||||||
| 8094 | LD E,(HL) | DE=address held at HL. | ||||||||||||||||||
| 8095 | INC HL | |||||||||||||||||||
| 8096 | LD D,(HL) | |||||||||||||||||||
| 8097 | CALL $B9BC | Call B9BC. | ||||||||||||||||||
|
Handle flashing each selection.
|
||||||||||||||||||||
| Game_Restart_0 | 809A | LD HL,$810F | HL=GameSelection_Attributes+01 (i.e. ignoring "Game Selection" as it doesn't flash). | |||||||||||||||||
| 809D | LD A,($5E00) | C=GameOptions. | ||||||||||||||||||
| 80A0 | LD C,A | |||||||||||||||||||
| 80A1 | BIT 0,C | |||||||||||||||||||
| 80A3 | JR NZ,Game_Restart_3 | |||||||||||||||||||
| 80A5 | CALL MenuAttributeSetUnset | |||||||||||||||||||
| MenuAttrHandler | 80A8 | LD B,$03 | B=03. | |||||||||||||||||
| 80AA | LD A,C | |||||||||||||||||||
| 80AB | RRCA | |||||||||||||||||||
| MenuAttrHandler_Loop | 80AC | AND %00000011 | ||||||||||||||||||
| 80AE | JR Z,Game_Restart_2 | |||||||||||||||||||
| 80B0 | CALL MenuAttributeUnSetFirst | |||||||||||||||||||
| Game_Restart_1 | 80B3 | DEC A | ||||||||||||||||||
| 80B4 | DJNZ MenuAttrHandler_Loop | |||||||||||||||||||
| 80B6 | JP GameSelect_Loop | Jump to GameSelect_Loop. | ||||||||||||||||||
| Game_Restart_2 | 80B9 | CALL MenuAttributeSetFirst | Call MenuAttributeSetFirst. | |||||||||||||||||
| 80BC | JR Game_Restart_1 | Jump to Game_Restart_1. | ||||||||||||||||||
| Game_Restart_3 | 80BE | CALL MenuAttributeUnsetSet | Call MenuAttributeUnsetSet. | |||||||||||||||||
| 80C1 | JR MenuAttrHandler | Jump to MenuAttrHandler. | ||||||||||||||||||
|
Set the first menu item, unset the second.
|
||||||||||||||||||||
| MenuAttributeSetUnset | 80C3 | SET 7,(HL) | Set the FLASH attribute for the menu attribute. | |||||||||||||||||
| 80C5 | INC HL | Move onto the next menu attribute. | ||||||||||||||||||
| MenuAttributeUnSetFirst | 80C6 | RES 7,(HL) | Unset the FLASH attribute for the menu attribute. | |||||||||||||||||
| 80C8 | INC HL | Move onto the next menu attribute. | ||||||||||||||||||
| 80C9 | RET | Return. | ||||||||||||||||||
|
Unset the first menu item, set the second.
|
||||||||||||||||||||
| MenuAttributeUnsetSet | 80CA | RES 7,(HL) | Unset the FLASH attribute for the menu attribute. | |||||||||||||||||
| 80CC | INC HL | Move onto the next menu attribute. | ||||||||||||||||||
| MenuAttributeSetFirst | 80CD | SET 7,(HL) | Set the FLASH attribute for the menu attribute. | |||||||||||||||||
| 80CF | INC HL | Move onto the next menu attribute. | ||||||||||||||||||
| 80D0 | RET | Return. | ||||||||||||||||||
| Prev: 800A | Up: Map | Next: 80D1 |