base:rasterbars_flash_screen_effect
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:rasterbars_flash_screen_effect [2015-04-17 04:33] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Rasterbar Flash Screen Effect ====== | ||
+ | A Rasterbar Screen Flasher routine by Wozza/ | ||
+ | ~ you can assemble via Kick Assembler! | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 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" | ||
+ | : | ||
+ | |||
+ | //set variables and locations | ||
+ | .var colours = $0a00 | ||
+ | .var timing = $0b00 | ||
+ | .var pattern = $0c00 | ||
+ | |||
+ | |||
+ | .pc = $0810 "Main Program" | ||
+ | start: | ||
+ | sei // setup a simple irq | ||
+ | jsr $e544 | ||
+ | ldx #> | ||
+ | stx $0315 | ||
+ | ldx #< | ||
+ | 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 | ||
+ | !loop: cpx $d012 | ||
+ | bne !loop- | ||
+ | ldx #$08 | ||
+ | !loop: | ||
+ | bpl !loop- | ||
+ | nop // waste some cycles. | ||
+ | nop | ||
+ | nop | ||
+ | ldx #$00 | ||
+ | colrout: lda colours, | ||
+ | sta $d020 | ||
+ | sta $d021 | ||
+ | ldy timing, | ||
+ | !loop: | ||
+ | bpl !loop- | ||
+ | inx | ||
+ | cpx #$c0 //how many do we have? - 192 | ||
+ | bne colrout | ||
+ | lda #$00 // | ||
+ | sta $d020 | ||
+ | sta $d021 | ||
+ | ldx #$00 | ||
+ | !loop: | ||
+ | sta colours, | ||
+ | | ||
+ | cpx #$c0 | ||
+ | bne !loop- | ||
+ | |||
+ | aa: lda pattern+$df | ||
+ | sta colours+$08 | ||
+ | ab: lda pattern+$e0 | ||
+ | sta colours+$10 | ||
+ | ac: lda pattern+$e1 | ||
+ | sta colours+$18 | ||
+ | ad: lda pattern+$e2 | ||
+ | sta colours+$20 | ||
+ | ae: lda pattern+$e3 | ||
+ | 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 | ||
+ | inc ab+$01 | ||
+ | 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 " | ||
+ | .byte $0f, | ||
+ | .byte $0b, | ||
+ | .byte $00, | ||
+ | .byte $06, | ||
+ | .byte $06, | ||
+ | .byte $0e, | ||
+ | .byte $0e, | ||
+ | .byte $03, | ||
+ | .byte $03, | ||
+ | .byte $01, | ||
+ | .byte $01, | ||
+ | .byte $0f, | ||
+ | .byte $0f, | ||
+ | .byte $0c, | ||
+ | .byte $0c, | ||
+ | .byte $0b, | ||
+ | .byte $0b, | ||
+ | .byte $00, | ||
+ | .byte $0b, | ||
+ | .byte $0b, | ||
+ | .byte $05, | ||
+ | .byte $05, | ||
+ | .byte $03, | ||
+ | .byte $03, | ||
+ | .byte $0d, | ||
+ | .byte $01,$00 | ||
+ | |||
+ | .pc = timing " | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00, | ||
+ | .byte $00,07 | ||
+ | |||
+ | .pc = pattern " | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $00, | ||
+ | .byte $01, | ||
+ | .byte $06, | ||
+ | .byte $03, | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $06, | ||
+ | .byte $0f, | ||
+ | .byte $0b, | ||
+ | .byte $07, | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $00, | ||
+ | .byte $01, | ||
+ | .byte $06, | ||
+ | .byte $03, | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $00, | ||
+ | .byte $01, | ||
+ | .byte $06, | ||
+ | .byte $07, | ||
+ | .byte $00, | ||
+ | .byte $01, | ||
+ | .byte $06, | ||
+ | .byte $0f, | ||
+ | .byte $0b, | ||
+ | .byte $07, | ||
+ | |
base/rasterbars_flash_screen_effect.txt · Last modified: 2015-04-17 04:33 by 127.0.0.1