pidemmät musat

This commit is contained in:
2024-08-02 10:57:55 +03:00
parent 43f8babf2e
commit 0b41ee5ca8
8 changed files with 255 additions and 73 deletions

View File

@ -1,6 +1,6 @@
%define SU_LENGTH_IN_SAMPLES 2828192
%define SU_LENGTH_IN_SAMPLES 4521776
%define SU_SAMPLE_RATE 44100
%define SU_BPM 116.
%define SU_BPM 110.
;-------------------------------------------------------------------------------
; unit struct
@ -76,7 +76,7 @@ global _su_render_song@4
_su_render_song@4:
pushad ; Stack: edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
xor eax, eax
push 1696 ; Stack: VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
push 1760 ; Stack: VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
push 1 ; Stack: RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
push eax ; Stack: GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
su_render_rowloop: ; loop through every row in the song
@ -114,11 +114,11 @@ su_render_sampleloop: ; loop through every sample in the row
pop eax ; eax = Sample, Stack: Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
inc dword [esp + 4] ; increment global time, used by delays
inc eax
cmp eax, 5702
cmp eax, 6013
jl su_render_sampleloop
pop eax ; eax = Row, Stack: GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; Stack: pushad ptr
inc eax
cmp eax, 496
cmp eax, 752
jl su_render_rowloop
; rewind the stack the entropy of multiple pop eax is probably lower than add
pop eax ; eax = GlobalTick, Stack: RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
@ -183,9 +183,9 @@ su_update_voices_skipreset:
su_update_voices_nexttrack:
pop ebx ; ebx=first voice of next instrument, Stack: ptrnrow
pop edx ; edx=patrnrow
add esi, 31
add esi, 47
inc ebp
cmp ebp,su_synth_obj + 10
cmp ebp,su_synth_obj + 9
jl su_update_voices_trackloop
ret
@ -857,11 +857,6 @@ section .su_patterns data align=1
su_patterns:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 52,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,62,1,64,1,65,1,1,1,67,1,1,1
db 69,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 53,1,1,1,1,1,1,1,1,1,1,1,1,1,64,62
db 64,1,1,1,1,1,1,1,69,1,1,1,1,1,1,1
db 33,0,0,0,33,33,33,33,0,0,33,0,0,33,0,0
db 28,0,0,0,28,28,28,28,0,0,28,0,0,28,0,0
db 26,0,0,0,26,26,26,26,0,0,26,0,0,26,0,0
@ -869,42 +864,40 @@ su_patterns:
db 28,0,0,0,28,28,28,30,0,0,30,0,0,30,0,0
db 32,0,0,0,32,32,32,32,0,0,32,0,0,32,0,0
db 33,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 45,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 40,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 45,0,0,0,45,45,45,45,0,0,45,0,0,45,0,0
db 40,0,0,0,40,40,40,40,0,0,40,0,0,40,0,0
db 38,0,0,0,38,38,38,38,0,0,38,0,0,38,0,0
db 35,0,0,0,35,35,35,35,0,0,35,0,0,35,0,0
db 40,0,0,0,40,40,40,42,0,0,42,0,0,42,0,0
db 47,0,0,0,47,47,47,47,0,0,47,0,0,47,0,0
db 21,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 40,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 44,0,0,0,44,44,44,44,0,0,44,0,0,44,0,0
db 49,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 44,0,0,0,44,44,44,44,0,0,44,0,0,44,0,0
db 64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,62,1,64,1,65,1,1,1,67,1,1,1
db 69,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 65,1,1,1,1,1,1,1,1,1,1,1,1,1,64,62
db 64,1,1,1,1,1,1,1,69,1,1,1,1,1,1,1
db 49,0,0,0,49,49,49,49,0,0,49,0,0,49,0,0
db 42,0,0,0,42,42,42,42,0,0,42,0,0,42,0,0
db 59,0,0,0,59,59,59,59,0,0,59,0,0,59,0,0
db 64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 52,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,50,1,52,1,53,1,1,1,55,1,1,1
db 57,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 65,1,1,1,1,1,1,1,1,1,1,1,1,1,52,50
db 53,1,1,1,1,1,1,1,1,1,1,1,1,1,52,50
db 52,1,1,1,1,1,1,1,57,1,1,1,1,1,1,1
db 52,0,0,0,52,52,52,52,0,0,52,0,0,52,0,0
db 57,0,0,0,57,57,57,57,0,0,57,0,0,57,0,0
db 33,1,1,1,33,33,33,33,1,1,33,1,1,33,1,1
db 32,1,1,1,32,32,32,32,1,1,32,1,1,32,1,1
db 30,1,1,1,30,30,30,30,1,1,30,1,1,30,1,1
db 45,1,1,1,45,45,45,45,1,1,45,1,1,45,1,1
db 44,1,1,1,44,44,44,44,1,1,44,1,1,44,1,1
db 42,1,1,1,42,42,42,42,1,1,42,1,1,42,1,1
db 0,0,0,0,0,0,0,0,0,0,0,0,69,1,1,1
db 73,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0
db 74,1,1,1,1,1,1,1,1,1,0,0,73,1,0,71
db 73,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 74,1,1,1,1,1,1,1,1,1,1,1,73,1,1,71
db 1,1,1,1,0,0,0,0,73,1,1,1,1,1,1,1
db 81,1,1,1,1,1,1,1,1,1,1,1,83,1,1,1
db 85,1,1,1,1,1,1,1,83,1,1,1,1,1,1,81
db 80,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,0,0,0,0,0,78,1,1,1,1,1,1,80
db 1,1,1,1,0,0,0,0,78,1,1,1,1,1,1,80
db 81,1,1,1,1,1,1,1,1,1,0,0,78,1,1,80
db 81,1,1,1,1,1,1,1,1,0,0,0,83,1,1,81
db 80,1,1,1,1,1,1,1,81,1,1,1,1,1,1,1
@ -912,6 +905,7 @@ su_patterns:
db 85,1,1,1,1,1,1,1,0,0,0,0,85,1,1,83
db 85,1,1,1,1,1,1,1,0,0,0,0,81,1,1,85
db 83,1,1,1,1,1,1,1,81,1,1,1,1,1,1,1
db 74,1,1,1,1,1,1,1,1,1,1,1,73,1,0,71
db 80,1,1,1,1,1,1,1,0,0,0,0,80,1,1,1
db 81,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 62,1,1,1,62,62,62,62,1,1,62,1,1,62,1,1
@ -922,16 +916,15 @@ su_patterns:
;-------------------------------------------------------------------------------
section .su_tracks data align=1
su_tracks:
db 21,1,1,2,3,4,5,6,1,7,7,7,7,7,7,7,7,7,7,8,8,9,10,11,12,7,7,8,8,7,7
db 13,1,1,1,1,1,14,1,1,15,15,15,15,15,15,15,15,15,15,16,16,17,18,19,20,15,15,16,16,15,15
db 0,22,1,1,1,1,22,1,1,16,16,16,16,16,16,16,16,16,16,20,20,15,15,20,23,16,16,20,20,16,16
db 0,1,24,1,1,1,24,1,1,25,25,25,25,25,25,25,25,25,25,23,23,26,26,23,27,25,25,23,23,25,25
db 0,1,1,28,29,30,31,32,1,33,33,33,33,33,33,33,33,33,33,27,27,34,34,27,1,33,33,27,27,33,33
db 0,1,1,1,1,1,1,1,1,35,35,35,35,35,35,35,35,35,35,36,36,37,37,36,36,35,35,36,36,35,35
db 0,1,1,1,1,1,1,1,1,38,38,38,38,38,38,38,38,38,38,39,39,40,40,39,39,38,38,39,39,38,38
db 0,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,0
db 0,1,1,1,1,1,1,1,1,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59
db 0,1,1,1,1,1,1,1,1,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60
db 8,1,1,1,1,1,8,1,1,2,2,2,2,2,2,2,2,2,2,3,3,4,5,6,7,2,2,3,3,2,2,2,2,2,2,3,3,4,5,6,7,2,2,3,3,2,2
db 0,9,1,1,1,1,9,1,1,10,10,10,10,10,10,10,10,10,10,11,11,12,13,14,15,10,10,11,11,10,10,10,10,10,10,11,11,12,13,14,15,10,10,11,11,10,10
db 0,1,16,1,1,1,16,1,1,11,11,11,11,11,11,11,11,11,11,15,15,10,10,15,17,11,11,15,15,11,11,11,11,11,11,15,15,10,10,15,17,11,11,15,15,11,11
db 0,1,1,18,19,20,21,22,1,23,23,23,23,23,23,23,23,23,23,17,17,24,24,17,25,23,23,17,17,23,23,23,23,23,23,17,17,24,24,17,25,23,23,17,17,23,23
db 0,1,1,26,27,28,29,30,1,31,31,31,31,31,31,31,31,31,31,25,25,32,32,25,1,31,31,25,25,31,31,31,31,31,31,25,25,32,32,25,1,31,31,25,25,31,31
db 0,1,1,1,1,1,1,1,1,33,33,33,33,33,33,33,33,33,33,34,34,35,35,34,34,33,33,34,34,33,33,33,33,33,33,34,34,35,35,34,34,33,33,34,34,33,33
db 0,1,1,1,1,1,1,1,1,1,1,1,1,36,37,36,38,39,40,41,42,43,44,45,46,47,48,49,41,36,50,36,38,39,40,41,42,43,44,45,46,47,48,49,51,52,0
db 0,1,1,1,1,1,1,1,1,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53
db 0,1,1,1,1,1,1,1,1,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54
;-------------------------------------------------------------------------------
; Sample offsets
;-------------------------------------------------------------------------------
@ -961,7 +954,7 @@ su_sample_offsets:
;-------------------------------------------------------------------------------
section .su_delay_times data align=1
su_delay_times:
dw 5230,4533,22810,45620,1116,1188,1276,1356,1422,1492,1556,1618,1140,1212,1300,1380,1446,1516,1580,1642
dw 5230,4533,24054,48109,1116,1188,1276,1356,1422,1492,1556,1618,1140,1212,1300,1380,1446,1516,1580,1642
;-------------------------------------------------------------------------------
@ -976,7 +969,7 @@ su_patch_opcodes:
;-------------------------------------------------------------------------------
section .su_patch_operands data align=1
su_patch_operands:
db 57,82,62,63,128,91,65,0,0,67,41,129,79,63,0,1,65,62,129,57,87,50,64,100,91,54,0,0,64,64,129,79,62,0,1,64,78,129,18,19,31,70,0,66,76,77,31,0,2,64,128,130,89,48,0,2,64,97,130,75,28,128,59,86,0,1,20,32,25,64,88,64,112,62,64,0,3,64,47,129,84,128,37,18,2,1,56,53,91,0,92,89,82,82,64,0,128,64,128,72,80,41,0,0,68,0,0,90,76,52,0,4,81,53,128,0,68,0,0,83,2,39,128,67,68,110,116,64,59,77,56,0,43,89,50,103,79,42,0,5,72,128,128,64,72,0,2,33,128,123,14,4,15,90
db 57,82,62,63,107,91,65,0,0,67,41,129,79,63,0,1,65,62,129,57,87,50,64,100,91,54,0,0,64,64,129,79,62,0,1,64,78,129,18,19,31,70,0,66,76,77,31,0,2,64,128,130,89,48,0,2,64,97,130,75,28,128,59,86,0,1,20,32,25,64,88,64,112,62,64,0,3,64,47,129,84,128,37,18,2,1,56,53,91,0,92,89,82,82,64,0,128,64,128,72,80,41,0,0,68,0,0,54,76,52,0,4,81,53,128,0,68,0,0,53,2,39,128,67,68,110,116,64,59,77,56,0,43,89,50,103,79,42,0,5,72,128,128,64,72,0,2,33,128,123,14,4,15,90
;-------------------------------------------------------------------------------
; Constants