User Tools

Site Tools


base:sprite_multiplexer_3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

base:sprite_multiplexer_3 [2015-04-17 04:34] (current)
Line 1: Line 1:
 +====== Sprite Multiplexer ======
  
 +Turbo Assembler source. This one is more advanced than the other one made by Fungus but still got some bugs. Watch out!
 +
 +<​code>​
 +;​---------------------------------------
 +;New Multiplexer Engine
 +;24 sprite version
 +;
 +;Written by Fungus in 2005
 +;​---------------------------------------
 +
 +         *= $2000
 +
 +
 +xofs     = $06          ;x position
 +                        ;offset
 +yofs     = $06          ;x position
 +                        ;offset
 +ysin     = $3800
 +
 +sort     = $02          ;index
 +ybuf     = $1a          ;y position
 +xbuf     = $32          ;x position
 +mbuf     = $0800        ;msb of x
 +pbuf     = $4a          ;image pointer
 +cbuf     = $52   ;​-$69 ​ ;color value
 +
 +maxspr ​  = $18          ;24 sprites
 +
 +setup
 +         sei
 +         cld
 +         lda #<irq0
 +         ldx #>irq0
 +         sta $fffe
 +         stx $ffff
 +         lda #<crap
 +         ldx #>crap
 +         sta $fffa
 +         sta $fffc
 +         stx $fffb
 +         stx $fffd
 +
 +         lda #$01
 +         ldx #$fb
 +         sta $d01a
 +         stx $d012
 +         lda #$1b
 +         sta $d011
 +         lda #$7f
 +         sta $dc0d
 +
 +         ldx #$17     ;init index tab
 +isort    txa
 +         sta sort,x
 +         dex
 +         bpl isort
 +
 +         jsr move     ;init first frame
 +         jsr super
 +
 +         lda #$35
 +         sta $01
 +
 +         bit $dc0d
 +         inc $d019
 +
 +
 +         cli
 +
 +;this routine in realtime
 +
 +main
 +
 +sw2      lda #$00
 +         bne nomove
 +
 +         jsr move       ;move sprites
 +         jsr super
 +nomove
 +         jmp main
 +
 +
 +super    ldx #$00       ;​super swap
 +a0       ldy sort+1,​x ​  ;​remember sort
 +a1       lda ybuf,y
 +         ldy sort,x
 +         cmp ybuf,y
 +         bcc swap
 +         inx
 +         cpx #maxspr-1
 +         bne a0
 +         beq send
 +swap     lda sort+1,x
 +         sta sort,x
 +         sty sort+1,x
 +         dex
 +         bpl a1
 +         inx
 +         beq a1
 +send     inc sw1+1      ;ok to swap!
 +         rts
 +
 +
 +;this routine inside irq
 +
 +irq0
 +         pha
 +         txa
 +         pha
 +         tya
 +         pha
 +
 +sw1      lda #$00       ;ok to swap?
 +         bne doit
 +         jmp skipit
 +
 +doit     dec sw1+1
 +         inc sw2+1      ;tell main to
 +                        ;wait
 +
 +         ldx idx        ;reset end of
 +                        ;irq chain
 +         lda entab,x
 +         sta ren+1
 +         lda entab+1,x
 +         sta ren+2
 +         lda #$00
 +ren      sta $1111
 +
 +nrt      ldy #$00       ;mod irqs
 +         sty msb        ;sprite values
 +                        ;according to
 +                        ;index table
 +
 +         ldx sort+0
 +         lda ybuf,x
 +         sta y1+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r8+1
 +         lda xbuf,x
 +         sta x1+1
 +         lda mbuf,x
 +         bne no1
 +         lda msb
 +         ora ortab,y
 +         bne ye1
 +no1      lda msb
 +         and antab,y
 +ye1      sta m1+1
 +         lda pbuf,x
 +         sta p1+1
 +         lda cbuf,x
 +         sta c1+1
 +         iny
 +         ldx sort+1
 +         lda ybuf,x
 +         sta y2+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r9+1
 +         lda xbuf,x
 +         sta x2+1
 +         lda mbuf,x
 +         bne no2
 +         lda msb
 +         ora ortab,y
 +         bne ye2
 +no2      lda msb
 +         and antab,y
 +ye2      sta m2+1
 +         lda pbuf,x
 +         sta p2+1
 +         lda cbuf,x
 +         sta c2+1
 +         iny
 +         ldx sort+2
 +         lda ybuf,x
 +         sta y3+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r10+1
 +         lda xbuf,x
 +         sta x3+1
 +         lda mbuf,x
 +         bne no3
 +         lda msb
 +         ora ortab,y
 +         bne ye3
 +no3      lda msb
 +         and antab,y
 +ye3      sta m3+1
 +         lda pbuf,x
 +         sta p3+1
 +         lda cbuf,x
 +         sta c3+1
 +         iny
 +         ldx sort+3
 +         lda ybuf,x
 +         sta y4+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r11+1
 +         lda xbuf,x
 +         sta x4+1
 +         lda mbuf,x
 +         bne no4
 +         lda msb
 +         ora ortab,y
 +         bne ye4
 +no4      lda msb
 +         and antab,y
 +ye4      sta m4+1
 +         lda pbuf,x
 +         sta p4+1
 +         lda cbuf,x
 +         sta c4+1
 +         iny
 +         ldx sort+4
 +         lda ybuf,x
 +         sta y5+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r12+1
 +         lda xbuf,x
 +         sta x5+1
 +         lda mbuf,x
 +         bne no5
 +         lda msb
 +         ora ortab,y
 +         bne ye5
 +no5      lda msb
 +         and antab,y
 +ye5      sta m5+1
 +         lda pbuf,x
 +         sta p5+1
 +         lda cbuf,x
 +         sta c5+1
 +         iny
 +         ldx sort+5
 +         lda ybuf,x
 +         sta y6+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r13+1
 +         lda xbuf,x
 +         sta x6+1
 +         lda mbuf,x
 +         bne no6
 +         lda msb
 +         ora ortab,y
 +         bne ye6
 +no6      lda msb
 +         and antab,y
 +ye6      sta m6+1
 +         lda pbuf,x
 +         sta p6+1
 +         lda cbuf,x
 +         sta c6+1
 +         iny
 +         ldx sort+6
 +         lda ybuf,x
 +         sta y7+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r14+1
 +         lda xbuf,x
 +         sta x7+1
 +         lda mbuf,x
 +         bne no7
 +         lda msb
 +         ora ortab,y
 +         bne ye7
 +no7      lda msb
 +         and antab,y
 +ye7      sta m7+1
 +         lda pbuf,x
 +         sta p7+1
 +         lda cbuf,x
 +         sta c7+1
 +         iny
 +         ldx sort+7
 +         lda ybuf,x
 +         sta y8+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r15+1
 +         lda xbuf,x
 +         sta x8+1
 +         lda mbuf,x
 +         bne no8
 +         lda msb
 +         ora ortab,y
 +         bne ye8
 +no8      lda msb
 +         and antab,y
 +ye8      sta m8+1
 +         lda pbuf,x
 +         sta p8+1
 +         lda cbuf,x
 +         sta c8+1
 +         ldy #$00
 +         ldx sort+8
 +         lda ybuf,x
 +         sta y9+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r16+1
 +         lda xbuf,x
 +         sta x9+1
 +         lda mbuf,x
 +         bne no9
 +         lda msb
 +         ora ortab,y
 +         bne ye9
 +no9      lda msb
 +         and antab,y
 +ye9      sta m9+1
 +         lda pbuf,x
 +         sta p9+1
 +         lda cbuf,x
 +         sta c9+1
 +         iny
 +         ldx sort+10
 +         lda ybuf,x
 +         sta y10+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r17+1
 +         lda xbuf,x
 +         sta x10+1
 +         lda mbuf,x
 +         bne no10
 +         lda msb
 +         ora ortab,y
 +         bne ye10
 +no10     lda msb
 +         and antab,y
 +ye10     sta m10+1
 +         lda pbuf,x
 +         sta p10+1
 +         lda cbuf,x
 +         sta c10+1
 +         iny
 +         ldx sort+10
 +         lda ybuf,x
 +         sta y11+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r18+1
 +         lda xbuf,x
 +         sta x11+1
 +         lda mbuf,x
 +         bne no11
 +         lda msb
 +         ora ortab,y
 +         bne ye11
 +no11     lda msb
 +         and antab,y
 +ye11     sta m11+1
 +         lda pbuf,x
 +         sta p11+1
 +         lda cbuf,x
 +         sta c11+1
 +         iny
 +         ldx sort+11
 +         lda ybuf,x
 +         sta y12+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r19+1
 +         lda xbuf,x
 +         sta x12+1
 +         lda mbuf,x
 +         bne no12
 +         lda msb
 +         ora ortab,y
 +         bne ye12
 +no12     lda msb
 +         and antab,y
 +ye12     sta m12+1
 +         lda pbuf,x
 +         sta p12+1
 +         lda cbuf,x
 +         sta c12+1
 +         iny
 +         ldx sort+12
 +         lda ybuf,x
 +         sta y13+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r20+1
 +         lda xbuf,x
 +         sta x13+1
 +         lda mbuf,x
 +         bne no13
 +         lda msb
 +         ora ortab,y
 +         bne ye13
 +no13     lda msb
 +         and antab,y
 +ye13     sta m13+1
 +         lda pbuf,x
 +         sta p13+1
 +         lda cbuf,x
 +         sta c13+1
 +         iny
 +         ldx sort+13
 +         lda ybuf,x
 +         sta y14+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r21+1
 +         lda xbuf,x
 +         sta x14+1
 +         lda mbuf,x
 +         bne no14
 +         lda msb
 +         ora ortab,y
 +         bne ye14
 +no14     lda msb
 +         and antab,y
 +ye14     sta m14+1
 +         lda pbuf,x
 +         sta p14+1
 +         lda cbuf,x
 +         sta c14+1
 +         iny
 +         ldx sort+14
 +         lda ybuf,x
 +         sta y15+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r22+1
 +         lda xbuf,x
 +         sta x15+1
 +         lda mbuf,x
 +         bne no15
 +         lda msb
 +         ora ortab,y
 +         bne ye15
 +no15     lda msb
 +         and antab,y
 +ye15     sta m15+1
 +         lda pbuf,x
 +         sta p15+1
 +         lda cbuf,x
 +         sta c15+1
 +         iny
 +         ldx sort+15
 +         lda ybuf,x
 +         sta y16+1
 +         pha
 +         clc
 +         adc #$15
 +         sta r23+1
 +         lda xbuf,x
 +         sta x16+1
 +         lda mbuf,x
 +         bne no16
 +         lda msb
 +         ora ortab,y
 +         bne ye16
 +no16     lda msb
 +         and antab,y
 +ye16     sta m16+1
 +         lda pbuf,x
 +         sta p16+1
 +         lda cbuf,x
 +         sta c16+1
 +         ldy #$00
 +         ldx sort+16
 +         lda ybuf,x
 +         sta y17+1
 +         pha
 +         lda xbuf,x
 +         sta x17+1
 +         lda mbuf,x
 +         bne no17
 +         lda msb
 +         ora ortab,y
 +         bne ye17
 +no17     lda msb
 +         and antab,y
 +ye17     sta m17+1
 +         lda pbuf,x
 +         sta p17+1
 +         lda cbuf,x
 +         sta c17+1
 +         iny
 +         ldx sort+17
 +         lda ybuf,x
 +         sta y18+1
 +         pha
 +         lda xbuf,x
 +         sta x18+1
 +         lda mbuf,x
 +         bne no18
 +         lda msb
 +         ora ortab,y
 +         bne ye18
 +no18     lda msb
 +         and antab,y
 +ye18     sta m18+1
 +         lda pbuf,x
 +         sta p18+1
 +         lda cbuf,x
 +         sta c18+1
 +         iny
 +         ldx sort+18
 +         lda ybuf,x
 +         sta y19+1
 +         pha
 +         lda xbuf,x
 +         sta x19+1
 +         lda mbuf,x
 +         bne no19
 +         lda msb
 +         ora ortab,y
 +         bne ye19
 +no19     lda msb
 +         and antab,y
 +ye19     sta m19+1
 +         lda pbuf,x
 +         sta p19+1
 +         lda cbuf,x
 +         sta c19+1
 +         iny
 +         ldx sort+19
 +         lda ybuf,x
 +         sta y20+1
 +         pha
 +         lda xbuf,x
 +         sta x20+1
 +         lda mbuf,x
 +         bne no20
 +         lda msb
 +         ora ortab,y
 +         bne ye20
 +no20     lda msb
 +         and antab,y
 +ye20     sta m20+1
 +         lda pbuf,x
 +         sta p20+1
 +         lda cbuf,x
 +         sta c20+1
 +         iny
 +         ldx sort+20
 +         lda ybuf,x
 +         sta y21+1
 +         pha
 +         lda xbuf,x
 +         sta x21+1
 +         lda mbuf,x
 +         bne no21
 +         lda msb
 +         ora ortab,y
 +         bne ye21
 +no21     lda msb
 +         and antab,y
 +ye21     sta m21+1
 +         lda pbuf,x
 +         sta p21+1
 +         lda cbuf,x
 +         sta c21+1
 +         iny
 +         ldx sort+21
 +         lda ybuf,x
 +         sta y22+1
 +         pha
 +         lda xbuf,x
 +         sta x22+1
 +         lda mbuf,x
 +         bne no22
 +         lda msb
 +         ora ortab,y
 +         bne ye22
 +no22     lda msb
 +         and antab,y
 +ye22     sta m22+1
 +         lda pbuf,x
 +         sta p22+1
 +         lda cbuf,x
 +         sta c22+1
 +         iny
 +         ldx sort+22
 +         lda ybuf,x
 +         sta y23+1
 +         pha
 +         lda xbuf,x
 +         sta x23+1
 +         lda mbuf,x
 +         bne no23
 +         lda msb
 +         ora ortab,y
 +         bne ye23
 +no23     lda msb
 +         and antab,y
 +ye23     sta m23+1
 +         lda pbuf,x
 +         sta p23+1
 +         lda cbuf,x
 +         sta c23+1
 +         iny
 +         ldx sort+23
 +         lda ybuf,x
 +         sta y24+1
 +         pha
 +         lda xbuf,x
 +         sta x24+1
 +         lda mbuf,x
 +         bne no24
 +         lda msb
 +         ora ortab,y
 +         bne ye24
 +no24     lda msb
 +         and antab,y
 +ye24     sta m24+1
 +         lda pbuf,x
 +         sta p24+1
 +         lda cbuf,x
 +         sta c24+1
 +
 +         ldx #$18     ;find count
 +cnt1     dex
 +         bmi none
 +         pla
 +         beq cnt1
 +         txa
 +         sta $fb      ;sprite count
 +
 +rest     pla
 +         dex
 +         bpl rest
 +none
 +         lda $fb      ;set end of chain
 +         asl a        ;*2
 +         tax
 +         stx idx      ;save for next
 +         lda entab,​x ​ ;frame
 +         sta sen+1
 +         lda entab+1,x
 +         sta sen+2
 +         lda #$01
 +sen      sta $1111    ;self modded
 +
 +         dec sw2+1    ;ok to move
 +                      ;again
 +
 +skipit
 +         lda #$2d
 +         sta $d012
 +         lda #<irq1
 +         sta $fffe
 +         lda #>irq1
 +         sta $ffff
 +         inc $d019
 +         pla
 +         tay
 +         pla
 +         tax
 +         pla
 +         rti
 +irq1
 +
 +         pha
 +         inc $d019
 +
 +         lda #$ff
 +         sta $d015
 +
 +y1       lda #$00
 +         sta $d001
 +x1       lda #$00
 +         sta $d000
 +m1       lda #$00
 +         sta $d010
 +p1       lda #$00
 +         sta $63f8
 +         sta $67f8
 +c1       lda #$00
 +         sta $d027
 +e1       lda #$00
 +         beq s1
 +         jmp end
 +s1
 +y2       lda #$00
 +         sta $d003
 +x2       lda #$00
 +         sta $d002
 +m2       lda #$00
 +         sta $d010
 +p2       lda #$00
 +         sta $63f9
 +         sta $67f9
 +c2       lda #$00
 +         sta $d028
 +e2       lda #$00
 +         beq s2
 +         jmp end
 +s2
 +y3       lda #$00
 +         sta $d005
 +x3       lda #$00
 +         sta $d004
 +m3       lda #$00
 +         sta $d010
 +p3       lda #$00
 +         sta $63fa
 +         sta $67fa
 +c3       lda #$00
 +         sta $d029
 +e3       lda #$00
 +         beq s3
 +         jmp end
 +s3
 +y4       lda #$00
 +         sta $d007
 +x4       lda #$00
 +         sta $d006
 +m4       lda #$00
 +         sta $d010
 +p4       lda #$00
 +         sta $63fb
 +         sta $67fb
 +c4       lda #$00
 +         sta $d02a
 +e4       lda #$00
 +         beq s4
 +         jmp end
 +s4
 +y5       lda #$00
 +         sta $d009
 +x5       lda #$00
 +         sta $d008
 +m5       lda #$00
 +         sta $d010
 +p5       lda #$00
 +         sta $63fc
 +         sta $67fc
 +c5       lda #$00
 +         sta $d02b
 +e5       lda #$00
 +         beq s5
 +         jmp end
 +s5
 +y6       lda #$00
 +         sta $d00b
 +x6       lda #$00
 +         sta $d00a
 +m6       lda #$00
 +         sta $d010
 +p6       lda #$00
 +         sta $63fd
 +         sta $67fd
 +c6       lda #$00
 +         sta $d02c
 +e6       lda #$00
 +         beq s6
 +         jmp end
 +s6
 +y7       lda #$00
 +         sta $d00d
 +x7       lda #$00
 +         sta $d00c
 +m7       lda #$00
 +         sta $d010
 +p7       lda #$00
 +         sta $63fe
 +         sta $67fe
 +c7       lda #$00
 +         sta $d02d
 +e7       lda #$00
 +         beq s7
 +         jmp end
 +s7
 +y8       lda #$00
 +         sta $d00f
 +x8       lda #$00
 +         sta $d00e
 +m8       lda #$00
 +         sta $d010
 +p8       lda #$00
 +         sta $63ff
 +         sta $67ff
 +c8       lda #$00
 +         sta $d02e
 +e8       lda #$00
 +         beq s8
 +         jmp end
 +s8
 +         lda #$00
 +         bne y9
 +r8       lda #$00
 +         sta $d012
 +         lda #<irq2
 +         sta $fffe
 +         lda #>irq2
 +         sta $ffff
 +         pla
 +         rti
 +irq2
 +         pha
 +         inc $d019
 +
 +y9       lda #$00
 +         sta $d001
 +x9       lda #$00
 +         sta $d000
 +m9       lda #$00
 +         sta $d010
 +p9       lda #$00
 +         sta $63f8
 +         sta $67f8
 +c9       lda #$00
 +         sta $d027
 +e9       lda #$00
 +         beq s9
 +         jmp end
 +s9
 +
 +         lda #$00
 +         bne y10
 +r9       lda #$00
 +         sta $d012
 +         lda #<irq3
 +         sta $fffe
 +         lda #>irq3
 +         sta $ffff
 +         pla
 +         rti
 +irq3
 +         pha
 +         inc $d019
 +
 +y10      lda #$00
 +         sta $d003
 +x10      lda #$00
 +         sta $d002
 +m10      lda #$00
 +         sta $d010
 +p10      lda #$00
 +         sta $63f9
 +         sta $67f9
 +c10      lda #$00
 +         sta $d028
 +e10      lda #$00
 +         beq s10
 +         jmp end
 +s10
 +         lda #$00
 +         bne y11
 +r10      lda #$00
 +         sta $d012
 +         lda #<irq4
 +         sta $fffe
 +         lda #>irq4
 +         sta $ffff
 +         pla
 +         rti
 +irq4
 +         pha
 +         inc $d019
 +
 +y11      lda #$00
 +         sta $d005
 +x11      lda #$00
 +         sta $d004
 +m11      lda #$00
 +         sta $d010
 +p11      lda #$00
 +         sta $63fa
 +         sta $67fa
 +c11      lda #$00
 +         sta $d029
 +e11      lda #$00
 +         beq s11
 +         jmp end
 +s11
 +         lda #$00
 +         bne y12
 +r11      lda #$00
 +         sta $d012
 +         lda #<irq5
 +         sta $fffe
 +         lda #>irq5
 +         sta $ffff
 +         pla
 +         rti
 +irq5
 +         pha
 +         inc $d019
 +
 +y12      lda #$00
 +         sta $d007
 +x12      lda #$00
 +         sta $d006
 +m12      lda #$00
 +         sta $d010
 +p12      lda #$00
 +         sta $63fb
 +         sta $67fb
 +c12      lda #$00
 +         sta $d02a
 +e12      lda #$00
 +         beq s12
 +         jmp end
 +s12
 +         lda #$00
 +         bne y14
 +r12      lda #$00
 +         sta $d012
 +         lda #<irq6
 +         sta $fffe
 +         lda #>irq6
 +         sta $ffff
 +         pla
 +         rti
 +irq6
 +         pha
 +         inc $d019
 +
 +y13      lda #$00
 +         sta $d009
 +x13      lda #$00
 +         sta $d008
 +m13      lda #$00
 +         sta $d010
 +p13      lda #$00
 +         sta $63fc
 +         sta $67fc
 +c13      lda #$00
 +         sta $d02b
 +e13      lda #$00
 +         beq s13
 +         jmp end
 +s13
 +         lda #$00
 +         bne y15
 +r13      lda #$00
 +         sta $d012
 +         lda #<irq7
 +         sta $fffe
 +         lda #>irq7
 +         sta $ffff
 +         pla
 +         rti
 +irq7
 +         pha
 +         inc $d019
 +
 +y14      lda #$00
 +         sta $d00b
 +x14      lda #$00
 +         sta $d00a
 +m14      lda #$00
 +         sta $d010
 +p14      lda #$00
 +         sta $63fd
 +         sta $67fd
 +c14      lda #$00
 +         sta $d02c
 +e14      lda #$00
 +         beq s14
 +         jmp end
 +s14
 +         lda #$00
 +         bne y16
 +r14      lda #$00
 +         sta $d012
 +         lda #<irq8
 +         sta $fffe
 +         lda #>irq8
 +         sta $ffff
 +         pla
 +         rti
 +irq8
 +         pha
 +         inc $d019
 +
 +y15      lda #$00
 +         sta $d00d
 +x15      lda #$00
 +         sta $d00c
 +m15      lda #$00
 +         sta $d010
 +p15      lda #$00
 +         sta $63fe
 +         sta $67fe
 +c15      lda #$00
 +         sta $d02d
 +e15      lda #$00
 +         beq s15
 +         jmp end
 +s15
 +         lda #$00
 +         bne y17
 +r15      lda #$00
 +         sta $d012
 +         lda #<irq9
 +         sta $fffe
 +         lda #>irq9
 +         sta $ffff
 +         pla
 +         rti
 +irq9
 +         pha
 +         inc $d019
 +
 +y16      lda #$00
 +         sta $d00f
 +x16      lda #$00
 +         sta $d00e
 +m16      lda #$00
 +         sta $d010
 +p16      lda #$00
 +         sta $63ff
 +         sta $67ff
 +c16      lda #$00
 +         sta $d02e
 +e16      lda #$00
 +         beq s16
 +         jmp end
 +s16
 +         lda #$00
 +         bne y17
 +r16      lda #$00
 +         sta $d012
 +         lda #<irqa
 +         sta $fffe
 +         lda #>irqa
 +         sta $ffff
 +         pla
 +         rti
 +
 +irqa
 +         pha
 +         inc $d019
 +
 +y17      lda #$00
 +         sta $d001
 +x17      lda #$00
 +         sta $d000
 +m17      lda #$00
 +         sta $d010
 +p17      lda #$00
 +         sta $63f8
 +         sta $67f8
 +c17      lda #$00
 +         sta $d027
 +e17      lda #$00
 +         beq s17
 +         jmp end
 +s17
 +
 +         lda #$00
 +         bne y18
 +r17      lda #$00
 +         sta $d012
 +         lda #<irqb
 +         sta $fffe
 +         lda #>irqb
 +         sta $ffff
 +         pla
 +         rti
 +irqb
 +         pha
 +         inc $d019
 +
 +y18      lda #$00
 +         sta $d003
 +x18      lda #$00
 +         sta $d002
 +m18      lda #$00
 +         sta $d010
 +p18      lda #$00
 +         sta $63f9
 +         sta $67f9
 +c18      lda #$00
 +         sta $d028
 +e18      lda #$00
 +         beq s18
 +         jmp end
 +s18
 +         lda #$00
 +         bne y19
 +r18      lda #$00
 +         sta $d012
 +         lda #<irqc
 +         sta $fffe
 +         lda #>irqc
 +         sta $ffff
 +         pla
 +         rti
 +irqc
 +         pha
 +         inc $d019
 +
 +y19      lda #$00
 +         sta $d005
 +x19      lda #$00
 +         sta $d004
 +m19      lda #$00
 +         sta $d010
 +p19      lda #$00
 +         sta $63fa
 +         sta $67fa
 +c19      lda #$00
 +         sta $d029
 +e19      lda #$00
 +         beq s19
 +         jmp end
 +s19
 +         lda #$00
 +         bne y20
 +r19      lda #$00
 +         sta $d012
 +         lda #<irqd
 +         sta $fffe
 +         lda #>irqd
 +         sta $ffff
 +         pla
 +         rti
 +irqd
 +         pha
 +         inc $d019
 +
 +y20      lda #$00
 +         sta $d007
 +x20      lda #$00
 +         sta $d006
 +m20      lda #$00
 +         sta $d010
 +p20      lda #$00
 +         sta $63fb
 +         sta $67fb
 +c20      lda #$00
 +         sta $d02a
 +e20      lda #$00
 +         beq s20
 +         jmp end
 +s20
 +         lda #$00
 +         bne y21
 +r20      lda #$00
 +         sta $d012
 +         lda #<irqe
 +         sta $fffe
 +         lda #>irqe
 +         sta $ffff
 +         pla
 +         rti
 +irqe
 +         pha
 +         inc $d019
 +
 +y21      lda #$00
 +         sta $d009
 +x21      lda #$00
 +         sta $d008
 +m21      lda #$00
 +         sta $d010
 +p21      lda #$00
 +         sta $63fc
 +         sta $67fc
 +c21      lda #$00
 +         sta $d02b
 +e21      lda #$00
 +         beq s21
 +         jmp end
 +s21
 +         lda #$00
 +         bne y22
 +r21      lda #$00
 +         sta $d012
 +         lda #<irqf
 +         sta $fffe
 +         lda #>irqf
 +         sta $ffff
 +         pla
 +         rti
 +irqf
 +         pha
 +         inc $d019
 +
 +y22      lda #$00
 +         sta $d00b
 +x22      lda #$00
 +         sta $d00a
 +m22      lda #$00
 +         sta $d010
 +p22      lda #$00
 +         sta $63fd
 +         sta $67fd
 +c22      lda #$00
 +         sta $d02c
 +e22      lda #$00
 +         beq s22
 +         jmp end
 +s22
 +         lda #$00
 +         bne y23
 +r22      lda #$00
 +         sta $d012
 +         lda #<irqg
 +         sta $fffe
 +         lda #>irqg
 +         sta $ffff
 +         pla
 +         rti
 +irqg
 +         pha
 +         inc $d019
 +
 +y23      lda #$00
 +         sta $d00d
 +x23      lda #$00
 +         sta $d00c
 +m23      lda #$00
 +         sta $d010
 +p23      lda #$00
 +         sta $63fe
 +         sta $67fe
 +c23      lda #$00
 +         sta $d02d
 +e23      lda #$00
 +         beq s23
 +         jmp end
 +s23
 +         lda #$00
 +         bne y24
 +r23      lda #$00
 +         sta $d012
 +         lda #<irqh
 +         sta $fffe
 +         lda #>irqh
 +         sta $ffff
 +         pla
 +         rti
 +irqh
 +         pha
 +         inc $d019
 +
 +y24      lda #$00
 +         sta $d00f
 +x24      lda #$00
 +         sta $d00e
 +m24      lda #$00
 +         sta $d010
 +p24      lda #$00
 +         sta $63ff
 +         sta $67ff
 +c24      lda #$00
 +         sta $d02e
 +                      ;end here
 +e24      lda #$00
 +end      lda #$00
 +         sta $d012
 +         lda #<irq0
 +         sta $fffe
 +         lda #>irq0
 +         sta $ffff
 +         pla
 +crap     rti
 +
 +idx      .byte $ff
 +msb      .byte $ff
 +
 +ortab
 +         .byte %10000000
 +         .byte %01000000
 +         .byte %00100000
 +         .byte %00010000
 +         .byte %00001000
 +         .byte %00000100
 +         .byte %00000010
 +         .byte %00000001
 +antab
 +         .byte %01111111
 +         .byte %10111111
 +         .byte %11011111
 +         .byte %11101111
 +         .byte %11110111
 +         .byte %11111011
 +         .byte %11111101
 +         .byte %11111110
 +
 +en01     = e1+1
 +en02     = e2+1
 +en03     = e3+1
 +en04     = e4+1
 +en05     = e5+1
 +en06     = e6+1
 +en07     = e7+1
 +en08     = e8+1
 +en09     = e9+1
 +en10     = e10+1
 +en11     = e11+1
 +en12     = e12+1
 +en13     = e13+1
 +en14     = e14+1
 +en15     = e15+1
 +en16     = e16+1
 +en17     = e17+1
 +en18     = e18+1
 +en19     = e19+1
 +en20     = e20+1
 +en21     = e21+1
 +en22     = e22+1
 +en23     = e23+1
 +en24     = e24+1
 +
 +entab
 +         .byte <​en01,>​en01
 +         .byte <​en02,>​en02
 +         .byte <​en03,>​en03
 +         .byte <​en04,>​en04
 +         .byte <​en05,>​en05
 +         .byte <​en06,>​en06
 +         .byte <​en07,>​en07
 +         .byte <​en08,>​en08
 +         .byte <​en09,>​en09
 +         .byte <​en10,>​en10
 +         .byte <​en11,>​en11
 +         .byte <​en12,>​en12
 +         .byte <​en13,>​en13
 +         .byte <​en14,>​en14
 +         .byte <​en15,>​en15
 +         .byte <​en16,>​en16
 +         .byte <​en17,>​en17
 +         .byte <​en18,>​en18
 +         .byte <​en19,>​en19
 +         .byte <​en20,>​en20
 +         .byte <​en21,>​en21
 +         .byte <​en22,>​en22
 +         .byte <​en23,>​en23
 +         .byte <​en24,>​en24
 +
 +
 +;​---------------------------------------
 +;sprite movement
 +
 +move
 +
 +;plot y
 +
 +j1       lda ysin
 +         sta ybuf
 +j2       lda ysin+yofs
 +         sta ybuf+1
 +j3       lda ysin+(yofs*2)
 +         sta ybuf+2
 +j4       lda ysin+(yofs*3)
 +         sta ybuf+3
 +j5       lda ysin+(yofs*4)
 +         sta ybuf+4
 +j6       lda ysin+(yofs*5)
 +         sta ybuf+5
 +j7       lda ysin+(yofs*6)
 +         sta ybuf+6
 +j8       lda ysin+(yofs*7)
 +         sta ybuf+7
 +j9       lda ysin+(yofs*8)
 +         sta ybuf+8
 +j10      lda ysin+(yofs*9)
 +         sta ybuf+9
 +j11      lda ysin+(yofs*10)
 +         sta ybuf+10
 +j12      lda ysin+(yofs*11)
 +         sta ybuf+11
 +j13      lda ysin+(yofs*12)
 +         sta ybuf+12
 +j14      lda ysin+(yofs*13)
 +         sta ybuf+13
 +j15      lda ysin+(yofs*14)
 +         sta ybuf+14
 +j16      lda ysin+(yofs*15)
 +         sta ybuf+15
 +j17      lda ysin+(yofs*16)
 +         sta ybuf+16
 +j18      lda ysin+(yofs*17)
 +         sta ybuf+17
 +j19      lda ysin+(yofs*18)
 +         sta ybuf+18
 +j20      lda ysin+(yofs*19)
 +         sta ybuf+19
 +j21      lda ysin+(yofs*20)
 +         sta ybuf+20
 +j22      lda ysin+(yofs*21)
 +         sta ybuf+21
 +j23      lda ysin+(yofs*22)
 +         sta ybuf+22
 +j24      lda ysin+(yofs*23)
 +         sta ybuf+23
 +;plot x
 +
 +k1       lda #$00
 +         sta xbuf
 +k2       lda #$00+xofs
 +         sta xbuf+1
 +k3       lda #​$00+(xofs*2)
 +         sta xbuf+2
 +k4       lda #​$00+(xofs*3)
 +         sta xbuf+3
 +k5       lda #​$00+(xofs*4)
 +         sta xbuf+4
 +k6       lda #​$00+(xofs*5)
 +         sta xbuf+5
 +k7       lda #​$00+(xofs*6)
 +         sta xbuf+6
 +k8       lda #​$00+(xofs*7)
 +         sta xbuf+7
 +k9       lda #​$00+(xofs*8)
 +         sta xbuf+8
 +k10      lda #​$00+(xofs*9)
 +         sta xbuf+9
 +k11      lda #​$00+(xofs*10)
 +         sta xbuf+10
 +k12      lda #​$00+(xofs*11)
 +         sta xbuf+11
 +k13      lda #​$00+(xofs*12)
 +         sta xbuf+12
 +k14      lda #​$00+(xofs*13)
 +         sta xbuf+13
 +k15      lda #​$00+(xofs*14)
 +         sta xbuf+14
 +k16      lda #​$00+(xofs*15)
 +         sta xbuf+15
 +k17      lda #​$00+(xofs*16)
 +         sta xbuf+16
 +k18      lda #​$00+(xofs*17)
 +         sta xbuf+17
 +k19      lda #​$00+(xofs*18)
 +         sta xbuf+18
 +k20      lda #​$00+(xofs*19)
 +         sta xbuf+19
 +k21      lda #​$00+(xofs*20)
 +         sta xbuf+20
 +k22      lda #​$00+(xofs*21)
 +         sta xbuf+21
 +k23      lda #​$00+(xofs*22)
 +         sta xbuf+22
 +k24      lda #​$00+(xofs*23)
 +         sta xbuf+23
 +
 +        ;jmp cx
 +;move y
 +         inc j1+1
 +         inc j2+1
 +         inc j3+1
 +         inc j4+1
 +         inc j5+1
 +         inc j6+1
 +         inc j7+1
 +         inc j8+1
 +         inc j9+1
 +         inc j10+1
 +         inc j11+1
 +         inc j12+1
 +         inc j13+1
 +         inc j14+1
 +         inc j15+1
 +         inc j16+1
 +         inc j17+1
 +         inc j18+1
 +         inc j19+1
 +         inc j20+1
 +         inc j21+1
 +         inc j22+1
 +         inc j23+1
 +         inc j24+1
 +;move x
 +cx
 +         dec k1+1
 +         dec k2+1
 +         dec k3+1
 +         dec k4+1
 +         dec k5+1
 +         dec k6+1
 +         dec k7+1
 +         dec k8+1
 +         dec k9+1
 +         dec k10+1
 +         dec k11+1
 +         dec k12+1
 +         dec k13+1
 +         dec k14+1
 +         dec k15+1
 +         dec k16+1
 +         dec k17+1
 +         dec k18+1
 +         dec k19+1
 +         dec k20+1
 +         dec k21+1
 +         dec k22+1
 +         dec k23+1
 +         dec k24+1
 +
 +;scroll wrap
 +
 +         ldx #$b0
 +         lda k1+1
 +         cmp #$ff
 +         bne n1
 +         stx k1+1
 +n1       lda k2+1
 +         cmp #$ff
 +         bne n2
 +         stx k2+1
 +n2       lda k3+1
 +         cmp #$ff
 +         bne n3
 +         stx k3+1
 +n3       lda k4+1
 +         cmp #$ff
 +         bne n4
 +         stx k4+1
 +n4       lda k5+1
 +         cmp #$ff
 +         bne n5
 +         stx k5+1
 +n5       lda k6+1
 +         cmp #$ff
 +         bne n6
 +         stx k6+1
 +n6       lda k7+1
 +         cmp #$ff
 +         bne n7
 +         stx k7+1
 +n7       lda k8+1
 +         cmp #$ff
 +         bne n8
 +         stx k8+1
 +n8       lda k9+1
 +         cmp #$ff
 +         bne n9
 +         stx k9+1
 +n9       lda k10+1
 +         cmp #$ff
 +         bne n10
 +         stx k10+1
 +n10      lda k11+1
 +         cmp #$ff
 +         bne n11
 +         stx k11+1
 +n11      lda k12+1
 +         cmp #$ff
 +         bne n12
 +         stx k12+1
 +n12      lda k13+1
 +         cmp #$ff
 +         bne n13
 +         stx k13+1
 +n13      lda k14+1
 +         cmp #$ff
 +         bne n14
 +         stx k14+1
 +n14      lda k15+1
 +         cmp #$ff
 +         bne n15
 +         stx k15+1
 +n15      lda k16+1
 +         cmp #$ff
 +         bne n16
 +         stx k16+1
 +n16      lda k17+1
 +         cmp #$ff
 +         bne n17
 +         stx k17+1
 +n17      lda k18+1
 +         cmp #$ff
 +         bne n18
 +         stx k18+1
 +n18      lda k19+1
 +         cmp #$ff
 +         bne n19
 +         stx k19+1
 +n19      lda k20+1
 +         cmp #$ff
 +         bne n20
 +         stx k20+1
 +n20      lda k21+1
 +         cmp #$ff
 +         bne n21
 +         stx k21+1
 +n21      lda k22+1
 +         cmp #$ff
 +         bne n22
 +         stx k22+1
 +n22      lda k23+1
 +         cmp #$ff
 +         bne n23
 +         stx k23+1
 +n23      lda k24+1
 +         cmp #$ff
 +         bne n24
 +         stx k24+1
 +n24      lda k25+1
 +         cmp #$ff
 +         bne n25
 +         stx k25+1
 +n25
 +         rts
 +</​code>​
base/sprite_multiplexer_3.txt ยท Last modified: 2015-04-17 04:34 (external edit)