diff --git a/CMakeLists.txt b/CMakeLists.txt index a45b9c5..d9dc77e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -169,28 +169,20 @@ if(NOT APPLE AND NOT EMSCRIPTEN) set(SHADER_POSTFX_VERT_SRC "${SHADERS_DIR}/postfx.vert") set(SHADER_POSTFX_FRAG_SRC "${SHADERS_DIR}/postfx.frag") - set(SHADER_UPSCALE_FRAG_SRC "${SHADERS_DIR}/upscale.frag") - set(SHADER_DOWNSCALE_FRAG_SRC "${SHADERS_DIR}/downscale.frag") set(SHADER_CRTPI_FRAG_SRC "${SHADERS_DIR}/crtpi_frag.glsl") set(SHADER_POSTFX_VERT_H "${HEADERS_DIR}/postfx_vert_spv.h") set(SHADER_POSTFX_FRAG_H "${HEADERS_DIR}/postfx_frag_spv.h") - set(SHADER_UPSCALE_FRAG_H "${HEADERS_DIR}/upscale_frag_spv.h") - set(SHADER_DOWNSCALE_FRAG_H "${HEADERS_DIR}/downscale_frag_spv.h") set(SHADER_CRTPI_FRAG_H "${HEADERS_DIR}/crtpi_frag_spv.h") set(ALL_SHADER_HEADERS "${SHADER_POSTFX_VERT_H}" "${SHADER_POSTFX_FRAG_H}" - "${SHADER_UPSCALE_FRAG_H}" - "${SHADER_DOWNSCALE_FRAG_H}" "${SHADER_CRTPI_FRAG_H}" ) set(ALL_SHADER_SOURCES "${SHADER_POSTFX_VERT_SRC}" "${SHADER_POSTFX_FRAG_SRC}" - "${SHADER_UPSCALE_FRAG_SRC}" - "${SHADER_DOWNSCALE_FRAG_SRC}" "${SHADER_CRTPI_FRAG_SRC}" ) diff --git a/data/console/commands.yaml b/data/console/commands.yaml index d59b8b7..4f1085a 100644 --- a/data/console/commands.yaml +++ b/data/console/commands.yaml @@ -21,15 +21,6 @@ categories: - name: VIDEO scope: game commands: - - keyword: SS - handler: cmd_ss - description: Supersampling - usage: "SS [ON|OFF|SIZE|UPSCALE [NEAREST|LINEAR]|DOWNSCALE [BILINEAR|LANCZOS2|LANCZOS3]]" - completions: - SS: [ON, OFF, SIZE, UPSCALE, DOWNSCALE] - SS UPSCALE: [NEAREST, LINEAR] - SS DOWNSCALE: [BILINEAR, LANCZOS2, LANCZOS3] - - keyword: SHADER handler: cmd_shader description: "Toggle/select shader (F4)" diff --git a/data/locale/ca.yaml b/data/locale/ca.yaml index 7a1814e..bdd987e 100644 --- a/data/locale/ca.yaml +++ b/data/locale/ca.yaml @@ -116,8 +116,6 @@ ui: shader: "SHADER" postfx: "POSTFX" crtpi: "CRTPI" - supersampling_enabled: "SUPERMOSTREIG ACTIVAT" - supersampling_disabled: "SUPERMOSTREIG DESACTIVAT" palette: "PALETA" palette_sort: "ORDENACIÓ PALETA" integer_scale_enabled: "ESCALAT SENCER ACTIVAT" diff --git a/data/locale/en.yaml b/data/locale/en.yaml index e77cb63..8499729 100644 --- a/data/locale/en.yaml +++ b/data/locale/en.yaml @@ -116,8 +116,6 @@ ui: shader: "SHADER" postfx: "POSTFX" crtpi: "CRTPI" - supersampling_enabled: "SUPERSAMPLING ON" - supersampling_disabled: "SUPERSAMPLING OFF" palette: "PALETTE" palette_sort: "PALETTE SORT" integer_scale_enabled: "INTEGER SCALE ENABLED" diff --git a/data/shaders/downscale.frag b/data/shaders/downscale.frag deleted file mode 100644 index fe5b9b5..0000000 --- a/data/shaders/downscale.frag +++ /dev/null @@ -1,48 +0,0 @@ -#version 450 -layout(location = 0) in vec2 v_uv; -layout(location = 0) out vec4 out_color; - -layout(set = 2, binding = 0) uniform sampler2D source; - -layout(set = 3, binding = 0) uniform DownscaleUniforms { - int algorithm; // 0 = Lanczos2 (ventana 2, ±2 taps), 1 = Lanczos3 (ventana 3, ±3 taps) - float pad0; - float pad1; - float pad2; -} u; - -// Kernel Lanczos normalizado: sinc(t) * sinc(t/a) para |t| < a, 0 fuera. -float lanczos(float t, float a) { - t = abs(t); - if (t < 0.0001) { return 1.0; } - if (t >= a) { return 0.0; } - const float PI = 3.14159265358979; - float pt = PI * t; - return (a * sin(pt) * sin(pt / a)) / (pt * pt); -} - -void main() { - vec2 src_size = vec2(textureSize(source, 0)); - // Posición en coordenadas de texel (centros de texel en N+0.5) - vec2 p = v_uv * src_size; - vec2 p_floor = floor(p); - - float a = (u.algorithm == 0) ? 2.0 : 3.0; - int win = int(a); - - vec4 color = vec4(0.0); - float weight_sum = 0.0; - - for (int j = -win; j <= win; j++) { - for (int i = -win; i <= win; i++) { - // Centro del texel (i,j) relativo a p_floor - vec2 tap_center = p_floor + vec2(float(i), float(j)) + 0.5; - vec2 offset = tap_center - p; - float w = lanczos(offset.x, a) * lanczos(offset.y, a); - color += texture(source, tap_center / src_size) * w; - weight_sum += w; - } - } - - out_color = (weight_sum > 0.0) ? (color / weight_sum) : vec4(0.0, 0.0, 0.0, 1.0); -} diff --git a/data/shaders/postfx.frag b/data/shaders/postfx.frag index 2a9788d..adf90e4 100644 --- a/data/shaders/postfx.frag +++ b/data/shaders/postfx.frag @@ -6,7 +6,9 @@ // xxd -i postfx.frag.spv > ../../source/core/rendering/sdl3gpu/postfx_frag_spv.h // // PostFXUniforms must match exactly the C++ struct in sdl3gpu_shader.hpp -// (8 floats, 32 bytes, std140/scalar layout). +// (16 floats = 4 × vec4 = 64 bytes, std140/scalar layout). +// IMPORTANT: Qualsevol canvi ací cal replicar-lo a mà a +// source/core/rendering/sdl3gpu/msl/postfx_frag.msl.h (no hi ha generador). layout(location = 0) in vec2 v_uv; layout(location = 0) out vec4 out_color; @@ -15,7 +17,7 @@ layout(set = 2, binding = 0) uniform sampler2D scene; layout(set = 3, binding = 0) uniform PostFXUniforms { float vignette_strength; - float chroma_strength; + float chroma_min; // intensitat mínima de l'aberració cromàtica float scanline_strength; float screen_height; float mask_strength; @@ -24,10 +26,28 @@ layout(set = 3, binding = 0) uniform PostFXUniforms { float bleeding; float pixel_scale; // physical pixels per logical pixel (vh / tex_height_) float time; // seconds since SDL init - float oversample; // supersampling factor (1.0 = off, 3.0 = 3×SS) - float flicker; // 0 = off, 1 = phosphor flicker ~50 Hz — 48 bytes total (3 × 16) + float flicker; // 0 = off, 1 = phosphor flicker ~50 Hz + float chroma_max; // intensitat màxima; si == chroma_min → chroma estàtic + // vec4 #3 — paràmetres de scanlines (exposats per preset YAML) + float scan_dark_ratio; // fracció de subfila fosca per fila lògica (1/3 ≈ 0.333) + float scan_dark_floor; // multiplicador de brillantor de la subfila fosca + float scan_edge_soft; // 0 = step dur; 1 = suavitzat d'1 píxel físic (estil crtpi) + float pad3; // padding per tancar a 64 bytes (4 × vec4) } u; +// Mostreig bilinear horitzontal d'un canal RGB. Evita el "tic-tac" del sampler +// NEAREST quan l'offset de chroma és subpíxel: sense interpolar, l'offset +// arrodonia entre 1 i 2 píxels i el drift temporal feia un parpelleig discret. +float sampleBilinearX(vec2 uv_target, int channel) { + vec2 tex_size = vec2(textureSize(scene, 0)); + float px = uv_target.x * tex_size.x - 0.5; + float p_floor = floor(px); + float f = px - p_floor; + vec4 c0 = texture(scene, vec2((p_floor + 0.5) / tex_size.x, uv_target.y)); + vec4 c1 = texture(scene, vec2((p_floor + 1.5) / tex_size.x, uv_target.y)); + return mix(c0[channel], c1[channel], f); +} + // YCbCr helpers for NTSC bleeding vec3 rgb_to_ycc(vec3 rgb) { return vec3( @@ -69,11 +89,11 @@ void main() { vec3 base = texture(scene, uv).rgb; // Sangrado NTSC — difuminado horizontal de crominancia. - // step = 1 pixel lógico de juego en UV (corrige SS: textureSize.x = game_w * oversample). + // step = 1 pixel lógico de juego en UV. vec3 colour; if (u.bleeding > 0.0) { float tw = float(textureSize(scene, 0).x); - float step = u.oversample / tw; // 1 pixel lógico en UV + float step = 1.0 / tw; // 1 pixel lógico en UV vec3 ycc = rgb_to_ycc(base); vec3 ycc_l2 = rgb_to_ycc(texture(scene, uv - vec2(2.0*step, 0.0)).rgb); vec3 ycc_l1 = rgb_to_ycc(texture(scene, uv - vec2(1.0*step, 0.0)).rgb); @@ -85,10 +105,14 @@ void main() { colour = base; } - // Aberración cromática (drift animado con time para efecto NTSC real) - float ca = u.chroma_strength * 0.005 * (1.0 + 0.15 * sin(u.time * 7.3)); - colour.r = texture(scene, uv + vec2(ca, 0.0)).r; - colour.b = texture(scene, uv - vec2(ca, 0.0)).b; + // Aberración cromática — intensitat varia entre chroma_min i chroma_max amb + // una sinusoidal (si min == max, queda estàtica). Mostreig bilinear horitzontal + // per evitar el "tic-tac" del NEAREST sampler quan l'offset és subpíxel. + if (u.chroma_min > 0.0 || u.chroma_max > 0.0) { + float ca = mix(u.chroma_min, u.chroma_max, 0.5 + 0.5 * sin(u.time * 7.3)) * 0.005; + colour.r = sampleBilinearX(uv + vec2(ca, 0.0), 0); + colour.b = sampleBilinearX(uv - vec2(ca, 0.0), 2); + } // Corrección gamma (linealizar antes de scanlines, codificar después) if (u.gamma_strength > 0.0) { @@ -96,22 +120,20 @@ void main() { colour = mix(colour, lin, u.gamma_strength); } - // Scanlines — proporción 2/3 brillantes + 1/3 oscuras por fila lógica. - // Casos especiales: 1 subfila → sin efecto; 2 subfilas → 1+1 (50/50). - // Constantes ajustables: - const float SCAN_DARK_RATIO = 0.333; // fracción de subfilas oscuras (ps >= 3) - const float SCAN_DARK_FLOOR = 0.42; // multiplicador de brillo de subfilas oscuras + // Scanlines — tècnica dels 3 subpíxels verticals per píxel lògic (aee/projecte_2026): + // franja fosca ocupant `scan_dark_ratio` al final de cada fila lògica. La transició es + // suavitza amb smoothstep d'ample ≈ 1 píxel físic (estil crtpi: filtratge analític + // continu), controlat per `scan_edge_soft`. A 0 és equivalent al step dur antic. if (u.scanline_strength > 0.0) { - float ps = max(1.0, round(u.pixel_scale)); - float frac_in_row = fract(uv.y * u.screen_height); - float row_pos = floor(frac_in_row * ps); - // bright_rows: cuántas subfilas son brillantes - // ps==1 → ps (todo brillante → is_dark nunca se activa) - // ps==2 → 1 brillante + 1 oscura - // ps>=3 → floor(ps * (1 - DARK_RATIO)) brillantes - float bright_rows = (ps < 2.0) ? ps : ((ps < 3.0) ? 1.0 : floor(ps * (1.0 - SCAN_DARK_RATIO))); - float is_dark = step(bright_rows, row_pos); - float scan = mix(1.0, SCAN_DARK_FLOOR, is_dark); + float ps = max(u.pixel_scale, 1.0); + float sub = fract(uv.y * u.screen_height); // [0,1) dins la fila lògica + float dark_center = 1.0 - u.scan_dark_ratio * 0.5; // centre de la franja fosca + float d = abs(sub - dark_center); + d = min(d, 1.0 - d); // wrap a la fila següent + float half_width = u.scan_dark_ratio * 0.5; + float softness = u.scan_edge_soft * 0.5 / ps; // mig píxel físic a cada costat + float band = 1.0 - smoothstep(half_width - softness, half_width + softness, d); + float scan = mix(1.0, u.scan_dark_floor, band); colour *= mix(1.0, scan, u.scanline_strength); } diff --git a/data/shaders/upscale.frag b/data/shaders/upscale.frag deleted file mode 100644 index fb9200d..0000000 --- a/data/shaders/upscale.frag +++ /dev/null @@ -1,15 +0,0 @@ -#version 450 - -// Vulkan GLSL fragment shader — Nearest-neighbour upscale pass -// Used as the first render pass when supersampling is active. -// Compile: glslc upscale.frag -o upscale.frag.spv -// xxd -i upscale.frag.spv > ../../source/core/rendering/sdl3gpu/upscale_frag_spv.h - -layout(location = 0) in vec2 v_uv; -layout(location = 0) out vec4 out_color; - -layout(set = 2, binding = 0) uniform sampler2D scene; - -void main() { - out_color = texture(scene, v_uv); -} diff --git a/source/core/input/global_inputs.cpp b/source/core/input/global_inputs.cpp index 3e73cea..279a59c 100644 --- a/source/core/input/global_inputs.cpp +++ b/source/core/input/global_inputs.cpp @@ -153,12 +153,12 @@ namespace GlobalInputs { Notifier::get()->show({Locale::get()->get(Options::video.vertical_sync ? "ui.vsync_enabled" : "ui.vsync_disabled")}); } - // F4 amb modificadors: Ctrl=supersampling, Shift=next preset, sense modificador=toggle shader + // F4 amb modificadors: Ctrl=next shader (POSTFX↔CRTPI), Shift=next preset, sense modificador=toggle shader auto getShaderAction() -> InputAction { if (!Screen::get()->isHardwareAccelerated()) { return InputAction::NONE; } if (!Input::get()->checkAction(InputAction::TOGGLE_SHADER, Input::DO_NOT_ALLOW_REPEAT)) { return InputAction::NONE; } const SDL_Keymod MOD = SDL_GetModState(); - if ((MOD & SDL_KMOD_CTRL) != 0U) { return InputAction::TOGGLE_SUPERSAMPLING; } + if (Options::video.shader.enabled && ((MOD & SDL_KMOD_CTRL) != 0U)) { return InputAction::NEXT_SHADER; } if (Options::video.shader.enabled && ((MOD & SDL_KMOD_SHIFT) != 0U)) { return InputAction::NEXT_SHADER_PRESET; } return InputAction::TOGGLE_SHADER; } @@ -266,7 +266,7 @@ namespace GlobalInputs { handleNextShaderPreset(); break; - case InputAction::TOGGLE_SUPERSAMPLING: + case InputAction::NEXT_SHADER: handleNextShader(); break; diff --git a/source/core/input/input_types.hpp b/source/core/input/input_types.hpp index da5ac8f..00c7165 100644 --- a/source/core/input/input_types.hpp +++ b/source/core/input/input_types.hpp @@ -26,8 +26,8 @@ enum class InputAction : std::uint8_t { // Acciones de entrada posibles en el j TOGGLE_VSYNC, TOGGLE_INTEGER_SCALE, TOGGLE_SHADER, + NEXT_SHADER, NEXT_SHADER_PRESET, - TOGGLE_SUPERSAMPLING, TOGGLE_BORDER, TOGGLE_IN_GAME_MUSIC, NEXT_PALETTE, diff --git a/source/core/rendering/render_info.cpp b/source/core/rendering/render_info.cpp index 53520f8..0a67ca4 100644 --- a/source/core/rendering/render_info.cpp +++ b/source/core/rendering/render_info.cpp @@ -89,7 +89,7 @@ void RenderInfo::render() const { } line += " | " + zoom_str + "x"; - // PostFX: muestra shader + preset y supersampling, o nada si está desactivado + // PostFX: muestra shader + preset, o nada si está desactivado if (Options::video.shader.enabled) { const bool IS_CRTPI = (Options::video.shader.current_shader == Rendering::ShaderType::CRTPI); const std::string SHADER_NAME = IS_CRTPI ? "crtpi" : "postfx"; @@ -103,8 +103,7 @@ void RenderInfo::render() const { preset_name = prettyName(Options::postfx_presets[static_cast(Options::video.shader.current_postfx_preset)].name); } } - const bool SHOW_SS = Options::video.supersampling.enabled && !IS_CRTPI; - line += " | " + SHADER_NAME + " " + preset_name + (SHOW_SS ? " (ss)" : ""); + line += " | " + SHADER_NAME + " " + preset_name; } // Todo en lowercase diff --git a/source/core/rendering/screen.cpp b/source/core/rendering/screen.cpp index d0ed89d..fd5b518 100644 --- a/source/core/rendering/screen.cpp +++ b/source/core/rendering/screen.cpp @@ -588,42 +588,24 @@ auto loadData(const std::string& filepath) -> std::vector { return Resource::Helper::loadFile(filepath); } -void Screen::setLinearUpscale(bool linear) { - Options::video.supersampling.linear_upscale = linear; - if (shader_backend_ && shader_backend_->isHardwareAccelerated()) { - shader_backend_->setLinearUpscale(linear); - } -} - -void Screen::setDownscaleAlgo(int algo) { - Options::video.supersampling.downscale_algo = algo; - if (shader_backend_ && shader_backend_->isHardwareAccelerated()) { - shader_backend_->setDownscaleAlgo(algo); - } -} - -auto Screen::getSsTextureSize() const -> std::pair { - if (!shader_backend_) { return {0, 0}; } - return shader_backend_->getSsTextureSize(); -} - -// Activa/desactiva el supersampling global (Ctrl+F4) -void Screen::toggleSupersampling() { - Options::video.supersampling.enabled = !Options::video.supersampling.enabled; - if (Options::video.shader.enabled && shader_backend_ && shader_backend_->isHardwareAccelerated()) { - applyCurrentPostFXPreset(); - } -} - // Aplica los parámetros del preset actual al backend de shaders void Screen::applyCurrentPostFXPreset() { if (shader_backend_ && !Options::postfx_presets.empty()) { const auto& p = Options::postfx_presets[static_cast(Options::video.shader.current_postfx_preset)]; - // Supersampling es un toggle global (Options::video.supersampling.enabled), no por preset. - // setOversample primero: puede recrear texturas antes de que setPostFXParams - // decida si hornear scanlines en CPU o aplicarlas en GPU. - shader_backend_->setOversample(Options::video.supersampling.enabled ? 3 : 1); - Rendering::PostFXParams params{.vignette = p.vignette, .scanlines = p.scanlines, .chroma = p.chroma, .mask = p.mask, .gamma = p.gamma, .curvature = p.curvature, .bleeding = p.bleeding, .flicker = p.flicker}; + Rendering::PostFXParams params{ + .vignette = p.vignette, + .scanlines = p.scanlines, + .chroma_min = p.chroma_min, + .chroma_max = p.chroma_max, + .mask = p.mask, + .gamma = p.gamma, + .curvature = p.curvature, + .bleeding = p.bleeding, + .flicker = p.flicker, + .scan_dark_ratio = p.scan_dark_ratio, + .scan_dark_floor = p.scan_dark_floor, + .scan_edge_soft = p.scan_edge_soft, + }; shader_backend_->setPostFXParams(params); } } @@ -696,11 +678,9 @@ void Screen::initShaders() { shader_backend_->init(window_, tex, "", ""); gpu_driver_ = shader_backend_->getDriverName(); - // Propagar flags de vsync, integer scale, upscale y downscale al backend GPU + // Propagar flags de vsync e integer scale al backend GPU shader_backend_->setVSync(Options::video.vertical_sync); shader_backend_->setScaleMode(Options::video.integer_scale); - shader_backend_->setLinearUpscale(Options::video.supersampling.linear_upscale); - shader_backend_->setDownscaleAlgo(Options::video.supersampling.downscale_algo); if (Options::video.shader.enabled) { applyCurrentPostFXPreset(); diff --git a/source/core/rendering/screen.hpp b/source/core/rendering/screen.hpp index 2068185..5d1ef56 100644 --- a/source/core/rendering/screen.hpp +++ b/source/core/rendering/screen.hpp @@ -7,7 +7,6 @@ #include // Para uint8_t #include // Para shared_ptr, __shared_ptr_access #include // Para string -#include // Para std::pair #include // Para vector #include "core/rendering/palette_manager.hpp" // Para PaletteManager @@ -65,11 +64,8 @@ class Screen { void setPaletteSortMode(PaletteSortMode mode); // Establece modo de ordenación concreto [[nodiscard]] auto getPaletteSortModeName() const -> std::string; // Nombre del modo de ordenación actual void toggleShaders(); // Activa/desactiva todos los shaders respetando current_shader - void toggleSupersampling(); // Activa/desactiva el supersampling global void reloadPostFX(); // Recarga el shader del preset actual sin toggle void reloadCrtPi(); // Recarga el shader CrtPi del preset actual sin toggle - void setLinearUpscale(bool linear); // Upscale NEAREST (false) o LINEAR (true) en el paso SS - void setDownscaleAlgo(int algo); // 0=bilinear legacy, 1=Lanczos2, 2=Lanczos3 void setActiveShader(Rendering::ShaderType type); // Cambia el shader de post-procesado activo void nextShader(); // Cicla al siguiente shader disponible (para futura UI) @@ -90,7 +86,6 @@ class Screen { [[nodiscard]] auto getLastFPS() const -> int { return fps_.last_value; } [[nodiscard]] auto getZoomFactor() const -> float { return zoom_factor_; } [[nodiscard]] static auto getMaxZoom() -> int; - [[nodiscard]] auto getSsTextureSize() const -> std::pair; private: // Estructuras diff --git a/source/core/rendering/sdl3gpu/msl/crtpi_frag.msl.h b/source/core/rendering/sdl3gpu/msl/crtpi_frag.msl.h new file mode 100644 index 0000000..f7989ea --- /dev/null +++ b/source/core/rendering/sdl3gpu/msl/crtpi_frag.msl.h @@ -0,0 +1,144 @@ +#pragma once + +#ifdef __APPLE__ + +// Fragment shader del shader "crtpi" (algoritme CRT-Pi): scanlines amb +// pesos gaussians, multisample opcional, gamma i màscara de subpíxels. +namespace Rendering::Msl { + + inline constexpr const char* kCrtpiFrag = R"( +#include +using namespace metal; + +struct PostVOut { + float4 pos [[position]]; + float2 uv; +}; + +struct CrtPiUniforms { + float scanline_weight; + float scanline_gap_brightness; + float bloom_factor; + float input_gamma; + float output_gamma; + float mask_brightness; + float curvature_x; + float curvature_y; + int mask_type; + int enable_scanlines; + int enable_multisample; + int enable_gamma; + int enable_curvature; + int enable_sharper; + float texture_width; + float texture_height; +}; + +static float2 crtpi_distort(float2 coord, float2 screen_scale, float cx, float cy) { + float2 curvature = float2(cx, cy); + float2 barrel_scale = 1.0f - (0.23f * curvature); + coord *= screen_scale; + coord -= 0.5f; + float rsq = coord.x * coord.x + coord.y * coord.y; + coord += coord * (curvature * rsq); + coord *= barrel_scale; + if (abs(coord.x) >= 0.5f || abs(coord.y) >= 0.5f) { return float2(-1.0f); } + coord += 0.5f; + coord /= screen_scale; + return coord; +} + +static float crtpi_scan_weight(float dist, float sw, float gap) { + return max(1.0f - dist * dist * sw, gap); +} + +static float crtpi_scan_line(float dy, float filter_w, float sw, float gap, bool ms) { + float w = crtpi_scan_weight(dy, sw, gap); + if (ms) { + w += crtpi_scan_weight(dy - filter_w, sw, gap); + w += crtpi_scan_weight(dy + filter_w, sw, gap); + w *= 0.3333333f; + } + return w; +} + +fragment float4 crtpi_fs(PostVOut in [[stage_in]], + texture2d tex [[texture(0)]], + sampler samp [[sampler(0)]], + constant CrtPiUniforms& u [[buffer(0)]]) { + float2 tex_size = float2(u.texture_width, u.texture_height); + // Amplada del filtre de scanline analític. 768 = alçada de referència + // CRT a la qual es va tarar l'algoritme original; 3 = divisió per + // subpíxel (R/G/B) del multisample. El resultat escala amb la textura + // d'entrada, de manera que més alçada → filtre més fi. + const float CRT_REFERENCE_HEIGHT = 768.0f; + const float SUBPIXEL_DIV = 3.0f; + float filter_width = (CRT_REFERENCE_HEIGHT / u.texture_height) / SUBPIXEL_DIV; + float2 texcoord = in.uv; + + if (u.enable_curvature != 0) { + texcoord = crtpi_distort(texcoord, float2(1.0f, 1.0f), u.curvature_x, u.curvature_y); + if (texcoord.x < 0.0f) { return float4(0.0f, 0.0f, 0.0f, 1.0f); } + } + + float2 coord_in_pixels = texcoord * tex_size; + float2 tc; + float scan_weight; + + if (u.enable_sharper != 0) { + float2 temp = floor(coord_in_pixels) + 0.5f; + tc = temp / tex_size; + float2 deltas = coord_in_pixels - temp; + scan_weight = crtpi_scan_line(deltas.y, filter_width, u.scanline_weight, u.scanline_gap_brightness, u.enable_multisample != 0); + float2 signs = sign(deltas); + deltas.x *= 2.0f; + deltas = deltas * deltas; + deltas.y = deltas.y * deltas.y; + deltas.x *= 0.5f; + deltas.y *= 8.0f; + deltas /= tex_size; + deltas *= signs; + tc = tc + deltas; + } else { + float temp_y = floor(coord_in_pixels.y) + 0.5f; + float y_coord = temp_y / tex_size.y; + float dy = coord_in_pixels.y - temp_y; + scan_weight = crtpi_scan_line(dy, filter_width, u.scanline_weight, u.scanline_gap_brightness, u.enable_multisample != 0); + float sign_y = sign(dy); + dy = dy * dy; + dy = dy * dy; + dy *= 8.0f; + dy /= tex_size.y; + dy *= sign_y; + tc = float2(texcoord.x, y_coord + dy); + } + + float3 colour = tex.sample(samp, tc).rgb; + + if (u.enable_scanlines != 0) { + if (u.enable_gamma != 0) { colour = pow(colour, float3(u.input_gamma)); } + colour *= scan_weight * u.bloom_factor; + if (u.enable_gamma != 0) { colour = pow(colour, float3(1.0f / u.output_gamma)); } + } + + if (u.mask_type == 1) { + float wm = fract(in.pos.x * 0.5f); + float3 mask = (wm < 0.5f) ? float3(u.mask_brightness, 1.0f, u.mask_brightness) + : float3(1.0f, u.mask_brightness, 1.0f); + colour *= mask; + } else if (u.mask_type == 2) { + float wm = fract(in.pos.x * 0.3333333f); + float3 mask = float3(u.mask_brightness); + if (wm < 0.3333333f) mask.x = 1.0f; + else if (wm < 0.6666666f) mask.y = 1.0f; + else mask.z = 1.0f; + colour *= mask; + } + + return float4(colour, 1.0f); +} +)"; + +} // namespace Rendering::Msl + +#endif // __APPLE__ diff --git a/source/core/rendering/sdl3gpu/msl/postfx_frag.msl.h b/source/core/rendering/sdl3gpu/msl/postfx_frag.msl.h new file mode 100644 index 0000000..6a81d91 --- /dev/null +++ b/source/core/rendering/sdl3gpu/msl/postfx_frag.msl.h @@ -0,0 +1,168 @@ +#pragma once + +#ifdef __APPLE__ + +// Fragment shader del shader "postfx": vignette, chroma, scanlines, mask, +// gamma, curvature, bleeding i flicker. Els paràmetres venen via uniforms. +// +// IMPORTANT: mantenir sincronitzat a mà amb data/shaders/postfx.frag. SDL3 GPU +// compila aquest string MSL en runtime; no hi ha generador automàtic. Qualsevol +// canvi a la struct d'uniforms o a la lògica del GLSL cal replicar-lo ací al +// mateix commit. Mida total = 64 bytes (4 × vec4). +namespace Rendering::Msl { + + inline constexpr const char* kPostfxFrag = R"( +#include +using namespace metal; + +struct PostVOut { + float4 pos [[position]]; + float2 uv; +}; + +struct PostFXUniforms { + float vignette_strength; + float chroma_min; + float scanline_strength; + float screen_height; + float mask_strength; + float gamma_strength; + float curvature; + float bleeding; + float pixel_scale; + float time; + float flicker; + float chroma_max; + // vec4 #3 — paràmetres de scanlines (exposats per preset YAML) + float scan_dark_ratio; + float scan_dark_floor; + float scan_edge_soft; + float pad3; +}; + +// Mostreig bilinear horitzontal d'un canal RGB. Evita el "tic-tac" del sampler +// NEAREST quan l'offset de chroma és subpíxel. +static float sampleBilinearX(float2 uv_target, int channel, texture2d scene, sampler samp) { + float2 tex_size = float2(scene.get_width(), scene.get_height()); + float px = uv_target.x * tex_size.x - 0.5f; + float p_floor = floor(px); + float f = px - p_floor; + float4 c0 = scene.sample(samp, float2((p_floor + 0.5f) / tex_size.x, uv_target.y)); + float4 c1 = scene.sample(samp, float2((p_floor + 1.5f) / tex_size.x, uv_target.y)); + return mix(c0[channel], c1[channel], f); +} + +static float3 rgb_to_ycc(float3 rgb) { + return float3( + 0.299f*rgb.r + 0.587f*rgb.g + 0.114f*rgb.b, + -0.169f*rgb.r - 0.331f*rgb.g + 0.500f*rgb.b + 0.5f, + 0.500f*rgb.r - 0.419f*rgb.g - 0.081f*rgb.b + 0.5f + ); +} +static float3 ycc_to_rgb(float3 ycc) { + float y = ycc.x; + float cb = ycc.y - 0.5f; + float cr = ycc.z - 0.5f; + return clamp(float3( + y + 1.402f*cr, + y - 0.344f*cb - 0.714f*cr, + y + 1.772f*cb + ), 0.0f, 1.0f); +} + +fragment float4 postfx_fs(PostVOut in [[stage_in]], + texture2d scene [[texture(0)]], + sampler samp [[sampler(0)]], + constant PostFXUniforms& u [[buffer(0)]]) { + float2 uv = in.uv; + + if (u.curvature > 0.0f) { + float2 c = uv - 0.5f; + float rsq = dot(c, c); + float2 dist = float2(0.05f, 0.1f) * u.curvature; + float2 barrelScale = 1.0f - 0.23f * dist; + c += c * (dist * rsq); + c *= barrelScale; + if (abs(c.x) >= 0.5f || abs(c.y) >= 0.5f) { + return float4(0.0f, 0.0f, 0.0f, 1.0f); + } + uv = c + 0.5f; + } + + float3 base = scene.sample(samp, uv).rgb; + + float3 colour; + if (u.bleeding > 0.0f) { + float tw = float(scene.get_width()); + float step = 1.0f / tw; + float3 ycc = rgb_to_ycc(base); + float3 ycc_l2 = rgb_to_ycc(scene.sample(samp, uv - float2(2.0f*step, 0.0f)).rgb); + float3 ycc_l1 = rgb_to_ycc(scene.sample(samp, uv - float2(1.0f*step, 0.0f)).rgb); + float3 ycc_r1 = rgb_to_ycc(scene.sample(samp, uv + float2(1.0f*step, 0.0f)).rgb); + float3 ycc_r2 = rgb_to_ycc(scene.sample(samp, uv + float2(2.0f*step, 0.0f)).rgb); + ycc.yz = (ycc_l2.yz + ycc_l1.yz*2.0f + ycc.yz*2.0f + ycc_r1.yz*2.0f + ycc_r2.yz) / 8.0f; + colour = mix(base, ycc_to_rgb(ycc), u.bleeding); + } else { + colour = base; + } + + // Chroma — varia entre chroma_min i chroma_max via sinusoidal; si min == max + // queda estàtic. Mostreig bilinear horitzontal per evitar el "tic-tac" del + // NEAREST sampler amb offsets subpíxel. + if (u.chroma_min > 0.0f || u.chroma_max > 0.0f) { + float ca = mix(u.chroma_min, u.chroma_max, 0.5f + 0.5f * sin(u.time * 7.3f)) * 0.005f; + colour.r = sampleBilinearX(uv + float2(ca, 0.0f), 0, scene, samp); + colour.b = sampleBilinearX(uv - float2(ca, 0.0f), 2, scene, samp); + } + + if (u.gamma_strength > 0.0f) { + float3 lin = pow(colour, float3(2.4f)); + colour = mix(colour, lin, u.gamma_strength); + } + + // Scanlines — 3 subpíxels per fila lògica (2 brillants + 1 fosca). Transició + // suavitzada amb smoothstep d'ample ≈ 1 píxel físic (estil crtpi: filtratge + // analític continu). scan_edge_soft = 0 recupera el step dur de l'original. + if (u.scanline_strength > 0.0f) { + float ps = max(u.pixel_scale, 1.0f); + float sub = fract(uv.y * u.screen_height); + float dark_center = 1.0f - u.scan_dark_ratio * 0.5f; + float d = abs(sub - dark_center); + d = min(d, 1.0f - d); + float half_width = u.scan_dark_ratio * 0.5f; + float softness = u.scan_edge_soft * 0.5f / ps; + float band = 1.0f - smoothstep(half_width - softness, half_width + softness, d); + float scan = mix(1.0f, u.scan_dark_floor, band); + colour *= mix(1.0f, scan, u.scanline_strength); + } + + if (u.gamma_strength > 0.0f) { + float3 enc = pow(colour, float3(1.0f/2.2f)); + colour = mix(colour, enc, u.gamma_strength); + } + + float2 d = uv - 0.5f; + float vignette = 1.0f - dot(d, d) * u.vignette_strength; + colour *= clamp(vignette, 0.0f, 1.0f); + + if (u.mask_strength > 0.0f) { + float whichMask = fract(in.pos.x * 0.3333333f); + float3 mask = float3(0.80f); + if (whichMask < 0.3333333f) mask.x = 1.0f; + else if (whichMask < 0.6666667f) mask.y = 1.0f; + else mask.z = 1.0f; + colour = mix(colour, colour * mask, u.mask_strength); + } + + if (u.flicker > 0.0f) { + float flicker_wave = sin(u.time * 100.0f) * 0.5f + 0.5f; + colour *= 1.0f - u.flicker * 0.04f * flicker_wave; + } + + return float4(colour, 1.0f); +} +)"; + +} // namespace Rendering::Msl + +#endif // __APPLE__ diff --git a/source/core/rendering/sdl3gpu/msl/postfx_vert.msl.h b/source/core/rendering/sdl3gpu/msl/postfx_vert.msl.h new file mode 100644 index 0000000..dc50b38 --- /dev/null +++ b/source/core/rendering/sdl3gpu/msl/postfx_vert.msl.h @@ -0,0 +1,30 @@ +#pragma once + +#ifdef __APPLE__ + +// Vertex shader compartit per tots els pipelines de post-procés: +// fullscreen-triangle que cobreix tota l'àrea del swapchain amb UVs a [0,1]. +namespace Rendering::Msl { + + inline constexpr const char* kPostfxVert = R"( +#include +using namespace metal; + +struct PostVOut { + float4 pos [[position]]; + float2 uv; +}; + +vertex PostVOut postfx_vs(uint vid [[vertex_id]]) { + const float2 positions[3] = { {-1.0, -1.0}, {3.0, -1.0}, {-1.0, 3.0} }; + const float2 uvs[3] = { { 0.0, 1.0}, {2.0, 1.0}, { 0.0,-1.0} }; + PostVOut out; + out.pos = float4(positions[vid], 0.0, 1.0); + out.uv = uvs[vid]; + return out; +} +)"; + +} // namespace Rendering::Msl + +#endif // __APPLE__ diff --git a/source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp b/source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp index b89b96f..69fe115 100644 --- a/source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp +++ b/source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp @@ -7,361 +7,16 @@ #include // memcpy, strlen #include // std::cout -#ifndef __APPLE__ +#ifdef __APPLE__ +#include "core/rendering/sdl3gpu/msl/crtpi_frag.msl.h" +#include "core/rendering/sdl3gpu/msl/postfx_frag.msl.h" +#include "core/rendering/sdl3gpu/msl/postfx_vert.msl.h" +#else #include "core/rendering/sdl3gpu/spv/crtpi_frag_spv.h" -#include "core/rendering/sdl3gpu/spv/downscale_frag_spv.h" #include "core/rendering/sdl3gpu/spv/postfx_frag_spv.h" #include "core/rendering/sdl3gpu/spv/postfx_vert_spv.h" -#include "core/rendering/sdl3gpu/spv/upscale_frag_spv.h" #endif -#ifdef __APPLE__ -// ============================================================================ -// MSL shaders (Metal Shading Language) — macOS -// ============================================================================ - -static const char* POSTFX_VERT_MSL = R"( -#include -using namespace metal; - -struct PostVOut { - float4 pos [[position]]; - float2 uv; -}; - -vertex PostVOut postfx_vs(uint vid [[vertex_id]]) { - const float2 positions[3] = { {-1.0, -1.0}, {3.0, -1.0}, {-1.0, 3.0} }; - const float2 uvs[3] = { { 0.0, 1.0}, {2.0, 1.0}, { 0.0,-1.0} }; - PostVOut out; - out.pos = float4(positions[vid], 0.0, 1.0); - out.uv = uvs[vid]; - return out; -} -)"; - -static const char* POSTFX_FRAG_MSL = R"( -#include -using namespace metal; - -struct PostVOut { - float4 pos [[position]]; - float2 uv; -}; - -struct PostFXUniforms { - float vignette_strength; - float chroma_strength; - float scanline_strength; - float screen_height; - float mask_strength; - float gamma_strength; - float curvature; - float bleeding; - float pixel_scale; - float time; - float oversample; // 1.0 = sin SS, 3.0 = 3× supersampling - float flicker; // 0 = off, 1 = phosphor flicker ~50 Hz -}; - -// YCbCr helpers for NTSC bleeding -static float3 rgb_to_ycc(float3 rgb) { - return float3( - 0.299f*rgb.r + 0.587f*rgb.g + 0.114f*rgb.b, - -0.169f*rgb.r - 0.331f*rgb.g + 0.500f*rgb.b + 0.5f, - 0.500f*rgb.r - 0.419f*rgb.g - 0.081f*rgb.b + 0.5f - ); -} -static float3 ycc_to_rgb(float3 ycc) { - float y = ycc.x; - float cb = ycc.y - 0.5f; - float cr = ycc.z - 0.5f; - return clamp(float3( - y + 1.402f*cr, - y - 0.344f*cb - 0.714f*cr, - y + 1.772f*cb - ), 0.0f, 1.0f); -} - -fragment float4 postfx_fs(PostVOut in [[stage_in]], - texture2d scene [[texture(0)]], - sampler samp [[sampler(0)]], - constant PostFXUniforms& u [[buffer(0)]]) { - float2 uv = in.uv; - - // Curvatura barrel CRT - if (u.curvature > 0.0f) { - float2 c = uv - 0.5f; - float rsq = dot(c, c); - float2 dist = float2(0.05f, 0.1f) * u.curvature; - float2 barrelScale = 1.0f - 0.23f * dist; - c += c * (dist * rsq); - c *= barrelScale; - if (abs(c.x) >= 0.5f || abs(c.y) >= 0.5f) { - return float4(0.0f, 0.0f, 0.0f, 1.0f); - } - uv = c + 0.5f; - } - - // Muestra base - float3 base = scene.sample(samp, uv).rgb; - - // Sangrado NTSC — difuminado horizontal de crominancia. - // step = 1 pixel de juego en espacio UV (corrige SS: scene.get_width() = game_w * oversample). - float3 colour; - if (u.bleeding > 0.0f) { - float tw = float(scene.get_width()); - float step = u.oversample / tw; // 1 pixel lógico en UV - float3 ycc = rgb_to_ycc(base); - float3 ycc_l2 = rgb_to_ycc(scene.sample(samp, uv - float2(2.0f*step, 0.0f)).rgb); - float3 ycc_l1 = rgb_to_ycc(scene.sample(samp, uv - float2(1.0f*step, 0.0f)).rgb); - float3 ycc_r1 = rgb_to_ycc(scene.sample(samp, uv + float2(1.0f*step, 0.0f)).rgb); - float3 ycc_r2 = rgb_to_ycc(scene.sample(samp, uv + float2(2.0f*step, 0.0f)).rgb); - ycc.yz = (ycc_l2.yz + ycc_l1.yz*2.0f + ycc.yz*2.0f + ycc_r1.yz*2.0f + ycc_r2.yz) / 8.0f; - colour = mix(base, ycc_to_rgb(ycc), u.bleeding); - } else { - colour = base; - } - - // Aberración cromática (drift animado con time para efecto NTSC real) - float ca = u.chroma_strength * 0.005f * (1.0f + 0.15f * sin(u.time * 7.3f)); - colour.r = scene.sample(samp, uv + float2(ca, 0.0f)).r; - colour.b = scene.sample(samp, uv - float2(ca, 0.0f)).b; - - // Corrección gamma (linealizar antes de scanlines, codificar después) - if (u.gamma_strength > 0.0f) { - float3 lin = pow(colour, float3(2.4f)); - colour = mix(colour, lin, u.gamma_strength); - } - - // Scanlines — proporción 2/3 brillantes + 1/3 oscuras por fila lógica. - // Casos especiales: 1 subfila → sin efecto; 2 subfilas → 1+1 (50/50). - // Constantes ajustables: - const float SCAN_DARK_RATIO = 0.333f; // fracción de subfilas oscuras (ps >= 3) - const float SCAN_DARK_FLOOR = 0.42f; // multiplicador de brillo de subfilas oscuras - if (u.scanline_strength > 0.0f) { - float ps = max(1.0f, round(u.pixel_scale)); - float frac_in_row = fract(uv.y * u.screen_height); - float row_pos = floor(frac_in_row * ps); - float bright_rows = (ps < 2.0f) ? ps : ((ps < 3.0f) ? 1.0f : floor(ps * (1.0f - SCAN_DARK_RATIO))); - float is_dark = step(bright_rows, row_pos); - float scan = mix(1.0f, SCAN_DARK_FLOOR, is_dark); - colour *= mix(1.0f, scan, u.scanline_strength); - } - - if (u.gamma_strength > 0.0f) { - float3 enc = pow(colour, float3(1.0f/2.2f)); - colour = mix(colour, enc, u.gamma_strength); - } - - // Viñeta - float2 d = uv - 0.5f; - float vignette = 1.0f - dot(d, d) * u.vignette_strength; - colour *= clamp(vignette, 0.0f, 1.0f); - - // Máscara de fósforo RGB — después de scanlines (orden original): - // filas brillantes saturadas → máscara invisible, filas oscuras → RGB visible. - if (u.mask_strength > 0.0f) { - float whichMask = fract(in.pos.x * 0.3333333f); - float3 mask = float3(0.80f); - if (whichMask < 0.3333333f) mask.x = 1.0f; - else if (whichMask < 0.6666667f) mask.y = 1.0f; - else mask.z = 1.0f; - colour = mix(colour, colour * mask, u.mask_strength); - } - - // Parpadeo de fósforo CRT (~50 Hz) - if (u.flicker > 0.0f) { - float flicker_wave = sin(u.time * 100.0f) * 0.5f + 0.5f; - colour *= 1.0f - u.flicker * 0.04f * flicker_wave; - } - - return float4(colour, 1.0f); -} -)"; -static const char* UPSCALE_FRAG_MSL = R"( -#include -using namespace metal; -struct VertOut { float4 pos [[position]]; float2 uv; }; -fragment float4 upscale_fs(VertOut in [[stage_in]], - texture2d scene [[texture(0)]], - sampler smp [[sampler(0)]]) -{ - return scene.sample(smp, in.uv); -} -)"; - -static const char* DOWNSCALE_FRAG_MSL = R"( -#include -using namespace metal; -struct VertOut { float4 pos [[position]]; float2 uv; }; -struct DownscaleUniforms { int algorithm; float pad0; float pad1; float pad2; }; - -static float lanczos_w(float t, float a) { - t = abs(t); - if (t < 0.0001f) { return 1.0f; } - if (t >= a) { return 0.0f; } - const float PI = 3.14159265358979f; - float pt = PI * t; - return (a * sin(pt) * sin(pt / a)) / (pt * pt); -} - -fragment float4 downscale_fs(VertOut in [[stage_in]], - texture2d source [[texture(0)]], - sampler smp [[sampler(0)]], - constant DownscaleUniforms& u [[buffer(0)]]) -{ - float2 src_size = float2(source.get_width(), source.get_height()); - float2 p = in.uv * src_size; - float2 p_floor = floor(p); - float a = (u.algorithm == 0) ? 2.0f : 3.0f; - int win = int(a); - float4 color = float4(0.0f); - float weight_sum = 0.0f; - for (int j = -win; j <= win; j++) { - for (int i = -win; i <= win; i++) { - float2 tap_center = p_floor + float2(float(i), float(j)) + 0.5f; - float2 offset = tap_center - p; - float w = lanczos_w(offset.x, a) * lanczos_w(offset.y, a); - color += source.sample(smp, tap_center / src_size) * w; - weight_sum += w; - } - } - return (weight_sum > 0.0f) ? (color / weight_sum) : float4(0.0f, 0.0f, 0.0f, 1.0f); -} -)"; -static const char* CRTPI_FRAG_MSL = R"( -#include -using namespace metal; - -struct PostVOut { - float4 pos [[position]]; - float2 uv; -}; - -struct CrtPiUniforms { - // vec4 #0 - float scanline_weight; - float scanline_gap_brightness; - float bloom_factor; - float input_gamma; - // vec4 #1 - float output_gamma; - float mask_brightness; - float curvature_x; - float curvature_y; - // vec4 #2 - int mask_type; - int enable_scanlines; - int enable_multisample; - int enable_gamma; - // vec4 #3 - int enable_curvature; - int enable_sharper; - float texture_width; - float texture_height; -}; - -static float2 crtpi_distort(float2 coord, float2 screen_scale, float cx, float cy) { - float2 curvature = float2(cx, cy); - float2 barrel_scale = 1.0f - (0.23f * curvature); - coord *= screen_scale; - coord -= 0.5f; - float rsq = coord.x * coord.x + coord.y * coord.y; - coord += coord * (curvature * rsq); - coord *= barrel_scale; - if (abs(coord.x) >= 0.5f || abs(coord.y) >= 0.5f) { return float2(-1.0f); } - coord += 0.5f; - coord /= screen_scale; - return coord; -} - -static float crtpi_scan_weight(float dist, float sw, float gap) { - return max(1.0f - dist * dist * sw, gap); -} - -static float crtpi_scan_line(float dy, float filter_w, float sw, float gap, bool ms) { - float w = crtpi_scan_weight(dy, sw, gap); - if (ms) { - w += crtpi_scan_weight(dy - filter_w, sw, gap); - w += crtpi_scan_weight(dy + filter_w, sw, gap); - w *= 0.3333333f; - } - return w; -} - -fragment float4 crtpi_fs(PostVOut in [[stage_in]], - texture2d tex [[texture(0)]], - sampler samp [[sampler(0)]], - constant CrtPiUniforms& u [[buffer(0)]]) { - float2 tex_size = float2(u.texture_width, u.texture_height); - float filter_width = (768.0f / u.texture_height) / 3.0f; - float2 texcoord = in.uv; - - if (u.enable_curvature != 0) { - texcoord = crtpi_distort(texcoord, float2(1.0f, 1.0f), u.curvature_x, u.curvature_y); - if (texcoord.x < 0.0f) { return float4(0.0f, 0.0f, 0.0f, 1.0f); } - } - - float2 coord_in_pixels = texcoord * tex_size; - float2 tc; - float scan_weight; - - if (u.enable_sharper != 0) { - float2 temp = floor(coord_in_pixels) + 0.5f; - tc = temp / tex_size; - float2 deltas = coord_in_pixels - temp; - scan_weight = crtpi_scan_line(deltas.y, filter_width, u.scanline_weight, u.scanline_gap_brightness, u.enable_multisample != 0); - float2 signs = sign(deltas); - deltas.x *= 2.0f; - deltas = deltas * deltas; - deltas.y = deltas.y * deltas.y; - deltas.x *= 0.5f; - deltas.y *= 8.0f; - deltas /= tex_size; - deltas *= signs; - tc = tc + deltas; - } else { - float temp_y = floor(coord_in_pixels.y) + 0.5f; - float y_coord = temp_y / tex_size.y; - float dy = coord_in_pixels.y - temp_y; - scan_weight = crtpi_scan_line(dy, filter_width, u.scanline_weight, u.scanline_gap_brightness, u.enable_multisample != 0); - float sign_y = sign(dy); - dy = dy * dy; - dy = dy * dy; - dy *= 8.0f; - dy /= tex_size.y; - dy *= sign_y; - tc = float2(texcoord.x, y_coord + dy); - } - - float3 colour = tex.sample(samp, tc).rgb; - - if (u.enable_scanlines != 0) { - if (u.enable_gamma != 0) { colour = pow(colour, float3(u.input_gamma)); } - colour *= scan_weight * u.bloom_factor; - if (u.enable_gamma != 0) { colour = pow(colour, float3(1.0f / u.output_gamma)); } - } - - if (u.mask_type == 1) { - float wm = fract(in.pos.x * 0.5f); - float3 mask = (wm < 0.5f) ? float3(u.mask_brightness, 1.0f, u.mask_brightness) - : float3(1.0f, u.mask_brightness, 1.0f); - colour *= mask; - } else if (u.mask_type == 2) { - float wm = fract(in.pos.x * 0.3333333f); - float3 mask = float3(u.mask_brightness); - if (wm < 0.3333333f) mask.x = 1.0f; - else if (wm < 0.6666666f) mask.y = 1.0f; - else mask.z = 1.0f; - colour *= mask; - } - - return float4(colour, 1.0f); -} -)"; - -#endif // __APPLE__ - namespace Rendering { // --------------------------------------------------------------------------- @@ -394,7 +49,6 @@ namespace Rendering { game_width_ = static_cast(fw); game_height_ = static_cast(fh); uniforms_.screen_height = static_cast(game_height_); - uniforms_.oversample = static_cast(oversample_); // ---------------------------------------------------------------- // 1. Create GPU device (solo si no existe ya) @@ -454,9 +108,6 @@ namespace Rendering { return false; } - // scaled_texture_ se creará en el primer render() una vez conocido el zoom de ventana - ss_factor_ = 0; - // ---------------------------------------------------------------- // 4. Create upload transfer buffer (CPU → GPU, always game resolution) // ---------------------------------------------------------------- @@ -471,7 +122,7 @@ namespace Rendering { } // ---------------------------------------------------------------- - // 5. Create samplers: NEAREST (pixel art) + LINEAR (supersampling) + // 5. Create NEAREST sampler (pixel art) // ---------------------------------------------------------------- SDL_GPUSamplerCreateInfo samp_info = {}; samp_info.min_filter = SDL_GPU_FILTER_NEAREST; @@ -487,20 +138,6 @@ namespace Rendering { return false; } - SDL_GPUSamplerCreateInfo lsamp_info = {}; - lsamp_info.min_filter = SDL_GPU_FILTER_LINEAR; - lsamp_info.mag_filter = SDL_GPU_FILTER_LINEAR; - lsamp_info.mipmap_mode = SDL_GPU_SAMPLERMIPMAPMODE_NEAREST; - lsamp_info.address_mode_u = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE; - lsamp_info.address_mode_v = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE; - lsamp_info.address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE; - linear_sampler_ = SDL_CreateGPUSampler(device_, &lsamp_info); - if (linear_sampler_ == nullptr) { - SDL_Log("SDL3GPUShader: failed to create linear sampler: %s", SDL_GetError()); - cleanup(); - return false; - } - // ---------------------------------------------------------------- // 6. Create PostFX graphics pipeline // ---------------------------------------------------------------- @@ -518,7 +155,7 @@ namespace Rendering { } is_initialized_ = true; - std::cout << "GPU Shader : initialized OK — game " << game_width_ << 'x' << game_height_ << ", oversample " << oversample_ << '\n'; + std::cout << "GPU Shader : initialized OK — game " << game_width_ << 'x' << game_height_ << '\n'; return true; } @@ -527,7 +164,7 @@ namespace Rendering { // --------------------------------------------------------------------------- auto SDL3GPUShader::createPostfxVertexShader() -> SDL_GPUShader* { #ifdef __APPLE__ - return createShaderMSL(device_, POSTFX_VERT_MSL, "postfx_vs", SDL_GPU_SHADERSTAGE_VERTEX, 0, 0); + return createShaderMSL(device_, Msl::kPostfxVert, "postfx_vs", SDL_GPU_SHADERSTAGE_VERTEX, 0, 0); #else return createShaderSPIRV(device_, kpostfx_vert_spv, kpostfx_vert_spv_size, "main", SDL_GPU_SHADERSTAGE_VERTEX, 0, 0); #endif @@ -579,42 +216,28 @@ namespace Rendering { } // --------------------------------------------------------------------------- - // createPipeline — crea els 4 pipelines del flux PostFX + // createPipeline — pipeline únic PostFX → swapchain // --------------------------------------------------------------------------- auto SDL3GPUShader::createPipeline() -> bool { const SDL_GPUTextureFormat SWAPCHAIN_FMT = SDL_GetGPUSwapchainTextureFormat(device_, window_); - const SDL_GPUTextureFormat OFFSCREEN_FMT = SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM; #ifdef __APPLE__ - SDL_GPUShader* postfx_frag = createShaderMSL(device_, POSTFX_FRAG_MSL, "postfx_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); - SDL_GPUShader* upscale_frag = createShaderMSL(device_, UPSCALE_FRAG_MSL, "upscale_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 0); - SDL_GPUShader* offscreen_frag = createShaderMSL(device_, POSTFX_FRAG_MSL, "postfx_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); - SDL_GPUShader* downscale_frag = createShaderMSL(device_, DOWNSCALE_FRAG_MSL, "downscale_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); + SDL_GPUShader* postfx_frag = createShaderMSL(device_, Msl::kPostfxFrag, "postfx_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); #else SDL_GPUShader* postfx_frag = createShaderSPIRV(device_, kpostfx_frag_spv, kpostfx_frag_spv_size, "main", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); - SDL_GPUShader* upscale_frag = createShaderSPIRV(device_, kupscale_frag_spv, kupscale_frag_spv_size, "main", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 0); - SDL_GPUShader* offscreen_frag = createShaderSPIRV(device_, kpostfx_frag_spv, kpostfx_frag_spv_size, "main", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); - SDL_GPUShader* downscale_frag = createShaderSPIRV(device_, kdownscale_frag_spv, kdownscale_frag_spv_size, "main", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); #endif pipeline_ = createPostfxLikePipeline(postfx_frag, SWAPCHAIN_FMT, "PostFX"); - upscale_pipeline_ = createPostfxLikePipeline(upscale_frag, OFFSCREEN_FMT, "upscale"); - postfx_offscreen_pipeline_ = createPostfxLikePipeline(offscreen_frag, OFFSCREEN_FMT, "PostFX offscreen"); - downscale_pipeline_ = createPostfxLikePipeline(downscale_frag, SWAPCHAIN_FMT, "downscale"); - - return (pipeline_ != nullptr) && (upscale_pipeline_ != nullptr) && (postfx_offscreen_pipeline_ != nullptr) && (downscale_pipeline_ != nullptr); + return pipeline_ != nullptr; } // --------------------------------------------------------------------------- // createCrtPiPipeline — pipeline dedicado para el shader CRT-Pi. - // Usa el mismo vertex shader que postfx (fullscreen-triangle genérico). - // El fragment shader es específico para el algoritmo CRT-Pi. - // Sin supersampling ni Lanczos: va siempre directo al swapchain. // --------------------------------------------------------------------------- auto SDL3GPUShader::createCrtPiPipeline() -> bool { const SDL_GPUTextureFormat SWAPCHAIN_FMT = SDL_GetGPUSwapchainTextureFormat(device_, window_); #ifdef __APPLE__ - SDL_GPUShader* frag = createShaderMSL(device_, CRTPI_FRAG_MSL, "crtpi_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); + SDL_GPUShader* frag = createShaderMSL(device_, Msl::kCrtpiFrag, "crtpi_fs", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); #else SDL_GPUShader* frag = createShaderSPIRV(device_, kcrtpi_frag_spv, kcrtpi_frag_spv_size, "main", SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); #endif @@ -624,8 +247,6 @@ namespace Rendering { // --------------------------------------------------------------------------- // uploadPixels — copies ARGB8888 CPU pixels into the GPU transfer buffer. - // Con supersampling (oversample_ > 1) expande cada pixel del juego a un bloque - // oversample × oversample y hornea la scanline oscura en la última fila del bloque. // --------------------------------------------------------------------------- void SDL3GPUShader::uploadPixels(const Uint32* pixels, int width, int height) { if (!is_initialized_ || (upload_buffer_ == nullptr)) { return; } @@ -642,22 +263,6 @@ namespace Rendering { SDL_UnmapGPUTransferBuffer(device_, upload_buffer_); } - // --------------------------------------------------------------------------- - // maybeRescaleSsTexture — recalcula factor SS i recrea scaled_texture_ si cal - // --------------------------------------------------------------------------- - void SDL3GPUShader::maybeRescaleSsTexture() { - if (oversample_ <= 1 || game_height_ <= 0) { return; } - int win_w = 0; - int win_h = 0; - SDL_GetWindowSizeInPixels(window_, &win_w, &win_h); - const float ZOOM = static_cast(win_h) / static_cast(game_height_); - const int NEED_FACTOR = calcSsFactor(ZOOM); - if (NEED_FACTOR != ss_factor_) { - SDL_WaitForGPUIdle(device_); - recreateScaledTexture(NEED_FACTOR); - } - } - // --------------------------------------------------------------------------- // uploadSceneTexture — copy pass: transfer buffer → scene texture // --------------------------------------------------------------------------- @@ -681,28 +286,6 @@ namespace Rendering { SDL_EndGPUCopyPass(copy); } - // --------------------------------------------------------------------------- - // runUpscalePass — scene_texture_ → scaled_texture_ (NEAREST o LINEAR segons linear_upscale_) - // --------------------------------------------------------------------------- - void SDL3GPUShader::runUpscalePass(SDL_GPUCommandBuffer* cmd) { - if (oversample_ <= 1 || scaled_texture_ == nullptr || upscale_pipeline_ == nullptr) { return; } - - SDL_GPUColorTargetInfo target = {}; - target.texture = scaled_texture_; - target.load_op = SDL_GPU_LOADOP_DONT_CARE; - target.store_op = SDL_GPU_STOREOP_STORE; - - SDL_GPURenderPass* pass = SDL_BeginGPURenderPass(cmd, &target, 1, nullptr); - if (pass == nullptr) { return; } - SDL_BindGPUGraphicsPipeline(pass, upscale_pipeline_); - SDL_GPUTextureSamplerBinding binding = {}; - binding.texture = scene_texture_; - binding.sampler = (linear_upscale_ && linear_sampler_ != nullptr) ? linear_sampler_ : sampler_; - SDL_BindGPUFragmentSamplers(pass, 0, &binding, 1); - SDL_DrawGPUPrimitives(pass, 3, 1, 0, 0); - SDL_EndGPURenderPass(pass); - } - // --------------------------------------------------------------------------- // computeViewport — dimensions lògiques del canvas dins del swapchain (letterbox) // --------------------------------------------------------------------------- @@ -726,17 +309,11 @@ namespace Rendering { } // --------------------------------------------------------------------------- - // updateDynamicUniforms — actualitza pixel_scale, time, oversample per a aquest frame + // updateDynamicUniforms — actualitza pixel_scale i time per a aquest frame // --------------------------------------------------------------------------- void SDL3GPUShader::updateDynamicUniforms(float viewport_h) { - // pixel_scale: subpíxels per pixel lògic. Amb SS: ss_factor_ exacte; sense SS: zoom de finestra. - if (oversample_ > 1 && ss_factor_ > 0) { - uniforms_.pixel_scale = static_cast(ss_factor_); - } else { - uniforms_.pixel_scale = (game_height_ > 0) ? (viewport_h / static_cast(game_height_)) : 1.0F; - } + uniforms_.pixel_scale = (game_height_ > 0) ? (viewport_h / static_cast(game_height_)) : 1.0F; uniforms_.time = static_cast(SDL_GetTicks()) / 1000.0F; - uniforms_.oversample = (oversample_ > 1 && ss_factor_ > 0) ? static_cast(ss_factor_) : 1.0F; } // --------------------------------------------------------------------------- @@ -769,53 +346,7 @@ namespace Rendering { } // --------------------------------------------------------------------------- - // runLanczosPasses — scaled_texture_ → postfx_texture_ (PostFX) → swapchain (Lanczos) - // --------------------------------------------------------------------------- - void SDL3GPUShader::runLanczosPasses(SDL_GPUCommandBuffer* cmd, SDL_GPUTexture* swapchain, const Viewport& vp) { - // Pass A: PostFX → postfx_texture_ (full scaled size, sense viewport) - SDL_GPUColorTargetInfo postfx_target = {}; - postfx_target.texture = postfx_texture_; - postfx_target.load_op = SDL_GPU_LOADOP_CLEAR; - postfx_target.store_op = SDL_GPU_STOREOP_STORE; - postfx_target.clear_color = {.r = 0.0F, .g = 0.0F, .b = 0.0F, .a = 1.0F}; - - SDL_GPURenderPass* ppass = SDL_BeginGPURenderPass(cmd, &postfx_target, 1, nullptr); - if (ppass != nullptr) { - SDL_BindGPUGraphicsPipeline(ppass, postfx_offscreen_pipeline_); - SDL_GPUTextureSamplerBinding pbinding = {}; - pbinding.texture = scaled_texture_; - pbinding.sampler = sampler_; // NEAREST: 1:1 pass, efectes calculats analíticament - SDL_BindGPUFragmentSamplers(ppass, 0, &pbinding, 1); - SDL_PushGPUFragmentUniformData(cmd, 0, &uniforms_, sizeof(PostFXUniforms)); - SDL_DrawGPUPrimitives(ppass, 3, 1, 0, 0); - SDL_EndGPURenderPass(ppass); - } - - // Pass B: Downscale Lanczos → swapchain (amb viewport/letterbox) - SDL_GPUColorTargetInfo ds_target = {}; - ds_target.texture = swapchain; - ds_target.load_op = SDL_GPU_LOADOP_CLEAR; - ds_target.store_op = SDL_GPU_STOREOP_STORE; - ds_target.clear_color = {.r = 0.0F, .g = 0.0F, .b = 0.0F, .a = 1.0F}; - - SDL_GPURenderPass* dpass = SDL_BeginGPURenderPass(cmd, &ds_target, 1, nullptr); - if (dpass == nullptr) { return; } - SDL_BindGPUGraphicsPipeline(dpass, downscale_pipeline_); - SDL_GPUViewport sdlvp = {.x = vp.x, .y = vp.y, .w = vp.w, .h = vp.h, .min_depth = 0.0F, .max_depth = 1.0F}; - SDL_SetGPUViewport(dpass, &sdlvp); - SDL_GPUTextureSamplerBinding dbinding = {}; - dbinding.texture = postfx_texture_; - dbinding.sampler = sampler_; // NEAREST: el shader Lanczos fa la seua pròpia interpolació - SDL_BindGPUFragmentSamplers(dpass, 0, &dbinding, 1); - // algorithm: 0=Lanczos2, 1=Lanczos3 (downscale_algo_ és 1-based) - DownscaleUniforms downscale_u = {.algorithm = downscale_algo_ - 1, .pad0 = 0.0F, .pad1 = 0.0F, .pad2 = 0.0F}; - SDL_PushGPUFragmentUniformData(cmd, 0, &downscale_u, sizeof(DownscaleUniforms)); - SDL_DrawGPUPrimitives(dpass, 3, 1, 0, 0); - SDL_EndGPURenderPass(dpass); - } - - // --------------------------------------------------------------------------- - // runDirectPostfxPass — PostFX → swapchain directament (sense Lanczos) + // runDirectPostfxPass — PostFX → swapchain directament // --------------------------------------------------------------------------- void SDL3GPUShader::runDirectPostfxPass(SDL_GPUCommandBuffer* cmd, SDL_GPUTexture* swapchain, const Viewport& vp) { SDL_GPUColorTargetInfo color_target = {}; @@ -830,13 +361,9 @@ namespace Rendering { SDL_GPUViewport sdlvp = {.x = vp.x, .y = vp.y, .w = vp.w, .h = vp.h, .min_depth = 0.0F, .max_depth = 1.0F}; SDL_SetGPUViewport(pass, &sdlvp); - // Amb SS: llegir de scaled_texture_ amb LINEAR; sense SS: scene_texture_ amb NEAREST. - SDL_GPUTexture* input_texture = (oversample_ > 1 && scaled_texture_ != nullptr) ? scaled_texture_ : scene_texture_; - SDL_GPUSampler* active_sampler = (oversample_ > 1 && linear_sampler_ != nullptr) ? linear_sampler_ : sampler_; - SDL_GPUTextureSamplerBinding binding = {}; - binding.texture = input_texture; - binding.sampler = active_sampler; + binding.texture = scene_texture_; + binding.sampler = sampler_; SDL_BindGPUFragmentSamplers(pass, 0, &binding, 1); SDL_PushGPUFragmentUniformData(cmd, 0, &uniforms_, sizeof(PostFXUniforms)); @@ -845,13 +372,11 @@ namespace Rendering { } // --------------------------------------------------------------------------- - // render — orquestra upload + upscale + path PostFX (CrtPi / Lanczos / direct) + // render — orquestra upload + PostFX (CrtPi o direct) // --------------------------------------------------------------------------- void SDL3GPUShader::render() { if (!is_initialized_) { return; } - maybeRescaleSsTexture(); - SDL_GPUCommandBuffer* cmd = SDL_AcquireGPUCommandBuffer(device_); if (cmd == nullptr) { SDL_Log("SDL3GPUShader: SDL_AcquireGPUCommandBuffer failed: %s", SDL_GetError()); @@ -859,7 +384,6 @@ namespace Rendering { } uploadSceneTexture(cmd); - runUpscalePass(cmd); SDL_GPUTexture* swapchain = nullptr; Uint32 sw = 0; @@ -878,12 +402,8 @@ namespace Rendering { const Viewport VP = computeViewport(sw, sh); updateDynamicUniforms(VP.h); - const bool USE_LANCZOS = (oversample_ > 1 && downscale_algo_ > 0 && scaled_texture_ != nullptr && postfx_texture_ != nullptr && postfx_offscreen_pipeline_ != nullptr && downscale_pipeline_ != nullptr); - if (active_shader_ == ShaderType::CRTPI && crtpi_pipeline_ != nullptr) { runCrtPiPass(cmd, swapchain, VP); - } else if (USE_LANCZOS) { - runLanczosPasses(cmd, swapchain, VP); } else { runDirectPostfxPass(cmd, swapchain, VP); } @@ -908,31 +428,10 @@ namespace Rendering { SDL_ReleaseGPUGraphicsPipeline(device_, crtpi_pipeline_); crtpi_pipeline_ = nullptr; } - if (postfx_offscreen_pipeline_ != nullptr) { - SDL_ReleaseGPUGraphicsPipeline(device_, postfx_offscreen_pipeline_); - postfx_offscreen_pipeline_ = nullptr; - } - if (upscale_pipeline_ != nullptr) { - SDL_ReleaseGPUGraphicsPipeline(device_, upscale_pipeline_); - upscale_pipeline_ = nullptr; - } - if (downscale_pipeline_ != nullptr) { - SDL_ReleaseGPUGraphicsPipeline(device_, downscale_pipeline_); - downscale_pipeline_ = nullptr; - } if (scene_texture_ != nullptr) { SDL_ReleaseGPUTexture(device_, scene_texture_); scene_texture_ = nullptr; } - if (scaled_texture_ != nullptr) { - SDL_ReleaseGPUTexture(device_, scaled_texture_); - scaled_texture_ = nullptr; - } - if (postfx_texture_ != nullptr) { - SDL_ReleaseGPUTexture(device_, postfx_texture_); - postfx_texture_ = nullptr; - } - ss_factor_ = 0; if (upload_buffer_ != nullptr) { SDL_ReleaseGPUTransferBuffer(device_, upload_buffer_); upload_buffer_ = nullptr; @@ -941,10 +440,6 @@ namespace Rendering { SDL_ReleaseGPUSampler(device_, sampler_); sampler_ = nullptr; } - if (linear_sampler_ != nullptr) { - SDL_ReleaseGPUSampler(device_, linear_sampler_); - linear_sampler_ = nullptr; - } // device_ y el claim de la ventana se mantienen vivos } } @@ -1013,15 +508,17 @@ namespace Rendering { void SDL3GPUShader::setPostFXParams(const PostFXParams& p) { uniforms_.vignette_strength = p.vignette; - uniforms_.chroma_strength = p.chroma; + uniforms_.chroma_min = p.chroma_min; + uniforms_.chroma_max = p.chroma_max; uniforms_.mask_strength = p.mask; uniforms_.gamma_strength = p.gamma; uniforms_.curvature = p.curvature; uniforms_.bleeding = p.bleeding; uniforms_.flicker = p.flicker; - - // Las scanlines siempre las aplica el shader PostFX en GPU. uniforms_.scanline_strength = p.scanlines; + uniforms_.scan_dark_ratio = p.scan_dark_ratio; + uniforms_.scan_dark_floor = p.scan_dark_floor; + uniforms_.scan_edge_soft = p.scan_edge_soft; } void SDL3GPUShader::setCrtPiParams(const CrtPiParams& p) { @@ -1075,34 +572,8 @@ namespace Rendering { } // --------------------------------------------------------------------------- - // setOversample — cambia el factor SS; recrea texturas si ya está inicializado - // --------------------------------------------------------------------------- - void SDL3GPUShader::setOversample(int factor) { - const int NEW_FACTOR = std::max(1, factor); - if (NEW_FACTOR == oversample_) { return; } - oversample_ = NEW_FACTOR; - if (is_initialized_) { - reinitTexturesAndBuffer(); - // scanline_strength se actualizará en el próximo setPostFXParams - } - } - - void SDL3GPUShader::setLinearUpscale(bool linear) { - linear_upscale_ = linear; - } - - void SDL3GPUShader::setDownscaleAlgo(int algo) { - downscale_algo_ = std::max(0, std::min(algo, 2)); - } - - auto SDL3GPUShader::getSsTextureSize() const -> std::pair { - if (ss_factor_ <= 1) { return {0, 0}; } - return {game_width_ * ss_factor_, game_height_ * ss_factor_}; - } - - // --------------------------------------------------------------------------- - // reinitTexturesAndBuffer — recrea scene_texture_, scaled_texture_ y - // upload_buffer_ con el factor oversample_ actual. No toca pipelines ni samplers. + // reinitTexturesAndBuffer — recrea scene_texture_ y upload_buffer_. + // No toca pipelines ni samplers. // --------------------------------------------------------------------------- auto SDL3GPUShader::reinitTexturesAndBuffer() -> bool { if (device_ == nullptr) { return false; } @@ -1112,22 +583,13 @@ namespace Rendering { SDL_ReleaseGPUTexture(device_, scene_texture_); scene_texture_ = nullptr; } - // scaled_texture_ se libera aquí; se recreará en el primer render() con el factor correcto - if (scaled_texture_ != nullptr) { - SDL_ReleaseGPUTexture(device_, scaled_texture_); - scaled_texture_ = nullptr; - } - ss_factor_ = 0; - if (upload_buffer_ != nullptr) { SDL_ReleaseGPUTransferBuffer(device_, upload_buffer_); upload_buffer_ = nullptr; } uniforms_.screen_height = static_cast(game_height_); - uniforms_.oversample = static_cast(oversample_); - // scene_texture_: siempre a resolución del juego SDL_GPUTextureCreateInfo tex_info = {}; tex_info.type = SDL_GPU_TEXTURETYPE_2D; tex_info.format = SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM; @@ -1142,7 +604,6 @@ namespace Rendering { return false; } - // upload_buffer_: siempre a resolución del juego SDL_GPUTransferBufferCreateInfo tb_info = {}; tb_info.usage = SDL_GPU_TRANSFERBUFFERUSAGE_UPLOAD; tb_info.size = static_cast(game_width_ * game_height_ * 4); @@ -1154,74 +615,7 @@ namespace Rendering { return false; } - SDL_Log("SDL3GPUShader: reinit — scene %dx%d, SS %s (scaled se creará en render)", - game_width_, - game_height_, - oversample_ > 1 ? "on" : "off"); - return true; - } - - // --------------------------------------------------------------------------- - // calcSsFactor — primer múltiplo de 3 >= zoom, mínimo 3. - // Ejemplos: zoom 1,2,3 → 3; zoom 4,5,6 → 6; zoom 4.4 → 6; zoom 7,8,9 → 9. - // --------------------------------------------------------------------------- - auto SDL3GPUShader::calcSsFactor(float zoom) -> int { - const int MULTIPLE = 3; - const int N = static_cast(std::ceil(zoom / static_cast(MULTIPLE))); - return std::max(1, N) * MULTIPLE; - } - - // --------------------------------------------------------------------------- - // recreateScaledTexture — libera y recrea scaled_texture_ para el factor dado. - // Llamar solo cuando device_ no esté ejecutando comandos (SDL_WaitForGPUIdle previo). - // --------------------------------------------------------------------------- - auto SDL3GPUShader::recreateScaledTexture(int factor) -> bool { - if (scaled_texture_ != nullptr) { - SDL_ReleaseGPUTexture(device_, scaled_texture_); - scaled_texture_ = nullptr; - } - if (postfx_texture_ != nullptr) { - SDL_ReleaseGPUTexture(device_, postfx_texture_); - postfx_texture_ = nullptr; - } - ss_factor_ = 0; - - const int W = game_width_ * factor; - const int H = game_height_ * factor; - - SDL_GPUTextureCreateInfo info = {}; - info.type = SDL_GPU_TEXTURETYPE_2D; - info.format = SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM; - info.usage = SDL_GPU_TEXTUREUSAGE_SAMPLER | SDL_GPU_TEXTUREUSAGE_COLOR_TARGET; - info.width = static_cast(W); - info.height = static_cast(H); - info.layer_count_or_depth = 1; - info.num_levels = 1; - - scaled_texture_ = SDL_CreateGPUTexture(device_, &info); - if (scaled_texture_ == nullptr) { - SDL_Log("SDL3GPUShader: failed to create scaled texture %dx%d (factor %d): %s", - W, - H, - factor, - SDL_GetError()); - return false; - } - - postfx_texture_ = SDL_CreateGPUTexture(device_, &info); - if (postfx_texture_ == nullptr) { - SDL_Log("SDL3GPUShader: failed to create postfx texture %dx%d (factor %d): %s", - W, - H, - factor, - SDL_GetError()); - SDL_ReleaseGPUTexture(device_, scaled_texture_); - scaled_texture_ = nullptr; - return false; - } - - ss_factor_ = factor; - SDL_Log("SDL3GPUShader: scaled+postfx textures %dx%d (factor %d×)", W, H, factor); + SDL_Log("SDL3GPUShader: reinit — scene %dx%d", game_width_, game_height_); return true; } diff --git a/source/core/rendering/sdl3gpu/sdl3gpu_shader.hpp b/source/core/rendering/sdl3gpu/sdl3gpu_shader.hpp index 57393c6..8dfcafb 100644 --- a/source/core/rendering/sdl3gpu/sdl3gpu_shader.hpp +++ b/source/core/rendering/sdl3gpu/sdl3gpu_shader.hpp @@ -7,20 +7,28 @@ // PostFX uniforms pushed to fragment stage each frame. // Must match the MSL struct and GLSL uniform block layout. -// 12 floats = 48 bytes — meets Metal/Vulkan 16-byte alignment requirement. +// 16 floats = 64 bytes (4 × vec4) — meets Metal/Vulkan 16-byte alignment. struct PostFXUniforms { + // vec4 #0 float vignette_strength; // 0 = none, ~0.8 = subtle - float chroma_strength; // 0 = off, ~0.2 = subtle chromatic aberration + float chroma_min; // aberració cromàtica mínima (sempre present) float scanline_strength; // 0 = off, 1 = full float screen_height; // logical height in pixels (used by bleeding effect) - float mask_strength; // 0 = off, 1 = full phosphor dot mask - float gamma_strength; // 0 = off, 1 = full gamma 2.4/2.2 correction - float curvature; // 0 = flat, 1 = max barrel distortion - float bleeding; // 0 = off, 1 = max NTSC chrominance bleeding - float pixel_scale; // physical pixels per logical pixel (vh / tex_height_) - float time; // seconds since SDL init (SDL_GetTicks() / 1000.0f) - float oversample; // supersampling factor (1.0 = off, 3.0 = 3×SS) - float flicker; // 0 = off, 1 = phosphor flicker ~50 Hz — keep struct at 48 bytes (3 × 16) + // vec4 #1 + float mask_strength; // 0 = off, 1 = full phosphor dot mask + float gamma_strength; // 0 = off, 1 = full gamma 2.4/2.2 correction + float curvature; // 0 = flat, 1 = max barrel distortion + float bleeding; // 0 = off, 1 = max NTSC chrominance bleeding + // vec4 #2 + float pixel_scale; // physical pixels per logical pixel (vh / tex_height_) + float time; // seconds since SDL init (SDL_GetTicks() / 1000.0f) + float flicker; // 0 = off, 1 = phosphor flicker ~50 Hz + float chroma_max; // si == chroma_min queda estàtic; si != pulsa sinusoidalment + // vec4 #3 — paràmetres de forma de les scanlines (exposats per preset) + float scan_dark_ratio; // fracció de subfila fosca (1/3 = 0.333 per defecte) + float scan_dark_floor; // brillantor de la subfila fosca (0.42 per defecte) + float scan_edge_soft; // suavitzat de la transició (0 = step dur, 1 = 1px físic) + float pad3; }; // CrtPi uniforms pushed to fragment stage each frame. @@ -49,15 +57,6 @@ struct CrtPiUniforms { float texture_height; // Alto del canvas en píxeles (inyectado en render) }; -// Downscale uniforms pushed to the Lanczos downscale fragment stage. -// 1 int + 3 floats = 16 bytes — meets Metal/Vulkan alignment. -struct DownscaleUniforms { - int algorithm; // 0 = Lanczos2 (ventana 2), 1 = Lanczos3 (ventana 3) - float pad0; - float pad1; - float pad2; -}; - namespace Rendering { /** @@ -99,18 +98,6 @@ namespace Rendering { // Activa/desactiva escalado entero (integer scale) void setScaleMode(bool integer_scale) override; - // Establece factor de supersampling (1 = off, 3 = 3×SS) - void setOversample(int factor) override; - - // Activa/desactiva interpolación LINEAR en el upscale (false = NEAREST) - void setLinearUpscale(bool linear) override; - - // Selecciona algoritmo de downscale: 0=bilinear legacy, 1=Lanczos2, 2=Lanczos3 - void setDownscaleAlgo(int algo) override; - - // Devuelve las dimensiones de la textura de supersampling (0,0 si SS desactivado) - [[nodiscard]] auto getSsTextureSize() const -> std::pair override; - // Selecciona el shader de post-procesado activo (POSTFX o CRTPI) void setActiveShader(ShaderType type) override; @@ -147,49 +134,34 @@ namespace Rendering { struct Viewport { float x, y, w, h; }; - void maybeRescaleSsTexture(); void uploadSceneTexture(SDL_GPUCommandBuffer* cmd); - void runUpscalePass(SDL_GPUCommandBuffer* cmd); [[nodiscard]] auto computeViewport(Uint32 sw, Uint32 sh) const -> Viewport; void updateDynamicUniforms(float viewport_h); void runCrtPiPass(SDL_GPUCommandBuffer* cmd, SDL_GPUTexture* swapchain, const Viewport& vp); - void runLanczosPasses(SDL_GPUCommandBuffer* cmd, SDL_GPUTexture* swapchain, const Viewport& vp); void runDirectPostfxPass(SDL_GPUCommandBuffer* cmd, SDL_GPUTexture* swapchain, const Viewport& vp); - auto reinitTexturesAndBuffer() -> bool; // Recrea scene_texture_ y upload_buffer_ - auto recreateScaledTexture(int factor) -> bool; // Recrea scaled_texture_ para factor dado - static auto calcSsFactor(float zoom) -> int; // Primer múltiplo de 3 >= zoom (mín 3) + auto reinitTexturesAndBuffer() -> bool; // Recrea scene_texture_ y upload_buffer_ // Devuelve el mejor present mode disponible: IMMEDIATE > MAILBOX > VSYNC [[nodiscard]] auto bestPresentMode(bool vsync) const -> SDL_GPUPresentMode; SDL_Window* window_ = nullptr; SDL_GPUDevice* device_ = nullptr; - SDL_GPUGraphicsPipeline* pipeline_ = nullptr; // PostFX pass (→ swapchain o → postfx_texture_) - SDL_GPUGraphicsPipeline* crtpi_pipeline_ = nullptr; // CrtPi pass (→ swapchain directo, sin SS) - SDL_GPUGraphicsPipeline* postfx_offscreen_pipeline_ = nullptr; // PostFX → postfx_texture_ (B8G8R8A8, solo con Lanczos) - SDL_GPUGraphicsPipeline* upscale_pipeline_ = nullptr; // Upscale pass (solo con SS) - SDL_GPUGraphicsPipeline* downscale_pipeline_ = nullptr; // Lanczos downscale (solo con SS + algo > 0) - SDL_GPUTexture* scene_texture_ = nullptr; // Canvas del juego (game_width_ × game_height_) - SDL_GPUTexture* scaled_texture_ = nullptr; // Upscale target (game×factor), solo con SS - SDL_GPUTexture* postfx_texture_ = nullptr; // PostFX output a resolución escalada, solo con Lanczos + SDL_GPUGraphicsPipeline* pipeline_ = nullptr; // PostFX pass → swapchain + SDL_GPUGraphicsPipeline* crtpi_pipeline_ = nullptr; // CrtPi pass → swapchain + SDL_GPUTexture* scene_texture_ = nullptr; // Canvas del juego (game_width_ × game_height_) SDL_GPUTransferBuffer* upload_buffer_ = nullptr; - SDL_GPUSampler* sampler_ = nullptr; // NEAREST - SDL_GPUSampler* linear_sampler_ = nullptr; // LINEAR + SDL_GPUSampler* sampler_ = nullptr; // NEAREST - PostFXUniforms uniforms_{.vignette_strength = 0.6F, .chroma_strength = 0.15F, .scanline_strength = 0.7F, .screen_height = 192.0F, .pixel_scale = 1.0F, .oversample = 1.0F}; + PostFXUniforms uniforms_{.vignette_strength = 0.6F, .chroma_min = 0.15F, .scanline_strength = 0.7F, .screen_height = 192.0F, .pixel_scale = 1.0F, .chroma_max = 0.15F, .scan_dark_ratio = 0.333F, .scan_dark_floor = 0.42F, .scan_edge_soft = 1.0F}; CrtPiUniforms crtpi_uniforms_{.scanline_weight = 6.0F, .scanline_gap_brightness = 0.12F, .bloom_factor = 3.5F, .input_gamma = 2.4F, .output_gamma = 2.2F, .mask_brightness = 0.80F, .curvature_x = 0.05F, .curvature_y = 0.10F, .mask_type = 2, .enable_scanlines = 1, .enable_multisample = 1, .enable_gamma = 1}; ShaderType active_shader_ = ShaderType::POSTFX; // Shader de post-procesado activo int game_width_ = 0; // Dimensiones originales del canvas int game_height_ = 0; - int ss_factor_ = 0; // Factor SS activo (3, 6, 9...) o 0 si SS desactivado - int oversample_ = 1; // SS on/off (1 = off, >1 = on) - int downscale_algo_ = 1; // 0 = bilinear legacy, 1 = Lanczos2, 2 = Lanczos3 std::string driver_name_; std::string preferred_driver_; // Driver preferido; vacío = auto (SDL elige) bool is_initialized_ = false; bool vsync_ = true; bool integer_scale_ = false; - bool linear_upscale_ = false; // Upscale NEAREST (false) o LINEAR (true) }; } // namespace Rendering diff --git a/source/core/rendering/sdl3gpu/spv/downscale_frag_spv.h b/source/core/rendering/sdl3gpu/spv/downscale_frag_spv.h deleted file mode 100644 index cf0f341..0000000 --- a/source/core/rendering/sdl3gpu/spv/downscale_frag_spv.h +++ /dev/null @@ -1,4254 +0,0 @@ -#pragma once -#include -#include -static const uint8_t kdownscale_frag_spv[] = { - 0x03, - 0x02, - 0x23, - 0x07, - 0x00, - 0x00, - 0x01, - 0x00, - 0x0b, - 0x00, - 0x0d, - 0x00, - 0xb1, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x02, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x02, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x06, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x47, - 0x4c, - 0x53, - 0x4c, - 0x2e, - 0x73, - 0x74, - 0x64, - 0x2e, - 0x34, - 0x35, - 0x30, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0f, - 0x00, - 0x07, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x00, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x03, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0xc2, - 0x01, - 0x00, - 0x00, - 0x04, - 0x00, - 0x0a, - 0x00, - 0x47, - 0x4c, - 0x5f, - 0x47, - 0x4f, - 0x4f, - 0x47, - 0x4c, - 0x45, - 0x5f, - 0x63, - 0x70, - 0x70, - 0x5f, - 0x73, - 0x74, - 0x79, - 0x6c, - 0x65, - 0x5f, - 0x6c, - 0x69, - 0x6e, - 0x65, - 0x5f, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x00, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x47, - 0x4c, - 0x5f, - 0x47, - 0x4f, - 0x4f, - 0x47, - 0x4c, - 0x45, - 0x5f, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x5f, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x6c, - 0x61, - 0x6e, - 0x63, - 0x7a, - 0x6f, - 0x73, - 0x28, - 0x66, - 0x31, - 0x3b, - 0x66, - 0x31, - 0x3b, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x61, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x70, - 0x74, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x73, - 0x72, - 0x63, - 0x5f, - 0x73, - 0x69, - 0x7a, - 0x65, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x73, - 0x6f, - 0x75, - 0x72, - 0x63, - 0x65, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x70, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x41, - 0x00, - 0x00, - 0x00, - 0x76, - 0x5f, - 0x75, - 0x76, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x70, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x6f, - 0x72, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x61, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x44, - 0x6f, - 0x77, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x61, - 0x6c, - 0x67, - 0x6f, - 0x72, - 0x69, - 0x74, - 0x68, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x64, - 0x30, - 0x00, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x64, - 0x31, - 0x00, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x64, - 0x32, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x75, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0x77, - 0x69, - 0x6e, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x77, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x75, - 0x6d, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x74, - 0x61, - 0x70, - 0x5f, - 0x63, - 0x65, - 0x6e, - 0x74, - 0x65, - 0x72, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x66, - 0x66, - 0x73, - 0x65, - 0x74, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x5f, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x41, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x03, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x05, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x13, - 0x00, - 0x02, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x03, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x16, - 0x00, - 0x03, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x05, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x17, - 0xb7, - 0xd1, - 0x38, - 0x14, - 0x00, - 0x02, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x15, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x00, - 0x00, - 0x00, - 0xdb, - 0x0f, - 0x49, - 0x40, - 0x17, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x19, - 0x00, - 0x09, - 0x00, - 0x34, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x00, - 0x03, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x34, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x36, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x36, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x15, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x04, - 0x00, - 0x3c, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x40, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x40, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x06, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x4a, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x4a, - 0x00, - 0x00, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x4c, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0x40, - 0x20, - 0x00, - 0x04, - 0x00, - 0x53, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x04, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x58, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x07, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x5a, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x15, - 0x00, - 0x04, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x8b, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0xa3, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0xa3, - 0x00, - 0x00, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x07, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0xaf, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x15, - 0x00, - 0x00, - 0x00, - 0x36, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x05, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x53, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x58, - 0x00, - 0x00, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x53, - 0x00, - 0x00, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x53, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x58, - 0x00, - 0x00, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x64, - 0x00, - 0x04, - 0x00, - 0x34, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x05, - 0x00, - 0x3c, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x42, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x43, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0x00, - 0x00, - 0x42, - 0x00, - 0x00, - 0x00, - 0x43, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x46, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x46, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x4c, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x00, - 0x00, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x00, - 0x00, - 0x00, - 0xaa, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0xa9, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x52, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x52, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x55, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x6e, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x56, - 0x00, - 0x00, - 0x00, - 0x55, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0x56, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x5a, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x5d, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x5e, - 0x00, - 0x00, - 0x00, - 0x5d, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x5e, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x00, - 0x00, - 0xf6, - 0x00, - 0x04, - 0x00, - 0x61, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x64, - 0x00, - 0x00, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x65, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0xb3, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x66, - 0x00, - 0x00, - 0x00, - 0x64, - 0x00, - 0x00, - 0x00, - 0x65, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x66, - 0x00, - 0x00, - 0x00, - 0x60, - 0x00, - 0x00, - 0x00, - 0x61, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x60, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x68, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x68, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0xf6, - 0x00, - 0x04, - 0x00, - 0x6c, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x6e, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x70, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0xb3, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x00, - 0x00, - 0x70, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x6c, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x75, - 0x00, - 0x00, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x76, - 0x00, - 0x00, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x76, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x78, - 0x00, - 0x00, - 0x00, - 0x75, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x00, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x78, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x00, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x7f, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x00, - 0x00, - 0x7f, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x89, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x8c, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x8b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8d, - 0x00, - 0x00, - 0x00, - 0x8c, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x8d, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8f, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x8f, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x89, - 0x00, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x93, - 0x00, - 0x00, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x05, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x95, - 0x00, - 0x00, - 0x00, - 0x93, - 0x00, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x96, - 0x00, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x95, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x97, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x98, - 0x00, - 0x00, - 0x00, - 0x96, - 0x00, - 0x00, - 0x00, - 0x97, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x00, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x98, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x9b, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x9c, - 0x00, - 0x00, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x9d, - 0x00, - 0x00, - 0x00, - 0x9c, - 0x00, - 0x00, - 0x00, - 0x9b, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x9d, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x6d, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x9e, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x05, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0x9e, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x67, - 0x00, - 0x00, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6c, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0xa1, - 0x00, - 0x00, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x05, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x00, - 0x00, - 0x00, - 0xa1, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x61, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa5, - 0x00, - 0x00, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0xba, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0xa6, - 0x00, - 0x00, - 0x00, - 0xa5, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0xa6, - 0x00, - 0x00, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0xaa, - 0x00, - 0x00, - 0x00, - 0x59, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x07, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0xac, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x05, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0xad, - 0x00, - 0x00, - 0x00, - 0xaa, - 0x00, - 0x00, - 0x00, - 0xac, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0xad, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0xaf, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x57, - 0x00, - 0x00, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0xfd, - 0x00, - 0x01, - 0x00, - 0x38, - 0x00, - 0x01, - 0x00, - 0x36, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x03, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x03, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x0c, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x0f, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0xb8, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x0f, - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xfe, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0xbe, - 0x00, - 0x05, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x19, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x1b, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x19, - 0x00, - 0x00, - 0x00, - 0x1a, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x1a, - 0x00, - 0x00, - 0x00, - 0xfe, - 0x00, - 0x02, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x1b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x24, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x25, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x24, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x26, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x27, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x28, - 0x00, - 0x00, - 0x00, - 0x26, - 0x00, - 0x00, - 0x00, - 0x27, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x29, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x28, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2a, - 0x00, - 0x00, - 0x00, - 0x25, - 0x00, - 0x00, - 0x00, - 0x29, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2d, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x2a, - 0x00, - 0x00, - 0x00, - 0x2d, - 0x00, - 0x00, - 0x00, - 0xfe, - 0x00, - 0x02, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x01, - 0x00, -}; -static const size_t kdownscale_frag_spv_size = 4248; diff --git a/source/core/rendering/sdl3gpu/spv/postfx_frag_spv.h b/source/core/rendering/sdl3gpu/spv/postfx_frag_spv.h index a60ea13..f42f3b5 100644 --- a/source/core/rendering/sdl3gpu/spv/postfx_frag_spv.h +++ b/source/core/rendering/sdl3gpu/spv/postfx_frag_spv.h @@ -14,8 +14,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x0d, 0x00, - 0xf2, - 0x01, + 0x3f, + 0x02, 0x00, 0x00, 0x00, @@ -94,16 +94,16 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x6d, + 0xb0, 0x00, 0x00, 0x00, - 0xaa, + 0xeb, 0x00, 0x00, 0x00, - 0xb6, - 0x01, + 0x03, + 0x02, 0x00, 0x00, 0x10, @@ -220,48 +220,116 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x06, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x72, - 0x67, - 0x62, - 0x5f, - 0x74, - 0x6f, - 0x5f, - 0x79, - 0x63, - 0x63, - 0x28, - 0x76, - 0x66, - 0x33, - 0x3b, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x72, - 0x67, - 0x62, - 0x00, - 0x05, - 0x00, - 0x06, + 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x73, + 0x61, + 0x6d, + 0x70, + 0x6c, + 0x65, + 0x42, + 0x69, + 0x6c, + 0x69, + 0x6e, + 0x65, + 0x61, + 0x72, + 0x58, + 0x28, + 0x76, + 0x66, + 0x32, + 0x3b, + 0x69, + 0x31, + 0x3b, + 0x00, + 0x05, + 0x00, + 0x05, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x75, + 0x76, + 0x5f, + 0x74, + 0x61, + 0x72, + 0x67, + 0x65, + 0x74, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x63, + 0x68, + 0x61, + 0x6e, + 0x6e, + 0x65, + 0x6c, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, + 0x72, + 0x67, + 0x62, + 0x5f, + 0x74, + 0x6f, + 0x5f, + 0x79, + 0x63, + 0x63, + 0x28, + 0x76, + 0x66, + 0x33, + 0x3b, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x72, + 0x67, + 0x62, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x17, + 0x00, + 0x00, + 0x00, 0x79, 0x63, 0x63, @@ -282,7 +350,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x0d, + 0x16, 0x00, 0x00, 0x00, @@ -292,9 +360,109 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, + 0x05, + 0x00, + 0x19, + 0x00, + 0x00, + 0x00, + 0x74, + 0x65, + 0x78, + 0x5f, + 0x73, + 0x69, + 0x7a, + 0x65, + 0x00, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x73, + 0x63, + 0x65, + 0x6e, + 0x65, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, 0x03, 0x00, - 0x43, + 0x25, + 0x00, + 0x00, + 0x00, + 0x70, + 0x78, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x70, + 0x5f, + 0x66, + 0x6c, + 0x6f, + 0x6f, + 0x72, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x32, + 0x00, + 0x00, + 0x00, + 0x66, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x38, + 0x00, + 0x00, + 0x00, + 0x63, + 0x30, + 0x00, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x44, + 0x00, + 0x00, + 0x00, + 0x63, + 0x31, + 0x00, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x88, 0x00, 0x00, 0x00, @@ -306,7 +474,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x46, + 0x8b, 0x00, 0x00, 0x00, @@ -318,7 +486,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x4a, + 0x8f, 0x00, 0x00, 0x00, @@ -330,7 +498,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x6b, + 0xae, 0x00, 0x00, 0x00, @@ -342,7 +510,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x6d, + 0xb0, 0x00, 0x00, 0x00, @@ -358,7 +526,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -382,7 +550,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x08, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -412,9 +580,9 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x06, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -429,20 +597,16 @@ static const uint8_t kpostfx_frag_spv[] = { 0x6d, 0x61, 0x5f, - 0x73, - 0x74, - 0x72, - 0x65, + 0x6d, + 0x69, 0x6e, - 0x67, - 0x74, - 0x68, + 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -474,7 +638,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x07, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -502,7 +666,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x07, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -530,7 +694,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x07, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -558,7 +722,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -582,7 +746,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -606,7 +770,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -630,7 +794,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -648,9 +812,9 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x06, + 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -658,30 +822,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x6f, - 0x76, - 0x65, - 0x72, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x00, - 0x00, - 0x06, - 0x00, - 0x05, - 0x00, - 0x6f, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, 0x66, 0x6c, 0x69, @@ -690,11 +830,139 @@ static const uint8_t kpostfx_frag_spv[] = { 0x65, 0x72, 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0b, + 0x00, + 0x00, + 0x00, + 0x63, + 0x68, + 0x72, + 0x6f, + 0x6d, + 0x61, + 0x5f, + 0x6d, + 0x61, + 0x78, + 0x00, + 0x00, + 0x06, + 0x00, + 0x07, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x73, + 0x63, + 0x61, + 0x6e, + 0x5f, + 0x64, + 0x61, + 0x72, + 0x6b, + 0x5f, + 0x72, + 0x61, + 0x74, + 0x69, + 0x6f, + 0x00, + 0x06, + 0x00, + 0x07, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x73, + 0x63, + 0x61, + 0x6e, + 0x5f, + 0x64, + 0x61, + 0x72, + 0x6b, + 0x5f, + 0x66, + 0x6c, + 0x6f, + 0x6f, + 0x72, + 0x00, + 0x06, + 0x00, + 0x07, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x73, + 0x63, + 0x61, + 0x6e, + 0x5f, + 0x65, + 0x64, + 0x67, + 0x65, + 0x5f, + 0x73, + 0x6f, + 0x66, + 0x74, + 0x00, + 0x00, + 0x06, + 0x00, + 0x05, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x00, + 0x00, + 0x00, + 0x70, + 0x61, + 0x64, + 0x33, + 0x00, + 0x00, + 0x00, + 0x00, 0x05, 0x00, 0x03, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, @@ -706,7 +974,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x7b, + 0xbd, 0x00, 0x00, 0x00, @@ -718,7 +986,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x7f, + 0xc1, 0x00, 0x00, 0x00, @@ -730,7 +998,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x83, + 0xc5, 0x00, 0x00, 0x00, @@ -746,7 +1014,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x8a, + 0xcc, 0x00, 0x00, 0x00, @@ -766,7 +1034,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0xaa, + 0xeb, 0x00, 0x00, 0x00, @@ -786,7 +1054,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb0, + 0xf1, 0x00, 0x00, 0x00, @@ -800,25 +1068,9 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x04, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x73, - 0x63, - 0x65, - 0x6e, - 0x65, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, 0x03, 0x00, - 0xbf, + 0xfc, 0x00, 0x00, 0x00, @@ -830,8 +1082,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xc7, - 0x00, + 0x02, + 0x01, 0x00, 0x00, 0x73, @@ -846,8 +1098,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0xcd, - 0x00, + 0x05, + 0x01, 0x00, 0x00, 0x79, @@ -858,8 +1110,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xce, - 0x00, + 0x06, + 0x01, 0x00, 0x00, 0x70, @@ -874,8 +1126,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xd1, - 0x00, + 0x09, + 0x01, 0x00, 0x00, 0x79, @@ -890,8 +1142,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xda, - 0x00, + 0x12, + 0x01, 0x00, 0x00, 0x70, @@ -906,8 +1158,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xdd, - 0x00, + 0x15, + 0x01, 0x00, 0x00, 0x79, @@ -922,8 +1174,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xe5, - 0x00, + 0x1d, + 0x01, 0x00, 0x00, 0x70, @@ -938,8 +1190,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xe8, - 0x00, + 0x20, + 0x01, 0x00, 0x00, 0x79, @@ -954,8 +1206,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xf0, - 0x00, + 0x28, + 0x01, 0x00, 0x00, 0x70, @@ -970,8 +1222,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xf3, - 0x00, + 0x2b, + 0x01, 0x00, 0x00, 0x79, @@ -986,8 +1238,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xfb, - 0x00, + 0x33, + 0x01, 0x00, 0x00, 0x70, @@ -1002,7 +1254,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x16, + 0x4e, 0x01, 0x00, 0x00, @@ -1018,7 +1270,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x18, + 0x50, 0x01, 0x00, 0x00, @@ -1034,109 +1286,45 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x21, - 0x01, - 0x00, - 0x00, - 0x63, - 0x61, - 0x00, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x47, - 0x01, - 0x00, - 0x00, - 0x6c, - 0x69, - 0x6e, - 0x00, - 0x05, - 0x00, - 0x03, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0x70, - 0x73, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x5e, - 0x01, - 0x00, - 0x00, - 0x66, - 0x72, - 0x61, - 0x63, - 0x5f, - 0x69, - 0x6e, - 0x5f, - 0x72, - 0x6f, - 0x77, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x66, - 0x01, - 0x00, - 0x00, - 0x72, - 0x6f, - 0x77, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x6b, - 0x01, - 0x00, - 0x00, - 0x62, - 0x72, - 0x69, 0x67, - 0x68, - 0x74, - 0x5f, - 0x72, - 0x6f, - 0x77, - 0x73, + 0x01, + 0x00, + 0x00, + 0x63, + 0x61, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x80, + 0x7b, 0x01, 0x00, 0x00, - 0x69, - 0x73, - 0x5f, - 0x64, + 0x70, 0x61, 0x72, - 0x6b, + 0x61, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0x7c, + 0x01, + 0x00, + 0x00, + 0x70, + 0x61, + 0x72, + 0x61, + 0x6d, + 0x00, + 0x00, 0x00, 0x05, 0x00, @@ -1146,6 +1334,162 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x70, + 0x61, + 0x72, + 0x61, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0x85, + 0x01, + 0x00, + 0x00, + 0x70, + 0x61, + 0x72, + 0x61, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x8e, + 0x01, + 0x00, + 0x00, + 0x6c, + 0x69, + 0x6e, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0x9e, + 0x01, + 0x00, + 0x00, + 0x70, + 0x73, + 0x00, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0xa3, + 0x01, + 0x00, + 0x00, + 0x73, + 0x75, + 0x62, + 0x00, + 0x05, + 0x00, + 0x05, + 0x00, + 0xab, + 0x01, + 0x00, + 0x00, + 0x64, + 0x61, + 0x72, + 0x6b, + 0x5f, + 0x63, + 0x65, + 0x6e, + 0x74, + 0x65, + 0x72, + 0x00, + 0x05, + 0x00, + 0x03, + 0x00, + 0xb1, + 0x01, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x05, + 0x00, + 0xba, + 0x01, + 0x00, + 0x00, + 0x68, + 0x61, + 0x6c, + 0x66, + 0x5f, + 0x77, + 0x69, + 0x64, + 0x74, + 0x68, + 0x00, + 0x00, + 0x05, + 0x00, + 0x05, + 0x00, + 0xbe, + 0x01, + 0x00, + 0x00, + 0x73, + 0x6f, + 0x66, + 0x74, + 0x6e, + 0x65, + 0x73, + 0x73, + 0x00, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0xc5, + 0x01, + 0x00, + 0x00, + 0x62, + 0x61, + 0x6e, + 0x64, + 0x00, + 0x00, + 0x00, + 0x00, + 0x05, + 0x00, + 0x04, + 0x00, + 0xcf, + 0x01, + 0x00, + 0x00, 0x73, 0x63, 0x61, @@ -1158,7 +1502,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x93, + 0xe0, 0x01, 0x00, 0x00, @@ -1170,7 +1514,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x9e, + 0xeb, 0x01, 0x00, 0x00, @@ -1182,7 +1526,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0xa2, + 0xef, 0x01, 0x00, 0x00, @@ -1202,8 +1546,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0xb4, 0x01, + 0x02, 0x00, 0x00, 0x77, @@ -1222,8 +1566,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0xb6, - 0x01, + 0x03, + 0x02, 0x00, 0x00, 0x67, @@ -1246,8 +1590,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xbd, - 0x01, + 0x0a, + 0x02, 0x00, 0x00, 0x6d, @@ -1262,8 +1606,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0xdc, - 0x01, + 0x29, + 0x02, 0x00, 0x00, 0x66, @@ -1286,7 +1630,39 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x6d, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x21, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x47, + 0x00, + 0x04, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x22, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x47, + 0x00, + 0x04, + 0x00, + 0xb0, 0x00, 0x00, 0x00, @@ -1302,7 +1678,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1314,7 +1690,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1334,7 +1710,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1354,7 +1730,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1374,7 +1750,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1394,7 +1770,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1414,7 +1790,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1434,7 +1810,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1454,7 +1830,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1474,7 +1850,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1494,7 +1870,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1514,7 +1890,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1534,7 +1910,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x6f, + 0xb2, 0x00, 0x00, 0x00, @@ -1550,11 +1926,91 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, + 0x48, + 0x00, + 0x05, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x30, + 0x00, + 0x00, + 0x00, + 0x48, + 0x00, + 0x05, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x34, + 0x00, + 0x00, + 0x00, + 0x48, + 0x00, + 0x05, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x38, + 0x00, + 0x00, + 0x00, + 0x48, + 0x00, + 0x05, + 0x00, + 0xb2, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x3c, + 0x00, + 0x00, + 0x00, 0x47, 0x00, 0x04, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, @@ -1570,7 +2026,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, @@ -1586,7 +2042,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xaa, + 0xeb, 0x00, 0x00, 0x00, @@ -1602,42 +2058,10 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, + 0x03, 0x02, 0x00, 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0xb6, - 0x01, - 0x00, - 0x00, 0x0b, 0x00, 0x00, @@ -1690,7 +2114,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x03, + 0x02, 0x00, 0x00, 0x00, @@ -1710,7 +2134,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x21, + 0x15, 0x00, 0x04, 0x00, @@ -1718,695 +2142,103 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, + 0x20, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0x0a, + 0x00, + 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0x21, + 0x00, + 0x05, + 0x00, + 0x0b, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2b, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x17, 0x00, 0x04, 0x00, + 0x10, + 0x00, + 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, - 0x87, - 0x16, - 0x99, - 0x3e, - 0x15, + 0x21, 0x00, 0x04, 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x45, - 0x16, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, 0x11, 0x00, 0x00, 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1d, - 0x00, - 0x00, - 0x00, - 0xd5, - 0x78, - 0xe9, - 0x3d, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x56, - 0x0e, - 0x2d, - 0xbe, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x27, - 0x00, - 0x00, - 0x00, - 0xd5, - 0x78, - 0xa9, - 0x3e, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x87, - 0xd6, - 0x3e, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0x54, - 0xe3, - 0xa5, - 0x3d, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x00, - 0x00, - 0xbc, - 0x74, - 0xb3, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x54, - 0x00, - 0x00, - 0x00, - 0xc5, - 0x20, - 0xb0, - 0x3e, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x58, - 0x00, - 0x00, - 0x00, - 0xb4, - 0xc8, - 0x36, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x5d, - 0x00, - 0x00, - 0x00, - 0xe5, - 0xd0, - 0xe2, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x3f, - 0x17, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x6c, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x6c, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x0e, - 0x00, - 0x6f, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x70, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x70, - 0x00, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x15, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x14, - 0x00, - 0x02, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0xcd, - 0xcc, - 0x4c, - 0x3d, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x00, - 0x00, - 0xcd, - 0xcc, - 0xcc, - 0x3d, - 0x2c, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x8b, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8c, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x85, - 0x6b, - 0x3e, - 0x17, - 0x00, - 0x04, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0xa9, - 0x00, - 0x00, - 0x00, - 0xaa, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x07, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xab, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, 0x19, 0x00, 0x09, 0x00, - 0xb1, + 0x1a, 0x00, 0x00, 0x00, @@ -2442,11 +2274,531 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x1a, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0x1c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x1c, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x17, + 0x00, + 0x04, + 0x00, + 0x21, + 0x00, + 0x00, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x15, + 0x00, + 0x04, + 0x00, + 0x26, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x26, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x17, + 0x00, + 0x04, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0x37, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x26, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x47, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc0, + 0x3f, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x5a, + 0x00, + 0x00, + 0x00, + 0x87, + 0x16, + 0x99, + 0x3e, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x5e, + 0x00, + 0x00, + 0x00, + 0xa2, + 0x45, + 0x16, + 0x3f, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x63, + 0x00, + 0x00, + 0x00, + 0xd5, + 0x78, + 0xe9, + 0x3d, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x26, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x69, + 0x00, + 0x00, + 0x00, + 0x56, + 0x0e, + 0x2d, + 0xbe, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xd5, + 0x78, + 0xa9, + 0x3e, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7a, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x87, + 0xd6, + 0x3e, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7f, + 0x00, + 0x00, + 0x00, + 0x54, + 0xe3, + 0xa5, + 0x3d, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x94, + 0x00, + 0x00, + 0x00, + 0xbc, + 0x74, + 0xb3, + 0x3f, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x99, + 0x00, + 0x00, + 0x00, + 0xc5, + 0x20, + 0xb0, + 0x3e, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9d, + 0x00, + 0x00, + 0x00, + 0xb4, + 0xc8, + 0x36, + 0x3f, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa2, + 0x00, + 0x00, + 0x00, + 0xe5, + 0xd0, + 0xe2, + 0x3f, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x3f, + 0x20, + 0x00, + 0x04, + 0x00, + 0xaf, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0xaf, + 0x00, + 0x00, + 0x00, + 0xb0, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x1e, + 0x00, + 0x12, + 0x00, 0xb2, 0x00, 0x00, 0x00, - 0xb1, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, 0x00, 0x00, 0x00, @@ -2458,7 +2810,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x00, + 0x02, 0x00, 0x00, 0x00, @@ -2478,54 +2830,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0xb9, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0xc1, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x04, - 0x00, - 0xc3, - 0x00, - 0x00, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, 0x02, 0x00, 0x00, @@ -2534,15 +2838,39 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0xc8, + 0xb5, 0x00, 0x00, 0x00, - 0x0a, + 0x06, + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x04, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x14, + 0x00, + 0x02, + 0x00, + 0xb9, 0x00, 0x00, 0x00, @@ -2554,10 +2882,174 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xd4, + 0xc6, 0x00, 0x00, 0x00, + 0xcd, + 0xcc, + 0x4c, + 0x3d, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x00, + 0x00, + 0x00, + 0xcd, + 0xcc, + 0xcc, + 0x3d, + 0x2c, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xc8, + 0x00, + 0x00, + 0x00, + 0xc6, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xcd, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xce, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x85, + 0x6b, + 0x3e, + 0x20, + 0x00, + 0x04, + 0x00, + 0xea, + 0x00, + 0x00, + 0x00, + 0x03, + 0x00, + 0x00, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0xea, + 0x00, + 0x00, + 0x00, + 0xeb, + 0x00, + 0x00, + 0x00, + 0x03, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x00, + 0x07, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0xec, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0xf6, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, 0x00, 0x00, 0x00, @@ -2570,7 +3062,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x0f, + 0x47, 0x01, 0x00, 0x00, @@ -2582,11 +3074,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0x22, + 0x59, 0x01, 0x00, 0x00, @@ -2598,43 +3090,27 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x06, + 0x09, 0x00, 0x00, 0x00, - 0x25, + 0x60, 0x01, 0x00, 0x00, - 0x0a, - 0xd7, - 0xa3, - 0x3b, + 0x0b, + 0x00, + 0x00, + 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, + 0x09, 0x00, 0x00, 0x00, - 0x27, - 0x01, - 0x00, - 0x00, - 0x9a, - 0x99, - 0x19, - 0x3e, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x28, + 0x6c, 0x01, 0x00, 0x00, @@ -2650,7 +3126,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x2b, + 0x6f, 0x01, 0x00, 0x00, @@ -2662,11 +3138,43 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x06, 0x00, 0x00, 0x00, - 0x41, + 0x75, + 0x01, + 0x00, + 0x00, + 0x0a, + 0xd7, + 0xa3, + 0x3b, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0x83, + 0x01, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0x88, 0x01, 0x00, 0x00, @@ -2682,7 +3190,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x49, + 0x90, 0x01, 0x00, 0x00, @@ -2694,23 +3202,23 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x4a, + 0x91, 0x01, 0x00, 0x00, - 0x49, + 0x90, 0x01, 0x00, 0x00, - 0x49, + 0x90, 0x01, 0x00, 0x00, - 0x49, + 0x90, 0x01, 0x00, 0x00, @@ -2718,27 +3226,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0x52, - 0x01, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0x59, + 0x9f, 0x01, 0x00, 0x00, @@ -2750,11 +3242,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0x61, + 0xa6, 0x01, 0x00, 0x00, @@ -2766,18 +3258,50 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x06, + 0x09, 0x00, 0x00, 0x00, - 0x74, + 0xac, 0x01, 0x00, 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0xbf, + 0x01, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, + 0xd0, + 0x01, + 0x00, + 0x00, + 0x0d, + 0x00, 0x00, 0x00, - 0x40, - 0x40, 0x2b, 0x00, 0x04, @@ -2786,39 +3310,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x7b, - 0x01, - 0x00, - 0x00, - 0x83, - 0xc0, - 0x2a, - 0x3f, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x85, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x0a, - 0xd7, - 0x3e, - 0x2b, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x95, + 0xe2, 0x01, 0x00, 0x00, @@ -2830,23 +3322,23 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x96, + 0xe3, 0x01, 0x00, 0x00, - 0x95, + 0xe2, 0x01, 0x00, 0x00, - 0x95, + 0xe2, 0x01, 0x00, 0x00, - 0x95, + 0xe2, 0x01, 0x00, 0x00, @@ -2854,11 +3346,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0xae, + 0xfb, 0x01, 0x00, 0x00, @@ -2870,15 +3362,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb5, - 0x01, + 0x02, + 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xa8, + 0x36, 0x00, 0x00, 0x00, @@ -2886,12 +3378,12 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb5, - 0x01, + 0x02, + 0x02, 0x00, 0x00, - 0xb6, - 0x01, + 0x03, + 0x02, 0x00, 0x00, 0x01, @@ -2902,8 +3394,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb7, - 0x01, + 0x04, + 0x02, 0x00, 0x00, 0x01, @@ -2922,8 +3414,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xba, - 0x01, + 0x07, + 0x02, 0x00, 0x00, 0xaa, @@ -2938,8 +3430,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xbe, - 0x01, + 0x0b, + 0x02, 0x00, 0x00, 0xcd, @@ -2950,24 +3442,24 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0xbf, - 0x01, + 0x0c, + 0x02, 0x00, 0x00, - 0xbe, - 0x01, + 0x0b, + 0x02, 0x00, 0x00, - 0xbe, - 0x01, + 0x0b, + 0x02, 0x00, 0x00, - 0xbe, - 0x01, + 0x0b, + 0x02, 0x00, 0x00, 0x2b, @@ -2978,8 +3470,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xc7, - 0x01, + 0x14, + 0x02, 0x00, 0x00, 0xaa, @@ -2990,15 +3482,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x72, + 0x09, 0x00, 0x00, 0x00, - 0xd6, - 0x01, + 0x23, + 0x02, 0x00, 0x00, - 0x0b, + 0x0a, 0x00, 0x00, 0x00, @@ -3010,8 +3502,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xdf, - 0x01, + 0x2c, + 0x02, 0x00, 0x00, 0x00, @@ -3026,8 +3518,8 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xe6, - 0x01, + 0x33, + 0x02, 0x00, 0x00, 0x0a, @@ -3066,11 +3558,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x6a, + 0x08, 0x00, 0x00, 0x00, - 0x6b, + 0xae, 0x00, 0x00, 0x00, @@ -3082,12 +3574,332 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x6a, + 0x08, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xc1, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0xc5, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0xcc, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0xf1, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xfc, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x02, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x05, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x06, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x09, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x12, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x15, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x20, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x28, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x33, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x50, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x67, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x08, 0x00, 0x00, 0x00, 0x7b, - 0x00, + 0x01, 0x00, 0x00, 0x07, @@ -3098,267 +3910,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x13, + 0x0a, 0x00, 0x00, 0x00, - 0x7f, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xbf, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xc7, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xcd, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xce, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xd1, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xda, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xdd, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xe5, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xe8, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xf0, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xf3, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xfb, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x16, + 0x7c, 0x01, 0x00, 0x00, @@ -3374,166 +3930,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x18, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x21, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x47, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x5e, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x66, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x6e, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x76, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x80, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, 0x84, 0x01, 0x00, @@ -3546,1271 +3942,255 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x93, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x6a, - 0x00, - 0x00, - 0x00, - 0x9e, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0xbd, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xdc, - 0x01, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x75, - 0x00, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x76, - 0x00, - 0x00, - 0x00, - 0x75, - 0x00, - 0x00, - 0x00, - 0xba, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x78, - 0x00, - 0x00, - 0x00, - 0x76, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x78, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x00, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x79, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x94, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x7f, - 0x00, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x00, - 0x00, - 0x87, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x89, - 0x00, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x89, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x8d, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x8d, - 0x00, - 0x00, - 0x00, - 0x8c, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x8f, - 0x00, - 0x00, - 0x00, - 0x8b, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x8f, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x7f, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x93, - 0x00, - 0x00, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x92, + 0x0a, 0x00, 0x00, 0x00, 0x85, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x93, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x95, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x96, - 0x00, - 0x00, - 0x00, - 0x95, - 0x00, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x96, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x97, - 0x00, - 0x00, - 0x00, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x98, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x98, - 0x00, - 0x00, - 0x00, - 0x97, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x9b, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x9c, - 0x00, - 0x00, - 0x00, 0x01, 0x00, 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x9b, - 0x00, - 0x00, - 0x00, - 0xbe, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x9d, - 0x00, - 0x00, - 0x00, - 0x9c, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0xa8, - 0x00, - 0x04, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x9e, - 0x00, - 0x00, - 0x00, - 0x9d, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x9e, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xa1, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x00, - 0x00, - 0x00, - 0xa1, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa3, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0xa2, - 0x00, - 0x00, - 0x00, - 0xbe, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0xa3, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0xf5, - 0x00, 0x07, 0x00, - 0x77, 0x00, 0x00, - 0x00, - 0xa5, - 0x00, - 0x00, - 0x00, - 0x9d, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x00, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, + 0x3b, 0x00, 0x04, 0x00, - 0xa5, + 0x11, 0x00, 0x00, 0x00, - 0xa6, + 0x8e, + 0x01, + 0x00, + 0x00, + 0x07, 0x00, 0x00, 0x00, - 0xa7, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, 0x00, 0x00, 0x00, - 0xf8, + 0x9e, + 0x01, 0x00, - 0x02, 0x00, - 0xa6, + 0x07, 0x00, 0x00, 0x00, - 0x3e, + 0x3b, 0x00, - 0x03, + 0x04, 0x00, - 0xaa, + 0x24, + 0x00, + 0x00, + 0x00, + 0xa3, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, 0x00, 0x00, 0x00, 0xab, - 0x00, - 0x00, - 0x00, - 0xfd, - 0x00, 0x01, 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xa7, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xad, - 0x00, - 0x00, - 0x00, - 0x7b, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xaf, - 0x00, - 0x00, - 0x00, - 0xad, - 0x00, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0xaf, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0xb5, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xb6, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xb7, - 0x00, - 0x00, - 0x00, - 0xb5, - 0x00, - 0x00, - 0x00, - 0xb6, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, - 0xb8, - 0x00, - 0x00, - 0x00, - 0xb7, - 0x00, - 0x00, - 0x00, - 0xb7, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0xb8, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xba, - 0x00, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xb9, - 0x00, - 0x00, - 0x00, - 0x3d, + 0x3b, 0x00, 0x04, 0x00, - 0x06, + 0x24, 0x00, 0x00, 0x00, - 0xbb, + 0xb1, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, 0x00, 0x00, 0x00, 0xba, + 0x01, + 0x00, + 0x00, + 0x07, 0x00, 0x00, 0x00, - 0xba, + 0x3b, 0x00, - 0x05, + 0x04, 0x00, - 0x77, + 0x24, 0x00, 0x00, 0x00, - 0xbc, - 0x00, - 0x00, - 0x00, - 0xbb, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, 0xbe, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0xbc, - 0x00, - 0x00, - 0x00, - 0xbd, - 0x00, - 0x00, - 0x00, - 0x1f, 0x01, 0x00, 0x00, - 0xf8, + 0x07, 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xc5, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xcf, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0xe0, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0xeb, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xef, + 0x01, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x01, 0x02, 0x00, - 0xbd, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x29, + 0x02, + 0x00, + 0x00, + 0x07, 0x00, 0x00, 0x00, @@ -4818,87 +4198,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb2, + 0x07, 0x00, 0x00, 0x00, - 0xc0, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x64, - 0x00, - 0x04, - 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xc2, - 0x00, - 0x00, - 0x00, - 0xc0, - 0x00, - 0x00, - 0x00, - 0x67, - 0x00, - 0x05, - 0x00, - 0xc3, - 0x00, - 0x00, - 0x00, - 0xc4, - 0x00, - 0x00, - 0x00, - 0xc2, - 0x00, - 0x00, - 0x00, - 0xc1, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x05, - 0x00, - 0x72, - 0x00, - 0x00, - 0x00, - 0xc5, - 0x00, - 0x00, - 0x00, - 0xc4, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xc6, - 0x00, - 0x00, - 0x00, - 0xc5, + 0xb0, 0x00, 0x00, 0x00, @@ -4906,11 +4214,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0xbf, + 0xae, 0x00, 0x00, 0x00, - 0xc6, + 0xb1, 0x00, 0x00, 0x00, @@ -4918,7 +4226,231 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x74, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xb7, + 0x00, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xb5, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb8, + 0x00, + 0x00, + 0x00, + 0xb7, + 0x00, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xba, + 0x00, + 0x00, + 0x00, + 0xb8, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0xbc, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xba, + 0x00, + 0x00, + 0x00, + 0xbb, + 0x00, + 0x00, + 0x00, + 0xbc, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xbb, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xbe, + 0x00, + 0x00, + 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xbf, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xc0, + 0x00, + 0x00, + 0x00, + 0xbe, + 0x00, + 0x00, + 0x00, + 0xbf, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0xc0, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xc2, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xc3, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x94, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xc4, + 0x00, + 0x00, + 0x00, + 0xc2, + 0x00, + 0x00, + 0x00, + 0xc3, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xc1, + 0x00, + 0x00, + 0x00, + 0xc4, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, 0x00, 0x00, 0x00, @@ -4926,7 +4458,39 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x71, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xb5, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xca, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x00, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xcb, 0x00, 0x00, 0x00, @@ -4934,67 +4498,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, 0xca, 0x00, 0x00, 0x00, - 0xc9, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xcb, - 0x00, - 0x00, - 0x00, - 0xbf, - 0x00, - 0x00, - 0x00, - 0x88, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xcc, - 0x00, - 0x00, - 0x00, - 0xca, - 0x00, - 0x00, - 0x00, - 0xcb, - 0x00, - 0x00, - 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xc7, + 0xc5, 0x00, 0x00, 0x00, - 0xcc, + 0xcb, 0x00, 0x00, 0x00, @@ -5010,23 +4526,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xb0, + 0xc5, 0x00, 0x00, 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xce, - 0x00, - 0x00, - 0x00, - 0xcf, - 0x00, - 0x00, - 0x00, - 0x39, + 0x8e, 0x00, 0x05, 0x00, @@ -5038,7 +4542,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x0b, + 0xcf, 0x00, 0x00, 0x00, @@ -5046,9 +4550,17 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x3e, + 0x83, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xd1, + 0x00, 0x00, - 0x03, 0x00, 0xcd, 0x00, @@ -5058,443 +4570,47 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0xd2, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xd3, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xd5, - 0x00, - 0x00, - 0x00, - 0xc7, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xd6, - 0x00, - 0x00, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x00, - 0xd5, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xd7, - 0x00, - 0x00, - 0x00, - 0xd6, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xd8, - 0x00, - 0x00, - 0x00, - 0xd3, - 0x00, - 0x00, - 0x00, - 0xd7, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xd9, - 0x00, - 0x00, - 0x00, - 0xd2, - 0x00, - 0x00, - 0x00, - 0xd8, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x08, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xdb, - 0x00, - 0x00, - 0x00, - 0xd9, - 0x00, - 0x00, - 0x00, - 0xd9, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xda, + 0xcc, 0x00, 0x00, 0x00, - 0xdb, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xdc, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0xda, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xdc, - 0x00, - 0x00, - 0x00, 0x3d, 0x00, 0x04, 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0xde, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xdf, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe0, - 0x00, - 0x00, - 0x00, - 0xc7, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe1, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xe0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x00, - 0x00, - 0x00, - 0xe1, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xe3, - 0x00, - 0x00, - 0x00, - 0xdf, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xe4, - 0x00, - 0x00, - 0x00, - 0xde, - 0x00, - 0x00, - 0x00, - 0xe3, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x08, - 0x00, 0x07, 0x00, 0x00, 0x00, - 0xe6, + 0xd2, 0x00, 0x00, 0x00, - 0xe4, + 0xbd, 0x00, 0x00, 0x00, - 0xe4, + 0x3d, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xe5, - 0x00, - 0x00, - 0x00, - 0xe6, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x05, + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0xe7, + 0xd3, 0x00, 0x00, 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0xe5, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xdd, - 0x00, - 0x00, - 0x00, - 0xe7, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0xe9, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xea, - 0x00, - 0x00, - 0x00, - 0x6b, + 0xc5, 0x00, 0x00, 0x00, @@ -5506,255 +4622,67 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xeb, - 0x00, - 0x00, - 0x00, - 0xc7, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xec, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xeb, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xed, - 0x00, - 0x00, - 0x00, - 0xec, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xee, - 0x00, - 0x00, - 0x00, - 0xea, - 0x00, - 0x00, - 0x00, - 0xed, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xef, - 0x00, - 0x00, - 0x00, - 0xe9, - 0x00, - 0x00, - 0x00, - 0xee, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x08, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xf1, - 0x00, - 0x00, - 0x00, - 0xef, - 0x00, - 0x00, - 0x00, - 0xef, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xf0, - 0x00, - 0x00, - 0x00, - 0xf1, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xf2, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0xf0, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xe8, - 0x00, - 0x00, - 0x00, - 0xf2, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0xf4, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xf5, - 0x00, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xf6, - 0x00, - 0x00, - 0x00, - 0xc7, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x00, - 0x00, 0xd4, 0x00, 0x00, 0x00, - 0xf6, + 0xc1, 0x00, 0x00, 0x00, - 0x50, + 0x8e, 0x00, 0x05, 0x00, - 0x69, + 0x07, 0x00, 0x00, 0x00, - 0xf8, + 0xd5, 0x00, 0x00, 0x00, - 0xf7, + 0xd3, 0x00, 0x00, 0x00, - 0x62, + 0xd4, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xd6, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x00, + 0x00, + 0x00, + 0xd5, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xd7, + 0x00, + 0x00, + 0x00, + 0xbd, 0x00, 0x00, 0x00, @@ -5762,31 +4690,535 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x69, + 0x07, + 0x00, + 0x00, + 0x00, + 0xd8, + 0x00, + 0x00, + 0x00, + 0xd7, + 0x00, + 0x00, + 0x00, + 0xd6, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0xd8, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xd9, + 0x00, + 0x00, + 0x00, + 0xcc, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xda, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xdb, + 0x00, + 0x00, + 0x00, + 0xda, + 0x00, + 0x00, + 0x00, + 0xd9, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0xdb, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xdc, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xdd, + 0x00, + 0x00, + 0x00, + 0xdc, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xde, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00, + 0x00, + 0xdd, + 0x00, + 0x00, + 0x00, + 0xbe, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xdf, + 0x00, + 0x00, + 0x00, + 0xde, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x04, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xe0, + 0x00, + 0x00, + 0x00, + 0xdf, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0xe2, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xe0, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x00, + 0x00, + 0x00, + 0xe2, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xe1, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xe3, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xe4, + 0x00, + 0x00, + 0x00, + 0xe3, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xe5, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00, + 0x00, + 0xe4, + 0x00, + 0x00, + 0x00, + 0xbe, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xe6, + 0x00, + 0x00, + 0x00, + 0xe5, + 0x00, + 0x00, + 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, + 0x02, 0x00, - 0x00, - 0xf5, + 0xe2, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x02, + 0x00, + 0xe2, + 0x00, + 0x00, + 0x00, + 0xf5, + 0x00, + 0x07, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xe7, + 0x00, + 0x00, + 0x00, + 0xdf, + 0x00, + 0x00, + 0x00, + 0xbb, + 0x00, + 0x00, + 0x00, + 0xe6, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0xe9, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xe7, + 0x00, + 0x00, + 0x00, + 0xe8, + 0x00, + 0x00, + 0x00, + 0xe9, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xe8, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xeb, + 0x00, + 0x00, + 0x00, + 0xec, + 0x00, + 0x00, + 0x00, + 0xfd, + 0x00, + 0x01, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xe9, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xee, + 0x00, + 0x00, + 0x00, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xef, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x00, + 0x00, + 0x00, + 0xee, + 0x00, + 0x00, + 0x00, + 0xef, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0xbc, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xbc, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0xf2, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xf3, + 0x00, + 0x00, + 0x00, + 0xae, + 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, - 0xfa, + 0x36, 0x00, 0x00, 0x00, @@ -5794,7 +5226,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xf9, + 0xf2, + 0x00, + 0x00, + 0x00, + 0xf3, 0x00, 0x00, 0x00, @@ -5802,19 +5238,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x08, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0xfc, + 0xf5, 0x00, 0x00, 0x00, - 0xfa, + 0xf4, 0x00, 0x00, 0x00, - 0xfa, + 0xf4, 0x00, 0x00, 0x00, @@ -5834,43 +5270,31 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0xfb, + 0xf1, 0x00, 0x00, 0x00, - 0xfc, + 0xf5, 0x00, 0x00, 0x00, - 0x39, + 0x41, 0x00, 0x05, 0x00, - 0x07, + 0xb6, 0x00, 0x00, 0x00, - 0xfd, + 0xf7, 0x00, 0x00, 0x00, - 0x0b, + 0xb4, 0x00, 0x00, 0x00, - 0xfb, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xf3, - 0x00, - 0x00, - 0x00, - 0xfd, + 0xf6, 0x00, 0x00, 0x00, @@ -5878,7 +5302,95 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x07, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0xfb, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xf9, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x00, + 0x00, + 0x57, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xfa, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0xfd, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x04, + 0x00, + 0x1a, 0x00, 0x00, 0x00, @@ -5886,15 +5398,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xd1, + 0xfd, 0x00, 0x00, 0x00, - 0x4f, + 0x67, 0x00, - 0x07, + 0x05, 0x00, - 0x69, + 0x21, 0x00, 0x00, 0x00, @@ -5906,91 +5418,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xfe, + 0x1f, 0x00, 0x00, 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0xdd, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x07, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x01, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x8e, + 0x51, 0x00, 0x05, 0x00, - 0x69, + 0x09, 0x00, 0x00, 0x00, - 0x02, - 0x01, 0x00, - 0x00, - 0x01, - 0x01, - 0x00, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x03, 0x01, 0x00, 0x00, @@ -5998,7 +5438,35 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6f, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x01, + 0x01, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xfc, + 0x00, + 0x00, + 0x00, + 0x01, 0x01, 0x00, 0x00, @@ -6006,407 +5474,63 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x04, - 0x01, - 0x00, - 0x00, - 0xcd, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x07, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x05, - 0x01, - 0x00, - 0x00, - 0x04, - 0x01, - 0x00, - 0x00, - 0x04, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, 0x06, - 0x01, 0x00, 0x00, - 0x05, - 0x01, - 0x00, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x07, - 0x01, - 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0x06, - 0x01, + 0xfc, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x08, - 0x01, - 0x00, - 0x00, - 0xe8, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x07, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x09, - 0x01, - 0x00, - 0x00, - 0x08, - 0x01, - 0x00, - 0x00, - 0x08, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x01, - 0x00, - 0x00, - 0x09, - 0x01, - 0x00, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x01, - 0x00, - 0x00, - 0x07, - 0x01, - 0x00, - 0x00, - 0x0a, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x01, - 0x00, - 0x00, - 0xf3, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x00, - 0x07, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x01, - 0x00, - 0x00, - 0x0b, - 0x01, - 0x00, - 0x00, - 0x0d, - 0x01, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x10, - 0x01, - 0x00, - 0x00, - 0x0f, - 0x01, - 0x00, - 0x00, - 0x0f, - 0x01, - 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x69, + 0x06, 0x00, 0x00, 0x00, - 0x11, + 0x04, 0x01, 0x00, 0x00, - 0x0e, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x03, 0x01, 0x00, 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x02, + 0x01, + 0x00, + 0x00, + 0x04, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, 0x10, - 0x01, 0x00, 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x12, - 0x01, - 0x00, - 0x00, - 0xcd, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x13, - 0x01, - 0x00, - 0x00, - 0x11, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x12, - 0x01, - 0x00, - 0x00, - 0x13, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x14, - 0x01, - 0x00, - 0x00, - 0xcd, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x15, - 0x01, - 0x00, - 0x00, - 0x11, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x14, - 0x01, - 0x00, - 0x00, - 0x15, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, 0x00, 0x07, - 0x00, - 0x00, - 0x00, - 0x17, 0x01, 0x00, 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x19, - 0x01, - 0x00, - 0x00, - 0xcd, + 0xf1, 0x00, 0x00, 0x00, @@ -6414,11 +5538,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x18, + 0x06, 0x01, 0x00, 0x00, - 0x19, + 0x07, 0x01, 0x00, 0x00, @@ -6426,39 +5550,63 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x08, + 0x01, + 0x00, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, + 0x06, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x05, + 0x01, + 0x00, + 0x00, + 0x08, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x01, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, 0x07, 0x00, 0x00, 0x00, - 0x1a, + 0x0b, 0x01, 0x00, 0x00, - 0x0e, - 0x00, - 0x00, - 0x00, - 0x18, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xb9, + 0xae, 0x00, 0x00, 0x00, @@ -6470,56 +5618,268 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x1c, + 0x0d, 0x01, 0x00, 0x00, - 0x1b, + 0x02, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x50, 0x00, - 0x06, + 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x1d, + 0x0f, 0x01, 0x00, 0x00, - 0x1c, + 0x0e, 0x01, 0x00, 0x00, - 0x1c, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x10, 0x01, 0x00, 0x00, - 0x1c, + 0x0b, 0x01, 0x00, 0x00, - 0x0c, + 0x0f, + 0x01, + 0x00, + 0x00, + 0x57, + 0x00, + 0x05, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x11, + 0x01, + 0x00, + 0x00, + 0x0a, + 0x01, + 0x00, + 0x00, + 0x10, + 0x01, + 0x00, + 0x00, + 0x4f, 0x00, 0x08, 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x13, + 0x01, + 0x00, + 0x00, + 0x11, + 0x01, + 0x00, + 0x00, + 0x11, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x12, + 0x01, + 0x00, + 0x00, + 0x13, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x14, + 0x01, + 0x00, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, + 0x12, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x09, + 0x01, + 0x00, + 0x00, + 0x14, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x16, + 0x01, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, 0x07, 0x00, 0x00, 0x00, - 0x1e, + 0x17, 0x01, 0x00, 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x18, 0x01, 0x00, 0x00, + 0x02, + 0x01, 0x00, - 0x2e, 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x19, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x18, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x1a, + 0x01, + 0x00, + 0x00, + 0x19, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x1b, + 0x01, 0x00, 0x00, 0x17, @@ -6530,6 +5890,86 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x57, + 0x00, + 0x05, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x1c, + 0x01, + 0x00, + 0x00, + 0x16, + 0x01, + 0x00, + 0x00, + 0x1b, + 0x01, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1e, + 0x01, + 0x00, + 0x00, + 0x1c, + 0x01, + 0x00, + 0x00, + 0x1c, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x1d, + 0x01, + 0x00, + 0x00, + 0x1e, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x01, + 0x00, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, 0x1d, 0x01, 0x00, @@ -6538,26 +5978,10 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x16, + 0x15, 0x01, 0x00, 0x00, - 0x1e, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xbe, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, 0x1f, 0x01, 0x00, @@ -6566,66 +5990,34 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x21, + 0x01, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, - 0x01, - 0x00, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x20, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xbe, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xbe, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x23, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, 0x22, 0x01, 0x00, 0x00, + 0xae, + 0x00, + 0x00, + 0x00, 0x3d, 0x00, 0x04, @@ -6634,11 +6026,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x24, + 0x23, 0x01, 0x00, 0x00, - 0x23, + 0x02, 0x01, 0x00, 0x00, @@ -6650,7 +6042,27 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x26, + 0x24, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x23, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x25, 0x01, 0x00, 0x00, @@ -6658,139 +6070,43 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x26, + 0x01, + 0x00, + 0x00, + 0x22, + 0x01, + 0x00, + 0x00, 0x25, 0x01, 0x00, 0x00, - 0x41, + 0x57, 0x00, 0x05, 0x00, - 0x74, + 0x36, 0x00, 0x00, 0x00, - 0x29, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x28, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2a, - 0x01, - 0x00, - 0x00, - 0x29, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x01, - 0x00, - 0x00, - 0x2a, - 0x01, - 0x00, - 0x00, - 0x2b, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2d, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x01, - 0x00, - 0x00, 0x27, 0x01, 0x00, 0x00, - 0x2d, - 0x01, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2f, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x30, + 0x21, 0x01, 0x00, 0x00, @@ -6798,7 +6114,67 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x2f, + 0x4f, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x29, + 0x01, + 0x00, + 0x00, + 0x27, + 0x01, + 0x00, + 0x00, + 0x27, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x28, + 0x01, + 0x00, + 0x00, + 0x29, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x01, + 0x00, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, + 0x28, 0x01, 0x00, 0x00, @@ -6806,11 +6182,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x21, + 0x20, 0x01, 0x00, 0x00, - 0x30, + 0x2a, 0x01, 0x00, 0x00, @@ -6818,15 +6194,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb2, + 0x1b, 0x00, 0x00, 0x00, - 0x31, + 0x2c, 0x01, 0x00, 0x00, - 0xb4, + 0x1d, 0x00, 0x00, 0x00, @@ -6834,15 +6210,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x69, + 0x07, 0x00, 0x00, 0x00, - 0x32, + 0x2d, 0x01, 0x00, 0x00, - 0x6b, + 0xae, 0x00, 0x00, 0x00, @@ -6854,11 +6230,31 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x33, + 0x2e, 0x01, 0x00, 0x00, - 0x21, + 0x02, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x2e, 0x01, 0x00, 0x00, @@ -6866,19 +6262,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x69, + 0x07, 0x00, 0x00, 0x00, - 0x34, + 0x30, 0x01, 0x00, 0x00, - 0x33, + 0x2f, 0x01, 0x00, 0x00, - 0x62, + 0xa7, 0x00, 0x00, 0x00, @@ -6886,19 +6282,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x69, + 0x07, 0x00, 0x00, 0x00, - 0x35, + 0x31, 0x01, 0x00, 0x00, - 0x32, + 0x2d, 0x01, 0x00, 0x00, - 0x34, + 0x30, 0x01, 0x00, 0x00, @@ -6906,11 +6302,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0xa8, - 0x00, - 0x00, - 0x00, 0x36, + 0x00, + 0x00, + 0x00, + 0x32, + 0x01, + 0x00, + 0x00, + 0x2c, 0x01, 0x00, 0x00, @@ -6918,15 +6318,103 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x4f, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x34, + 0x01, + 0x00, + 0x00, + 0x32, + 0x01, + 0x00, + 0x00, + 0x32, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x33, + 0x01, + 0x00, + 0x00, + 0x34, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, 0x35, 0x01, 0x00, 0x00, - 0x51, + 0x14, 0x00, - 0x05, 0x00, - 0x06, + 0x00, + 0x33, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x2b, + 0x01, + 0x00, + 0x00, + 0x35, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x36, + 0x01, + 0x00, + 0x00, + 0x09, + 0x01, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x07, + 0x00, + 0x07, 0x00, 0x00, 0x00, @@ -6938,35 +6426,91 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x36, + 0x01, + 0x00, + 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, - 0x41, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x38, + 0x01, + 0x00, + 0x00, + 0x15, + 0x01, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x07, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x39, + 0x01, + 0x00, + 0x00, + 0x38, + 0x01, + 0x00, + 0x00, + 0x38, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x8e, 0x00, 0x05, 0x00, - 0x13, + 0x07, 0x00, 0x00, 0x00, - 0x38, + 0x3a, 0x01, 0x00, 0x00, - 0x16, + 0x39, 0x01, 0x00, 0x00, - 0x12, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, 0x00, 0x00, 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x38, + 0x3b, 0x01, 0x00, 0x00, @@ -6974,59 +6518,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0xb2, - 0x00, - 0x00, - 0x00, - 0x39, - 0x01, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, 0x3a, 0x01, 0x00, 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x01, - 0x00, - 0x00, - 0x21, - 0x01, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, + 0x10, 0x00, 0x00, 0x00, @@ -7034,19 +6534,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x3b, + 0x05, 0x01, 0x00, 0x00, - 0x62, + 0x4f, 0x00, + 0x07, 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, + 0x07, 0x00, 0x00, 0x00, @@ -7054,7 +6550,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x3a, + 0x3c, 0x01, 0x00, 0x00, @@ -7062,11 +6558,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x57, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x8e, 0x00, 0x05, 0x00, - 0xa8, + 0x07, 0x00, 0x00, 0x00, @@ -7074,14 +6578,242 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x39, + 0x3d, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x01, + 0x00, + 0x00, + 0x3b, + 0x01, + 0x00, + 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x40, 0x01, 0x00, 0x00, + 0x20, + 0x01, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x07, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x41, + 0x01, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x42, + 0x01, + 0x00, + 0x00, + 0x41, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x43, + 0x01, + 0x00, + 0x00, + 0x3f, + 0x01, + 0x00, + 0x00, + 0x42, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x44, + 0x01, + 0x00, + 0x00, + 0x2b, + 0x01, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x07, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x45, + 0x01, + 0x00, + 0x00, + 0x44, + 0x01, + 0x00, + 0x00, + 0x44, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x46, + 0x01, + 0x00, + 0x00, + 0x43, + 0x01, + 0x00, + 0x00, + 0x45, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x48, + 0x01, + 0x00, + 0x00, + 0x47, + 0x01, + 0x00, + 0x00, + 0x47, + 0x01, + 0x00, + 0x00, + 0x88, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x49, + 0x01, + 0x00, + 0x00, + 0x46, + 0x01, + 0x00, + 0x00, + 0x48, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x4a, + 0x01, + 0x00, + 0x00, + 0x05, + 0x01, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, 0x51, 0x00, 0x05, @@ -7090,203 +6822,35 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x3f, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x01, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x40, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x40, - 0x01, - 0x00, - 0x00, - 0x3f, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x42, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x41, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x43, - 0x01, - 0x00, - 0x00, - 0x42, - 0x01, - 0x00, - 0x00, - 0xba, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x44, - 0x01, - 0x00, - 0x00, - 0x43, - 0x01, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x46, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x44, - 0x01, - 0x00, - 0x00, - 0x45, - 0x01, - 0x00, - 0x00, - 0x46, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x45, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x48, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x07, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x49, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, - 0x48, - 0x01, + 0x3e, 0x00, + 0x03, 0x00, 0x4a, 0x01, 0x00, 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x47, - 0x01, - 0x00, - 0x00, 0x4b, 0x01, 0x00, 0x00, - 0x3d, + 0x41, 0x00, - 0x04, + 0x05, 0x00, - 0x07, + 0x24, 0x00, 0x00, 0x00, @@ -7294,15 +6858,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x16, + 0x05, 0x01, 0x00, 0x00, - 0x3d, + 0x64, 0x00, - 0x04, 0x00, - 0x07, + 0x00, + 0x51, + 0x00, + 0x05, + 0x00, + 0x06, 0x00, 0x00, 0x00, @@ -7310,7 +6878,87 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x47, + 0x49, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4c, + 0x01, + 0x00, + 0x00, + 0x4d, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x4f, + 0x01, + 0x00, + 0x00, + 0xf1, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x51, + 0x01, + 0x00, + 0x00, + 0x05, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x50, + 0x01, + 0x00, + 0x00, + 0x51, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x52, + 0x01, + 0x00, + 0x00, + 0x17, + 0x00, + 0x00, + 0x00, + 0x50, 0x01, 0x00, 0x00, @@ -7318,20 +6966,20 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x74, + 0xb6, 0x00, 0x00, 0x00, - 0x4e, + 0x53, 0x01, 0x00, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, - 0x41, - 0x01, + 0xf6, + 0x00, 0x00, 0x00, 0x3d, @@ -7342,11 +6990,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x4f, + 0x54, 0x01, 0x00, 0x00, - 0x4e, + 0x53, 0x01, 0x00, 0x00, @@ -7354,23 +7002,23 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x50, + 0x55, 0x01, 0x00, 0x00, - 0x4f, + 0x54, 0x01, 0x00, 0x00, - 0x4f, + 0x54, 0x01, 0x00, 0x00, - 0x4f, + 0x54, 0x01, 0x00, 0x00, @@ -7378,11 +7026,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x08, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x51, + 0x56, 0x01, 0x00, 0x00, @@ -7394,15 +7042,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x4c, + 0x4f, 0x01, 0x00, 0x00, - 0x4d, + 0x52, 0x01, 0x00, 0x00, - 0x50, + 0x55, 0x01, 0x00, 0x00, @@ -7410,11 +7058,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x16, + 0x4e, 0x01, 0x00, 0x00, - 0x51, + 0x56, 0x01, 0x00, 0x00, @@ -7422,35 +7070,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0x46, - 0x01, + 0xfb, + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x46, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x53, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x52, + 0x57, 0x01, 0x00, 0x00, @@ -7458,79 +7086,51 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x06, + 0x10, 0x00, 0x00, 0x00, - 0x54, + 0x58, 0x01, 0x00, 0x00, - 0x53, - 0x01, - 0x00, - 0x00, - 0xba, - 0x00, - 0x05, - 0x00, - 0x77, + 0xf1, 0x00, 0x00, 0x00, - 0x55, - 0x01, - 0x00, - 0x00, - 0x54, - 0x01, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf7, + 0x3e, 0x00, 0x03, 0x00, - 0x57, + 0x4e, 0x01, 0x00, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x55, + 0x58, 0x01, 0x00, 0x00, - 0x56, - 0x01, + 0xf9, 0x00, + 0x02, + 0x00, + 0xfb, 0x00, - 0x57, - 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x56, - 0x01, + 0xfb, + 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x74, + 0xb6, 0x00, 0x00, 0x00, @@ -7538,7 +7138,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, @@ -7562,11 +7162,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x0c, + 0xba, 0x00, - 0x06, + 0x05, 0x00, - 0x06, + 0xb9, 0x00, 0x00, 0x00, @@ -7574,23 +7174,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, 0x5b, 0x01, 0x00, 0x00, - 0x0c, + 0xa7, 0x00, - 0x07, 0x00, - 0x06, + 0x00, + 0xa8, + 0x00, + 0x04, + 0x00, + 0xb9, 0x00, 0x00, 0x00, @@ -7598,63 +7194,31 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x28, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, 0x5c, 0x01, 0x00, 0x00, - 0x3e, + 0xf7, 0x00, 0x03, 0x00, - 0x58, + 0x5f, 0x01, 0x00, 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, 0x5d, 0x01, 0x00, 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x5f, - 0x01, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x60, + 0x5e, 0x01, 0x00, 0x00, @@ -7662,19 +7226,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x5e, + 0x01, + 0x00, + 0x00, 0x41, 0x00, 0x05, 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x62, - 0x01, - 0x00, - 0x00, - 0x71, + 0xb6, 0x00, 0x00, 0x00, @@ -7682,78 +7246,14 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0x3d, + 0xb4, 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x63, - 0x01, - 0x00, - 0x00, - 0x62, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x64, - 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, - 0x63, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x65, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x64, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x5e, - 0x01, - 0x00, - 0x00, - 0x65, - 0x01, - 0x00, - 0x00, 0x3d, 0x00, 0x04, @@ -7762,775 +7262,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x67, + 0x62, 0x01, 0x00, 0x00, - 0x5e, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x68, - 0x01, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x69, - 0x01, - 0x00, - 0x00, - 0x67, - 0x01, - 0x00, - 0x00, - 0x68, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x6a, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x69, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x66, - 0x01, - 0x00, - 0x00, - 0x6a, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x6c, - 0x01, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0xb8, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x01, - 0x00, - 0x00, - 0x6c, - 0x01, - 0x00, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x70, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x6d, - 0x01, - 0x00, - 0x00, - 0x6f, - 0x01, - 0x00, - 0x00, - 0x72, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x6f, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x71, - 0x01, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x6e, - 0x01, - 0x00, - 0x00, - 0x71, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x70, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x72, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x73, - 0x01, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0xb8, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x75, - 0x01, - 0x00, - 0x00, - 0x73, - 0x01, - 0x00, - 0x00, - 0x74, - 0x01, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0x78, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0x75, - 0x01, - 0x00, - 0x00, - 0x77, - 0x01, - 0x00, - 0x00, - 0x79, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x77, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x76, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x78, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x79, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7a, - 0x01, - 0x00, - 0x00, - 0x58, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x01, - 0x00, - 0x00, - 0x7a, - 0x01, - 0x00, - 0x00, - 0x7b, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7d, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x7c, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x76, - 0x01, - 0x00, - 0x00, - 0x7d, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x78, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x78, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7e, - 0x01, - 0x00, - 0x00, - 0x76, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x6e, - 0x01, - 0x00, - 0x00, - 0x7e, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x70, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x70, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x7f, - 0x01, - 0x00, - 0x00, - 0x6e, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x6b, - 0x01, - 0x00, - 0x00, - 0x7f, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x81, - 0x01, - 0x00, - 0x00, - 0x6b, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x82, - 0x01, - 0x00, - 0x00, - 0x66, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x07, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x30, - 0x00, - 0x00, - 0x00, - 0x81, - 0x01, - 0x00, - 0x00, - 0x82, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x80, - 0x01, - 0x00, - 0x00, - 0x83, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x86, - 0x01, - 0x00, - 0x00, - 0x80, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x08, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x87, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x85, - 0x01, - 0x00, - 0x00, - 0x86, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x84, - 0x01, - 0x00, - 0x00, - 0x87, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x88, - 0x01, - 0x00, - 0x00, - 0x84, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x89, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x52, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8a, - 0x01, - 0x00, - 0x00, - 0x89, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x08, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8b, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x88, - 0x01, - 0x00, - 0x00, - 0x8a, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x8c, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x8d, - 0x01, - 0x00, - 0x00, - 0x8c, - 0x01, - 0x00, - 0x00, - 0x8b, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x8d, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0x57, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x57, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0x8e, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x41, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x8f, - 0x01, - 0x00, - 0x00, - 0x8e, + 0x61, 0x01, 0x00, 0x00, @@ -8538,27 +7274,71 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x77, + 0xb9, 0x00, 0x00, 0x00, - 0x90, - 0x01, - 0x00, - 0x00, - 0x8f, + 0x63, 0x01, 0x00, 0x00, 0x62, + 0x01, 0x00, 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x5f, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x5f, + 0x01, + 0x00, + 0x00, + 0xf5, + 0x00, + 0x07, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0x64, + 0x01, + 0x00, + 0x00, + 0x5c, + 0x01, + 0x00, + 0x00, + 0xfb, + 0x00, + 0x00, + 0x00, + 0x63, + 0x01, + 0x00, + 0x00, + 0x5e, + 0x01, + 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x92, + 0x66, 0x01, 0x00, 0x00, @@ -8570,15 +7350,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x90, + 0x64, 0x01, 0x00, 0x00, - 0x91, + 0x65, 0x01, 0x00, 0x00, - 0x92, + 0x66, 0x01, 0x00, 0x00, @@ -8586,7 +7366,263 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0x91, + 0x65, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x68, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x59, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x69, + 0x01, + 0x00, + 0x00, + 0x68, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x6a, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6b, + 0x01, + 0x00, + 0x00, + 0x6a, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x6d, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x6c, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6e, + 0x01, + 0x00, + 0x00, + 0x6d, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x70, + 0x01, + 0x00, + 0x00, + 0x6e, + 0x01, + 0x00, + 0x00, + 0x6f, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x71, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x70, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x72, + 0x01, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x71, + 0x01, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x73, + 0x01, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x72, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x74, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x69, + 0x01, + 0x00, + 0x00, + 0x6b, + 0x01, + 0x00, + 0x00, + 0x73, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x76, + 0x01, + 0x00, + 0x00, + 0x74, + 0x01, + 0x00, + 0x00, + 0x75, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x67, + 0x01, + 0x00, + 0x00, + 0x76, 0x01, 0x00, 0x00, @@ -8598,11 +7634,423 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x94, + 0x77, 0x01, 0x00, 0x00, - 0x16, + 0xae, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x78, + 0x01, + 0x00, + 0x00, + 0x67, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x79, + 0x01, + 0x00, + 0x00, + 0x78, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x7a, + 0x01, + 0x00, + 0x00, + 0x77, + 0x01, + 0x00, + 0x00, + 0x79, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x7b, + 0x01, + 0x00, + 0x00, + 0x7a, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x7c, + 0x01, + 0x00, + 0x00, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x39, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7d, + 0x01, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x7b, + 0x01, + 0x00, + 0x00, + 0x7c, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x7e, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x7e, + 0x01, + 0x00, + 0x00, + 0x7d, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x7f, + 0x01, + 0x00, + 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x80, + 0x01, + 0x00, + 0x00, + 0x67, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x81, + 0x01, + 0x00, + 0x00, + 0x80, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x82, + 0x01, + 0x00, + 0x00, + 0x7f, + 0x01, + 0x00, + 0x00, + 0x81, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x84, + 0x01, + 0x00, + 0x00, + 0x82, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x85, + 0x01, + 0x00, + 0x00, + 0x83, + 0x01, + 0x00, + 0x00, + 0x39, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x86, + 0x01, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x84, + 0x01, + 0x00, + 0x00, + 0x85, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x87, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x87, + 0x01, + 0x00, + 0x00, + 0x86, + 0x01, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x66, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x66, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x89, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x88, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x8a, + 0x01, + 0x00, + 0x00, + 0x89, + 0x01, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0x8b, + 0x01, + 0x00, + 0x00, + 0x8a, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0x8d, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0x8b, + 0x01, + 0x00, + 0x00, + 0x8c, + 0x01, + 0x00, + 0x00, + 0x8d, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x8c, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x8f, + 0x01, + 0x00, + 0x00, + 0x4e, 0x01, 0x00, 0x00, @@ -8610,11 +8058,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x07, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x97, + 0x92, 0x01, 0x00, 0x00, @@ -8626,11 +8074,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x94, + 0x8f, 0x01, 0x00, 0x00, - 0x96, + 0x91, 0x01, 0x00, 0x00, @@ -8638,11 +8086,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x93, + 0x8e, 0x01, 0x00, 0x00, - 0x97, + 0x92, 0x01, 0x00, 0x00, @@ -8650,15 +8098,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x98, + 0x93, 0x01, 0x00, 0x00, - 0x16, + 0x4e, 0x01, 0x00, 0x00, @@ -8666,15 +8114,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x99, + 0x94, 0x01, 0x00, 0x00, - 0x93, + 0x8e, 0x01, 0x00, 0x00, @@ -8682,19 +8130,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x74, + 0xb6, 0x00, 0x00, 0x00, - 0x9a, + 0x95, 0x01, 0x00, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, - 0x41, + 0x88, 0x01, 0x00, 0x00, @@ -8706,11 +8154,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x9b, + 0x96, 0x01, 0x00, 0x00, - 0x9a, + 0x95, 0x01, 0x00, 0x00, @@ -8718,23 +8166,23 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x06, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x9c, + 0x97, 0x01, 0x00, 0x00, - 0x9b, + 0x96, 0x01, 0x00, 0x00, - 0x9b, + 0x96, 0x01, 0x00, 0x00, - 0x9b, + 0x96, 0x01, 0x00, 0x00, @@ -8742,11 +8190,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x08, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x9d, + 0x98, 0x01, 0x00, 0x00, @@ -8758,15 +8206,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x98, + 0x93, 0x01, 0x00, 0x00, - 0x99, + 0x94, 0x01, 0x00, 0x00, - 0x9c, + 0x97, 0x01, 0x00, 0x00, @@ -8774,11 +8222,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x16, + 0x4e, 0x01, 0x00, 0x00, - 0x9d, + 0x98, 0x01, 0x00, 0x00, @@ -8786,7 +8234,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0x92, + 0x8d, 0x01, 0x00, 0x00, @@ -8794,127 +8242,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0x92, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0x9f, - 0x01, - 0x00, - 0x00, - 0x6b, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xa0, - 0x01, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xa1, - 0x01, - 0x00, - 0x00, - 0x9f, - 0x01, - 0x00, - 0x00, - 0xa0, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x9e, - 0x01, - 0x00, - 0x00, - 0xa1, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xa3, - 0x01, - 0x00, - 0x00, - 0x9e, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x69, - 0x00, - 0x00, - 0x00, - 0xa4, - 0x01, - 0x00, - 0x00, - 0x9e, - 0x01, - 0x00, - 0x00, - 0x94, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa5, - 0x01, - 0x00, - 0x00, - 0xa3, - 0x01, - 0x00, - 0x00, - 0xa4, + 0x8d, 0x01, 0x00, 0x00, @@ -8922,87 +8250,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x74, + 0xb6, 0x00, 0x00, 0x00, - 0xa6, + 0x99, 0x01, 0x00, 0x00, - 0x71, + 0xb4, 0x00, 0x00, 0x00, - 0xc1, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa7, - 0x01, - 0x00, - 0x00, - 0xa6, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa8, - 0x01, - 0x00, - 0x00, - 0xa5, - 0x01, - 0x00, - 0x00, - 0xa7, - 0x01, - 0x00, - 0x00, 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xa9, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xa8, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xa2, - 0x01, - 0x00, - 0x00, - 0xa9, 0x01, 0x00, 0x00, @@ -9014,127 +8274,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xaa, + 0x9a, 0x01, 0x00, 0x00, - 0xa2, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x08, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xab, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x00, - 0x00, - 0xaa, - 0x01, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xac, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xad, - 0x01, - 0x00, - 0x00, - 0xac, - 0x01, - 0x00, - 0x00, - 0xab, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0xad, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xaf, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xae, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xb0, - 0x01, - 0x00, - 0x00, - 0xaf, + 0x99, 0x01, 0x00, 0x00, @@ -9142,19 +8286,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x77, + 0xb9, 0x00, 0x00, 0x00, - 0xb1, + 0x9b, 0x01, 0x00, 0x00, - 0xb0, + 0x9a, 0x01, 0x00, 0x00, - 0x62, + 0xa7, 0x00, 0x00, 0x00, @@ -9162,7 +8306,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0xb3, + 0x9d, 0x01, 0x00, 0x00, @@ -9174,15 +8318,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0xb1, + 0x9b, 0x01, 0x00, 0x00, - 0xb2, + 0x9c, 0x01, 0x00, 0x00, - 0xb3, + 0x9d, 0x01, 0x00, 0x00, @@ -9190,7 +8334,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0xb2, + 0x9c, 0x01, 0x00, 0x00, @@ -9198,19 +8342,95 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0xb7, - 0x01, - 0x00, - 0x00, - 0xb8, - 0x01, - 0x00, - 0x00, 0xb6, + 0x00, + 0x00, + 0x00, + 0xa0, 0x01, 0x00, 0x00, - 0x12, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x9f, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa1, + 0x01, + 0x00, + 0x00, + 0xa0, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x07, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa2, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x28, + 0x00, + 0x00, + 0x00, + 0xa1, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x9e, + 0x01, + 0x00, + 0x00, + 0xa2, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0xa4, + 0x01, + 0x00, + 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0x3f, 0x00, 0x00, 0x00, @@ -9222,11 +8442,47 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xb9, + 0xa5, 0x01, 0x00, 0x00, - 0xb8, + 0xa4, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xa6, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x01, + 0x00, + 0x00, + 0xa7, 0x01, 0x00, 0x00, @@ -9238,15 +8494,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xbb, + 0xa9, 0x01, 0x00, 0x00, - 0xb9, + 0xa5, 0x01, 0x00, 0x00, - 0xba, + 0xa8, 0x01, 0x00, 0x00, @@ -9258,7 +8514,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xbc, + 0xaa, 0x01, 0x00, 0x00, @@ -9270,7 +8526,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xbb, + 0xa9, 0x01, 0x00, 0x00, @@ -9278,7 +8534,327 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, + 0xa3, + 0x01, + 0x00, + 0x00, + 0xaa, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xad, + 0x01, + 0x00, + 0x00, 0xb4, + 0x00, + 0x00, + 0x00, + 0xac, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xae, + 0x01, + 0x00, + 0x00, + 0xad, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xaf, + 0x01, + 0x00, + 0x00, + 0xae, + 0x01, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb0, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xaf, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xab, + 0x01, + 0x00, + 0x00, + 0xb0, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb2, + 0x01, + 0x00, + 0x00, + 0xa3, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb3, + 0x01, + 0x00, + 0x00, + 0xab, + 0x01, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb4, + 0x01, + 0x00, + 0x00, + 0xb2, + 0x01, + 0x00, + 0x00, + 0xb3, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb5, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00, + 0x00, + 0xb4, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xb1, + 0x01, + 0x00, + 0x00, + 0xb5, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb6, + 0x01, + 0x00, + 0x00, + 0xb1, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb7, + 0x01, + 0x00, + 0x00, + 0xb1, + 0x01, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb8, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xb7, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x07, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xb9, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x25, + 0x00, + 0x00, + 0x00, + 0xb6, + 0x01, + 0x00, + 0x00, + 0xb8, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xb1, + 0x01, + 0x00, + 0x00, + 0xb9, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xbb, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xac, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xbc, + 0x01, + 0x00, + 0x00, + 0xbb, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xbd, 0x01, 0x00, 0x00, @@ -9286,14 +8862,38 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xba, + 0x01, + 0x00, + 0x00, 0xbd, 0x01, 0x00, 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xc0, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, 0xbf, 0x01, 0x00, @@ -9306,22 +8906,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xc0, - 0x01, - 0x00, - 0x00, - 0xb4, - 0x01, - 0x00, - 0x00, - 0xb8, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, 0xc1, 0x01, 0x00, @@ -9330,51 +8914,47 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xba, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xc2, 0x01, 0x00, 0x00, - 0xf7, + 0xc1, + 0x01, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, 0x00, - 0x03, 0x00, 0xc3, 0x01, 0x00, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0xc1, + 0x9e, 0x01, 0x00, 0x00, - 0xc2, - 0x01, - 0x00, - 0x00, - 0xc5, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xc2, - 0x01, - 0x00, - 0x00, - 0x41, + 0x88, 0x00, 0x05, 0x00, - 0x13, + 0x06, 0x00, 0x00, 0x00, @@ -9382,42 +8962,26 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xbd, + 0xc2, 0x01, 0x00, 0x00, - 0x12, - 0x00, + 0xc3, + 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xbe, + 0x01, + 0x00, + 0x00, 0xc4, 0x01, 0x00, 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xc3, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xc5, - 0x01, - 0x00, - 0x00, 0x3d, 0x00, 0x04, @@ -9430,15 +8994,31 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xb4, + 0xba, 0x01, 0x00, 0x00, - 0xb8, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x01, + 0x00, + 0x00, + 0xbe, + 0x01, + 0x00, + 0x00, + 0x83, 0x00, 0x05, 0x00, - 0x77, + 0x06, 0x00, 0x00, 0x00, @@ -9454,451 +9034,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0xca, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, + 0x3d, 0x00, 0x04, 0x00, - 0xc8, - 0x01, + 0x06, + 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x00, - 0xcc, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xc9, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xcb, - 0x01, - 0x00, - 0x00, - 0xbd, - 0x01, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xcb, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xca, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xcc, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xcd, - 0x01, - 0x00, - 0x00, - 0xbd, - 0x01, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xcd, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xca, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xca, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xc3, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xc3, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xce, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xcf, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xd0, - 0x01, - 0x00, - 0x00, - 0xbd, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xd1, - 0x01, - 0x00, - 0x00, - 0xcf, - 0x01, - 0x00, - 0x00, - 0xd0, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xd2, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xae, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xd3, - 0x01, - 0x00, - 0x00, - 0xd2, - 0x01, - 0x00, - 0x00, - 0x50, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xd4, - 0x01, - 0x00, - 0x00, - 0xd3, - 0x01, - 0x00, - 0x00, - 0xd3, - 0x01, - 0x00, - 0x00, - 0xd3, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x08, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xd5, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0xce, - 0x01, - 0x00, - 0x00, - 0xd1, - 0x01, - 0x00, - 0x00, - 0xd4, - 0x01, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0xd5, - 0x01, - 0x00, - 0x00, - 0xf9, - 0x00, - 0x02, - 0x00, - 0xb3, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xb3, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xd7, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xd6, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xd8, - 0x01, - 0x00, - 0x00, - 0xd7, - 0x01, - 0x00, - 0x00, 0xba, - 0x00, - 0x05, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0xd9, - 0x01, - 0x00, - 0x00, - 0xd8, - 0x01, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0xf7, - 0x00, - 0x03, - 0x00, - 0xdb, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xfa, - 0x00, - 0x04, - 0x00, - 0xd9, - 0x01, - 0x00, - 0x00, - 0xda, - 0x01, - 0x00, - 0x00, - 0xdb, - 0x01, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0xda, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xdd, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0x28, 0x01, 0x00, 0x00, @@ -9910,78 +9058,14 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xde, + 0xca, 0x01, 0x00, 0x00, - 0xdd, + 0xbe, 0x01, 0x00, 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe0, - 0x01, - 0x00, - 0x00, - 0xde, - 0x01, - 0x00, - 0x00, - 0xdf, - 0x01, - 0x00, - 0x00, - 0x0c, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe1, - 0x01, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0xe0, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0x00, - 0x00, - 0xe1, - 0x01, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, 0x81, 0x00, 0x05, @@ -9990,47 +9074,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xe3, + 0xcb, 0x01, 0x00, 0x00, - 0xe2, + 0xc9, 0x01, 0x00, 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0xdc, - 0x01, - 0x00, - 0x00, - 0xe3, - 0x01, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x74, - 0x00, - 0x00, - 0x00, - 0xe4, - 0x01, - 0x00, - 0x00, - 0x71, - 0x00, - 0x00, - 0x00, - 0xd6, + 0xca, 0x01, 0x00, 0x00, @@ -10042,67 +9094,43 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xe5, + 0xcc, 0x01, 0x00, 0x00, - 0xe4, + 0xb1, 0x01, 0x00, 0x00, - 0x85, + 0x0c, 0x00, - 0x05, + 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe7, + 0xcd, 0x01, 0x00, 0x00, - 0xe5, 0x01, 0x00, 0x00, - 0xe6, + 0x00, + 0x31, + 0x00, + 0x00, + 0x00, + 0xc8, 0x01, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe8, + 0xcb, 0x01, 0x00, 0x00, - 0xdc, - 0x01, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xe9, - 0x01, - 0x00, - 0x00, - 0xe7, - 0x01, - 0x00, - 0x00, - 0xe8, + 0xcc, 0x01, 0x00, 0x00, @@ -10114,51 +9142,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0xea, + 0xce, 0x01, 0x00, 0x00, - 0x63, + 0xa8, 0x00, 0x00, 0x00, - 0xe9, - 0x01, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xeb, - 0x01, - 0x00, - 0x00, - 0x16, - 0x01, - 0x00, - 0x00, - 0x8e, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0xec, - 0x01, - 0x00, - 0x00, - 0xeb, - 0x01, - 0x00, - 0x00, - 0xea, + 0xcd, 0x01, 0x00, 0x00, @@ -10166,11 +9158,239 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, - 0x16, + 0xc5, 0x01, 0x00, 0x00, - 0xec, + 0xce, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xd1, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xd0, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x01, + 0x00, + 0x00, + 0xd1, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd3, + 0x01, + 0x00, + 0x00, + 0xc5, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd4, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x01, + 0x00, + 0x00, + 0xd3, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xcf, + 0x01, + 0x00, + 0x00, + 0xd4, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd5, + 0x01, + 0x00, + 0x00, + 0xcf, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xd6, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x83, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd7, + 0x01, + 0x00, + 0x00, + 0xd6, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xd8, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xd5, + 0x01, + 0x00, + 0x00, + 0xd7, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xd9, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xda, + 0x01, + 0x00, + 0x00, + 0xd9, + 0x01, + 0x00, + 0x00, + 0xd8, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0xda, 0x01, 0x00, 0x00, @@ -10178,7 +9398,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0xdb, + 0x9d, 0x01, 0x00, 0x00, @@ -10186,10 +9406,310 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, + 0x9d, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, 0xdb, 0x01, 0x00, 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x88, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xdc, + 0x01, + 0x00, + 0x00, + 0xdb, + 0x01, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xdd, + 0x01, + 0x00, + 0x00, + 0xdc, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0xdf, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xdd, + 0x01, + 0x00, + 0x00, + 0xde, + 0x01, + 0x00, + 0x00, + 0xdf, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xde, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x07, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xe4, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x1a, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x01, + 0x00, + 0x00, + 0xe3, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xe0, + 0x01, + 0x00, + 0x00, + 0xe4, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xe5, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xe6, + 0x01, + 0x00, + 0x00, + 0xe0, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xe7, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x88, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xe8, + 0x01, + 0x00, + 0x00, + 0xe7, + 0x01, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xe9, + 0x01, + 0x00, + 0x00, + 0xe8, + 0x01, + 0x00, + 0x00, + 0xe8, + 0x01, + 0x00, + 0x00, + 0xe8, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xea, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0xe5, + 0x01, + 0x00, + 0x00, + 0xe6, + 0x01, + 0x00, + 0x00, + 0xe9, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0xea, + 0x01, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0xdf, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xdf, + 0x01, + 0x00, + 0x00, 0x3d, 0x00, 0x04, @@ -10198,19 +9718,39 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, + 0xec, + 0x01, + 0x00, + 0x00, + 0xae, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, 0xed, 0x01, 0x00, 0x00, - 0x16, - 0x01, + 0x2d, 0x00, 0x00, - 0x51, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x83, 0x00, 0x05, 0x00, - 0x06, + 0x07, 0x00, 0x00, 0x00, @@ -10218,23 +9758,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xed, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x51, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0xef, + 0xec, 0x01, 0x00, 0x00, @@ -10242,15 +9766,23 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xeb, 0x01, 0x00, 0x00, + 0xee, + 0x01, 0x00, - 0x51, 0x00, - 0x05, + 0x3d, 0x00, - 0x06, + 0x04, + 0x00, + 0x07, 0x00, 0x00, 0x00, @@ -10258,10 +9790,1390 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, 0x00, - 0xed, + 0xeb, 0x01, 0x00, 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0xf1, + 0x01, + 0x00, + 0x00, + 0xeb, + 0x01, + 0x00, + 0x00, + 0x94, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf2, + 0x01, + 0x00, + 0x00, + 0xf0, + 0x01, + 0x00, + 0x00, + 0xf1, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xf3, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf4, + 0x01, + 0x00, + 0x00, + 0xf3, + 0x01, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf5, + 0x01, + 0x00, + 0x00, + 0xf2, + 0x01, + 0x00, + 0x00, + 0xf4, + 0x01, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf6, + 0x01, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xf5, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0xef, + 0x01, + 0x00, + 0x00, + 0xf6, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x01, + 0x00, + 0x00, + 0xef, + 0x01, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x01, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x01, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x01, + 0x00, + 0x00, + 0xf9, + 0x01, + 0x00, + 0x00, + 0xf8, + 0x01, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0xfa, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0xfc, + 0x01, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xfb, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xfd, + 0x01, + 0x00, + 0x00, + 0xfc, + 0x01, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0xfe, + 0x01, + 0x00, + 0x00, + 0xfd, + 0x01, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0xfe, + 0x01, + 0x00, + 0x00, + 0xff, + 0x01, + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0xff, + 0x01, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x04, + 0x02, + 0x00, + 0x00, + 0x05, + 0x02, + 0x00, + 0x00, + 0x03, + 0x02, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x06, + 0x02, + 0x00, + 0x00, + 0x05, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x08, + 0x02, + 0x00, + 0x00, + 0x06, + 0x02, + 0x00, + 0x00, + 0x07, + 0x02, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x09, + 0x02, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x08, + 0x02, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x01, + 0x02, + 0x00, + 0x00, + 0x09, + 0x02, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x0c, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x02, + 0x00, + 0x00, + 0x01, + 0x02, + 0x00, + 0x00, + 0xb8, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x02, + 0x00, + 0x00, + 0x0d, + 0x02, + 0x00, + 0x00, + 0x07, + 0x02, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0x10, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0x0e, + 0x02, + 0x00, + 0x00, + 0x0f, + 0x02, + 0x00, + 0x00, + 0x12, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x0f, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x11, + 0x02, + 0x00, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x11, + 0x02, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x10, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x12, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x13, + 0x02, + 0x00, + 0x00, + 0x01, + 0x02, + 0x00, + 0x00, + 0xb8, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0x15, + 0x02, + 0x00, + 0x00, + 0x13, + 0x02, + 0x00, + 0x00, + 0x14, + 0x02, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0x17, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0x15, + 0x02, + 0x00, + 0x00, + 0x16, + 0x02, + 0x00, + 0x00, + 0x19, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x16, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x18, + 0x02, + 0x00, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x18, + 0x02, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x17, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x19, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x1a, + 0x02, + 0x00, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x1a, + 0x02, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x17, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x17, + 0x02, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x10, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x10, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1b, + 0x02, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1c, + 0x02, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x02, + 0x00, + 0x00, + 0x0a, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x1e, + 0x02, + 0x00, + 0x00, + 0x1c, + 0x02, + 0x00, + 0x00, + 0x1d, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x02, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0xfb, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x20, + 0x02, + 0x00, + 0x00, + 0x1f, + 0x02, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x21, + 0x02, + 0x00, + 0x00, + 0x20, + 0x02, + 0x00, + 0x00, + 0x20, + 0x02, + 0x00, + 0x00, + 0x20, + 0x02, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x22, + 0x02, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x1b, + 0x02, + 0x00, + 0x00, + 0x1e, + 0x02, + 0x00, + 0x00, + 0x21, + 0x02, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x22, + 0x02, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x24, + 0x02, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x23, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x25, + 0x02, + 0x00, + 0x00, + 0x24, + 0x02, + 0x00, + 0x00, + 0xba, + 0x00, + 0x05, + 0x00, + 0xb9, + 0x00, + 0x00, + 0x00, + 0x26, + 0x02, + 0x00, + 0x00, + 0x25, + 0x02, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xf7, + 0x00, + 0x03, + 0x00, + 0x28, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xfa, + 0x00, + 0x04, + 0x00, + 0x26, + 0x02, + 0x00, + 0x00, + 0x27, + 0x02, + 0x00, + 0x00, + 0x28, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x27, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x02, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x6c, + 0x01, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x02, + 0x00, + 0x00, + 0x2a, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x02, + 0x00, + 0x00, + 0x2b, + 0x02, + 0x00, + 0x00, + 0x2c, + 0x02, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x02, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x02, + 0x00, + 0x00, + 0x2e, + 0x02, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x30, + 0x02, + 0x00, + 0x00, + 0x2f, + 0x02, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x29, + 0x02, + 0x00, + 0x00, + 0x30, + 0x02, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x31, + 0x02, + 0x00, + 0x00, + 0xb4, + 0x00, + 0x00, + 0x00, + 0x23, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x32, + 0x02, + 0x00, + 0x00, + 0x31, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x34, + 0x02, + 0x00, + 0x00, + 0x32, + 0x02, + 0x00, + 0x00, + 0x33, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x35, + 0x02, + 0x00, + 0x00, + 0x29, + 0x02, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x36, + 0x02, + 0x00, + 0x00, + 0x34, + 0x02, + 0x00, + 0x00, + 0x35, + 0x02, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x37, + 0x02, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0x36, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x38, + 0x02, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x39, + 0x02, + 0x00, + 0x00, + 0x38, + 0x02, + 0x00, + 0x00, + 0x37, + 0x02, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x39, + 0x02, + 0x00, + 0x00, + 0xf9, + 0x00, + 0x02, + 0x00, + 0x28, + 0x02, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x28, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x3a, + 0x02, + 0x00, + 0x00, + 0x4e, + 0x01, + 0x00, + 0x00, + 0x51, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x02, + 0x00, + 0x00, + 0x3a, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x51, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3c, + 0x02, + 0x00, + 0x00, + 0x3a, + 0x02, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x51, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x02, + 0x00, + 0x00, + 0x3a, + 0x02, + 0x00, + 0x00, 0x02, 0x00, 0x00, @@ -10270,40 +11182,40 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x07, 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x02, + 0x00, + 0x00, + 0x3b, + 0x02, + 0x00, + 0x00, + 0x3c, + 0x02, + 0x00, + 0x00, + 0x3d, + 0x02, + 0x00, + 0x00, 0xa8, 0x00, 0x00, 0x00, - 0xf1, - 0x01, - 0x00, - 0x00, - 0xee, - 0x01, - 0x00, - 0x00, - 0xef, - 0x01, - 0x00, - 0x00, - 0xf0, - 0x01, - 0x00, - 0x00, - 0x63, - 0x00, - 0x00, - 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xaa, + 0xeb, 0x00, 0x00, 0x00, - 0xf1, - 0x01, + 0x3e, + 0x02, 0x00, 0x00, 0xfd, @@ -10318,750 +11230,10 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x05, 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x03, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x0c, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, - 0x00, - 0x00, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x16, - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x15, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x19, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1a, - 0x00, - 0x00, - 0x00, - 0x19, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x00, - 0x00, - 0x1a, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x16, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x1d, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x24, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x25, - 0x00, - 0x00, - 0x00, - 0x24, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x26, - 0x00, - 0x00, - 0x00, - 0x23, - 0x00, - 0x00, - 0x00, - 0x25, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x28, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x29, - 0x00, - 0x00, - 0x00, - 0x28, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2a, - 0x00, - 0x00, - 0x00, - 0x27, - 0x00, - 0x00, - 0x00, - 0x29, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x00, - 0x00, - 0x26, - 0x00, - 0x00, - 0x00, - 0x2a, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x2d, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x2d, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x2f, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x30, - 0x00, - 0x00, - 0x00, - 0x2b, - 0x00, - 0x00, - 0x00, - 0x2f, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x30, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x32, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x34, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x36, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x36, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x00, - 0x00, - 0x35, - 0x00, - 0x00, - 0x00, - 0x37, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x34, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3c, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x00, - 0x00, - 0x85, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x00, - 0x00, - 0x3a, - 0x00, - 0x00, - 0x00, - 0x3c, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x00, - 0x00, - 0x39, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x00, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x40, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x31, - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00, - 0x00, - 0xfe, - 0x00, - 0x02, - 0x00, - 0x40, - 0x00, - 0x00, - 0x00, - 0x38, - 0x00, - 0x01, - 0x00, - 0x36, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, 0x0e, 0x00, 0x00, @@ -11070,7 +11242,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x09, + 0x0b, 0x00, 0x00, 0x00, @@ -11082,6 +11254,18 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x37, + 0x00, + 0x03, + 0x00, + 0x0a, + 0x00, + 0x00, + 0x00, 0x0d, 0x00, 0x00, @@ -11098,11 +11282,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x13, + 0x08, 0x00, 0x00, 0x00, - 0x43, + 0x19, 0x00, 0x00, 0x00, @@ -11114,11 +11298,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x13, + 0x24, 0x00, 0x00, 0x00, - 0x46, + 0x25, 0x00, 0x00, 0x00, @@ -11130,11 +11314,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x13, + 0x24, 0x00, 0x00, 0x00, - 0x4a, + 0x2f, 0x00, 0x00, 0x00, @@ -11142,11 +11326,43 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x41, + 0x3b, 0x00, - 0x05, + 0x04, 0x00, - 0x13, + 0x24, + 0x00, + 0x00, + 0x00, + 0x32, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x37, + 0x00, + 0x00, + 0x00, + 0x38, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x37, 0x00, 0x00, 0x00, @@ -11154,11 +11370,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x12, + 0x07, 0x00, 0x00, 0x00, @@ -11166,111 +11378,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x43, - 0x00, - 0x00, - 0x00, - 0x45, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x48, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x46, - 0x00, - 0x00, - 0x00, - 0x49, - 0x00, - 0x00, - 0x00, - 0x41, - 0x00, - 0x05, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x4b, - 0x00, - 0x00, - 0x00, - 0x0d, + 0x1b, 0x00, 0x00, 0x00, @@ -11278,39 +11386,59 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x3d, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x64, 0x00, 0x04, 0x00, - 0x06, + 0x1a, 0x00, 0x00, 0x00, - 0x4c, + 0x20, 0x00, 0x00, 0x00, - 0x4b, + 0x1e, 0x00, 0x00, 0x00, - 0x83, + 0x67, 0x00, 0x05, 0x00, - 0x06, + 0x21, 0x00, 0x00, 0x00, - 0x4d, + 0x22, 0x00, 0x00, 0x00, - 0x4c, + 0x20, 0x00, 0x00, 0x00, - 0x2c, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x6f, + 0x00, + 0x04, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x22, 0x00, 0x00, 0x00, @@ -11318,19 +11446,599 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x03, 0x00, + 0x19, + 0x00, + 0x00, + 0x00, + 0x23, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x28, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x29, + 0x00, + 0x00, + 0x00, + 0x28, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x00, + 0x00, + 0x00, + 0x19, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x00, + 0x00, + 0x00, + 0x29, + 0x00, + 0x00, + 0x00, + 0x2b, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x25, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x30, + 0x00, + 0x00, + 0x00, + 0x25, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x31, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0x30, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x31, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x33, + 0x00, + 0x00, + 0x00, + 0x25, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x34, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x35, + 0x00, + 0x00, + 0x00, + 0x33, + 0x00, + 0x00, + 0x00, + 0x34, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x32, + 0x00, + 0x00, + 0x00, + 0x35, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x39, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3a, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x00, + 0x00, + 0x3a, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x3c, + 0x00, + 0x00, + 0x00, + 0x19, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x00, + 0x00, + 0x3c, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x40, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x00, + 0x00, + 0x40, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x42, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x00, + 0x00, + 0x57, + 0x00, + 0x05, + 0x00, + 0x36, + 0x00, + 0x00, + 0x00, + 0x43, + 0x00, + 0x00, + 0x00, + 0x39, + 0x00, + 0x00, + 0x00, + 0x42, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x38, + 0x00, + 0x00, + 0x00, + 0x43, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x45, + 0x00, + 0x00, + 0x00, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x46, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x48, + 0x00, + 0x00, + 0x00, + 0x46, + 0x00, + 0x00, + 0x00, + 0x47, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x49, + 0x00, + 0x00, + 0x00, + 0x19, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x4b, + 0x00, + 0x00, + 0x00, + 0x48, + 0x00, + 0x00, + 0x00, + 0x4a, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x4c, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x3d, + 0x4c, 0x00, - 0x04, 0x00, - 0x06, + 0x00, + 0x50, + 0x00, + 0x05, + 0x00, + 0x07, 0x00, 0x00, 0x00, @@ -11338,35 +12046,19 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x43, + 0x4b, 0x00, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, + 0x4d, 0x00, 0x00, 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x4a, - 0x00, - 0x00, - 0x00, - 0x85, + 0x57, 0x00, 0x05, 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x51, + 0x36, 0x00, 0x00, 0x00, @@ -11374,14 +12066,66 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, + 0x45, + 0x00, + 0x00, + 0x00, + 0x4e, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x44, + 0x00, + 0x00, + 0x00, + 0x4f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x09, + 0x00, + 0x00, + 0x00, 0x50, 0x00, 0x00, 0x00, - 0x81, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x41, 0x00, 0x05, 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x51, + 0x00, + 0x00, + 0x00, + 0x38, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, 0x06, 0x00, 0x00, @@ -11390,10 +12134,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x4e, - 0x00, - 0x00, - 0x00, 0x51, 0x00, 0x00, @@ -11402,7 +12142,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x04, 0x00, - 0x06, + 0x09, 0x00, 0x00, 0x00, @@ -11410,35 +12150,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x43, + 0x0d, 0x00, 0x00, 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x55, - 0x00, - 0x00, - 0x00, - 0x46, - 0x00, - 0x00, - 0x00, - 0x85, + 0x41, 0x00, 0x05, 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x56, + 0x24, 0x00, 0x00, 0x00, @@ -11446,19 +12166,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x55, - 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x57, + 0x44, 0x00, 0x00, 0x00, @@ -11466,10 +12174,6 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x56, - 0x00, - 0x00, - 0x00, 0x3d, 0x00, 0x04, @@ -11478,51 +12182,131 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x59, + 0x55, 0x00, 0x00, 0x00, - 0x4a, + 0x54, 0x00, 0x00, 0x00, - 0x85, + 0x3d, 0x00, - 0x05, + 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5a, + 0x56, 0x00, 0x00, 0x00, - 0x58, + 0x32, 0x00, 0x00, 0x00, - 0x59, + 0x0c, 0x00, - 0x00, - 0x00, - 0x83, - 0x00, - 0x05, + 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, - 0x5a, + 0x01, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x52, + 0x00, + 0x00, + 0x00, + 0x55, + 0x00, + 0x00, + 0x00, + 0x56, + 0x00, + 0x00, + 0x00, + 0xfe, + 0x00, + 0x02, + 0x00, + 0x57, + 0x00, + 0x00, + 0x00, + 0x38, + 0x00, + 0x01, + 0x00, + 0x36, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x14, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x12, + 0x00, + 0x00, + 0x00, + 0x37, + 0x00, + 0x03, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x15, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x5b, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x27, 0x00, 0x00, 0x00, @@ -11538,23 +12322,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x43, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x5e, - 0x00, - 0x00, - 0x00, - 0x46, + 0x5b, 0x00, 0x00, 0x00, @@ -11566,18 +12334,74 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x5f, - 0x00, - 0x00, - 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5a, + 0x00, + 0x00, + 0x00, + 0x5c, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x5f, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x60, + 0x00, + 0x00, + 0x00, + 0x5f, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x61, + 0x00, + 0x00, + 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x60, + 0x00, + 0x00, + 0x00, 0x81, 0x00, 0x05, @@ -11586,23 +12410,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x60, + 0x62, 0x00, 0x00, 0x00, - 0x5c, - 0x00, - 0x00, - 0x00, - 0x5f, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x06, - 0x00, - 0x07, + 0x5d, 0x00, 0x00, 0x00, @@ -11610,47 +12422,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x52, + 0x41, 0x00, + 0x05, 0x00, - 0x00, - 0x5b, - 0x00, - 0x00, - 0x00, - 0x60, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x64, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x62, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x06, - 0x00, - 0x07, + 0x24, 0x00, 0x00, 0x00, @@ -11658,7 +12434,39 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x63, + 0x13, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x66, + 0x00, + 0x00, + 0x00, + 0x65, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x67, 0x00, 0x00, 0x00, @@ -11666,7 +12474,1135 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x63, + 0x66, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x68, + 0x00, + 0x00, + 0x00, + 0x62, + 0x00, + 0x00, + 0x00, + 0x67, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6b, + 0x00, + 0x00, + 0x00, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6c, + 0x00, + 0x00, + 0x00, + 0x69, + 0x00, + 0x00, + 0x00, + 0x6b, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x6e, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x6f, + 0x00, + 0x00, + 0x00, + 0x6e, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x70, + 0x00, + 0x00, + 0x00, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x6f, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x71, + 0x00, + 0x00, + 0x00, + 0x6c, + 0x00, + 0x00, + 0x00, + 0x70, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x72, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x73, + 0x00, + 0x00, + 0x00, + 0x72, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x74, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x73, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x75, + 0x00, + 0x00, + 0x00, + 0x71, + 0x00, + 0x00, + 0x00, + 0x74, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x76, + 0x00, + 0x00, + 0x00, + 0x75, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x77, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x78, + 0x00, + 0x00, + 0x00, + 0x77, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x79, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x78, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x7b, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7c, + 0x00, + 0x00, + 0x00, + 0x7b, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7d, + 0x00, + 0x00, + 0x00, + 0x7a, + 0x00, + 0x00, + 0x00, + 0x7c, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x7e, + 0x00, + 0x00, + 0x00, + 0x79, + 0x00, + 0x00, + 0x00, + 0x7d, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00, + 0x00, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x82, + 0x00, + 0x00, + 0x00, + 0x7f, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x00, + 0x00, + 0x7e, + 0x00, + 0x00, + 0x00, + 0x82, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x84, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x00, + 0x00, + 0x68, + 0x00, + 0x00, + 0x00, + 0x76, + 0x00, + 0x00, + 0x00, + 0x84, + 0x00, + 0x00, + 0x00, + 0xfe, + 0x00, + 0x02, + 0x00, + 0x85, + 0x00, + 0x00, + 0x00, + 0x38, + 0x00, + 0x01, + 0x00, + 0x36, + 0x00, + 0x05, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x17, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x12, + 0x00, + 0x00, + 0x00, + 0x37, + 0x00, + 0x03, + 0x00, + 0x11, + 0x00, + 0x00, + 0x00, + 0x16, + 0x00, + 0x00, + 0x00, + 0xf8, + 0x00, + 0x02, + 0x00, + 0x18, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x8b, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x3b, + 0x00, + 0x04, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x89, + 0x00, + 0x00, + 0x00, + 0x16, + 0x00, + 0x00, + 0x00, + 0x27, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x8a, + 0x00, + 0x00, + 0x00, + 0x89, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x88, + 0x00, + 0x00, + 0x00, + 0x8a, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x8c, + 0x00, + 0x00, + 0x00, + 0x16, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x8d, + 0x00, + 0x00, + 0x00, + 0x8c, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x00, + 0x00, + 0x8d, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x8b, + 0x00, + 0x00, + 0x00, + 0x8e, + 0x00, + 0x00, + 0x00, + 0x41, + 0x00, + 0x05, + 0x00, + 0x24, + 0x00, + 0x00, + 0x00, + 0x90, + 0x00, + 0x00, + 0x00, + 0x16, + 0x00, + 0x00, + 0x00, + 0x64, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x91, + 0x00, + 0x00, + 0x00, + 0x90, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x92, + 0x00, + 0x00, + 0x00, + 0x91, + 0x00, + 0x00, + 0x00, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x3e, + 0x00, + 0x03, + 0x00, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x92, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x93, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x96, + 0x00, + 0x00, + 0x00, + 0x94, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x97, + 0x00, + 0x00, + 0x00, + 0x93, + 0x00, + 0x00, + 0x00, + 0x96, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x98, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9a, + 0x00, + 0x00, + 0x00, + 0x8b, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9b, + 0x00, + 0x00, + 0x00, + 0x99, + 0x00, + 0x00, + 0x00, + 0x9a, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9c, + 0x00, + 0x00, + 0x00, + 0x98, + 0x00, + 0x00, + 0x00, + 0x9b, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9e, + 0x00, + 0x00, + 0x00, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x9f, + 0x00, + 0x00, + 0x00, + 0x9d, + 0x00, + 0x00, + 0x00, + 0x9e, + 0x00, + 0x00, + 0x00, + 0x83, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa0, + 0x00, + 0x00, + 0x00, + 0x9c, + 0x00, + 0x00, + 0x00, + 0x9f, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa1, + 0x00, + 0x00, + 0x00, + 0x88, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x00, + 0x04, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa3, + 0x00, + 0x00, + 0x00, + 0x8b, + 0x00, + 0x00, + 0x00, + 0x85, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa4, + 0x00, + 0x00, + 0x00, + 0xa2, + 0x00, + 0x00, + 0x00, + 0xa3, + 0x00, + 0x00, + 0x00, + 0x81, + 0x00, + 0x05, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0xa5, + 0x00, + 0x00, + 0x00, + 0xa1, + 0x00, + 0x00, + 0x00, + 0xa4, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xa6, + 0x00, + 0x00, + 0x00, + 0x97, + 0x00, + 0x00, + 0x00, + 0xa0, + 0x00, + 0x00, + 0x00, + 0xa5, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xa9, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0xa7, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x06, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0xaa, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xa8, + 0x00, + 0x00, + 0x00, + 0xa8, 0x00, 0x00, 0x00, @@ -11674,11 +13610,11 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x08, 0x00, - 0x07, + 0x10, 0x00, 0x00, 0x00, - 0x66, + 0xab, 0x00, 0x00, 0x00, @@ -11690,15 +13626,15 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x00, 0x00, - 0x61, + 0xa6, 0x00, 0x00, 0x00, - 0x64, + 0xa9, 0x00, 0x00, 0x00, - 0x65, + 0xaa, 0x00, 0x00, 0x00, @@ -11706,7 +13642,7 @@ static const uint8_t kpostfx_frag_spv[] = { 0x00, 0x02, 0x00, - 0x66, + 0xab, 0x00, 0x00, 0x00, @@ -11715,4 +13651,4 @@ static const uint8_t kpostfx_frag_spv[] = { 0x01, 0x00, }; -static const size_t kpostfx_frag_spv_size = 11712; +static const size_t kpostfx_frag_spv_size = 13648; diff --git a/source/core/rendering/sdl3gpu/spv/upscale_frag_spv.h b/source/core/rendering/sdl3gpu/spv/upscale_frag_spv.h deleted file mode 100644 index 46e7c30..0000000 --- a/source/core/rendering/sdl3gpu/spv/upscale_frag_spv.h +++ /dev/null @@ -1,634 +0,0 @@ -#pragma once -#include -#include -static const uint8_t kupscale_frag_spv[] = { - 0x03, - 0x02, - 0x23, - 0x07, - 0x00, - 0x00, - 0x01, - 0x00, - 0x0b, - 0x00, - 0x0d, - 0x00, - 0x14, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x02, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x06, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x47, - 0x4c, - 0x53, - 0x4c, - 0x2e, - 0x73, - 0x74, - 0x64, - 0x2e, - 0x34, - 0x35, - 0x30, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0f, - 0x00, - 0x07, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x03, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0xc2, - 0x01, - 0x00, - 0x00, - 0x04, - 0x00, - 0x0a, - 0x00, - 0x47, - 0x4c, - 0x5f, - 0x47, - 0x4f, - 0x4f, - 0x47, - 0x4c, - 0x45, - 0x5f, - 0x63, - 0x70, - 0x70, - 0x5f, - 0x73, - 0x74, - 0x79, - 0x6c, - 0x65, - 0x5f, - 0x6c, - 0x69, - 0x6e, - 0x65, - 0x5f, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x00, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x47, - 0x4c, - 0x5f, - 0x47, - 0x4f, - 0x4f, - 0x47, - 0x4c, - 0x45, - 0x5f, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x5f, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x05, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x5f, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x73, - 0x63, - 0x65, - 0x6e, - 0x65, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x04, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x76, - 0x5f, - 0x75, - 0x76, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x22, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x47, - 0x00, - 0x04, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x1e, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x13, - 0x00, - 0x02, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x21, - 0x00, - 0x03, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x16, - 0x00, - 0x03, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x04, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x19, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x1b, - 0x00, - 0x03, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x0a, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x0c, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x0c, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x17, - 0x00, - 0x04, - 0x00, - 0x0f, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x04, - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x0f, - 0x00, - 0x00, - 0x00, - 0x3b, - 0x00, - 0x04, - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x36, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0xf8, - 0x00, - 0x02, - 0x00, - 0x05, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x0b, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x00, - 0x00, - 0x0d, - 0x00, - 0x00, - 0x00, - 0x3d, - 0x00, - 0x04, - 0x00, - 0x0f, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x57, - 0x00, - 0x05, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0x0e, - 0x00, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x3e, - 0x00, - 0x03, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x13, - 0x00, - 0x00, - 0x00, - 0xfd, - 0x00, - 0x01, - 0x00, - 0x38, - 0x00, - 0x01, - 0x00, -}; -static const size_t kupscale_frag_spv_size = 628; diff --git a/source/core/rendering/shader_backend.hpp b/source/core/rendering/shader_backend.hpp index def2c60..7414aaa 100644 --- a/source/core/rendering/shader_backend.hpp +++ b/source/core/rendering/shader_backend.hpp @@ -4,7 +4,6 @@ #include #include -#include namespace Rendering { @@ -19,12 +18,19 @@ namespace Rendering { struct PostFXParams { float vignette = 0.0F; // Intensidad de la viñeta float scanlines = 0.0F; // Intensidad de las scanlines - float chroma = 0.0F; // Aberración cromática + // Aberració cromàtica — varia entre min i max via sinusoidal; si coincideixen + // queda estàtica. min > 0 garanteix que la imatge mai sigui lliure de chroma. + float chroma_min = 0.0F; + float chroma_max = 0.0F; float mask = 0.0F; // Máscara de fósforo RGB float gamma = 0.0F; // Corrección gamma (blend 0=off, 1=full) float curvature = 0.0F; // Curvatura barrel CRT float bleeding = 0.0F; // Sangrado de color NTSC float flicker = 0.0F; // Parpadeo de fósforo CRT ~50 Hz + // Forma de les scanlines — 3 subpíxels per fila lògica per defecte. + float scan_dark_ratio = 0.333F; // fracció obscura (1/3) + float scan_dark_floor = 0.42F; // brillantor subfila fosca + float scan_edge_soft = 1.0F; // 0 = step dur; 1 = suavitzat 1 px físic }; /** @@ -110,34 +116,6 @@ namespace Rendering { */ virtual void setScaleMode(bool /*integer_scale*/) {} - /** - * @brief Establece el factor de supersampling (1 = off, 3 = 3× SS) - * Con factor > 1, la textura GPU se crea a game×factor resolución y - * las scanlines se hornean en CPU (uploadPixels). El sampler usa LINEAR. - */ - virtual void setOversample(int /*factor*/) {} - - /** - * @brief Activa/desactiva interpolación LINEAR en el paso de upscale (SS). - * Por defecto NEAREST (false). Solo tiene efecto con supersampling activo. - */ - virtual void setLinearUpscale(bool /*linear*/) {} - [[nodiscard]] virtual auto isLinearUpscale() const -> bool { return false; } - - /** - * @brief Selecciona el algoritmo de downscale tras el PostFX (SS activo). - * 0 = bilinear legacy (comportamiento actual, sin textura intermedia), - * 1 = Lanczos2 (ventana 2, ~25 muestras), 2 = Lanczos3 (ventana 3, ~49 muestras). - */ - virtual void setDownscaleAlgo(int /*algo*/) {} - [[nodiscard]] virtual auto getDownscaleAlgo() const -> int { return 0; } - - /** - * @brief Devuelve las dimensiones de la textura de supersampling. - * @return Par (ancho, alto) en píxeles; (0, 0) si SS está desactivado. - */ - [[nodiscard]] virtual auto getSsTextureSize() const -> std::pair { return {0, 0}; } - /** * @brief Verifica si el backend está usando aceleración por hardware * @return true si usa aceleración (OpenGL/Metal/Vulkan) diff --git a/source/game/defaults.hpp b/source/game/defaults.hpp index 147489b..af5d08c 100644 --- a/source/game/defaults.hpp +++ b/source/game/defaults.hpp @@ -26,13 +26,10 @@ namespace Defaults::Video { constexpr Screen::Filter FILTER = Screen::Filter::NEAREST; // Filtro por defecto constexpr bool VERTICAL_SYNC = true; // Vsync activado por defecto constexpr bool SHADER_ENABLED = false; // Shaders de post-procesado desactivados por defecto - constexpr bool SUPERSAMPLING = false; // Supersampling desactivado por defecto constexpr bool INTEGER_SCALE = true; // Escalado entero activado por defecto constexpr bool KEEP_ASPECT = true; // Mantener aspecto activado por defecto constexpr const char* PALETTE_NAME = "zx-spectrum"; // Paleta por defecto constexpr const char* PALETTE_SORT = "original"; // Modo de ordenación de paleta por defecto - constexpr bool LINEAR_UPSCALE = false; // Upscale NEAREST por defecto - constexpr int DOWNSCALE_ALGO = 1; // Downscale Lanczos2 por defecto constexpr bool GPU_ACCELERATION = true; // Aceleración GPU activada por defecto } // namespace Defaults::Video diff --git a/source/game/options.cpp b/source/game/options.cpp index 6d4fe52..7738945 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -325,31 +325,6 @@ namespace Options { } } - // Helper: carga la sección supersampling desde YAML - void loadSupersamplingConfigFromYaml(const fkyaml::node& ss_node) { - if (ss_node.contains("enabled")) { - try { - video.supersampling.enabled = ss_node["enabled"].get_value(); - } catch (...) { - video.supersampling.enabled = Defaults::Video::SUPERSAMPLING; - } - } - if (ss_node.contains("linear_upscale")) { - try { - video.supersampling.linear_upscale = ss_node["linear_upscale"].get_value(); - } catch (...) { - video.supersampling.linear_upscale = Defaults::Video::LINEAR_UPSCALE; - } - } - if (ss_node.contains("downscale_algo")) { - try { - video.supersampling.downscale_algo = ss_node["downscale_algo"].get_value(); - } catch (...) { - video.supersampling.downscale_algo = Defaults::Video::DOWNSCALE_ALGO; - } - } - } - // Helper: carga la sección shader desde YAML void loadShaderConfigFromYaml(const fkyaml::node& sh_node) { if (sh_node.contains("enabled")) { @@ -439,9 +414,6 @@ namespace Options { if (vid.contains("gpu")) { loadGPUConfigFromYaml(vid["gpu"]); } - if (vid.contains("supersampling")) { - loadSupersamplingConfigFromYaml(vid["supersampling"]); - } if (vid.contains("shader")) { loadShaderConfigFromYaml(vid["shader"]); } @@ -787,10 +759,6 @@ namespace Options { file << " gpu:\n"; file << " acceleration: " << (video.gpu.acceleration ? "true" : "false") << " # Usar aceleración hardware GPU (false = SDL fallback)\n"; file << " preferred_driver: \"" << video.gpu.preferred_driver << "\" # Driver GPU específico (empty = auto, aplica solo si gpu_acceleration: true)\n"; - file << " supersampling:\n"; - file << " enabled: " << (video.supersampling.enabled ? "true" : "false") << "\n"; - file << " linear_upscale: " << (video.supersampling.linear_upscale ? "true" : "false") << "\n"; - file << " downscale_algo: " << video.supersampling.downscale_algo << " # 0=bilinear, 1=Lanczos2, 2=Lanczos3\n"; file << " shader:\n"; file << " enabled: " << (video.shader.enabled ? "true" : "false") << "\n"; file << " current_shader: " << (video.shader.current_shader == Rendering::ShaderType::CRTPI ? "crtpi" : "postfx") << "\n"; @@ -922,14 +890,26 @@ namespace Options { } parseFloatField(p, "vignette", preset.vignette); parseFloatField(p, "scanlines", preset.scanlines); - parseFloatField(p, "chroma", preset.chroma); + // Compat: 'chroma' antic → assignar a min i max + if (p.contains("chroma")) { + try { + const auto LEGACY = p["chroma"].get_value(); + preset.chroma_min = LEGACY; + preset.chroma_max = LEGACY; + } catch (...) { /* @INTENTIONAL: camp malformat → conservem defaults */ + } + } + parseFloatField(p, "chroma_min", preset.chroma_min); + parseFloatField(p, "chroma_max", preset.chroma_max); parseFloatField(p, "mask", preset.mask); parseFloatField(p, "gamma", preset.gamma); parseFloatField(p, "curvature", preset.curvature); parseFloatField(p, "bleeding", preset.bleeding); parseFloatField(p, "flicker", preset.flicker); - // Nota: 'supersampling' era un campo por-preset (eliminado). Si existe - // en el fichero del usuario se ignora silenciosamente (compatible). + parseFloatField(p, "scan_dark_ratio", preset.scan_dark_ratio); + parseFloatField(p, "scan_dark_floor", preset.scan_dark_floor); + parseFloatField(p, "scan_edge_soft", preset.scan_edge_soft); + // Nota: 'supersampling' era un camp obsolet — s'ignora silenciosament. postfx_presets.push_back(preset); } } @@ -967,82 +947,47 @@ namespace Options { file << "# Each preset defines the intensity of post-processing effects (0.0 to 1.0).\n"; file << "# vignette: screen darkening at the edges\n"; file << "# scanlines: horizontal scanline effect\n"; - file << "# chroma: chromatic aberration (RGB color fringing)\n"; + file << "# chroma_min / chroma_max: chromatic aberration. Si min == max, queda estàtic.\n"; file << "# mask: phosphor dot mask (RGB subpixel pattern)\n"; file << "# gamma: gamma correction input 2.4 / output 2.2\n"; file << "# curvature: CRT barrel distortion\n"; file << "# bleeding: NTSC horizontal colour bleeding\n"; - file << "# flicker: phosphor CRT flicker ~50 Hz (0.0 = off, 1.0 = max)\n"; - file << "# Note: supersampling is a global toggle in config.yaml, not per-preset.\n"; + file << "# flicker: phosphor CRT flicker ~50 Hz\n"; + file << "# scan_dark_ratio / scan_dark_floor / scan_edge_soft: forma de les scanlines.\n"; file << "\n"; + + const std::vector DEFAULTS = { + {.name = "CRT", .vignette = 0.6F, .scanlines = 0.7F, .chroma_min = 0.15F, .chroma_max = 0.15F, .mask = 0.6F, .gamma = 0.8F, .curvature = 0.0F, .bleeding = 0.0F, .flicker = 0.0F}, + {.name = "NTSC", .vignette = 0.4F, .scanlines = 0.5F, .chroma_min = 0.2F, .chroma_max = 0.2F, .mask = 0.4F, .gamma = 0.5F, .curvature = 0.0F, .bleeding = 0.6F, .flicker = 0.0F}, + {.name = "CURVED", .vignette = 0.5F, .scanlines = 0.6F, .chroma_min = 0.1F, .chroma_max = 0.1F, .mask = 0.5F, .gamma = 0.7F, .curvature = 0.8F, .bleeding = 0.0F, .flicker = 0.0F}, + {.name = "SCANLINES", .vignette = 0.0F, .scanlines = 0.8F, .chroma_min = 0.0F, .chroma_max = 0.0F, .mask = 0.0F, .gamma = 0.0F, .curvature = 0.0F, .bleeding = 0.0F, .flicker = 0.0F}, + {.name = "SUBTLE", .vignette = 0.3F, .scanlines = 0.4F, .chroma_min = 0.05F, .chroma_max = 0.05F, .mask = 0.0F, .gamma = 0.3F, .curvature = 0.0F, .bleeding = 0.0F, .flicker = 0.0F}, + {.name = "CRT LIVE", .vignette = 0.5F, .scanlines = 0.6F, .chroma_min = 0.1F, .chroma_max = 0.3F, .mask = 0.3F, .gamma = 0.4F, .curvature = 0.3F, .bleeding = 0.4F, .flicker = 0.8F}, + }; + file << "presets:\n"; - file << " - name: \"CRT\"\n"; - file << " vignette: 0.6\n"; - file << " scanlines: 0.7\n"; - file << " chroma: 0.15\n"; - file << " mask: 0.6\n"; - file << " gamma: 0.8\n"; - file << " curvature: 0.0\n"; - file << " bleeding: 0.0\n"; - file << " flicker: 0.0\n"; - file << " - name: \"NTSC\"\n"; - file << " vignette: 0.4\n"; - file << " scanlines: 0.5\n"; - file << " chroma: 0.2\n"; - file << " mask: 0.4\n"; - file << " gamma: 0.5\n"; - file << " curvature: 0.0\n"; - file << " bleeding: 0.6\n"; - file << " flicker: 0.0\n"; - file << " - name: \"CURVED\"\n"; - file << " vignette: 0.5\n"; - file << " scanlines: 0.6\n"; - file << " chroma: 0.1\n"; - file << " mask: 0.5\n"; - file << " gamma: 0.7\n"; - file << " curvature: 0.8\n"; - file << " bleeding: 0.0\n"; - file << " flicker: 0.0\n"; - file << " - name: \"SCANLINES\"\n"; - file << " vignette: 0.0\n"; - file << " scanlines: 0.8\n"; - file << " chroma: 0.0\n"; - file << " mask: 0.0\n"; - file << " gamma: 0.0\n"; - file << " curvature: 0.0\n"; - file << " bleeding: 0.0\n"; - file << " flicker: 0.0\n"; - file << " - name: \"SUBTLE\"\n"; - file << " vignette: 0.3\n"; - file << " scanlines: 0.4\n"; - file << " chroma: 0.05\n"; - file << " mask: 0.0\n"; - file << " gamma: 0.3\n"; - file << " curvature: 0.0\n"; - file << " bleeding: 0.0\n"; - file << " flicker: 0.0\n"; - file << " - name: \"CRT LIVE\"\n"; - file << " vignette: 0.5\n"; - file << " scanlines: 0.6\n"; - file << " chroma: 0.3\n"; - file << " mask: 0.3\n"; - file << " gamma: 0.4\n"; - file << " curvature: 0.3\n"; - file << " bleeding: 0.4\n"; - file << " flicker: 0.8\n"; + for (const auto& preset : DEFAULTS) { + file << " - name: \"" << preset.name << "\"\n"; + file << " vignette: " << preset.vignette << "\n"; + file << " scanlines: " << preset.scanlines << "\n"; + file << " chroma_min: " << preset.chroma_min << "\n"; + file << " chroma_max: " << preset.chroma_max << "\n"; + file << " mask: " << preset.mask << "\n"; + file << " gamma: " << preset.gamma << "\n"; + file << " curvature: " << preset.curvature << "\n"; + file << " bleeding: " << preset.bleeding << "\n"; + file << " flicker: " << preset.flicker << "\n"; + file << " scan_dark_ratio: " << preset.scan_dark_ratio << "\n"; + file << " scan_dark_floor: " << preset.scan_dark_floor << "\n"; + file << " scan_edge_soft: " << preset.scan_edge_soft << "\n"; + } file.close(); std::cout << "PostFX file created with defaults: " << postfx_file_path << '\n'; // Cargar los presets recién creados - postfx_presets.clear(); - postfx_presets.push_back({"CRT", 0.6F, 0.7F, 0.3F, 0.6F, 0.8F, 0.0F, 0.0F, 0.0F}); - postfx_presets.push_back({"NTSC", 0.4F, 0.5F, 0.2F, 0.4F, 0.5F, 0.0F, 0.6F, 0.0F}); - postfx_presets.push_back({"CURVED", 0.5F, 0.6F, 0.1F, 0.5F, 0.7F, 0.8F, 0.0F, 0.0F}); - postfx_presets.push_back({"SCANLINES", 0.0F, 0.8F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}); - postfx_presets.push_back({"SUBTLE", 0.3F, 0.4F, 0.05F, 0.0F, 0.3F, 0.0F, 0.0F, 0.0F}); - postfx_presets.push_back({"CRT LIVE", 0.5F, 0.6F, 0.3F, 0.3F, 0.4F, 0.3F, 0.4F, 0.8F}); + postfx_presets = DEFAULTS; video.shader.current_postfx_preset = 0; return true; diff --git a/source/game/options.hpp b/source/game/options.hpp index 422d1da..1f11ae1 100644 --- a/source/game/options.hpp +++ b/source/game/options.hpp @@ -81,13 +81,6 @@ namespace Options { std::string preferred_driver; // Driver GPU preferido; vacío = auto. Aplica en el próximo arranque. }; - // Estructura para las opciones de supersampling - struct Supersampling { - bool enabled{Defaults::Video::SUPERSAMPLING}; // Indica si el supersampling 3× está activo - bool linear_upscale{Defaults::Video::LINEAR_UPSCALE}; // Upscale LINEAR (true) o NEAREST (false) - int downscale_algo{Defaults::Video::DOWNSCALE_ALGO}; // 0=bilinear, 1=Lanczos2, 2=Lanczos3 - }; - // Estructura para las opciones de shader (dentro de Video) struct ShaderConfig { bool enabled{Defaults::Video::SHADER_ENABLED}; // Indica si se usan shaders de post-procesado @@ -110,7 +103,6 @@ namespace Options { std::string info; // Información sobre el modo de vídeo Border border{}; // Borde de la pantalla GPU gpu{}; // Opciones de aceleración GPU - Supersampling supersampling{}; // Opciones de supersampling ShaderConfig shader{}; // Opciones de shader post-procesado }; @@ -151,15 +143,20 @@ namespace Options { // Estructura para un preset de PostFX struct PostFXPreset { - std::string name; // Nombre del preset - float vignette{0.6F}; // Intensidad de la viñeta (0.0 = ninguna, 1.0 = máxima) - float scanlines{0.7F}; // Intensidad de las scanlines (0.0 = desactivadas, 1.0 = máximas) - float chroma{0.15F}; // Intensidad de la aberración cromática (0.0 = ninguna, 1.0 = máxima) - float mask{0.0F}; // Intensidad de la máscara de fósforo RGB (0.0 = desactivada, 1.0 = máxima) - float gamma{0.0F}; // Corrección gamma input 2.4 / output 2.2 (0.0 = off, 1.0 = plena) - float curvature{0.0F}; // Distorsión barrel CRT (0.0 = plana, 1.0 = máxima curvatura) - float bleeding{0.0F}; // Sangrado de color NTSC horizontal Y/C (0.0 = off, 1.0 = máximo) - float flicker{0.0F}; // Parpadeo de fósforo CRT ~50 Hz (0.0 = off, 1.0 = máximo) + std::string name; // Nombre del preset + float vignette{0.6F}; // Intensidad de la viñeta (0.0 = ninguna, 1.0 = máxima) + float scanlines{0.7F}; // Intensidad de las scanlines + float chroma_min{0.15F}; // Aberració cromàtica mínima (sempre present) + float chroma_max{0.15F}; // Si != chroma_min → pulsa sinusoidalment + float mask{0.0F}; // Máscara de fósforo RGB + float gamma{0.0F}; // Corrección gamma (0=off, 1=full) + float curvature{0.0F}; // Distorsión barrel CRT + float bleeding{0.0F}; // Sangrado de color NTSC + float flicker{0.0F}; // Parpadeo de fósforo ~50 Hz + // Forma de les scanlines — 3 subpíxels per fila lògica per defecte. + float scan_dark_ratio{0.333F}; + float scan_dark_floor{0.42F}; + float scan_edge_soft{1.0F}; }; // Estructura para un preset del shader CRT-Pi diff --git a/source/game/ui/console_commands.cpp b/source/game/ui/console_commands.cpp index ade3c39..606046b 100644 --- a/source/game/ui/console_commands.cpp +++ b/source/game/ui/console_commands.cpp @@ -54,81 +54,6 @@ static auto boolToggle( // ── Command handlers ───────────────────────────────────────────────────────── -// SS [ON|OFF|SIZE|UPSCALE [NEAREST|LINEAR]|DOWNSCALE [BILINEAR|LANCZOS2|LANCZOS3]] -// SS SIZE — dimensions de la textura supersampling activa -static auto cmdSsSize() -> std::string { - if (!Options::video.supersampling.enabled) { return "Supersampling is OFF: no texture"; } - const auto [w, h] = Screen::get()->getSsTextureSize(); - if (w == 0) { return "SS texture: not active"; } - return "SS texture: " + std::to_string(w) + "x" + std::to_string(h); -} - -// SS UPSCALE [NEAREST|LINEAR] — toggle o estableix mode upscale -static auto cmdSsUpscale(const std::vector& args) -> std::string { - if (args.size() == 1) { - Screen::get()->setLinearUpscale(!Options::video.supersampling.linear_upscale); - return std::string("Upscale: ") + (Options::video.supersampling.linear_upscale ? "Linear" : "Nearest"); - } - if (args[1] == "NEAREST") { - if (!Options::video.supersampling.linear_upscale) { return "Upscale already Nearest"; } - Screen::get()->setLinearUpscale(false); - return "Upscale: Nearest"; - } - if (args[1] == "LINEAR") { - if (Options::video.supersampling.linear_upscale) { return "Upscale already Linear"; } - Screen::get()->setLinearUpscale(true); - return "Upscale: Linear"; - } - return "usage: ss upscale [nearest|linear]"; -} - -// SS DOWNSCALE [BILINEAR|LANCZOS2|LANCZOS3] — consulta o estableix algorisme -static auto cmdSsDownscale(const std::vector& args) -> std::string { - static const std::array DOWNSCALE_NAMES = {"Bilinear", "Lanczos2", "Lanczos3"}; - if (args.size() == 1) { - return std::string("Downscale: ") + std::string(DOWNSCALE_NAMES[static_cast(Options::video.supersampling.downscale_algo)]); - } - int algo = -1; - if (args[1] == "BILINEAR") { algo = 0; } - if (args[1] == "LANCZOS2") { algo = 1; } - if (args[1] == "LANCZOS3") { algo = 2; } - if (algo == -1) { return "usage: ss downscale [bilinear|lanczos2|lanczos3]"; } - if (Options::video.supersampling.downscale_algo == algo) { - return std::string("Downscale already ") + std::string(DOWNSCALE_NAMES[static_cast(algo)]); - } - Screen::get()->setDownscaleAlgo(algo); - return std::string("Downscale: ") + std::string(DOWNSCALE_NAMES[static_cast(algo)]); -} - -// SS ON — activa supersampling si encara no ho està -static auto cmdSsOn() -> std::string { - if (Options::video.supersampling.enabled) { return "Supersampling already ON"; } - Screen::get()->toggleSupersampling(); - return "PostFX Supersampling ON"; -} - -// SS OFF — desactiva supersampling si encara està actiu -static auto cmdSsOff() -> std::string { - if (!Options::video.supersampling.enabled) { return "Supersampling already OFF"; } - Screen::get()->toggleSupersampling(); - return "PostFX Supersampling OFF"; -} - -// SS — toggle (sense args) o dispatch a subcomandes -static auto cmdSs(const std::vector& args) -> std::string { - if (!Screen::get()->isHardwareAccelerated()) { return "No GPU acceleration"; } - if (args.empty()) { - Screen::get()->toggleSupersampling(); - return std::string("PostFX Supersampling ") + (Options::video.supersampling.enabled ? "ON" : "OFF"); - } - if (args[0] == "SIZE") { return cmdSsSize(); } - if (args[0] == "UPSCALE") { return cmdSsUpscale(args); } - if (args[0] == "DOWNSCALE") { return cmdSsDownscale(args); } - if (args[0] == "ON") { return cmdSsOn(); } - if (args[0] == "OFF") { return cmdSsOff(); } - return "usage: ss [on|off|size|upscale [nearest|linear]|downscale [bilinear|lanczos2|lanczos3]]"; -} - // Helper: aplica un preset por dirección (NEXT/PREV) o nombre; devuelve mensaje static auto applyPreset(const std::vector& args) -> std::string { const bool IS_CRTPI = Options::video.shader.current_shader == Rendering::ShaderType::CRTPI; @@ -990,7 +915,6 @@ static auto cmdSize(const std::vector& /*unused*/) -> std::string { // ── CommandRegistry ────────────────────────────────────────────────────────── void CommandRegistry::registerHandlers() { - handlers_["cmd_ss"] = cmdSs; handlers_["cmd_shader"] = cmdShader; handlers_["cmd_border"] = cmdBorder; handlers_["cmd_fullscreen"] = cmdFullscreen; diff --git a/tools/shaders/compile_spirv.cmake b/tools/shaders/compile_spirv.cmake index e41ad2f..07a8e17 100644 --- a/tools/shaders/compile_spirv.cmake +++ b/tools/shaders/compile_spirv.cmake @@ -15,8 +15,6 @@ cmake_policy(SET CMP0007 NEW) set(SHADER_SOURCES "postfx.vert" "postfx.frag" - "upscale.frag" - "downscale.frag" "crtpi_frag.glsl" ) @@ -24,15 +22,11 @@ set(SHADER_SOURCES set(SHADER_VARS "kpostfx_vert_spv" "kpostfx_frag_spv" - "kupscale_frag_spv" - "kdownscale_frag_spv" "kcrtpi_frag_spv" ) # Flags extra de glslc para cada shader (vacío si no hay) set(SHADER_FLAGS - "" - "" "" "" "-fshader-stage=frag"