diff --git a/.gitignore b/.gitignore index 940794e..0d6828b 100644 --- a/.gitignore +++ b/.gitignore @@ -286,3 +286,7 @@ __pycache__/ *.btm.cs *.odx.cs *.xsd.cs + +# Ignore output directories +out/*.exe +out.html \ No newline at end of file diff --git a/leviathan.vcxproj b/leviathan.vcxproj index 6c4d860..dc331d3 100644 --- a/leviathan.vcxproj +++ b/leviathan.vcxproj @@ -1,616 +1,616 @@ - - - - - Debug - Win32 - - - Editor - Win32 - - - Heavy Release - Win32 - - - Release - Win32 - - - Snapshot - Win32 - - - - {59C1D4F3-AE93-4A0A-B4FE-60841CA865E5} - Leviathan 2.0 - 10.0 - - - - Application - v143 - false - - - Application - v143 - false - - - Application - v143 - false - - - Application - v143 - false - - - Application - v143 - false - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>12.0.30501.0 - - - out\ - bin\debug\ - false - $(SolutionDir);$(ExecutablePath) - leviathan-debug - false - - - out\ - bin\debug\ - false - $(SolutionDir);$(ExecutablePath) - leviathan-debug - false - - - out\ - bin\release\ - - - - - $(SolutionDir);$(ExecutablePath) - leviathan-release - true - - - out\ - bin\release\ - - - - - $(SolutionDir);$(ExecutablePath) - leviathan-release - false - true - - - out\ - bin\release\ - - - - - $(SolutionDir);$(ExecutablePath) - leviathan-snapshot - true - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\bin/Debug/Leviathan.tlb - - - - MinSpace - ../;%(AdditionalIncludeDirectories) - _DEBUG;WINDOWS;DEBUG;SIMD;A32BITS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreaded - - - bin\debug\ - bin\debug\ - bin\debug\ - false - Level3 - false - true - ProgramDatabase - CompileAsCpp - OnlyExplicitInline - true - Size - true - false - false - StdCall - stdcpp14 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;opengl32.lib;src/4klang/4klang.obj;%(AdditionalDependencies) - out/leviathan-debug.exe - true - true - bin\debug\$(TargetName).pdb - Windows - false - - MachineX86 - entrypoint - true - bin\debug\$(TargetName).pgd - - - true - $(OutDir)Leviathan.bsc - - - false - - - shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag -shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag - Minify user-supplied shader files. - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\bin/Debug/Leviathan.tlb - - - - - MinSpace - ../;%(AdditionalIncludeDirectories) - EDITOR_CONTROLS;_DEBUG;WINDOWS;DEBUG;SIMD;A32BITS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreaded - - - bin\debug\ - bin\debug\ - bin\debug\ - false - Level3 - false - true - ProgramDatabase - CompileAsCpp - OnlyExplicitInline - true - Size - true - Sync - false - StdCall - false - - - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;opengl32.lib;src/4klang/4klang.obj;%(AdditionalDependencies) - out/leviathan-debug.exe - true - true - bin\debug\$(TargetName).pdb - Console - false - - - MachineX86 - - - true - bin\debug\$(TargetName).pgd - - - - - - - - true - $(OutDir)Leviathan.bsc - - - false - - - shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag -shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag - Minify user-supplied shader files. - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\bin/Release/Leviathan.tlb - - - - MinSpace - OnlyExplicitInline - true - Size - ../;%(AdditionalIncludeDirectories) - WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;WINDOWS_IGNORE_PACKING_MISMATCH;%(PreprocessorDefinitions) - false - false - MultiThreaded - 1Byte - false - Fast - bin\Release\Leviathan.pch - AssemblyAndSourceCode - bin\release\ - bin\release\ - bin\release\ - Level3 - false - true - StdCall - CompileAsCpp - true - false - false - Default - NotSet - true - false - ProgramDatabase - - - false - /GR- /EHa- %(AdditionalOptions) - - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - /CRINKLER /RANGE:opengl32 /HASHTRIES:300 /COMPMODE:SLOW /ORDERTRIES:9000 /REPORT:out.html /PROGRESSGUI /HASHSIZE:1000 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS /TRUNCATEFLOATS:32 %(AdditionalOptions) - opengl32.lib;winmm.lib;src/4klang/4klang.obj;%(AdditionalDependencies) - out\leviathan-release.exe - - - true - Windows - entrypoint - - - - - - - - - - - bin\release\$(TargetName).pdb - - - - - - - - - - true - .\bin/Release/Leviathan.bsc - - - false - - - shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag -shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag - Minify user-supplied shader files. - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\bin/Release/Leviathan.tlb - - - - - /GR- /EHa- %(AdditionalOptions) - MinSpace - OnlyExplicitInline - true - Size - ../;%(AdditionalIncludeDirectories) - WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - false - MultiThreaded - 1Byte - false - Fast - bin\Release\Leviathan.pch - AssemblyAndSourceCode - bin\release\ - bin\release\ - bin\release\ - Level3 - false - true - StdCall - CompileAsCpp - true - false - false - Default - NotSet - true - false - ProgramDatabase - - - false - - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - /CRINKLER /RANGE:opengl32 /HASHTRIES:1000 /COMPMODE:VERYSLOW /ORDERTRIES:30000 /REPORT:out.html /PROGRESSGUI /HASHSIZE:1000 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS %(AdditionalOptions) - opengl32.lib;winmm.lib;src/4klang/4klang.obj;%(AdditionalDependencies) - out\leviathan-release.exe - - - true - Windows - entrypoint - - - - - - - - - - - - - bin\release\$(TargetName).pdb - - - - - - - - - - true - .\bin/Release/Leviathan.bsc - - - false - - - shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag - Minify user-supplied shader files. - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\bin/Release/Leviathan.tlb - - - - - MinSpace - Disabled - true - Size - ../;%(AdditionalIncludeDirectories) - WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - false - MultiThreaded - 1Byte - false - Fast - bin\Release\Leviathan.pch - AssemblyAndSourceCode - bin\release\ - bin\release\ - bin\release\ - Level3 - false - true - StdCall - CompileAsCpp - true - false - false - - - NotSet - true - false - ProgramDatabase - - - - - false - /GR- /EHa- %(AdditionalOptions) - false - - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - /CRINKLER /RANGE:opengl32 /HASHTRIES:100 /COMPMODE:INSTANT /ORDERTRIES:2000 /PROGRESSGUI /HASHSIZE:100 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS %(AdditionalOptions) - opengl32.lib;winmm.lib;src/4klang/4klang.obj;%(AdditionalDependencies) - out\leviathan-snapshot.exe - - - true - Windows - entrypoint - - - - - - - - - - - - - bin\release\$(TargetName).pdb - - - - - - - - - - - - true - .\bin/Release/Leviathan.bsc - - - false - - - shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag -shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag - Minify user-supplied shader files. - - - - - true - true - true - - - - false - false - false - - - - - - true - false - true - true - true - - - - - true - true - true - - - - false - true - true - true - true - - - - - true - true - true - true - true - - - - true - true - true - true - true - - - - - + + + + + Debug + Win32 + + + Editor + Win32 + + + Heavy Release + Win32 + + + Release + Win32 + + + Snapshot + Win32 + + + + {59C1D4F3-AE93-4A0A-B4FE-60841CA865E5} + Leviathan 2.0 + 10.0 + + + + Application + v143 + false + + + Application + v143 + false + + + Application + v143 + false + + + Application + v143 + false + + + Application + v143 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + + + out\ + bin\debug\ + false + $(SolutionDir);$(ExecutablePath) + leviathan-debug + false + + + out\ + bin\debug\ + false + $(SolutionDir);$(ExecutablePath) + leviathan-debug + false + + + out\ + bin\release\ + + + + + $(SolutionDir);$(ExecutablePath) + leviathan-release + true + + + out\ + bin\release\ + + + + + $(SolutionDir);$(ExecutablePath) + leviathan-release + false + true + + + out\ + bin\release\ + + + + + $(SolutionDir);$(ExecutablePath) + leviathan-snapshot + true + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\bin/Debug/Leviathan.tlb + + + + MinSpace + ../;%(AdditionalIncludeDirectories) + _DEBUG;WINDOWS;DEBUG;SIMD;A32BITS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreaded + + + bin\debug\ + bin\debug\ + bin\debug\ + false + Level3 + false + true + ProgramDatabase + CompileAsCpp + OnlyExplicitInline + true + Size + true + false + false + StdCall + stdcpp14 + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;opengl32.lib;src/sointu/song.obj;%(AdditionalDependencies) + out/leviathan-debug.exe + true + true + bin\debug\$(TargetName).pdb + Windows + false + + MachineX86 + entrypoint + true + bin\debug\$(TargetName).pgd + + + true + $(OutDir)Leviathan.bsc + + + false + + + shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag +shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag + Minify user-supplied shader files. + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\bin/Debug/Leviathan.tlb + + + + + MinSpace + ../;%(AdditionalIncludeDirectories) + EDITOR_CONTROLS;_DEBUG;WINDOWS;DEBUG;SIMD;A32BITS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreaded + + + bin\debug\ + bin\debug\ + bin\debug\ + false + Level3 + false + true + ProgramDatabase + CompileAsCpp + OnlyExplicitInline + true + Size + true + Sync + false + StdCall + false + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;opengl32.lib;src/sointu/song.obj;%(AdditionalDependencies) + out/leviathan-debug.exe + true + true + bin\debug\$(TargetName).pdb + Console + false + + + MachineX86 + + + true + bin\debug\$(TargetName).pgd + + + + + + + + true + $(OutDir)Leviathan.bsc + + + false + + + shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag +shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag + Minify user-supplied shader files. + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\bin/Release/Leviathan.tlb + + + + MinSpace + OnlyExplicitInline + true + Size + ../;%(AdditionalIncludeDirectories) + WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;WINDOWS_IGNORE_PACKING_MISMATCH;%(PreprocessorDefinitions) + false + false + MultiThreaded + 1Byte + false + Fast + bin\Release\Leviathan.pch + AssemblyAndSourceCode + bin\release\ + bin\release\ + bin\release\ + Level3 + false + true + StdCall + CompileAsCpp + true + false + false + Default + NotSet + true + false + ProgramDatabase + + + false + /GR- /EHa- %(AdditionalOptions) + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /CRINKLER /RANGE:opengl32 /HASHTRIES:300 /COMPMODE:SLOW /ORDERTRIES:9000 /REPORT:out.html /PROGRESSGUI /HASHSIZE:1000 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS /TRUNCATEFLOATS:32 %(AdditionalOptions) + opengl32.lib;winmm.lib;src/sointu/song.obj;%(AdditionalDependencies) + out\leviathan-release.exe + + + true + Windows + entrypoint + + + + + + + + + + + bin\release\$(TargetName).pdb + + + + + + + + + + true + .\bin/Release/Leviathan.bsc + + + false + + + shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag +shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag + Minify user-supplied shader files. + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\bin/Release/Leviathan.tlb + + + + + /GR- /EHa- %(AdditionalOptions) + MinSpace + OnlyExplicitInline + true + Size + ../;%(AdditionalIncludeDirectories) + WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + false + MultiThreaded + 1Byte + false + Fast + bin\Release\Leviathan.pch + AssemblyAndSourceCode + bin\release\ + bin\release\ + bin\release\ + Level3 + false + true + StdCall + CompileAsCpp + true + false + false + Default + NotSet + true + false + ProgramDatabase + + + false + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /CRINKLER /RANGE:opengl32 /HASHTRIES:1000 /COMPMODE:VERYSLOW /ORDERTRIES:30000 /REPORT:out.html /PROGRESSGUI /HASHSIZE:1000 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS %(AdditionalOptions) + opengl32.lib;winmm.lib;src/sointu/song.obj;%(AdditionalDependencies) + out\leviathan-release.exe + + + true + Windows + entrypoint + + + + + + + + + + + + + bin\release\$(TargetName).pdb + + + + + + + + + + true + .\bin/Release/Leviathan.bsc + + + false + + + shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag + Minify user-supplied shader files. + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\bin/Release/Leviathan.tlb + + + + + MinSpace + Disabled + true + Size + ../;%(AdditionalIncludeDirectories) + WINDOWS;A32BITS;SIMD;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + false + MultiThreaded + 1Byte + false + Fast + bin\Release\Leviathan.pch + AssemblyAndSourceCode + bin\release\ + bin\release\ + bin\release\ + Level3 + false + true + StdCall + CompileAsCpp + true + false + false + + + NotSet + true + false + ProgramDatabase + + + + + false + /GR- /EHa- %(AdditionalOptions) + false + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /CRINKLER /RANGE:opengl32 /HASHTRIES:100 /COMPMODE:INSTANT /ORDERTRIES:2000 /PROGRESSGUI /HASHSIZE:100 /UNSAFEIMPORT /UNALIGNCODE /SATURATE /NOINITIALIZERS /TRANSFORM:CALLS %(AdditionalOptions) + opengl32.lib;winmm.lib;src/sointu/song.obj;%(AdditionalDependencies) + out\leviathan-snapshot.exe + + + true + Windows + entrypoint + + + + + + + + + + + + + bin\release\$(TargetName).pdb + + + + + + + + + + + + true + .\bin/Release/Leviathan.bsc + + + false + + + shader_minifier.exe -v -o src\shaders\fragment.inl src\shaders\fragment.frag shader_minifier.exe -v -o src\shaders\post.inl src\shaders\post.frag + Minify user-supplied shader files. + + + + + true + true + true + + + + false + false + false + + + + + + true + false + true + true + true + + + + + true + true + true + + + + false + true + true + true + true + + + + + true + true + true + true + true + + + + true + true + true + true + true + + + + \ No newline at end of file diff --git a/leviathan.vcxproj.filters b/leviathan.vcxproj.filters index bfe54a0..c84e9d0 100644 --- a/leviathan.vcxproj.filters +++ b/leviathan.vcxproj.filters @@ -1,43 +1,46 @@ - - - - - - - - - - - - - ext - - - ext - - - - - - - shaders - - - shaders - - - shaders - - - shaders - - - - - {3ade9a72-96b0-4936-93c4-4926808a1ab2} - - - {84f225d6-acf8-4151-aab3-e246410cdeba} - - + + + + + + + + + + + + ext + + + ext + + + + + + + + shaders + + + shaders + + + shaders + + + shaders + + + + + {3ade9a72-96b0-4936-93c4-4926808a1ab2} + + + {84f225d6-acf8-4151-aab3-e246410cdeba} + + + + + \ No newline at end of file diff --git a/nasm.exe b/nasm.exe new file mode 100644 index 0000000..2db7320 Binary files /dev/null and b/nasm.exe differ diff --git a/out.html b/out.html deleted file mode 100644 index 2318041..0000000 --- a/out.html +++ /dev/null @@ -1,4 +0,0 @@ -Crinkler compression report

Crinkler compression report

Report for file out\leviathan-release.exe generated by Crinkler 2.1a on Thu Aug 8 22:25:37 2024 -

Options: /SUBSYSTEM:WINDOWS /ENTRY:entrypoint /COMPMODE:SLOW /SATURATE /HASHSIZE:1000 /HASHTRIES:300 /ORDERTRIES:9000 /RANGE:opengl32 /UNSAFEIMPORT /TRANSFORM:CALLS /TRUNCATEFLOATS:32 /UNALIGNCODE /NOINITIALIZERS

Output file size: 4377

-
Bits per byte:                                          
0.10.512357912

-collapsed sections globals sections + globals globals expanded sections + globals expanded 
 AddressLabel nameSizeComp. sizeRatio
-00420000 Code sections17811059.2159.5%
-00420000 call detransform:ct2424.00100.0%
-00420000 _CallTrans2424.00100.0%
 00420000 _CallTrans65.4891.3%
 00420000 
5F                              POP             EDI
 00420001 
B91A000000                      MOV             ECX, 0x0
 00420006 tloop1818.52102.9%
 00420006 
B0E8                            MOV             AL, 0xE8
 00420008 
AE                              SCASB           
 00420009 
75FB                            JNZ             tloop
 0042000B 
8B07                            MOV             EAX, [EDI]
 0042000D 
98                              CWDE            
 0042000E 
3B07                            CMP             EAX, [EDI]
 00420010 
75F4                            JNZ             tloop
 00420012 
29F8                            SUB             EAX, EDI
 00420014 
98                              CWDE            
 00420015 
AB                              STOSD           
 00420016 
E2EE                            LOOP            tloop
 00420018 _CallTransEnd   
-00420018 Crinkler import:.text132112.5585.3%
-00420018 _Import132112.5585.3%
 00420018 _Import2923.0179.3%
 00420018 
BB0D014000                      MOV             EBX, _HeaderHashes
 0042001D 
BEF5064200                      MOV             ESI, _DLLNames
 00420022 
BF0000B101                      MOV             EDI, _ImportList
 00420027 
58                              POP             EAX
 00420028 
8B400C                          MOV             EAX, [EAX+0xC]
 0042002B 
8B400C                          MOV             EAX, [EAX+0xC]
 0042002E 
8B00                            MOV             EAX, [EAX]
 00420030 
8B00                            MOV             EAX, [EAX]
 00420032 
8B6818                          MOV             EBP, [EAX+0x18]
 00420035 DLLLoop44.68116.9%
 00420035 
31C0                            XOR             EAX, EAX
 00420037 
AC                              LODSB           
 00420038 
91                              XCHG            ECX, EAX
 00420039 HashLoop11.15115.4%
 00420039 
60                              PUSHA           
 0042003A GetProcAddress1310.8883.7%
 0042003A 
8B453C                          MOV             EAX, [EBP+0x3C]
 0042003D 
01E8                            ADD             EAX, EBP
 0042003F 
8B5078                          MOV             EDX, [EAX+0x78]
 00420042 
01EA                            ADD             EDX, EBP
 00420044 
8B4A18                          MOV             ECX, [EDX+0x18]
 00420047 ScanProcedureNamesLoop1310.3479.6%
 00420047 
8B4220                          MOV             EAX, [EDX+0x20]
 0042004A 
01E8                            ADD             EAX, EBP
 0042004C 
8B7488FC                        MOV             ESI, [EAX+ECX*4-0x4]
 00420050 
01EE                            ADD             ESI, EBP
 00420052 
31FF                            XOR             EDI, EDI
 00420054 CalculateHashLoop3730.5682.6%
 00420054 
C1C706                          ROL             EDI, 0x6
 00420057 
31C0                            XOR             EAX, EAX
 00420059 
AC                              LODSB           
 0042005A 
31C7                            XOR             EDI, EAX
 0042005C 
48                              DEC             EAX
 0042005D 
7DF5                            JGE             CalculateHashLoop
 0042005F 
3B3B                            CMP             EDI, [EBX]
 00420061 
E0E4                            LOOPNZ          ScanProcedureNamesLoop
 00420063 
8B4224                          MOV             EAX, [EDX+0x24]
 00420066 
01E8                            ADD             EAX, EBP
 00420068 
668B0C48                        MOV             CX, [EAX+ECX*2]
 0042006C 
8B421C                          MOV             EAX, [EDX+0x1C]
 0042006F 
01E8                            ADD             EAX, EBP
 00420071 
8D0488                          LEA             EAX, [EAX+ECX*4]
 00420074 
89442414                        MOV             [ESP+0x14], EAX
 00420078 
61                              POPA            
 00420079 OrdinalLoop1816.0489.1%
 00420079 
8B02                            MOV             EAX, [EDX]
 0042007B 
01E8                            ADD             EAX, EBP
 0042007D 
83C204                          ADD             EDX, 0x4
 00420080 
AB                              STOSD           
 00420081 
FE0E                            DEC             BYTE [ESI]
 00420083 
75F4                            JNZ             OrdinalLoop
 00420085 
46                              INC             ESI
 00420086 
83C304                          ADD             EBX, 0x4
 00420089 
E2AE                            LOOP            HashLoop
 0042008B LoadDLL87.6095.0%
 0042008B 
56                              PUSH            ESI
 0042008C 
FF150800B101                    CALL            [__imp__LoadLibraryA@4]
 00420092 
95                              XCHG            EBP, EAX
 00420093 NextDLL98.2992.1%
 00420093 
AC                              LODSB           
 00420094 
FEC8                            DEC             AL
 00420096 
79FB                            JNS             NextDLL
 00420098 
FEC0                            INC             AL
 0042009A 
7499                            JZ              DLLLoop
-0042009C MAIN.OBJ:.main325176.7354.4%
-0042009C ?entrypoint@@YGXXZ325176.7354.4%
 0042009C ?entrypoint@@YGXXZ325176.7354.4%
 0042009C 
53                              PUSH            EBX
 0042009D 
55                              PUSH            EBP
 0042009E 
56                              PUSH            ESI
 0042009F 
57                              PUSH            EDI
 004200A0 
6A04                            PUSH            0x4
 004200A2 
