initial commit
This commit is contained in:
parent
f7397a9e7d
commit
17ee780eb7
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 284 KiB |
Binary file not shown.
After Width: | Height: | Size: 301 KiB |
|
@ -0,0 +1,55 @@
|
||||||
|
!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
|
|
@ -0,0 +1,15 @@
|
||||||
|
!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
|
|
@ -0,0 +1,815 @@
|
||||||
|
;*
|
||||||
|
;* Draw player viewport
|
||||||
|
;*
|
||||||
|
DRAWVIEW
|
||||||
|
STA VIEWPORT
|
||||||
|
;*
|
||||||
|
;* Render ground from bottom -> up
|
||||||
|
;*
|
||||||
|
DRAWGRND LDA ANGLE ; Calc S,T,DS,DT table address
|
||||||
|
AND #$7F ; ST table offset = angle * horizon * 8
|
||||||
|
LSR ; horizon * 8 = 16 * 8 = 128
|
||||||
|
TAX ; angle * 128 = angle << 7 == (angle<<8) >> 1
|
||||||
|
LDA #$00 ;
|
||||||
|
STA SCANLN ; for later...
|
||||||
|
ROR
|
||||||
|
; CLC ; Carry = 0 from above
|
||||||
|
ADC #<ST_TBL ; Add ST table address to offset
|
||||||
|
STA STPTRL
|
||||||
|
TXA
|
||||||
|
ADC #>ST_TBL
|
||||||
|
STA STPTRH
|
||||||
|
;*
|
||||||
|
;* Draw even and odd scanlines together
|
||||||
|
;*
|
||||||
|
DRAWGRNDSCN
|
||||||
|
LDA VIEWPORT ; Max scanline number/2
|
||||||
|
SEC
|
||||||
|
SBC SCANLN
|
||||||
|
TAX
|
||||||
|
LDA TXT_TBLL,X
|
||||||
|
STA GBASL
|
||||||
|
LDA TXT_TBLH,X
|
||||||
|
ORA GPAGE
|
||||||
|
STA GBASH
|
||||||
|
;*
|
||||||
|
;* Draw right half of odd scanline
|
||||||
|
;*
|
||||||
|
LDY #$00 ; Copy and update working values from ST table
|
||||||
|
STY S_MIDFL ; Convert ST_TBL from 6.10 fixpt to 8.16 fixpt and add XYVIEW
|
||||||
|
STY T_MIDFL
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA S_MIDFH
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR S_MIDFH
|
||||||
|
ROR S_MIDFL
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR S_MIDFH
|
||||||
|
ROR S_MIDFL
|
||||||
|
STA S_MIDI
|
||||||
|
LDA S_MIDFH
|
||||||
|
CLC
|
||||||
|
ADC XVIEWF
|
||||||
|
STA S_MIDFH
|
||||||
|
LDA S_MIDI
|
||||||
|
ADC XVIEWI
|
||||||
|
STA S_MIDI
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA T_MIDFH
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR T_MIDFH
|
||||||
|
ROR T_MIDFL
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR T_MIDFH
|
||||||
|
ROR T_MIDFL
|
||||||
|
STA T_MIDI
|
||||||
|
LDA T_MIDFH
|
||||||
|
CLC
|
||||||
|
ADC YVIEWF
|
||||||
|
STA T_MIDFH
|
||||||
|
LDA T_MIDI
|
||||||
|
ADC YVIEWI
|
||||||
|
STA T_MIDI
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA DS_FRACL
|
||||||
|
LDX #$00
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
BCC +
|
||||||
|
DEX
|
||||||
|
+ STA DS_FRACH
|
||||||
|
STX DS_INT
|
||||||
|
ROR ; S = S_MID + DS/2
|
||||||
|
STA S_FRACH
|
||||||
|
LDA DS_FRACL
|
||||||
|
ROR
|
||||||
|
CLC
|
||||||
|
ADC S_MIDFL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
ADC S_MIDFH
|
||||||
|
STA S_FRACH
|
||||||
|
TXA
|
||||||
|
ADC S_MIDI
|
||||||
|
STA S_INT
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA DT_FRACL
|
||||||
|
LDX #$00
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
BCC +
|
||||||
|
DEX
|
||||||
|
+ STA DT_FRACH
|
||||||
|
STX DT_INT
|
||||||
|
ROR ; T = T_MID + DT/2
|
||||||
|
STA T_FRACH
|
||||||
|
LDA DT_FRACL
|
||||||
|
ROR
|
||||||
|
CLC
|
||||||
|
ADC T_MIDFL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
ADC T_MIDFH
|
||||||
|
STA T_FRACH
|
||||||
|
TXA
|
||||||
|
ADC T_MIDI
|
||||||
|
STA T_INT
|
||||||
|
TYA ; Update STPTR to next scanline
|
||||||
|
SEC
|
||||||
|
ADC STPTRL
|
||||||
|
STA STPTRL
|
||||||
|
BCC +
|
||||||
|
INC STPTRH
|
||||||
|
+ LDY #15 ; Right-middle of screen
|
||||||
|
BNE GRNDRO
|
||||||
|
- LDA #$00
|
||||||
|
BEQ +
|
||||||
|
GRNDRO LDA S_INT
|
||||||
|
CMP #$40
|
||||||
|
BCS -
|
||||||
|
LDX T_INT
|
||||||
|
CPX #$40
|
||||||
|
BCS -
|
||||||
|
ORA MAP_TBLL,X
|
||||||
|
STA RDTEXRO+1
|
||||||
|
LDA MAP_TBLH,X
|
||||||
|
STA RDTEXRO+2
|
||||||
|
RDTEXRO LDA MAP
|
||||||
|
AND #$F0
|
||||||
|
+ STA (GBASE),Y
|
||||||
|
LDA S_FRACL ; S = S + DS
|
||||||
|
CLC
|
||||||
|
ADC DS_FRACL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
ADC DS_FRACH
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_INT
|
||||||
|
ADC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA T_FRACL ; T = T + DT
|
||||||
|
CLC
|
||||||
|
ADC DT_FRACL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
ADC DT_FRACH
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_INT
|
||||||
|
ADC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
INY
|
||||||
|
CPY #30
|
||||||
|
BNE GRNDRO
|
||||||
|
;*
|
||||||
|
;* Draw left half of odd scanline
|
||||||
|
;*
|
||||||
|
LDA DS_FRACL
|
||||||
|
STA TMP
|
||||||
|
LDA DS_FRACH
|
||||||
|
CMP #$80
|
||||||
|
ROR ; S = S_MID - DS/2
|
||||||
|
STA TMP+1
|
||||||
|
ROR TMP
|
||||||
|
LDA S_MIDFL
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_MIDFH
|
||||||
|
SBC TMP+1
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_MIDI
|
||||||
|
SBC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA DT_FRACL
|
||||||
|
STA TMP
|
||||||
|
LDA DT_FRACH
|
||||||
|
CMP #$80
|
||||||
|
ROR ; T = T_MID - DT/2
|
||||||
|
STA TMP+1
|
||||||
|
ROR TMP
|
||||||
|
LDA T_MIDFL
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_MIDFH
|
||||||
|
SBC TMP+1
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_MIDI
|
||||||
|
SBC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
LDY #14 ; Left-middle of screen
|
||||||
|
BNE GRNDLO
|
||||||
|
- LDA #$00
|
||||||
|
BEQ +
|
||||||
|
GRNDLO LDA S_INT
|
||||||
|
CMP #$40
|
||||||
|
BCS -
|
||||||
|
LDX T_INT
|
||||||
|
CPX #$40
|
||||||
|
BCS -
|
||||||
|
ORA MAP_TBLL,X
|
||||||
|
STA RDTEXLO+1
|
||||||
|
LDA MAP_TBLH,X
|
||||||
|
STA RDTEXLO+2
|
||||||
|
RDTEXLO LDA MAP
|
||||||
|
AND #$F0
|
||||||
|
+ STA (GBASE),Y
|
||||||
|
LDA S_FRACL ; S = S + DS
|
||||||
|
SEC
|
||||||
|
SBC DS_FRACL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
SBC DS_FRACH
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_INT
|
||||||
|
SBC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA T_FRACL ; T = T + DT
|
||||||
|
SEC
|
||||||
|
SBC DT_FRACL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
SBC DT_FRACH
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_INT
|
||||||
|
SBC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
DEY
|
||||||
|
BPL GRNDLO
|
||||||
|
;*
|
||||||
|
;* Draw right half of even scanline
|
||||||
|
;*
|
||||||
|
DEC VDLY
|
||||||
|
BNE +
|
||||||
|
BIT SPEAKER
|
||||||
|
LDA VTONE
|
||||||
|
STA VDLY
|
||||||
|
+ LDY #$00 ; Copy and update working values from ST table
|
||||||
|
STY S_MIDFL ; Convert ST_TBL from 6.10 fixpt to 8.16 fixpt and add XYVIEW
|
||||||
|
STY T_MIDFL
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA S_MIDFH
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR S_MIDFH
|
||||||
|
ROR S_MIDFL
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR S_MIDFH
|
||||||
|
ROR S_MIDFL
|
||||||
|
STA S_MIDI
|
||||||
|
LDA S_MIDFH
|
||||||
|
CLC
|
||||||
|
ADC XVIEWF
|
||||||
|
STA S_MIDFH
|
||||||
|
LDA S_MIDI
|
||||||
|
ADC XVIEWI
|
||||||
|
STA S_MIDI
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA T_MIDFH
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR T_MIDFH
|
||||||
|
ROR T_MIDFL
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
ROR T_MIDFH
|
||||||
|
ROR T_MIDFL
|
||||||
|
STA T_MIDI
|
||||||
|
LDA T_MIDFH
|
||||||
|
CLC
|
||||||
|
ADC YVIEWF
|
||||||
|
STA T_MIDFH
|
||||||
|
LDA T_MIDI
|
||||||
|
ADC YVIEWI
|
||||||
|
STA T_MIDI
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA DS_FRACL
|
||||||
|
LDX #$00
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
BCC +
|
||||||
|
DEX
|
||||||
|
+ STA DS_FRACH
|
||||||
|
STX DS_INT
|
||||||
|
ROR ; S = S_MID + DS/2
|
||||||
|
STA S_FRACH
|
||||||
|
LDA DS_FRACL
|
||||||
|
ROR
|
||||||
|
CLC
|
||||||
|
ADC S_MIDFL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
ADC S_MIDFH
|
||||||
|
STA S_FRACH
|
||||||
|
TXA
|
||||||
|
ADC S_MIDI
|
||||||
|
STA S_INT
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
STA DT_FRACL
|
||||||
|
LDX #$00
|
||||||
|
INY
|
||||||
|
LDA (STPTR),Y
|
||||||
|
CMP #$80
|
||||||
|
BCC +
|
||||||
|
DEX
|
||||||
|
+ STA DT_FRACH
|
||||||
|
STX DT_INT
|
||||||
|
ROR ; T = T_MID + DT/2
|
||||||
|
STA T_FRACH
|
||||||
|
LDA DT_FRACL
|
||||||
|
ROR
|
||||||
|
CLC
|
||||||
|
ADC T_MIDFL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
ADC T_MIDFH
|
||||||
|
STA T_FRACH
|
||||||
|
TXA
|
||||||
|
ADC T_MIDI
|
||||||
|
STA T_INT
|
||||||
|
TYA ; Update STPTR to next scanline
|
||||||
|
SEC
|
||||||
|
ADC STPTRL
|
||||||
|
STA STPTRL
|
||||||
|
BCC +
|
||||||
|
INC STPTRH
|
||||||
|
+ LDY #15 ; Right-middle of screen
|
||||||
|
BNE GRNDRE
|
||||||
|
- LDA #$00
|
||||||
|
BEQ +
|
||||||
|
GRNDRE LDA S_INT
|
||||||
|
CMP #$40
|
||||||
|
BCS -
|
||||||
|
LDX T_INT
|
||||||
|
CPX #$40
|
||||||
|
BCS -
|
||||||
|
ORA MAP_TBLL,X
|
||||||
|
STA RDTEXRE+1
|
||||||
|
LDA MAP_TBLH,X
|
||||||
|
STA RDTEXRE+2
|
||||||
|
RDTEXRE LDA MAP
|
||||||
|
AND #$0F
|
||||||
|
+ ORA (GBASE),Y
|
||||||
|
STA (GBASE),Y
|
||||||
|
LDA S_FRACL ; S = S + DS
|
||||||
|
CLC
|
||||||
|
ADC DS_FRACL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
ADC DS_FRACH
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_INT
|
||||||
|
ADC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA T_FRACL ; T = T + DT
|
||||||
|
CLC
|
||||||
|
ADC DT_FRACL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
ADC DT_FRACH
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_INT
|
||||||
|
ADC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
INY
|
||||||
|
CPY #30
|
||||||
|
BNE GRNDRE
|
||||||
|
;*
|
||||||
|
;* Draw left half of even scanline
|
||||||
|
;*
|
||||||
|
LDA DS_FRACL
|
||||||
|
STA TMP
|
||||||
|
LDA DS_FRACH
|
||||||
|
CMP #$80
|
||||||
|
ROR ; S = S_MID - DS/2
|
||||||
|
STA TMP+1
|
||||||
|
ROR TMP
|
||||||
|
LDA S_MIDFL
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_MIDFH
|
||||||
|
SBC TMP+1
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_MIDI
|
||||||
|
SBC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA DT_FRACL
|
||||||
|
STA TMP
|
||||||
|
LDA DT_FRACH
|
||||||
|
CMP #$80
|
||||||
|
ROR ; T = T_MID - DT/2
|
||||||
|
STA TMP+1
|
||||||
|
ROR TMP
|
||||||
|
LDA T_MIDFL
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_MIDFH
|
||||||
|
SBC TMP+1
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_MIDI
|
||||||
|
SBC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
LDY #14 ; Left-middle of screen
|
||||||
|
BNE GRNDLE
|
||||||
|
- LDA #$00
|
||||||
|
BEQ +
|
||||||
|
GRNDLE LDA S_INT
|
||||||
|
CMP #$40
|
||||||
|
BCS -
|
||||||
|
LDX T_INT
|
||||||
|
CPX #$40
|
||||||
|
BCS -
|
||||||
|
ORA MAP_TBLL,X
|
||||||
|
STA RDTEXLE+1
|
||||||
|
LDA MAP_TBLH,X
|
||||||
|
STA RDTEXLE+2
|
||||||
|
RDTEXLE LDA MAP
|
||||||
|
AND #$0F
|
||||||
|
+ ORA (GBASE),Y
|
||||||
|
STA (GBASE),Y
|
||||||
|
LDA S_FRACL ; S = S + DS
|
||||||
|
SEC
|
||||||
|
SBC DS_FRACL
|
||||||
|
STA S_FRACL
|
||||||
|
LDA S_FRACH
|
||||||
|
SBC DS_FRACH
|
||||||
|
STA S_FRACH
|
||||||
|
LDA S_INT
|
||||||
|
SBC DS_INT
|
||||||
|
STA S_INT
|
||||||
|
LDA T_FRACL ; T = T + DT
|
||||||
|
SEC
|
||||||
|
SBC DT_FRACL
|
||||||
|
STA T_FRACL
|
||||||
|
LDA T_FRACH
|
||||||
|
SBC DT_FRACH
|
||||||
|
STA T_FRACH
|
||||||
|
LDA T_INT
|
||||||
|
SBC DT_INT
|
||||||
|
STA T_INT
|
||||||
|
DEY
|
||||||
|
BPL GRNDLE
|
||||||
|
DEC VDLY
|
||||||
|
BNE +
|
||||||
|
BIT SPEAKER
|
||||||
|
LDA VTONE
|
||||||
|
STA VDLY
|
||||||
|
+ INC SCANLN ; Move on to next even/odd scanlines
|
||||||
|
LDY SCANLN
|
||||||
|
CPY #HORIZON/2
|
||||||
|
BEQ DRAWBACK
|
||||||
|
JMP DRAWGRNDSCN
|
||||||
|
;*
|
||||||
|
;* Draw background
|
||||||
|
;*
|
||||||
|
DRAWBACK LDA VIEWPORT ; Max scanline number/2
|
||||||
|
SEC
|
||||||
|
SBC SCANLN
|
||||||
|
TAY
|
||||||
|
LDA TXT_TBLL,Y
|
||||||
|
STA STBCK1+1
|
||||||
|
LDA TXT_TBLH,Y
|
||||||
|
ORA GPAGE
|
||||||
|
STA STBCK1+2
|
||||||
|
LDA TXT_TBLL-1,Y
|
||||||
|
STA STBCK2+1
|
||||||
|
LDA TXT_TBLH-1,Y
|
||||||
|
ORA GPAGE
|
||||||
|
STA STBCK2+2
|
||||||
|
LDY #29
|
||||||
|
LDA ANGLE
|
||||||
|
CLC
|
||||||
|
ADC #15
|
||||||
|
- AND #$7F
|
||||||
|
TAX
|
||||||
|
LDA WALLS,X
|
||||||
|
STBCK1 STA $0400,Y
|
||||||
|
AND #$F0
|
||||||
|
STBCK2 STA $0400,Y
|
||||||
|
DEX
|
||||||
|
TXA
|
||||||
|
DEY
|
||||||
|
BPL -
|
||||||
|
;*
|
||||||
|
;* Draw top-down map view
|
||||||
|
;*
|
||||||
|
DRAWMAP LDA VIEWPORT
|
||||||
|
TAY
|
||||||
|
STY SCANLN
|
||||||
|
SEC
|
||||||
|
SBC #9 ; 20 - 2
|
||||||
|
STA VIEWPORT
|
||||||
|
DRAWMAPSCN
|
||||||
|
LDA TXT_TBLL,Y
|
||||||
|
STA STMAP+1
|
||||||
|
LDA TXT_TBLH,Y
|
||||||
|
ORA GPAGE
|
||||||
|
STA STMAP+2
|
||||||
|
LDX #$80
|
||||||
|
TYA
|
||||||
|
CLC
|
||||||
|
ADC YVIEWI
|
||||||
|
SEC
|
||||||
|
SBC #$05
|
||||||
|
; SEC
|
||||||
|
SBC VIEWPORT
|
||||||
|
CMP #$40
|
||||||
|
BCS + ; Scanline is off the map, so force black coordinates
|
||||||
|
TAX
|
||||||
|
LDA MAP_TBLL,X
|
||||||
|
STA LDMAP+1
|
||||||
|
LDA MAP_TBLH,X
|
||||||
|
STA LDMAP+2
|
||||||
|
LDA XVIEWI
|
||||||
|
SEC
|
||||||
|
SBC #$04
|
||||||
|
TAX
|
||||||
|
+ LDY #31
|
||||||
|
- CPX #$40
|
||||||
|
BCC LDMAP
|
||||||
|
LDA #$00
|
||||||
|
BEQ STMAP
|
||||||
|
LDMAP LDA MAP,X
|
||||||
|
STMAP STA $0400,Y
|
||||||
|
INX
|
||||||
|
INY
|
||||||
|
CPY #40
|
||||||
|
BNE -
|
||||||
|
DEC MDLY
|
||||||
|
BNE +
|
||||||
|
BIT SPEAKER
|
||||||
|
LDA MTONE
|
||||||
|
STA MDLY
|
||||||
|
+ DEC SCANLN
|
||||||
|
LDY SCANLN
|
||||||
|
CPY VIEWPORT
|
||||||
|
BNE DRAWMAPSCN
|
||||||
|
LDA P1XI ; Plot player 1 on map
|
||||||
|
SEC
|
||||||
|
SBC XVIEWI
|
||||||
|
CLC
|
||||||
|
ADC #$04
|
||||||
|
BMI +
|
||||||
|
CMP #9
|
||||||
|
BCS +
|
||||||
|
ADC #31
|
||||||
|
TAY
|
||||||
|
LDA P1YI
|
||||||
|
SEC
|
||||||
|
SBC YVIEWI
|
||||||
|
CLC
|
||||||
|
ADC #$04
|
||||||
|
BMI +
|
||||||
|
CMP #9
|
||||||
|
BCS +
|
||||||
|
SEC
|
||||||
|
ADC VIEWPORT
|
||||||
|
TAX
|
||||||
|
LDA TXT_TBLL,X
|
||||||
|
STA TMP
|
||||||
|
LDA TXT_TBLH,X
|
||||||
|
ORA GPAGE
|
||||||
|
STA TMP+1
|
||||||
|
LDA P1CYCLE
|
||||||
|
STA (TMP),Y
|
||||||
|
+ LDA P2XI ; Plot player 2 on map
|
||||||
|
SEC
|
||||||
|
SBC XVIEWI
|
||||||
|
CLC
|
||||||
|
ADC #$04
|
||||||
|
BMI +
|
||||||
|
CMP #9
|
||||||
|
BCS +
|
||||||
|
ADC #31
|
||||||
|
TAY
|
||||||
|
LDA P2YI
|
||||||
|
SEC
|
||||||
|
SBC YVIEWI
|
||||||
|
CLC
|
||||||
|
ADC #$04
|
||||||
|
BMI +
|
||||||
|
CMP #9
|
||||||
|
BCS +
|
||||||
|
SEC
|
||||||
|
ADC VIEWPORT
|
||||||
|
TAX
|
||||||
|
LDA TXT_TBLL,X
|
||||||
|
STA TMP
|
||||||
|
LDA TXT_TBLH,X
|
||||||
|
ORA GPAGE
|
||||||
|
STA TMP+1
|
||||||
|
LDA P2CYCLE
|
||||||
|
STA (TMP),Y
|
||||||
|
+ RTS
|
||||||
|
;*
|
||||||
|
;* Draw enemy light cycle
|
||||||
|
;*
|
||||||
|
DRAWENEMY
|
||||||
|
ASL
|
||||||
|
STA EBTTM
|
||||||
|
INC EBTTM
|
||||||
|
INC EBTTM
|
||||||
|
; SEC
|
||||||
|
SBC #HORIZON-1
|
||||||
|
STA VIEWPORT
|
||||||
|
LDA #$00
|
||||||
|
STA SCANLN
|
||||||
|
TXA
|
||||||
|
ASL
|
||||||
|
STA TMP
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
CMP #$80
|
||||||
|
ROR
|
||||||
|
CLC
|
||||||
|
ADC TMP
|
||||||
|
STA TMP
|
||||||
|
LDA #15
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
CMP #30
|
||||||
|
BCS ++
|
||||||
|
STA ECNTR
|
||||||
|
LDA PPSIZE
|
||||||
|
CMP #$01
|
||||||
|
BNE +
|
||||||
|
LDY VIEWPORT ; Only one pixel to plot
|
||||||
|
INY
|
||||||
|
LDX ECNTR
|
||||||
|
JMP GPLOT
|
||||||
|
+ LDA SCANLN
|
||||||
|
- CLC
|
||||||
|
ADC VIEWPORT
|
||||||
|
TAY
|
||||||
|
LDA ECNTR
|
||||||
|
SEC
|
||||||
|
SBC SCANLN
|
||||||
|
BPL +
|
||||||
|
LDA #$00
|
||||||
|
+ TAX
|
||||||
|
LDA ECNTR
|
||||||
|
CLC
|
||||||
|
ADC SCANLN
|
||||||
|
CMP #30
|
||||||
|
BCC +
|
||||||
|
LDA #29
|
||||||
|
+ JSR GHLIN
|
||||||
|
INC SCANLN
|
||||||
|
LDA SCANLN
|
||||||
|
CMP PPSIZE
|
||||||
|
BCC -
|
||||||
|
ASL
|
||||||
|
; CLC
|
||||||
|
ADC VIEWPORT
|
||||||
|
STA VIEWPORT
|
||||||
|
- SEC
|
||||||
|
SBC SCANLN
|
||||||
|
CMP EBTTM
|
||||||
|
BCS ++
|
||||||
|
TAY
|
||||||
|
LDA ECNTR
|
||||||
|
SEC
|
||||||
|
SBC SCANLN
|
||||||
|
BPL +
|
||||||
|
LDA #$00
|
||||||
|
+ TAX
|
||||||
|
LDA ECNTR
|
||||||
|
CLC
|
||||||
|
ADC SCANLN
|
||||||
|
CMP #30
|
||||||
|
BCC +
|
||||||
|
LDA #29
|
||||||
|
+ JSR GHLIN
|
||||||
|
LDA VIEWPORT
|
||||||
|
DEC SCANLN
|
||||||
|
BPL -
|
||||||
|
++ RTS
|
||||||
|
ECNTR !BYTE $00
|
||||||
|
EBTTM !BYTE $00
|
||||||
|
;*
|
||||||
|
;* Draw boost amount
|
||||||
|
;*
|
||||||
|
UPDTBST LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
STA TMP
|
||||||
|
JSR GOTOXY
|
||||||
|
JSR NORMAL
|
||||||
|
LDX #$0F
|
||||||
|
EMPTYBST CPX TMP
|
||||||
|
BEQ +
|
||||||
|
LDA #' '
|
||||||
|
JSR PUTC
|
||||||
|
DEX
|
||||||
|
BPL EMPTYBST
|
||||||
|
BMI ++
|
||||||
|
+ CPX #$00
|
||||||
|
BEQ ++
|
||||||
|
JSR INVERSE
|
||||||
|
FULLBST LDA #'='
|
||||||
|
JSR PUTC
|
||||||
|
DEX
|
||||||
|
BNE FULLBST
|
||||||
|
++ JSR INVERSE
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Draw paddle position
|
||||||
|
;*
|
||||||
|
UPDTPDL TYA
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
CMP GCPREVY
|
||||||
|
BEQ ++
|
||||||
|
STX TMP
|
||||||
|
PHA
|
||||||
|
LDX #0
|
||||||
|
LDY #22
|
||||||
|
JSR GOTOXY
|
||||||
|
LDA GCPREVY
|
||||||
|
CMP #14
|
||||||
|
BCC +
|
||||||
|
LDA #14
|
||||||
|
+ CLC
|
||||||
|
ADC #3
|
||||||
|
TAY
|
||||||
|
LDA (TBAS1),Y
|
||||||
|
AND #$7F
|
||||||
|
STA (TBAS1),Y
|
||||||
|
STA (TBAS2),Y
|
||||||
|
PLA
|
||||||
|
STA GCPREVY
|
||||||
|
CMP #14
|
||||||
|
BCC +
|
||||||
|
LDA #14
|
||||||
|
+ CLC
|
||||||
|
ADC #3
|
||||||
|
TAY
|
||||||
|
LDA (TBAS1),Y
|
||||||
|
ORA #$80
|
||||||
|
STA (TBAS1),Y
|
||||||
|
STA (TBAS2),Y
|
||||||
|
LDX TMP
|
||||||
|
++ TXA
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
CMP GCPREVX
|
||||||
|
BEQ ++
|
||||||
|
PHA
|
||||||
|
LDX #0
|
||||||
|
LDY #22
|
||||||
|
JSR GOTOXY
|
||||||
|
LDA GCPREVX
|
||||||
|
CMP #14
|
||||||
|
BCC +
|
||||||
|
LDA #14
|
||||||
|
+ CLC
|
||||||
|
ADC #22
|
||||||
|
TAY
|
||||||
|
LDA (TBAS1),Y
|
||||||
|
AND #$7F
|
||||||
|
STA (TBAS1),Y
|
||||||
|
STA (TBAS2),Y
|
||||||
|
PLA
|
||||||
|
STA GCPREVX
|
||||||
|
CMP #14
|
||||||
|
BCC +
|
||||||
|
LDA #14
|
||||||
|
+ CLC
|
||||||
|
ADC #22
|
||||||
|
TAY
|
||||||
|
LDA (TBAS1),Y
|
||||||
|
ORA #$80
|
||||||
|
STA (TBAS1),Y
|
||||||
|
STA (TBAS2),Y
|
||||||
|
++ LDY GCPREVY
|
||||||
|
LDX GCPREVX
|
||||||
|
RTS
|
||||||
|
GCPREVX !BYTE $00
|
||||||
|
GCPREVY !BYTE $00
|
|
@ -0,0 +1,71 @@
|
||||||
|
!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
|
|
@ -0,0 +1,909 @@
|
||||||
|
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
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,63 @@
|
||||||
|
!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
|
|
@ -0,0 +1,115 @@
|
||||||
|
!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
|
|
@ -0,0 +1,162 @@
|
||||||
|
SIN_TBL
|
||||||
|
!BYTE $000 ; angle 0
|
||||||
|
!BYTE $006 ; angle 1
|
||||||
|
!BYTE $00C ; angle 2
|
||||||
|
!BYTE $012 ; angle 3
|
||||||
|
!BYTE $018 ; angle 4
|
||||||
|
!BYTE $01E ; angle 5
|
||||||
|
!BYTE $024 ; angle 6
|
||||||
|
!BYTE $02A ; angle 7
|
||||||
|
!BYTE $030 ; angle 8
|
||||||
|
!BYTE $036 ; angle 9
|
||||||
|
!BYTE $03B ; angle 10
|
||||||
|
!BYTE $041 ; angle 11
|
||||||
|
!BYTE $046 ; angle 12
|
||||||
|
!BYTE $04B ; angle 13
|
||||||
|
!BYTE $050 ; angle 14
|
||||||
|
!BYTE $055 ; angle 15
|
||||||
|
!BYTE $059 ; angle 16
|
||||||
|
!BYTE $05E ; angle 17
|
||||||
|
!BYTE $062 ; angle 18
|
||||||
|
!BYTE $066 ; angle 19
|
||||||
|
!BYTE $069 ; angle 20
|
||||||
|
!BYTE $06C ; angle 21
|
||||||
|
!BYTE $070 ; angle 22
|
||||||
|
!BYTE $072 ; angle 23
|
||||||
|
!BYTE $075 ; angle 24
|
||||||
|
!BYTE $077 ; angle 25
|
||||||
|
!BYTE $079 ; angle 26
|
||||||
|
!BYTE $07B ; angle 27
|
||||||
|
!BYTE $07C ; angle 28
|
||||||
|
!BYTE $07D ; angle 29
|
||||||
|
!BYTE $07E ; angle 30
|
||||||
|
!BYTE $07E ; angle 31
|
||||||
|
COS_TBL
|
||||||
|
!BYTE $07F ; angle 32
|
||||||
|
!BYTE $07E ; angle 33
|
||||||
|
!BYTE $07E ; angle 34
|
||||||
|
!BYTE $07D ; angle 35
|
||||||
|
!BYTE $07C ; angle 36
|
||||||
|
!BYTE $07B ; angle 37
|
||||||
|
!BYTE $079 ; angle 38
|
||||||
|
!BYTE $077 ; angle 39
|
||||||
|
!BYTE $075 ; angle 40
|
||||||
|
!BYTE $072 ; angle 41
|
||||||
|
!BYTE $070 ; angle 42
|
||||||
|
!BYTE $06C ; angle 43
|
||||||
|
!BYTE $069 ; angle 44
|
||||||
|
!BYTE $066 ; angle 45
|
||||||
|
!BYTE $062 ; angle 46
|
||||||
|
!BYTE $05E ; angle 47
|
||||||
|
!BYTE $059 ; angle 48
|
||||||
|
!BYTE $055 ; angle 49
|
||||||
|
!BYTE $050 ; angle 50
|
||||||
|
!BYTE $04B ; angle 51
|
||||||
|
!BYTE $046 ; angle 52
|
||||||
|
!BYTE $041 ; angle 53
|
||||||
|
!BYTE $03B ; angle 54
|
||||||
|
!BYTE $036 ; angle 55
|
||||||
|
!BYTE $030 ; angle 56
|
||||||
|
!BYTE $02A ; angle 57
|
||||||
|
!BYTE $024 ; angle 58
|
||||||
|
!BYTE $01E ; angle 59
|
||||||
|
!BYTE $018 ; angle 60
|
||||||
|
!BYTE $012 ; angle 61
|
||||||
|
!BYTE $00C ; angle 62
|
||||||
|
!BYTE $006 ; angle 63
|
||||||
|
!BYTE $000 ; angle 64
|
||||||
|
!BYTE $0F9 ; angle 65
|
||||||
|
!BYTE $0F3 ; angle 66
|
||||||
|
!BYTE $0ED ; angle 67
|
||||||
|
!BYTE $0E7 ; angle 68
|
||||||
|
!BYTE $0E1 ; angle 69
|
||||||
|
!BYTE $0DB ; angle 70
|
||||||
|
!BYTE $0D5 ; angle 71
|
||||||
|
!BYTE $0CF ; angle 72
|
||||||
|
!BYTE $0C9 ; angle 73
|
||||||
|
!BYTE $0C4 ; angle 74
|
||||||
|
!BYTE $0BE ; angle 75
|
||||||
|
!BYTE $0B9 ; angle 76
|
||||||
|
!BYTE $0B4 ; angle 77
|
||||||
|
!BYTE $0AF ; angle 78
|
||||||
|
!BYTE $0AA ; angle 79
|
||||||
|
!BYTE $0A6 ; angle 80
|
||||||
|
!BYTE $0A1 ; angle 81
|
||||||
|
!BYTE $09D ; angle 82
|
||||||
|
!BYTE $099 ; angle 83
|
||||||
|
!BYTE $096 ; angle 84
|
||||||
|
!BYTE $093 ; angle 85
|
||||||
|
!BYTE $08F ; angle 86
|
||||||
|
!BYTE $08D ; angle 87
|
||||||
|
!BYTE $08A ; angle 88
|
||||||
|
!BYTE $088 ; angle 89
|
||||||
|
!BYTE $086 ; angle 90
|
||||||
|
!BYTE $084 ; angle 91
|
||||||
|
!BYTE $083 ; angle 92
|
||||||
|
!BYTE $082 ; angle 93
|
||||||
|
!BYTE $081 ; angle 94
|
||||||
|
!BYTE $081 ; angle 95
|
||||||
|
!BYTE $081 ; angle 96
|
||||||
|
!BYTE $081 ; angle 97
|
||||||
|
!BYTE $081 ; angle 98
|
||||||
|
!BYTE $082 ; angle 99
|
||||||
|
!BYTE $083 ; angle 100
|
||||||
|
!BYTE $084 ; angle 101
|
||||||
|
!BYTE $086 ; angle 102
|
||||||
|
!BYTE $088 ; angle 103
|
||||||
|
!BYTE $08A ; angle 104
|
||||||
|
!BYTE $08D ; angle 105
|
||||||
|
!BYTE $08F ; angle 106
|
||||||
|
!BYTE $093 ; angle 107
|
||||||
|
!BYTE $096 ; angle 108
|
||||||
|
!BYTE $099 ; angle 109
|
||||||
|
!BYTE $09D ; angle 110
|
||||||
|
!BYTE $0A1 ; angle 111
|
||||||
|
!BYTE $0A6 ; angle 112
|
||||||
|
!BYTE $0AA ; angle 113
|
||||||
|
!BYTE $0AF ; angle 114
|
||||||
|
!BYTE $0B4 ; angle 115
|
||||||
|
!BYTE $0B9 ; angle 116
|
||||||
|
!BYTE $0BE ; angle 117
|
||||||
|
!BYTE $0C4 ; angle 118
|
||||||
|
!BYTE $0C9 ; angle 119
|
||||||
|
!BYTE $0CF ; angle 120
|
||||||
|
!BYTE $0D5 ; angle 121
|
||||||
|
!BYTE $0DB ; angle 122
|
||||||
|
!BYTE $0E1 ; angle 123
|
||||||
|
!BYTE $0E7 ; angle 124
|
||||||
|
!BYTE $0ED ; angle 125
|
||||||
|
!BYTE $0F3 ; angle 126
|
||||||
|
!BYTE $0F9 ; angle 127
|
||||||
|
!BYTE $000 ; angle 128
|
||||||
|
!BYTE $006 ; angle 129
|
||||||
|
!BYTE $00C ; angle 130
|
||||||
|
!BYTE $012 ; angle 131
|
||||||
|
!BYTE $018 ; angle 132
|
||||||
|
!BYTE $01E ; angle 133
|
||||||
|
!BYTE $024 ; angle 134
|
||||||
|
!BYTE $02A ; angle 135
|
||||||
|
!BYTE $030 ; angle 136
|
||||||
|
!BYTE $036 ; angle 137
|
||||||
|
!BYTE $03B ; angle 138
|
||||||
|
!BYTE $041 ; angle 139
|
||||||
|
!BYTE $046 ; angle 140
|
||||||
|
!BYTE $04B ; angle 141
|
||||||
|
!BYTE $050 ; angle 142
|
||||||
|
!BYTE $055 ; angle 143
|
||||||
|
!BYTE $059 ; angle 144
|
||||||
|
!BYTE $05E ; angle 145
|
||||||
|
!BYTE $062 ; angle 146
|
||||||
|
!BYTE $066 ; angle 147
|
||||||
|
!BYTE $069 ; angle 148
|
||||||
|
!BYTE $06C ; angle 149
|
||||||
|
!BYTE $070 ; angle 150
|
||||||
|
!BYTE $072 ; angle 151
|
||||||
|
!BYTE $075 ; angle 152
|
||||||
|
!BYTE $077 ; angle 153
|
||||||
|
!BYTE $079 ; angle 154
|
||||||
|
!BYTE $07B ; angle 155
|
||||||
|
!BYTE $07C ; angle 156
|
||||||
|
!BYTE $07D ; angle 157
|
||||||
|
!BYTE $07E ; angle 158
|
||||||
|
!BYTE $07E ; angle 159
|
|
@ -0,0 +1,33 @@
|
||||||
|
TAN_TBL
|
||||||
|
!WORD $0000 ; angle 0
|
||||||
|
!WORD $000D ; angle 1
|
||||||
|
!WORD $0019 ; angle 2
|
||||||
|
!WORD $0026 ; angle 3
|
||||||
|
!WORD $0033 ; angle 4
|
||||||
|
!WORD $0040 ; angle 5
|
||||||
|
!WORD $004E ; angle 6
|
||||||
|
!WORD $005C ; angle 7
|
||||||
|
!WORD $006A ; angle 8
|
||||||
|
!WORD $0079 ; angle 9
|
||||||
|
!WORD $0089 ; angle 10
|
||||||
|
!WORD $0099 ; angle 11
|
||||||
|
!WORD $00AB ; angle 12
|
||||||
|
!WORD $00BE ; angle 13
|
||||||
|
!WORD $00D2 ; angle 14
|
||||||
|
!WORD $00E8 ; angle 15
|
||||||
|
!WORD $0100 ; angle 16
|
||||||
|
!WORD $011A ; angle 17
|
||||||
|
!WORD $0138 ; angle 18
|
||||||
|
!WORD $0159 ; angle 19
|
||||||
|
!WORD $017F ; angle 20
|
||||||
|
!WORD $01AB ; angle 21
|
||||||
|
!WORD $01DF ; angle 22
|
||||||
|
!WORD $021D ; angle 23
|
||||||
|
!WORD $026A ; angle 24
|
||||||
|
!WORD $02CB ; angle 25
|
||||||
|
!WORD $034C ; angle 26
|
||||||
|
!WORD $03FE ; angle 27
|
||||||
|
!WORD $0507 ; angle 28
|
||||||
|
!WORD $06BE ; angle 29
|
||||||
|
!WORD $0A27 ; angle 30
|
||||||
|
!WORD $145B ; angle 31
|
|
@ -0,0 +1,342 @@
|
||||||
|
;*
|
||||||
|
;* Read both game controllers in parallel
|
||||||
|
;*
|
||||||
|
GCREAD BIT GCSTROBE
|
||||||
|
LDY #$00
|
||||||
|
LDX #$00
|
||||||
|
LDA #GCMAX
|
||||||
|
GCLOOP BIT GC0
|
||||||
|
BPL +
|
||||||
|
INY
|
||||||
|
BNE ++ ; Timing
|
||||||
|
+ NOP
|
||||||
|
NOP
|
||||||
|
++ BIT GC1
|
||||||
|
BPL +
|
||||||
|
INX
|
||||||
|
BNE ++ ; Timing
|
||||||
|
+ NOP
|
||||||
|
NOP
|
||||||
|
++ SEC
|
||||||
|
SBC #$01
|
||||||
|
BNE GCLOOP
|
||||||
|
LDA GCPB1 ; Read GC buttons
|
||||||
|
ASL
|
||||||
|
LDA GCPB2
|
||||||
|
ROR
|
||||||
|
AND #$C0
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Text routines
|
||||||
|
;*
|
||||||
|
GOTOXY STX CH
|
||||||
|
STY CV
|
||||||
|
LDA TXT_TBLL,Y
|
||||||
|
STA TBAS1L
|
||||||
|
STA TBAS2L
|
||||||
|
LDA TXT_TBLH,Y
|
||||||
|
ORA #$04
|
||||||
|
STA TBAS1H
|
||||||
|
EOR #$0C
|
||||||
|
STA TBAS2H
|
||||||
|
RTS
|
||||||
|
NORMAL LDA #$FF
|
||||||
|
STA INVFLAG
|
||||||
|
RTS
|
||||||
|
INVERSE LDA #$3F
|
||||||
|
STA INVFLAG
|
||||||
|
RTS
|
||||||
|
FLASH LDA #$7F
|
||||||
|
STA INVFLAG
|
||||||
|
RTS
|
||||||
|
PUTXA PHA
|
||||||
|
TXA
|
||||||
|
JSR PUTA
|
||||||
|
PLA
|
||||||
|
PUTA PHA
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
TAX
|
||||||
|
LDA HEXCHR,X
|
||||||
|
JSR PUTC
|
||||||
|
PLA
|
||||||
|
AND #$0F
|
||||||
|
TAX
|
||||||
|
LDA HEXCHR,X
|
||||||
|
PUTC ORA #$80
|
||||||
|
AND INVFLAG
|
||||||
|
LDY CH
|
||||||
|
STA (TBAS1),Y
|
||||||
|
STA (TBAS2),Y
|
||||||
|
INC CH
|
||||||
|
RTS
|
||||||
|
PUTSXY JSR GOTOXY
|
||||||
|
PUTS TSX
|
||||||
|
LDA $101,X
|
||||||
|
STA LDCHR+1
|
||||||
|
LDA $102,X
|
||||||
|
STA LDCHR+2
|
||||||
|
LDX #$01
|
||||||
|
LDCHR LDA $1000,X
|
||||||
|
BEQ +
|
||||||
|
JSR PUTC
|
||||||
|
INX
|
||||||
|
BNE LDCHR
|
||||||
|
+ TXA
|
||||||
|
TSX
|
||||||
|
CLC
|
||||||
|
ADC $101,X
|
||||||
|
STA $101,X
|
||||||
|
BCC +
|
||||||
|
INC $102,X
|
||||||
|
+ RTS
|
||||||
|
HEXCHR !TEXT "0123456789ABCDEF"
|
||||||
|
;*
|
||||||
|
;* Fill screen with color
|
||||||
|
;*
|
||||||
|
GFILL LDX #$23
|
||||||
|
-- PHA
|
||||||
|
LDA TXT_TBLL,X
|
||||||
|
STA GBASL
|
||||||
|
LDA TXT_TBLH,X
|
||||||
|
ORA GPAGE
|
||||||
|
STA GBASH
|
||||||
|
PLA
|
||||||
|
LDY #39
|
||||||
|
- STA (GBASE),Y
|
||||||
|
DEY
|
||||||
|
BPL -
|
||||||
|
DEX
|
||||||
|
BPL --
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Plot X,Y with GCLR
|
||||||
|
;*
|
||||||
|
GPLOT TYA
|
||||||
|
PHA
|
||||||
|
LSR
|
||||||
|
TAY
|
||||||
|
LDA TXT_TBLL,Y
|
||||||
|
STA GPLOTA+1
|
||||||
|
STA GPLOTB+1
|
||||||
|
LDA TXT_TBLH,Y
|
||||||
|
ORA GPAGE
|
||||||
|
STA GPLOTA+2
|
||||||
|
STA GPLOTB+2
|
||||||
|
GPLOTA LDA $FFFF,X
|
||||||
|
BCC +
|
||||||
|
AND #$0F
|
||||||
|
STA TMP
|
||||||
|
LDA GCLR
|
||||||
|
AND #$F0
|
||||||
|
BCS ++
|
||||||
|
+ AND #$F0
|
||||||
|
STA TMP
|
||||||
|
LDA GCLR
|
||||||
|
AND #$0F
|
||||||
|
++ ORA TMP
|
||||||
|
GPLOTB STA $FFFF,X
|
||||||
|
-- PLA
|
||||||
|
TAY
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Plot horizontal line from X,Y to A,Y with GCLR
|
||||||
|
;*
|
||||||
|
GHLIN STA GHLRHT
|
||||||
|
TYA
|
||||||
|
PHA
|
||||||
|
LSR
|
||||||
|
TAY
|
||||||
|
LDA #$F0
|
||||||
|
BCC +
|
||||||
|
LDA #$0F
|
||||||
|
+ STA DSTMASK
|
||||||
|
EOR #$FF
|
||||||
|
STA SRCMASK
|
||||||
|
LDA TXT_TBLL,Y
|
||||||
|
STA GHLINA+1
|
||||||
|
STA GHLINB+1
|
||||||
|
LDA TXT_TBLH,Y
|
||||||
|
ORA GPAGE
|
||||||
|
STA GHLINA+2
|
||||||
|
STA GHLINB+2
|
||||||
|
GHLINA LDA $FFFF,X
|
||||||
|
AND DSTMASK
|
||||||
|
STA TMP
|
||||||
|
LDA GCLR
|
||||||
|
AND SRCMASK
|
||||||
|
ORA TMP
|
||||||
|
GHLINB STA $FFFF,X
|
||||||
|
CPX GHLRHT
|
||||||
|
BEQ --
|
||||||
|
INX
|
||||||
|
BNE GHLINA
|
||||||
|
GHLRHT !BYTE $00
|
||||||
|
;*
|
||||||
|
;* Fill rectangle fro X,Y to A,SCANLN with GCLR
|
||||||
|
;*
|
||||||
|
GRECT STX GRCTLFT
|
||||||
|
- PHA
|
||||||
|
JSR GHLIN
|
||||||
|
PLA
|
||||||
|
CPY SCANLN
|
||||||
|
BEQ +
|
||||||
|
LDX GRCTLFT
|
||||||
|
INY
|
||||||
|
BNE -
|
||||||
|
+ RTS
|
||||||
|
GRCTLFT !BYTE $00
|
||||||
|
;*
|
||||||
|
;* Swap rendered and displayed GR pages
|
||||||
|
;*
|
||||||
|
GSWAP LDA #$01
|
||||||
|
EOR CURPAGE
|
||||||
|
STA CURPAGE
|
||||||
|
TAX
|
||||||
|
LDA $C054,X
|
||||||
|
LDA PGBASE,X
|
||||||
|
STA GPAGE
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Multiply X by A, return X:A
|
||||||
|
;*
|
||||||
|
MUL8X8 LSR
|
||||||
|
STA TMP
|
||||||
|
LDA #$00
|
||||||
|
BCC + ; BIT 0
|
||||||
|
TXA
|
||||||
|
+ DEX ; Because carry will be set for ADC
|
||||||
|
STX TMP+1
|
||||||
|
LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 1
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 2
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 3
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 4
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 5
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 6
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
ROR TMP
|
||||||
|
BCC + ; BIT 7
|
||||||
|
ADC TMP+1
|
||||||
|
+ LSR
|
||||||
|
TAX
|
||||||
|
LDA TMP
|
||||||
|
ROR
|
||||||
|
RTS
|
||||||
|
;*
|
||||||
|
;* Signed multiply 8x8
|
||||||
|
;*
|
||||||
|
SMUL8X8 STX SIGN
|
||||||
|
PHA
|
||||||
|
EOR SIGN
|
||||||
|
STA SIGN
|
||||||
|
CPX #$80
|
||||||
|
BCC +
|
||||||
|
TXA
|
||||||
|
EOR #$FF
|
||||||
|
TAX
|
||||||
|
INX
|
||||||
|
+ PLA
|
||||||
|
CMP #$80
|
||||||
|
BCC +
|
||||||
|
EOR #$FF
|
||||||
|
ADC #$00
|
||||||
|
+ JSR MUL8X8
|
||||||
|
ASL SIGN ; SIGN(RESULT) = SIGN(MULTIPLCAND) ^ SIGN(MULTIPLIER)
|
||||||
|
BCC +
|
||||||
|
EOR #$FF
|
||||||
|
ADC #$00
|
||||||
|
PHA
|
||||||
|
TXA
|
||||||
|
EOR #$FF
|
||||||
|
ADC #$00
|
||||||
|
TAX
|
||||||
|
PLA
|
||||||
|
+ RTS
|
||||||
|
;*
|
||||||
|
;* Unsigned divide, return X:A
|
||||||
|
;*
|
||||||
|
DIV LDX #$00
|
||||||
|
STX TMP ; REMNDRL
|
||||||
|
STX TMP+1 ; REMNDRH
|
||||||
|
; LDA DVSR+1 ; Check for divide by zero
|
||||||
|
; ORA DVSR
|
||||||
|
LDA DVDND+1 ; Check for zero divide
|
||||||
|
ORA DVDND
|
||||||
|
BEQ ++
|
||||||
|
LDY #$11 ; #BITS+1
|
||||||
|
- ASL DVDND
|
||||||
|
ROL DVDND+1
|
||||||
|
DEY
|
||||||
|
BCC -
|
||||||
|
- ROL TMP ; REMNDRL
|
||||||
|
ROL TMP+1 ; REMNDRH
|
||||||
|
LDA TMP ; REMNDRL
|
||||||
|
CMP DVSR
|
||||||
|
LDA TMP+1 ; REMNDRH
|
||||||
|
SBC DVSR+1
|
||||||
|
BCC +
|
||||||
|
STA TMP+1 ; REMNDRH
|
||||||
|
LDA TMP ; REMNDRL
|
||||||
|
SBC DVSR
|
||||||
|
STA TMP ; REMNDRL
|
||||||
|
SEC
|
||||||
|
+ ROL DVDND
|
||||||
|
ROL DVDND+1
|
||||||
|
DEY
|
||||||
|
BNE -
|
||||||
|
LDA DVDND
|
||||||
|
LDX DVDND+1
|
||||||
|
++ RTS
|
||||||
|
;*
|
||||||
|
;* Signed divide: return X:A
|
||||||
|
;*
|
||||||
|
SDIV LDX DVSR+1
|
||||||
|
STX SIGN
|
||||||
|
BPL +
|
||||||
|
LDA DVSR
|
||||||
|
JSR NEG
|
||||||
|
STX DVSR+1
|
||||||
|
STA DVSR
|
||||||
|
+ LDX DVDND+1
|
||||||
|
BPL +
|
||||||
|
TXA
|
||||||
|
EOR SIGN
|
||||||
|
STA SIGN
|
||||||
|
LDA DVDND
|
||||||
|
JSR NEG
|
||||||
|
STX DVDND+1
|
||||||
|
STA DVDND
|
||||||
|
+ JSR DIV
|
||||||
|
ASL SIGN ; SIGN(RESULT) = SIGN(DIVIDEND) ^ SIGN(DIVISOR)
|
||||||
|
BCC +
|
||||||
|
NEG STA TMP
|
||||||
|
STX TMP+1
|
||||||
|
LDA #$00
|
||||||
|
SEC
|
||||||
|
SBC TMP
|
||||||
|
STA TMP
|
||||||
|
LDA #$00
|
||||||
|
SBC TMP+1
|
||||||
|
TAX
|
||||||
|
LDA TMP
|
||||||
|
+ RTS
|
Loading…
Reference in New Issue