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)