d4: make it an actual tracker

This commit is contained in:
Vince Weaver 2022-11-09 23:22:57 -05:00
parent 716650fa38
commit 243abc4f10
5 changed files with 36 additions and 8 deletions

View File

@ -13,6 +13,7 @@ d4:
lda #0
sta FRAME
sta WHICH_TRACK
;===================
; music Player Setup

View File

@ -14,6 +14,7 @@
' ENDHEADER
-------
' 0
track0:
0 C 2-- G 5-- -----
1 ----- ----- -----
2 C 2-- ----- -----
@ -79,6 +80,7 @@ F ----- ----- -----
3E A#2-- ----- -----
3F ----- ----- -----
' 1
track1:
0 C 2-- G 5-- -----
1 ----- ----- -----
2 C 2-- ----- -----
@ -144,6 +146,7 @@ F ----- ----- -----
3E A#2-- ----- -----
3F ----- ----- -----
' 2
track2:
0 D#2-- D#6-- -----
1 ----- ----- -----
2 D#2-- ----- -----
@ -209,6 +212,7 @@ F ----- ----- -----
3E ----- ----- -----
3F ----- ----- -----
' 3
track3:
0 D#2-- D#4-- -----
1 ----- ----- -----
2 D#2-- ----- -----
@ -274,6 +278,7 @@ F ----- ----- -----
3E C 2-- ----- -----
3F ----- ----- -----
' 4
track4:
0 C 2-- ----- -----
1 ----- ----- -----
2 C 2-- ----- -----
@ -338,5 +343,3 @@ F ----- ----- -----
3D ----- ----- -----
3E ----- F 5-- -----
3F ----- ----- -----

View File

@ -32,7 +32,8 @@ set_notes_loop:
; load next byte
ldy SONG_OFFSET
lda tracker_song,Y
track_smc:
lda track4,Y
;==================
; see if hit end
@ -43,9 +44,22 @@ set_notes_loop:
;====================================
; if at end, loop back to beginning
asl ; reset song offset to 0
inc WHICH_TRACK
ldy WHICH_TRACK
cpy #5
bne no_wrap
ldy #1
sty WHICH_TRACK
no_wrap:
lda tracks_l,Y
sta track_smc+1
lda tracks_h,Y
sta track_smc+2
lda #0
sta SONG_OFFSET
beq set_notes_loop
beq set_notes_loop ; bra
not_end:
@ -105,4 +119,10 @@ done_update_song:
channel_a_volume:
.byte 14,14,14,14,11,11,10,10
tracks_l:
.byte <track4,<track0,<track1,<track2,<track3
tracks_h:
.byte >track4,>track0,>track1,>track2,>track3
skip_data:

View File

@ -23,7 +23,7 @@ static int total_len=0;
unsigned short frequencies[]={
//C C# D D# E F F# G G# A A# B
0x7A3,0x735,0x6CD,0x66C,0x60F,0x5B8,0x566,0x518,0x4CF,0x48A,0x449,0x40B,
0x7A3,0x735,0x6CD,0x66C,0x60F,0x5B8,0x566,0x518,0x4CF,0x48A,0x449,0x40B, //1
0x3D1,0x39A,0x366,0x336,0x307,0x2DC,0x2B3,0x28C,0x267,0x245,0x224,0x205, //2
0x1E8,0x1CD,0x1B3,0x19B,0x183,0x16E,0x159,0x146,0x133,0x122,0x112,0x102, //3
0x0F4,0x0E6,0x0D9,0x0CD,0x0C1,0x0B7,0x0AC,0x0A3,0x099,0x091,0x089,0x081, //4
@ -33,7 +33,6 @@ unsigned short frequencies[]={
//0x00F,0x00E,0x00D,0x00C,0x00C,0x00B,0x00A,0x00A,0x009,0x009,0x008,0x008,
};
// CLLNNNN
int note_to_ed(char note, int flat, int sharp, int octave) {
@ -399,6 +398,11 @@ printf("\n");
if (string[0]=='\'') continue;
if (string[0]=='-') continue;
if (string[0]=='*') continue;
if (string[0]=='t') {
if (!first) printf(".byte $ff\n");
printf("%s\n",string);
continue;
}
sp=0;

View File

@ -29,4 +29,4 @@ HGR_SCALE = $E7
COUNT = $FB
FRAME = $FC
WHICH_TRACK = $FD