fireworks: add initial text support

This commit is contained in:
Vince Weaver 2018-09-12 13:30:20 -04:00
parent b5a1a55e43
commit a85175c436
4 changed files with 159 additions and 1 deletions

View File

@ -17,7 +17,7 @@ FIREWORKS: fireworks.o
ld65 -o FIREWORKS fireworks.o -C ../linker_scripts/apple2_1000.inc
fireworks.o: fireworks.s gr_copy.s random16.s fw.s hgr.s \
vapor_lock.s gr_hline.s state_machine.s \
vapor_lock.s gr_hline.s state_machine.s move_letters.s \
background_final.inc
ca65 -o fireworks.o fireworks.s -l fireworks.lst

View File

@ -11,4 +11,6 @@ remove dead code
adjust speed
adjust colors of gradient?
BUGS:
sometimes far left firework will wrap?

View File

@ -15,6 +15,12 @@ GBASH = $27
BASL = $28
BASH = $29
FRAME = $60
LETTERL = $63
LETTERH = $64
LETTERX = $65
LETTERY = $66
LETTERD = $67
LETTER = $68
BLARGH = $69
HGR_COLOR = $E4
STATE = $ED
@ -72,6 +78,18 @@ setup_background:
lda #0
sta DRAW_PAGE
sta STATE
init_letters:
lda #<letters
sta LETTERL
lda #>letters
sta LETTERH
lda #39
sta LETTERX
lda #24
sta LETTERY
lda #30
sta LETTERD
;=============================
; Load graphic page0
@ -391,6 +409,7 @@ jump_table:
.include "fw.s"
.include "hgr.s"
.include "vapor_lock.s"
.include "move_letters.s"
background:

137
fireworks/move_letters.s Normal file
View File

@ -0,0 +1,137 @@
;===============================================
; Move Letters
;===============================================
; Normal =10+25+38+9 = 82 need 28 (28)
; End of line =10+25+38+37 = 110
; Next line =10+5+12+34 = 61 need 49 (28+21)
; done entirely =10+5+9 = 24 need 86 (28+21+37)
; all forced to be 109
move_letters:
ldy #0 ; 2
lda (LETTERL),Y ; 5
sta LETTER ; 3
;==========
; 10
bmi letter_special
; 2
lda LETTERY ; 3
asl ; 2
tay ; 2
lda gr_offsets,Y ; lookup low-res memory address ; 4
sta BASL ; store out low byte of addy ; 3
lda gr_offsets+1,Y ; look up high byte ; 4
sta BASH ; 3
lda #0 ; cycle-killer ; 2
;==========
; 25
ldy #0 ; erase old char with space ; 2
lda #' '|$80 ; 2
ldy LETTERX ; 3
sta (BASL),Y ; 6
dey ; draw new char ; 2
sty LETTERX ; 3
lda LETTER ; 3
ora #$80 ; 2
ldy LETTERX ; 3
sta (BASL),Y ; 6
lda LETTERX ; 3
cmp LETTERD ; 3
;===========
; 38
beq letter_next
; 2
lda #0 ; 2
lda #0 ; 2
jmp waste_28 ; 3
;==========
; 9
letter_next:
; 3
clc ; 2
lda LETTERL ; 3
adc #1 ; 2
sta LETTERL ; 3
lda LETTERH ; 3
adc #0 ; 2
sta LETTERH ; 3
inc LETTERD ; 5
lda #39 ; 2
sta LETTERX ; 3
rts ; 6
;===========
; 37
letter_special:
; 3
cmp #$ff ; 2
;==========
; 5
beq letter_done
; 2
ldy #1 ; 2
lda (LETTERL),Y ; 5
sta LETTERY ; 3
;===========
; 12
iny ; 2
lda (LETTERL),Y ; 5
sta LETTERD ; 3
clc ; 2
lda LETTERL ; 3
adc #3 ; 2
sta LETTERL ; 3
lda LETTERH ; 3
adc #0 ; 2
sta LETTERH ; 3
lda LETTERH ; waste ; 3
jmp waste_21 ; 3
;===========
; 34
letter_done:
; 3
lda LETTERH ; 3
lda LETTERH ; 3
waste_37:
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
waste_21:
ldx #0 ; 2
ldx #0 ; 2
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
waste_28:
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
rts ; 6
letters:
;.byte 22,30,
.byte "CODE BY",128
.byte 23,30,"DEATER",128
.byte 22,30,"FIREWORKS",128
.byte 23,30,"FOZZTEXX",128
.byte 22,30,"A VMW",128
.byte 23,30,"PRODUCTION",128
.byte 255