mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
Prepare for new splash
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
|
||||
.enum @@dmactl
|
||||
blank = %00
|
||||
narrow = %01
|
||||
standard= %10
|
||||
wide = %11
|
||||
missiles= %100
|
||||
players = %1000
|
||||
lineX1 = %10000
|
||||
lineX2 = %00000
|
||||
dma = %100000
|
||||
.ende
|
||||
|
||||
scr48 = @@dmactl(wide|dma|players|missiles|lineX1) ;screen 48b
|
||||
scr40 = @@dmactl(standard|dma|players|missiles|lineX1) ;screen 40b
|
||||
scr32 = @@dmactl(narrow|dma|players|missiles|lineX1) ;screen 32b
|
||||
|
||||
.enum @@pmcntl
|
||||
missiles= %1
|
||||
players = %10
|
||||
trigs = %100
|
||||
.ende
|
||||
|
||||
.enum @@gtictl
|
||||
prior0 = %0
|
||||
prior1 = %1
|
||||
prior2 = %10
|
||||
prior4 = %100
|
||||
prior8 = %1000
|
||||
ply5 = %10000 ; Fifth Player Enable
|
||||
mlc = %100000 ; Multiple Color Player Enable
|
||||
mode9 = %01000000
|
||||
mode10 = %10000000
|
||||
mode11 = %11000000
|
||||
.ende
|
||||
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
* --- GTIA
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
hposp0 = $D000 ; pozioma pozycja gracza 0 (Z)
|
||||
hposp1 = $D001 ; pozioma pozycja gracza 1 (Z)
|
||||
hposp2 = $D002 ; pozioma pozycja gracza 2 (Z)
|
||||
hposp3 = $D003 ; pozioma pozycja gracza 3 (Z)
|
||||
hposm0 = $D004 ; pozioma pozycja pocisku 0 (Z)
|
||||
hposm1 = $D005 ; pozioma pozycja pocisku 1 (Z)
|
||||
hposm2 = $D006 ; pozioma pozycja pocisku 2 (Z)
|
||||
hposm3 = $D007 ; pozioma pozycja pocisku 3 (Z)
|
||||
sizep0 = $D008 ; poziomy rozmiar gracza 0 (Z)
|
||||
sizep1 = $D009 ; poziomy rozmiar gracza 1 (Z)
|
||||
sizep2 = $D00A ; poziomy rozmiar gracza 2 (Z)
|
||||
sizep3 = $D00B ; poziomy rozmiar gracza 3 (Z)
|
||||
sizem = $D00C ; poziomy rozmiar pocisków (Z)
|
||||
grafp0 = $D00D ; rejestr grafiki gracza 0 (Z)
|
||||
grafp1 = $D00E ; rejestr grafiki gracza 1 (Z)
|
||||
grafp2 = $D00F ; rejestr grafiki gracza 2 (Z)
|
||||
grafp3 = $D010 ; rejestr grafiki gracza 3 (Z)
|
||||
grafm = $D011 ; rejestr grafiki pocisków (Z)
|
||||
colpm0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z)
|
||||
colpm1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z)
|
||||
colpm2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z)
|
||||
colpm3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z)
|
||||
colpf0 = $D016 ; rejestr koloru pola gry 0 (Z)
|
||||
colpf1 = $D017 ; rejestr koloru pola gry 1 (Z)
|
||||
colpf2 = $D018 ; rejestr koloru pola gry 2 (Z)
|
||||
colpf3 = $D019 ; rejestr koloru pola gry 3 (Z)
|
||||
colbak = $D01A ; rejestr koloru tła (Z)
|
||||
|
||||
color0 = colpf0
|
||||
color1 = colpf1
|
||||
color2 = colpf2
|
||||
color3 = colpf3
|
||||
|
||||
kolm0pf = $D000 ; kolizja pocisku 0 z polem gry (O)
|
||||
kolm1pf = $D001 ; kolizja pocisku 1 z polem gry (O)
|
||||
kolm2pf = $D002 ; kolizja pocisku 2 z polem gry (O)
|
||||
kolm3pf = $D003 ; kolizja pocisku 3 z polem gry (O)
|
||||
kolp0pf = $D004 ; kolizja gracza 0 z polem gry (O)
|
||||
kolp1pf = $D005 ; kolizja gracza 1 z polem gry (O)
|
||||
kolp2pf = $D006 ; kolizja gracza 2 z polem gry (O)
|
||||
kolp3pf = $D007 ; kolizja gracza 3 z polem gry (O)
|
||||
kolm0p = $D008 ; kolizja pocisku 0 z graczem (O)
|
||||
kolm1p = $D009 ; kolizja pocisku 1 z graczem (O)
|
||||
kolm2p = $D00A ; kolizja pocisku 2 z graczem (O)
|
||||
kolm3p = $D00B ; kolizja pocisku 3 z graczem (O)
|
||||
kolp0p = $D00C ; kolizja gracza 0 z innym graczem (O)
|
||||
kolp1p = $D00D ; kolizja gracza 1 z innym graczem (O)
|
||||
kolp2p = $D00E ; kolizja gracza 2 z innym graczem (O)
|
||||
kolp3p = $D00F ; kolizja gracza 3 z innym graczem (O)
|
||||
trig0 = $D010 ; stan przycisku joysticka 0 (O)
|
||||
trig1 = $D011 ; stan przycisku joysticka 1 (O)
|
||||
trig3 = $D013 ; znacznik dołączenia cartridge-a (O)
|
||||
pal = $D014 ; znacznik systemu TV (O)
|
||||
|
||||
gtictl = $D01B ; rejestr kontroli układu GTIA
|
||||
gtiactl = gtictl
|
||||
|
||||
vdelay = $D01C ; licznik opóźnienia pionowego P/MG
|
||||
pmcntl = $D01D ; rejestr kontroli graczy i pocisków
|
||||
hitclr = $D01E ; rejestr kasowania rejestrów kolizji
|
||||
consol = $D01F ; rejestr stanu klawiszy konsoli
|
||||
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
* --- POKEY
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
|
||||
irqens = $0010 ; rejestr-cień IRQEN
|
||||
irqstat = $0011 ; rejestr-cień IRQST
|
||||
|
||||
audf1 = $d200 ; częstotliwość pracy generatora 1 (Z)
|
||||
audc1 = $d201 ; rejestr kontroli dźwięku generatora 1 (Z)
|
||||
audf2 = $d202 ; częstotliwość pracy generatora 2 (Z)
|
||||
audc2 = $d203 ; rejestr kontroli dźwięku generatora 2 (Z)
|
||||
audf3 = $d204 ; częstotliwość pracy generatora 3 (Z)
|
||||
audc3 = $d205 ; rejestr kontroli dźwięku generatora 3 (Z)
|
||||
audf4 = $d206 ; częstotliwość pracy generatora 4 (Z)
|
||||
audc4 = $d207 ; rejestr kontroli dźwięku generatora 4 (Z)
|
||||
|
||||
audctl = $D208 ; rejestr kontroli generatorów dźwięku (Z)
|
||||
stimer = $D209 ; rejestr zerowania liczników (Z)
|
||||
kbcode = $D209 ; kod ostatnio naciśniętego klawisza (O)
|
||||
skstres = $D20A ; rejestr statusu złącza szeregowego (Z)
|
||||
random = $D20A ; rejestr liczby losowej (O)
|
||||
serout = $D20D ; szeregowy rejestr wyjściowy (Z)
|
||||
serin = $D20D ; szeregowy rejestr wejściowy (O)
|
||||
irqen = $D20E ; zezwolenie przerwań IRQ (Z)
|
||||
irqst = $D20E ; status przerwań IRQ (O)
|
||||
skctl = $D20F ; rejestr kontroli złącza szeregowego (Z)
|
||||
skstat = $D20F ; rejestr statusu złącza szeregowego (O)
|
||||
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
* --- PIA
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
porta = $D300 ; port A układu PIA
|
||||
portb = $D301 ; port B układu PIA
|
||||
pactl = $D302 ; rejestr kontroli portu A
|
||||
pbctl = $D303 ; rejestr kontroli portu B
|
||||
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
* --- ANTIC
|
||||
* ---------------------------------------------------------------------------------------------
|
||||
dmactl = $D400 ; rejestr kontroli dostępu do pamięci
|
||||
chrctl = $D401 ; rejestr kontroli wyświetlania znaków
|
||||
dlptr = $D402 ; adres programu ANTIC-a
|
||||
hscrol = $D404 ; znacznik poziomego przesuwu obrazu
|
||||
vscrol = $D405 ; znacznik pionowego przesuwu obrazu
|
||||
pmbase = $D407 ; adres pamięci graczy i pocisków
|
||||
chbase = $D409 ; adres zestawu znaków
|
||||
wsync = $D40A ; znacznik oczekiwania na synchronizację poziomą
|
||||
vcount = $D40B ; licznik linii obrazu
|
||||
lpenh = $D40C ; poziome położenie pióra świetlengo
|
||||
lpenv = $D40D ; pionowe położenie pióra świetlnego
|
||||
nmien = $D40E ; rejestr zezwoleń na przerwania NMI
|
||||
nmist = $D40F ; rejestr statusu przerwań NMI
|
||||
@@ -0,0 +1,231 @@
|
||||
/***************************************/
|
||||
/* Use MADS http://mads.atari8.info/ */
|
||||
/* Mode: GED- (bitmap mode) */
|
||||
/***************************************/
|
||||
|
||||
icl "no_name.h"
|
||||
icl "output.png.opt.h"
|
||||
|
||||
org $00
|
||||
|
||||
fcnt .ds 2
|
||||
fadr .ds 2
|
||||
fhlp .ds 2
|
||||
cloc .ds 1
|
||||
regA .ds 1
|
||||
regX .ds 1
|
||||
regY .ds 1
|
||||
byt2 .ds 1
|
||||
|
||||
zc .ds ZCOLORS
|
||||
|
||||
* --- BASIC switch OFF
|
||||
org $2000\ mva #$ff portb\ rts\ ini $2000
|
||||
|
||||
* --- MAIN PROGRAM
|
||||
org $2010
|
||||
IFT PIC_HEIGHT>=204
|
||||
scr ins "output.png.mic", 0, 8160
|
||||
:16 .byte 0
|
||||
ins "output.png.mic" , +8160
|
||||
ELS
|
||||
scr ins "output.png.mic"
|
||||
EIF
|
||||
|
||||
.ifdef nil_used
|
||||
nil :8*40 brk
|
||||
eif
|
||||
|
||||
.ALIGN $0400
|
||||
ant ANTIC_PROGRAM scr,ant
|
||||
|
||||
fnt
|
||||
|
||||
ift USESPRITES
|
||||
.ALIGN $0800
|
||||
.ds $0300
|
||||
pmg SPRITES
|
||||
eif
|
||||
|
||||
main
|
||||
* --- init PMG
|
||||
|
||||
ift USESPRITES
|
||||
mva >pmg pmbase ;missiles and players data address
|
||||
mva #$03 pmcntl ;enable players and missiles
|
||||
eif
|
||||
|
||||
lda:cmp:req $14 ;wait 1 frame
|
||||
|
||||
sei ;stop interrups
|
||||
mva #$00 nmien ;stop all interrupts
|
||||
mva #$fe portb ;switch off ROM to get 16k more ram
|
||||
|
||||
ZPINIT
|
||||
|
||||
////////////////////
|
||||
// RASTER PROGRAM //
|
||||
////////////////////
|
||||
|
||||
; jmp line239
|
||||
jmp raster_program_end
|
||||
|
||||
LOOP lda vcount ;synchronization for the first screen line
|
||||
cmp #$02
|
||||
bne LOOP
|
||||
|
||||
mva #%00111110 dmactl ;set new screen width
|
||||
mva <ant dlptr
|
||||
mva >ant dlptr+1
|
||||
|
||||
icl "output.png.opt.ini"
|
||||
|
||||
;--- wait 18 cycles
|
||||
jsr _rts
|
||||
inc byt3
|
||||
|
||||
;--- set global offset (23 cycles)
|
||||
jsr _rts
|
||||
cmp byt3\ pha:pla
|
||||
|
||||
;--- empty line
|
||||
jsr wait54cycle
|
||||
inc byt2
|
||||
|
||||
icl "output.png.opt"
|
||||
|
||||
raster_program_end
|
||||
|
||||
lda >fnt+$400*$00
|
||||
sta chbase
|
||||
c0 lda #$00
|
||||
sta colbak
|
||||
c1 lda #$00
|
||||
sta color0
|
||||
c2 lda #$00
|
||||
sta color1
|
||||
c3 lda #$00
|
||||
sta color2
|
||||
c4 lda #$00
|
||||
sta color3
|
||||
s0 lda #$03
|
||||
sta sizep0
|
||||
sta sizep1
|
||||
sta sizep2
|
||||
sta sizep3
|
||||
mva #$ff sizem
|
||||
sta grafm
|
||||
mva #$20 hposm0
|
||||
mva #$28 hposm1
|
||||
mva #$d0 hposm2
|
||||
mva #$d8 hposm3
|
||||
mva #$02 pmcntl
|
||||
lda #$14
|
||||
sta gtictl
|
||||
|
||||
|
||||
//--------------------
|
||||
// EXIT
|
||||
//--------------------
|
||||
|
||||
lda trig0 ; FIRE #0
|
||||
beq stop
|
||||
|
||||
lda trig1 ; FIRE #1
|
||||
beq stop
|
||||
|
||||
lda consol ; START
|
||||
and #1
|
||||
beq stop
|
||||
|
||||
lda skctl ; ANY KEY
|
||||
and #$04
|
||||
bne skp
|
||||
|
||||
stop mva #$00 pmcntl ;PMG disabled
|
||||
tax
|
||||
sta:rne hposp0,x+
|
||||
|
||||
mva #$ff portb ;ROM switch on
|
||||
mva #$40 nmien ;only NMI interrupts, DLI disabled
|
||||
cli ;IRQ enabled
|
||||
|
||||
rts ;return to ... DOS
|
||||
skp
|
||||
|
||||
//--------------------
|
||||
|
||||
jmp LOOP
|
||||
|
||||
;---
|
||||
|
||||
wait54cycle
|
||||
:2 inc byt2
|
||||
wait44cycle
|
||||
inc byt3
|
||||
nop
|
||||
wait36cycle
|
||||
inc byt3
|
||||
jsr _rts
|
||||
wait18cycle
|
||||
inc byt3
|
||||
_rts rts
|
||||
|
||||
byt3 brk
|
||||
|
||||
|
||||
;---
|
||||
|
||||
.MACRO ANTIC_PROGRAM
|
||||
:+8 dta $4e,a(:1+$0000+#*40)
|
||||
:+8 dta $4e,a(:1+$0140+#*40)
|
||||
:+8 dta $4e,a(:1+$0280+#*40)
|
||||
:+8 dta $4e,a(:1+$03C0+#*40)
|
||||
:+8 dta $4e,a(:1+$0500+#*40)
|
||||
:+8 dta $4e,a(:1+$0640+#*40)
|
||||
:+8 dta $4e,a(:1+$0780+#*40)
|
||||
:+8 dta $4e,a(:1+$08C0+#*40)
|
||||
:+8 dta $4e,a(:1+$0A00+#*40)
|
||||
:+8 dta $4e,a(:1+$0B40+#*40)
|
||||
:+8 dta $4e,a(:1+$0C80+#*40)
|
||||
:+8 dta $4e,a(:1+$0DC0+#*40)
|
||||
:+8 dta $4e,a(:1+$0F00+#*40)
|
||||
:+8 dta $4e,a(:1+$1040+#*40)
|
||||
:+8 dta $4e,a(:1+$1180+#*40)
|
||||
:+8 dta $4e,a(:1+$12C0+#*40)
|
||||
:+8 dta $4e,a(:1+$1400+#*40)
|
||||
:+8 dta $4e,a(:1+$1540+#*40)
|
||||
:+8 dta $4e,a(:1+$1680+#*40)
|
||||
:+8 dta $4e,a(:1+$17C0+#*40)
|
||||
:+8 dta $4e,a(:1+$1900+#*40)
|
||||
:+8 dta $4e,a(:1+$1A40+#*40)
|
||||
:+8 dta $4e,a(:1+$1B80+#*40)
|
||||
:+8 dta $4e,a(:1+$1CC0+#*40)
|
||||
:+8 dta $4e,a(:1+$1E00+#*40)
|
||||
:+4 dta $4e,a(:1+$1F40+#*40)
|
||||
:+4 dta $4e,a(:1+$1FF0+#*40)
|
||||
:+8 dta $4e,a(:1+$2090+#*40)
|
||||
:+8 dta $4e,a(:1+$21D0+#*40)
|
||||
:+8 dta $4e,a(:1+$2310+#*40)
|
||||
:+8 dta $4e,a(:1+$2450+#*40)
|
||||
dta $41,a(:2)
|
||||
.ENDM
|
||||
|
||||
CL
|
||||
|
||||
.MACRO ZPINIT
|
||||
.ENDM
|
||||
|
||||
ZCOLORS = 0
|
||||
|
||||
;---
|
||||
run main
|
||||
;---
|
||||
|
||||
opt l-
|
||||
|
||||
.MACRO SPRITES
|
||||
icl "output.png.pmg"
|
||||
.ENDM
|
||||
|
||||
USESPRITES = 1
|
||||
Binary file not shown.
Reference in New Issue
Block a user