![]() |
Routines |
| Prev: B346 | Up: Map | Next: B473 |
|
Used by the routine at GameInitialisation.
|
||||||||||||||||||||
| HandlerGameMenu | B3D5 | LD A,$FF | Write FF to FlagHallOfFame. | |||||||||||||||||
| B3D7 | LD ($96B7),A | |||||||||||||||||||
| B3DA | CALL ClearPlayArea_Attributes | Call ClearPlayArea_Attributes. | ||||||||||||||||||
| B3DD | CALL ClearPlayArea | Call ClearPlayArea. | ||||||||||||||||||
| B3E0 | LD HL,$61C6 | HL=Room_Special_MainMenu. | ||||||||||||||||||
| B3E3 | CALL DrawRoom | Call DrawRoom. | ||||||||||||||||||
| B3E6 | CALL GameMenu | Call GameMenu. | ||||||||||||||||||
| B3E9 | CALL HallOfFameCheck | Call HallOfFameCheck. | ||||||||||||||||||
| B3EC | LD DE,$BC67 | HL=MusicData_GameComplete. | ||||||||||||||||||
| B3EF | CALL PlayAudio_WaitKey | Call PlayAudio_WaitKey. | ||||||||||||||||||
| HandlerGameMenu_0 | B3F2 | CALL GameMenu | Call GameMenu. | |||||||||||||||||
| B3F5 | LD A,$F7 | Read from the keyboard;
|
||||||||||||||||||
| B3F7 | OUT ($FD),A | |||||||||||||||||||
| B3F9 | IN A,($FE) | |||||||||||||||||||
| B3FB | CPL | Flip the bits. | ||||||||||||||||||
| B3FC | LD E,A | Store the result in E. | ||||||||||||||||||
| B3FD | LD A,($9692) | A=GameOptions. | ||||||||||||||||||
|
Handle 1UP game selection.
|
||||||||||||||||||||
| GameSelect_Check1UP | B400 | BIT 0,E | Has key "1" been pressed? ("1 PLAYER GAME"). | |||||||||||||||||
| B402 | JR Z,GameSelect_Check2UP | If not jump to GameSelect_Check2UP. | ||||||||||||||||||
| B404 | RES 0,A | Reset bit 0. | ||||||||||||||||||
|
Handle 2UP game selection.
|
||||||||||||||||||||
| GameSelect_Check2UP | B406 | BIT 1,E | Has key "2" been pressed? ("2 PLAYER GAME"). | |||||||||||||||||
| B408 | JR Z,GameSelect_CheckKeyboard | If not jump to GameSelect_CheckKeyboard. | ||||||||||||||||||
| B40A | SET 0,A | Set bit 0. | ||||||||||||||||||
|
Handle Keyboard selection.
|
||||||||||||||||||||
| GameSelect_CheckKeyboard | B40C | BIT 2,E | Has key "3" been pressed? ("KEYBOARD"). | |||||||||||||||||
| B40E | JR Z,GameSelect_CheckKempston | If not jump to GameSelect_CheckKempston. | ||||||||||||||||||
| B410 | AND %11111001 | Keep only bits 0, 3-7. | ||||||||||||||||||
|
Handle Kempston Joystick selection.
|
||||||||||||||||||||
| GameSelect_CheckKempston | B412 | BIT 3,E | Has key "4" been pressed? ("KEMPSTON JOYSTICK"). | |||||||||||||||||
| B414 | JR Z,GameSelect_CheckCursor | If not jump to GameSelect_CheckCursor. | ||||||||||||||||||
| B416 | AND %11111001 | Keep only bits 0, 3-7. | ||||||||||||||||||
| B418 | OR %00000010 | Set control method = 02. | ||||||||||||||||||
|
Handle Cursor Joystick selection.
|
||||||||||||||||||||
| GameSelect_CheckCursor | B41A | BIT 4,E | Has key "3" been pressed? ("CURSOR JOYSTICK"). | |||||||||||||||||
| B41C | JR Z,HandlerGameMenu_1 | If not jump to HandlerGameMenu_1. | ||||||||||||||||||
| B41E | AND %11111001 | Keep only bits 0, 3-7. | ||||||||||||||||||
| B420 | OR %00000100 | Set control method = 04. | ||||||||||||||||||
|
This entry point is used by the routine at PlayAudio_WaitKey.
|
||||||||||||||||||||
| HandlerGameMenu_1 | B422 | LD C,A | Temporarily store A (GameOptions) in C. | |||||||||||||||||
| B423 | LD A,$EF | Read from the keyboard;
|
||||||||||||||||||
| B425 | OUT ($FD),A | |||||||||||||||||||
| B427 | IN A,($FE) | |||||||||||||||||||
| B429 | CPL | Flip the bits. | ||||||||||||||||||
| B42A | LD E,A | Store the result in E. | ||||||||||||||||||
| B42B | LD A,C | Restore the previous game options value to A. | ||||||||||||||||||
|
Handle Interface II Joystick selection.
|
||||||||||||||||||||
| GameSelect_CheckInterface2 | B42C | BIT 4,E | Has key "6" been pressed? ("INTERFACE II"). | |||||||||||||||||
| B42E | JR Z,HandlerGameMenu_2 | If not jump to HandlerGameMenu_2. | ||||||||||||||||||
| B430 | OR %00000110 | Set control method = 06. | ||||||||||||||||||
| HandlerGameMenu_2 | B432 | LD ($9692),A | Write A to GameOptions. | |||||||||||||||||
|
Handle starting a new game.
|
||||||||||||||||||||
| GameSelect_Start | B435 | BIT 0,E | Has key "0" been pressed? ("START GAME"). | |||||||||||||||||
| B437 | RET NZ | If so, return. | ||||||||||||||||||
| B438 | CALL HallOfFameCheck | Call HallOfFameCheck. | ||||||||||||||||||
| B43B | JP HandlerGameMenu_0 | Jump to HandlerGameMenu_0. | ||||||||||||||||||
| HallOfFameCheck | B43E | LD HL,$96B7 | HL=FlagHallOfFame. | |||||||||||||||||
| B441 | LD A,($9692) | A=GameOptions. | ||||||||||||||||||
| B444 | CP (HL) | |||||||||||||||||||
| B445 | LD ($96B7),A | Write A to FlagHallOfFame. | ||||||||||||||||||
| B448 | CALL HandlerHallOfFame | Call HandlerHallOfFame. | ||||||||||||||||||
|
Handle flashing each selection.
|
||||||||||||||||||||
| B44B | LD HL,$B498 | HL=GameSelection_Attributes. | ||||||||||||||||||
| B44E | LD A,($9692) | A=GameOptions. | ||||||||||||||||||
| B451 | LD C,A | Temporarily store A (GameOptions) in C. | ||||||||||||||||||
|
There are two player options to choose from (1UP or 2UP game).
|
||||||||||||||||||||
| B452 | LD B,$02 | B=02. | ||||||||||||||||||
| B454 | AND %00000001 | Keep only bit 0 (the player options). | ||||||||||||||||||
| B456 | CALL HandlerMenuAttributeFlash | Call HandlerMenuAttributeFlash. | ||||||||||||||||||
| B459 | LD A,C | Restore the previous game options value to A. | ||||||||||||||||||
| B45A | RRCA | Shift off the 1UP/ 2UP player options. | ||||||||||||||||||
| B45B | AND %00000011 | Keep only bits 0-1 (the control options). | ||||||||||||||||||
|
There are four control methods to choose from.
|
||||||||||||||||||||
| B45D | LD B,$04 | B=04 (counter). | ||||||||||||||||||
| B45F | CALL HandlerMenuAttributeFlash | Call HandlerMenuAttributeFlash. | ||||||||||||||||||
| B462 | RET | Return. | ||||||||||||||||||
|
Selection flashing routine.
|
||||||||||||||||||||
| HandlerMenuAttributeFlash | B463 | AND A | Jump to MenuAttributeUnset if A is zero. | |||||||||||||||||
| B464 | JR NZ,MenuAttributeUnset | |||||||||||||||||||
| MenuAttributeSet | B466 | SET 7,(HL) | Set the FLASH attribute for the current selection. | |||||||||||||||||
| B468 | JR MenuAttributeNext | Jump to MenuAttributeNext, we're done here. | ||||||||||||||||||
| HandlerMenuAttributeFlash_Loop | B46A | DEC A | Decrease A by one. | |||||||||||||||||
| B46B | JR Z,MenuAttributeSet | Jump to MenuAttributeSet if A is zero. | ||||||||||||||||||
| MenuAttributeUnset | B46D | RES 7,(HL) | Unset the FLASH attribute for the current selection. | |||||||||||||||||
| MenuAttributeNext | B46F | INC HL | Move onto the next selection attribute. | |||||||||||||||||
| B470 | DJNZ HandlerMenuAttributeFlash_Loop | Decrease counter by one and loop back to HandlerMenuAttributeFlash_Loop until counter is zero. | ||||||||||||||||||
| B472 | RET | Return. | ||||||||||||||||||
| Prev: B346 | Up: Map | Next: B473 |