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,​x ​    //​store our colours
 +   sta colours,​x ​    
 +    ​ 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)