6868114200                      PUSH            ?screenSettings@@3U_devicemodeA@@A
 004200A7 
FF150C00B101                    CALL            [__imp__ChangeDisplaySettingsA@8]
 004200AD 
33ED                            XOR             EBP, EBP
 004200AF 
55                              PUSH            EBP
 004200B0 
FF152000B101                    CALL            [__imp__ShowCursor@4]
 004200B6 
55                              PUSH            EBP
 004200B7 
55                              PUSH            EBP
 004200B8 
55                              PUSH            EBP
 004200B9 
55                              PUSH            EBP
 004200BA 
55                              PUSH            EBP
 004200BB 
55                              PUSH            EBP
 004200BC 
55                              PUSH            EBP
 004200BD 
55                              PUSH            EBP
 004200BE 
6800000091                      PUSH            0x91000000
 004200C3 
55                              PUSH            EBP
 004200C4 
6818C00000                      PUSH            0xC018
 004200C9 
55                              PUSH            EBP
 004200CA 
FF151000B101                    CALL            [__imp__CreateWindowExA@48]
 004200D0 
50                              PUSH            EAX
 004200D1 
FF151800B101                    CALL            [__imp__GetDC@4]
 004200D7 
8BF0                            MOV             ESI, EAX
 004200D9 
B83C114200                      MOV             EAX, ?pfd@@3UtagPIXELFORMATDESCRIPTOR@@B
 004200DE 
50                              PUSH            EAX
 004200DF 
50                              PUSH            EAX
 004200E0 
56                              PUSH            ESI
 004200E1 
FF152400B101                    CALL            [__imp__ChoosePixelFormat@8]
 004200E7 
50                              PUSH            EAX
 004200E8 
56                              PUSH            ESI
 004200E9 
FF152800B101                    CALL            [__imp__SetPixelFormat@12]
 004200EF 
56                              PUSH            ESI
 004200F0 
FF15A801B101                    CALL            [__imp__wglCreateContext@4]
 004200F6 
50                              PUSH            EAX
 004200F7 
56                              PUSH            ESI
 004200F8 
FF15D401B101                    CALL            [__imp__wglMakeCurrent@8]
 004200FE 
8B3DD001B101                    MOV             EDI, [__imp__wglGetProcAddress@4]
 00420104 
6868124200                      PUSH            ?fragment_frag@@3PBDB
 00420109 
6A01                            PUSH            0x1
 0042010B 
68308B0000                      PUSH            0x8B30
 00420110 
6830124200                      PUSH            $SG57658
 00420115 
FFD7                            CALL            EDI
 00420117 
FFD0                            CALL            EAX
 00420119 
55                              PUSH            EBP
 0042011A 
55                              PUSH            EBP
 0042011B 
6800294200                      PUSH            ?lpSoundBuffer@@3PAFA
 00420120 
6849064200                      PUSH            __4klang_render@4
 00420125 
55                              PUSH            EBP
 00420126 
55                              PUSH            EBP
 00420127 
A30431B001                      MOV             [?pidMain@@3HA], EAX
 0042012C 
FF150000B101                    CALL            [__imp__CreateThread@24]
 00420132 
55                              PUSH            EBP
 00420133 
55                              PUSH            EBP
 00420134 
55                              PUSH            EBP
 00420135 
6850074200                      PUSH            ?WaveFMT@@3UtWAVEFORMATEX@@A
 0042013A 
6AFF                            PUSH            -0x1
 0042013C 
680031B001                      PUSH            ?hWaveOut@@3PAUHWAVEOUT__@@A
 00420141 
FF15DC01B101                    CALL            [__imp__waveOutOpen@24]
 00420147 
6A20                            PUSH            0x20
 00420149 
BB04124200                      MOV             EBX, ?WaveHDR@@3Uwavehdr_tag@@A
 0042014E 
53                              PUSH            EBX
 0042014F 
FF350031B001                    PUSH            DWORD [?hWaveOut@@3PAUHWAVEOUT__@@A]
 00420155 
FF15E001B101                    CALL            [__imp__waveOutPrepareHeader@12]
 0042015B 
6A20                            PUSH            0x20
 0042015D 
53                              PUSH            EBX
 0042015E 
FF350031B001                    PUSH            DWORD [?hWaveOut@@3PAUHWAVEOUT__@@A]
 00420164 
FF15E401B101                    CALL            [__imp__waveOutWrite@12]
 0042016A 
6A01                            PUSH            0x1
 0042016C 
55                              PUSH            EBP
 0042016D 
55                              PUSH            EBP
 0042016E 
55                              PUSH            EBP
 0042016F 
55                              PUSH            EBP
 00420170 
FF151C00B101                    CALL            [__imp__PeekMessageA@20]
 00420176 
FF350431B001                    PUSH            DWORD [?pidMain@@3HA]
 0042017C 
6848124200                      PUSH            $SG57659
 00420181 
FFD7                            CALL            EDI
 00420183 
FFD0                            CALL            EAX
 00420185 
6A0C                            PUSH            0xC
 00420187 
6824124200                      PUSH            ?MMTime@@3Ummtime_tag@@A
 0042018C 
FF350031B001                    PUSH            DWORD [?hWaveOut@@3PAUHWAVEOUT__@@A]
 00420192 
FF15D801B101                    CALL            [__imp__waveOutGetPosition@12]
 00420198 
FF3528124200                    PUSH            DWORD [?MMTime@@3Ummtime_tag@@A+0x4]
 0042019E 
55                              PUSH            EBP
 0042019F 
6858124200                      PUSH            $SG57660
 004201A4 
FFD7                            CALL            EDI
 004201A6 
FFD0                            CALL            EAX
 004201A8 
6A01                            PUSH            0x1
 004201AA 
6A01                            PUSH            0x1
 004201AC 
6AFF                            PUSH            -0x1
 004201AE 
6AFF                            PUSH            -0x1
 004201B0 
FF153000B101                    CALL            [__imp__glRects@16]
 004201B6 
56                              PUSH            ESI
 004201B7 
FF152C00B101                    CALL            [__imp__SwapBuffers@4]
 004201BD 
6A1B                            PUSH            0x1B
 004201BF 
FF151400B101                    CALL            [__imp__GetAsyncKeyState@4]
 004201C5 
6685C0                          TEST            AX, AX
 004201C8 
750C                            JNZ             0x4201D6
 004201CA 
813D2812420000825B00            CMP             DWORD [?MMTime@@3Ummtime_tag@@A+0x4], 0x5B8200
 004201D4 
7294                            JB              0x42016A
 004201D6 
55                              PUSH            EBP
 004201D7 
FF150400B101                    CALL            [__imp__ExitProcess@4]
 004201DD 
5F                              POP             EDI
 004201DE 
5E                              POP             ESI
 004201DF 
5D                              POP             EBP
 004201E0 
5B                              POP             EBX
 004201E1 $LN12   
 004201E1 $LN11   
-004201E1 4KLANG.OBJ:.g4kcodx3923.7560.9%
-004201E1 go4kRenderVoices3923.7560.9%
 004201E1 go4kRenderVoices1916.7187.9%
 004201E1 
51                              PUSH            ECX
 004201E2 
53                              PUSH            EBX
 004201E3 
56                              PUSH            ESI
 004201E4 
E8B9020000                      CALL            go4k_VM_process
 004201E9 
8B01                            MOV             EAX, [ECX]
 004201EB 
3C04                            CMP             AL, 0x4
 004201ED 
7505                            JNZ             go4kRenderVoices_next
 004201EF 
31C0                            XOR             EAX, EAX
 004201F1 
8941FC                          MOV             [ECX-0x4], EAX
 004201F4 go4kRenderVoices_next184.9927.7%
 004201F4 
5E                              POP             ESI
 004201F5 
5B                              POP             EBX
 004201F6 
E8B9020000                      CALL            go4k_VM_process
 004201FB 
8B01                            MOV             EAX, [ECX]
 004201FD 
3C04                            CMP             AL, 0x4
 004201FF 
7505                            JNZ             go4k_render_instrument_next2
 00420201 
31C0                            XOR             EAX, EAX
 00420203 
8941FC                          MOV             [ECX-0x4], EAX
 00420206 go4k_render_instrument_next222.05102.6%
 00420206 
59                              POP             ECX
 00420207 
C3                              RET             
-00420208 4KLANG.OBJ:.g4kcodg5725.2244.2%
-00420208 _go4kFOP_func@05725.2244.2%
 00420208 _go4kFOP_func@074.5264.6%
 00420208 
6A01                            PUSH            0x1
 0042020A 
E887040000                      CALL            go4kTransformValues
 0042020F go4kFOP_func_pop66.48108.1%
 0042020F 
48                              DEC             EAX
 00420210 
7503                            JNZ             go4kFOP_func_addp
 00420212 
DDD8                            FSTP            ST(0)
 00420214 
C3                              RET             
 00420215 go4kFOP_func_addp63.8464.0%
 00420215 
48                              DEC             EAX
 00420216 
7503                            JNZ             go4kFOP_func_mulp
 00420218 
DEC1                            FADDP           
 0042021A 
C3                              RET             
 0042021B go4kFOP_func_mulp61.7729.5%
 0042021B 
48                              DEC             EAX
 0042021C 
7503                            JNZ             go4kFOP_func_push
 0042021E 
DEC9                            FMULP           
 00420220 
C3                              RET             
 00420221 go4kFOP_func_push62.3338.9%
 00420221 
48                              DEC             EAX
 00420222 
7503                            JNZ             go4kFOP_func_xch
 00420224 
D9C0                            FLD             ST(0)
 00420226 
C3                              RET             
 00420227 go4kFOP_func_xch60.9716.2%
 00420227 
48                              DEC             EAX
 00420228 
7503                            JNZ             go4kFOP_func_add
 0042022A 
D9C9                            FXCH            
 0042022C 
C3                              RET             
 0042022D go4kFOP_func_add61.3121.9%
 0042022D 
48                              DEC             EAX
 0042022E 
7503                            JNZ             go4kFOP_func_mul
 00420230 
D8C1                            FADD            ST, ST(1)
 00420232 
C3                              RET             
 00420233 go4kFOP_func_mul60.8614.4%
 00420233 
48                              DEC             EAX
 00420234 
7503                            JNZ             go4kFOP_func_addp2
 00420236 
D8C9                            FMUL            ST, ST(1)
 00420238 
C3                              RET             
 00420239 go4kFOP_func_addp251.3426.9%
 00420239 
48                              DEC             EAX
 0042023A 
7503                            JNZ             0x42023F
 0042023C 
DEC2                            FADDP           ST(2), ST
 0042023E go4kFOP_func_dummy31.7859.2%
 0042023E 
DEC2                            FADDP           ST(2), ST
 00420240 
C3                              RET             
-00420241 4KLANG.OBJ:.g4kcodi4332.5975.8%
-00420241 _go4kFSTG_func@04332.5975.8%
 00420241 _go4kFSTG_func@0158.8458.9%
 00420241 
6A05                            PUSH            0x5
 00420243 
E887040000                      CALL            go4kTransformValues
 00420248 
8B41FC                          MOV             EAX, [ECX-0x4]
 0042024B 
85C0                            TEST            EAX, EAX
 0042024D 
7501                            JNZ             go4kFSTG_func_do
 0042024F 
C3                              RET             
 00420250 go4kFSTG_func_do2823.7584.8%
 00420250 
D902                            FLD             DWORD [EDX]
 00420252 
D82534074200                    FSUB            DWORD [c_0_5]
 00420258 
D8C0                            FADD            ST, ST(0)
 0042025A 
D8C9                            FMUL            ST, ST(1)
 0042025C 
8B46FC                          MOV             EAX, [ESI-0x4]
 0042025F 
D9906802B101                    FST             DWORD [EAX+go4k_synth_wrk]
 00420265 
D9988006B101                    FSTP            DWORD [EAX+go4k_voiceindex+0x498]
 0042026B 
C3                              RET             
-0042026C 4KLANG.OBJ:.g4kcod43221.7568.0%
-0042026C go4kENVMap118.5577.7%
 0042026C go4kENVMap118.5577.7%
 0042026C 
D90482                          FLD             DWORD [EDX+EAX*4]
 0042026F 
DA0D40074200                    FIMUL           DWORD [c_24]
 00420275 
D9E0                            FCHS            
-00420277 _Power@02113.2062.8%
 00420277 _Power@02113.2062.8%
 00420277 
D9E8                            FLD1            
 00420279 
D8C0                            FADD            ST, ST(0)
 0042027B 
D9F1                            FYL2X           
 0042027D 
D9E8                            FLD1            
 0042027F 
D9C1                            FLD             ST(1)
 00420281 
D9F8                            FPREM           
 00420283 
D9F0                            F2XM1           
 00420285 
DEC1                            FADDP           
 00420287 
D9FD                            FSCALE          
 00420289 
DDD9                            FSTP            ST(1)
 0042028B 
C3                              RET             
-0042028C 4KLANG.OBJ:.g4kcodp138.4965.3%
-0042028C go4kVCO_pulse138.4965.3%
 0042028C go4kVCO_pulse86.1977.3%
 0042028C 
DBE9                            FUCOMI          ST, ST(1)
 0042028E 
D9E8                            FLD1            
 00420290 
7302                            JAE             go4kVCO_func_pulse_up
 00420292 
D9E0                            FCHS            
 00420294 go4kVCO_func_pulse_up52.3046.0%
 00420294 
DDD9                            FSTP            ST(1)
 00420296 
DDD9                            FSTP            ST(1)
 00420298 
C3                              RET             
-00420299 4KLANG.OBJ:.g4kcods137.8160.1%
-00420299 go4kVCO_sine137.8160.1%
 00420299 go4kVCO_sine137.8160.1%
 00420299 
D9C9                            FXCH            
 0042029B 
DDD9                            FSTP            ST(1)
 0042029D 
D9EB                            FLDPI           
 0042029F 
D8C0                            FADD            ST, ST(0)
 004202A1 
DEC9                            FMULP           
 004202A3 
D9FE                            FSIN            
 004202A5 
C3                              RET             
-004202A6 4KLANG.OBJ:.g4kcodd236.2927.3%
-004202A6 _go4kDST_func@0236.2927.3%
 004202A6 _go4kDST_func@0152.3115.4%
 004202A6 
6A01                            PUSH            0x1
 004202A8 
E887040000                      CALL            go4kTransformValues
 004202AD 
8B41FC                          MOV             EAX, [ECX-0x4]
 004202B0 
85C0                            TEST            EAX, EAX
 004202B2 
7501                            JNZ             go4kDST_func_do
 004202B4 
C3                              RET             
 004202B5 go4kDST_func_do83.9849.7%
 004202B5 
D902                            FLD             DWORD [EDX]
 004202B7 
E8C7040000                      CALL            go4kWaveshaper
 004202BC 
C3                              RET             
-004202BD 4KLANG.OBJ:.g4kcodz3228.9890.6%
-004202BD go4k_VM_process3228.9890.6%
 004202BD go4k_VM_process56.00119.9%
 004202BD 
8D6F08                          LEA             EBP, [EDI+0x8]
 004202C0 
89E9                            MOV             ECX, EBP
 004202C2 go4k_VM_process_loop2018.5292.6%
 004202C2 
0FB603                          MOVZX           EAX, BYTE [EBX]
 004202C5 
43                              INC             EBX
 004202C6 
85C0                            TEST            EAX, EAX
 004202C8 
740C                            JZ              go4k_VM_process_done
 004202CA 
FF148562074200                  CALL            [EAX*4+go4k_synth_commands]
 004202D1 
83C520                          ADD             EBP, 0x20
 004202D4 
EBEC                            JMP             go4k_VM_process_loop
 004202D6 go4k_VM_process_done74.4663.7%
 004202D6 
81C718040000                    ADD             EDI, 0x418
 004202DC 
C3                              RET             
-004202DD 4KLANG.OBJ:.g4kcodw10275.4874.0%
-004202DD go4kUpdateInstrument10275.4874.0%
 004202DD go4kUpdateInstrument7555.1373.5%
 004202DD 
8B442408                        MOV             EAX, [ESP+0x8]
 004202E1 
C1E803                          SHR             EAX, 0x3
 004202E4 
69D188000000                    IMUL            EDX, ECX, 0x88
 004202EA 
0FB6940209094200                MOVZX           EDX, BYTE [EDX+EAX+go4k_synth_instructions_end]
 004202F2 
8B442408                        MOV             EAX, [ESP+0x8]
 004202F6 
C1E203                          SHL             EDX, 0x3
 004202F9 
83E007                          AND             EAX, 0x7
 004202FC 
0FB69402B10B4200                MOVZX           EDX, BYTE [EDX+EAX+go4k_pattern_lists_end]
 00420304 
80FA01                          CMP             DL, 0x1
 00420307 
7439                            JZ              go4kUpdateInstrument_done
 00420309 
FF07                            INC             DWORD [EDI]
 0042030B 
FF8718040000                    INC             DWORD [EDI+0x418]
 00420311 
80FA01                          CMP             DL, 0x1
 00420314 
7C2C                            JL              go4kUpdateInstrument_done
 00420316 
60                              PUSHA           
 00420317 
87048DE801B101                  XCHG            [ECX*4+go4k_voiceindex], EAX
 0042031E 
85C0                            TEST            EAX, EAX
 00420320 
7406                            JZ              go4kUpdateInstrument_newNote
 00420322 
81C718040000                    ADD             EDI, 0x418
 00420328 go4kUpdateInstrument_newNote2619.7375.9%
 00420328 
3401                            XOR             AL, 0x1
 0042032A 
87048DE801B101                  XCHG            [ECX*4+go4k_voiceindex], EAX
 00420331 
60                              PUSHA           
 00420332 
31C0                            XOR             EAX, EAX
 00420334 
B902010000                      MOV             ECX, 0x102
 00420339 
F3AB                            REP STOSD       
 0042033B 
61                              POPA            
 0042033C 
895704                          MOV             [EDI+0x4], EDX
 0042033F 
61                              POPA            
 00420340 
EB00                            JMP             go4kUpdateInstrument_done
 00420342 go4kUpdateInstrument_done10.6261.7%
 00420342 
C3                              RET             
-00420343 4KLANG.OBJ:.g4kcodm10.8180.8%
-00420343 _go4kFLD_func@010.8180.8%
 00420343 _go4kFLD_func@010.8180.8%
 00420343 
C3                              RET             
-00420344 4KLANG.OBJ:.g4kcodh237.9934.8%
-00420344 237.9934.8%
 00420344 _go4kFST_func@0237.9934.8%
 00420344 
6A02                            PUSH            0x2
 00420346 
E887040000                      CALL            go4kTransformValues
 0042034B 
D902                            FLD             DWORD [EDX]
 0042034D 
D82534074200                    FSUB            DWORD [c_0_5]
 00420353 
D8C0                            FADD            ST, ST(0)
 00420355 
D8C9                            FMUL            ST, ST(1)
 00420357 
D91C81                          FSTP            DWORD [ECX+EAX*4]
 0042035A 
C3                              RET             
-0042035B 4KLANG.OBJ:.g4kcodl4928.2257.6%
-0042035B _go4kACC_func@04928.2257.6%
 0042035B _go4kACC_func@02714.4353.4%
 0042035B 
6A01                            PUSH            0x1
 0042035D 
E887040000                      CALL            go4kTransformValues
 00420362 
60                              PUSHA           
 00420363 
BF6802B101                      MOV             EDI, go4k_synth_wrk
 00420368 
81C718040000                    ADD             EDI, 0x418
 0042036E 
29C7                            SUB             EDI, EAX
 00420370 
B10A                            MOV             CL, 0xA
 00420372 
D9EE                            FLDZ            
 00420374 
D9EE                            FLDZ            
 00420376 go4kACC_func_loop2213.7962.7%
 00420376 
D847F8                          FADD            DWORD [EDI-0x8]
 00420379 
D9C9                            FXCH            
 0042037B 
D847FC                          FADD            DWORD [EDI-0x4]
 0042037E 
D9C9                            FXCH            
 00420380 
81C718040000                    ADD             EDI, 0x418
 00420386 
FEC9                            DEC             CL
 00420388 
75EC                            JNZ             go4kACC_func_loop
 0042038A 
61                              POPA            
 0042038B 
C3                              RET             
-0042038C 4KLANG.OBJ:.g4kcodf12693.0573.8%
-0042038C _go4kDLL_func@012693.0573.8%
 0042038C _go4kDLL_func@0126.0350.2%
 0042038C 
6A06                            PUSH            0x6
 0042038E 
E887040000                      CALL            go4kTransformValues
 00420393 
60                              PUSHA           
 00420394 
0FB65EFE                        MOVZX           EBX, BYTE [ESI-0x2]
 00420398 go4kDLL_func_process1914.6377.0%
 00420398 
89C1                            MOV             ECX, EAX
 0042039A 
8B2D8833B101                    MOV             EBP, [_go4k_delay_buffer_ofs]
 004203A0 
D9C0                            FLD             ST(0)
 004203A2 
