blue_flame: under 1020 bytes!

This commit is contained in:
Vince Weaver 2023-02-03 23:42:19 -05:00
parent 5cb27a5524
commit 588a7bef7d
6 changed files with 161 additions and 152 deletions

View File

@ -1,7 +1,8 @@
.align $100
peasant_song:
small_love_2_song:
; register init
track0:
@ -250,8 +251,144 @@ track1:
.byte $18 ; frame=64 A=3 L=0
.byte $45 ; frame=64 B=8 L=2
.byte $ff
track2:
; A: 24
; B: 12
; A: 31
; B: 24
.byte $00 ; frame=2 A=0 L=0
.byte $4D ; frame=2 B=9 L=2
; A: 36
; B: 51
.byte $08 ; frame=4 A=1 L=0
.byte $05 ; frame=4 B=0 L=2
; A: 43
; B: 50
.byte $10 ; frame=6 A=2 L=0
.byte $3D ; frame=6 B=7 L=2
; A: 46
; B: 53
.byte $18 ; frame=8 A=3 L=0
.byte $45 ; frame=8 B=8 L=2
; A: 48
; B: 51
.byte $20 ; frame=10 A=4 L=0
.byte $55 ; frame=10 B=10 L=2
; A: 43
; B: 19
.byte $28 ; frame=12 A=5 L=0
.byte $3D ; frame=12 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=14 A=3 L=0
.byte $5D ; frame=14 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=16 A=6 L=0
.byte $65 ; frame=16 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=18 A=0 L=0
.byte $4D ; frame=18 B=9 L=2
; A: 36
; B: 55
.byte $08 ; frame=20 A=1 L=0
.byte $05 ; frame=20 B=0 L=2
; A: 43
; B: 53
.byte $10 ; frame=22 A=2 L=0
.byte $6D ; frame=22 B=13 L=2
; A: 46
; B: 50
.byte $18 ; frame=24 A=3 L=0
.byte $55 ; frame=24 B=10 L=2
; A: 48
; B: 51
.byte $20 ; frame=26 A=4 L=0
.byte $45 ; frame=26 B=8 L=2
; A: 43
; B: 19
.byte $28 ; frame=28 A=5 L=0
.byte $3D ; frame=28 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=30 A=3 L=0
.byte $5D ; frame=30 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=32 A=6 L=0
.byte $65 ; frame=32 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=34 A=0 L=0
.byte $4D ; frame=34 B=9 L=2
; A: 36
; B: 50
.byte $08 ; frame=36 A=1 L=0
.byte $05 ; frame=36 B=0 L=2
; A: 43
; B: 51
.byte $10 ; frame=38 A=2 L=0
.byte $45 ; frame=38 B=8 L=2
; A: 46
; B: 53
.byte $18 ; frame=40 A=3 L=0
.byte $3D ; frame=40 B=7 L=2
; A: 48
; B: 51
.byte $20 ; frame=42 A=4 L=0
.byte $55 ; frame=42 B=10 L=2
; A: 43
; B: 19
.byte $28 ; frame=44 A=5 L=0
.byte $3D ; frame=44 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=46 A=3 L=0
.byte $5D ; frame=46 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=48 A=6 L=0
.byte $65 ; frame=48 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=50 A=0 L=0
.byte $4D ; frame=50 B=9 L=2
; A: 36
; B: 55
.byte $08 ; frame=52 A=1 L=0
.byte $05 ; frame=52 B=0 L=2
; A: 43
; B: 58
.byte $10 ; frame=54 A=2 L=0
.byte $6D ; frame=54 B=13 L=2
; A: 51
; B: 55
.byte $18 ; frame=56 A=3 L=0
.byte $85 ; frame=56 B=16 L=2
; A: 50
; B: 53
.byte $38 ; frame=58 A=7 L=0
.byte $6D ; frame=58 B=13 L=2
; A: 46
; B: 26
.byte $40 ; frame=60 A=8 L=0
.byte $55 ; frame=60 B=10 L=2
; A: 43
; B: 50
.byte $20 ; frame=62 A=4 L=0
.byte $75 ; frame=62 B=14 L=2
; last: a=3 b=8 len=2
.byte $18 ; frame=64 A=3 L=0
.byte $45 ; frame=64 B=8 L=2
; .byte $FF ; end
track3:
; A: 24
; B: 12
; A: 31
@ -382,138 +519,8 @@ track2:
.byte $18 ; frame=64 A=3 L=0
.byte $45 ; frame=64 B=8 L=2
.byte $ff
track3:
; A: 24
; B: 12
; A: 31
; B: 24
.byte $00 ; frame=2 A=0 L=0
.byte $4D ; frame=2 B=9 L=2
; A: 36
; B: 51
.byte $08 ; frame=4 A=1 L=0
.byte $05 ; frame=4 B=0 L=2
; A: 43
; B: 50
.byte $10 ; frame=6 A=2 L=0
.byte $3D ; frame=6 B=7 L=2
; A: 46
; B: 53
.byte $18 ; frame=8 A=3 L=0
.byte $45 ; frame=8 B=8 L=2
; A: 48
; B: 51
.byte $20 ; frame=10 A=4 L=0
.byte $55 ; frame=10 B=10 L=2
; A: 43
; B: 19
.byte $28 ; frame=12 A=5 L=0
.byte $3D ; frame=12 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=14 A=3 L=0
.byte $5D ; frame=14 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=16 A=6 L=0
.byte $65 ; frame=16 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=18 A=0 L=0
.byte $4D ; frame=18 B=9 L=2
; A: 36
; B: 55
.byte $08 ; frame=20 A=1 L=0
.byte $05 ; frame=20 B=0 L=2
; A: 43
; B: 53
.byte $10 ; frame=22 A=2 L=0
.byte $6D ; frame=22 B=13 L=2
; A: 46
; B: 50
.byte $18 ; frame=24 A=3 L=0
.byte $55 ; frame=24 B=10 L=2
; A: 48
; B: 51
.byte $20 ; frame=26 A=4 L=0
.byte $45 ; frame=26 B=8 L=2
; A: 43
; B: 19
.byte $28 ; frame=28 A=5 L=0
.byte $3D ; frame=28 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=30 A=3 L=0
.byte $5D ; frame=30 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=32 A=6 L=0
.byte $65 ; frame=32 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=34 A=0 L=0
.byte $4D ; frame=34 B=9 L=2
; A: 36
; B: 50
.byte $08 ; frame=36 A=1 L=0
.byte $05 ; frame=36 B=0 L=2
; A: 43
; B: 51
.byte $10 ; frame=38 A=2 L=0
.byte $45 ; frame=38 B=8 L=2
; A: 46
; B: 53
.byte $18 ; frame=40 A=3 L=0
.byte $3D ; frame=40 B=7 L=2
; A: 48
; B: 51
.byte $20 ; frame=42 A=4 L=0
.byte $55 ; frame=42 B=10 L=2
; A: 43
; B: 19
.byte $28 ; frame=44 A=5 L=0
.byte $3D ; frame=44 B=7 L=2
; A: 41
; B: 15
.byte $18 ; frame=46 A=3 L=0
.byte $5D ; frame=46 B=11 L=2
; A: 24
; B: 12
.byte $30 ; frame=48 A=6 L=0
.byte $65 ; frame=48 B=12 L=2
; A: 31
; B: 24
.byte $00 ; frame=50 A=0 L=0
.byte $4D ; frame=50 B=9 L=2
; A: 36
; B: 55
.byte $08 ; frame=52 A=1 L=0
.byte $05 ; frame=52 B=0 L=2
; A: 43
; B: 58
.byte $10 ; frame=54 A=2 L=0
.byte $6D ; frame=54 B=13 L=2
; A: 51
; B: 55
.byte $18 ; frame=56 A=3 L=0
.byte $85 ; frame=56 B=16 L=2
; A: 50
; B: 53
.byte $38 ; frame=58 A=7 L=0
.byte $6D ; frame=58 B=13 L=2
; A: 46
; B: 26
.byte $40 ; frame=60 A=8 L=0
.byte $55 ; frame=60 B=10 L=2
; A: 43
; B: 50
.byte $20 ; frame=62 A=4 L=0
.byte $75 ; frame=62 B=14 L=2
; last: a=3 b=8 len=2
.byte $18 ; frame=64 A=3 L=0
.byte $45 ; frame=64 B=8 L=2
.byte $FF ; end
; Octave 0 : 0 0 0 0 0 0 0 0 0 0 0 0
; Octave 1 : 12 0 0 9 0 0 0 9 0 0 0 0
; Octave 2 : 32 0 2 0 0 0 0 20 0 0 0 0
@ -526,19 +533,25 @@ frequencies_low:
.byte $E8,$46,$F4,$A3,$89,$7A,$B7,$66,$6C,$D1,$5B,$8C,$36,$51,$B3,$3D,$44,$36
frequencies_high:
.byte $01,$01,$00,$00,$00,$00,$00,$00,$00,$03,$00,$02,$03,$00,$01,$00,$00,$00
lengths:
; .byte 0*4,1*4,2*4,4*4
.byte 0*4,0*4,2*4;,4*4
; total len=37
; can overlap these, makes no different when compressed though
channel_a_volume:
.byte 15,15,15,15,9,9,9,9
channel_b_volume:
.byte 9,9,9,9,5,5,5,5
lengths:
.byte 0*4,1*4,2*4,4*4
tracks_l:
.byte <track0,<track0,<track1,<track1,<track3,<track2
.byte <track0,<track0,<track1,<track1,<track2;,<track3
; assume all on same page
; tracks_h:

