LightCycles/intro.asm

910 lines
20 KiB
NASM
Executable File

LDA #$91 ; CTRL-Q = TURN OFF 80 COLUMN
JSR $FDED ; COUT
STA $C000 ; Turn off 80STORE
STA $C00E ; Primary charset
CLI ; Turn off interrupts
LDA #<ARENAS
STA ARENAP
LDA #>ARENAS
STA ARENAP+1
;*
;* Check for connected paddles
;*
JSR GCREAD
LDA #$01
CPX #GCMAX
BNE +
CPY #GCMAX
BNE +
LDA #$00
+ STA USEPDLS
;*
;* Initialize game state and get player options
;*
INITGAME
LDA $C054 ; Display page 1
JSR $FB39 ; TXT mode
JSR NORMAL
JSR $FC58 ; HOME
LDA #$10
STA GCPREVX
STA GCPREVY
;*
;* Init player panel
;*
JSR INVERSE
LDX #0
LDY #20
JSR PUTSXY
!TEXT "/:::: PLAYER 1 ::::\/:::: PLAYER 2 ::::\", 0
LDX #0
LDY #21
JSR PUTSXY
!TEXT "! [===============]!![===============] !", 0
LDX #0
LDY #22
JSR PUTSXY
!TEXT "! <<<<<<<*>>>>>>> !! <<<<<<<*>>>>>>> !", 0
LDX #0
LDY #23
JSR PUTSXY
!TEXT "\::::::::::::::::::/\::::::::::::::::::/", 0
;*
;* Display initial setting screen
;*
SHOWOPT JSR NORMAL
LDX #12
LDY #0
JSR PUTSXY
!TEXT "BY: RESMAN", 0
LDX #10
LDY #1
JSR PUTSXY
!TEXT "COPYRIGHT 1977", 0
LDX #4
LDY #19
JSR PUTSXY
!TEXT "(WHY 1977 WON'T BE LIKE 1977)", 0
LDX #10
LDY #4
JSR GOTOXY
JSR INVERSE
LDA #'P'
JSR PUTC
JSR NORMAL
JSR PUTS
!TEXT "ADDLES: ", 0
LDA USEPDLS
BEQ +
JSR PUTS
!TEXT "ENABLE ", 0
JMP ++
+ JSR PUTS
!TEXT "DISABLE", 0
++ LDX #10
LDY #7
JSR GOTOXY
JSR INVERSE
LDA #'A'
JSR PUTC
JSR NORMAL
JSR PUTS
!TEXT "RENA: ", 0
LDA ARENAP
STA TMP
LDA ARENAP+1
STA TMP+1
LDY #$00
- TYA
PHA
LDA (TMP),Y
JSR PUTC
PLA
TAY
INY
CPY #$10
BNE -
LDX #10
LDY #10
JSR PUTSXY
!TEXT "PLAYER ", 0
JSR INVERSE
LDA #'1'
JSR PUTC
JSR NORMAL
LDA P1MAN
BEQ +
JSR PUTS
!TEXT ": HUMAN ", 0
JMP ++
+ JSR PUTS
!TEXT ": COMPUTER", 0
++ LDX #10
LDY #11
JSR PUTSXY
!TEXT "PLAYER ", 0
JSR INVERSE
LDA #'2'
JSR PUTC
JSR NORMAL
LDA P2MAN
BEQ +
JSR PUTS
!TEXT ": HUMAN ", 0
JMP ++
+ JSR PUTS
!TEXT ": COMPUTER", 0
++ LDX #10
LDY #14
JSR PUTSXY
!TEXT "START GAME:", 0
LDX #15
LDY #15
JSR GOTOXY
JSR INVERSE
LDA #'S'
JSR PUTC
JSR NORMAL
JSR PUTS
!TEXT "HORT TRAIL", 0
LDX #15
LDY #16
JSR GOTOXY
JSR INVERSE
LDA #'M'
JSR PUTC
JSR NORMAL
JSR PUTS
!TEXT "EDIUM TRAIL", 0
LDX #15
LDY #17
JSR GOTOXY
JSR INVERSE
LDA #'L'
JSR PUTC
JSR NORMAL
JSR PUTS
!TEXT "ONG TRAIL", 0
;*
;* Scan for option input
;*
OPTION LDA KEYBD
BMI +
JMP OPTPDLS
+ BIT KEYSTRB
CMP #$D0 ; P key
BNE +
LDA USEPDLS
EOR #$01
STA USEPDLS
JMP SHOWOPT
+ CMP #$C1 ; A key
BNE ++
; Move to next arena
LDA ARENAP
STA TMP
LDA ARENAP+1
STA TMP+1
LDY #$1A ; Scan for end of compressed map
- LDA (TMP),Y
BEQ +
INY
BNE -
+ INY
TYA
CLC
ADC TMP
STA TMP
LDA #$00
ADC TMP+1
STA TMP+1
LDY #$00
LDA (TMP),Y
BNE -
INY
LDA (TMP),Y ; Check for end of arena == 0
BNE +
LDA #<ARENAS ; Wrap around to beginning
STA ARENAP
LDA #>ARENAS
STA ARENAP+1
JMP SHOWOPT
+ TYA
CLC
ADC TMP
STA ARENAP
LDA #$00
ADC TMP+1
STA ARENAP+1
JMP SHOWOPT
++ CMP #$B1 ; 1 KEY
BNE +
LDA P1MAN
EOR #$01
STA P1MAN
JMP SHOWOPT
+ CMP #$B2 ; 2 KEY
BNE +
LDA P2MAN
EOR #$01
STA P2MAN
JMP SHOWOPT
+ CMP #$D3 ; S key
BNE +
LDA #$0F
STA LENTAIL
BNE STARTGAME
+ CMP #$CD ; M key
BNE +
LDA #$7F
STA LENTAIL
BNE STARTGAME
+ CMP #$CC ; L key
BNE +
LDA #$FF
STA LENTAIL
BNE STARTGAME
+ CMP #$9B ; ESC key
BNE OPTPDLS
JMP EXIT
OPTPDLS LDA USEPDLS
BEQ +
JSR GCREAD
JSR UPDTPDL
+ JMP OPTION
STARTGAME
;*
;* Init arena map
;*
LDA #>MAP
STA STPTRH
LDY #<MAP ; Better be $00
STY STPTRL
INITMAP LDA #DRKBLU ; Fill even row
STA (STPTR),Y
INY
LDA #GREY
STA (STPTR),Y
INY
CPY #$40
BCC INITMAP
- LDA #GREY ; Fill odd row
STA (STPTR),Y
INY
LDA #DRKBLU
STA (STPTR),Y
INY
BPL -
- LDA #DRKBLU ; Fill even row
STA (STPTR),Y
INY
LDA #GREY
STA (STPTR),Y
INY
CPY #$C0
BCC -
- LDA #GREY ; Fill odd row
STA (STPTR),Y
INY
LDA #DRKBLU
STA (STPTR),Y
INY
BNE -
INC STPTRH
LDA STPTRH
CMP #>(MAP+$1000)
BNE INITMAP
;*
;* Get arena initial start positions
;*
LDA ARENAP
STA TMP
LDA ARENAP+1
STA TMP+1
LDY #$10 ; Copy start angle/pos out of arena map
LDA (TMP),Y
STA P1ANGLE
INY
LDA (TMP),Y
STA P1XF
INY
LDA (TMP),Y
STA P1XI
STA P1XPREV
INY
LDA (TMP),Y
STA P1YF
INY
LDA (TMP),Y
STA P1YI
STA P1YPREV
INY
LDA (TMP),Y
STA P2ANGLE
INY
LDA (TMP),Y
STA P2XF
INY
LDA (TMP),Y
STA P2XI
STA P2XPREV
INY
LDA (TMP),Y
STA P2YF
INY
LDA (TMP),Y
STA P2YI
STA P2YPREV
;*
;* Init rest of player variables
;*
LDX #$00 ; Clear out tails
- LDA #$40
STA P1YTAIL,X
STA P2YTAIL,X
LDA #$00
STA P1XTAIL,X
LDA #$7F
STA P2XTAIL,X
DEX
BNE -
STX P1TURBO ; Reset turbo values
STX P2TURBO
LDA #FULLBOOST
STA P1BOOST
STA P2BOOST
;*
;* Start decompressing into map
;*
LDA #>MAP
STA STPTRH
LDA #<MAP
STA STPTRL
DECOMP INY
LDA (TMP),Y
BEQ GETCNT
BRK ; This better not happen
GETCNT INY
LDA (TMP),Y
BNE +
JMP INITGR ; Done decompressing, init graphics mode
+ STA SCANLN
INY
TYA
CLC
ADC TMP
STA TMP
LDA #$00
ADC TMP+1
STA TMP+1
REPSCAN LDY #$00
-- LDA (TMP),Y
BNE +
DEC SCANLN
BNE REPSCAN
BEQ GETCNT
+ BMI +
TAX
TYA
PHA
TXA
TAY
LDA #$00
- DEY
STA (STPTR),Y
BNE -
PLA
TAY
TXA
+ AND #$7F
CLC
ADC STPTRL
STA STPTRL
LDA #$00
ADC STPTRH
STA STPTRH
INY
BNE --
;*
;* Clear screens
;*
INITGR LDA $C053 ; Mix mode
LDA $C056 ; GR mode
LDA $C050
LDA #$08 ; Render to page2
STA GPAGE
LDA #BLACK
STA GCLR
LDY #0
LDX #0
LDA #39
STA SCANLN
LDA #39
JSR GRECT
LDA #$04 ; Render to page 1
STA GPAGE
LDA #BLACK
STA GCLR
LDY #0
LDX #0
LDA #39
STA SCANLN
LDA #39
JSR GRECT
LDA #$01 ; Set current page to 1
STA CURPAGE
JSR GAMELOOP
;*
;* Return to caller
;*
PHA
AND #$01 ; Player 1 DeRez?
BEQ +
LDA #MAGENTA
STA GCLR
LDY #0
LDX #0
LDA #19
STA SCANLN
LDA #39
JSR GRECT
+ PLA
AND #$02 ; Player 2 DeRez?
BEQ +
LDA #MAGENTA
STA GCLR
LDY #20
LDX #0
LDA #39
STA SCANLN
LDA #39
JSR GRECT
+ LDX #$20
- LDA $C055 ; Display page 2
BIT SPEAKER
LDA #$7F
JSR $FCA8 ; WAIT
LDA $C054 ; Display page 1
BIT SPEAKER
LDA #$7F
JSR $FCA8 ; WAIT
DEX
BNE -
JSR $FB39 ; TXT mode
JSR $FC58 ; HOME
BIT KEYSTRB
LDX #10
LDY #12
JSR GOTOXY
LDA PSTATUS
CMP #$03
BEQ +
JSR PUTS
!TEXT "PLAYER ", 0
LDA PSTATUS
EOR #$03
JSR PUTA
JSR PUTS
!TEXT " WINS!", 0
JMP ++
+ JSR PUTS
!TEXT " DRAW !!!", 0
++ LDX #$10
- LDA #$FF
JSR $FCA8 ; WAIT
DEX
BNE -
JMP INITGAME
EXIT JSR NORMAL
LDA $BF00
CMP #$4C
BNE + ; No ProDOS
SEI ; Turn interrupts on
JSR $BF00 ; ProDOS QUIT
!BYTE $65
!WORD PARMTBL
PARMTBL !BYTE 4
!BYTE 0
!WORD 0
!BYTE 0
!WORD 0
+ JMP ($FFFC) ; Reset vector
ARENAS !TEXT "BASIC "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,64 ; Scanline repeat count (1..64)
!BYTE 128+64 ; Set 64 tiles
!BYTE 0,0 ; End of compressed map
!TEXT "DRAG RACE "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $1E80 ; P1 Y 30.5
!BYTE $00 ; P2 ANGLE
!WORD $0080 ; P2 X 0.5
!WORD $2280 ; P2 Y 34.5
; Start of compressed map
!BYTE 0,20 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,9 ; Scanline repeat count
!BYTE 45,128+19
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,1 ; Scanline repeat count
!BYTE 1,128+3,5,128+3,5,128+3,5,128+3,5,128+3,5,128+3,20
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,9 ; Scanline repeat count
!BYTE 45,128+19
!BYTE 0,19 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,0 ; End of compressed map
!TEXT "BLACK HOLE "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+28,7,128+1,1,128+27
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+24,16,128+24
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+21,22,128+21
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+19,26,128+19
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+17,30,128+17
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+16,32,128+16
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+14,36,128+14
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+13,38,128+13
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+12,40,128+12
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+11,42,128+11
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+10,44,128+10
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+9,46,128+9
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+8,48,128+8
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+7,50,128+7
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+6,52,128+6
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+5,54,128+5
!BYTE 0,8 ; Scanline repeat count
!BYTE 128+4,56,128+4
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+5,54,128+5
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+6,52,128+6
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+7,50,128+7
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+8,48,128+8
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+9,46,128+9
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+10,44,128+10
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+11,42,128+11
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+12,40,128+12
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+13,38,128+13
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+14,36,128+14
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+16,32,128+16
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+17,30,128+17
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+19,26,128+19
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+21,22,128+21
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+24,16,128+24
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+28,7,128+1,1,128+27
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,0 ; End of compressed map
!TEXT "IRON CROSS "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,4 ; Scanline repeat count
!BYTE 17,128+31,16
!BYTE 0,1 ; Scanline repeat count
!BYTE 21,128+23,20
!BYTE 0,1 ; Scanline repeat count
!BYTE 22,128+21,21
!BYTE 0,1 ; Scanline repeat count
!BYTE 23,128+19,22
!BYTE 0,1 ; Scanline repeat count
!BYTE 24,128+17,23
!BYTE 0,9 ; Scanline repeat count
!BYTE 25,128+15,24
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+4,21,128+15,21,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+5,20,128+15,20,128+4
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+6,19,128+15,19,128+5
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+7,19,128+13,19,128+6
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,19,128+11,19,128+7
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+23,4,128+11,4,128+22
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+24,3,128+11,3,128+23
!BYTE 0,11 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+24,3,128+11,3,128+23
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+23,4,128+11,4,128+22
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,19,128+11,19,128+7
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+7,19,128+13,19,128+6
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+6,19,128+15,19,128+5
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+5,20,128+15,20,128+4
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+4,21,128+15,21,128+3
!BYTE 0,9 ; Scanline repeat count
!BYTE 25,128+15,24
!BYTE 0,1 ; Scanline repeat count
!BYTE 24,128+17,23
!BYTE 0,1 ; Scanline repeat count
!BYTE 23,128+19,22
!BYTE 0,1 ; Scanline repeat count
!BYTE 22,128+21,21
!BYTE 0,1 ; Scanline repeat count
!BYTE 21,128+23,20
!BYTE 0,3 ; Scanline repeat count
!BYTE 16,128+32,16
!BYTE 0,0 ; End of compressed map
!TEXT "GRID "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,8 ; Scanline repeat count (1..64)
!BYTE 128+64 ; Set 64 tiles
!BYTE 128+64 ; Set 64 tiles
!BYTE 128+2,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+2
!BYTE 128+2,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+2
!BYTE 128+2,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+2
!BYTE 128+2,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+4,4,128+2
!BYTE 128+64 ; Set 64 tiles
!BYTE 128+64 ; Set 64 tiles
!BYTE 0,0 ; End of compressed map
!TEXT "RINGS "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,1 ; Scanline repeat count
!BYTE 25,128+14,25
!BYTE 0,1 ; Scanline repeat count
!BYTE 22,128+20,22
!BYTE 0,1 ; Scanline repeat count
!BYTE 19,128+26,19
!BYTE 0,1 ; Scanline repeat count
!BYTE 17,128+30,17
!BYTE 0,1 ; Scanline repeat count
!BYTE 15,128+34,15
!BYTE 0,1 ; Scanline repeat count
!BYTE 14,128+36,14
!BYTE 0,1 ; Scanline repeat count
!BYTE 12,128+40,12
!BYTE 0,1 ; Scanline repeat count
!BYTE 11,128+42,11
!BYTE 0,1 ; Scanline repeat count
!BYTE 10,128+18,2,128+4,1,128+19,10
!BYTE 0,1 ; Scanline repeat count
!BYTE 9,128+15,6,128+4,6,128+15,9
!BYTE 0,1 ; Scanline repeat count
!BYTE 8,128+14,8,128+4,8,128+14,8
!BYTE 0,1 ; Scanline repeat count
!BYTE 7,128+13,10,128+4,10,128+13,7
!BYTE 0,1 ; Scanline repeat count
!BYTE 6,128+12,12,128+4,12,128+12,6
!BYTE 0,1 ; Scanline repeat count
!BYTE 6,128+11,13,128+4,13,128+11,6
!BYTE 0,1 ; Scanline repeat count
!BYTE 5,128+11,14,128+4,14,128+11,5
!BYTE 0,1 ; Scanline repeat count
!BYTE 4,128+11,15,128+4,15,128+11,4
!BYTE 0,1 ; Scanline repeat count
!BYTE 4,128+10,15,128+6,15,128+10,4
!BYTE 0,1 ; Scanline repeat count
!BYTE 3,128+10,13,128+12,13,128+10,3
!BYTE 0,1 ; Scanline repeat count
!BYTE 3,128+9,12,128+16,12,128+9,3
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+10,10,128+20,10,128+10,2
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+9,10,128+22,10,128+9,2
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+9,9,128+24,9,128+9,2
!BYTE 0,2 ; Scanline repeat count
!BYTE 1,128+9,9,128+26,9,128+9,1
!BYTE 0,1 ; Scanline repeat count
!BYTE 1,128+8,9,128+12,4,128+12,9,128+8,1
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+9,9,128+10,8,128+10,9,128+9
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+9,8,128+9,12,128+9,8,128+9
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,9,128+8,14,128+8,9,128+8
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,8,128+9,14,128+9,8,128+8
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+8,8,128+8,16,128+8,8,128+8
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,8,128+9,14,128+9,8,128+8
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+8,9,128+8,14,128+8,9,128+8
!BYTE 0,2 ; Scanline repeat count
!BYTE 128+9,8,128+9,12,128+9,8,128+9
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+9,9,128+10,8,128+10,9,128+8,1
!BYTE 0,1 ; Scanline repeat count
!BYTE 1,128+8,9,128+12,4,128+12,9,128+8,1
!BYTE 0,2 ; Scanline repeat count
!BYTE 1,128+9,9,128+26,9,128+9,1
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+9,9,128+24,9,128+9,2
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+9,10,128+22,10,128+9,2
!BYTE 0,1 ; Scanline repeat count
!BYTE 2,128+10,10,128+20,10,128+10,2
!BYTE 0,1 ; Scanline repeat count
!BYTE 3,128+9,12,128+16,12,128+9,3
!BYTE 0,1 ; Scanline repeat count
!BYTE 3,128+10,13,128+12,13,128+10,3
!BYTE 0,1 ; Scanline repeat count
!BYTE 4,128+10,15,128+6,15,128+10,4
!BYTE 0,1 ; Scanline repeat count
!BYTE 4,128+11,15,128+4,15,128+11,4
!BYTE 0,1 ; Scanline repeat count
!BYTE 5,128+11,14,128+4,14,128+11,5
!BYTE 0,1 ; Scanline repeat count
!BYTE 6,128+11,13,128+4,13,128+11,6
!BYTE 0,1 ; Scanline repeat count
!BYTE 6,128+12,12,128+4,12,128+12,6
!BYTE 0,1 ; Scanline repeat count
!BYTE 7,128+13,10,128+4,10,128+13,7
!BYTE 0,1 ; Scanline repeat count
!BYTE 8,128+14,8,128+4,8,128+14,8
!BYTE 0,1 ; Scanline repeat count
!BYTE 9,128+15,6,128+4,6,128+15,9
!BYTE 0,1 ; Scanline repeat count
!BYTE 10,128+17,1,128+1,1,128+4,2,128+18,10
!BYTE 0,1 ; Scanline repeat count
!BYTE 11,128+42,11
!BYTE 0,1 ; Scanline repeat count
!BYTE 12,128+40,12
!BYTE 0,1 ; Scanline repeat count
!BYTE 14,128+36,14
!BYTE 0,1 ; Scanline repeat count
!BYTE 15,128+34,15
!BYTE 0,1 ; Scanline repeat count
!BYTE 17,128+30,17
!BYTE 0,1 ; Scanline repeat count
!BYTE 19,128+26,19
!BYTE 0,1 ; Scanline repeat count
!BYTE 22,128+20,22
!BYTE 0,1 ; Scanline repeat count
!BYTE 26,128+13,25
!BYTE 0,0 ; End of compressed map
!TEXT "MAZE "
!BYTE $00 ; P1 ANGLE
!WORD $0080 ; P1 X 0.5
!WORD $2080 ; P1 Y 32.5
!BYTE $40 ; P2 ANGLE
!WORD $3F80 ; P2 X 63.5
!WORD $2080 ; P2 Y 32.5
; Start of compressed map
!BYTE 0,4 ; Scanline repeat count
!BYTE 128+64
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,57,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+19,1,128+23,1,128+3,1,128+7,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,13,128+3,1,128+3,13,128+3,5,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+15,1,128+19,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+3,9,128+3,1,128+3,9,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+15,1,128+11,1,128+3,1,128+3,1,128+3,1,128+7,1,128+3,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,13,128+3,1,128+3,9,128+3,1,128+3,1,128+3,9,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+15,1,128+3,1,128+27,1,128+7,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,13,128+3,1,128+3,13,128+3,1,128+3,5,128+3,1,128+3,5,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+20,1,128+19,1,128+15,1,128+7
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,13,128+3,17,128+3,1,128+3,9,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+35,1,128+11,1,128+3,1,128+3,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,33,128+3,5,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+40,1,128+7,1,128+3,1,128+11
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,13,128+3,17,128+3,9,128+3,1,128+3,5,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+20,1,128+7,1,128+11,1,128+7,1,128+3,1,128+3,1,128+7
!BYTE 0,1 ; Scanline repeat count
!BYTE 8,128+4,5,128+3,1,128+3,1,128+3,9,128+3,1,128+7,1,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+15,1,128+3,1,128+11,1,128+19,1,128+3,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,13,128+3,1,128+3,5,128+3,1,128+3,5,128+3,1,128+3,5,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+15,1,128+3,1,128+7,1,128+3,1,128+7,1,128+3,1,128+11,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+3,5,128+3,1,128+3,9,128+3,1,128+3,1,128+3,1,128+3,1,128+3,9,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+7,1,128+3,1,128+15,1,128+3,1,128+7,1,128+11,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,17,128+3,1,128+3,5,128+3,5,128+3,1,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+19,1,128+19,1,128+3,1,128+3,1,128+3,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+3,9,128+3,1,128+3,1,128+3,5,128+3,5,128+3,1,128+3,1,128+3,5,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+24,1,128+3,1,128+7,1,128+3,1,128+7,1,128+3,1,128+11
!BYTE 0,1 ; Scanline repeat count
!BYTE 21,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,9,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+8,1,128+7,1,128+7,1,128+7,1,128+11,1,128+3,1,128+11,1,128+3
!BYTE 0,1 ; Scanline repeat count
!BYTE 128+4,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,1,128+3,13,128+3,9,128+3,1,128+3
!BYTE 0,3 ; Scanline repeat count
!BYTE 128+4,1,128+7,1,128+7,1,128+3,1,128+3,1,128+27,1,128+7
!BYTE 0,0 ; End of compressed map
!BYTE $00 ; End of arenas
ARENAP !WORD ARENAS