• v1.21 18057456f9

    v1.21 Stable

    sylvain released this 2026-03-28 17:38:22 +00:00 | 0 commits to main since this release

    Version 1.20

    New features

    • Added xxHash32 integrity checksum: every compressed G3Z file now stores a 32-bit hash of the original uncompressed data, verified automatically on decompression
    • Checksum is algorithm-agnostic: works identically for zlib and LZ4 compressed files
    • Old G3Z files (versions 1.10--1.13) without a checksum are still decompressed normally (flag 0x00 skips verification)
    • Named constants for algorithm byte codes (ALGO_BYTE_ZLIB_MAX/FAST, ALGO_BYTE_LZ4_MAX/FAST) replacing bare character literals in the file format layer
    • Checksum value in the file information popup is now displayed in hexadecimal (e.g. 0xA3F2C1B0) consistent with how hash values are conventionally represented

    Bug fixes

    • Fixed use-after-free: partial .g3z output is now correctly deleted before the path buffer is freed when compression is aborted
    • Fixed jpopup_add_empty_line(): empty separator lines were allocated but never inserted into the list and never displayed
    • Fixed popup widget used before NULL guard: jpopup_set_size() and jpopup_set_font() were called before the NULL check in init_app()
    • Fixed missing FileData argument in the non-FXCG100 build path of SquishIt_GetFileInformation() (crash / undefined behaviour on simulator)
    • Fixed buffer overflow in getfileinformation(): name_len read from file was not clamped before fread() into the 256-byte originalfilename field
    • Fixed delete_file() returning the raw remove() value (-1 on failure) instead of a defined SQUISHIT_* error code
    • Fixed unchecked fwrite() in LZ4 compression and decompression loops: write failures now propagate as SQUISHIT_WRITE_ERROR
    • Fixed unchecked fwrite() when writing the filename into the G3Z header
    • Fixed LZ4 chunk size stored/read as platform-dependent int; now explicitly uint32_t (no format change on SH4 where int is 32 bits, but correct by specification)
    • Fixed strcpy() without bounds check on FileData->filename; replaced with strncpy()

    Code quality

    • Refactored event_handling() (~215 lines) into three focused static helpers: handle_compress(), handle_decompress(), handle_info_popup()
    • Removed stale TODO comment from read_checksum() (error handling was already complete)
    • Removed dead commented-out decompress_file_zlib() function
    • Added static to clamp() in jprogressbar.c to avoid link-scope name pollution
    • Removed dead l = NULL assignment after free(l) in jpopup_poly_destroy()
    • Corrected misleading copy-paste header comment in jpopup.h (was describing a progress bar)
    • Replaced unexplained commented-out jwidget_emit() calls with an explanatory comment
    • Updated G3Z file format to version 1.20

    Version 1.21

    New features in 1.21

    • Multi-language support (English / French): all user-facing strings are now fully translated; the active language is selectable from the Settings menu
    • Persistent user settings: language, CPU overclock level and default compression algorithm are saved automatically to SquishIt.ini on the calculator storage and restored on the next launch
    • INI configuration file (SquishIt.ini): plain-text format with [Key] value entries and # comment lines; human-readable and hand-editable directly on a PC; a default file with full comments is provided and auto-created on first launch if absent
    • CPU overclock is now accessible from the Settings menu (SHIFT+MENU), allowing the user to select speeds F1 (default) through F5 without leaving the application
    • Default compression algorithm is now remembered across sessions and pre-selected on startup

    Code quality in 1.21

    • Introduced src/lang/ subsystem: lang.h (string ID enum + API), lang_en.h, lang_fr.h (translation tables), lang.c (runtime dispatch); adding a new language requires only a new lang_XX.h file
    • Introduced src/core/ini_file.h / ini_file.c: self-contained INI parser and writer; all filesystem calls are wrapped in gint_world_switch for safe OS-world access
    • Widget strings (jpopup title, jjackintheboxmenu hint bar, jfileselect empty-folder and save-as labels) are now configurable at runtime via dedicated setters, enabling live language switching without rebuilding the widget tree
    Downloads
  • v1.13 a6c85adf92

    v1.13 Stable

    Slyvtt released this 2026-01-04 20:08:10 +00:00 | 12 commits to main since this release

    Version 1.13

    • Corrected a bug in the calculation of compression ratio of G3Z file (visible in File Info Popup)
    • Improvement of texts within the program
    Downloads
  • v1.12 92f5703575

    v1.12 Stable

    Slyvtt released this 2025-12-28 19:45:47 +00:00 | 15 commits to main since this release

    Version 1.12

    • Added an Abort Key to stop current compression/decompression operation (mapped to BACK key)
    • Added an estimator of the operation duration (Compression & Decompression)
    • Corrected some hidden bugs when Information popup window was opened
    • Remove temporary files created before user abort
    Downloads
  • v1.11 897acc4da6

    v1.11 Stable

    Slyvtt released this 2025-12-24 12:44:00 +00:00 | 25 commits to main since this release

    Added inforrmation on files (G3As and G3Zs)
    Added information on available space on user storage
    Added verification of enough available space before compression and decompression
    Some minor changes/bugs corrections to improve the program

    Downloads
  • v1.10 d09b25f26a

    v1.10 Stable

    Slyvtt released this 2025-11-23 14:39:26 +00:00 | 37 commits to main since this release

    Version 1.10 with the following additions :

    • Check for hardware - only works on fxCG100 / Graph Math+ (fxCG-120/20/50 not supported because of crash of OS when writting G3As)
    • Support 2 compression formats (LZ4 + Zlib)
    • Compression level : Best Compression / Fast Compression
    • Adjustement of the internal buffer to get better balance compression/memory consumption with LZ4 compression algorithm (no effect on Zlib)
    Downloads
  • v1.00 4dcff58906

    v1.00 Stable

    Slyvtt released this 2025-11-16 10:02:24 +00:00 | 47 commits to main since this release

    V1.00 of Squish It !!

    Compression / decompression of G3A addin with Zlib 1.2.5.
    Make sure to have the latest version of mpm.bin on your machine.

    Run only on fxCG-100 or Graph Math+.
    Not compatible with Prizm machines and fxCG-50 / Graph 90+E.

    Downloads