diff --git a/PARADIST.S b/PARADIST.S index ea1ba27..e5bbec9 100644 --- a/PARADIST.S +++ b/PARADIST.S @@ -239,6 +239,13 @@ screen2: move #$2700,sr move.l sp,stack ; clr.b lowbyte + + moveq #57,d0 + lea endprg,a0 +memtest: + move.l #-1,(a0)+ + dbf d0,memtest + ;********************************************************** ; Distorted scroller by Gunstick lea linebuffbegin,a0 @@ -1422,8 +1429,8 @@ no_int: - move.w #911,$ffff8240.w -; move.w #$00,$ffff8240.w +; move.w #911,$ffff8240.w + move.w #$00,$ffff8240.w bra loop @@ -3143,39 +3150,100 @@ digi: mdistgraph equ *+2*16 ;the scroller graphics buffer -> bss - rept 300/6 - dc.w $700,$700,$700,$700,$700,$700,$700,$700 - dc.w $700,$700,$700,$700,$700,$700,$700,$700 - dc.w $700,$700,$700,$700,$700,$700,$700,$700 - dc.w $700,$700,$700,$700,$700,$700,$700,$700 + rept 300/13 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$227,$007,$007 + dc.w $117,$227,$337,$447,$447,$227,$007,$007 + dc.w $117,$227,$337,$447,$447,$227,$007,$007 + dc.w $117,$227,$337,$447,$447,$227,$007,$007 + + dc.w $117,$227,$337,$447,$227,$007,$117,$007 + dc.w $117,$227,$337,$447,$227,$007,$117,$007 + dc.w $117,$227,$337,$447,$227,$007,$117,$007 + dc.w $117,$227,$337,$447,$227,$007,$117,$007 + + dc.w $117,$227,$337,$227,$007,$117,$227,$007 + dc.w $117,$227,$337,$227,$007,$117,$227,$007 + dc.w $117,$227,$337,$227,$007,$117,$227,$007 + dc.w $117,$227,$337,$227,$007,$117,$227,$007 + + dc.w $117,$227,$227,$007,$117,$337,$227,$007 + dc.w $117,$227,$227,$007,$117,$337,$227,$007 + dc.w $117,$227,$227,$007,$117,$337,$227,$007 + dc.w $117,$227,$227,$007,$117,$337,$227,$007 + + dc.w $117,$227,$007,$117,$337,$447,$227,$007 + dc.w $117,$227,$007,$117,$337,$447,$227,$007 + dc.w $117,$227,$007,$117,$337,$447,$227,$007 + dc.w $117,$227,$007,$117,$337,$447,$227,$007 + + dc.w $117,$007,$117,$337,$447,$447,$227,$007 + dc.w $117,$007,$117,$337,$447,$447,$227,$007 + dc.w $117,$007,$117,$337,$447,$447,$227,$007 + dc.w $117,$007,$117,$337,$447,$447,$227,$007 + + dc.w $007,$117,$337,$447,$447,$447,$227,$007 + dc.w $007,$117,$337,$447,$447,$447,$227,$007 + dc.w $007,$117,$337,$447,$447,$447,$227,$007 + dc.w $007,$117,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 + dc.w $117,$227,$337,$447,$447,$447,$227,$007 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - - dc.w $700,$000,$000,$000,$070,$000,$000,$000 - dc.w $700,$000,$000,$000,$070,$000,$000,$000 - dc.w $700,$000,$000,$000,$070,$000,$000,$000 - dc.w $700,$000,$000,$000,$070,$000,$000,$000 - - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - dc.w $700,$000,$000,$000,$000,$000,$000,$000 - endr + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + + dc.w $700,$000,$000,$000,$070,$000,$000,$000 + dc.w $700,$000,$000,$000,$070,$000,$000,$000 + dc.w $700,$000,$000,$000,$070,$000,$000,$000 + dc.w $700,$000,$000,$000,$070,$000,$000,$000 + + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + dc.w $700,$000,$000,$000,$000,$000,$000,$000 + + dc.w $005,$006,$007,$337,$337,$007,$006,$005 dc.w $005,$006,$007,$337,$337,$007,$006,$005 dc.w $005,$006,$007,$337,$337,$007,$006,$005 @@ -3210,22 +3278,34 @@ hwbouncetab: dc.w 230*12,230*12 dc.w 230*12,230*12 dc.w 230*12,230*12 - dc.w 230*11,230*10 - dc.w 230*9,230*8 + dc.w 230*12,230*12 + dc.w 230*12,230*12 + dc.w 230*12,230*12 + dc.w 230*11,230*11 + dc.w 230*10,230*10 + dc.w 230*9,230*9 + dc.w 230*8,230*8 + dc.w 230*7 dc.w 230*7 dc.w 230*6 + dc.w 230*6 dc.w 230*5 + dc.w 230*4 dc.w 230*3 - dc.w 230*1 + dc.w 230*2 dc.w 0 - dc.w 230*1 + dc.w 230*2 dc.w 230*3 + dc.w 230*4 dc.w 230*5 - dc.w 230*6,230*7 - dc.w 230*8,230*9 - dc.w 230*10,230*11 + dc.w 230*6,230*6 + dc.w 230*7,230*7 + dc.w 230*8,230*8 + dc.w 230*9,230*9 + dc.w 230*10,230*10 dc.w 230*11,230*11 dc.w 230*12,230*12 + dc.w 230*12,230*12 dc.w -1 scrbase equ 0 scrnadrs: @@ -3653,7 +3733,6 @@ hwscrolldat: incbin "includes\hwscroll.dat" even black: - dc.w $005 ds.l 8 section bss @@ -3682,19 +3761,15 @@ wavetabptr: ds.l 1 ;pointer to the next wave to be played disttableptr: - ds.l 1 ;pointer to the distorter adjust table - ds.w 1600 ;panic for table + ds.l 1 ;pointer to scrolldisttable disttable: - ds.w 26*2+100 ;adjusttable for the two distorters - ds.w 1600 ;panic for table + ds.w 20*2 ;scrolldisttable mdistadjustptr: ds.l 1 ;pointer to the distorter adjust table - ds.w 1600 ;panic for table mdistadjust: - ds.w 26*2+100 ;adjusttable for the two distorters - ds.w 1600 ;panic for table + ds.w 300*2 ;adjusttable for the two distorters linebuffbegin: textptr: @@ -3708,7 +3783,7 @@ shift: buffer: ds.l 2*26*16 ;16 shifts of the 1st line of the scrolling linebuffend: - rept scrhigh ;18 lines scroll + rept scrhigh-1 ;18 lines scroll ; ds.l 1 ; ds.l 1 ; ds.w 1 @@ -3716,12 +3791,12 @@ linebuffend: ds.l 2*26*16+1+1+1 endr - ds.l 230*20 + ds.w 230*6 screen: rept 5 - ds.l 8000 - ds.l 8000 + ds.l 15700 endr +endprg: end diff --git a/i.s b/i.s new file mode 100644 index 0000000..d9a836a --- /dev/null +++ b/i.s @@ -0,0 +1,312 @@ +overscan:equ 0 +; Double Megadistorter by Gunstick (c) ULM 1990 +; we know! it's long, but it works ! And it's from ULM !!! + +parallax equ 0 +parallay equ 0 + +bus equ 10 + + + + pea start(pc) + move.w #38,-(sp) + trap #14 + addq.l #6,sp + + clr.w -(sp) + trap #1 + +noswreset: + rts +start: + move #$2700,sr + move.l #noswreset,$46e.w + bsr waitvbl + + lea $ffff8240.w,a2 + lea oldpal,a3 + + movem.l (a2),d0-d7 + movem.l d0-d7,(a3) + movem.l hwpalette,d0-d7 + movem.l d0-d7,(a2) + + lea $ffff8201.w,a0 + movep.w 0(a0),d0 + lea screenad1,a2 + move.w d0,(a2) + + move.l #screen,d0 + add.l #255,d0 + and.l #$ffff00,d0 + lea screenad2,a2 + move.l d0,(a2) + movea.l d0,a2 + ror.l #8,d0 + movep.w d0,0(a0) + + move.w #0,-(sp) + move.l a2,-(sp) + move.l a2,-(sp) + move.w #5,-(sp) + trap #14 + lea 12(sp),sp + + move.l screenad2,d0 + sub.l #160*6,d0 + move.l d0,screenadr +; addi.l #8*5-64,screenadr + + movea.l screenad2,a0 + move.l #9999,d0 +clear_loop: + clr.l (a0)+ + dbra d0,clear_loop + + movea.l screenad2,a0 +; movem.l graphic,d6-d7 + movem.l black,d6-d7 + move.w #285,d2 +allline: + ifne overscan + move.w #20,d1 + endc + ifeq overscan + move.w #27,d1 + endc + +alles: + move.l d6,(a0)+ + move.l d7,(a0)+ + dbra d1,alles + ifeq overscan + addq.l #6,a0 + endc + + dbra d2,allline + + pea message + move.w #9,-(sp) + trap #1 + addq.w #6,sp + + bsr psginit + + lea oldres,a0 + move.b $ffff8260.w,(a0) + bsr waitvbl + move.b #0,$ffff8260.w + + move.b #18,$fffffc02.w + bsr waitvbl + move.b #26,$fffffc02.w + + move.l usp,a0 + move.l a0,savusp + bsr screen2 + move.l savusp,a0 + move.l a0,usp + + move.b #20,$fffffc02.w + bsr.s waitvbl + move.b #8,$fffffc02.w + + bsr.s waitvbl + move.b #2,$ffff820a.w + bsr.s waitvbl + move.b #2,$ffff820a.w + move.b oldres,$ffff8260.w + lea $ffff8201.w,a0 + moveq #0,d0 + move.w screenad1,d0 + movep.w d0,0(a0) + lsl.l #8,d0 + + move.w #0,-(sp) + move.l d0,-(sp) + move.l d0,-(sp) + move.w #5,-(sp) + trap #14 + lea 12(sp),sp + + bsr.s psginit + + lea oldpal,a0 + lea $ffff8240.w,a1 + movem.l (a0),d0-d7 + movem.l d0-d7,(a1) + + bsr.s waitvbl + move #$2300,sr + + rts +savusp: ds.l 1 + +waitvbl: + + move.b $ffff8203.w,d0 + lsl.w #8,d0 + lea $ffff8207.w,a0 +no_vbl: + movep.w 0(a0),d1 + cmp.w d0,d1 + bne.s no_vbl + + rts + +psginit: + lea psginittab,a0 +nextinit: + move.b (a0)+,d0 + cmp.b #$ff,d0 + beq.s initend + move.b (a0)+,d1 + move.b d0,$ffff8800.w + move.b d1,$ffff8802.w + bra.s nextinit +initend: + rts + + ;-------------------------------------------------------- + +screen2: + +;free d0 d1 d2 d3 d4 d5 d6 d7 a0 a1 a2 a3 a4 a5 a6 usp + move sr,-(sp) + move #$2700,sr + move.l sp,stack +; clr.b lowbyte + + move.w #5000,d0 +aaa dbf d0,aaa + +loop: + not.w $ffff8240.w + + move.b #0,$fffffa19.w ;stop timer + move.b #245,$fffffa1f.w ;244 +asd equ 7 + move.b #32,$fffffa07.w + move.b #0,$fffffa0b.w ;clr pending + not.w $ffff8240.w + + dcb $4e71,87 + move.b #asd,$fffffa19.w + + + btst #0,$fffffc00.w + beq no_key + + move.b $fffffc02.w,d0 + + cmpi.b #57,d0 + bne.s no_key + + movea.l stack,sp + move (sp)+,sr + rts + +no_key: + + move.b #0,$fffffa0b.w ;clr pending +no_int: + btst #5,$fffffa0b.w + beq.s no_int + + bra loop + + +prt: + dc.b 27,"Y",32+20,32+1," 000" +str: dc.b "0 ",0 + + + + even +psginittab:dc.b 0,$ff,1,$ff,2,$ff,3,$ff,4,$ff,5,$ff,6,0 + dc.b 7,$7f,8,7,9,7,10,7,$ff,0 + even +hwpalette: + dc.w $0700,$0707,$0474,$0777,$0606,$0505,$0404,$303 + dc.w $777,$666,$555,$444,$333,$222,$111,$002 +graphic: + dc.w $d555,$3333,$0f0f,$ff +message: + dc.b "Mfp clock detektor:",13,10,"by gunstick from U L M",13,10 + dc.b "The line should move",13,10,"this way : --->",13,10 + dc.b "with bytespeed",13,10,"and down one line after",13,10 + dc.b "each passage on the screen.",13,10,"Some flickering if a key",13,10 + dc.b "is pressed is normal",13,10,"Exit with space",13,10,13,10 + dc.b "Mfp clock detektor:",13,10,"by gunstick from U L M",13,10 + dc.b "The line should move",13,10,"this way : --->",13,10 + dc.b "with bytespeed",13,10,"and down one line after",13,10 + dc.b "each passage on the screen.",13,10,"Some flickering if a key",13,10 + dc.b "is pressed is normal",13,10,"Exit with space",13,10,13,10 + dc.b "Mfp clock detektor:",13,10,"by gunstick from U L M",13,10 + dc.b "The line should move",13,10,"this way : --->",13,10 + dc.b "with bytespeed",13,10,"and down one line after",13,10 + dc.b "each passage on the screen.",13,10,"Some flickering if a key",13,10 + dc.b "is pressed is normal",13,10,"Exit with space",13,10,0 + even +lowbyte: + dc.b 0 + + +hwscrolldat: + + even +black: + ds.l 8 + + section bss +stack: ds.l 1 +oldpal: ds.w 16 +oldres: ds.w 1 +screenad1:ds.w 1 +screenad2:ds.l 1 +screenadr:ds.l 1 +logbase: ds.l 1 ;screen where to put scroll +tabentry: + ds.l 1 ;for hwscroll +cpybufdest: + ds.l 1 ;copy from (this+4buffers-1scroll) to (this) +shiftcnt: + ds.w 1 ;counter for shifter +count: + ds.l 1 ;for some dbf without register +nextscrn: + ds.l 1 ;points to next screenadress to be used +distcalc: + ds.w 1 +distwaveptr: + ds.l 1 ;pointer in one distwave +wavetabptr: + ds.l 1 ;pointer to the next wave to be played + +disttableptr: + ds.l 1 ;pointer to scrolldisttable +disttable: + ds.w 20*2 ;scrolldisttable + + +mdistadjustptr: + ds.l 1 ;pointer to the distorter adjust table +mdistadjust: + ds.w 300*2 ;adjusttable for the two distorters + +linebuffbegin: +textptr: + ds.l 1 ;letter not completly copied into buffer (forward) +bufptr: + ds.l 1 ;pos where graphic is added in preshift 0 +bufcnt: + ds.w 1 ;which one of the 26 routs to be used to copy +shift: + ds.w 1 ;which preshift to copy +buffer: + ds.l 2*26*16 ;16 shifts of the 1st line of the scrolling +linebuffend: +screen: + ds.l 8000 + end \ No newline at end of file diff --git a/platin.dig b/platin.dig new file mode 100644 index 0000000..efcbb0c Binary files /dev/null and b/platin.dig differ diff --git a/platin.pln b/platin.pln new file mode 100644 index 0000000..3a6d751 Binary files /dev/null and b/platin.pln differ