D84A04                          FMUL            DWORD [EDX+0x4]
 004203A5 
D9C9                            FXCH            
 004203A7 
D80A                            FMUL            DWORD [EDX]
 004203A9 
D80A                            FMUL            DWORD [EDX]
 004203AB go4kDLL_func_loop5142.2082.7%
 004203AB 
0FB7B41B96074200                MOVZX           ESI, [EBX+EBX+_go4k_delay_times]
 004203B3 
8B4500                          MOV             EAX, [EBP+0x0]
 004203B6 
D9448510                        FLD             DWORD [EBP+EAX*4+0x10]
 004203BA 
DCC2                            FADD            ST(2), ST
 004203BC 
D9E8                            FLD1            
 004203BE 
D8620C                          FSUB            DWORD [EDX+0xC]
 004203C1 
DEC9                            FMULP           
 004203C3 
D9420C                          FLD             DWORD [EDX+0xC]
 004203C6 
D84D04                          FMUL            DWORD [EBP+0x4]
 004203C9 
DEC1                            FADDP           
 004203CB 
D95504                          FST             DWORD [EBP+0x4]
 004203CE 
D84A08                          FMUL            DWORD [EDX+0x8]
 004203D1 
D8C1                            FADD            ST, ST(1)
 004203D3 
D95C8510                        FSTP            DWORD [EBP+EAX*4+0x10]
 004203D7 
40                              INC             EAX
 004203D8 
39F0                            CMP             EAX, ESI
 004203DA 
7C02                            JL              go4kDLL_func_buffer_nowrap2
 004203DC 
31C0                            XOR             EAX, EAX
 004203DE go4kDLL_func_buffer_nowrap24430.1968.6%
 004203DE 
894500                          MOV             [EBP+0x0], EAX
 004203E1 
43                              INC             EBX
 004203E2 
81C510000400                    ADD             EBP, 0x40010
 004203E8 
892D8833B101                    MOV             [_go4k_delay_buffer_ofs], EBP
 004203EE 
E0BB                            LOOPNZ          go4kDLL_func_loop
 004203F0 
DDD8                            FSTP            ST(0)
 004203F2 
D9450C                          FLD             DWORD [EBP+0xC]
 004203F5 
D80D38074200                    FMUL            DWORD [c_dc_const]
 004203FB 
D86508                          FSUB            DWORD [EBP+0x8]
 004203FE 
D9C9                            FXCH            
 00420400 
D95508                          FST             DWORD [EBP+0x8]
 00420403 
DEC1                            FADDP           
 00420405 
D9550C                          FST             DWORD [EBP+0xC]
 00420408 
61                              POPA            
 00420409 
C3                              RET             
-0042040A 4KLANG.OBJ:.g4kcodc9449.5152.7%
-0042040A _go4kVCF_func@09449.5152.7%
 0042040A _go4kVCF_func@0152.3515.7%
 0042040A 
6A03                            PUSH            0x3
 0042040C 
E887040000                      CALL            go4kTransformValues
 00420411 
8B41FC                          MOV             EAX, [ECX-0x4]
 00420414 
85C0                            TEST            EAX, EAX
 00420416 
7501                            JNZ             go4kVCF_func_do
 00420418 
C3                              RET             
 00420419 go4kVCF_func_do4727.7859.1%
 00420419 
0FB646FF                        MOVZX           EAX, BYTE [ESI-0x1]
 0042041D 
D94204                          FLD             DWORD [EDX+0x4]
 00420420 
D902                            FLD             DWORD [EDX]
 00420422 
D84510                          FADD            DWORD [EBP+0x10]
 00420425 
DCC8                            FMUL            ST(0), ST
 00420427 
D9550C                          FST             DWORD [EBP+0xC]
 0042042A 
D84D08                          FMUL            DWORD [EBP+0x8]
 0042042D 
D84500                          FADD            DWORD [EBP+0x0]
 00420430 
D95500                          FST             DWORD [EBP+0x0]
 00420433 
DEEA                            FSUBP           ST(2), ST
 00420435 
D84D08                          FMUL            DWORD [EBP+0x8]
 00420438 
DEE9                            FSUBP           
 0042043A 
D95504                          FST             DWORD [EBP+0x4]
 0042043D 
D84D0C                          FMUL            DWORD [EBP+0xC]
 00420440 
D84508                          FADD            DWORD [EBP+0x8]
 00420443 
D95D08                          FSTP            DWORD [EBP+0x8]
 00420446 
D9EE                            FLDZ            
 00420448 go4kVCF_func_low75.3976.9%
 00420448 
A801                            TEST            AL, 0x1
 0042044A 
7403                            JZ              go4kVCF_func_high
 0042044C 
D84500                          FADD            DWORD [EBP+0x0]
 0042044F go4kVCF_func_high74.7968.5%
 0042044F 
A802                            TEST            AL, 0x2
 00420451 
7403                            JZ              go4kVCF_func_band
 00420453 
D84504                          FADD            DWORD [EBP+0x4]
 00420456 go4kVCF_func_band72.9442.0%
 00420456 
A804                            TEST            AL, 0x4
 00420458 
7403                            JZ              go4kVCF_func_peak
 0042045A 
D84508                          FADD            DWORD [EBP+0x8]
 0042045D go4kVCF_func_peak105.2152.1%
 0042045D 
A808                            TEST            AL, 0x8
 0042045F 
7406                            JZ              go4kVCF_func_end
 00420461 
D84500                          FADD            DWORD [EBP+0x0]
 00420464 
D86504                          FSUB            DWORD [EBP+0x4]
 00420467 go4kVCF_func_end11.05105.1%
 00420467 
C3                              RET             
-00420468 4KLANG.OBJ:.g4kcodt1913.8773.0%
-00420468 go4kVCO_trisaw1913.8773.0%
 00420468 go4kVCO_trisaw108.4284.2%
 00420468 
DBE9                            FUCOMI          ST, ST(1)
 0042046A 
7306                            JAE             go4kVCO_func_trisaw_up
 0042046C 
D9E8                            FLD1            
 0042046E 
DCE2                            FSUBR           ST(2), ST
 00420470 
DEE1                            FSUBRP          
 00420472 go4kVCO_func_trisaw_up95.4560.5%
 00420472 
DEF9                            FDIVP           
 00420474 
D8C0                            FADD            ST, ST(0)
 00420476 
D9E8                            FLD1            
 00420478 
DEE9                            FSUBP           
 0042047A 
C3                              RET             
-0042047B 4KLANG.OBJ:.g4kcodj165.1332.1%
-0042047B _go4kPAN_func@0165.1332.1%
 0042047B _go4kPAN_func@0165.1332.1%
 0042047B 
6A01                            PUSH            0x1
 0042047D 
E887040000                      CALL            go4kTransformValues
 00420482 
D902                            FLD             DWORD [EDX]
 00420484 
D8C9                            FMUL            ST, ST(1)
 00420486 
DCE9                            FSUB            ST(1), ST
 00420488 
D9C9                            FXCH            
 0042048A 
C3                              RET             
-0042048B 4KLANG.OBJ:.g4kcod33631.7588.2%
-0042048B go4kTransformValues3631.7588.2%
 0042048B go4kTransformValues108.0180.1%
 0042048B 
51                              PUSH            ECX
 0042048C 
31C9                            XOR             ECX, ECX
 0042048E 
31C0                            XOR             EAX, EAX
 00420490 
BA2802B101                      MOV             EDX, go4k_transformed_values
 00420495 go4kTransformValues_loop2623.7591.3%
 00420495 
AC                              LODSB           
 00420496 
50                              PUSH            EAX
 00420497 
DB0424                          FILD            DWORD [ESP]
 0042049A 
D80D2C074200                    FMUL            DWORD [c_i128]
 004204A0 
D91C8A                          FSTP            DWORD [EDX+ECX*4]
 004204A3 
58                              POP             EAX
 004204A4 
41                              INC             ECX
 004204A5 
3B4C2408                        CMP             ECX, [ESP+0x8]
 004204A9 
7CEA                            JL              go4kTransformValues_loop
 004204AB 
59                              POP             ECX
 004204AC 
C20400                          RET             0x4
-004204AF 4KLANG.OBJ:.crtemui2817.4562.3%
-004204AF _FloatRandomNumber@02817.4562.3%
 004204AF _FloatRandomNumber@02817.4562.3%
 004204AF 
69053C074200873E0000            IMUL            EAX, [_RandSeed], 0x3E87
 004204B9 
A33C074200                      MOV             [_RandSeed], EAX
 004204BE 
DB053C074200                    FILD            DWORD [_RandSeed]
 004204C4 
DA3530074200                    FIDIV           DWORD [c_RandDiv]
 004204CA 
C3                              RET             
-004204CB 4KLANG.OBJ:.g4kcod26132.0452.5%
-004204CB go4kWaveshaper6132.0452.5%
 004204CB go4kWaveshaper148.3859.8%
 004204CB 
D9C9                            FXCH            
 004204CD 
D9E8                            FLD1            
 004204CF 
DBE9                            FUCOMI          ST, ST(1)
 004204D1 
7606                            JBE             go4kWaveshaper_clip
 004204D3 
D9E0                            FCHS            
 004204D5 
DBE9                            FUCOMI          ST, ST(1)
 004204D7 
DAC1                            FCMOVB          ST, ST(1)
 004204D9 go4kWaveshaper_clip4723.6650.3%
 004204D9 
DDD9                            FSTP            ST(1)
 004204DB 
D9C9                            FXCH            
 004204DD 
D82534074200                    FSUB            DWORD [c_0_5]
 004204E3 
D8C0                            FADD            ST, ST(0)
 004204E5 
D95424FC                        FST             DWORD [ESP-0x4]
 004204E9 
D8C0                            FADD            ST, ST(0)
 004204EB 
D9E8                            FLD1            
 004204ED 
D86424FC                        FSUB            DWORD [ESP-0x4]
 004204F1 
DEF9                            FDIVP           
 004204F3 
D9C1                            FLD             ST(1)
 004204F5 
D9E1                            FABS            
 004204F7 
D8C9                            FMUL            ST, ST(1)
 004204F9 
D9E8                            FLD1            
 004204FB 
DEC1                            FADDP           
 004204FD 
D9C9                            FXCH            
 004204FF 
D9E8                            FLD1            
 00420501 
DEC1                            FADDP           
 00420503 
DECA                            FMULP           ST(2), ST
 00420505 
DEF9                            FDIVP           
 00420507 
C3                              RET             
-00420508 4KLANG.OBJ:.g4kcoda11458.1451.0%
-00420508 _go4kENV_func@011458.1451.0%
 00420508 _go4kENV_func@0173.3419.6%
 00420508 
6A05                            PUSH            0x5
 0042050A 
E887040000                      CALL            go4kTransformValues
 0042050F 
8B41FC                          MOV             EAX, [ECX-0x4]
 00420512 
85C0                            TEST            EAX, EAX
 00420514 
7503                            JNZ             go4kENV_func_do
 00420516 
D9EE                            FLDZ            
 00420518 
C3                              RET             
 00420519 go4kENV_func_do127.3461.1%
 00420519 
8B41F8                          MOV             EAX, [ECX-0x8]
 0042051C 
85C0                            TEST            EAX, EAX
 0042051E 
7405                            JZ              go4kENV_func_process
 00420520 
B003                            MOV             AL, 0x3
 00420522 
894500                          MOV             [EBP+0x0], EAX
 00420525 go4kENV_func_process105.7957.9%
 00420525 
8B4500                          MOV             EAX, [EBP+0x0]
 00420528 
D94504                          FLD             DWORD [EBP+0x4]
 0042052B 
3C02                            CMP             AL, 0x2
 0042052D 
7442                            JZ              go4kENV_func_leave2
 0042052F go4kENV_func_attac1912.8367.5%
 0042052F 
3C00                            CMP             AL, 0x0
 00420531 
750F                            JNZ             go4kENV_func_decay
 00420533 
E868020000                      CALL            go4kENVMap
 00420538 
DEC1                            FADDP           
 0042053A 
D9E8                            FLD1            
 0042053C 
DBE9                            FUCOMI          ST, ST(1)
 0042053E 
DBC1                            FCMOVNB         ST, ST(1)
 00420540 
7627                            JBE             go4kENV_func_statechange
 00420542 go4kENV_func_decay2011.4357.2%
 00420542 
3C01                            CMP             AL, 0x1
 00420544 
7510                            JNZ             go4kENV_func_release
 00420546 
E868020000                      CALL            go4kENVMap
 0042054B 
DEE9                            FSUBP           
 0042054D 
D94208                          FLD             DWORD [EDX+0x8]
 00420550 
DBE9                            FUCOMI          ST, ST(1)
 00420552 
DAC1                            FCMOVB          ST, ST(1)
 00420554 
7313                            JAE             go4kENV_func_statechange
 00420556 go4kENV_func_release198.0342.2%
 00420556 
3C03                            CMP             AL, 0x3
 00420558 
7512                            JNZ             go4kENV_func_leave
 0042055A 
E868020000                      CALL            go4kENVMap
 0042055F 
DEE9                            FSUBP           
 00420561 
D9EE                            FLDZ            
 00420563 
DBE9                            FUCOMI          ST, ST(1)
 00420565 
DAC1                            FCMOVB          ST, ST(1)
 00420567 
7203                            JB              go4kENV_func_leave
 00420569 go4kENV_func_statechange32.2474.6%
 00420569 
FF4500                          INC             DWORD [EBP+0x0]
 0042056C go4kENV_func_leave52.7755.4%
 0042056C 
DDD9                            FSTP            ST(1)
 0042056E 
D95504                          FST             DWORD [EBP+0x4]
 00420571 go4kENV_func_leave294.3848.6%
 00420571 
D94210                          FLD             DWORD [EDX+0x10]
 00420574 
D84508                          FADD            DWORD [EBP+0x8]
 00420577 
DEC9                            FMULP           
 00420579 
C3                              RET             
-0042057A 4KLANG.OBJ:.g4kcodk5019.2038.4%
-0042057A _go4kOUT_func@05019.2038.4%
 0042057A _go4kOUT_func@05019.2038.4%
 0042057A 
6A02                            PUSH            0x2
 0042057C 
E887040000                      CALL            go4kTransformValues
 00420581 
60                              PUSHA           
 00420582 
8DB900040000                    LEA             EDI, [ECX+0x400]
 00420588 
D9C1                            FLD             ST(1)
 0042058A 
D9C1                            FLD             ST(1)
 0042058C 
D94204                          FLD             DWORD [EDX+0x4]
 0042058F 
DEC9                            FMULP           
 00420591 
D91F                            FSTP            DWORD [EDI]
 00420593 
AF                              SCASD           
 00420594 
D94204                          FLD             DWORD [EDX+0x4]
 00420597 
DEC9                            FMULP           
 00420599 
D91F                            FSTP            DWORD [EDI]
 0042059B 
AF                              SCASD           
 0042059C 
D902                            FLD             DWORD [EDX]
 0042059E 
DEC9                            FMULP           
 004205A0 
D91F                            FSTP            DWORD [EDI]
 004205A2 
AF                              SCASD           
 004205A3 
D902                            FLD             DWORD [EDX]
 004205A5 
DEC9                            FMULP           
 004205A7 
D91F                            FSTP            DWORD [EDI]
 004205A9 
AF                              SCASD           
 004205AA 
61                              POPA            
 004205AB 
C3                              RET             
-004205AC 4KLANG.OBJ:.g4kcodb15765.2541.6%
-004205AC _go4kVCO_func@015765.2541.6%
 004205AC _go4kVCO_func@0171.649.6%
 004205AC 
6A06                            PUSH            0x6
 004205AE 
E887040000                      CALL            go4kTransformValues
 004205B3 
8B41FC                          MOV             EAX, [ECX-0x4]
 004205B6 
85C0                            TEST            EAX, EAX
 004205B8 
7503                            JNZ             go4kVCO_func_do
 004205BA 
D9EE                            FLDZ            
 004205BC 
C3                              RET             
 004205BD go4kVCO_func_do3815.8241.6%
 004205BD 
0FB646FF                        MOVZX           EAX, BYTE [ESI-0x1]
 004205C1 
D902                            FLD             DWORD [EDX]
 004205C3 
D82534074200                    FSUB            DWORD [c_0_5]
 004205C9 
D8352C074200                    FDIV            DWORD [c_i128]
 004205CF 
D94204                          FLD             DWORD [EDX+0x4]
 004205D2 
D82534074200                    FSUB            DWORD [c_0_5]
 004205D8 
D8C0                            FADD            ST, ST(0)
 004205DA 
DEC1                            FADDP           
 004205DC 
A810                            TEST            AL, 0x10
 004205DE 
7503                            JNZ             go4kVCO_func_skipnote
 004205E0 
DA41FC                          FIADD           DWORD [ECX-0x4]
 004205E3 go4kVCO_func_skipnote2313.6859.5%
 004205E3 
D80D44074200                    FMUL            DWORD [c_i12]
 004205E9 
E873020000                      CALL            _Power@0
 004205EE 
A810                            TEST            AL, 0x10
 004205F0 
7408                            JZ              go4kVCO_func_normalize_note
 004205F2 
D80D4C074200                    FMUL            DWORD [_LFO_NORMALIZE]
 004205F8 
EB06                            JMP             go4kVCO_func_normalized
 004205FA go4kVCO_func_normalize_note62.4340.5%
 004205FA 
D80D48074200                    FMUL            DWORD [FREQ_NORMALIZE]
 00420600 go4kVCO_func_normalized197.6140.0%
 00420600 
D84500                          FADD            DWORD [EBP+0x0]
 00420603 
D9E8                            FLD1            
 00420605 
DCC1                            FADD            ST(1), ST
 00420607 
D9C9                            FXCH            
 00420609 
D9F8                            FPREM           
 0042060B 
DDD9                            FSTP            ST(1)
 0042060D 
D95500                          FST             DWORD [EBP+0x0]
 00420610 
D94208                          FLD             DWORD [EDX+0x8]
 00420613 go4kVCO_func_sine95.0155.6%
 00420613 
A801                            TEST            AL, 0x1
 00420615 
7405                            JZ              go4kVCO_func_trisaw
 00420617 
E895020000                      CALL            go4kVCO_sine
 0042061C go4kVCO_func_trisaw93.9043.4%
 0042061C 
A802                            TEST            AL, 0x2
 0042061E 
7405                            JZ              go4kVCO_func_pulse
 00420620 
E864040000                      CALL            go4kVCO_trisaw
 00420625 go4kVCO_func_pulse93.3637.3%
 00420625 
A804                            TEST            AL, 0x4
 00420627 
7405                            JZ              go4kVCO_func_noise
 00420629 
E888020000                      CALL            go4kVCO_pulse
 0042062E go4kVCO_func_noise136.0646.6%
 0042062E 
A808                            TEST            AL, 0x8
 00420630 
7409                            JZ              go4kVCO_func_end
 00420632 
E8AB040000                      CALL            _FloatRandomNumber@0
 00420637 
DDD9                            FSTP            ST(1)
 00420639 
DDD9                            FSTP            ST(1)
 0042063B go4kVCO_func_end145.7441.0%
 0042063B 
D9420C                          FLD             DWORD [EDX+0xC]
 0042063E 
E8C7040000                      CALL            go4kWaveshaper
 00420643 
D94210                          FLD             DWORD [EDX+0x10]
 00420646 
DEC9                            FMULP           
 00420648 
C3                              RET             
-00420649 4KLANG.OBJ:.g4kcody17293.0554.1%
-00420649 __4klang_render@417293.0554.1%
 00420649 __4klang_render@431.9464.7%
 00420649 
60                              PUSHA           
 0042064A 
31C9                            XOR             ECX, ECX
 0042064C go4k_render_tickloop32.2575.2%
 0042064C 
51                              PUSH            ECX
 0042064D 
31C9                            XOR             ECX, ECX
 0042064F go4k_render_sampleloop2917.4960.3%
 0042064F 
51                              PUSH            ECX
 00420650 
31C9                            XOR             ECX, ECX
 00420652 
BBB1084200                      MOV             EBX, go4k_synth_parameter_values_end
 00420657 
BEB6074200                      MOV             ESI, go4k_synth_parameter_values
 0042065C 
BF8C33B101                      MOV             EDI, _go4k_delay_buffer
 00420661 
893D8833B101                    MOV             [_go4k_delay_buffer_ofs], EDI
 00420667 
BF6802B101                      MOV             EDI, go4k_synth_wrk
 0042066C go4k_render_instrumentloop127.1959.9%
 0042066C 
8B0424                          MOV             EAX, [ESP]
 0042066F 
21C0                            AND             EAX, EAX
 00420671 
7505                            JNZ             go4k_render_instrument_process
 00420673 
E8D9020000                      CALL            go4kUpdateInstrument
 00420678 go4k_render_instrument_process1914.3175.3%
 00420678 
E8DD010000                      CALL            go4kRenderVoices
 0042067D 
