mirror of
https://github.com/dschmenk/LightCycles.git
synced 2024-06-10 03:29:33 +00:00
initial commit
This commit is contained in:
parent
f7397a9e7d
commit
17ee780eb7
BIN
LC3D-DOC.pdf
Executable file
BIN
LC3D-DOC.pdf
Executable file
Binary file not shown.
BIN
LightCycles.png
Executable file
BIN
LightCycles.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 284 KiB |
BIN
cassette.jpg
Executable file
BIN
cassette.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 301 KiB |
55
cross.asm
Executable file
55
cross.asm
Executable file
|
@ -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
|
15
drag.asm
Executable file
15
drag.asm
Executable file
|
@ -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
|
815
drawview.asm
Executable file
815
drawview.asm
Executable file
|
@ -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
|
71
hole.asm
Executable file
71
hole.asm
Executable file
|
@ -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
|
909
intro.asm
Executable file
909
intro.asm
Executable file
|
@ -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
|
1089
lightcycles.asm
Executable file
1089
lightcycles.asm
Executable file
File diff suppressed because it is too large
Load Diff
63
maze.asm
Executable file
63
maze.asm
Executable file
|
@ -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
|
115
rings.asm
Executable file
115
rings.asm
Executable file
|
@ -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
|
162
sincos.asm
Executable file
162
sincos.asm
Executable file
|
@ -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
|
33
tan.asm
Executable file
33
tan.asm
Executable file
|
@ -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
|
342
utils.asm
Executable file
342
utils.asm
Executable file
|
@ -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
Block a user