# Phase 2 – Compression & Size Reduction This document tracks ideas and strategies for the final optimization phase to reach the <=64k goal. ## Executable Size ### Windows - **Replace GLFW**: For the final build, replace the statically linked GLFW library with a minimal "tiny" implementation using native Windows API (`CreateWindow`, `PeekMessage`, etc.). This is expected to yield significant savings. - *Status*: Deferred until feature completion. - **CRT Replacement**: Consider replacing the standard C runtime (CRT) with a minimal startup code (e.g., `tiny_crt` or similar) to avoid linking heavy standard libraries. - **Import Minimization**: Dynamically load functions via `GetProcAddress` hash lookup to reduce the Import Address Table (IAT) size. ### General - **Shader Compression**: Minify WGSL shaders (remove whitespace, rename variables). - **Asset Compression**: - Store spectrograms with logarithmic frequency bins. - Quantize spectral values to `uint16_t` or `uint8_t`. - Use a custom packer/compressor for the asset blob.