41                              INC             ECX
 0042067E 
80F905                          CMP             CL, 0x5
 00420681 
7CE9                            JL              go4k_render_instrumentloop
 00420683 
894F04                          MOV             [EDI+0x4], ECX
 00420686 
E8B9020000                      CALL            go4k_VM_process
 0042068B go4k_render_output_sample199.1248.0%
 0042068B 
8774242C                        XCHG            [ESP+0x2C], ESI
 0042068F 
D947F8                          FLD             DWORD [EDI-0x8]
 00420692 
D9E8                            FLD1            
 00420694 
DBE9                            FUCOMI          ST, ST(1)
 00420696 
7606                            JBE             go4k_render_clip1
 00420698 
D9E0                            FCHS            
 0042069A 
DBE9                            FUCOMI          ST, ST(1)
 0042069C 
DAC1                            FCMOVB          ST, ST(1)
 0042069E go4k_render_clip13316.0348.6%
 0042069E 
DDD9                            FSTP            ST(1)
 004206A0 
50                              PUSH            EAX
 004206A1 
D80D28074200                    FMUL            DWORD [c_32767]
 004206A7 
DB1C24                          FISTP           DWORD [ESP]
 004206AA 
58                              POP             EAX
 004206AB 
668906                          MOV             [ESI], AX
 004206AE 
66AD                            LODSW           
 004206B0 
D947FC                          FLD             DWORD [EDI-0x4]
 004206B3 
D9E8                            FLD1            
 004206B5 
DBE9                            FUCOMI          ST, ST(1)
 004206B7 
7606                            JBE             go4k_render_clip2
 004206B9 
D9E0                            FCHS            
 004206BB 
DBE9                            FUCOMI          ST, ST(1)
 004206BD 
DAC1                            FCMOVB          ST, ST(1)
 004206BF go4k_render_clip25424.7145.8%
 004206BF 
DDD9                            FSTP            ST(1)
 004206C1 
50                              PUSH            EAX
 004206C2 
D80D28074200                    FMUL            DWORD [c_32767]
 004206C8 
DB1C24                          FISTP           DWORD [ESP]
 004206CB 
58                              POP             EAX
 004206CC 
668906                          MOV             [ESI], AX
 004206CF 
66AD                            LODSW           
 004206D1 
8774242C                        XCHG            [ESP+0x2C], ESI
 004206D5 
59                              POP             ECX
 004206D6 
41                              INC             ECX
 004206D7 
81F988150000                    CMP             ECX, 0x1588
 004206DD 
0F8C6CFFFFFF                    JL              go4k_render_sampleloop
 004206E3 
59                              POP             ECX
 004206E4 
41                              INC             ECX
 004206E5 
81F940040000                    CMP             ECX, 0x440
 004206EB 
0F8C5BFFFFFF                    JL              go4k_render_tickloop
 004206F1 
61                              POPA            
 004206F2 
C20400                          RET             0x4
-004206F5 Data sections87112933.8833.7%
-004206F5 crinkler import:.data5131.0961.0%
-004206F5 _DLLNames5131.0961.0%
 004206F5 _DLLNames5131.0961.0%
 004206F5 
03010101 75736572 33320006 01010101  01016764 69333200 03010101 6F70656E   ....user32........gdi32.....open
 00420715 
676C3332 00016A77 696E6D6D 00040101  0101FF                                gl32..jwinmm......ÿ             
-00420728 4KLANG.OBJ:.g4kdat24028.2370.6%
-00420728 c_327672012.8964.4%
 00420728 c_3276743.9799.3%
 00420728 
00FEFF46                                                                   .þÿF                            
 0042072C c_i12842.5964.8%
 0042072C 
0000003C                                                                   ...<                            
 00420730 c_RandDiv42.3859.5%
 00420730 
00000080                                                                   ....                            
 00420734 c_0_541.5438.4%
 00420734 
0000003F                                                                   ...?                            
 00420738 c_dc_const42.4160.1%
 00420738 
00007F3F                                                                   ...?                            
-0042073C _RandSeed1611.6472.7%
 0042073C _RandSeed41.4235.4%
 0042073C 
01000000                                                                   ....                            
 00420740 c_2441.8846.9%
 00420740 
18000000                                                                   ....                            
 00420744 c_i1243.7994.8%
 00420744 
AAAAAA3D                                                                   ªªª=                            
 00420748 FREQ_NORMALIZE44.55113.8%
 00420748 
DC65C238                                                                   ÜeÂ8                            
-0042074C _LFO_NORMALIZE43.7192.7%
 0042074C _LFO_NORMALIZE43.7192.7%
 0042074C 
CD373E38                                                                   Í7>8                            
-00420750 MAIN.OBJ:.wavefmt1811.6564.7%
-00420750 ?WaveFMT@@3UtWAVEFORMATEX@@A1811.6564.7%
 00420750 ?WaveFMT@@3UtWAVEFORMATEX@@A1811.6564.7%
 00420750 
01000200 44AC0000 10B10200 04001000  0000                                  ....D¬...±........              
-00420762 4KLANG.OBJ:.g4kdat15225.9049.8%
-00420762 go4k_synth_commands5225.9049.8%
 00420762 go4k_synth_commands5225.9049.8%
 00420762 
00000000                                                                   ....                            
 00420766 
08054200                                                                   _go4kENV_func@0
 0042076A 
AC054200                                                                   _go4kVCO_func@0
 0042076E 
0A044200                                                                   _go4kVCF_func@0
 00420772 
A6024200                                                                   _go4kDST_func@0
 00420776 
8C034200                                                                   _go4kDLL_func@0
 0042077A 
08024200                                                                   _go4kFOP_func@0
 0042077E 
44034200                                                                   _go4kFST_func@0
 00420782 
7B044200                                                                   _go4kPAN_func@0
 00420786 
7A054200                                                                   _go4kOUT_func@0
 0042078A 
5B034200                                                                   _go4kACC_func@0
 0042078E 
43034200                                                                   _go4kFLD_func@0
 00420792 
41024200                                                                   _go4kFSTG_func@0
-00420796 4KLANG.OBJ:.g4kmuc53227.3585.5%
-00420796 _go4k_delay_times3227.3585.5%
 00420796 _go4k_delay_times3227.3585.5%
 00420796 
5C04A404 FC044C05 8E05D405 14065206  7404BC04 14056405 A605EC05 2C066A06   \.¤.ü.L...Ô...R.t.¼...d.¦.ì.,.j.
-004207B6 4KLANG.OBJ:.g4kmuc425197.4738.8%
-004207B6 go4k_synth_parameter_values25197.4738.8%
 004207B6 go4k_synth_parameter_values25197.4738.8%
 004207B6 
00542060 00404080 40800203 24180140  00404008 08205500 5580504C 01401E07   .T.`.@@.@...$..@.@@...U.U.PL.@..
 004207D6 
18800160 30084850 18005020 60004040  80408002 03241801 40004040 08082055   ...`0.HP..P.`.@@.@...$..@.@@...U
 004207F6 
00558050 4C01401E 07188001 60300830  80200050 20600040 40804080 02032418   .U.PL.@.....`0.0...P.`.@@.@...$.
 00420816 
01400040 40080820 55005580 504C0140  1E071880 01603008 50802000 50206000   .@.@@...U.U.PL.@.....`0.P...P.`.
 00420836 
40408040 80020324 18014000 40400808  20550055 80504C01 401E0718 80016030   @@.@...$..@.@@...U.U.PL.@.....`0
 00420856 
08408020 4040806C 80601000 00006040  08000060 70100000 5FA01800 0001083A   .@..@@.l.`....`@...`p..._ .....:
 00420876 
807D0000 08053A80 7D000808 0500080F  80024040 400C0108 02368001 23300325   .}....:.}.........@@@....6..#0.%
 00420896 
02034305 0F800240 40400C01 08023680  01233003 25020343 058000              ..C....@@@....6..#0.%..C...     
 004208B1 go4k_synth_parameter_values_end   
-004208B1 4KLANG.OBJ:.g4kmuc38827.0130.7%
-004208B1 go4k_synth_instructions8827.0130.7%
 004208B1 go4k_synth_instructions8827.0130.7%
 004208B1 
01020603 05010706 03030308 09000102  06030501 07060303 03080900 01020603   ................................
 004208D1 
05010706 03030308 09000102 06030501  07060303 03080900 010C0C0C 0C06000A   ................................
 004208F1 
05060506 0A060302 06030303 04060302  06030303 04060900                     ........................        
 00420909 go4k_synth_instructions_end   
-00420909 4KLANG.OBJ:.g4kmuc2680366.5153.9%
-00420909 go4k_pattern_lists680366.5153.9%
 00420909 go4k_pattern_lists   
 00420909 Instrument0List13696.7871.2%
 00420909 
00000100 00020304 05060007 03000809  0A090B06 0C0D030E 0F090D06 04051011   ................................
 00420929 
06001213 14061516 17181000 191A1B1C  1D1E1A1F 06200500 21102206 23242526   ........................!.".#$%&
 00420949 
27032809 292A2B2C 2D2E2F30 27093106  32331034 35363738 393A3B3C 3D3E3F05   '.(.)*+,-./0'.1.23.456789:;<=>?.
 00420969 
10004005 052D4106 000D1004 42001109  00434445 06154647 18480349 06184803   ..@..-A.....B....CDE..FG.H.I..H.
 00420989 
4A002010 00000000                                                          J.......                        
 00420991 Instrument1List13699.5273.2%
 00420991 
0000004B 00004C00 4D2D004E 2D004F50  001C5138 1A525300 27030054 004D1A00   ...K..L.M-.N-.OP..Q8.RS.'..T.M..
 004209B1 
55100056 570E1046 58595A00 5B005C5D  005E1A00 5F00601A 61622063 09646566   U..VW..FXYZ.[.\].^.._.`.ab.c.def
 004209D1 
55096709 20680969 6A6B2403 55094E10  006C106D 6E6F7071 721D7300 52747505   U.g..h.ijk$.U.N..l.mnopqr.s.Rtu.
 004209F1 
09007605 052D0077 09004C00 7810000E  1000797A 0E10167B 057C037D 06007E03   ..v..-.w..L.x.....yz...{.|.}..~.
 00420A11 
007F0068 09000000                                                          ...h....                        
 00420A19 Instrument2List13683.7561.6%
 00420A19 
0000005F 00005300 6006004F 2D008006  00810378 03008200 83090084 00601000   ..._..S.`..O-......x.........`..
 00420A39 
83100044 03851000 86008700 881A0077  00000000 4B00891A 008A006A 09008B00   ...D...........w....K......j....
 00420A59 
8C034E09 8D2D008E 10008F17 8C039003  00911000 92009300 94006A00 00959605   ..N..-....................j.....
 00420A79 
03009705 051A0098 03009900 4D100085  10009A00 85100058 009B0391 06009B03   ............M..........X........
 00420A99 
009C000E 09000000                                                          ........                        
 00420AA1 Instrument3List13679.1158.2%
 00420AA1 
00000076 00006E00 9D2D0088 2D009109  9E8A000E 03009F41 0000004C 009D1A00   ...v..n..-..-..........A...L....
 00420AC1 
A0100070 20681000 A1007E00 4E1A0000  00000000 A200A31A 001603A4 0900A500    ..p.h..¡.~.N.......¢.£....¤..¥.
 00420AE1 
A6009000 00A7094E 1000A803 A900671A  00000000 00005200 AAABAC00 0091AD05   ¦....§.N..¨.©.g.......R.ª«¬...­.
 00420B01 
10000205 0510007E 0900AE00 9D100068  0505AF20 68100065 59000000 00000000   .......~..®....h..¯.h..eY.......
 00420B21 
00350085 09000000                                                          .5......                        
 00420B29 Instrument4List1367.355.4%
 00420B29 
B0050505 05050505 05050505 05050505  05050505 05050505 05050505 05050505   °...............................
 00420B49 
05050505 05050505 05050505 05050505  05050505 05050505 05050505 05050505   ................................
 00420B69 
05050505 05050505 05050505 05050505  05050505 05050505 05050505 05050505   ................................
 00420B89 
05050505 05050506 00000000 00000000  00000000 00000000 00000000 00000000   ................................
 00420BA9 
00000000 00000000                                                          ........                        
 00420BB1 go4k_pattern_lists_end   
-00420BB1 4KLANG.OBJ:.g4kmuc11419316.8322.3%
-00420BB1 go4k_patterns1419316.8322.3%
 00420BB1 go4k_patterns1416316.4722.3%
 00420BB1 
00000000 00000000 00000037 01010101  00320101 01010101 01000000 00000000   ...........7.....2..............
 00420BD1 
00000000 00000037 01010101 01010101  01010101 01000000 32010101 01010101   .......7................2.......
 00420BF1 
