Prev: 7C17 Up: Map Next: 7C90
7C19: Title screen: draw the menu and poll for a selection
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