View File

@ -17,6 +17,10 @@
; 1033 bytes (+13) -- inline letters code
; 1029 bytes (+9) -- remove unecessary initialization in column code
; 1025 bytes (+5) -- optimize page flip
; 1022 bytes (+2) -- optimize music, merge two tracks
; 1019 bytes -- optimize music
; note we could save another 3 bytes by sorting frequencies
; but that would have been a huge pain
.include "zp.inc"
.include "hardware.inc"
@ -81,6 +85,8 @@ hgr_table_loop:
bne hgr_table_loop ; though if never use address 0 can we?
; lookup table of 0..40 but divided by 4
; in $90 to $C0 or so

View File

@ -19,7 +19,6 @@ flames:
ldx #39
lda #$f
white_line_loop:
; sta $5FD0,X
sta $3FD0,X
dex
bpl white_line_loop

View File

@ -83,6 +83,7 @@ outer_zoom_loop:
lda #76 ; Y position
sta YPOS
inner_zoom_loop:
jsr draw_wait_erase
@ -102,6 +103,4 @@ inner_zoom_loop:
bpl outer_zoom_loop ; bra
done2:
; rts
;
;.include "letters_routines.s"

View File

@ -29,7 +29,7 @@ track_smc:
ldy WHICH_TRACK ; get current track in Y
iny ; increment track
cpy #6 ; see if off end
cpy #5 ; see if off end
bne no_wrap
ldy #2 ; loop to track 1
no_wrap:
@ -37,16 +37,6 @@ no_wrap:
lda tracks_l,Y ; self-modify track
sta track_smc+1
; lda tracks_h,Y ; enforce in same page
; sta track_smc+2
; lda bamps_l,Y ; self modify B-amplitude
; sta bamp_smc+1
; lda bamps_h,Y ; enforce in same page
; sta bamp_smc+2
; lda #0 ; reset song offset
; sta SONG_OFFSET
jmp set_notes_loop ; bra ; try again in new track
@ -96,7 +86,7 @@ done_update_song:
;=================================
; coundown song
; countdown song
dec SONG_COUNTDOWN ; if length was 0, means there
; was another note starting at same

View File

@ -154,7 +154,7 @@ static int get_note(char *string, int sp, struct note_type *n, int line) {
freq=note_to_ed(n->note,n->flat,n->sharp,
n->octave);
if (freq<0) fprintf(stderr,"Bad note line %d\n",line);
n->enabled=1;
n->length=0;
n->ed_freq=freq;
@ -519,6 +519,8 @@ printf("\n");
printf("\n");
/* put these first as we use the high bit to end things? */
/* FIXME: sort these, helps with compression */
printf("frequencies_low:\n");
printf(".byte ");
for(n=0;n<notes_allocated;n++) {