I wanted to open a new thread to discuss a change coming to the .scp image file format. There are many emulators now supporting the .scp image file format. Ijor has released a FPGA based Atari ST emulator for the MiSTer project that can also support .scp image files. However, there is a limited amount of memory available in the FPGA setup (32MB total), and so it would be advantageous to have a means of reducing the file size of the .scp image files. We know that .7zip is the best compression to use for flux image files. We also know that we don't really need "preservation" quality for images that are intended to be run on emulators. There is an option in the SCP imaging software called "Preservation". If you un-tick that option, the image file will be reduced from 25ns captures to 100ns captures. The end result is that the image file compresses to a dramatically smaller size (like from 11MB to under 1MB). STeeM, Win-UAE, etc. all support using .scp image files that are compression with .zip and .7zip.
There are some emulators (like Ijor's FPGA based Atari ST emulator) that do not have the ability to handle compressed files, or can't afford the time it takes to decompress on the fiy and still maintain cycle accurate emulation. I have proposed a small addition to the .scp image file format that will let you cut the .scp image file size basically in half. Currently, all image files generated by the SCP software use 16 bits for storing the bitcell time. There is already an option in the .scp image format spec to change the number of bits used for the storage. Since all of the 720K-800K disk formats require at least 11 bits of storage space for the maximum bitcell time, 16 bits (as opposed to bit packed) has always been used because it made it easy for extracting the bitcell times. I have now assigned the reserved byte at offset 0x0B in the image file format to be the capture resolution. Note the new change:
BYTE 0x0B is resolution of the capture. The base resolution is always 25ns. So a value of 0
is the standard 25ns capture time. If the value is non-zero, then it is a multiplier value
of 25ns. So, a value of 1 would be 25ns (base resolution) + 1 * 25ns = 50ns. 2=75ns, 3=100ns, etc.
I will be making a change to the SCP software to allow saving with the new resolution along with storing the data as 8 bits instead of 16 bits. I will also make an option for doing conversions from existing .scp image files to a reduced size version.
I am the flux ninja