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 0000000..86d3a4f Binary files /dev/null and b/artwork/splash_v3/splash3.xex differ