User Tools

Site Tools


base:simple_sprite-multiplexing_using_sprite_1

Differences

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

Link to this comparison view

base:simple_sprite-multiplexing_using_sprite_1 [2015-04-17 04:33] (current)
Line 1: Line 1:
 +   !to "multiplexer.prg",cbm 
 +    
 +  ;--------------------------------------------------------------------------- 
 +  ; 
 +  ; 
 +  ; 
 +  ; Basics : IRQ 
 +  ; @L       Wait for Y-Pos 
 +  ;          write (new) Y-Position             
 +  ;          write (new) Sprite-Pointer  
 +  ;          set some other registers according to the sprite 
 +  ;          wait 21+1 (Spriteheight+1) Rasterlines  
 +  ;          JMP @L 
 +  ; 
 +  ; 
 +  ; 
 +  ; Compiler : ACME   
 +  ; 
 +  ; Michael Sachse, 20. Maerz 2007  
 +  ; 
 +  ;--------------------------------------------------------------------------- 
 +    
 +   
 +  ;-- Basicstart 
 +   
 +  *= $0800 
 +  !byte $00,$0c,$08,$0a,$00,$9e,$32,$30,$36,$34,$00,$00,$00,$00 
 +        
 +   *= $0810 
 +     
 +  ;--------------------------------------------------    
 +            
 +           lda #00 
 +           sta $d020 
 +           sta $d021         
 +           lda #147 
 +           jsr $ffd2         
 +           jsr setup_sprite ; init Sprite 1  
 +  ;-------------------------------------------------- 
 +  ;  New Raster-IRQ 
 +  ;-------------------------------------------------- 
 +            
 +           sei   
 +           lda #<int 
 +           sta $0314 
 +           lda #>int 
 +           sta $0315        ; new IRQ 
 +           lda #$00 
 +           sta $d012         
 +           lda #$7f 
 +           sta $dc0d        ; Timer off 
 +           lda #$01 
 +           sta $d019 
 +           sta $d01a         
 +           cli 
 +           jmp * 
 +   
 +  ;-------------------------------------------------- 
 +   
 +  int      lda $d019 
 +           and #$01 
 +           sta $d019         
 +           bne irq 
 +           jmp $ea81 
 +             
 +  ;--------------------------------------------------            
 +   
 +  irq      lda #$00 
 +           sta $d012 
 +   
 +           jsr animate      ; move on x-axis 
 +   
 +   
 +  l0       lda $d012 
 +           cmp #78          ; y = 78 
 +           bne l0      
 +           sta $d001 
 +           lda #$28         ; Spritepointer Sprite 1  
 +           sta $07f8        ; $0a00 = $28*$40 
 +   
 +  l1       lda $d012 
 +           cmp #100         ; y = 100 
 +           bne l1 
 +           sta $d001           
 +           lda #$29         ; write Sprite-Pointer again 
 +           sta $07f8 
 +           lda #6           ; a new color 
 +           sta $d026 
 +   
 +  l2       lda $d012 
 +           cmp #122         ; y = 122       
 +           bne l2 
 +           sta $d001           
 +           lda #$28         ; write Sprite-Pointer again 
 +           sta $07f8 
 +           lda #3 
 +           sta $d026 
 +   
 +  l3       lda $d012 
 +           cmp #144          ; y =144      
 +           bne l3 
 +           sta $d001             
 +           lda #$29          ; write Sprite-Pointer again 
 +           sta $07f8 
 +           lda #2 
 +           sta $d026         ; a new color 
 +   
 +  le       lda $d012 
 +           cmp #255 
 +           bne le         
 +           jmp $ea81 
 +            
 +  ;-------------------------------------------------- 
 +  ;   move sprite 
 +  ;--------------------------------------------------     
 +   
 +  animate   inc $d000 
 +            lda $d000 
 +            bne ex 
 +            lda #50 
 +            sta $d000         
 +  ex        rts 
 +   
 +  ;-------------------------------------------------- 
 +  ;   Sprite 1 init 
 +  ;-------------------------------------------------- 
 +   
 +  setup_sprite 
 +   
 +            lda #1           ; Colors 
 +            sta $d025 
 +            lda #11 
 +            sta $d026 
 +            lda #15 
 +            sta $d027        ;  
 +            lda #64 
 +            sta $d000        ; X-Position 
 +            lda #$01         ; 
 +            sta $d015        ; Sprite 1 on 
 +            sta $d01c        ; Multicolor 
 +            rts 
 +   
 +  ;-------------------------------------------------- 
 +  ;   2 Sprites  
 +  ;-------------------------------------------------- 
 +   
 +  *=$0a00 
 +    
 +  !byte $ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f0  
 +  !byte $00,$00,$b0,$00,$00,$A0,$00,$00,$AC,$00,$00,$F8,$00,$00,$FE,$0E  
 +  !byte $f0,$aa,$a9,$7c,$aa,$aa,$5b,$ab,$ea,$aa,$eb,$fa,$ab,$03,$f0,$00  
 +  !byte $03,$f0,$00,$03,$c0,$00,$03,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff  
 +   
 +  ; $0a40 
 +    
 +  !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF 
 +  !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF   
 +  !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF   
 +  !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
base/simple_sprite-multiplexing_using_sprite_1.txt · Last modified: 2015-04-17 04:33 (external edit)