![]() |
Routines |
| Prev: 7C17 | Up: Map | Next: 7C90 |
|
Used by the routine at ENTRY.
Runs the "ATICATAC GAME SELECTION" menu -- control method (1-3), character (4-6) and 0 to start. Both answers are packed into the one byte at $5E00: bits 1 and 2 are the control method, which READ_CONTROLS picks out with AND $06, and bits 3 and 4 the character, which DRAW_LIVES turns back into a sprite number. Reading it after choosing each character in turn gives $00, $08 and $10.
|
||||
| TITLE_SCREEN | 7C19 | LD HL,$5E00 | $5E00 is the base of the game-state block; the first 16 bytes are zeroed here. | |
| 7C1C | LD B,$10 | |||
| TITLE_SCREEN_0 | 7C1E | LD (HL),$00 | ||
| 7C20 | INC HL | |||
| 7C21 | DJNZ TITLE_SCREEN_0 | |||
| 7C23 | LD HL,$BE4C | Point the tile source at the text font, so the menu can be drawn with PRINT_STRING. | ||
| 7C26 | LD ($5E01),HL | |||
|
This entry point is used by the routine at GAME_OVER.
|
||||
| TITLE_AGAIN | 7C29 | CALL CLEAR_SCREEN | } | |
| 7C2C | CALL DRAW_TITLE_ICONS | |||
| TITLE_SCREEN_1 | 7C2F | CALL DRAW_MENU | ||
| 7C32 | LD A,$F7 | Select the half-row holding keys 1-5. The OUT to $FD is inert on a 48K; what matters is that A is left as the high address byte for the IN that follows. | ||
| 7C34 | OUT ($FD),A | |||
| 7C36 | IN A,($FE) | |||
| 7C38 | CPL | Keyboard bits are active-low, so CPL makes a set bit mean "pressed". | ||
| 7C39 | LD E,A | |||
| 7C3A | LD A,($5E00) | |||
| 7C3D | BIT 0,E | |||
| 7C3F | JR Z,TITLE_SCREEN_2 | |||
| 7C41 | AND $F9 | |||
| TITLE_SCREEN_2 | 7C43 | BIT 1,E | ||
| 7C45 | JR Z,TITLE_SCREEN_3 | |||
| 7C47 | AND $F9 | |||
| 7C49 | OR $02 | |||
| TITLE_SCREEN_3 | 7C4B | BIT 2,E | ||
| 7C4D | JR Z,TITLE_SCREEN_4 | |||
| 7C4F | AND $F9 | |||
| 7C51 | OR $04 | |||
| TITLE_SCREEN_4 | 7C53 | BIT 3,E | ||
| 7C55 | JR Z,TITLE_SCREEN_5 | |||
| 7C57 | AND $E7 | |||
| TITLE_SCREEN_5 | 7C59 | BIT 4,E | ||
| 7C5B | JR Z,TITLE_SCREEN_6 | |||
| 7C5D | AND $E7 | |||
| 7C5F | OR $08 | |||
| TITLE_SCREEN_6 | 7C61 | LD D,A | ||
| 7C62 | LD A,$EF | |||
| 7C64 | OUT ($FD),A | |||
| 7C66 | IN A,($FE) | |||
| 7C68 | CPL | |||
| 7C69 | LD E,A | |||
| 7C6A | LD A,D | |||
| 7C6B | BIT 4,E | |||
| 7C6D | JR Z,TITLE_SCREEN_7 | |||
| 7C6F | AND $E7 | |||
| 7C71 | OR $10 | |||
| TITLE_SCREEN_7 | 7C73 | LD ($5E00),A | ||
| 7C76 | LD C,A | |||
| 7C77 | BIT 0,E | |||
| 7C79 | JP NZ,START_GAME | |||
| 7C7C | LD HL,MENU_DATA | |||
| 7C7F | LD B,$03 | |||
| 7C81 | LD A,C | |||
| 7C82 | CALL HIGHLIGHT_LINE | |||
| 7C85 | LD B,$03 | |||
| 7C87 | LD A,C | |||
| 7C88 | RRCA | |||
| 7C89 | RRCA | |||
| 7C8A | CALL HIGHLIGHT_LINE | |||
| 7C8D | JP TITLE_SCREEN_1 | |||
| Prev: 7C17 | Up: Map | Next: 7C90 |