Sprite Multiplexer
Suche
Index
FAQ
Kontakt
Zurück
Source Codes


Hier findest Du ein kleines Beispiel zum Sprite-Multiplexing. Der Source sollte eigentlich verständlich dokumentiert sein.


Viel Spaß damit.
logo



      !to "multiplexer.prg",cbm
      
     ;---------------------------------------------------------------------------
     ;
     ; Ein kleines Sprite Multiplexer-Beispiel mit Sprite 1 
     ;
     ; In diesem Beispiel wird Sprite 1 viermal durch die Multiplexer-Routine
     ; auf den Bildschirm gebracht. 
     ;
     ; Basics : Rasterzeilen-IRQ
     ; @L       Auf die gewuenschte Y-Position (Rasterzeile) warten  
     ;          (neue) Y-Position setzen         
     ;          (neuen) Sprite-Pointer setzen
     ;          ggf. Farben und weitere Register aktualisieren
     ;          wenigstens 21+1 (Spritehoehe+1) Rasterzeilen warten 
     ;          weiter bei @L
     ;
     ; Auf einer Rasterzeile koennen nur einmal 8 Sprites dargestellt werden. 
     ;
     ;
     ; 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        ; Rahmen und Bildschirm schwarz 
              lda #147
              jsr $ffd2        ; Bildschirm loeschen
              jsr setup_sprite ; Sprite 1 initalisieren 
 
     ;--------------------------------------------------
     ;  Neuen IRQ auf Raster
     ;--------------------------------------------------
              
              sei  
              lda #int
              sta $0315        ; neuer IRQ
              lda #$00
              sta $d012        ; Rasterzeile speichern
              lda #$7f
              sta $dc0d        ; Timer aus
              lda #$01
              sta $d019
              sta $d01a        ; IRQ auf Rasterzeile festlegen 
              cli
              jmp *
     
     ;--------------------------------------------------
     
     int      lda $d019
              and #$01
              sta $d019        ; hat IRQ stattgefunden ?
              bne irq
              jmp $ea81
               
     ;--------------------------------------------------           
     
     irq      lda #$00
              sta $d012
     
              jsr animate      ; auf X-Achse bewegen 
     
     
     l0       lda $d012
              cmp #78          ; y = 78
              bne l0     
              sta $d001
              lda #$28         ; Spritepointer Sprite 1 setzen
              sta $07f8        ; $0a00 = $28*$40
     
     l1       lda $d012
              cmp #100         ; y = 100
              bne l1
              sta $d001          
              lda #$29         ; Spritepointer neu setzen
              sta $07f8
              lda #6           ; eine neue Farbe
              sta $d026
     
     l2       lda $d012
              cmp #122         ; y = 122      
              bne l2
              sta $d001          
              lda #$28         ; Spritepointer neu setzen
              sta $07f8
              lda #3
              sta $d026
     
     l3       lda $d012
              cmp #144          ; y =144     
              bne l3
              sta $d001            
              lda #$29          ; Spritepointer neu setzen
              sta $07f8
              lda #2
              sta $d026         ; eine neue Farbe
     
     le       lda $d012
              cmp #255
              bne le        
              jmp $ea81
              
     ;--------------------------------------------------
     ;   Sprite(s) auf X-Achse bewegen  
     ;--------------------------------------------------    
     
     animate   inc $d000
               lda $d000
               bne ex
               lda #50
               sta $d000        
     ex        rts
     
     ;--------------------------------------------------
     ;   Sprite 1 initalisieren
     ;--------------------------------------------------
     
     setup_sprite
     
               lda #1           ; Farben
               sta $d025
               lda #11
               sta $d026
               lda #15
               sta $d027        ; setzen
               lda #64
               sta $d000        ; X-Position
               lda #$01         ;
               sta $d015        ; Sprite 1 an
               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

 

Letzte Änderung: 2019-01-03 11:41:58
  Rubrik:  C64
Rubriken-Übersicht
 6 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!