commit a3bb82c6fd8029416475874888218576ce5538ac Author: Georges Kesseler Date: Sat Feb 18 23:32:41 2012 +0100 parallax distorter. It was first meant to be an independant distorter on 2 playfields, only later it became the parallax distorter. This version features just hardware scroller with overscan. Use numpad to move around. diff --git a/3DFONT.NEO b/3DFONT.NEO new file mode 100644 index 0000000..e3abb57 Binary files /dev/null and b/3DFONT.NEO differ diff --git a/DESKTOP.INF b/DESKTOP.INF new file mode 100644 index 0000000..8e7d383 --- /dev/null +++ b/DESKTOP.INF @@ -0,0 +1,21 @@ +#a000000 +#b000000 +#c7770007000600070055200505552220770557075055507703111103 +#d +#E FB 02 +#W 00 00 20 01 15 17 09 D:\*.*@ +#W 00 00 0A 01 15 17 00 @ +#W 00 00 0E 09 2A 0B 00 @ +#W 00 00 0F 0A 2A 0B 00 @ +#M 00 02 00 FF D DISKSTATION@ `@ +#M 00 00 00 FF A DISKSTATION@ @ +#M 00 01 00 FF B DISKSTATION@ @ +#T 00 03 02 FF PAPIERKORB@ @ +#F FF 04 @ *.*@ +#D FF 01 @ *.*@ +#G 03 FF *.PRG@ @ +#G 03 FF *.APP@ @ +#F 03 04 *.TOS@ @ +#P 03 04 *.TTP@ @ +#G 03 04 GENST2.PRG@ *.S@ + \ No newline at end of file diff --git a/FONT.BIN b/FONT.BIN new file mode 100644 index 0000000..d589f4e Binary files /dev/null and b/FONT.BIN differ diff --git a/FULLMEGA.S b/FULLMEGA.S new file mode 100644 index 0000000..def5dc4 --- /dev/null +++ b/FULLMEGA.S @@ -0,0 +1,509 @@ + +; screen # by The Fate of ULM (c) 1989 and for all eternity... + +demo: equ 10 ;demo = 0 => assemble for demo + ;demo <> 0 => assemble for devpack +test: equ 10 + + ifne demo + +;please leave all section indications unchanged... +;simple loader to get into supervisor-mode +;this part can be removed when started from bootsector +go: + move.l y-x+$10000,d0 ;length + move.l $80000-(y-x+$10000),d0 ;memory left on ST with half-a-meg + + pea start + move.w #38,-(sp) + trap #14 + addq.l #6,sp + + clr.w -(sp) + trap #1 + +start: + move sr,in_oldsr + move #$2700,sr + + move.b $ffff8260.w,in_oldres + bsr waitvbl + move.b #0,$ffff8260.w + + movem.l $ffff8240.w,d0-d7 + movem.l d0-d7,in_oldpal + movem.l black,d0-d7 + movem.l d0-d7,$ffff8240.w + + lea $ffff8201.w,a0 + movep.w 0(a0),d0 + move.w d0,in_screenad + + move.b #26,$fffffc02.w + bsr waitvbl + move.b #18,$fffffc02.w + + bsr in_psginit + + move.l $0604.w,in_old604 + move.l sp,$0604.w + move usp,a0 + move.l a0,in_oldusp + move.l sp,in_oldsp + move.l $0600.w,in_old600 + move.l #back,$0600.w +;here we go... to the real screen... + jmp screen +back: + move.l in_old600,$0600.w + move.l in_old604,$0604.w + movea.l in_oldusp,a0 + move a0,usp + movea.l in_oldsp,sp + + movem.l black,d0-d7 + movem.l d0-d7,$ffff8240.w + + move.b #2,$ffff820a.w + bsr waitvbl + move.b #0,$ffff820a.w + bsr waitvbl + move.b #2,$ffff820a.w + + movem.l in_oldpal,d0-d7 + movem.l d0-d7,$ffff8240.w + + move.b in_oldres,$ffff8260.w + lea $ffff8201.w,a0 + move.w in_screenad,d0 + movep.w d0,0(a0) + + bsr.s in_psginit + + bsr waitvbl + move.b #20,$fffffc02.w + bsr waitvbl + move.b #8,$fffffc02.w + + move in_oldsr,sr + + rts + +in_psginit: + lea in_psginittab,a0 +in_nextinit: + move.b (a0)+,d0 + cmp.b #$ff,d0 + beq.s in_initend + move.b (a0)+,d1 + move.b d0,$ffff8800.w + move.b d1,$ffff8802.w + bra.s in_nextinit +in_initend: + rts + +in_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 + +in_screenad: ds.w 1 +in_oldpal: ds.l 16 +in_oldres: ds.w 1 +in_old600: ds.l 1 +in_old604: ds.l 1 +in_oldsr: ds.w 1 +in_oldsp: ds.l 1 +in_oldusp: ds.l 1 + endc + +; +; systemadresses: $600.w = return address (see exit) +; $604.w = stackpointer (copy to sp if needed +; ex. move.l $604.w,sp) +; +; from here on, no stackpointer is present, if you need one, just +; get the address of space for stack in $604.w (see also sys. $604.w) +; +; you can use all registers, even usp (move an,usp or move usp,an) +; +; sr is set to $2700 and must (!!!!) be $2700 when returning to main menu +; +; waitvbl can be used to wait for the end of the displayed(!!!!) screen +; normal mode and overscan (with opened lowr border...) +; waitvbl uses d0-d1/a0 +; + +;this part is the real screen... + + ifeq demo + org $010000 + endc + +x: +screen: + lea bss_start,a0 + lea bss_end,a1 + movem.l black,d1-d7/a2-a6 +clear_loop: + movem.l d1-d7/a2-a6,(a0) + movem.l d1-d7/a2-a6,12*4(a0) + movem.l d1-d7/a2-a6,24*4(a0) + lea 36*4(a0),a0 + cmpa.l a0,a1 + bpl.s clear_loop + + move.l #screenmem,d0 + add.l #255,d0 + and.l #$ffff00,d0 + move.l d0,screenad1 + ror.l #8,d0 + lea $ffff8201.w,a0 + movep.w d0,0(a0) + + move.l screenad1,a6 + movem.l black,d1-a2 + movem.l d1-a2,(a6) + movem.l d1-a2,40(a6) + movem.l d1-a2,80(a6) + movem.l d1-a2,120(a6) + lea 160(a6),a6 + lea graphic,a5 + movem.l (a5),d1-d2 + movem.l (a5),d3-d4 + movem.l (a5),d5-d6 + movem.l (a5),d7-a0 + movem.l (a5),a1-a2 + move.w #290,d0 +graphiccop: + movem.l d1-a2,(a6) + movem.l d1-a2,40(a6) + movem.l d1-a2,80(a6) + movem.l d1-a2,120(a6) + movem.l d1-a2,160(a6) + movem.l d1-a2,200(a6) + lea 230(a6),a6 + dbra d0,graphiccop + + lea farbtab,a0 + lea hsin,a1 + moveq #0,d1 + move.w #599,d0 +fill_loop: + move.b (a1)+,d1 + move.w d1,(a0)+ + cmp.l #hsinend,a1 + bne.s fill_ok + lea hsin,a1 +fill_ok: + dbf d0,fill_loop + move.l a1,aktinhsin + + movea.l $0604.w,sp + +testl: + bsr waitvbl + + lea $ffff8209.w,a0 + moveq #0,d0 + moveq #20,d2 +sync2: + move.b (a0),d0 + beq.s sync2 + sub.w d0,d2 + lsl.l d2,d2 + + bsr waitvbl + + move.w #1500,d0 +wait_border: + dbf d0,wait_border + + dcb $4e71,188+6 + +loop: + lea $ffff8260.w,sp + move.b #0,$ffff820a.w + lea coltab,a2 +codmodvsin equ *+2 + add.w #0,a2 + lea farbtab,a1 + move.b #2,$ffff820a.w + +codmodhsin equ *+2 + add.w #0,a1 + btst #6,$fffffa0d.w + bne exit + + lea $ffff8209.w,a0 + moveq #0,d0 + moveq #30,d2 +sync: + move.b (a0),d0 + beq.s sync + sub.w d0,d2 + lsl.l d2,d2 + + dcb $4e71,24+24+1 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + + moveq #48,d0 +lo0001: + dcb $4e71,5 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,46+24 + lea 32(a2),a2 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dbf d0,lo0001 + + dcb $4e71,4 + + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,46+24 + lea 32(a2),a2 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,1 + + move.w #110+50,d0 +lo0004: + dcb $4e71,5 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,46+24 + lea 32(a2),a2 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dbf d0,lo0004 + + dcb $4e71,4 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,59-11+24 + move.w (a1)+,d2 + movem.l 32(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + lea 64(a2),a2 + dcb $4e71,10 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + move.b #2,$ffff820a.w + + dcb $4e71,44+24 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + + dcb $4e71,2 + moveq #13,d0 +lo0002: + dcb $4e71,5 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,46+24 + lea 32(a2),a2 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dbf d0,lo0002 + + dcb $4e71,4 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,48+24 + move.w (a1)+,d2 + movem.l 32(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + lea 64(a2),a2 + dcb $4e71,10 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + move.b #2,$ffff820a.w + + dcb $4e71,44+24 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + + dcb $4e71,2 + moveq #43,d0 +lo0003: + dcb $4e71,5 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + movem.l d2-d5,$ffff8250.w + move.b #2,(sp) + move.b #0,(sp) + dcb $4e71,46+24 + lea 32(a2),a2 + move.w (a1)+,d2 + movem.l 0(a2,d2.w),d2-d5 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dbf d0,lo0003 + + dcb $4e71,4 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + + move.w #137,d0 +wait_border3: + dcb $4e71,32 + dbf d0,wait_border3 + + dcb $4e71,25 + + move.w pointdist,d0 + move.w d0,d1 + addq.w #4,d0 + cmp.w #300*4,d0 + bne.s pointdis_ok + moveq #0,d0 +pointdis_ok: + move.w d0,pointdist + move.w d0,codmodhsin + + moveq #0,d0 + move.l aktinhsin,a0 + move.b (a0)+,d0 + swap d0 + move.b (a0)+,d0 + cmp.l #hsinend+2,a0 + bne.s hsin_ok + lea hsin,a0 + move.b (a0)+,d0 + swap d0 + move.b (a0)+,d0 + bra.s hsin_nok +hsin_ok: + dcb $4e71,11 +hsin_nok: + move.l a0,aktinhsin + lea farbtab,a0 + add.w d1,a0 + move.l d0,(a0) + move.l d0,1200(a0) + + move.l aktinvsin,a0 + move.w (a0)+,d0 + move.w (a0)+,d1 + cmp.l #vsinend+4,a0 + bne.s vsin_ok + lea vsin,a0 + move.w (a0)+,d0 + move.w (a0)+,d1 + bra.s vsin_nok +vsin_ok: + dcb $4e71,10 +vsin_nok: + move.w d0,codmodvsin + move.l a0,aktinvsin + add.w d1,codmodhsin + + move.l $604.w,sp + + move.w #1911,$ffff8240.w + move.w #$00,$ffff8240.w + + dcb $4e71,16 + + bra loop + +exit: + movea.l $0600.w,a0 + jmp (a0) + +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 + +;here starts the data section + +black: + dc.l 0,0,0,0,0,0,0,0 + dc.l 0,0,0,0,0,0,0,0 +graphic: + dc.l %01010101010101010011001100110011 + dc.l %00001111000011111111111111111111 +pal: + dc.w $000,$221,$332,$443,$554,$665,$110,$020 +hsin: + incbin 'c:\includes\hsin.bin' +hsinend: +aktinvsin: + dc.l vsin +vsin: + incbin 'c:\includes\vsin.bin' +vsinend: + +coltab: + incbin 'c:\includes\coltab.bin' + incbin 'c:\includes\coltab.bin' + incbin 'c:\includes\coltab.bin' + incbin 'c:\includes\coltab.bin' + incbin 'c:\includes\coltab.bin' + incbin 'c:\includes\coltab.bin' + +;end of data section + + section bss +;please leave all section indications unchanged... +bss_start: ;here starts the bss + +stack: ds.l 1 +screenad1: ds.l 1 +pointdist: ds.w 1 +aktinhsin: ds.l 1 +farbtab: ds.l 600 + +screenmem: + ds.l $2000 + ds.l $2000 + ds.l $500 +bss_end: ;here ends the bss +y: + end + diff --git a/FULLSCRN.S b/FULLSCRN.S new file mode 100644 index 0000000..a6ced18 --- /dev/null +++ b/FULLSCRN.S @@ -0,0 +1,353 @@ + +; screen # by The Fate of ULM (c) 1989 and for all eternity... + +demo: equ 10 ;demo = 0 => assemble for demo + ;demo <> 0 => assemble for devpack +test: equ 10 + + ifne demo + +;please leave all section indications unchanged... +;simple loader to get into supervisor-mode +;this part can be removed when started from bootsector +x: + pea start + move.w #38,-(sp) + trap #14 + addq.l #6,sp + + clr.w -(sp) + trap #1 + +start: + move sr,in_oldsr + move #$2700,sr + + move.b $ffff8260.w,in_oldres + bsr waitvbl + move.b #0,$ffff8260.w + + movem.l $ffff8240.w,d0-d7 + movem.l d0-d7,in_oldpal + movem.l black,d0-d7 + movem.l d0-d7,$ffff8240.w + + lea $ffff8201.w,a0 + movep.w 0(a0),d0 + move.w d0,in_screenad + + move.b #18,$fffffc02.w + bsr waitvbl + move.b #26,$fffffc02.w + + bsr in_psginit + + move.l $0604.w,in_old604 + move.l sp,$0604.w + move usp,a0 + move.l a0,in_oldusp + move.l sp,in_oldsp + move.l $0600.w,in_old600 + move.l #back,$0600.w +;here we go... to the real screen... + jmp screen +back: + move.l in_old600,$0600.w + move.l in_old604,$0604.w + movea.l in_oldusp,a0 + move a0,usp + movea.l in_oldsp,sp + + movem.l black,d0-d7 + movem.l d0-d7,$ffff8240.w + + move.b #2,$ffff820a.w + bsr waitvbl + move.b #0,$ffff820a.w + bsr waitvbl + move.b #2,$ffff820a.w + + movem.l in_oldpal,d0-d7 + movem.l d0-d7,$ffff8240.w + + move.b in_oldres,$ffff8260.w + lea $ffff8201.w,a0 + move.w in_screenad,d0 + movep.w d0,0(a0) + + bsr.s in_psginit + + move.b #20,$fffffc02.w + bsr waitvbl + move.b #8,$fffffc02.w + + move in_oldsr,sr + + rts + +in_psginit: + lea in_psginittab,a0 +in_nextinit: + move.b (a0)+,d0 + cmp.b #$ff,d0 + beq.s in_initend + move.b (a0)+,d1 + move.b d0,$ffff8800.w + move.b d1,$ffff8802.w + bra.s in_nextinit +in_initend: + rts + +in_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 + +in_screenad: ds.w 1 +in_oldpal: ds.l 16 +in_oldres: ds.w 1 +in_old600: ds.l 1 +in_old604: ds.l 1 +in_oldsr: ds.w 1 +in_oldsp: ds.l 1 +in_oldusp: ds.l 1 + endc + +; +; systemadresses: $600.w = return address (see exit) +; $604.w = stackpointer (copy to sp if needed +; ex. move.l $604.w,sp) +; +; from here on, no stackpointer is present, if you need one, just +; get the address of space for stack in $604.w (see also sys. $604.w) +; +; you can use all registers, even usp (move an,usp or move usp,an) +; +; sr is set to $2700 and must (!!!!) be $2700 when returning to main menu +; +; waitvbl can be used to wait for the end of the displayed(!!!!) screen +; normal mode and overscan (with opened lowr border...) +; waitvbl uses d0-d1/a0 +; + +;this part is the real screen... + + ifeq demo + org $010000 + endc + +screen: + lea bss_start,a0 + lea bss_end,a1 + movem.l black,d1-d7/a2-a6 +clear_loop: + movem.l d1-d7/a2-a6,(a0) + movem.l d1-d7/a2-a6,12*4(a0) + movem.l d1-d7/a2-a6,24*4(a0) + lea 36*4(a0),a0 + cmpa.l a0,a1 + bpl.s clear_loop + + move.l #screenmem,d0 + add.l #255,d0 + and.l #$ffff00,d0 + move.l d0,screenad1 + ror.l #8,d0 + lea $ffff8201.w,a0 + movep.w d0,0(a0) + + lea graphic,a6 + movem.l (a6),d1-d2 + movem.l (a6),d3-d4 + movem.l (a6),d5-d6 + movem.l (a6),d7-a0 + movem.l (a6),a1-a2 + movea.l screenad1,a6 + lea 160(a6),a6 + move.w #299,d0 +graphiccop: + movem.l d1-a2,(a6) + movem.l d1-a2,40(a6) + movem.l d1-a2,80(a6) + movem.l d1-a2,120(a6) + movem.l d1-a2,160(a6) + movem.l d1-a2,200(a6) + lea 230(a6),a6 + dbra d0,graphiccop + + movem.l pal,d0-d3 + movem.l d0-d3,$ffff8240+4*4.w + + movea.l $0604.w,sp + +testl: + bsr waitvbl + + lea $ffff8209.w,a0 + moveq #0,d0 + moveq #20,d2 +sync2: + move.b (a0),d0 + beq.s sync2 + sub.w d0,d2 + lsl.l d2,d2 + + bsr waitvbl + + move.w #1500,d0 +wait_border: + dbf d0,wait_border + + dcb $4e71,196 + +loop: + move.b #0,$ffff820a.w + dcb $4e71,8 + move.b #2,$ffff820a.w + + btst #6,$fffffa0d.w + bne exit + + lea $ffff8209.w,a0 + moveq #0,d0 + moveq #30,d2 +sync: + move.b (a0),d0 + beq.s sync + sub.w d0,d2 + lsl.l d2,d2 + + dcb $4e71,79 + move.w #210,d0 +lo0001: + dcb $4e71,6 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,87 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + dbf d0,lo0001 + + dcb $4e71,5 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,87 + move.b #0,$ffff820a.w + dcb $4e71,12 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,9 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + move.b #2,$ffff820a.w + + dcb $4e71,83 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + + dcb $4e71,2 + moveq #13,d0 +lo0002: + dcb $4e71,6 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,87 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + dbf d0,lo0002 + + dcb $4e71,5 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,87 + move.b #0,$ffff820a.w + dcb $4e71,12 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,9 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + move.b #2,$ffff820a.w + + dcb $4e71,83 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + + dcb $4e71,2 + moveq #43,d0 +lo0003: + dcb $4e71,6 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w + dcb $4e71,87 + move.b #0,$ffff820a.w + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w + move.b #0,$ffff8260.w + dbf d0,lo0003 + + bsr waitvbl + move.w #1488,d0 +wait_border2: + dbf d0,wait_border2 + + dcb $4e71,194 + move.w #1911,$ffff8240.w + move.w #$00,$ffff8240.w + dcb $4e71,23 + + bra loop + +exit: + movea.l $0600.w,a0 + jmp (a0) + +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 + +;please leave all section indications unchanged... +;here starts the data section + +black: + dc.l 0,0,0,0,0,0,0,0 + dc.l 0,0,0,0,0,0,0,0 +graphic: + dc.l %01010101010101010011001100110011 + dc.l %00001111000011111111111111111111 +pal: + dc.w $000,$0221,$0332,$0443,$0554,$0665,$0110,$20 + +;end of data section + + section bss +;please leave all section indications unchanged... +bss_start: ;here starts the bss + +stack: ds.l 1 +screenad1: ds.l 1 + + +screenmem: ds.l 14300 +bss_end: ;here ends the bss + end + diff --git a/GENST2.INF b/GENST2.INF new file mode 100644 index 0000000..02fc94f Binary files /dev/null and b/GENST2.INF differ diff --git a/GENST2.PRG b/GENST2.PRG new file mode 100644 index 0000000..920706f Binary files /dev/null and b/GENST2.PRG differ diff --git a/HWSCROLL.DAT b/HWSCROLL.DAT new file mode 100644 index 0000000..2afccd3 Binary files /dev/null and b/HWSCROLL.DAT differ diff --git a/MONST2.PRG b/MONST2.PRG new file mode 100644 index 0000000..bfe9527 Binary files /dev/null and b/MONST2.PRG differ diff --git a/PARADIST.S b/PARADIST.S new file mode 100644 index 0000000..3735081 --- /dev/null +++ b/PARADIST.S @@ -0,0 +1,1476 @@ +overscan:equ 0 + +; screen #2 by The Fate of ULM (c) 1989 and for all eternity... + +x: + pea start(pc) + move.w #38,-(sp) + trap #14 + addq.l #6,sp + + clr.w -(sp) + trap #1 + +start: + 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 + 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.s waitvbl + move.b #26,$fffffc02.w + + bsr screen2 + + 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 #0,$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) + + rts + +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: + + move sr,-(sp) + move #$2700,sr + move.l sp,stack +; clr.b lowbyte + lea screenadr,a3 + move.b lowbyte,3(a3) + move.w #100,d2 +testlp: + bsr.s waitvbl ;lower border + move.w #1500,d0 +firsttopwait: + dbf d0,firsttopwait + move.b #0,$ffff820a.w + dcb $4e71,100 + move.b #2,$ffff820a.w + dbf d2,testlp + + + + +loop: +;ULM Hardware Scrolling PART 1 +;THIS PART IS TO BE STARTED BEFORE THE BEGINNING OF THE VBL +;sets screen to adress contained in screenadr+(6 scanlines) + + lea screenadr,a3 + moveq #0,d1 + move.b 3(a3),d1 + move.w d1,d0 + add.w d1,d1 + add.w d0,d1 + add.w d1,d1 + add.w d1,d1 ;*12 (24 byte per tabentry) + lea $ffff8201.w,a1 + lea hwscrolldat,a0 + lea 0(a0,d1.w),a0 + movep.w 1(a3),d1 + move.b 2(a3),d1 + move.b (a0)+,d0 + ext.w d0 + add.w d0,d1 + movep.w d1,0(a1) + move.l a0,-(sp) +;ULM Hardware Scrolling END OF PART 1 + + + bsr waitvbl + + movem.l black,d0-d7 + movem.l d0-d7,$ffff8240.w + movem.l hwpalette,d2-d7/a2-a3 + lea $ffff8209.w,a1 + moveq #10,d1 + movea.l (sp)+,a0 + + + move.w #1500,d0 +opentopwait: + dbra d0,opentopwait + dcb $4e71,196-72 + move.b #0,$ffff820a.w + move.w #$007,$ffff8240.w + dcb $4e71,8 + move.b #2,$ffff820a.w +;ULM Hardware Scrolling PART 2 +;THIS PART IS TO BE STARTED BEFORE THE END OF THE VBL +;Sets colors to zero +;Sets screen to screenadr(+6 lines) +;Initializes colors with hwpalette +;Uses : d0-a3 + + +sync: + move.b (a1),d0 + beq.s sync + sub.w d0,d1 + lsl.w d1,d1 + + moveq #5,d0 + nop + + bra intoall + +switchloop: + dcb $4e71,3 +; move.b #2,$ffff8260.w ;GunsticK's right border end switch +; move.b #0,$ffff8260.w + tst.b (a0)+ + bne.s links1 + move.b #2,$ffff820a.w + dcb $4e71,19 ;-4*2 + bra.s cont1 + +links1: + move.b #1,$ffff8260.w ;GunsticK's right border end switch + move.b #0,$ffff8260.w +;links1: + move.b #2,$ffff820a.w + dcb $4e71,5 + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w +cont1: + dcb $4e71,28 +intoall: + tst.b (a0)+ + bne.s mitte + dcb $4e71,6 + bra.s cont3 +mitte: + move.b #2,$ffff8260.w + move.b #0,$ffff8260.w +cont3: + dcb $4e71,33 + tst.b (a0)+ + bne.s rechts1 + tst.b (a0)+ + bne.s rechts2 + dcb $4e71,7 + bra.s cont4 + +rechts1: + move.b #0,$ffff820a.w + addq.w #1,a0 + dcb $4e71,4 + bra.s cont4 + +rechts2: + dcb $4e71,4 + move.b #0,$ffff820a.w + nop +cont4: + dbra d0,switchloop + move.b #2,$ffff820a.w +;HERE WE ARE SYNCHRON +;These lines are to be used if the screen uses left border + + ifne overscan + dcb $4e71,4 + movem.l d2-d7/a2-a3,$ffff8240.w + endc + ifeq overscan + dcb $4e71,3 + move.b #1,$ffff8260.w ;GunsticK's right border end switch + move.b #0,$ffff8260.w + movem.l d2-d4,$ffff8240.w + move.b #2,$ffff8260.w ;Open left border + move.b #0,$ffff8260.w + movem.l d5-d7/a2-a3,12+$ffff8240.w + dcb $4e71,72-3 + move.w #221-16,d0 +; rept 5 +overscanloop: + nop + nop + nop + move.b #0,$ffff820a.w ;Open right border + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w ;GunsticK's right border end switch + move.b #0,$ffff8260.w + dcb $4e71,9 + move.b #2,$ffff8260.w ;Open left border + move.b #0,$ffff8260.w + dcb $4e71,84-3 + dbra d0,overscanloop +; endr + nop + + + + + + + + + nop + + move.b #0,$ffff820a.w ;Open right border + move.b #0,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w ;GunsticK's right border end switch + move.b #0,$ffff8260.w + dcb $4e71,9 + move.b #2,$ffff8260.w ;Open left border + move.b #0,$ffff8260.w + move.b #2,$ffff820a.w + dcb $4e71,84-1 + + + rept 43+16 + + move.b #0,$ffff820a.w ;Open right border + move.b #2,$ffff820a.w + dcb $4e71,8 + move.b #1,$ffff8260.w ;GunsticK's right border end switch + move.b #0,$ffff8260.w + dcb $4e71,9 + move.b #2,$ffff8260.w ;Open left border + move.b #0,$ffff8260.w + + dcb $4e71,84 + nop + nop + nop + endr + + endc + + btst #0,$fffffc00.w + beq no_key + + move.b $fffffc02.w,d0 + + cmpi.b #99,d0 + bne.s notl + addi.l #16,codmod+2 +notl: + cmpi.b #100,d0 + bne.s notr + addi.l #-16,codmod+2 +notr: + cmpi.b #107,d0 + bne.s not5 + move.l #0,codmod+2 +not5: + cmpi.b #110,d0 + bne.s not2 + ifeq overscan + addi.l #-230,codmod+2 + endc + ifne overscan + addi.l #-160,codmod+2 + endc +not2: + cmpi.b #104,d0 + bne.s not8 + ifeq overscan + addi.l #230,codmod+2 + endc + ifne overscan + addi.l #160,codmod+2 + endc +not8: + cmpi.b #108,d0 + bne.s not6 + addi.l #-8,codmod+2 +not6: + cmpi.b #78,d0 + bne.s notd +; add.l #-320,codmod+2 + addi.b #-2,lowbyte + lea screenadr,a3 + move.b lowbyte,3(a3) + +notd: + cmpi.b #106,d0 + bne.s not4 + addi.l #8,codmod+2 +not4: + cmpi.b #74,d0 + bne.s notu +; add.l #320,codmod+2 + addi.b #2,lowbyte + lea screenadr,a3 + move.b lowbyte,3(a3) +notu: + cmpi.b #57,d0 + bne.s no_key + + movea.l stack,sp + move (sp)+,sr + rts + +no_key: + lea screenadr,a3 +codmod: + addi.l #0,(a3) + moveq #0,d0 + move.b 3(a3),d0 + lsr.l #1,d0 + lea str,a3 + move.l #"0000",-4(a3) + bsr.s d0todeza3 + pea prt + move.w #9,-(sp) +; trap #1 + addq.w #6,sp + + bra loop + +exit: + movea.l stack,sp + move (sp)+,sr + rts + +d0todeza3: + movem.l d0-d1/a3,-(sp) + addq.w #1,a3 + moveq #3,d1 + divu #10000,d0 + beq.s smallone +hexdezinit: + move.b #"0",-(a3) + dbra d1,hexdezinit + bsr.s hextodez + addq.w #4,a3 +smallone: + swap d0 + bsr.s hextodez + movem.l (sp)+,d0-d1/a3 + rts +hextodez: + movem.l d1/a3,-(sp) + move.w d0,d1 +nexthextodez: + divu #10,d1 + swap d1 + add.b #"0",d1 + move.b d1,-(a3) + clr.w d1 + swap d1 + bne.s nexthextodez + movem.l (sp)+,d1/a3 + rts + section data +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,$07,$0474,$0777,$0606,$0700,$0170,$62 + dc.w $0770,$0707,$50,$0505,$75,$0777,$00,$0711 +graphic: + dc.w $d555,$3333,$0f0f,$ff +message: + dc.b 27,"c",6,13,10,13,10,10,10,10,10,10,10,10,10,"Hardware scrolling discovery" + dc.b 13,10,"Scroll !!!!!!",13,10,10 +test: equ 0 + ifeq test + dc.b 'UUUU LLLL MMMMMM MMMMMM',13,10 +; dc.b 'UUUU LLLL MMMMMMM MMMMMMM',13,10 + dc.b 'UUUU LLLL MMMM MMMMMMMM',13,10 +; dc.b 'UUUU LLLL MMMM MMMM MMMM',13,10 + dc.b 'UUUU LLLL MMMMMMMM MMMM',13,10 +; dc.b 'UUUU LLLL MMMMMM MMMM',13,10 + dc.b 'UUUU LLLL MMMM MMMM',13,10 +; dc.b 'UUUU LLLL MMMM',13,10 + dc.b 'UUUU LLLL MMMM',13,10 +; dc.b 'UUUU LLLL MMMM',13,10 + dc.b 'UUUU LLLL MMMM',13,10 +; dc.b 'UUUU LLLL MMMM',13,10 + dc.b 'UUUU LLLL MMMM',13,10 +; dc.b 'UUUU LLLL MMMM',13,10 + dc.b 'UUUU LLLL MMMM',13,10 +; dc.b 'UUUU ULLLL MMMM',13,10 + dc.b 'UUUU UUUU LLLL MMMM',13,10 +; dc.b 'UUUU UUUU LLLL MMMM',13,10 + dc.b 'UUUUUUUUUUUUU LLLLLLLLLLLLLL MMMM',13,10 +; dc.b 'UUUUUUUUUUU LLLLLLLLLLLL MMMM',13,10 + endc + ifne test + dc.b ' ',13,10 + dc.b ' TTTTTTTTTTT HH HH EEEEEEEEE ',13,10 + dc.b ' TT HH HH EE ',13,10 + dc.b ' TT HH HH EE ',13,10 + dc.b ' TT HHHHHHHHH EEEEE ',13,10 + dc.b ' TT HH HH EE ',13,10 + dc.b ' TT HH HH EE ',13,10 + dc.b ' TT HH HH EEEEEEEEE ',13,10 + dc.b ' ',13,10 + dc.b 'FFFFFFFFF AAAAAAAAA TTTTTTTTTT EEEEEEEEEE',13,10 + dc.b 'FF AA AA TT EE ',13,10 + dc.b 'FF AA AA TT EE ',13,10 + dc.b 'FFFFF AAAAAAAAA TT EEEEE ',13,10 + dc.b 'FF AA AA TT EE ',13,10 + dc.b 'FF AA AA TT EE ',13,10 + dc.b 'FF AA AA TT EEEEEEEEEE',13,10 + dc.b ' ',13,10 + endc + dc.b 27,"Y",32+20,32,"|" + dc.b 13,10,"|" + dc.b 13,10,"0123456789012345678901234567890123456789" + dc.b 13,10,"0000000000111111111122222222223333333333" + dc.b 13,10,"||||||||||||||||||||||||||||||||||||||||",0 + dc.b 13,10,"||||||||||||||||||||||||||||||||||||||||",0 + even +savestart: +hwscrolldat: ; equ *+24*24 +; incbin 'hw.dat' +; dc.b $00,$00,$00,$00 +; dc.b $00,$00,$00,$ff ;44 +; dc.b $00,$00,$ff,$00 ;-2 +; dc.b $00,$ff,$00,$00 ;-106 +; dc.b $ff,$00,$00,$00 ;26 +; dc.b $ff,$00,$00,$ff ;70 +; dc.b $ff,$00,$ff,$00 ;24 +; dc.b $ff,$ff,$00,$00 ;-80 + +; c = Christian synchronistaion 1 +; C = Christian synchronisation 2 +; P = MMU mit Punkten bei farbumschaltung (franz.) +; g = Georges sync: bad overscan +; G = Georges sync: good overscan + +as: equ 2*0 + dc.b $ff ;0 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff ;1 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;2 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;3 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;4 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;5 cPgG + dc.b $00,$ff,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;6 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;7 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;8 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00 ;9 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;10 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;11 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;12 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;13 cPgG + dc.b $00,$00,$ff + dc.b $00,$ff,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;14 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;15 c gG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;16 c gG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;17 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00 ;18 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;19 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;20 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;21 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;22 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;23 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;24 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;25 cPgG + dc.b $ff,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;26 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00 ;27 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00 ;28 c gG + dc.b $00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;29 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;30 c gG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$ff,$00,$00 + dc.b $00 ;31 cPgG + dc.b $00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;32 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;33 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;34 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;35 cPgG + dc.b $00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;36 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;37 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;38 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;39 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;40 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00 ;41 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;42 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;43 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;44 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;45 c gG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;46 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;47 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;48 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $00 ;49 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;50 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00 ;51 cPgG + dc.b $ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;52 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$ff,$00,$00 + dc.b $00 ;53 cPgG + dc.b $ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;54 cPgG + dc.b $00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;55 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;56 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;57 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;58 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;59 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;60 c gG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;61 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;62 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;63 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $00 ;64 cPgG + dc.b $ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;65 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;66 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;67 c gG + dc.b $00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;68 c gG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;69 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;70 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;71 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;72 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;73 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;74 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;75 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 ;hoffentlich geht dieser immer ! + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;76 cPgG + dc.b $ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;77 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;78 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $01 ;79 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00 ;80 c gG + dc.b $00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;81 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;82 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;83 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;84 cPgG + dc.b $00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;85 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;86 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;87 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;88 cPgG + dc.b $00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;89 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00 ;90 cPgG + dc.b $00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00 ;91 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $01 ;92 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;93 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;94 c gG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;95 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00 ;96 c gG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;97 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;98 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;99 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;100 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;101 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00 ;102 cPgG + dc.b $00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00 ;103 gG + dc.b $00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00 ;104 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;105 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;106 c gG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;107 cPgG + dc.b $ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;108 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;109 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;110 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;111 cPgG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;112 cPgG + dc.b $00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;113 cPgG + dc.b $00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;114 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $00 ;115 cPgG + dc.b $00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $00 ;116 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $00 ;117 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $01 ;118 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $01 ;119 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$00,$ff + dc.b $00,$00,$00,$ff + dc.b $01 ;120 c gG + dc.b $00,$ff,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;121 c gG + dc.b $00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $01 ;122 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$ff,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $ff,$00,$ff,$00 + dc.b $01 ;123 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$00,$ff + dc.b $00,$00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $01 ;124 cPgG + dc.b $00,$00,$00 + dc.b $ff,$ff,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $ff,$00,$ff,$00 + dc.b $ff,$00,$ff,$00 + dc.b $01 ;125 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;126 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $01 ;127 cPgG + dc.b $00,$00,$00 + dc.b $00,$00,$ff,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + dc.b $00,$00,$00,$00 + even +saveend: +lowbyte: + dc.b as + 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 +black: ds.l 8 + +screen: ds.l 14300 + end diff --git a/SPRITER.PRG b/SPRITER.PRG new file mode 100644 index 0000000..f1da492 Binary files /dev/null and b/SPRITER.PRG differ