37010000 00004A01 01010000 00000000  0000005B 01010101 55010100 00005301   7.....J............[....U.....S.
 00420C11 
00000000 56000000 00003201 01010101  00000000 004E0101 00000000 47010101   ....V.....2..........N......G...
 00420C31 
01010100 00000000 00000000 00003201  00000037 01000000 00004E01 01010000   ..............2....7......N.....
 00420C51 
00000000 0000005B 00000000 55010100  00005301 01010101 00000000 00005601   .......[....U.....S...........V.
 00420C71 
00000000 00320101 55010100 0000004E  01010101 00000000 00000000 5A010000   .....2..U......N............Z...
 00420C91 
00004E01 01010101 00000000 00000034  01010101 01004701 00000034 01010101   ..N............4......G....4....
 00420CB1 
00000000 00000032 00000000 51010101  54010100 00000058 00000000 53010100   .......2....Q...T......X....S...
 00420CD1 
00005601 01010101 01000000 00000053  01000000 00320100 00000000 4A010101   ..V............S.....2......J...
 00420CF1 
32010100 00003C01 00560101 01010100  00000000 00480101 0101005B 01010101   2.....<..V...........H.....[....
 00420D11 
01000000 00000054 01010101 01010000  00000000 32000000 00004301 01010100   .......T............2.....C.....
 00420D31 
00530000 00003201 00320101 0000003C  00000056 01000000 005B0000 0000004C   .S....2..2.....<...V.....[.....L
 00420D51 
00003601 01000000 4E010101 01010000  00000000 53010000 004A0101 00000053   ..6.....N...........S....J.....S
 00420D71 
01000000 00550101 00000056 01010000  00000000 00000055 01000000 00450101   .....U.....V...........U.....E..
 00420D91 
00000000 58000000 00003401 00000000  4A010100 00000040 00000000 00000051   ....X.....4.....J......@.......Q
 00420DB1 
00510101 01010101 00000000 00370101  01010101 01010100 00000000 37010000   .Q...........7..............7...
 00420DD1 
00005A01 01010101 01000000 0000005B  00003701 00000000 4A010101 00000000   ..Z............[..7.....J.......
 00420DF1 
01000045 01010101 00370100 0000004A  00003701 01000000 00470101 01010101   ...E.....7.....J..7......G......
 00420E11 
4E010101 01010100 00000000 00004701  00000000 00000045 00000000 0000004E   N.............G........E.......N
 00420E31 
01010000 005D0100 01000000 00003701  00005101 00000000 45010101 01010000   .....]........7...Q.....E.......
 00420E51 
45010101 01010101 00000000 45010101  00004A01 01000000 5D010000 00000000   E...........E.....J.....].......
 00420E71 
55010101 01010100 00000000 00510100  00000045 01010100 36010101 01010101   U............Q.....E....6.......
 00420E91 
00000000 2F010100 00004A01 01010101  4C010000 00000043 004A0101 01010101   ..../.....J.....L......C.J......
 00420EB1 
00000000 00004A01 00000000 2D010000  00004801 01010101 01000000 00470101   ......J.....-.....H..........G..
 00420ED1 
00003200 00000000 47010101 00000000  00000000 00560100 00000000 0000004A   ..2.....G............V.........J
 00420EF1 
00000000 00450101 005D0101 01010101  00000000 00560101 00000000 58010101   .....E...]...........V......X...
 00420F11 
00340101 0101014F 00005A01 00000000  49010101 01010000 00000000 2F010000   .4.....O..Z.....I.........../...
 00420F31 
00004701 01000000 00000000 00340100  00000049 01000000 01000000 00510101   ..G..........4.....I.........Q..
 00420F51 
45010000 0000004A 01000000 00000043  004E0101 01010101 00000047 01010101   E......J.......C.N.........G....
 00420F71 
00000000 004A0101 00004A01 01010100  005D0100 00000000 01000000 00000056   .....J....J......].............V
 00420F91 
0101014E 01010101 004E0100 0000004E  0000004E 01010101 47010101 01010000   ...N.....N.....N...N....G.......
 00420FB1 
00000000 0000005A 00004901 01010101  004E0101 01010100 00000000 4E010101   .......Z..I......N..........N...
 00420FD1 
49010101 01010101 00000000 00490101  4A010100 00000000 00000049 01010100   I............I..J..........I....
 00420FF1 
00000000 00000049 00000000 00004101  00004501 01010101 43010101 00000000   .......I......A...E.....C.......
 00421011 
00000000 40010101 00000000 00000058  00320100 00000048 00003E01 01010100   ....@..........X.2.....H..>.....
 00421031 
00000000 00000042 00000000 00000047  45010101 01000000 00004E01 00000000   .......B.......GE.........N.....
 00421051 
00000051 01010000 3B010000 0000004F  01000000 0000004C 003E0101 01010101   ...Q....;......O.......L.>......
 00421071 
0000004A 01010101 45010101 01010100  00004701 01010100 00000049 01010101   ...J....E.........G........I....
 00421091 
4A010101 01010000 00000000 00004E01  00000032 01000000 00490101 01010000   J.............N....2.....I......
 004210B1 
00000000 49010101 47010100 00000000  004F0101 01010101 00000000 00004501   ....I...G........O............E.
 004210D1 
00000000 00430101 004C0101 00000000  00000000 3C010100 00000000 004D0101   .....C...L..........<........M..
 004210F1 
00004C01 01010101 00000000 3C010101  0000004C 01010000 00580000 00000000   ..L.........<......L.....X......
 00421111 
00000000 00004E00 01000000 00000048  49010101 01010100 0101014E 01010000   ......N........HI..........N....
 00421131 
3C010101 01010101                                                          <.......                        
 00421139 go4k_patterns_end30.3611.8%
 00421139 
000000                                                                     ...                             
-0042113C MAIN.OBJ:.rdata4410.2223.2%
-0042113C ?pfd@@3UtagPIXELFORMATDESCRIPTOR@@B4410.2223.2%
 0042113C ?pfd@@3UtagPIXELFORMATDESCRIPTOR@@B4410.2223.2%
 0042113C 
28000100 25000000 00200000 00000000  08000000 00000020 00000000 00000000   (...%...........................
 0042115C 
00000000 00000000 00000000                                                 ............                    
-00421168 MAIN.OBJ:.screensettings15610.826.9%
-00421168 ?screenSettings@@3U_devicemodeA@@A15610.826.9%
 00421168 ?screenSettings@@3U_devicemodeA@@A15610.826.9%
 00421168 
00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000   ................................
 00421188 
00000000 9C000000 00001800 00000000  00000000 00000000 00000000 00000000   ................................
 004211A8 
00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000   ................................
 004211C8 
00000000 00000000 00000000 80070000  38040000 00000000 00000000 00000000   ................8...............
 004211E8 
00000000 00000000 00000000 00000000  00000000 00000000 00000000            ............................    
-00421204 MAIN.OBJ:.wavehdr449.1620.8%
-00421204 ?WaveHDR@@3Uwavehdr_tag@@A449.1620.8%
 00421204 ?WaveHDR@@3Uwavehdr_tag@@A327.6624.0%
 00421204 
00294200                                                                   ?lpSoundBuffer@@3PAFA
 00421208 
00086E01 00000000 00000000 00000000  00000000 00000000 00000000            ..n.........................    
 00421224 ?MMTime@@3Ummtime_tag@@A121.4912.4%
 00421224 
02000000 00000000 00000000                                                 ............                    
-00421230 MAIN.OBJ:.pids5637.9167.7%
-00421230 $SG576585637.9167.7%
 00421230 $SG576582421.7690.7%
 00421230 
676C4372 65617465 53686164 65725072  6F677261 6D760000                     glCreateShaderProgramv..        
 00421248 $SG57659166.7842.4%
 00421248 
676C5573 6550726F 6772616D 00000000                                        glUseProgram....                
 00421258 $SG57660169.3658.5%
 00421258 
676C556E 69666F72 6D316900 00000000                                        glUniform1i.....                
-00421268 MAIN.OBJ:.shader57801933.7333.5%
-00421268 ?fragment_frag@@3PBDB57801933.7333.5%
 00421268 ?fragment_frag@@3PBDB84.3754.6%
 00421268 
70124200                                                                   $SG57639
 0042126C 
00000000                                                                   ....                            
 00421270 $SG5763957721929.3633.4%
 00421270 
23766572 73696F6E 20343630 0A756E69  666F726D 20696E74 20763B6F 75742076   #version.460.uniform.int.v;out.v
 00421290 
65633420 693B666C 6F617420 6D3D332E  31343136 2C793D76 2F666C6F 61742834   ec4.i;float.m=3.1416,y=v/float(4
 004212B0 
34313030 293B636F 6E737420 666C6F61  74207A3D 32322E2F 372E3B76 65633320   4100);const.float.z=22./7.;vec3.
 004212D0 
66287665 63332076 297B7265 7475726E  206E6F72 6D616C69 7A652876 293B7D66   f(vec3.v){return.normalize(v);}f
 004212F0 
6C6F6174 20662866 6C6F6174 20762C66  6C6F6174 20662C66 6C6F6174 2079297B   loat.f(float.v,float.f,float.y){
 00421310 
72657475 726E2063 6C616D70 28762C66  2C79293B 7D6D6174 32206E28 666C6F61   return.clamp(v,f,y);}mat2.n(floa
 00421330 
74207629 7B666C6F 61742066 3D73696E  2876292C 793D636F 73287629 3B726574   t.v){float.f=sin(v),y=cos(v);ret
 00421350 
75726E20 6D617432 28792C2D 662C662C  79293B7D 666C6F61 74206E28 666C6F61   urn.mat2(y,-f,f,y);}float.n(floa
 00421370 
7420762C 666C6F61 7420792C 666C6F61  74206D29 7B666C6F 6174207A 3D6D6178   t.v,float.y,float.m){float.z=max
 00421390 
286D2D61 62732876 2D79292C 302E293B  72657475 726E206D 61782876 2C79292B   (m-abs(v-y),0.);return.max(v,y)+
 004213B0 
7A2A7A2A 2E32352F 6D3B7D66 6C6F6174  20662876 65633220 762C696E 74207929   z*z*.25/m;}float.f(vec2.v,int.y)
 004213D0 
7B696628 793D3D31 297B666C 6F617420  6D3D646F 7428762C 76656332 28313237   {if(y==1){float.m=dot(v,vec2(127
 004213F0 
2E312C33 31312E37 29293B72 65747572  6E206672 61637428 73696E28 6D292A34   .1,311.7));return.fract(sin(m)*4
 00421410 
33373538 2E353435 33313233 293B7D76  3D35302E 2A667261 63742876 2A2E3331   3758.5453123);}v=50.*fract(v*.31
 00421430 
38333039 39293B72 65747572 6E206672  61637428 762E782A 762E792A 28762E78   83099);return.fract(v.x*v.y*(v.x
 00421450 
2B762E79 29293B7D 666C6F61 74207828  76656332 20762C66 6C6F6174 20792C69   +v.y));}float.x(vec2.v,float.y,i
 00421470 
6E74206D 297B7665 63322061 3D666C6F  6F722876 292C7A3D 66726163 74287629   nt.m){vec2.a=floor(v),z=fract(v)
 00421490 
2C693D7A 2A7A2A28 332E2D32 2E2A7A29  3B666C6F 61742078 3D793B69 66286D3D   ,i=z*z*(3.-2.*z);float.x=y;if(m=
 004214B0 
3D312978 3D322E3B 72657475 726E2D79  2B782A6D 6978286D 69782866 28612B76   =1)x=2.;return-y+x*mix(mix(f(a+v
 004214D0 
65633228 302E292C 6D292C66 28612B76  65633228 312E2C30 2E292C6D 292C692E   ec2(0.),m),f(a+vec2(1.,0.),m),i.
 004214F0 
78292C6D 69782866 28612B76 65633228  302E2C31 2E292C6D 292C6628 612B7665   x),mix(f(a+vec2(0.,1.),m),f(a+ve
 00421510 
63322831 2E292C6D 292C692E 78292C69  2E79293B 7D666C6F 61742073 28766563   c2(1.),m),i.x),i.y);}float.s(vec
 00421530 
3320762C 666C6F61 7420792C 666C6F61  74206D29 7B766563 3220663D 61627328   3.v,float.y,float.m){vec2.f=abs(
 00421550 
76656332 286C656E 67746828 762E7879  292C762E 7A29292D 76656332 286D2C79   vec2(length(v.xy),v.z))-vec2(m,y
 00421570 
293B7265 7475726E 206D696E 286D6178  28662E78 2C662E79 292C302E 292B6C65   );return.min(max(f.x,f.y),0.)+le
 00421590 
6E677468 286D6178 28662C30 2E29293B  7D666C6F 6174206E 28766563 3320762C   ngth(max(f,0.));}float.n(vec3.v,
 004215B0 
76656333 2079297B 76656333 20663D61  62732876 292D793B 72657475 726E206C   vec3.y){vec3.f=abs(v)-y;return.l
 004215D0 
656E6774 68286D61 7828662C 302E2929  2B6D696E 286D6178 28662E78 2C6D6178   ength(max(f,0.))+min(max(f.x,max
 004215F0 
28662E79 2C662E7A 29292C30 2E293B7D  666C6F61 74207428 76656333 20762C76   (f.y,f.z)),0.);}float.t(vec3.v,v
 00421610 
65633220 792C666C 6F617420 6D297B76  2E78792A 3D6E286D 293B7665 63332066   ec2.y,float.m){v.xy*=n(m);vec3.f
 00421630 
3D616273 2876293B 72657475 726E206D  61782866 2E7A2D79 2E792C6D 61782866   =abs(v);return.max(f.z-y.y,max(f
 00421650 
2E782A2E 38363630 32352B76 2E792A2E  352C2D76 2E79292D 792E782A 2E35293B   .x*.866025+v.y*.5,-v.y)-y.x*.5);
 00421670 
7D666C6F 61742073 28766563 3320762C  666C6F61 74207929 7B726574 75726E20   }float.s(vec3.v,float.y){return.
 00421690 
763D6162 73287629 2C28762E 782B762E  792B762E 7A2D7929 2A2E3537 373B7D66   v=abs(v),(v.x+v.y+v.z-y)*.577;}f
 004216B0 
6C6F6174 20613D39 2E2C703D 302E3B76  65633320 633D7665 6333282E 33362C2E   loat.a=9.,p=0.;vec3.c=vec3(.36,.
 004216D0 
392C302E 293B666C 6F617420 73287665  63332076 297B7265 7475726E 206D696E   9,0.);float.s(vec3.v){return.min
 004216F0 
2828792D 762E7929 2A762E7A 2C762E78  2A7A293B 7D666C6F 61742074 28666C6F   ((y-v.y)*v.z,v.x*z);}float.t(flo
 00421710 
61742076 297B7265 7475726E 20612B61  2A662873 696E2873 28766563 3328312E   at.v){return.a+a*f(sin(s(vec3(1.
 00421730 
352C762C 342E2929 2A2E3036 292C2D2E  392C2E39 293B7D76 65633320 78287665   5,v,4.))*.06),-.9,.9);}vec3.x(ve
 00421750 
63332076 297B666F 7228666C 6F617420  663D302E 3B663C37 2E3B662B 2B297B66   c3.v){for(float.f=0.;f<7.;f++){f
 00421770 
6C6F6174 206D3D61 2B662A33 2E2C7A3D  312E3B69 6628793E 6D297B69 66286D6F   loat.m=a+f*3.,z=1.;if(y>m){if(mo
 00421790 
6428662C 322E293E 3D312E29 7A3D2D31  2E3B762E 78792A3D 6E287428 6D292A7A   d(f,2.)>=1.)z=-1.;v.xy*=n(t(m)*z
 004217B0 
293B7D7D 72657475 726E2076 3B7D666C  6F617420 77287665 63322076 297B6966   );}}return.v;}float.w(vec2.v){if
 004217D0 
28793E3D 762E7929 762E782B 3D2E3034  352A6628 73696E28 73287665 63332833   (y>=v.y)v.x+=.045*f(sin(s(vec3(3
 004217F0 
2E2C762E 792C3430 2E29292A 2E34292C  2D2E382C 2E38293B 72657475 726E2076   .,v.y,40.))*.4),-.8,.8);return.v
 00421810 
2E783B7D 666C6F61 74207428 76656332  20762C66 6C6F6174 2066297B 762B3D78   .x;}float.t(vec2.v,float.f){v+=x
 00421830 
28762C31 2E2C3129 3B766563 3220793D  312E2D61 62732873 696E2876 29293B79   (v,1.,1);vec2.y=1.-abs(sin(v));y
 00421850 
3D6D6978 28792C61 62732863 6F732876  29292C79 293B7265 7475726E 20706F77   =mix(y,abs(cos(v)),y);return.pow
 00421870 
28312E2D 706F7728 792E782A 792E792C  2E363529 2C66293B 7D766563 33207728   (1.-pow(y.x*y.y,.65),f);}vec3.w(
 00421890 
76656333 20762C69 6E74206D 297B666C  6F617420 663D302E 2C693D31 65332C72   vec3.v,int.m){float.f=0.,i=1e3,r
 004218B0 
3D7A2F31 322E2C70 2C643D66 6C6F6F72  28617461 6E28762E 792C762E 78292F72   =z/12.,p,d=floor(atan(v.y,v.x)/r
 004218D0 
2B2E3529 2A723B76 65633320 633D763B  632E7879 3D6E2864 292A632E 78793B66   +.5)*r;vec3.c=v;c.xy=n(d)*c.xy;f
 004218F0 
6C6F6174 206C3D6C 656E6774 68286D61  78286162 7328632E 78792D76 65633228   loat.l=length(max(abs(c.xy-vec2(
 00421910 
312E382C 302E2929 2D766563 32282E32  342C2E31 34292C30 2E29292D 2E30322C   1.8,0.))-vec2(.24,.14),0.))-.02,
 00421930 
653D6162 73286C65 6E677468 28762E78  79292D31 2E38292D 2E323B6C 3D6D696E   e=abs(length(v.xy)-1.8)-.2;l=min
 00421950 
286C2C65 293B653D 6E286162 73286C65  6E677468 28762E78 79292D31 2E373529   (l,e);e=n(abs(length(v.xy)-1.75)
 00421970 
2D2E3038 2C616273 28762E7A 2D2E3129  2D2E3034 2C2E3030 35293B6C 3D6D6178   -.08,abs(v.z-.1)-.04,.005);l=max
 00421990 
282D652C 6C293B6C 3D6E286C 2C616273  28762E7A 292D2E31 2C2E3032 293B7665   (-e,l);l=n(l,abs(v.z)-.1,.02);ve
 004219B0 
63332068 3D782876 292C6F3D 683B723D  7A2F3136 2E3B6F2E 78793D6E 28666C6F   c3.h=x(v),o=h;r=z/16.;o.xy=n(flo
 004219D0 
6F722861 74616E28 682E792C 682E7829  2F722B2E 35292A72 292A6F2E 78793B65   or(atan(h.y,h.x)/r+.5)*r)*o.xy;e
 004219F0 
3D6E286F 2E78797A 2D766563 3328312E  37352C30 2E2C302E 292C7665 6333282E   =n(o.xyz-vec3(1.75,0.,0.),vec3(.
 00421A10 
30342C2E 31342C2E 30352929 2D2E3032  2B782876 2E78792A 3130302E 2C2E3030   04,.14,.05))-.02+x(v.xy*100.,.00
 00421A30 
312C3029 3B6C3D6D 696E286C 2C65293B  6966286C 3D3D6529 663D362E 3B653D31   1,0);l=min(l,e);if(l==e)f=6.;e=1
 00421A50 
65333B66 6C6F6174 20753D31 2E352C62  3D302E2C 672C463D 342E2C43 3D2E362C   e3;float.u=1.5,b=0.,g,F=4.,C=.6,
 00421A70 
6B3D2E32 3B666F72 28696E74 205A3D30  3B5A3C34 3B5A2B2B 29703D6E 28766563   k=.2;for(int.Z=0;Z<4;Z++)p=n(vec
 00421A90 
3328762E 782C762E 792B752B 2E30352C  762E7A29 2C766563 3328322E 2C2E322C   3(v.x,v.y+u+.05,v.z),vec3(2.,.2,
 00421AB0 
7529292D 2E30352C 653D6D69 6E28652C  70292C75 2B3D2E32 3B652B3D 7828762E   u))-.05,e=min(e,p),u+=.2;e+=x(v.
 00421AD0 
787A2A35 302E2B32 30302E2C 2E303037  2C30293B 6C3D6D69 6E286C2C 65293B69   xz*50.+200.,.007,0);l=min(l,e);i
 00421AF0 
66286C3D 3D652966 3D322E3B 6966286D  3D3D3129 7B766563 32205A3D 762E7879   f(l==e)f=2.;if(m==1){vec2.Z=v.xy
 00421B10 
3B666F72 28696E74 20593D30 3B593C34  3B592B2B 29673D74 28285A2B 79292A43   ;for(int.Y=0;Y<4;Y++)g=t((Z+y)*C
 00421B30 
2C46292C 672B3D74 28285A2D 79292A43  2C46292C 622B3D67 2A6B2C5A 2A3D6D61   ,F),g+=t((Z-y)*C,F),b+=g*k,Z*=ma
 00421B50 
74322831 2E362C31 2E322C2D 312E322C  312E3629 2C432A3D 312E392C 6B2A3D2E   t2(1.6,1.2,-1.2,1.6),C*=1.9,k*=.
 00421B70 
32322C46 3D6D6978 28462C31 2E2C2E34  293B7D65 3D6D6178 282D7328 762C322E   22,F=mix(F,1.,.4);}e=max(-s(v,2.
 00421B90 
2C6D696E 28312E37 2D28792D 32382E39  292A322E 352C322E 3329292C 7328762C   ,min(1.7-(y-28.9)*2.5,2.3)),s(v,
 00421BB0 
2E303235 2C312E36 292D622A 2E313529  3B653D6D 61782865 2C732876 2C2E332C   .025,1.6)-b*.15);e=max(e,s(v,.3,
 00421BD0 
312E3729 293B6C3D 6D696E28 6C2C6529  3B696628 6C3D3D65 29663D31 2E3B653D   1.7));l=min(l,e);if(l==e)f=1.;e=
 00421BF0 
762E792B 332E372B 78287665 63322876  2E782C76 2E7A2A2E 34342D34 302E292A   v.y+3.7+x(vec2(v.x,v.z*.44-40.)*
 00421C10 
2E30342B 3130302E 2C32302E 2C30292B  2E32352A 73696E28 762E7A2A 2E352B79   .04+100.,20.,0)+.25*sin(v.z*.5+y
 00421C30 
293B6C3D 6D696E28 6C2C6529 3B696628  6C3D3D65 29663D33 2E3B653D 7328762B   );l=min(l,e);if(l==e)f=3.;e=s(v+
 00421C50 
76656333 282D3735 2E2C302E 2C313030  2E292C36 302E293B 6C3D6D69 6E286C2C   vec3(-75.,0.,100.),60.);l=min(l,
 00421C70 
65293B69 66286C3D 3D652966 3D332E3B  666F7228 666C6F61 74205A3D 302E3B5A   e);if(l==e)f=3.;for(float.Z=0.;Z
 00421C90 
3C382E3B 5A2B2B29 7B633D76 3B643D32  342E3637 2F287A2A 322E292B 285A2B31   <8.;Z++){c=v;d=24.67/(z*2.)+(Z+1
 00421CB0 
2E292A7A 2F342E3B 6966285A 3D3D312E  29642B3D 2E323B69 66285A3D 3D372E29   .)*z/4.;if(Z==1.)d+=.2;if(Z==7.)
 00421CD0 
642D3D2E 323B632E 78793D6E 2864292A  632E7879 3B666C6F 61742059 3D612B28   d-=.2;c.xy=n(d)*c.xy;float.Y=a+(
 00421CF0 
5A2D312E 292A332E 2B312E35 3B696628  5A3E302E 297B632E 782D3D31 2E39353B   Z-1.)*3.+1.5;if(Z>0.){c.x-=1.95;
 00421D10 
76656333 20583D63 3B696628 793E5929  582E783D 77287665 63322858 2E782C59   vec3.X=c;if(y>Y)X.x=w(vec2(X.x,Y
 00421D30 
29293B66 6C6F6174 20573D74 28766563  3328632E 782D2E30 362C632E 792C632E   ));float.W=t(vec3(c.x-.06,c.y,c.
 00421D50 
7A292C76 65633228 2E312C2E 3135292C  2E35292D 2E30313B 653D6D61 78282D74   z),vec2(.1,.15),.5)-.01;e=max(-t
 00421D70 
28766563 3328582E 782D2E31 342C582E  792C582E 7A292C76 65633228 2E323229   (vec3(X.x-.14,X.y,X.z),vec2(.22)
 00421D90 
2C2E3529 2D2E3031 2C742876 65633328  582E782C 582E792C 582E7A29 2C766563   ,.5)-.01,t(vec3(X.x,X.y,X.z),vec
 00421DB0 
32282E32 2C2E3132 292C2E35 292D2E30  32293B65 3D6D696E 28652C57 293B6C3D   2(.2,.12),.5)-.02);e=min(e,W);l=
 00421DD0 
6D696E28 6C2C6529 3B696628 6C3D3D65  29663D34 2E3B6966 286C3D3D 57296966   min(l,e);if(l==e)f=4.;if(l==W)if
 00421DF0 
28793E59 2B2E3229 663D352E 2C693D6D  696E2865 2C57293B 7D7D7265 7475726E   (y>Y+.2)f=5.,i=min(e,W);}}return
 00421E10 
20766563 33286C2C 662C6929 3B7D666C  6F617420 77287665 63332076 2C766563   .vec3(l,f,i);}float.w(vec3.v,vec
 00421E30 
3320792C 696E7420 6D297B76 65633320  663B666C 6F617420 693D302E 3B666F72   3.y,int.m){vec3.f;float.i=0.;for
 00421E50 
28696E74 206C3D30 3B6C3C31 30303B6C  2B2B297B 663D7728 762B792A 692C3029   (int.l=0;l<100;l++){f=w(v+y*i,0)
 00421E70 
3B696628 6D3D3D30 2626662E 7A3C2E33  29702B3D 706F7728 2E30312F 662E7A2C   ;if(m==0&&f.z<.3)p+=pow(.01/f.z,
 00421E90 
2E38292A 2E363B69 2B3D662E 783B6966  28662E78 3C2E3030 317C7C69 3E353030   .8)*.6;i+=f.x;if(f.x<.001||i>500
 00421EB0 
2E296272 65616B3B 7D726574 75726E20  693B7D76 65633320 72287665 63332076   .)break;}return.i;}vec3.r(vec3.v
 00421ED0 
297B7665 63322079 3D766563 32282E30  312C302E 293B7665 6333206D 3D772876   ){vec2.y=vec2(.01,0.);vec3.m=w(v
 00421EF0 
2C31292E 782D7665 63332877 28762D79  2E787979 2C31292E 782C7728 762D792E   ,1).x-vec3(w(v-y.xyy,1).x,w(v-y.
 00421F10 
7978792C 31292E78 2C772876 2D792E79  79782C31 292E7829 3B726574 75726E20   yxy,1).x,w(v-y.yyx,1).x);return.
 00421F30 
66286D29 3B7D666C 6F617420 66287665  63332076 2C766563 3320792C 666C6F61   f(m);}float.f(vec3.v,vec3.y,floa
 00421F50 
74206D2C 666C6F61 7420782C 76656333  206C2C66 6C6F6174 207A297B 76656333   t.m,float.x,vec3.l,float.z){vec3
 00421F70 
20653D66 28792D76 293B666C 6F617420  693D6C65 6E677468 28792D76 292C703D   .e=f(y-v);float.i=length(y-v),p=
 00421F90 
6628646F 74286C2C 65292A6D 2C302E2C  6D292F28 312E2B7A 2A69292C 5A3D7728   f(dot(l,e)*m,0.,m)/(1.+z*i),Z=w(
 00421FB0 
762B6C2A 2E303032 352C652C 31293B69  66285A3C 6C656E67 74682879 2D762929   v+l*.0025,e,1);if(Z<length(y-v))
 00421FD0 
702A3D78 3B726574 75726E20 703B7D66  6C6F6174 20722876 65633320 762C7665   p*=x;return.p;}float.r(vec3.v,ve
 00421FF0 
63332079 2C666C6F 61742066 297B7265  7475726E 20706F77 28646F74 28762C79   c3.y,float.f){return.pow(dot(v,y
 00422010 
292A2E34 2B2E362C 66293B7D 666C6F61  74206628 76656333 20762C76 65633320   )*.4+.6,f);}float.f(vec3.v,vec3.
 00422030 
792C7665 6333206D 2C666C6F 61742066  297B666C 6F617420 6C3D2866 2B382E29   y,vec3.m,float.f){float.l=(f+8.)
 00422050 
2F287A2A 382E293B 72657475 726E2070  6F77286D 61782864 6F742872 65666C65   /(z*8.);return.pow(max(dot(refle
 00422070 
6374286D 2C76292C 79292C30 2E292C66  292A6C3B 7D766563 33206E28 76656333   ct(m,v),y),0.),f)*l;}vec3.n(vec3
 00422090 
20762C76 65633320 792C7665 6333206D  2C766563 33206529 7B766563 3320693D   .v,vec3.y,vec3.m,vec3.e){vec3.i=
 004220B0 
76656333 28302E2C 2E312C2E 33292B72  28792C6D 2C36302E 292A7665 6333282E   vec3(0.,.1,.3)+r(y,m,60.)*vec3(.
 004220D0 
31312C2E 31362C2E 3138292A 2E333B69  2D3D7665 6333282E 37332C2E 31352C2E   11,.16,.18)*.3;i-=vec3(.73,.15,.
 004220F0 
3636292A 706F7728 6628312E 2D646F74  28792C2D 65292C30 2E2C312E 292C2E37   66)*pow(f(1.-dot(y,-e),0.,1.),.7
 00422110 
293B692B 3D766563 33286628 792C6D2C  652C3630 2E29292A 2E323B72 65747572   );i+=vec3(f(y,m,e,60.))*.2;retur
 00422130 
6E20693B 7D766563 33206628 76656333  20762C66 6C6F6174 20792C76 65633320   n.i;}vec3.f(vec3.v,float.y,vec3.
 00422150 
6D2C7665 63332066 2C666C6F 6174207A  297B7665 6333206C 3D6D6978 28766563   m,vec3.f,float.z){vec3.l=mix(vec
 00422170 
33282E33 342C2E31 312C2E33 34292C76  65633328 2E39332C 2E33372C 2E313629   3(.34,.11,.34),vec3(.93,.37,.16)
 00422190 
2C706F77 286D6178 28646F74 286D2C66  292C302E 292C382E 29293B72 65747572   ,pow(max(dot(m,f),0.),8.));retur
 004221B0 
6E206D69 7828762C 6C2C312E 2D657870  282D792A 7A29293B 7D766563 33207228   n.mix(v,l,1.-exp(-y*z));}vec3.r(
 004221D0 
76656332 20762C76 65633320 792C7665  6333206D 2C666C6F 6174207A 297B7665   vec2.v,vec3.y,vec3.m,float.z){ve
 004221F0 
6333206C 3D66286D 2D79292C 653D6628  63726F73 73287665 63332830 2E2C312E   c3.l=f(m-y),e=f(cross(vec3(0.,1.
 00422210 
2C302E29 2C6C2929 2C693D63 726F7373  286C2C65 292C613D 6C2A7A2C 5A3D612B   ,0.),l)),i=cross(l,e),a=l*z,Z=a+
 00422230 
762E782A 652B762E 792A692C 673D6628  5A293B72 65747572 6E20673B 7D766563   v.x*e+v.y*i,g=f(Z);return.g;}vec
 00422250 
33206828 76656333 2076297B 72657475  726E2076 2A3D7665 6333282E 392C2E38   3.h(vec3.v){return.v*=vec3(.9,.8
 00422270 
2C2E3729 2C763D70 6F772876 2C766563  33282E34 3529292C 763D736D 6F6F7468   ,.7),v=pow(v,vec3(.45)),v=smooth
 00422290 
73746570 28302E2C 312E2C76 292C762B  3D312E2D 76656333 28662828 34362E2D   step(0.,1.,v),v+=1.-vec3(f((46.-
 004222B0 
79292A2E 352C302E 2C312E29 292C763B  7D766563 33206628 297B7665 63332076   y)*.5,0.,1.)),v;}vec3.f(){vec3.v
 004222D0 
3D766563 3328302E 2C662836 2E2D792C  322E2C36 2E292C66 28313030 2E2D792A   =vec3(0.,f(6.-y,2.,6.),f(100.-y*
 004222F0 
31312E2C 362E2C31 30302E29 293B6966  28793E37 2E352976 2B3D7665 63332830   11.,6.,100.));if(y>7.5)v+=vec3(0
 00422310 
2E2C6628 372E352D 792C2D31 2E2C302E  292C302E 293B6966 28793E31 302E3529   .,f(7.5-y,-1.,0.),0.);if(y>10.5)
 00422330 
763D7665 63332832 2E2C2D31 2E2C312E  293B6966 28793E31 322E2976 3D766563   v=vec3(2.,-1.,1.);if(y>12.)v=vec
 00422350 
33282D31 2E2C2D2E 372C342E 293B6966  28793E31 342E3529 763D7665 63332830   3(-1.,-.7,4.);if(y>14.5)v=vec3(0
 00422370 
2E2C302E 2C342E29 2C762E79 7A2A3D6E  282D2E36 2D636F73 28792D31 352E292A   .,0.,4.),v.yz*=n(-.6-cos(y-15.)*
 00422390 
2E303529 2C762E78 7A2A3D6E 2873696E  2828792D 31362E35 292A2E31 29293B69   .05),v.xz*=n(sin((y-16.5)*.1));i
 004223B0 
6628793E 32332E35 29763D76 65633328  332E2C2D 2E372C34 2E293B69 6628793E   f(y>23.5)v=vec3(3.,-.7,4.);if(y>
 004223D0 
33322E35 29763D76 65633328 2D32302E  2C31302E 2C35302E 293B6966 28793E33   32.5)v=vec3(-20.,10.,50.);if(y>3
 004223F0 
362E3529 763D7665 63332833 2E2C2D2E  372C342E 292C762E 797A2A3D 6E282831   6.5)v=vec3(3.,-.7,4.),v.yz*=n((1
 00422410 
2E2D636F 7328792D 33362E35 29292A2D  2E303235 292C762E 787A2A3D 6E287369   .-cos(y-36.5))*-.025),v.xz*=n(si
 00422430 
6E282879 2D33362E 35292A2E 30372929  3B726574 75726E20 763B7D76 65633320   n((y-36.5)*.07));return.v;}vec3.
 00422450 
6828297B 76656333 20763D76 65633328  302E2C2D 2E352C30 2E293B69 6628793E   h(){vec3.v=vec3(0.,-.5,0.);if(y>
 00422470 
31302E35 29763D76 65633328 312E372C  2D312E31 2C302E29 3B696628 793E3132   10.5)v=vec3(1.7,-1.1,0.);if(y>12
 00422490 
2E29763D 76656333 28302E29 3B696628  793E3134 2E352976 3D6D6978 28766563   .)v=vec3(0.);if(y>14.5)v=mix(vec
 004224B0 
3328312E 352C312E 342C302E 292C7665  6333282D 312E352C 312E342C 302E292C   3(1.5,1.4,0.),vec3(-1.5,1.4,0.),
 004224D0 
28792D31 362E3529 2A2E3133 293B6966  28793E32 332E3529 763D7665 63332830   (y-16.5)*.13);if(y>23.5)v=vec3(0
 004224F0 
2E293B72 65747572 6E20763B 7D766563  33206428 76656333 2076297B 69662879   .);return.v;}vec3.d(vec3.v){if(y
 00422510 
3E31302E 3735297B 666C6F61 7420663D  736D6F6F 74687374 6570282D 312E2C2E   >10.75){float.f=smoothstep(-1.,.
 00422530 
382C7369 6E287328 76656333 282E382C  31302E37 352C382E 29292A32 2E29293B   8,sin(s(vec3(.8,10.75,8.))*2.));
 00422550 
763D6D69 7828762C 632A2866 2A312E34  292C662A 2E373629 3B7D7265 7475726E   v=mix(v,c*(f*1.4),f*.76);}return
 00422570 
20763B7D 76656333 20642876 65633320  762C7665 63332079 2C666C6F 6174206D   .v;}vec3.d(vec3.v,vec3.y,float.m
 00422590 
2C666C6F 61742065 297B7265 7475726E  20766563 33286628 762C6628 76656333   ,float.e){return.vec3(f(v,f(vec3
 004225B0 
28302E2C 2E332C2E 3829292C 66287929  2C706F77 2831302E 2C652929 292A6D3B   (0.,.3,.8)),f(y),pow(10.,e)))*m;
 004225D0 
7D766563 33206C28 76656332 2076297B  76656333 206D3D66 28292C6C 3D722876   }vec3.l(vec2.v){vec3.m=f(),l=r(v
 004225F0 
2C6D2C68 28292C66 28283433 2E2D7929  2A2D322E 2C322E2C 32352E29 292C693D   ,m,h(),f((43.-y)*-2.,2.,25.)),i=
 00422610 
76656333 28302E29 3B666C6F 61742065  3D77286D 2C6C2C30 292C5A3D 302E3B69   vec3(0.);float.e=w(m,l,0),Z=0.;i
 00422630 
6628653C 3530302E 297B7665 6333207A  3D6D2B6C 2A652C61 3D72287A 293B5A3D   f(e<500.){vec3.z=m+l*e,a=r(z);Z=
 00422650 
77287A2C 30292E79 3B692B3D 76656333  282E3832 2C2E352C 2E39292A 66287A2C   w(z,0).y;i+=vec3(.82,.5,.9)*f(z,
 00422670 
76656333 2831302E 2C31352E 2C32352E  292C312E 2C2E322C 612C3165 2D313029   vec3(10.,15.,25.),1.,.2,a,1e-10)
 00422690 
3B692B3D 76656333 282E3739 2C2E3636  2C2E3433 292A6628 7A2C7665 63332834   ;i+=vec3(.79,.66,.43)*f(z,vec3(4
 004226B0 
2E2C322E 2C2D3135 2E292C31 2E2C312E  2C612C31 652D3130 293B692B 3D766563   .,2.,-15.),1.,1.,a,1e-10);i+=vec
 004226D0 
3328302E 2C2E3036 2C2E3729 2A66287A  2C766563 3328302E 2C302E2C 352E292C   3(0.,.06,.7)*f(z,vec3(0.,0.,5.),
 004226F0 
66282879 2D32392E 292A3130 302E2C30  2E2C3530 2E292C30 2E2C612C 332E3129   f((y-29.)*100.,0.,50.),0.,a,3.1)
 00422710 
3B692B3D 76656333 282E3239 2C2E3238  2C2E3333 292A6628 646F7428 612C6628   ;i+=vec3(.29,.28,.33)*f(dot(a,f(
 00422730 
76656333 28302E2C 312E2C31 302E2929  292C302E 2C312E29 3B696628 5A3D3D30   vec3(0.,1.,10.))),0.,1.);if(Z==0
 00422750 
2E29692A 3D766563 33282E32 2C2E332C  2E33292B 6428612C 6C2C2E35 2C322E29   .)i*=vec3(.2,.3,.3)+d(a,l,.5,2.)
 00422770 
3B696628 5A3D3D31 2E29692A 3D6E287A  2C612C66 28766563 3328302E 2C2E332C   ;if(Z==1.)i*=n(z,a,f(vec3(0.,.3,
 00422790 
2E382929 2C66286C 29293B69 66285A3D  3D322E29 692A3D76 65633328 2E372C2E   .8)),f(l));if(Z==2.)i*=vec3(.7,.
 004227B0 
372C2E34 292B7828 7A2E787A 2A332E2B  312E352C 2E312C30 293B6966 285A3D3D   7,.4)+x(z.xz*3.+1.5,.1,0);if(Z==
 004227D0 
332E2969 2A3D7665 6333282E 382C2E38  2C2E3529 2B78287A 2E787A2A 3530302E   3.)i*=vec3(.8,.8,.5)+x(z.xz*500.
 004227F0 
2B316535 2C2E332C 30293B69 66285A3D  3D342E29 692A3D76 65633328 302E2C2E   +1e5,.3,0);if(Z==4.)i*=vec3(0.,.
 00422810 
30382C2E 3131292B 6428612C 6C2C2E33  2C2E3729 3B696628 5A3D3D35 2E29693D   08,.11)+d(a,l,.3,.7);if(Z==5.)i=
 00422830 
632A2E34 3B696628 5A3D3D36 2E29692A  3D766563 33282E30 312C2E30 342C2E30   c*.4;if(Z==6.)i*=vec3(.01,.04,.0
 00422850 
36292B64 28612C6C 2C2E312C 322E3529  3B7D692B 3D702A63 2A2E3235 3B726574   6)+d(a,l,.1,2.5);}i+=p*c*.25;ret
 00422870 
75726E20 68286428 6628692C 652C6C2C  76656333 28302E2C 2D2E312C 2D312E29   urn.h(d(f(i,e,l,vec3(0.,-.1,-1.)
 00422890 
2C2E3031 2929293B 7D766F69 64206D61  696E2829 7B766563 3220763D 76656332   ,.01)));}void.main(){vec2.v=vec2
 004228B0 
28313932 302C3130 3830292C 663D676C  5F467261 67436F6F 72642E78 792F762E   (1920,1080),f=gl_FragCoord.xy/v.
 004228D0 
78792C79 3D2D312E 2B322E2A 663B792E  782A3D76 2E782F76 2E793B69 3D766563   xy,y=-1.+2.*f;y.x*=v.x/v.y;i=vec
 004228F0 
34286C28 79292C31 2E293B7D                                                 4(l(y),1.);}                    
-004228FC Uninitialized sections146745296  
-00422900 MAIN.OBJ:.bss24041216  
-00422900 ?lpSoundBuffer@@3PAFA24041216  
 00422900 ?lpSoundBuffer@@3PAFA23988224  
 01B03100 ?hWaveOut@@3PAUHWAVEOUT__@@A4  
 01B03104 ?pidMain@@3HA52988  
-01B10000 crinkler import:.bss488  
 01B10000 _ImportList   
 01B10000 __imp__CreateThread@244  
 01B10004 __imp__ExitProcess@44  
 01B10008 __imp__LoadLibraryA@44  
 01B1000C __imp__ChangeDisplaySettingsA@84  
 01B10010 __imp__CreateWindowExA@484  
 01B10014 __imp__GetAsyncKeyState@44  
 01B10018 __imp__GetDC@44  
 01B1001C __imp__PeekMessageA@204  
 01B10020 __imp__ShowCursor@44  
 01B10024 __imp__ChoosePixelFormat@84  
 01B10028 __imp__SetPixelFormat@124  
 01B1002C __imp__SwapBuffers@44  
 01B10030 __imp__glRects@16376  
 01B101A8 __imp__wglCreateContext@440  
 01B101D0 __imp__wglGetProcAddress@44  
 01B101D4 __imp__wglMakeCurrent@84  
 01B101D8 __imp__waveOutGetPosition@124  
 01B101DC __imp__waveOutOpen@244  
 01B101E0 __imp__waveOutPrepareHeader@124  
 01B101E4 __imp__waveOutWrite@124  
-01B101E8 4KLANG.OBJ:.g4kbss1122703588  
-01B101E8 go4k_voiceindex12704  
 01B101E8 go4k_voiceindex64  
 01B10228 go4k_transformed_values64  
 01B10268 go4k_synth_wrk12576  
 01B13388 _go4k_delay_buffer_ofs4  
 01B1338C _go4k_delay_buffer122690880  

http://www.crinkler.net

\ No newline at end of file diff --git a/out/leviathan-debug.exe b/out/leviathan-debug.exe deleted file mode 100644 index 79c7dc2..0000000 Binary files a/out/leviathan-debug.exe and /dev/null differ diff --git a/out/leviathan-release.exe b/out/leviathan-release.exe deleted file mode 100644 index ad4d903..0000000 Binary files a/out/leviathan-release.exe and /dev/null differ diff --git a/prepare_music.bat b/prepare_music.bat new file mode 100644 index 0000000..53cb52a --- /dev/null +++ b/prepare_music.bat @@ -0,0 +1,7 @@ +sointu-compile -o . -arch=386 song.yml +nasm -f win32 song.asm +del song.inc +del song.asm +move song.obj src\sointu\ +move song.h src\sointu\ + diff --git a/shader_minifier.exe b/shader_minifier.exe index dbd0d61..48a0c92 100644 Binary files a/shader_minifier.exe and b/shader_minifier.exe differ diff --git a/sointu-compile.exe b/sointu-compile.exe new file mode 100644 index 0000000..2108e39 Binary files /dev/null and b/sointu-compile.exe differ diff --git a/song.yml b/song.yml new file mode 100644 index 0000000..02b88c4 --- /dev/null +++ b/song.yml @@ -0,0 +1,363 @@ +bpm: 138 +rowsperbeat: 4 +score: + tracks: + - numvoices: 2 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 2, -1, 1, -1, 4, -1, 1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, 2, -1, 3, 5, 2, 6, 0, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 0, -1, 1, -1] + patterns: [[33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 28, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 2 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 2, -1, 1, -1, 4, -1, 1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 4, -1, 2, -1, 0, -1, -1, -1, 0, -1, -1, -1, 5, -1, 5, -1, 6, 7, 5, 8, 9, -1, -1, -1, 9, -1, 1, -1, 9, -1, 1, -1, 0, -1, 1, -1] + patterns: [[45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1], [57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 4, -1, 1, -1, 3, -1, 1, -1, 5, -1, 1, -1, 6, 7, 6, 7, 6, 7, 6, 8, 6, 7, 6, 7, 6, 7, 6, 7, 9, 10, 9, 10, 9, 10, 9, 10, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 5, -1, 3, -1, 6, 7, 6, 7, 11, 12, 9, 10, 6, 7, 6, 13, 6, 7, 6, 7, 9, 10, 9, 14, 15, 16, 9, 17, 6, 6, 6, 6, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1] + patterns: [[57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 67, 0, 69, 0], [57, 0, 57, 0, 57, 0, 57, 0, 64, 1, 62, 1, 60, 1, 55, 1], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 63, 0, 65, 0], [55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0], [55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 65, 0, 67, 0], [57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 57, 0, 69, 0, 57, 0], [53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 53, 0, 65, 0], [50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0, 50, 0], [50, 0, 50, 0, 50, 0, 50, 0, 52, 0, 52, 0, 52, 0, 52, 0], [53, 0, 53, 0, 53, 0, 53, 0, 55, 0, 55, 0, 55, 0, 55, 0]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[60, 1, 1, 1, 1, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1], [60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 1, 1, 1, 60, 1], [60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 72, 1, 1, 1], [1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1]] + - numvoices: 1 + order: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 4, -1] + patterns: [[88, 0, 83, 0, 84, 0, 81, 0, 88, 0, 83, 0, 84, 0, 81, 0], [91, 0, 83, 0, 84, 0, 81, 0, 91, 0, 83, 0, 84, 0, 81, 0], [89, 0, 83, 0, 84, 0, 81, 0, 89, 0, 83, 0, 84, 0, 81, 0], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, 2, -1, 1, -1, 3, -1, 1, -1, 2, -1, 1, -1, 4, -1, 1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, 1, -1, 0, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, -1, -1, -1, -1] + patterns: [[45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + - numvoices: 1 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, 3, 4, 5, -1, 0, 6, -1, -1, 0, 6, -1, 7, 0, -1, -1, -1, 8, -1, -1, 9, -1, -1, -1, -1, 10, 7, 11, 12, 0, -1, -1, 13, 10, 7, 11, 7, 8, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 81, 1], [1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 74, 1, 76, 1, 1, 1], [71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1], [69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [88, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1]] + - numvoices: 4 + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] + patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 83, 84, 86], [88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81, 88, 83, 84, 81], [91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81, 91, 83, 84, 81], [93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81, 93, 83, 84, 81], [89, 81, 83, 84, 86, 88, 89, 91, 89, 81, 83, 84, 83, 84, 86, 88], [89, 79, 81, 83, 81, 83, 84, 86, 84, 86, 88, 89, 88, 84, 86, 83], [91, 88, 89, 86, 88, 84, 86, 83, 84, 81, 83, 79, 81, 77, 79, 76], [77, 74, 76, 72, 74, 71, 72, 69, 71, 67, 69, 65, 67, 69, 71, 74], [77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77, 76], [74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 71, 72, 76], [84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 79, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + rowsperpattern: 16 + length: 108 +patch: + - name: 80s lead + numvoices: 4 + units: + - type: oscillator + id: 1089 + parameters: {color: 128, detune: 80, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 1, transpose: 76, type: 1, unison: 3} + - type: oscillator + id: 1090 + parameters: {color: 128, detune: 57, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 2} + - type: addp + id: 1091 + parameters: {stereo: 1} + - type: envelope + id: 1092 + parameters: {attack: 37, decay: 66, gain: 90, release: 54, stereo: 1, sustain: 81} + - type: mulp + id: 1098 + parameters: {stereo: 1} + - type: pan + id: 1096 + parameters: {panning: 60, stereo: 1} + - type: filter + id: 1108 + parameters: {bandpass: 0, frequency: 84, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 1} + - type: gain + id: 1119 + parameters: {gain: 64, stereo: 1} + - type: filter + id: 1133 + parameters: {bandpass: 0, frequency: 10, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 88, stereo: 1} + - type: outaux + id: 1097 + parameters: {auxgain: 34, outgain: 34, stereo: 1} + - name: 80s bass + numvoices: 1 + units: + - type: oscillator + id: 3 + parameters: {color: 128, detune: 64, gain: 128, lfo: 0, phase: 64, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 0} + - type: oscillator + id: 4 + parameters: {color: 128, detune: 76, gain: 128, lfo: 0, phase: 30, shape: 64, stereo: 1, transpose: 52, type: 1, unison: 1} + - type: addp + id: 1084 + parameters: {stereo: 1} + - type: envelope + id: 1085 + parameters: {attack: 0, decay: 69, gain: 100, release: 68, stereo: 1, sustain: 50} + - type: send + id: 1088 + parameters: {amount: 100, port: 0, sendpop: 0, stereo: 1, target: 1087, voice: 0} + - type: mulp + id: 1086 + parameters: {stereo: 1} + - type: distort + id: 1107 + parameters: {drive: 112, stereo: 1} + - type: filter + id: 1087 + parameters: {bandpass: 0, frequency: 30, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 40, stereo: 1} + - type: pan + id: 284 + parameters: {panning: 64, stereo: 1} + - type: gain + id: 1121 + parameters: {gain: 110, stereo: 1} + - type: outaux + id: 15 + parameters: {auxgain: 30, outgain: 30, stereo: 1} + - name: Kick + comment: 'Suggested note: C-3' + numvoices: 1 + units: + - type: envelope + id: 261 + parameters: {attack: 0, decay: 49, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: noise + id: 269 + parameters: {gain: 128, shape: 74, stereo: 0} + - type: send + id: 268 + parameters: {amount: 96, port: 0, sendpop: 1, stereo: 0, target: 262, voice: 0} + - type: oscillator + id: 262 + parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 57, type: 0, unison: 0} + - type: filter + id: 281 + parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 0, negbandpass: 1, neghighpass: 1, resonance: 98, stereo: 0} + - type: mulp + id: 263 + parameters: {stereo: 0} + - type: envelope + id: 280 + parameters: {attack: 0, decay: 64, gain: 80, release: 64, stereo: 0, sustain: 0} + - type: send + id: 1110 + parameters: {amount: 75, port: 0, sendpop: 1, stereo: 0, target: 277, voice: 0} + - type: noise + id: 275 + parameters: {gain: 72, shape: 24, stereo: 0} + - type: send + id: 276 + parameters: {amount: 84, port: 0, sendpop: 1, stereo: 0, target: 277, voice: 0} + - type: envelope + id: 274 + parameters: {attack: 45, decay: 70, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 1118 + parameters: {amount: 0, port: 0, sendpop: 0, stereo: 0, target: 1119, voice: 0} + - type: send + id: 1122 + parameters: {amount: 0, port: 0, sendpop: 0, stereo: 0, target: 1121, voice: 0} + - type: send + id: 1124 + parameters: {amount: 32, port: 0, sendpop: 0, stereo: 0, target: 1123, voice: 0} + - type: oscillator + id: 277 + parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 45, type: 0} + - type: mulp + id: 279 + parameters: {stereo: 0} + - type: addp + id: 271 + parameters: {stereo: 0} + - type: pan + id: 294 + parameters: {panning: 64, stereo: 0} + - type: filter + id: 1132 + parameters: {bandpass: 0, frequency: 11, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 1} + - type: outaux + id: 266 + parameters: {auxgain: 14, outgain: 50, stereo: 1} + - name: snare edm 3 + comment: 'Suggested range: E-4' + numvoices: 1 + units: + - type: envelope + id: 217 + parameters: {attack: 0, decay: 67, gain: 29, release: 0, stereo: 0, sustain: 0} + - type: oscillator + id: 218 + parameters: {color: 128, detune: 64, gain: 80, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 57, type: 0, unison: 0} + - type: mulp + id: 221 + parameters: {stereo: 0} + - type: envelope + id: 222 + parameters: {attack: 0, decay: 69, gain: 54, release: 0, stereo: 0, sustain: 0} + - type: noise + id: 223 + parameters: {gain: 31, shape: 14, stereo: 0} + - type: mulp + id: 224 + parameters: {stereo: 0} + - type: filter + id: 201 + parameters: {bandpass: 0, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 127, stereo: 0} + - type: filter + id: 225 + parameters: {bandpass: 0, frequency: 122, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 112, stereo: 0} + - type: addp + id: 226 + parameters: {stereo: 0} + - type: distort + id: 338 + parameters: {drive: 108, stereo: 0} + - type: pan + id: 231 + parameters: {panning: 63, stereo: 0} + - type: outaux + id: 232 + parameters: {auxgain: 52, outgain: 58, stereo: 1} + - type: envelope + id: 233 + parameters: {attack: 37, decay: 47, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 234 + parameters: {amount: 69, port: 0, sendpop: 1, target: 218} + - type: envelope + id: 235 + parameters: {attack: 53, decay: 58, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 236 + parameters: {amount: 0, port: 0, sendpop: 1, target: 201} + - type: envelope + id: 237 + parameters: {attack: 53, decay: 73, gain: 128, release: 0, stereo: 0, sustain: 0} + - type: send + id: 238 + parameters: {amount: 32, port: 0, sendpop: 1, target: 202} + - name: SuperSaw 4 + comment: Automate filter frequency for the classic trance sound + numvoices: 2 + units: + - type: envelope + id: 1109 + parameters: {attack: 0, decay: 0, gain: 64, release: 64, stereo: 0, sustain: 85} + - type: oscillator + id: 1099 + parameters: {color: 128, detune: 96, gain: 64, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: oscillator + id: 12 + parameters: {color: 128, detune: 77, gain: 80, lfo: 0, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: addp + id: 13 + parameters: {stereo: 0} + - type: mulp + id: 16 + parameters: {stereo: 0} + - type: envelope + id: 17 + parameters: {attack: 18, decay: 67, gain: 64, release: 64, stereo: 0, sustain: 99} + - type: oscillator + id: 18 + parameters: {color: 128, detune: 46, gain: 81, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: oscillator + id: 19 + parameters: {color: 128, detune: 38, gain: 76, lfo: 0, phase: 64, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 3} + - type: addp + id: 20 + parameters: {stereo: 0} + - type: mulp + id: 23 + parameters: {stereo: 0} + - type: gain + id: 1123 + parameters: {gain: 120, stereo: 1} + - type: delay + id: 24 + parameters: {damp: 0, dry: 0, feedback: 0, notetracking: 0, pregain: 128, stereo: 0} + varargs: [420] + - type: delay + id: 29 + parameters: {damp: 0, dry: 71, feedback: 32, notetracking: 2, pregain: 71, stereo: 1} + varargs: [32, 36] + - type: outaux + id: 30 + parameters: {auxgain: 23, outgain: 25, stereo: 1} + - name: pad + numvoices: 1 + units: + - type: envelope + id: 1 + parameters: {attack: 72, decay: 96, gain: 128, release: 88, stereo: 0, sustain: 96} + - type: send + id: 2 + parameters: {amount: 64, port: 4, sendpop: 0, target: 1} + - type: oscillator + id: 1125 + parameters: {color: 80, detune: 60, gain: 128, lfo: 0, phase: 32, shape: 64, stereo: 0, transpose: 64, type: 2} + - type: oscillator + id: 1126 + parameters: {color: 96, detune: 72, gain: 128, lfo: 0, phase: 32, shape: 64, stereo: 0, transpose: 64, type: 1} + - type: oscillator + id: 5 + parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 90, stereo: 0, transpose: 32, type: 0} + - type: send + id: 6 + parameters: {amount: 68, port: 1, sendpop: 0, target: 1125} + - type: send + id: 78 + parameters: {amount: 61, port: 1, sendpop: 1, target: 1126} + - type: addp + id: 80 + parameters: {stereo: 0} + - type: mulp + id: 10 + parameters: {stereo: 0} + - type: filter + id: 11 + parameters: {bandpass: 0, frequency: 26, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + - type: filter + id: 1127 + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + - type: distort + id: 1128 + parameters: {drive: 109, stereo: 0} + - type: pan + id: 1129 + parameters: {panning: 64, stereo: 0} + - type: delay + id: 1130 + parameters: {damp: 64, dry: 128, feedback: 96, notetracking: 2, pregain: 96, stereo: 1} + varargs: [24, 48] + - type: outaux + id: 1131 + parameters: {auxgain: 15, outgain: 15, stereo: 1} + - name: HappyLead + numvoices: 4 + units: + - type: oscillator + id: 164 + parameters: {color: 84, detune: 62, gain: 128, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 0} + - type: oscillator + id: 165 + parameters: {color: 128, detune: 62, gain: 92, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 64, type: 1, unison: 2} + - type: addp + id: 166 + parameters: {stereo: 0} + - type: envelope + id: 163 + parameters: {attack: 44, decay: 64, gain: 72, release: 64, stereo: 0, sustain: 92} + - type: mulp + id: 167 + parameters: {stereo: 0} + - type: pan + id: 168 + parameters: {panning: 60, stereo: 0} + - type: delay + id: 169 + parameters: {damp: 0, dry: 64, feedback: 64, notetracking: 0, pregain: 54, stereo: 1} + varargs: [12550, 24402, 21265, 32419] + - type: outaux + id: 172 + parameters: {auxgain: 64, outgain: 64, stereo: 1} + - name: Global + numvoices: 1 + units: + - type: in + id: 7 + parameters: {channel: 2, stereo: 1} + - type: delay + id: 8 + parameters: {damp: 25, dry: 0, feedback: 120, notetracking: 0, pregain: 40, stereo: 1} + varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642] + - type: out + id: 9 + parameters: {gain: 64, stereo: 1} diff --git a/src/4klang/4klang.h b/src/4klang/4klang.h deleted file mode 100644 index d316a69..0000000 --- a/src/4klang/4klang.h +++ /dev/null @@ -1,19 +0,0 @@ -// some useful song defines for 4klang -#define SAMPLE_RATE 44100 -#define BPM 120.000000 -#define MAX_INSTRUMENTS 5 -#define MAX_PATTERNS 136 -#define PATTERN_SIZE_SHIFT 3 -#define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) -#define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) -#define SAMPLES_PER_TICK 5512 -#define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) -#define POLYPHONY 2 -#define INTEGER_16BIT -#define SAMPLE_TYPE short - -#define WINDOWS_OBJECT - -// declaration of the external synth render function, you'll always need that -extern "C" void __stdcall _4klang_render(void*); -// declaration of the external envelope buffer. access only if you're song was exported with that option \ No newline at end of file diff --git a/src/definitions.h b/src/definitions.h index b625a43..4078d54 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -34,7 +34,7 @@ static const PIXELFORMATDESCRIPTOR pfd = { }; #pragma data_seg(".screensettings") -static DEVMODE screenSettings = { +static DEVMODE screenSettings = { {0}, 0, 0, sizeof(screenSettings), 0, DM_PELSWIDTH|DM_PELSHEIGHT, {0}, 0, 0, 0, 0, 0, {0}, 0, 0, XRES, YRES, 0, 0, #if(WINVER >= 0x0400) @@ -49,33 +49,29 @@ static DEVMODE screenSettings = { #include #include - // this file is auto generated by 4klang - #include "4klang/4klang.h" + // this file is auto generated by sointu + #include "sointu/song.h" - #pragma data_seg(".4klangout") - static SAMPLE_TYPE lpSoundBuffer[MAX_SAMPLES * 2]; + #pragma data_seg(".sointuout") + static SUsample lpSoundBuffer[(int)SU_LENGTH_IN_SAMPLES * 2]; static HWAVEOUT hWaveOut; #pragma data_seg(".wavefmt") static WAVEFORMATEX WaveFMT = { - #ifdef FLOAT_32BIT WAVE_FORMAT_IEEE_FLOAT, - #else - WAVE_FORMAT_PCM, - #endif - 2, // channels - SAMPLE_RATE, // samples per sec - SAMPLE_RATE*sizeof(SAMPLE_TYPE) * 2, // bytes per sec - sizeof(SAMPLE_TYPE) * 2, // block alignment; - sizeof(SAMPLE_TYPE) * 8, // bits per sample - 0 // extension not needed + 2, // channels + SU_SAMPLE_RATE, // samples per sec + SU_SAMPLE_RATE*sizeof(SUsample) * 2, // bytes per sec + sizeof(SUsample) * 2, // block alignment; + sizeof(SUsample) * 8, // bits per sample + 0 // extension not needed }; #pragma data_seg(".wavehdr") static WAVEHDR WaveHDR = { - (LPSTR)lpSoundBuffer, MAX_SAMPLES * sizeof(SAMPLE_TYPE) * 2, 0, 0, 0, 0, 0, 0 + (LPSTR)lpSoundBuffer, SU_LENGTH_IN_SAMPLES * sizeof(SUsample) * 2, 0, 0, 0, 0, 0, 0 }; static MMTIME MMTime = diff --git a/src/main.cpp b/src/main.cpp index a731acb..5b92fb3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,7 +28,9 @@ #pragma data_seg(".shader") #include "shaders/post.inl" #endif - +#ifdef SU_LOAD_GMDLS +su_load_gmdls(); +#endif // SU_LOAD_GMDLS #pragma data_seg(".pids") // static allocation saves a few bytes static int pidMain; @@ -74,7 +76,7 @@ int __cdecl main(int argc, char* argv[]) // initialize sound #ifndef EDITOR_CONTROLS #if USE_AUDIO - CreateThread(0, 0, (LPTHREAD_START_ROUTINE)_4klang_render, lpSoundBuffer, 0, 0); + CreateThread(0, 0, (LPTHREAD_START_ROUTINE)su_render_song, lpSoundBuffer, 0, 0); waveOutOpen(&hWaveOut, WAVE_MAPPER, &WaveFMT, NULL, 0, CALLBACK_NULL); waveOutPrepareHeader(hWaveOut, &WaveHDR, sizeof(WaveHDR)); waveOutWrite(hWaveOut, &WaveHDR, sizeof(WaveHDR)); @@ -154,7 +156,7 @@ int __cdecl main(int argc, char* argv[]) } while(!GetAsyncKeyState(VK_ESCAPE) #if USE_AUDIO - && MMTime.u.sample < MAX_SAMPLES + && MMTime.u.sample < SU_LENGTH_IN_SAMPLES #endif ); diff --git a/src/shaders/fragment.frag b/src/shaders/fragment.frag index 9ef10ad..2629ab9 100644 --- a/src/shaders/fragment.frag +++ b/src/shaders/fragment.frag @@ -9,7 +9,6 @@ uniform int m; out vec4 o; float u_time = m/float(44100); -//uniform float u_time; const float PI = 22./7.; vec3 no(vec3 v) { return normalize(v); } diff --git a/src/shaders/fragment.inl b/src/shaders/fragment.inl index ab3a3c9..c156550 100644 --- a/src/shaders/fragment.inl +++ b/src/shaders/fragment.inl @@ -1,322 +1,303 @@ -/* File generated with Shader Minifier 1.2 - * http://www.ctrl-alt-test.fr - */ -#ifndef FRAGMENT_INL_ -# define FRAGMENT_INL_ -# define VAR_M "v" -# define VAR_O "i" - -const char *fragment_frag = - "#version 460\n" - "uniform int v;" - "out vec4 i;" - "float m=3.1416,y=v/float(44100);" - "const float z=22./7.;" - "vec3 f(vec3 v)" - "{" - "return normalize(v);" - "}" - "float f(float v,float f,float y)" - "{" - "return clamp(v,f,y);" - "}" - "mat2 n(float v)" - "{" - "float f=sin(v),y=cos(v);" - "return mat2(y,-f,f,y);" - "}" - "float n(float v,float y,float m)" - "{" - "float z=max(m-abs(v-y),0.);" - "return max(v,y)+z*z*.25/m;" - "}" - "float f(vec2 v,int y)" - "{" - "if(y==1)" - "{" - "float m=dot(v,vec2(127.1,311.7));" - "return fract(sin(m)*43758.5453123);" - "}" - "v=50.*fract(v*.3183099);" - "return fract(v.x*v.y*(v.x+v.y));" - "}" - "float x(vec2 v,float y,int m)" - "{" - "vec2 a=floor(v),z=fract(v),i=z*z*(3.-2.*z);" - "float x=y;" - "if(m==1)" - "x=2.;" - "return-y+x*mix(mix(f(a+vec2(0.),m),f(a+vec2(1.,0.),m),i.x),mix(f(a+vec2(0.,1.),m),f(a+vec2(1.),m),i.x),i.y);" - "}" - "float s(vec3 v,float y,float m)" - "{" - "vec2 f=abs(vec2(length(v.xy),v.z))-vec2(m,y);" - "return min(max(f.x,f.y),0.)+length(max(f,0.));" - "}" - "float n(vec3 v,vec3 y)" - "{" - "vec3 f=abs(v)-y;" - "return length(max(f,0.))+min(max(f.x,max(f.y,f.z)),0.);" - "}" - "float t(vec3 v,vec2 y,float m)" - "{" - "v.xy*=n(m);" - "vec3 f=abs(v);" - "return max(f.z-y.y,max(f.x*.866025+v.y*.5,-v.y)-y.x*.5);" - "}" - "float s(vec3 v,float y)" - "{" - "return v=abs(v),(v.x+v.y+v.z-y)*.577;" - "}" - "float a=9.,p=0.;" - "vec3 c=vec3(.36,.9,0.);" - "float s(vec3 v)" - "{" - "return min((y-v.y)*v.z,v.x*z);" - "}" - "float t(float v)" - "{" - "return a+a*f(sin(s(vec3(1.5,v,4.))*.06),-.9,.9);" - "}" - "vec3 x(vec3 v)" - "{" - "for(float f=0.;f<7.;f++)" - "{" - "float m=a+f*3.,z=1.;" - "if(y>m)" - "{" - "if(mod(f,2.)>=1.)" - "z=-1.;" - "v.xy*=n(t(m)*z);" - "}" - "}" - "return v;" - "}" - "float w(vec2 v)" - "{" - "if(y>=v.y)" - "v.x+=.045*f(sin(s(vec3(3.,v.y,40.))*.4),-.8,.8);" - "return v.x;" - "}" - "float t(vec2 v,float f)" - "{" - "v+=x(v,1.,1);" - "vec2 y=1.-abs(sin(v));" - "y=mix(y,abs(cos(v)),y);" - "return pow(1.-pow(y.x*y.y,.65),f);" - "}" - "vec3 w(vec3 v,int m)" - "{" - "float f=0.,i=1e3,r=z/12.,p,d=floor(atan(v.y,v.x)/r+.5)*r;" - "vec3 c=v;" - "c.xy=n(d)*c.xy;" - "float l=length(max(abs(c.xy-vec2(1.8,0.))-vec2(.24,.14),0.))-.02,e=abs(length(v.xy)-1.8)-.2;" - "l=min(l,e);" - "e=n(abs(length(v.xy)-1.75)-.08,abs(v.z-.1)-.04,.005);" - "l=max(-e,l);" - "l=n(l,abs(v.z)-.1,.02);" - "vec3 h=x(v),o=h;" - "r=z/16.;" - "o.xy=n(floor(atan(h.y,h.x)/r+.5)*r)*o.xy;" - "e=n(o.xyz-vec3(1.75,0.,0.),vec3(.04,.14,.05))-.02+x(v.xy*100.,.001,0);" - "l=min(l,e);" - "if(l==e)" - "f=6.;" - "e=1e3;" - "float u=1.5,b=0.,g,F=4.,C=.6,k=.2;" - "for(int Z=0;Z<4;Z++)" - "p=n(vec3(v.x,v.y+u+.05,v.z),vec3(2.,.2,u))-.05,e=min(e,p),u+=.2;" - "e+=x(v.xz*50.+200.,.007,0);" - "l=min(l,e);" - "if(l==e)" - "f=2.;" - "if(m==1)" - "{" - "vec2 Z=v.xy;" - "for(int Y=0;Y<4;Y++)" - "g=t((Z+y)*C,F),g+=t((Z-y)*C,F),b+=g*k,Z*=mat2(1.6,1.2,-1.2,1.6),C*=1.9,k*=.22,F=mix(F,1.,.4);" - "}" - "e=max(-s(v,2.,min(1.7-(y-28.9)*2.5,2.3)),s(v,.025,1.6)-b*.15);" - "e=max(e,s(v,.3,1.7));" - "l=min(l,e);" - "if(l==e)" - "f=1.;" - "e=v.y+3.7+x(vec2(v.x,v.z*.44-40.)*.04+100.,20.,0)+.25*sin(v.z*.5+y);" - "l=min(l,e);" - "if(l==e)" - "f=3.;" - "e=s(v+vec3(-75.,0.,100.),60.);" - "l=min(l,e);" - "if(l==e)" - "f=3.;" - "for(float Z=0.;Z<8.;Z++)" - "{" - "c=v;" - "d=24.67/(z*2.)+(Z+1.)*z/4.;" - "if(Z==1.)" - "d+=.2;" - "if(Z==7.)" - "d-=.2;" - "c.xy=n(d)*c.xy;" - "float Y=a+(Z-1.)*3.+1.5;" - "if(Z>0.)" - "{" - "c.x-=1.95;" - "vec3 X=c;" - "if(y>Y)" - "X.x=w(vec2(X.x,Y));" - "float W=t(vec3(c.x-.06,c.y,c.z),vec2(.1,.15),.5)-.01;" - "e=max(-t(vec3(X.x-.14,X.y,X.z),vec2(.22),.5)-.01,t(vec3(X.x,X.y,X.z),vec2(.2,.12),.5)-.02);" - "e=min(e,W);" - "l=min(l,e);" - "if(l==e)" - "f=4.;" - "if(l==W)" - "if(y>Y+.2)" - "f=5.,i=min(e,W);" - "}" - "}" - "return vec3(l,f,i);" - "}" - "float w(vec3 v,vec3 y,int m)" - "{" - "vec3 f;" - "float i=0.;" - "for(int l=0;l<100;l++)" - "{" - "f=w(v+y*i,0);" - "if(m==0&&f.z<.3)" - "p+=pow(.01/f.z,.8)*.6;" - "i+=f.x;" - "if(f.x<.001||i>500.)" - "break;" - "}" - "return i;" - "}" - "vec3 r(vec3 v)" - "{" - "vec2 y=vec2(.01,0.);" - "vec3 m=w(v,1).x-vec3(w(v-y.xyy,1).x,w(v-y.yxy,1).x,w(v-y.yyx,1).x);" - "return f(m);" - "}" - "float f(vec3 v,vec3 y,float m,float x,vec3 l,float z)" - "{" - "vec3 e=f(y-v);" - "float i=length(y-v),p=f(dot(l,e)*m,0.,m)/(1.+z*i),Z=w(v+l*.0025,e,1);" - "if(Z7.5)" - "v+=vec3(0.,f(7.5-y,-1.,0.),0.);" - "if(y>10.5)" - "v=vec3(2.,-1.,1.);" - "if(y>12.)" - "v=vec3(-1.,-.7,4.);" - "if(y>14.5)" - "v=vec3(0.,0.,4.),v.yz*=n(-.6-cos(y-15.)*.05),v.xz*=n(sin((y-16.5)*.1));" - "if(y>23.5)" - "v=vec3(3.,-.7,4.);" - "if(y>32.5)" - "v=vec3(-20.,10.,50.);" - "if(y>36.5)" - "v=vec3(3.,-.7,4.),v.yz*=n((1.-cos(y-36.5))*-.025),v.xz*=n(sin((y-36.5)*.07));" - "return v;" - "}" - "vec3 h()" - "{" - "vec3 v=vec3(0.,-.5,0.);" - "if(y>10.5)" - "v=vec3(1.7,-1.1,0.);" - "if(y>12.)" - "v=vec3(0.);" - "if(y>14.5)" - "v=mix(vec3(1.5,1.4,0.),vec3(-1.5,1.4,0.),(y-16.5)*.13);" - "if(y>23.5)" - "v=vec3(0.);" - "return v;" - "}" - "vec3 d(vec3 v)" - "{" - "if(y>10.75)" - "{" - "float f=smoothstep(-1.,.8,sin(s(vec3(.8,10.75,8.))*2.));" - "v=mix(v,c*(f*1.4),f*.76);" - "}" - "return v;" - "}" - "vec3 d(vec3 v,vec3 y,float m,float e)" - "{" - "return vec3(f(v,f(vec3(0.,.3,.8)),f(y),pow(10.,e)))*m;" - "}" - "vec3 l(vec2 v)" - "{" - "vec3 m=f(),l=r(v,m,h(),f((43.-y)*-2.,2.,25.)),i=vec3(0.);" - "float e=w(m,l,0),Z=0.;" - "if(e<500.)" - "{" - "vec3 z=m+l*e,a=r(z);" - "Z=w(z,0).y;" - "i+=vec3(.82,.5,.9)*f(z,vec3(10.,15.,25.),1.,.2,a,1e-10);" - "i+=vec3(.79,.66,.43)*f(z,vec3(4.,2.,-15.),1.,1.,a,1e-10);" - "i+=vec3(0.,.06,.7)*f(z,vec3(0.,0.,5.),f((y-29.)*100.,0.,50.),0.,a,3.1);" - "i+=vec3(.29,.28,.33)*f(dot(a,f(vec3(0.,1.,10.))),0.,1.);" - "if(Z==0.)" - "i*=vec3(.2,.3,.3)+d(a,l,.5,2.);" - "if(Z==1.)" - "i*=n(z,a,f(vec3(0.,.3,.8)),f(l));" - "if(Z==2.)" - "i*=vec3(.7,.7,.4)+x(z.xz*3.+1.5,.1,0);" - "if(Z==3.)" - "i*=vec3(.8,.8,.5)+x(z.xz*500.+1e5,.3,0);" - "if(Z==4.)" - "i*=vec3(0.,.08,.11)+d(a,l,.3,.7);" - "if(Z==5.)" - "i=c*.4;" - "if(Z==6.)" - "i*=vec3(.01,.04,.06)+d(a,l,.1,2.5);" - "}" - "i+=p*c*.25;" - "return h(d(f(i,e,l,vec3(0.,-.1,-1.),.01)));" - "}" - "void main()" - "{" - "vec2 v=vec2(1920,1080),f=gl_FragCoord.xy/v.xy,y=-1.+2.*f;" - "y.x*=v.x/v.y;" - "i=vec4(l(y),1.);" - "}"; - -#endif // FRAGMENT_INL_ +// Generated with Shader Minifier 1.5.1 (https://github.com/laurentlb/Shader_Minifier/) +#ifndef FRAGMENT_INL_ +# define FRAGMENT_INL_ +# define VAR_m "v" +# define VAR_o "i" + +const char *fragment_frag = + "#version 460\n" + "uniform int v;" + "out vec4 i;" + "float y=v/float(44100);" + "const float m=22./7.;" + "vec3 f(vec3 v)" + "{" + "return normalize(v);" + "}" + "float f(float v,float f,float y)" + "{" + "return clamp(v,f,y);" + "}" + "mat2 f(float v)" + "{" + "float f=sin(v);" + "v=cos(v);" + "return mat2(v,-f,f,v);" + "}" + "float n(float v,float f,float y)" + "{" + "float z=max(y-abs(v-f),0.);" + "return max(v,f)+z*z*.25/y;" + "}" + "float f(vec2 v,int y)" + "{" + "if(y==1)" + "{" + "float y=dot(v,vec2(127.1,311.7));" + "return fract(sin(y)*43758.5453123);" + "}" + "v=50.*fract(v*.3183099);" + "return fract(v.x*v.y*(v.x+v.y));" + "}" + "float f(vec2 v,float y,int m)" + "{" + "vec2 s=floor(v);" + "v=fract(v);" + "v=v*v*(3.-2.*v);" + "float z=y;" + "if(m==1)" + "z=2.;" + "return-y+z*mix(mix(f(s+vec2(0),m),f(s+vec2(1,0),m),v.x),mix(f(s+vec2(0,1),m),f(s+vec2(1),m),v.x),v.y);" + "}" + "float f(vec3 v,float f,float y)" + "{" + "vec2 m=abs(vec2(length(v.xy),v.z))-vec2(y,f);" + "return min(max(m.x,m.y),0.)+length(max(m,0.));" + "}" + "float f(vec3 v,vec3 y)" + "{" + "v=abs(v)-y;" + "return length(max(v,0.))+min(max(v.x,max(v.y,v.z)),0.);" + "}" + "float f(vec3 v,vec2 y)" + "{" + "v.xy*=f(.5);" + "vec3 m=abs(v);" + "return max(m.z-y.y,max(m.x*.866025+v.y*.5,-v.y)-y.x*.5);" + "}" + "float n(vec3 v)" + "{" + "v=abs(v);" + "return(v.x+v.y+v.z-60.)*.577;" + "}" + "float x=0.;" + "vec3 z=vec3(.36,.9,0);" + "float s(vec3 v)" + "{" + "return min((y-v.y)*v.z,v.x*m);" + "}" + "vec3 t(vec3 v)" + "{" + "for(float i=0.;i<7.;i++)" + "{" + "float m=9.+i*3.,z=1.;" + "if(y>m)" + "{" + "if(mod(i,2.)>=1.)" + "z=-1.;" + "v.xy*=f((9.+9.*f(sin(s(vec3(1.5,m,4))*.06),-.9,.9))*z);" + "}" + "}" + "return v;" + "}" + "float f(vec2 v)" + "{" + "if(y>=v.y)" + "v.x+=.045*f(sin(s(vec3(3,v.y,40))*.4),-.8,.8);" + "return v.x;" + "}" + "float f(vec2 v,float y)" + "{" + "v+=f(v,1.,1);" + "vec2 m=1.-abs(sin(v));" + "m=mix(m,abs(cos(v)),m);" + "return pow(1.-pow(m.x*m.y,.65),y);" + "}" + "vec3 f(vec3 v,int s)" + "{" + "float z=0.,i=1e3,r=m/12.,x,a=floor(atan(v.y,v.x)/r+.5)*r;" + "vec3 d=v;" + "d.xy=f(a)*d.xy;" + "float p=length(max(abs(d.xy-vec2(1.8,0))-vec2(.24,.14),0.))-.02,c=abs(length(v.xy)-1.8)-.2;" + "p=min(p,c);" + "c=n(abs(length(v.xy)-1.75)-.08,abs(v.z-.1)-.04,.005);" + "p=n(max(-c,p),abs(v.z)-.1,.02);" + "vec3 l=t(v),o=l;" + "r=m/16.;" + "o.xy=f(floor(atan(l.y,l.x)/r+.5)*r)*o.xy;" + "c=f(o.xyz-vec3(1.75,0,0),vec3(.04,.14,.05))-.02+f(v.xy*1e2,.001,0);" + "p=min(p,c);" + "if(p==c)" + "z=6.;" + "c=1e3;" + "r=1.5;" + "float e=0.,b,C=4.,F=.6,G=.2;" + "for(int i=0;i<4;i++)" + "x=f(vec3(v.x,v.y+r+.05,v.z),vec3(2,.2,r))-.05,c=min(c,x),r+=.2;" + "c+=f(v.xz*50.+2e2,.007,0);" + "p=min(p,c);" + "if(p==c)" + "z=2.;" + "if(s==1)" + "{" + "vec2 m=v.xy;" + "for(int i=0;i<4;i++)" + "b=f((m+y)*F,C)+f((m-y)*F,C),e+=b*G,m*=mat2(1.6,1.2,-1.2,1.6),F*=1.9,G*=.22,C=mix(C,1.,.4);" + "}" + "c=max(max(-f(v,2.,min(1.7-(y-28.9)*2.5,2.3)),f(v,.025,1.6)-e*.15),f(v,.3,1.7));" + "p=min(p,c);" + "if(p==c)" + "z=1.;" + "c=v.y+3.7+f(vec2(v.x,v.z*.44-40.)*.04+1e2,20.,0)+.25*sin(v.z*.5+y);" + "p=min(p,c);" + "if(p==c)" + "z=3.;" + "c=n(v+vec3(-75,0,100));" + "p=min(p,c);" + "if(p==c)" + "z=3.;" + "for(float r=0.;r<8.;r++)" + "{" + "d=v;" + "a=24.67/(m*2.)+(r+1.)*m/4.;" + "if(r==1.)" + "a+=.2;" + "if(r==7.)" + "a-=.2;" + "d.xy=f(a)*d.xy;" + "float x=9.+(r-1.)*3.+1.5;" + "if(r>0.)" + "{" + "d.x-=1.95;" + "vec3 v=d;" + "if(y>x)" + "v.x=f(vec2(v.x,x));" + "float m=f(vec3(d.x-.06,d.yz),vec2(.1,.15))-.01;" + "c=min(max(-f(vec3(v.x-.14,v.yz),vec2(.22))-.01,f(vec3(v),vec2(.2,.12))-.02),m);" + "p=min(p,c);" + "if(p==c)" + "z=4.;" + "if(p==m)" + "if(y>x+.2)" + "z=5.,i=min(c,m);" + "}" + "}" + "return vec3(p,z,i);" + "}" + "float f(vec3 v,vec3 y,int m)" + "{" + "vec3 p;" + "float i=0.;" + "for(int r=0;r<100;r++)" + "{" + "p=f(v+y*i,0);" + "if(m==0&&p.z<.3)" + "x+=pow(.01/p.z,.8)*.6;" + "i+=p.x;" + "if(p.x<.001||i>5e2)" + "break;" + "}" + "return i;" + "}" + "vec3 w(vec3 v)" + "{" + "vec2 m=vec2(.01,0);" + "return f(f(v,1).x-vec3(f(v-m.xyy,1).x,f(v-m.yxy,1).x,f(v-m.yyx,1)));" + "}" + "float f(vec3 v,vec3 y,float i,float m,vec3 p,float r)" + "{" + "vec3 c=f(y-v);" + "i=f(dot(p,c)*i,0.,i)/(1.+r*length(y-v));" + "r=f(v+p*.0025,c,1);" + "if(r7.5)" + "v+=vec3(0,f(7.5-y,-1.,0.),0);" + "if(y>10.5)" + "v=vec3(2,-1,1);" + "if(y>12.)" + "v=vec3(-1,-.7,4);" + "if(y>14.5)" + "v=vec3(0,0,4),v.yz*=f(-.6-cos(y-15.)*.05),v.xz*=f(sin((y-16.5)*.1));" + "if(y>23.5)" + "v=vec3(3,-.7,4);" + "if(y>32.5)" + "v=vec3(-20,10,50);" + "if(y>36.5)" + "v=vec3(3,-.7,4),v.yz*=f((1.-cos(y-36.5))*-.025),v.xz*=f(sin((y-36.5)*.07));" + "return v;" + "}" + "vec3 n()" + "{" + "vec3 v=vec3(0,-.5,0);" + "if(y>10.5)" + "v=vec3(1.7,-1.1,0);" + "if(y>12.)" + "v=vec3(0);" + "if(y>14.5)" + "v=mix(vec3(1.5,1.4,0),vec3(-1.5,1.4,0),(y-16.5)*.13);" + "if(y>23.5)" + "v=vec3(0);" + "return v;" + "}" + "vec3 r(vec3 v)" + "{" + "if(y>10.75)" + "{" + "float m=smoothstep(-1.,.8,sin(s(vec3(.8,10.75,8))*2.));" + "v=mix(v,m*1.4*z,m*.76);" + "}" + "return v;" + "}" + "vec3 f(vec3 v,vec3 y,float m,float c)" + "{" + "return vec3(f(v,f(vec3(0,.3,.8)),f(y),pow(10.,c)))*m;" + "}" + "vec3 n(vec2 v)" + "{" + "vec3 m=f(),p=f(v,m,n(),f((43.-y)*-2.,2.,25.)),i=vec3(0);" + "float c=f(m,p,0),s=0.;" + "if(c<5e2)" + "{" + "vec3 v=m+p*c,r=w(v);" + "s=f(v,0).y;" + "i+=vec3(.82,.5,.9)*f(v,vec3(10,15,25),1.,.2,r,1e-10);" + "i+=vec3(.79,.66,.43)*f(v,vec3(4,2,-15),1.,1.,r,1e-10);" + "i+=vec3(0,.06,.7)*f(v,vec3(0,0,5),f((y-29.)*1e2,0.,50.),0.,r,3.1);" + "i+=vec3(.29,.28,.33)*f(dot(r,f(vec3(0,1,10))),0.,1.);" + "if(s==0.)" + "i*=vec3(.2,.3,.3)+f(r,p,.5,2.);" + "if(s==1.)" + "i*=f(v,r,f(vec3(0,.3,.8)),f(p));" + "if(s==2.)" + "i*=vec3(.7,.7,.4)+f(v.xz*3.+1.5,.1,0);" + "if(s==3.)" + "i*=vec3(.8,.8,.5)+f(v.xz*5e2+1e5,.3,0);" + "if(s==4.)" + "i*=vec3(0,.08,.11)+f(r,p,.3,.7);" + "if(s==5.)" + "i=z*.4;" + "if(s==6.)" + "i*=vec3(.01,.04,.06)+f(r,p,.1,2.5);" + "}" + "i+=x*z*.25;" + "return smoothstep(0.,1.,pow(r(mix(i,mix(vec3(.34,.11,.34),vec3(.93,.37,.16),pow(max(dot(p,vec3(0,-.1,-1)),0.),8.)),1.-exp(-c*.01)))*vec3(.9,.8,.7),vec3(.45)))+1.-vec3(f((46.-y)*.5,0.,1.));" + "}" + "void main()" + "{" + "vec2 v=vec2(1920,1080),m=gl_FragCoord.xy/v.xy;" + "m=-1.+2.*m;" + "m.x*=v.x/v.y;" + "i=vec4(n(m),1);" + "}"; + +#endif // FRAGMENT_INL_ diff --git a/src/shaders/post.frag b/src/shaders/post.frag index 966ed5a..21027ba 100644 --- a/src/shaders/post.frag +++ b/src/shaders/post.frag @@ -6,7 +6,7 @@ uniform sampler2D o; out vec4 i; float hash(float c){return fract(sin(dot(c, 12.9898)) * 43758.5453);} void main(){ -i = vec4(0); + i = vec4(0); for(int t = 0; t < 25; t++){ vec2 uv = gl_FragCoord.xy*2./vec2(1920,1080); float s1 = hash(float(t+dot(uv,uv))); diff --git a/src/shaders/post.inl b/src/shaders/post.inl index 9255234..141a0a1 100644 --- a/src/shaders/post.inl +++ b/src/shaders/post.inl @@ -1,30 +1,27 @@ -/* File generated with Shader Minifier 1.2 - * http://www.ctrl-alt-test.fr - */ -#ifndef POST_INL_ -# define POST_INL_ -# define VAR_I "v" -# define VAR_O "f" - -const char *post_frag = - "#version 130\n" - "uniform sampler2D f;" - "out vec4 v;" - "float t(float f)" - "{" - "return fract(sin(dot(f,12.9898))*43758.5453);" - "}" - "void main()" - "{" - "v=vec4(0);" - "for(int s=0;s<25;s++)" - "{" - "vec2 i=gl_FragCoord.xy*2./vec2(1920,1080);" - "float d=t(float(s+dot(i,i))),o=t(float(1-s+dot(i,i)));" - "vec2 m=.01*(-1.+2.*vec2(d,o));" - "v+=vec4(textureLod(f,i,(.3+.7*d)*texture(f,(1.+m)*i).w*8).xyz,1);" - "}" - "v/=vec4(25);" - "}"; - -#endif // POST_INL_ +// Generated with Shader Minifier 1.5.1 (https://github.com/laurentlb/Shader_Minifier/) +#ifndef POST_INL_ +# define POST_INL_ +# define VAR_i "v" +# define VAR_o "f" + +const char *post_frag = + "#version 130\n" + "uniform sampler2D f;" + "out vec4 v;" + "float t(float f)" + "{" + "return fract(sin(dot(f,12.9898))*43758.5453);" + "}" + "void main()" + "{" + "v=vec4(0);" + "for(int s=0;s<25;s++)" + "{" + "vec2 d=gl_FragCoord.xy*2./vec2(1920,1080);" + "float i=t(float(s+dot(d,d))),C=t(float(1-s+dot(d,d)));" + "v+=vec4(textureLod(f,d,(.3+.7*i)*texture(f,(1.+.01*(-1.+2.*vec2(i,C)))*d).w*8).xyz,1);" + "}" + "v/=vec4(25);" + "}"; + +#endif // POST_INL_ diff --git a/src/sointu/song.h b/src/sointu/song.h new file mode 100644 index 0000000..7a39178 --- /dev/null +++ b/src/sointu/song.h @@ -0,0 +1,43 @@ +// auto-generated by Sointu, editing not recommended +#ifndef SU_RENDER_H +#define SU_RENDER_H + +#define SU_CHANNEL_COUNT 2 +#define SU_LENGTH_IN_SAMPLES 8282304 +#define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT) + +#define SU_SAMPLE_RATE 44100 +#define SU_BPM 138 +#define SU_ROWS_PER_BEAT 4 +#define SU_ROWS_PER_PATTERN 16 +#define SU_LENGTH_IN_PATTERNS 108 +#define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE) +#define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT)) + +#include +#if UINTPTR_MAX == 0xffffffff + #if defined(__clang__) || defined(__GNUC__) + #define SU_CALLCONV __attribute__ ((stdcall)) + #elif defined(_WIN32) + #define SU_CALLCONV __stdcall + #endif +#else + #define SU_CALLCONV +#endif +typedef float SUsample; +#define SU_SAMPLE_RANGE 1.0 +#define SU_SAMPLE_FLOAT +#define SU_SAMPLE_SIZE 4 + + +#ifdef __cplusplus +extern "C" { +#endif +void SU_CALLCONV su_render_song(SUsample *buffer); + + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file