Prepare for new splash

This commit is contained in:
Pecusx
2026-01-01 21:15:11 +01:00
parent 7cc5125720
commit 3b4a57917d
3 changed files with 384 additions and 0 deletions
+153
View File
@@ -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
+231
View File
@@ -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.