From a3ff44acf5f5914e6c5148a2d388f81a0727db13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petri=20J=C3=A4rvisalo?= Date: Mon, 29 Jul 2024 23:10:53 +0300 Subject: [PATCH] musa optimointia - 4080bytes --- 4kdemo.compofiller | 2 +- 4klang.asm | 33 +++--- 4klang.h | 4 +- 4klang.inc | 4 +- 4klang.yml | 40 ++++---- base.config | 4 +- music/4k_sg_v4.xrns | Bin 24526 -> 24056 bytes shader_minified.h | 237 +++++++++++++++++++++++--------------------- 8 files changed, 162 insertions(+), 162 deletions(-) diff --git a/4kdemo.compofiller b/4kdemo.compofiller index a1db361..baa5bd0 100644 --- a/4kdemo.compofiller +++ b/4kdemo.compofiller @@ -6,7 +6,7 @@ PROJECT_INFO_FILE=prod.nfo PROJECT_SCREENSHOT= # Currently active config file name -ACTIVE_CONFIG=base.config +ACTIVE_CONFIG=minified.config # ------- GUI options/preferences -------- # Automatically rebuild DLLs when things have changed? diff --git a/4klang.asm b/4klang.asm index 96fda11..f88bc99 100644 --- a/4klang.asm +++ b/4klang.asm @@ -1,4 +1,4 @@ -%define SU_LENGTH_IN_SAMPLES 3010656 +%define SU_LENGTH_IN_SAMPLES 2828192 %define SU_SAMPLE_RATE 44100 %define SU_BPM 116. @@ -118,7 +118,7 @@ su_render_sampleloop: ; loop through every sample in the row jl su_render_sampleloop pop eax ; eax = Row, Stack: GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; Stack: pushad ptr inc eax - cmp eax, 528 + cmp eax, 496 jl su_render_rowloop ; rewind the stack the entropy of multiple pop eax is probably lower than add pop eax ; eax = GlobalTick, Stack: RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr @@ -183,7 +183,7 @@ su_update_voices_skipreset: su_update_voices_nexttrack: pop ebx ; ebx=first voice of next instrument, Stack: ptrnrow pop edx ; edx=patrnrow - add esi, 33 + add esi, 31 inc ebp cmp ebp,su_synth_obj + 10 jl su_update_voices_trackloop @@ -868,7 +868,6 @@ su_patterns: db 23,0,0,0,23,23,23,23,0,0,23,0,0,23,0,0 db 28,0,0,0,28,28,28,30,0,0,30,0,0,30,0,0 db 32,0,0,0,32,32,32,32,0,0,32,0,0,32,0,0 - db 33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 33,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 45,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 45,0,0,0,45,45,45,45,0,0,45,0,0,45,0,0 @@ -877,16 +876,13 @@ su_patterns: db 35,0,0,0,35,35,35,35,0,0,35,0,0,35,0,0 db 40,0,0,0,40,40,40,42,0,0,42,0,0,42,0,0 db 47,0,0,0,47,47,47,47,0,0,47,0,0,47,0,0 - db 45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 21,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 40,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 44,0,0,0,44,44,44,44,0,0,44,0,0,44,0,0 - db 40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 49,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 49,0,0,0,49,49,49,49,0,0,49,0,0,49,0,0 db 42,0,0,0,42,42,42,42,0,0,42,0,0,42,0,0 db 59,0,0,0,59,59,59,59,0,0,59,0,0,59,0,0 - db 49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 1,1,1,1,50,1,52,1,53,1,1,1,55,1,1,1 db 57,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 @@ -894,7 +890,6 @@ su_patterns: db 52,1,1,1,1,1,1,1,57,1,1,1,1,1,1,1 db 52,0,0,0,52,52,52,52,0,0,52,0,0,52,0,0 db 57,0,0,0,57,57,57,57,0,0,57,0,0,57,0,0 - db 52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 33,1,1,1,33,33,33,33,1,1,33,1,1,33,1,1 db 32,1,1,1,32,32,32,32,1,1,32,1,1,32,1,1 db 30,1,1,1,30,30,30,30,1,1,30,1,1,30,1,1 @@ -920,25 +915,23 @@ su_patterns: db 80,1,1,1,1,1,1,1,0,0,0,0,80,1,1,1 db 81,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 62,1,1,1,62,62,62,62,1,1,62,1,1,62,1,1 - db 62,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 db 60,1,1,1,60,1,1,1,60,1,1,1,60,1,1,1 - db 60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;------------------------------------------------------------------------------- ; Tracks ;------------------------------------------------------------------------------- section .su_tracks data align=1 su_tracks: - db 23,1,1,2,3,4,5,6,1,7,7,7,7,7,7,7,7,7,7,8,8,9,10,11,12,7,7,8,8,7,7,13,1 - db 14,1,1,1,1,1,15,1,1,16,16,16,16,16,16,16,16,16,16,17,17,18,19,20,21,16,16,17,17,16,16,22,1 - db 0,24,1,1,1,1,24,1,1,17,17,17,17,17,17,17,17,17,17,21,21,16,16,21,25,17,17,21,21,17,17,26,1 - db 0,1,27,1,1,1,27,1,1,28,28,28,28,28,28,28,28,28,28,25,25,29,29,25,30,28,28,25,25,28,28,31,1 - db 0,1,1,32,33,34,35,36,1,37,37,37,37,37,37,37,37,37,37,30,30,38,38,30,1,37,37,30,30,37,37,39,1 - db 0,1,1,1,1,1,1,1,1,40,40,40,40,40,40,40,40,40,40,41,41,42,42,41,41,40,40,41,41,40,40,14,1 - db 0,1,1,1,1,1,1,1,1,43,43,43,43,43,43,43,43,43,43,44,44,45,45,44,44,43,43,44,44,43,43,15,1 - db 0,1,1,1,1,1,1,1,1,1,1,1,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,1 - db 0,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,65,1 - db 0,1,1,1,1,1,1,1,1,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,67,1 + db 21,1,1,2,3,4,5,6,1,7,7,7,7,7,7,7,7,7,7,8,8,9,10,11,12,7,7,8,8,7,7 + db 13,1,1,1,1,1,14,1,1,15,15,15,15,15,15,15,15,15,15,16,16,17,18,19,20,15,15,16,16,15,15 + db 0,22,1,1,1,1,22,1,1,16,16,16,16,16,16,16,16,16,16,20,20,15,15,20,23,16,16,20,20,16,16 + db 0,1,24,1,1,1,24,1,1,25,25,25,25,25,25,25,25,25,25,23,23,26,26,23,27,25,25,23,23,25,25 + db 0,1,1,28,29,30,31,32,1,33,33,33,33,33,33,33,33,33,33,27,27,34,34,27,1,33,33,27,27,33,33 + db 0,1,1,1,1,1,1,1,1,35,35,35,35,35,35,35,35,35,35,36,36,37,37,36,36,35,35,36,36,35,35 + db 0,1,1,1,1,1,1,1,1,38,38,38,38,38,38,38,38,38,38,39,39,40,40,39,39,38,38,39,39,38,38 + db 0,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,0 + db 0,1,1,1,1,1,1,1,1,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59 + db 0,1,1,1,1,1,1,1,1,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60 ;------------------------------------------------------------------------------- ; Sample offsets ;------------------------------------------------------------------------------- diff --git a/4klang.h b/4klang.h index 0e48b4f..3b11a5c 100644 --- a/4klang.h +++ b/4klang.h @@ -3,14 +3,14 @@ #define SU_RENDER_H #define SU_CHANNEL_COUNT 2 -#define SU_LENGTH_IN_SAMPLES 3010656 +#define SU_LENGTH_IN_SAMPLES 2828192 #define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT) #define SU_SAMPLE_RATE 44100 #define SU_BPM 116 #define SU_ROWS_PER_BEAT 4 #define SU_ROWS_PER_PATTERN 16 -#define SU_LENGTH_IN_PATTERNS 33 +#define SU_LENGTH_IN_PATTERNS 31 #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)) diff --git a/4klang.inc b/4klang.inc index 01137ca..1c05405 100644 --- a/4klang.inc +++ b/4klang.inc @@ -3,14 +3,14 @@ %define PLAYER_INC %define SU_CHANNEL_COUNT 2 -%define SU_LENGTH_IN_SAMPLES 3010656 +%define SU_LENGTH_IN_SAMPLES 2828192 %define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT) %define SU_SAMPLE_RATE 44100 %define SU_BPM 116 %define SU_ROWS_PER_BEAT 4 %define SU_ROWS_PER_PATTERN 16 -%define SU_LENGTH_IN_PATTERNS 33 +%define SU_LENGTH_IN_PATTERNS 31 %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)) %define SU_SAMPLE_SIZE 2 diff --git a/4klang.yml b/4klang.yml index 4fe6ad7..d101d69 100644 --- a/4klang.yml +++ b/4klang.yml @@ -3,37 +3,37 @@ rowsperbeat: 4 score: tracks: - numvoices: 1 - order: [0, -1, -1, 1, 2, 3, 4, 5, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 9, 10, 11, 6, 6, 7, 7, 6, 6, 12, -1] - patterns: [[21, 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], [1, 1, 1, 1, 62, 1, 64, 1, 65, 1, 1, 1, 67, 1, 1, 1], [69, 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, 64, 62], [64, 1, 1, 1, 1, 1, 1, 1, 69, 1, 1, 1, 1, 1, 1, 1], [33, 0, 1, 1, 33, 33, 33, 33, 0, 1, 33, 0, 1, 33, 0, 1], [28, 0, 1, 1, 28, 28, 28, 28, 0, 1, 28, 0, 1, 28, 0, 1], [26, 0, 1, 1, 26, 26, 26, 26, 0, 1, 26, 0, 1, 26, 0, 1], [23, 0, 1, 1, 23, 23, 23, 23, 0, 1, 23, 0, 1, 23, 0, 1], [28, 0, 1, 1, 28, 28, 28, 30, 0, 1, 30, 0, 1, 30, 0, 1], [32, 0, 1, 1, 32, 32, 32, 32, 0, 1, 32, 0, 1, 32, 0, 1], [33, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [0, -1, -1, 1, 2, 3, 4, 5, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 9, 10, 11, 6, 6, 7, 7, 6, 6] + patterns: [[21, 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], [1, 1, 1, 1, 62, 1, 64, 1, 65, 1, 1, 1, 67, 1, 1, 1], [69, 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, 64, 62], [64, 1, 1, 1, 1, 1, 1, 1, 69, 1, 1, 1, 1, 1, 1, 1], [33, 0, 1, 1, 33, 33, 33, 33, 0, 1, 33, 0, 1, 33, 0, 1], [28, 0, 1, 1, 28, 28, 28, 28, 0, 1, 28, 0, 1, 28, 0, 1], [26, 0, 1, 1, 26, 26, 26, 26, 0, 1, 26, 0, 1, 26, 0, 1], [23, 0, 1, 1, 23, 23, 23, 23, 0, 1, 23, 0, 1, 23, 0, 1], [28, 0, 1, 1, 28, 28, 28, 30, 0, 1, 30, 0, 1, 30, 0, 1], [32, 0, 1, 1, 32, 32, 32, 32, 0, 1, 32, 0, 1, 32, 0, 1]] - numvoices: 1 - order: [0, -1, -1, -1, -1, -1, 1, -1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 5, 6, 7, 2, 2, 3, 3, 2, 2, 8, -1] - patterns: [[33, 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], [45, 0, 1, 1, 45, 45, 45, 45, 0, 1, 45, 0, 1, 45, 0, 1], [40, 0, 1, 1, 40, 40, 40, 40, 0, 1, 40, 0, 1, 40, 0, 1], [38, 0, 1, 1, 38, 38, 38, 38, 0, 1, 38, 0, 1, 38, 0, 1], [35, 0, 1, 1, 35, 35, 35, 35, 0, 1, 35, 0, 1, 35, 0, 1], [40, 0, 1, 1, 40, 40, 40, 42, 0, 1, 42, 0, 1, 42, 0, 1], [47, 0, 1, 1, 47, 47, 47, 47, 0, 1, 47, 0, 1, 47, 0, 1], [45, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [0, -1, -1, -1, -1, -1, 1, -1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 5, 6, 7, 2, 2, 3, 3, 2, 2] + patterns: [[33, 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], [45, 0, 1, 1, 45, 45, 45, 45, 0, 1, 45, 0, 1, 45, 0, 1], [40, 0, 1, 1, 40, 40, 40, 40, 0, 1, 40, 0, 1, 40, 0, 1], [38, 0, 1, 1, 38, 38, 38, 38, 0, 1, 38, 0, 1, 38, 0, 1], [35, 0, 1, 1, 35, 35, 35, 35, 0, 1, 35, 0, 1, 35, 0, 1], [40, 0, 1, 1, 40, 40, 40, 42, 0, 1, 42, 0, 1, 42, 0, 1], [47, 0, 1, 1, 47, 47, 47, 47, 0, 1, 47, 0, 1, 47, 0, 1]] - numvoices: 1 - order: [-1, 0, -1, -1, -1, -1, 0, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 4, 1, 1, 2, 2, 1, 1, 5, -1] - patterns: [[40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [40, 0, 1, 1, 40, 40, 40, 40, 0, 1, 40, 0, 1, 40, 0, 1], [47, 0, 1, 1, 47, 47, 47, 47, 0, 1, 47, 0, 1, 47, 0, 1], [45, 0, 1, 1, 45, 45, 45, 45, 0, 1, 45, 0, 1, 45, 0, 1], [44, 0, 1, 1, 44, 44, 44, 44, 0, 1, 44, 0, 1, 44, 0, 1], [40, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-1, 0, -1, -1, -1, -1, 0, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 4, 1, 1, 2, 2, 1, 1] + patterns: [[40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [40, 0, 1, 1, 40, 40, 40, 40, 0, 1, 40, 0, 1, 40, 0, 1], [47, 0, 1, 1, 47, 47, 47, 47, 0, 1, 47, 0, 1, 47, 0, 1], [45, 0, 1, 1, 45, 45, 45, 45, 0, 1, 45, 0, 1, 45, 0, 1], [44, 0, 1, 1, 44, 44, 44, 44, 0, 1, 44, 0, 1, 44, 0, 1]] - numvoices: 1 - order: [-1, -1, 0, -1, -1, -1, 0, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 4, 1, 1, 2, 2, 1, 1, 5, -1] - patterns: [[49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [49, 0, 1, 1, 49, 49, 49, 49, 0, 1, 49, 0, 1, 49, 0, 1], [44, 0, 1, 1, 44, 44, 44, 44, 0, 1, 44, 0, 1, 44, 0, 1], [42, 0, 1, 1, 42, 42, 42, 42, 0, 1, 42, 0, 1, 42, 0, 1], [59, 0, 1, 1, 59, 59, 59, 59, 0, 1, 59, 0, 1, 59, 0, 1], [49, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-1, -1, 0, -1, -1, -1, 0, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 4, 1, 1, 2, 2, 1, 1] + patterns: [[49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [49, 0, 1, 1, 49, 49, 49, 49, 0, 1, 49, 0, 1, 49, 0, 1], [44, 0, 1, 1, 44, 44, 44, 44, 0, 1, 44, 0, 1, 44, 0, 1], [42, 0, 1, 1, 42, 42, 42, 42, 0, 1, 42, 0, 1, 42, 0, 1], [59, 0, 1, 1, 59, 59, 59, 59, 0, 1, 59, 0, 1, 59, 0, 1]] - numvoices: 1 - order: [-1, -1, -1, 0, 1, 2, 3, 4, -1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 6, -1, 5, 5, 6, 6, 5, 5, 8, -1] - patterns: [[64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 50, 1, 52, 1, 53, 1, 1, 1, 55, 1, 1, 1], [57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 50], [52, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1], [52, 0, 1, 1, 52, 52, 52, 52, 0, 1, 52, 0, 1, 52, 0, 1], [59, 0, 1, 1, 59, 59, 59, 59, 0, 1, 59, 0, 1, 59, 0, 1], [57, 0, 1, 1, 57, 57, 57, 57, 0, 1, 57, 0, 1, 57, 0, 1], [52, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-1, -1, -1, 0, 1, 2, 3, 4, -1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 6, -1, 5, 5, 6, 6, 5, 5] + patterns: [[64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 50, 1, 52, 1, 53, 1, 1, 1, 55, 1, 1, 1], [57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 50], [52, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1], [52, 0, 1, 1, 52, 52, 52, 52, 0, 1, 52, 0, 1, 52, 0, 1], [59, 0, 1, 1, 59, 59, 59, 59, 0, 1, 59, 0, 1, 59, 0, 1], [57, 0, 1, 1, 57, 57, 57, 57, 0, 1, 57, 0, 1, 57, 0, 1]] - numvoices: 2 - order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0, 3, -1] - patterns: [[33, 1, 1, 1, 33, 33, 33, 33, 1, 1, 33, 1, 1, 33, 1, 1], [32, 1, 1, 1, 32, 32, 32, 32, 1, 1, 32, 1, 1, 32, 1, 1], [30, 1, 1, 1, 30, 30, 30, 30, 1, 1, 30, 1, 1, 30, 1, 1], [33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0] + patterns: [[33, 1, 1, 1, 33, 33, 33, 33, 1, 1, 33, 1, 1, 33, 1, 1], [32, 1, 1, 1, 32, 32, 32, 32, 1, 1, 32, 1, 1, 32, 1, 1], [30, 1, 1, 1, 30, 30, 30, 30, 1, 1, 30, 1, 1, 30, 1, 1]] - numvoices: 2 - order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0, 3, -1] - patterns: [[45, 1, 1, 1, 45, 45, 45, 45, 1, 1, 45, 1, 1, 45, 1, 1], [44, 1, 1, 1, 44, 44, 44, 44, 1, 1, 44, 1, 1, 44, 1, 1], [42, 1, 1, 1, 42, 42, 42, 42, 1, 1, 42, 1, 1, 42, 1, 1], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0] + patterns: [[45, 1, 1, 1, 45, 45, 45, 45, 1, 1, 45, 1, 1, 45, 1, 1], [44, 1, 1, 1, 44, 44, 44, 44, 1, 1, 44, 1, 1, 44, 1, 1], [42, 1, 1, 1, 42, 42, 42, 42, 1, 1, 42, 1, 1, 42, 1, 1]] - numvoices: 3 - order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, -1, -1] + order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 1, 1, 1], [73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1], [74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 73, 1, 0, 71], [73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1], [85, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, 81], [80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 1, 1, 1, 1, 78, 1, 1, 1, 1, 1, 1, 80], [81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 78, 1, 1, 80], [81, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 83, 1, 1, 81], [80, 1, 1, 1, 1, 1, 1, 1, 81, 1, 1, 1, 1, 1, 1, 1], [83, 1, 1, 1, 1, 1, 0, 1, 81, 1, 1, 1, 1, 1, 83, 1], [85, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 85, 1, 1, 83], [85, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 81, 1, 1, 85], [83, 1, 1, 1, 1, 1, 1, 1, 81, 1, 1, 1, 1, 1, 1, 1], [80, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 80, 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]] - numvoices: 1 - order: [-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, 1, -1] - patterns: [[62, 1, 1, 1, 62, 62, 62, 62, 1, 1, 62, 1, 1, 62, 1, 1], [62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-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] + patterns: [[62, 1, 1, 1, 62, 62, 62, 62, 1, 1, 62, 1, 1, 62, 1, 1]] - numvoices: 1 - order: [-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, 1, -1] - patterns: [[60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1], [60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] + order: [-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] + patterns: [[60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1, 60, 1, 1, 1]] rowsperpattern: 16 - length: 33 + length: 31 patch: - name: Strings numvoices: 5 diff --git a/base.config b/base.config index 6bcc4b6..e781211 100644 --- a/base.config +++ b/base.config @@ -47,7 +47,7 @@ TIME_DIVIDER=91241.383 TIME_BASE=bars AUDIO_DELAY=2048 -PROD_END_TIME=3012704 +PROD_END_TIME=2830240 ########### Final product ########### @@ -61,7 +61,7 @@ QUOTE=\" CRINKLER_ORDERTRIES=4000 -AUDIO_BUFFER_ALLOCATED_LENGTH=3012704 +AUDIO_BUFFER_ALLOCATED_LENGTH=2830240 AUDIO_SAMPLING_RATE=44100 LOOP_END=5.0 LOOP_START=3.0 diff --git a/music/4k_sg_v4.xrns b/music/4k_sg_v4.xrns index baa0153194a0080045339ae42b5abb4ef20cc252..a39911e41a96093c2f46996a1c8f24bf39f49ec6 100644 GIT binary patch delta 14132 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 delta 14690 zcmbt*1yEdFvn?(OZUKT5AOs8U7Ayn{!QI{6IY@915}aUx;BJFE!4llvWpKAQlYIAo z_5W4(-MaNcvDv++=Nx9Q?$v8IIoBZAkv3T1qYOL(9t<1|3XEUcgSzUVfex4l2IgiJ z8L|Qcqhx1m#_VomeduH1wASCWb#;p`>(<@9kX%;xiXe@QeEF>@t1Y|<*Ze}OLx4n` z$@310PR2H0Hl=qjJ6GPI7OaFh@o9g^Px#^HajNshd-TakNE!F&R9sDRuFV(s3C|ah z>DL4}KGtjl4^x%|ZCMYOSud7H_N%x)IXAM7W#R@ZJ}qD3rVQD=SjGuE`@*;9qT(sM z%-K{E#<8_gmi-hKVET19coY7Mru#WV)W zP%^x7JJ#;IE!E>}IdUn)0P!YQD6isjKqMbY`aWEQJ$se43zyN~DAdhyAO~F8Qqp z-`A2)`N!w4uF!qfBZR=lt^LZt-B#W_07?P{4w!Q^V?D|~&vAEsgZepJl(dAma8V+L z<3){G4x$b2M`o1w2+MEDsdzYI>CiQ3;;Bj#=GBzHY@jAKV1moYj$&xx&*AjUFLuc~e1VJL9*-O;WWsiH)8iKB|E)f*#o_P-IIH@O>u-=_ z(K2G;aQ-DujO;$SUz{r0H-WQvPE{gD^2I9EUiK(TEJ%al$ zRr1}E9-lV+X*OQkm1ml<-)1v@eU@GA<*Jr@l2byID<^w%?AtCwl4IkmXrDDXC~NwZ z9NEj(K{zXE*o5MI7azC60mOcHRm;Gsp@vU>I$cmYw@_0_l09NMJq3+@#ifQL%B$W^ zx}%gN<@)&Ud@THD6o9mq(A^>@J@=O8w=j)`oze%}gaKeux?8G6)1B zER>g2^enQ0#9zk9VcZ9TuIF(+K{s~Ww5-}3J_2JVO~HIGNKNPX)D_w9m(n<_n+eCMo z(iuqU%~TRkqlcY^vwi$I=WdBWOhjOna?)^H?^Msnw&AJfmGn~5ty7y_Pex=qfQw>$ zsHtg;pkO_}3|DWK?bB?-62V=BQ1bOn%vWi(uQF9zt|NjYqJUBMto33TRbI=7buBwY&vD{ub8{G$s_|8s!Bi5v+ zi+N;0-?O%8PrxYCJnHB>>Z9Qb-?7Yo$A=uQ7+-M6fsee^_{_F2imk_6r#=bx1PvRK z1&)MP^G_XOX-bX=u^sFYkw{DGz@w#Qq^f^SyWP)MPqI=MifKr~<%75H_bq*HB4{r= zuD5Rn`YcJZu@Ep?o}D4Si^BxV!<~%O5TpL0`&^ssPXweZD;xH6pn?@6I$ZE4n5HL} zRO6a9it0hXTSn5Y)y=)R&;4pg#yhm<5T+eLzHSfrw49-ddFK08TXS;T9)=;zVZ$0; zU+Ib(OV|ekQi;N3R0M@*e|2yMRu&PaS%)exmt->)Q!*Ci#T*T)t~J_@+4JR-j zDLGK3><2zC?tSv!iJkb4#456%`$IH&t=2=J-aAL3vRbJWITnIiVvWS!f^OAKas<}b9LwkmC0}OtGSi|1tQ#(d&#t4(5q(cS@OQ!Tr%&qt;7SE6R^!|GSlR`{k=1tL-1gm(ZOZ3 zUbB3Ywj4iRnCq3hF<_z)?Ow?lGWtYItCmBJwvB+0diu?%<9SgnXW`PgAUj*i< zkA9$od+svxT3yNBd^oKA_H}u#Yoy}gL)IZ$gr}ZmT-`yA*phVC5AET|4}lNdZNs?q zdPAS*y=B^L2+oVx;%(1jM1lDFn^s*=YQEiB5Ydet*tVQwz$+F1beYs^^tSfKce`y3 z@blhZTo=>X5m=DDi*VfXbx^Xbol|o=G&}*9s+ZT>I)eAfOOtG9cuJfET( zh3Z-h#y4#$Z`y`4txC3PZ!+fqmjWtoy`6NW8imr8l$fLWVwAx78 zHogq}SnMN-D2W(;m$+sSziKols5&*8rmA*4%B!{fs56@fQczL9u%O8h>R~!>Bog4< zGS*RuXmQ}tiCT@#WHk; z@l*u9IGoa64lNyL>qWyP@m9aMF(|XUFj46@z0Fg&ONGqyixq}}Hs;!hy}7xi*;eL< z;}YKCCh8YKJJU4eWIT0q;W1Gugx6}U7cET`Kt}6O^jVqMsAp7vOc3W;E$3U5mlJCk zGy1=qzv*%=hxdGl(3zIyU%_oEv~8bPwVG-^(mIm%+ETJX9HtvS&edTYO0{zd;FdUj zM#b%{hOM+C`9PiPSPQ)U%p-M1sSV%Q_V*G%8ZQKR+GeIxUZIZgy2NUa@#^p zGNa0{)s?1g+4wN%u46bOjAkgh!Rd;gHSL=sQ|;iQ_e1zB&~o0iQk4SM$WrafGn>mR zFZ4Jl;*M`)lA#?IN)kZ2%ua5IU#yrJux*$-U6y>*ZaPGcXTexj^~Pr8pSnbMQ)hVd z{XoSuurs}6-CDpAi^^*CZ7Yy2WZ|2F+R1vfnl zS34`-_xW6mHcR2-@7k<$o!HihJ=HW8EUTBgvPHI?)-N7arYoX$bmK2AEFNr*G_=HI zK{@J{2!_V|JAyW&e7UXyzFwe}=7Pg!vu(~{&3zd_uHzzeYU?J}&Q6i{;hTaj=QjEo zeQiM7Vx^MSlF(s@@2~n7rJNhSAwo7&Qs{((>{;?w)ab)kHDCcJuzA*|mzMn&$@L+q zwQu9DOGlqPK6pxfNobGaYPK@9G{fW~_ey+K?S8}aah0#C;y$vmc8SGJXOyYLR;4@= z1hxWvf;O41_^huCxRk9rcitTq1UpP?*dA7|3R2!3wN+sNdv*rXF4rRotDa-$TDn6n z=`**LhH!IAYi8s+Yyt0Lr z3o?v@qSKC~bAC4};A)W44@sVmrOyO%A1(nO@n`B^Su|^9R9>OYk9Sm*UVY)6thoU1 z@HKPvwRr3<*3+XWF@6`yb7E?B9pEn-Zq+4Im5RCAwb=HR%%p6RyuNykKW^NNR~y3r z$-&xJjaOo+erI8HvM;3Q16alwUFBA~Nwscyfb%57HYqTq=-9nne%2?dtRUm-qm~08 z+E)3UIKeguEOxQ!z@x@r=kv>yZOdE1_2%^t&zN7eUm2^DtscThR-;NseLl1yvoTM; zkW(YeFOk2S)Fr2nS|U5@AtKG%LJl3KL<5gow;GqK@lA7|&u=A8o1K=D);j5_ksTG| zR!7aycXh~I2}vxuNSSCKNzZDOPtXbgMKSNQoL!`S#H%yB?_~6HYnUVOtUS9Ivz>fI zm#13_c+n)|HR_eM$Bw9~iq6aJCh+Bo#eD}gFY>Qq$N3X%F}V}2&MY69RdiZu=miI= zBWWk6g$`wI3NHz^KuFV{>or}bWY~Q3c1e&3(0A+OkI1g_88>_G!xpSCBO*XR$jhjK znD_2ys&rQo&u&_|Uy{qEmC*=q?C|5Cf~Ua`+H|LP^5>}nxderzBaSTjR5z-M`Be(b z(wSa|(oSd3~(SFW+?o9>HSr!u_1(Xa6t+@k* zJ`05~?^gB{;9BE`snw;7g|sn$9jV`@K$+uKjh00?c95geB+xiw%wE!Ey2z8x7MBFPkalb9TdihxCrw*TE0-$#FnlCF*4Hw2 zZ}RacvvzXUg5OP!^(g2a;L@32;HE2Rv($K@e9eK>e_*YO{@`sdhbf#^N4vcrZH3Z@$D8)s-kt>G`>^m)w+#|#<%I`jRx~G z-Fh}{f*5iyGit&zU3NH8WZqbW3;Tk?W|St7lP|wG3)FGNI^gV<$c#l1)vv%KSRjT|h5?H?RN-)AI>e1Og<)!uP3843Y%HPQkPr z7e|i8OUdU~XT7~P{;Lg>^}YAG3cpkLs`@f#!q;!YKUxWm2#2lzz_j;1sXl#h*8`jk zmb?Se@sYNO0`G2yR<%S?rYIc+OGZP}nVDvZad^`(!SmyNud06+f}@(Q0u{5a)qNsV zKXXgprQVo`19f4tu4Q4?zb=AL4U=hIPY09lw|$>-#B5N;uHsIHw5Pk&75cruk6hK& zt>2Bs9F-=FF3FB@(nmI8-%S4)26b**J|2nz`ANV%R&|lJ&4)Hz-fZ>bxx@(zvr6z2 z8>7?UP3q$J2xF%7#jT_6pH)r8=u+mA2Rc&G`J~osK#+pl3w)MkVS|@p#pJaPnB!3bclPOu=CCw7AMQGsgH^@1A*bg5-+8NOeK1?S2A=R#}O^0`I!)e|J z)f~-2GE7f6Y^LKb`E5*P)D?E_h4HmrmzW0^;kOuQF*0Qh^QR6$i_CiKQ3i8dvSqDF zsF`V%Kwwnzf_j&+=~)OFa59%ol^7Gl+IU@kPszqsz*a?UMNq=+@~(U^vE^oJdWq!8 zY(|woKP?gcD_Wi4&xuP4C!K+n>WX38(lKql>a*%w7TZWfo>t-9;y$;0hXu?^3$-ko z*Iaiz%LHjAkEOT~8I2o)o71zzJ^PqzXtky@fU7D)OV3vAfwJ5EXdwUd@!-8?twsd9 z$a8iFKkr$5Dtd!)Hz~#k7JVj8*j{gIMY+(ZvaA;iQydcA2AK<*)qZ45 z$mo`pwbW6^Jw#9F&ZbEZBE4X2{E|#QeNED$+6WXWZMo&4`e=@3+%+kVe9d}lt+TJC z1elT4?5u90RI5tkcommg6X~NdkS*l~@a@tzw?%gkZfq$T;Tev-douClxz(S zkWNWe-g?rjoW|G+zg4lYzJRBxCnp^91PGfY4_QV8=7ZN0LiQgEqV~V^Ef1*$7!KXV zcF=eDZC)N#9d6dla}~X=er;%5y|WgY;c%3?`QwmKo<&%Xfy6ok7O&{R)EK7 z`pT23C5hc%Og}WI<&bZE4e8=rxA=@7mlz`Le0LM}s%`c~uOAbI87F^Z-bWytj0G#<6d=u4U%&ps83 ze>F=H#L4vReRi2Y?bKvYV$)rp=jz7~R?NR6uIqt)@NgEkBlBG{Eyv~mQX+lJviBxq z`a>)CMwX9PBf7E^f0eFNp+g=LStYTB_+GarEvT>{??zU1wZRJ#Uma z*!q+bW<5a3e85WFSu*9V7|H@FMAJGeQciX|eefud_89>=C#rwpq}q>> z88gG?czU^}WkSPNP!nRyA>`d-{KKLzu-qKf5? zc5H79g&$e>ZErlo=g+ib{_NSzi-Y@KRy-rw{7X5}AQBsHzbpm2{}96eIB}pzK}AhL zHKvVC5it$eAL?HI@PuxGnnx3xB%%rTUlW#p&Hi)36I&zx?7!Rsj^fj6%7l9Z;-d)3 z<5LNr<9Bnh#EI*|d7y64#C~1jV{wpZu6+?NO-RlDXGKJJP2?1Z2>PN3)T`_a=TMUU zcmCLw+Bv$o+>aO*eOw-;#Uc&016BLJj5>q?=?x@kFDWJKYzs(TO%?S zu%8!Hg7H-Pl*Ut|kayPBS54`N*RMz+)^NY$Fm z7yN_h=_{`JIyz!U9i83%u%j@TT>jwQ5S@Eux`tkozzAI8Pw`JpxBKLSRa7i{i?AGl+*oNdnJKH=(YbNlIB|t)y976noV0Kdafii;E0fZblK>k! z_N9l~c;;BaD(q9#g`c`u(y}V`%=G?Z_@e&-xVNlj(N-##^<^GU>QED|;XE+Qv`@M( z9)em^s=I5ed1TF^IMU-u*MuisU@>s8sgW$JOzBwk6FpH~ks!X=p>O!A?Iu2ogSamB zW^e38R64Pv1zT#gPMn}!d^w=s{E*87V(8k7sI-eN)v6=a@||KMtzSfp(|QxLY^52X zgZ-&W5>N|pWIJ?^E^2V z_859QGyUrgl-#&*cPDmR4Y-QuhvN{xT&7QfudBrU&xJ=BZj)zdFRcZq{dGz!a_CQ& z>b`9{Cw}Kx-kG6Zx{S%pOHc=xMShoTdYCv>g*LbSuHSK%%r&T-F97Ny8&4aETT2Vp z1$eRBdT<*I#M*t)52pWPxW0KH2IaGKEtOH~gL;44Ojp$F>bFUfTw1AT_OIH^%>0gO zH$}7V{kP#>AJ6M;1v0!aVGpKcoSz6B94g8yir7Ds(3wYlJR%gpm?GAnrv&ZuU8=)? zB&l#04YEC)@oIWlV~^Qs^i#@D>5C z4sdxi?b1ANVmPbTmdruv9C$n7P_-n@7-Rcrm8J#KVISoF+>UG-Dx{aGu<6N zx(fKyx%wI&29r?$;mW)LG;vG39T_^{2KqzF9S;}2gMs+DczhL?rrq<;N02|XxQnia zJ>DBlN^5%sT|IKgbQsqq9io&sIwCLMZC#8%)T=2rt$>ynp05W>!5?|7>x1nyydHCz zm(%g9p6aT?h9t%s>&6?MpS)G3EY?f!ZRZg8qcYtz86LBMVmD6$-=<)!ED^UU*n-ux zb?PRKm9+X@#ZnJP;ccPM8v>tK`4FzZ(+Z}T?W4Bdr1@aipB4YGjSSurWRDQL8}kb+ zUwjga_~2HCmY8p|3(~sxQOnx6XYR7)UGUre{(fyre^miVh^vR0I|${FLYD8q1L5hI zk>@iJDJL8Nto}}xN1;Nzw>H)i-zzA<7FfH9iL*V(VogIb8K312{W+Hz!}0e>IiN+9ghNZ@nl`#p%ge@4tStFIlxSE=L=f@Ot-?*fqDzq zC;fRHp$|10mxPW--aZ|&=&;u3U}>)Nq(G!YM8}%=?kB23yHmjS=LB20+|yCYa&>cdAe7@Tc=nc2O$8o zKfn&W^^xY08$0&tYsJV|DxrOaZ;;z@`HCKCI*^Dr!uE~}_XW!!Uoq=)8?hX%X^@Ir zkBI`vZsm8pL;f369gTTjhuYGZPkX?d%=&68J(Yu#*d-!Y9|`qE4g#?P@Rs7JU0;h0 z?uQ`3jA5fp?!Gc5;0qBU0r706aGBuIH^Q+ zmza?(->KAxdpxn~(xntqfT8ffaGG&B*8(m?UVOKN>!EPHc|3^8cSMBX-L?XJnk{D^ zU2?-1uFnqOOzGPzAn~)Wtr{^J<4eI9##i{=XFLpQzLt;K!ECPHO-a`!OK@^kFq1EsNhnA<*V+n zIZnZ{m6fzY#8XR}F3rJCrPBf09$2+nJ?hWhHLRmHE=?EZ+DL61rlm;KtlnkkT$V3? z{x)X;TXzzCCt6>M@#3rU=}cPyf8$T(U*UxNCRHsc$0y(TN2TYc(-+*PJ?!7598;Qg z50zJLZM--F#CtohUez0O%ujWe)u>11U$i!HXR2m($WVVOUK5K3R%;Le=QgZIil?(4 zNVhIJkWb|GagbRILZpAE9}9Bt*9*bqeQp@bJA*Mz@bKUp;Bj~vjq5N(jtp3;R-4l~ z{k1=cbW>-q-{`Eb(E2N)=~fWY?0kRr<8|g1v%KPUW0BH+iw5WH2PwaTGneO)DaheT4|&dtnB!jDt@p`XedW1BOB_ zyO_enrWpnd+~eAK4;>UJ;rzV9PxE3qMW!g!ImX^|QcZ@E&Wl7DjfMs%yqklufX_q6 zqJ%MOCwz+(32PL~BeDi#y~gDrf|)I~1~W){4cFQ(^ck`%9|>m;E9N_B!3VA%t`@|J z1O|C}h|>Hkh)~k}Ti+-&ouym$tZng1q<@c*cLG+6-}V~B|D+@b-W7jS`BfBKyN9;K z-y13<`T3Z+{pAX2lP2Y5IO`>asq{DQUoUq^>ooKImI$dk?nVp!mqhHoT{UTDz_qYS zZWz*1I>MbJd4`m!QcXOwM67+LRr;zBA2P+S)1-uXUK^kpRHlm3ZWt*TN(5H{d8^xw zWe^Nw?@VB_iT@G+UFf$=#DiYlfBc&R^LvsJL~LGdpPq7wV?3TNdb6<=w1V^jKlXIT zExh#A1a>M}7+Z~a1S@wF^dw?k4Qkk54JJ`2Q^!AvQA<`6Ip4xJn4k|qT@bC@4bZEQ z`iT!xuO7rbrZzexcZ|e?*gyLB!oP~8T&s8=*$+^_QsgedkkPS`(2IBO1y0uI5^f7q z_WlU0y)_gM;wZ#A^bI6bT*Xrk<%xlKy%G%$CCw&`6Akzzo^ch4O9Z`;w{ChrOlTyZ zLJvC;7O4oOA>M_MHf?s{l_LIyTNC;-H^>cns<}tLMG}{%i>})0@&v^Edw8 z^uJ~h2x2~Sa~dR0hFz#aGKHxxfjHZ$2bREAA-!JkNmhnj_|K=t17lFZW8nmW3@$qM z#QrXV#q!~v0nl4P?{}3+N(prZyMKYj3hP{ay%4q2E-HbX6X~eq`!1TM|D?<@l5e}v z34_ZgT&~b5dYOHV12&!3k8e9$YRFz6w)g$F5#A}}5=@9oX@DvzNOe_P=Fg^rRQ}o2 z3EnJ9iy;6F%by1@kbTK6#{YSs54Ahv{s~hyenM(bRoc+WUR*=sdB8@n~E0y5{9nL7&U?>&0NmR*8g#K9+R(=C{^Im!`bU2#Deh2l8 zp(BEcgX|jLb|?k~U&X#1Ec-$dZ%iMM-Q}HDUAbzTATy=*h;)b6G%QF_VR>{i!t@k+~&CZ)r)~Z^~u;;QJCBV(+Ue=>nc?6f}pSg zIv3oG&mqz>r$p^;1)YMW0ula=j}BHA64EoA=gXJ?-GF{% zcN~eE{{`%R7c41!Qn0Ehgpy8XFAMH->soGDv9%W9N58iQge{fNyjlI`r`g zZ3q1vL#Grnf!bKn2#_ogQ)8GA?jrmhk@C48^>5aMK@(x(jdkspZ_u1jnSt;SzzAh3 z2;0F#K-mtZ9qw-=z*P_$VHzeOLayY$L|Keq5VETunVicVjo#fzQ8-qIiJ;&QVI*4g z5&NG+3GkbV>;+Jo!Zv_|fTf(dmBguT>24B*AhMpsNu}P!VD+jZSZ%5uZ6)asLCF!6 ztOh~x1gz}cgL)Ko1=n!P48;)@;fSa(BDzD-aA4T>&{rI&y5iowDiKom2~m5?h4@As zgiIx=EP}cj>U77N6M*6#$!A7N#|A^3CM1tBculB^j-bqU!OR;tf#uuCvUzb2nmszp{Jvx=e9K=Om%x%M48%^#Zw=N~}C zP>sY{Od(f+&{S@yAY`i{mw=)WJ|k8N1pyDJ>?1_Qt3-zEGcMGxm+)WSA6X#3RHh_} zAi?pg5k%2^I=o6LY%hCLyL3@$Q3xYZT{b%+NgUjmpchR$4iYnRHdp;M!)G9jgjc!! zcdP%@0*LcM1(F85G5W{u$G1QH{(M^K0Fa9#QM?MD>4H#y$Umzg9}xfC3Od{g^1u7D zS0}IFDR3kX6uZfO!-^xj%GvaO5A{j#@Y9a$$1)*Xxf*YXrThuw9+^i;Pe#Yp?H*R_ z>~cz{pY605I_+ro+q&-}nvS;dJy~~Aa0xmbp$T`O+?_$Z9ALivD|0brEB;(b;v~LHnaY#8QG5TB1-3aK|jAP=_{xGJKW&HB# zxi5%iaI+lSBYJ~iy=yVgJ^dY-Q3+56g&L+(hkGq(o?zG&!8S8_gUSP|n7E1yML%Kj zk2K}#$N+8Am2^nLfXWwFK;H|wNG~^}4+lO+zglG7v~ckBTt=7KXE=L%pF#a)`*_7y)YE!4N>1w+d1=Aw*zY`{9|0 zU1VH)7(Y+-dhy7?Ye)6SBEl>_1A6;lrIEZ2B6;3;STml@A$q936HkU&sG>!M3OHyE zOTv9~7$nAqN;w=TasDZPP<=uBeCoK9*cd&Qlc)K1ppc661Xa!9&07|K01Z1tVoh0t z6o%*m>6j;O^*tpHq#m|*6-T7N;pYg=3UMimt!1F(WnYj{YB!mFBJ}1xIYcKDHmj*Mrc+_mh z-}aq1<;nBPq*BWIdqO~f^a)RpK(DJtesR1o>{QCWWV1C#gegC;|iGOT-?fks;rS9akhYBKwLJqyX zJC0m*7jL5PcAWePJ+pt8!&}L8w{RGc|Dsg*qQzg>fvgN`NJvb^S>n?bkddCHl>RCT z94}&bKO&@dVBF4uZH8S6!Snp5Tz>frl6CDnX>Mrd4~jRAs=~d2ZHd8YQ5-{u61L*w z&I<^G3w=6|K9$;l@bzS6Q6j=W;1|DwgvB43kLA}x=!M0O0O&)h15yrP)&E@ZFO|ej zzM+SKoDksXz$-)1<$Tq--3F_TpCXI6o`}uleNP@wGL&FEHZSVID`@3yUy;n*ABLHD zx(-?P+KFueX80+RZe8~ZQ^ApE|L+=_PXT;&bjRON`u477+qWn5nPSo!B$3%D#JVX% zdE#JEh+KA=GY4RbF;$mWRgmQUpZx~=hhpP@WZ++0@Qo~_fFsKt(ddH&!2c8w1zbi- zS&s)igX2fPZ-;wA&=lwR^=`y20ld!wYvg2Sj2o=F4GcON_o(Wv5H6?<)#8|Uz~2s& zX8wX)Swv|S2qQT=tUvBMV~o4d=;hliNHH;3M86>d3hppZF{DZBH2?9eHbprGJt z@hzxrun*riulEnr zqd|BcvGkcnv3#})Bq&t8aaxW&S6hw@lvp9>I-k51CaV89*k#WV|NCL0E*N^4K#jxw zTLEzXoFE`->0d+u0U9c#AO-(V-UCBeeo&zVkz9X?f$=${-a~BF;@1ipuzRE|p6fh9 z>CbUG_81%+Zo`qaL}1c+KkK;!vRnQC9qdSSJ8Tn}fSBvg#e|BY2_nIvT~w@8fe3z) zp78GJ{q}iSsDEI`H z+Ph0)#cZE!@T4p4x{>YTW#PQ!p+Yh0_Gm+^csT?3Q|5=4Ux@Sr5|T7{!KRH)&0-1`QKDC@ZZX2 zl}|99kaMT}LPrXzo{Oo}uG{0!BOg;0Y$G3V*8t0saI4cZit^^iDbn=Siz~=Mzr3vx z(X8P?f>gchaMT1s1XrDboC~(jh*k}YjHpxgpjC{LRo8I>$ji}a6~Xh)4C;Z}z%xhs zxI%(a#Eq*L*)iDoBO*bC3}1Re(TE_$97`Nh%s)pq1rUuI`%NMjA06*e7l;IzUx{>w zJ}V?7bFdYbRK|jhQQR(B7e^8in~46H-cJ#LhP_P)wT&klt08j2E8SSc8RoY?{Oh6C zHtT*9Z-|Zn_s_)oj~f}d1JP!Ep`a8-tQbi^T!f594CjOB0G0)%y6*s%kyYK;tV~U&06^MWJ(L;OX~4MJ6k(@< zJR$XnmwSbfzE9}xZTm^)TS#@-dtdto{!biqMk|T^Y4uzm`1(yhKk~ukKZL4yYD7Ei zzcT*+NKaWf?LVJ&6JF`{xCH z$P#jzp?R%R6R;gx3eFae^k58Fc@Aj^`msQN7?Je~%-~gHdDFTytKPvrhND3GhySz@ z^_#k!Lw2JV*?Ib?_M8~yTd#%aq?T7n&?(+PI+lK{kTxj1)bnTp5+*Py)7=-BigMpb z$v0LNdiTOg8v9xcJZ-7+w4Xw)c2xqqOjdFg{<2?l#^(Ern}1${y0&sJU3~R%_P&}40.)" + "a.xy=f(r)*a.xy;" + "float p=9.+(l-1.)*2.+1.5;" + "if(l>0.)" "{" - "d.x-=1.95;" - "vec3 z=d;" + "a.x-=1.95;" + "vec3 e=a;" "if(y>p)" - "z.x=t(vec2(z.x,p));" - "float e=x(vec3(d.x-.06,d.yz),vec2(.1,.15))-.01;" - "s=max(-x(vec3(z.x-.14,z.yz),vec2(.22))-.01,x(vec3(z),vec2(.2,.12))-.02);" - "s=min(s,e);" - "l=min(l,s);" - "if(l==s)" + "e.x=t(vec2(e.x,p));" + "float h=x(vec3(a.x-.06,a.yz),vec2(.1,.15))-.01;" + "d=max(-x(vec3(e.x-.14,e.yz),vec2(.22))-.01,x(vec3(e),vec2(.2,.12))-.02);" + "d=min(d,h);" + "z=min(z,d);" + "if(z==d)" "c=4.;" - "if(l==e&&y>p+.2)" + "if(z==h&&y>p+.2)" "c=5.;" "}" "}" - "vec3 g=x(v),z=g;" + "vec3 e=x(v),l=e;" "i=m/16.;" - "z.xy=f(floor(atan(g.y,g.x)/i+.5)*i)*z.xy;" - "s=n(z.xyz-vec3(1.75,0,0),vec3(.04,.14,.05))-.02;" - "l=min(l,s);" - "if(l==s)" + "l.xy=f(floor(atan(e.y,e.x)/i+.5)*i)*l.xy;" + "d=n(l.xyz-vec3(1.75,0,0),vec3(.04,.14,.05))-.02;" + "z=min(z,d);" + "if(z==d)" "c=6.;" - "s=1e3;" + "d=1e3;" "float p=1.5;" - "for(int e=0;e<4;e++)" + "for(int h=0;h<4;h++)" "{" - "float h=n(vec3(v.x,v.y+p,v.z),vec3(2,.1,p))-.05;" - "s=min(s,h);" - "l=min(l,h);" + "float C=n(vec3(v.x,v.y+p,v.z),vec3(2,.1,p))-.05;" + "d=min(d,C);" + "z=min(z,C);" "p+=.2;" "}" - "if(l==s)" + "if(z==d)" "c=2.;" - "s=v.y+4.25+n(vec2(v.x*.04,(v.z-40.)*.04)+1e2,15.,0)*1.5;" - "l=min(l,s);" - "if(l==s)" + "d=v.y+4.25+n(vec2(v.x*.04,(v.z-40.)*.04)+1e2,15.,0)*1.5;" + "z=min(z,d);" + "if(z==d)" "c=3.;" - "s=1e3;" - "float e=0.,h,C=4.,F=.6,G=.2;" - "if(a==1)" + "d=1e3;" + "float C=0.,h,g=4.,k=.6,F=.2;" + "if(s==1)" "{" "vec2 w=v.xy;" "for(int u=0;u<4;u++)" - "h=t((w+y)*F,C),h+=t((w-y)*F,C),e+=h*G,w*=mat2(1.6,1.2,-1.2,1.6),F*=1.9,G*=.22,C=mix(C,1.,.4);" + "h=t((w+y)*k,g),h+=t((w-y)*k,g),C+=h*F,w*=mat2(1.6,1.2,-1.2,1.6),k*=1.9,F*=.22,g=mix(g,1.,.4);" "}" - "s=max(-x(v,2.,min(2.-(y-23.)*3.,2.3)),x(v,.025,1.6)-e*.15);" - "s=max(s,x(v,.3,1.7));" - "l=min(l,s);" - "if(l==s)" + "d=max(-x(v,2.,min(2.-(y-23.)*3.,2.3)),x(v,.025,1.6)-C*.15);" + "d=max(d,x(v,.3,1.7));" + "z=min(z,d);" + "if(z==d)" "c=1.;" - "return vec2(l,c);" + "return vec2(z,c);" "}" - "float w(vec3 v,vec3 y)" + "float h(vec3 v,vec3 y)" "{" "float m,i=0.;" - "for(int l=0;l<90;l++)" + "for(int z=0;z<90;z++)" "{" "m=e(v+y*i,0).x;" "i+=m;" @@ -177,33 +178,30 @@ const char *__temp_cleaned_shader_glsl = "vec3 m=e(v,1).x-vec3(e(v-y.xyy,1).x,e(v-y.yxy,1).x,e(v-y.yyx,1));" "return normalize(m);" "}" - "float e(vec3 v,vec3 m,float y,vec3 l)" + "float e(vec3 v,vec3 y,float m,vec3 z)" "{" - "vec3 s=normalize(m-v);" - "float c=clamp(dot(l,s),0.,1.),f=w(v+l*.0025,s);" - "if(abs(f)12.)" "v=vec3(-1,-.7,4);" + "if(y>13.5)" + "v=vec3(0,0,4),v.yz*=f(-.6-cos(y-15.)*.2),v.xz*=f(sin((y-16.5)*.5)*.6);" + "if(y>19.5)" + "v=vec3(3,-.7,4);" "if(y>22.)" - "v=vec3(0,-1,5);" + "v.yz*=f((1.-cos(y-22.))*.25*-.1),v.xz*=f(sin((y-22.)*.2)*.6);" "return v;" "}" "vec3 f()" @@ -231,9 +233,15 @@ const char *__temp_cleaned_shader_glsl = "v=vec3(1.7,-1.1,0);" "if(y>12.)" "v=vec3(0);" + "if(y>13.5)" + "v=mix(s,c,(y-13.5)*.3);" + "if(y>16.8)" + "v=mix(c,i,clamp((y-16.8)*.3,0.,1.));" + "if(y>19.5)" + "v=vec3(0);" "return v;" "}" - "vec3 h(vec3 v)" + "vec3 w(vec3 v)" "{" "if(y>10.75)" "{" @@ -242,46 +250,45 @@ const char *__temp_cleaned_shader_glsl = "}" "return v;" "}" - "vec3 h(vec3 v,vec3 y,float m,float s)" + "vec3 n(vec3 v,vec3 y,float m,float c)" "{" - "return vec3(f(v,normalize(vec3(0,.3,.8)),normalize(y),pow(10.,s)))*m;" + "return vec3(f(v,normalize(vec3(0,.3,.8)),normalize(y),pow(10.,c)))*m;" "}" "vec3 g(vec2 v)" "{" - "vec3 m=e(),l=n(v,m,f(),clamp((25.-y)*-1.,2.,25.)),r=vec3(0);" - "float x=w(m,l);" + "vec3 m=e(),c=h(v,m,f(),clamp((25.-y)*-1.,2.,25.)),i=vec3(0);" + "float x=h(m,c);" "if(x<150.)" "{" - "vec3 z=m+l*x,g=e(z);" - "float C=e(z,0).y,F=e(z,vec3(10,15,25),.2,g);" - "r+=F*i;" - "F=e(z,vec3(4,2,-15),1.,g);" - "r+=F*p;" - "r+=s*clamp(dot(g,normalize(vec3(0,1,10))),0.,1.);" - "vec3 u=vec3(.07,.04,.04),G=vec3(.8,.8,.5),t=vec3(.8,.8,.5),B=vec3(.05,.04,.07),A=vec3(.18,.18,.32);" - "if(C==0.)" - "r*=u+h(g,l,.5,2.);" - "if(C==1.)" - "r=e(z,g,normalize(l));" - "if(C==2.)" - "r*=G+h(g,l,.1,1.);" - "if(C==3.)" - "r*=t+n(z.xz*5e2+1e5,.3,0);" - "if(C==4.)" - "r*=B+h(g,l,.5,1.);" - "if(C==5.)" - "r*=d;" - "if(C==6)" - "r*=A+h(g,l,.5,1.6);" + "vec3 s=m+c*x,l=e(s);" + "float g=e(s,0).y,C=e(s,vec3(10,15,25),.2,l);" + "i+=C*k;" + "C=e(s,vec3(4,2,-15),1.,l);" + "i+=C*r;" + "i+=z*clamp(dot(l,normalize(vec3(0,1,10))),0.,1.);" + "if(g==0.)" + "i*=vec3(.21,.35,.33)+n(l,c,.5,2.);" + "if(g==1.)" + "i=e(s,l,normalize(c));" + "if(g==2.)" + "i*=vec3(.8,.8,.5)+n(l,c,.1,1.);" + "if(g==3.)" + "i*=vec3(.8,.8,.5)+n(s.xz*5e2+1e5,.3,0);" + "if(g==4.)" + "i*=vec3(0,.08,.11)+n(l,c,.3,.7);" + "if(g==5.)" + "i*=d;" + "if(g==6.)" + "i*=vec3(.01,.04,.06)+n(l,c,.1,2.5);" "}" - "r=mix(r,mix(a,c,pow(max(dot(l,vec3(0,-.1,-1)),0.),8.)),1.-exp(-x*.01));" - "r=h(r);" - "return w(r);" + "i=mix(i,mix(a,p,pow(max(dot(c,vec3(0,-.1,-1)),0.),8.)),1.-exp(-x*.01));" + "i=w(i);" + "return h(i);" "}" "void main()" "{" - "vec2 m=(gl_FragCoord.xy*2.-v.xy)/v.y;" - "gl_FragColor=vec4(g(m),1);" + "vec2 y=(gl_FragCoord.xy*2.-v.xy)/v.y;" + "gl_FragColor=vec4(g(y),1);" "}"; #endif // SHADER_MINIFIED_H_