I think I have the data format ready. Do you think that this would be too complex/slow to process, and can it be simplified?
I included only Square 1 channel to not to make the post too long.
Code: Select all
; Channels in track
MusicBoss:
.dw BossSQ1,BossSQ2,BossTri,BossNoise,BossDMC
; Patterns in channel
BossSQ1:
.dw BossSQ1_00,BossSQ1_00
.dw BossSQ1_01,BossSQ1_02,BossSQ1_03,BossSQ1_04
.dw BossSQ1_01,BossSQ1_02,BossSQ1_03,BossSQ1_04
.dw BossSQ1_05,BossSQ1_06,BossSQ1_05,BossSQ1_07
; Streams in Pattern
BossSQ1_00:
.dw BossSQ1_00_Note,BossSQ1_00_Volume,BossSQ1_00_Vibrato
.dw BossSQ1_00_Duty,BossSQ1_00_Len_Lo,BossSQ1_00_Len_Hi
BossSQ1_01:
.dw BossSQ1_01_Note,BossSQ1_01_Volume,BossSQ1_01_Vibrato
.dw BossSQ1_01_Duty,BossSQ1_01_Len_Lo,BossSQ1_01_Len_Hi
BossSQ1_02:
.dw BossSQ1_02_Note,BossSQ1_02_Volume,BossSQ1_02_Vibrato
.dw BossSQ1_02_Duty,BossSQ1_02_Len_Lo,BossSQ1_02_Len_Hi
BossSQ1_03:
.dw BossSQ1_03_Note,BossSQ1_03_Volume,BossSQ1_03_Vibrato
.dw BossSQ1_03_Duty,BossSQ1_03_Len_Lo,BossSQ1_03_Len_Hi
BossSQ1_04:
.dw BossSQ1_04_Note,BossSQ1_04_Volume,BossSQ1_04_Vibrato
.dw BossSQ1_04_Duty,BossSQ1_04_Len_Lo,BossSQ1_04_Len_Hi
BossSQ1_05:
.dw BossSQ1_05_Note,BossSQ1_05_Volume,BossSQ1_05_Vibrato
.dw BossSQ1_05_Duty,BossSQ1_05_Len_Lo,BossSQ1_05_Len_Hi
BossSQ1_06:
.dw BossSQ1_06_Note,BossSQ1_06_Volume,BossSQ1_06_Vibrato
.dw BossSQ1_06_Duty,BossSQ1_06_Len_Lo,BossSQ1_06_Len_Hi
BossSQ1_07:
.dw BossSQ1_07_Note,BossSQ1_07_Volume,BossSQ1_07_Vibrato
.dw BossSQ1_07_Duty,BossSQ1_07_Len_Lo,BossSQ1_07_Len_Hi
And here is example of one pattern's streams:
Code: Select all
BossSQ1_00_Note:
.db B_2,As2,A_2,Gs2 ; Notes represent a value from range of $00 - $5E
.db B_2,As2,A_2,Gs2 ; This value is used in X or Y incremented addressing
.db B_2,As2,A_2,Gs2 ; to get the correct period value for the note
.db B_2,As2,A_2,Gs2
BossSQ1_00_Volume:
.db SQVolEnv00,SQVolEnv00,SQVolEnv00,SQVolEnv00 ; Volume, pitch and duty envelopes are in my previous post
.db SQVolEnv00,SQVolEnv00,SQVolEnv00,SQVolEnv00
.db SQVolEnv00,SQVolEnv00,SQVolEnv00,SQVolEnv00
.db SQVolEnv00,SQVolEnv00,SQVolEnv00,SQVolEnv00
BossSQ1_00_Vibrato:
.db SQPtcEnv00,SQPtcEnv00,SQPtcEnv00,SQPtcEnv00
.db SQPtcEnv00,SQPtcEnv00,SQPtcEnv00,SQPtcEnv00
.db SQPtcEnv00,SQPtcEnv00,SQPtcEnv00,SQPtcEnv00
.db SQPtcEnv00,SQPtcEnv00,SQPtcEnv00,SQPtcEnv00
BossSQ1_00_Duty:
.db SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1
.db SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1
.db SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1
.db SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1
BossSQ1_00_Len_Lo:
.db $06,$07,$06,$07
.db $06,$07,$06,$07
.db $06,$07,$06,$07
.db $06,$07,$06,$07
BossSQ1_00_Len_Hi:
.db $00,$00,$00,$00 ; I have these just in case
.db $00,$00,$00,$00 ; Not sure if I'll ever need these
.db $00,$00,$00,$00
.db $00,$00,$00,$00
BossSQ1_01_Note:
.db B_2,Cs3,D_3,Fs3,E_3,D_3,A_2
BossSQ1_01_Volume:
.db SQVolEnv02,SQVolEnv02,SQVolEnv02,SQVolEnv02,SQVolEnv02,SQVolEnv02,SQVolEnv02
BossSQ1_01_Vibrato:
.db SQPtcEnv00,SQPtcEnv00,SQPtcEnv01,SQPtcEnv01,SQPtcEnv01,SQPtcEnv01,SQPtcEnv01
BossSQ1_01_Duty:
.db SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1,SQ_Duty1
BossSQ1_01_Len_Lo:
.db $06,$07,$0D,$13,$14,$1A,$0C
BossSQ1_01_Len_Hi:
.db $00,$00,$00,$00,$00,$00,$00
BossSQ1_02_Note:
.db B_2
BossSQ1_02_Volume:
.db SQVolEnv02
BossSQ1_02_Vibrato:
.db SQPtcEnv02
BossSQ1_02_Duty:
.db SQ_Duty1
BossSQ1_02_Len_Lo:
.db $68
BossSQ1_02_Len_Hi:
.db $00