From 3b4a57917d8a90001dfb4f7188eb4749da416eba Mon Sep 17 00:00:00 2001 From: Pecusx Date: Thu, 1 Jan 2026 21:15:11 +0100 Subject: [PATCH] Prepare for new splash --- artwork/splash_v3/no_name.h | 153 ++++++++++++++++++++++ artwork/splash_v3/splash3.asm | 231 ++++++++++++++++++++++++++++++++++ artwork/splash_v3/splash3.xex | Bin 0 -> 18160 bytes 3 files changed, 384 insertions(+) create mode 100644 artwork/splash_v3/no_name.h create mode 100644 artwork/splash_v3/splash3.asm create mode 100644 artwork/splash_v3/splash3.xex diff --git a/artwork/splash_v3/no_name.h b/artwork/splash_v3/no_name.h new file mode 100644 index 0000000..0b73801 --- /dev/null +++ b/artwork/splash_v3/no_name.h @@ -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 \ No newline at end of file diff --git a/artwork/splash_v3/splash3.asm b/artwork/splash_v3/splash3.asm new file mode 100644 index 0000000..848fc46 --- /dev/null +++ b/artwork/splash_v3/splash3.asm @@ -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+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 \ No newline at end of file diff --git a/artwork/splash_v3/splash3.xex b/artwork/splash_v3/splash3.xex new file mode 100644 index 0000000000000000000000000000000000000000..86d3a4f90022864ac8841649135b9cd774d0b15f GIT binary patch literal 18160 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 literal 0 HcmV?d00001