mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-29 21:29:32 +00:00
xmas2019: try adding letter moving
This commit is contained in:
parent
325499f6aa
commit
6e30f85a1f
|
@ -42,7 +42,7 @@ XMAS2019: xmas2019.o
|
||||||
ld65 -o XMAS2019 xmas2019.o -C ../linker_scripts/apple2_4000.inc
|
ld65 -o XMAS2019 xmas2019.o -C ../linker_scripts/apple2_4000.inc
|
||||||
|
|
||||||
xmas2019.o: xmas2019.s \
|
xmas2019.o: xmas2019.s \
|
||||||
delay_a.s vapor_lock.s message.inc gr_unrle.s
|
delay_a.s vapor_lock.s message.inc gr_unrle.s move_letters.s letters.s
|
||||||
ca65 -o xmas2019.o xmas2019.s -l xmas2019.lst
|
ca65 -o xmas2019.o xmas2019.s -l xmas2019.lst
|
||||||
|
|
||||||
|
|
||||||
|
|
30
xmas_2019/letters.s
Normal file
30
xmas_2019/letters.s
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
; The various strings printed by the sliding letters code
|
||||||
|
; Kept in one place to try to allow for better alignment opportunities
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
|
letters_bm:
|
||||||
|
;.byte 1,12
|
||||||
|
.byte "CYCLE",128
|
||||||
|
.byte 1+128,12,"CYCLE",128
|
||||||
|
.byte 2,16,"COUNTING",128
|
||||||
|
.byte 2+128,16,"COUNTING",128
|
||||||
|
; .byte 3,12,"M E G A D E M O",150
|
||||||
|
.byte 3,16,"MEGADEMO",150
|
||||||
|
.byte 1,16," ",128
|
||||||
|
.byte 2,16," ",128
|
||||||
|
.byte 3,16," ",128
|
||||||
|
.byte 1,19,"BY",128
|
||||||
|
.byte 3,17,"DEATER",150
|
||||||
|
.byte 1,19," ",128
|
||||||
|
.byte 3,17," ",128
|
||||||
|
.byte 1,17,"MUSIC",128
|
||||||
|
.byte 3,17,"DASCON",150
|
||||||
|
.byte 1,17," ",128
|
||||||
|
.byte 3,17," ",128
|
||||||
|
.byte 1,16,"LZ4+DISK",128
|
||||||
|
.byte 3,17,"QKUMBA",150
|
||||||
|
.byte 1,16," ",128
|
||||||
|
.byte 3,17," "
|
||||||
|
.byte 255
|
||||||
|
|
196
xmas_2019/move_letters.s
Normal file
196
xmas_2019/move_letters.s
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
;===============================================
|
||||||
|
; Move Letters
|
||||||
|
;===============================================
|
||||||
|
; Normal P0 =6+13+2+22+46+37 = 126
|
||||||
|
; Normal P1 =6+13+2+22+46+37 = 126
|
||||||
|
; End of line =6+13+2+22+46+9+(28) = 126
|
||||||
|
; Next line =6+13+5+14+34+(26+28) = 126
|
||||||
|
; done entirely =6+13+5+(6+42+26+28) = 126
|
||||||
|
; Waiting =6+7+(11+6+42+26+28) = 126
|
||||||
|
|
||||||
|
; all forced to be 126
|
||||||
|
|
||||||
|
.assert >move_letters = >move_letters_after, error, "move_letters crosses page"
|
||||||
|
|
||||||
|
move_letters:
|
||||||
|
ldy WAITING ; 3
|
||||||
|
beq not_waiting ; 3
|
||||||
|
;============
|
||||||
|
; 6
|
||||||
|
|
||||||
|
;-1
|
||||||
|
dec WAITING ; 5
|
||||||
|
jmp wait_it_out ; 3
|
||||||
|
;===========
|
||||||
|
; 7
|
||||||
|
|
||||||
|
not_waiting:
|
||||||
|
; load letter from pointer, save into LETTER
|
||||||
|
|
||||||
|
ldy #0 ; 2
|
||||||
|
lda (LETTERL),Y ; 5
|
||||||
|
sta LETTER ; 3
|
||||||
|
|
||||||
|
; if high bit set, is special case
|
||||||
|
bmi letter_special ; 3
|
||||||
|
;==========
|
||||||
|
; 13
|
||||||
|
|
||||||
|
; just regular letter
|
||||||
|
|
||||||
|
;-1
|
||||||
|
lda LETTERY ; get letter Y ; 3
|
||||||
|
bmi letter_page1
|
||||||
|
;==========
|
||||||
|
; 2
|
||||||
|
|
||||||
|
letter_page0: ; -1
|
||||||
|
nop
|
||||||
|
; asl ; map to memory address ; 2
|
||||||
|
tay ; 2
|
||||||
|
lda gr_offsets_l,Y ; lookup low-res memory address ; 4
|
||||||
|
sta BASL ; store out low byte of addy ; 3
|
||||||
|
lda gr_offsets_h,Y ; look up high byte ; 4
|
||||||
|
sta BASH ; 3
|
||||||
|
lda #0 ; cycle-killer ; 2
|
||||||
|
jmp letter_erase ; 3
|
||||||
|
;==========
|
||||||
|
; 22
|
||||||
|
|
||||||
|
letter_page1:
|
||||||
|
; asl ; map to memory address ; 2
|
||||||
|
nop
|
||||||
|
tay ; 2
|
||||||
|
lda gr_offsets_l,Y ; lookup low-res memory address ; 4
|
||||||
|
sta BASL ; store out low byte of addy ; 3
|
||||||
|
lda gr_offsets_h,Y ; look up high byte ; 4
|
||||||
|
clc ; 2
|
||||||
|
adc #$4 ; adjust to page1 ; 2
|
||||||
|
sta BASH ; 3
|
||||||
|
;==========
|
||||||
|
; 22
|
||||||
|
|
||||||
|
;============================
|
||||||
|
letter_erase:
|
||||||
|
ldy LETTERX ; nop ; 3
|
||||||
|
nop ; nop ; 5
|
||||||
|
|
||||||
|
ldy #0 ; erase old char with space ; 2
|
||||||
|
ml_patch_space:
|
||||||
|
lda #' '|$80 ; 2
|
||||||
|
; lda #' '|$00 ; 2
|
||||||
|
ldy LETTERX ; 3
|
||||||
|
sta (BASL),Y ; 6
|
||||||
|
|
||||||
|
dey ; draw new char ; 2
|
||||||
|
sty LETTERX ; 3
|
||||||
|
lda LETTER ; 3
|
||||||
|
ml_patch_or:
|
||||||
|
ora #$80 ; 2
|
||||||
|
; and #$3f ; 2
|
||||||
|
ldy LETTERX ; 3
|
||||||
|
sta (BASL),Y ; 6
|
||||||
|
|
||||||
|
lda LETTERX ; see if we are at destination ; 3
|
||||||
|
cmp LETTERD ; 3
|
||||||
|
beq letter_next ; 3
|
||||||
|
;===========
|
||||||
|
; 46
|
||||||
|
|
||||||
|
;-1
|
||||||
|
lda #0 ; 2
|
||||||
|
lda #0 ; 2
|
||||||
|
jmp waste_28 ; 3
|
||||||
|
;==========
|
||||||
|
; 9
|
||||||
|
letter_next:
|
||||||
|
clc ; 16-bit inc letter pointer ; 2
|
||||||
|
lda LETTERL ; 3
|
||||||
|
adc #1 ; 2
|
||||||
|
sta LETTERL ; 3
|
||||||
|
lda LETTERH ; 3
|
||||||
|
adc #0 ; 2
|
||||||
|
sta LETTERH ; 3
|
||||||
|
|
||||||
|
inc LETTERD ; inc destination X ; 5
|
||||||
|
start_destination:
|
||||||
|
ml_patch_dest:
|
||||||
|
; lda #39 ; start at right of screen ; 2
|
||||||
|
lda #39 ; start at right of screen ; 2
|
||||||
|
sta LETTERX ; 3
|
||||||
|
rts ; 6
|
||||||
|
;===========
|
||||||
|
; 37
|
||||||
|
|
||||||
|
letter_special:
|
||||||
|
cmp #$ff ; handle FF, we're done ; 2
|
||||||
|
beq letter_done ; 3
|
||||||
|
;==========
|
||||||
|
; 5
|
||||||
|
|
||||||
|
|
||||||
|
; -1
|
||||||
|
and #$7f ; clear top ; 2
|
||||||
|
sta WAITING ; this is waiting value ; 3
|
||||||
|
|
||||||
|
ldy #1 ; otherwise, Y,X pair ; 2
|
||||||
|
lda (LETTERL),Y ; get Y, put in LETTERY ; 5
|
||||||
|
sta LETTERY ; 3
|
||||||
|
;===========
|
||||||
|
; 14
|
||||||
|
|
||||||
|
iny ; get dest ; 2
|
||||||
|
lda (LETTERL),Y ; 5
|
||||||
|
sta LETTERD ; put in LETTERD ; 3
|
||||||
|
|
||||||
|
clc ; skip 3 bytes to begin of letters ; 2
|
||||||
|
lda LETTERL ; 16-bit add ; 3
|
||||||
|
adc #3 ; 2
|
||||||
|
sta LETTERL ; 3
|
||||||
|
lda LETTERH ; 3
|
||||||
|
adc #0 ; 2
|
||||||
|
sta LETTERH ; 3
|
||||||
|
lda LETTERH ; waste ; 3
|
||||||
|
jmp waste_26 ; 3
|
||||||
|
|
||||||
|
;===========
|
||||||
|
; 34
|
||||||
|
|
||||||
|
wait_it_out:
|
||||||
|
; wait 11
|
||||||
|
inc BLARGH ; 5
|
||||||
|
lda LETTERH ; 3
|
||||||
|
lda LETTERH ; 3
|
||||||
|
|
||||||
|
letter_done:
|
||||||
|
lda LETTERH ; 3
|
||||||
|
lda LETTERH ; 3
|
||||||
|
|
||||||
|
waste_42:
|
||||||
|
ldx #0 ; 2
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
inc BLARGH ; 5
|
||||||
|
waste_26:
|
||||||
|
ldx #0 ; 2
|
||||||
|
ldx #0 ; 2
|
||||||
|
ldx #0 ; 2
|
||||||
|
inc BLARGH ; 5
|
||||||
|
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
|
||||||
|
|
||||||
|
move_letters_after:
|
|
@ -21,6 +21,15 @@ SEEDH = $4F
|
||||||
FRAME_PLAY_OFFSET=$56
|
FRAME_PLAY_OFFSET=$56
|
||||||
FRAME_PLAY_PAGE = $57
|
FRAME_PLAY_PAGE = $57
|
||||||
|
|
||||||
|
WAITING = $62
|
||||||
|
LETTERL = $63
|
||||||
|
LETTERH = $64
|
||||||
|
LETTERX = $65
|
||||||
|
LETTERY = $66
|
||||||
|
LETTERD = $67
|
||||||
|
LETTER = $68
|
||||||
|
BLARGH = $69
|
||||||
|
|
||||||
AY_REGISTERS = $70
|
AY_REGISTERS = $70
|
||||||
A_FINE_TONE = $70
|
A_FINE_TONE = $70
|
||||||
A_COARSE_TONE = $71
|
A_COARSE_TONE = $71
|
||||||
|
@ -147,6 +156,17 @@ snow_init_loop:
|
||||||
dex
|
dex
|
||||||
bpl snow_init_loop
|
bpl snow_init_loop
|
||||||
|
|
||||||
|
lda #<letters_bm
|
||||||
|
sta LETTERL
|
||||||
|
lda #>letters_bm
|
||||||
|
sta LETTERH
|
||||||
|
lda #39
|
||||||
|
sta LETTERX
|
||||||
|
lda #1
|
||||||
|
sta LETTERY
|
||||||
|
lda #16
|
||||||
|
sta LETTERD
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; Load graphic page0
|
; Load graphic page0
|
||||||
|
@ -554,6 +574,9 @@ ll_smc4:
|
||||||
.align $100
|
.align $100
|
||||||
music_snow:
|
music_snow:
|
||||||
|
|
||||||
|
; do letters
|
||||||
|
|
||||||
|
jsr move_letters ; 6+126
|
||||||
|
|
||||||
; play music
|
; play music
|
||||||
jsr play_frame_compressed ; 6+1237
|
jsr play_frame_compressed ; 6+1237
|
||||||
|
@ -795,13 +818,16 @@ draw_loop:
|
||||||
; -3 jump at end
|
; -3 jump at end
|
||||||
;-1243 music
|
;-1243 music
|
||||||
; -135 wrap
|
; -135 wrap
|
||||||
|
; -132 letters
|
||||||
;======
|
;======
|
||||||
; 167
|
; 35
|
||||||
|
|
||||||
; Try X=32 Y=1 cycles=167
|
; Try X=2 Y=2 cycles=33R2
|
||||||
|
|
||||||
ldy #1 ; 2
|
nop
|
||||||
dloop1: ldx #32 ; 2
|
|
||||||
|
ldy #2 ; 2
|
||||||
|
dloop1: ldx #2 ; 2
|
||||||
dloop2: dex ; 2
|
dloop2: dex ; 2
|
||||||
bne dloop2 ; 2nt/3
|
bne dloop2 ; 2nt/3
|
||||||
dey ; 2
|
dey ; 2
|
||||||
|
@ -918,6 +944,9 @@ pixel_lookup:
|
||||||
.include "pt3_lib_write_frame.s"
|
.include "pt3_lib_write_frame.s"
|
||||||
.include "pt3_lib_write_lc.s"
|
.include "pt3_lib_write_lc.s"
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
.include "move_letters.s"
|
||||||
|
.include "letters.s"
|
||||||
|
|
||||||
.align $100
|
.align $100
|
||||||
PT3_LOC = song
|
PT3_LOC = song
|
||||||
|
|
Loading…
Reference in New Issue
Block a user