User Tools

Site Tools


base:rasterbars_flash_screen_effect

Differences

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

Link to this comparison view

base:rasterbars_flash_screen_effect [2015-04-17 04:33] (current)
Line 1: Line 1:
 +====== Rasterbar Flash Screen Effect ======
  
 +A Rasterbar Screen Flasher routine by Wozza/CygnusOz
 + ~ you can assemble via Kick Assembler!
 +
 +{{:base:rasterbar-flasher.jpg?200|}}
 +
 +{{:base:rasterbar-flasher_src.rar|}}
 +
 +You can achieve this effect in a number of ways, with obvious tighter code etc, but this is my poor version.
 +When I first started coding back in the early 80's, Rasterbars were a lot of fun, but I remember nutting out a flash routine which I thought was very cool. m( I didn't do much coding after that, (too busy swapping, chasing girls and boozing) so after 20+ years (ahem) it's been fun to go back and re-visit.
 +
 +If you are learning to code basic ASM routines then this is a good start; you can get different effects by changing a few bytes. Muck around and play! Try adding in another IRQ for say, a scroller etc...
 +
 +
 +----
 +
 +
 +  // autostart
 +  .pc = $0801 "Basic Program Start"
 +  :BasicUpstart(start)
 +
 +  //set variables and locations
 +  .var colours = $0a00
 +  .var timing = $0b00
 +  .var pattern = $0c00
 +
 +
 +  .pc = $0810 "Main Program"
 +  start: cld
 + sei            // setup a simple irq                
 + jsr $e544       
 + ldx #>irq1      
 + stx $0315       
 + ldx #<irq1       
 + stx $0314       
 + lda #$01        
 + sta $d019       
 + sta $d01a       
 + lda #$0d        
 + sta $dc0d       
 + cli             
 +  infin: jmp infin    
 +
 +  irq1:   asl $d019
 + lda $13         
 + sta $d016       
 + ldx #$3a      //set raster
 +  !loop: cpx $d012       
 + bne !loop-   
 + ldx #$08        
 +  !loop: dex             
 + bpl !loop-   
 + nop            // waste some cycles.
 + nop
 + nop 
 + ldx #$00        
 +  colrout: lda colours,x //load in our custom colours
 + sta $d020       
 + sta $d021       
 + ldy timing,x //and corresponding timing.
 +  !loop: dey             
 + bpl !loop-   
 + inx             
 +   cpx #$c0      //how many do we have? - 192
 +   bne colrout     //keep going otherwise..
 +   lda #$00        //clear 
 +   sta $d020       
 +     sta $d021        
 +   ldx #$00        
 +  !loop:   lda colours+$01,    //store our colours
 +   sta colours,    
 +     inx             
 +     cpx #$c0        
 +     bne !loop-      
 +    
 +  aa: lda pattern+$df       // =)
 +      sta colours+$08      
 +  ab: lda pattern+$e0       //+1
 +      sta colours+$10       //+8
 +  ac: lda pattern+$e1       //+2
 +      sta colours+$18       //+8
 +  ad: lda pattern+$e2       //+3
 +      sta colours+$20       //+8
 +  ae: lda pattern+$e3       //etc
 +      sta colours+$28     
 +  af: lda pattern+$e4       
 +      sta colours+$30    
 +  ag: lda pattern+$e5       
 +      sta colours+$38    
 +  ah: lda pattern+$e6       
 +      sta colours+$40   
 +  ai: lda pattern+$e7       
 +      sta colours+$48
 +  aj: lda pattern+$e8       
 +      sta colours+$50  
 +  ak: lda pattern+$e9       
 +      sta colours+$58   
 +  al: lda pattern+$ea       
 +      sta colours+$60   
 +  am: lda pattern+$eb       
 +      sta colours+$68 
 +  an: lda pattern+$ec       
 +      sta colours+$70  
 +  ao: lda pattern+$ed       
 +      sta colours+$78
 +  ap: lda pattern+$ee       
 +      sta colours+$80
 +  aq: lda pattern+$ef       
 +      sta colours+$88  
 +  ar: lda pattern+$f0       
 +      sta colours+$90    
 +  as: lda pattern+$f1       
 +      sta colours+$98  
 +  at: lda pattern+$f2       
 +      sta colours+$a0
 +  au: lda pattern+$f3       
 +      sta colours+$a8  
 +  av: lda pattern+$f4       
 +      sta colours+$b0  
 +  ax: lda pattern+$f5       
 +      sta colours+$b8 
 +  ay: lda pattern+$f6       
 +      sta colours+$c0   
 +  az: lda pattern+$18       
 +      sta colours+$c8 
 +      inc aa+$01      //increase count of each
 +      inc ab+$01        //line
 +      inc ac+$01    
 +      inc ad+$01     
 +      inc ae+$01     
 +      inc af+$01      
 +      inc ag+$01     
 +      inc ah+$01     
 +      inc ai+$01     
 +      inc aj+$01     
 +      inc ak+$01      
 +      inc al+$01      
 +      inc am+$01      
 +      inc an+$01    
 +      inc ao+$01     
 +      inc ap+$01    
 +      inc aq+$01      
 +      inc ar+$01      
 +      inc as+$01      
 +      inc at+$01      
 +      inc au+$01      
 +      inc av+$01    
 +      inc ax+$01      
 +      inc ay+$01  
 +      inc az+$01
 +      jmp $ea31
 +
 +
 +  .pc = colours "colours"
 +  .byte $0f,$01,$01,$0f,$0f,$0c,$0c,$0b
 +  .byte $0b,$01,$0f,$0f,$0c,$0c,$0b,$0b
 +  .byte $00,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $06,$0f,$0c,$0c,$0b,$0b,$00,$06
 +  .byte $06,$0c,$0c,$0b,$0b,$00,$06,$06
 +  .byte $0e,$0c,$0b,$0b,$00,$06,$06,$08
 +  .byte $0e,$0b,$0b,$00,$06,$06,$0e,$0e
 +  .byte $03,$0b,$00,$06,$06,$0e,$0e,$03
 +  .byte $03,$00,$06,$06,$0e,$0e,$03,$03
 +  .byte $01,$06,$06,$0e,$0e,$03,$03,$01
 +  .byte $01,$06,$0e,$0e,$03,$03,$01,$01
 +  .byte $0f,$0e,$0e,$03,$03,$01,$01,$0f
 +  .byte $0f,$0e,$03,$03,$01,$01,$0f,$0f
 +  .byte $0c,$03,$03,$01,$01,$0f,$0f,$0c
 +  .byte $0c,$03,$01,$01,$0f,$0f,$0c,$0c
 +  .byte $0b,$01,$01,$0f,$0f,$0c,$0c,$0b
 +  .byte $0b,$01,$0f,$0f,$0c,$0c,$0b,$0b
 +  .byte $00,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $0b,$0f,$0c,$0c,$0b,$0b,$00,$0b
 +  .byte $0b,$0c,$0c,$0b,$0b,$00,$0b,$0b
 +  .byte $05,$0c,$0b,$0b,$00,$0b,$0b,$05
 +  .byte $05,$0b,$0b,$00,$0b,$0b,$05,$05
 +  .byte $03,$0b,$00,$0b,$0b,$05,$05,$03
 +  .byte $03,$00,$0b,$0b,$05,$05,$03,$03
 +  .byte $0d,$00,$00,$00,$00,$00,$00,$0d //25
 +  .byte $01,$00
 +
 +  .pc = timing "timing"
 +  .byte $00,07,$07,$07,$07,$07,$07,$07    
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07
 +  .byte $00,07,$07,$07,$07,$07,$07,$07 //25
 +  .byte $00,07
 + 
 +  .pc = pattern "pattern"
 +  .byte $06,$06,$0e,$0e,$03,$03,$0d,$0d
 +  .byte $07,$07,$0f,$0f,$0a,$0a,$02,$02
 +  .byte $00,$0b,$0b,$0c,$0c,$0f,$0f,$01
 +  .byte $01,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$01,$01
 +  .byte $03,$03,$0e,$0e,$06,$06,$00,$06
 +  .byte $06,$0e,$0e,$03,$03,$0d,$0d,$07
 +  .byte $07,$0f,$0f,$0a,$0a,$02,$02,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$01,$01
 +  .byte $0f,$0f,$0c,$0c,$0b,$0b,$00,$0b
 +  .byte $0b,$05,$05,$03,$03,$0d,$0d,$07
 +  .byte $07,$03,$03,$05,$05,$0b,$0b,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$0d,$0d
 +  .byte $07,$07,$0f,$0f,$0a,$0a,$02,$02
 +  .byte $00,$0b,$0b,$0c,$0c,$0f,$0f,$01
 +  .byte $01,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$01,$01
 +  .byte $03,$03,$0e,$0e,$06,$06,$00,$06
 +  .byte $06,$0e,$0e,$03,$03,$0d,$0d,$07
 +  .byte $07,$0f,$0f,$0a,$0a,$02,$02,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$0d,$0d
 +  .byte $07,$07,$0f,$0f,$0a,$0a,$02,$02
 +  .byte $00,$0b,$0b,$0c,$0c,$0f,$0f,$01
 +  .byte $01,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$0d,$0d
 +  .byte $07,$07,$0f,$0f,$0a,$0a,$02,$02
 +  .byte $00,$0b,$0b,$0c,$0c,$0f,$0f,$01
 +  .byte $01,$0f,$0f,$0c,$0c,$0b,$0b,$00
 +  .byte $06,$06,$0e,$0e,$03,$03,$01,$01
 +  .byte $0f,$0f,$0c,$0c,$0b,$0b,$00,$0b
 +  .byte $0b,$05,$05,$03,$03,$0d,$0d,$07
 +  .byte $07,$03,$03,$05,$05,$0b,$0b,$00
 +  
base/rasterbars_flash_screen_effect.txt ยท Last modified: 2015-04-17 04:33 (external edit)