
This is FlexSID fast README
For more information see the executable user-manuals or their included .txt one in 'resources' folder.
(Note: the load/save of the native executable FlexSID prg might not like Final Replay or similar cartridge. Sometimes I got freeze upon loading .flx with 'tfr08.bin' in VICE.)



GhangeLog:


FlexSID-1.4 contains some minor but useful improvements/fixes (in year 2026):
-Implemented a .prg to .flx import feature: a tune exported from FlexSID can be imported back into the editor
-Optimized further, especially the SID-engine, pre-calculation of filter-curves instead of using slow exp() and pow()
-Using my own 'compress64k' tool now to pack the included native C64 binaries and C64 executables: faster decompression
-Added example .flx workfiles of the 2 FlexSID tunes composed by Shogoon, added playertype for all .flx and .prg filenames
-Pre-warning in C64 variant's 'EXPORT PRG' menu that the app will be closed after exporting to PRG
-Fixed C64 user-manual: added empty row at end after the text-payload, so scrolling to end doesn't generate artefacts
-Corrected font-type from too big 24 to 14 in selector.c (which is compiled to 'flexsid')
-Corrected .flx-header/format related comments in 'assembly/playerspec.asm'
-Playertype-display fix in main-menu for PC-variant


FlexSID-1.3 brings these new features (in year 2026):
-Combined waveforms are now what is in the original SID (not generated by my method, so app-startup is faster too.)
-Calculating total size of player+tune is automatically done now when menu is opened
 (It compresses and decompresses the tune, which proved to be reliable through time to be automatic)
-Better ARM CPU (e.g. Raspberry PI Zero) support: modifications
 (of 'char' to 'signed char', etc.) and C-code optimizations
-Zeropage-usage of the player can now be fine-tuned in source-code from the default quantity of 65
 to as few as 5 zeropage-variable bytes.
 Settings for this are modifiable in 'assembly/playerspec.asm' under 'PLAYER_AVOID_ZEROPAGE__xxx' names,
 prebuilt varianst can be found in 'player-zeropage-reduced-variants' folder.
 (Zeropage-variables are moved by default to stack's bottom, around absolute address $100,
 which means a bit bigger player-size and more rastertime.)
-The same Linux-symlink trick is now used as for SID-Wizard (and 'busybox' for that matter) to have
 a single executable but different player-types
 -The player-types of the current single executable 'FlexSID' can also be selected by
  commandline arguments ('-light','-extra',etc.)
-Dropped Windows support and prebuilt binaries. The source and Makefile still contains Windows-related
 residues and is probably still buildable with a few modifications on Windows.
-Cleaned up CPU/SID/etc code a bit (eliminating nested functions, optimizations),
 making it more compatible with TinyCC for faster testing builds
-Selector and main FlexSID executables renamed, selector now appends parentheses and uses realpath to open .flx file
 (The selector's name is now 'flexsid' instead of 'FlexSID', so your filetype-association for .flx should follow that.)


Improvements of 2022 July FlexSID-1.2 (compared to FlexSID-1.1):
-Fixed config-reload bug (loaded config was overwritten by copying C64 code over it in InitUI at startup)
-Size of installed .deb package fixed to 3.6MB
-defMON-sync adapter support
-default pattern-length field in the workfile (overrides config-file setting when tune is loaded)
-Ctrl+E (or C=+E) to find the first Empty place in InsFx table (later: find first unused pattern in Orderlist too)
-better waveform-playback engine (7x oversampling, clean combined waveforms, a bit more CPU-utilization)
-updated manual with the new features (more words about default patternlength and ASCII-short-filenames)


Improvements of 2022 March FlexSID-1.1 (compared to FlexSID-1.0):

-Replaced the sample-based imprecise SID ADSR-code to an 1MHz cycle-exact version developed recently
-Enhanced the CPU code for more correct instruction handling and more precise instruction-cycle timing,
 and made it much more readable by using inline functions for repetitive code
-Also the per-frame player-calls are now more precisely timed (1MHz cycle-based not sample-based)
-There were reports from Spider Jerusalem that a newer gcc (version 11) couldn't compile the code,
 and therefore MouseButtons enum was changed in hgui.h and symdef.c NULL cases are now handled
 Hopefully the code can now be compiled easier on other platforms. (Mine is a Debian with gcc 8.3)
 Thanks to Spider for pointing out the uninitialized datacnt in symdef.c file.
-Corrected typos in the User Manual and rephrased many sentences to be clearer to understand.
-Most importantly, fixed a freeze when empty orderlist was tried to be saved!
-Added 'lightplayer' info to filename of Necropolo's tune
(-Wanted to change the colour scheme to something new, but somehow this is the very best combination)

