Work-In-Progress Reports for May 2010
IPF Library Changes: It is now possible to lock the gap length in either or both directions as long as: - The two streams together would fill the requested gap, OR - One gap stream still remains a flexible size. This is very useful to replicate all the possible gap filling strategies used at mastering.
Analyser Changes: Added scripting parameter support to the script generator. This way it is possible to alter settings in the generator by creating a format/block descriptor with the preferred settings and analysing the track selecting the format. The script generator now supports settings to change the gap pattern size of the last block/last gap zone to any arbitrary size. For example, the "MFM" vs "MFM lblp 0" setting on any StarGlider 2 MFM track, say 0.1. (more)
IPF Library Changes: Various fixes for issues found during testing. More sanity checks added to the library. Previously :glossary:CTA did not attempt to mimic the real disk when an IPF was loaded, due to various limitations in the library. Since these limitations no longer apply, CTA's behaviour has been changed to fully simulate a dump file when loading an IPF, useful for example when examining a real dump vs. an IPF file. (more)
IPF Library Changes - Done!: Multi platform support is finished! As you may be aware, there has been loads of working done in preparation for going completely multi-platform with images, tools and the library. The IPF library was originally designed with constrains of MFM encoding in mind, therefore it used a fairly simple method to create the track data. (more)
IPF Library Changes: Removed all the original decoding and encoding functionality. Started migrating the code to use the new core.
IPF Library Changes: Complete block encoding function now works, with lots of sanity checks. The code is capable of correctly filling any arbitrary gap size using the gap streams, proportionally to the original filler areas (i.e. if one pattern was using more space, it would do the same regardless of whether the area has been shrunk or enlarged) as long as altering the gap size is allowed. For the record, the new core now is exactly 1777 lines... (more)
IPF Library Changes: Implemented the "fast forward" function required for backward stream decoding. This finally makes it possible to decode all 3 streams required to fully decode/encode a logical block, i.e. data stream, forward gap stream, backward gap stream. Added the ability to reset the encoder or continue an existing stream when encoding data. (more)
IPF Library Changes: The library can pre-calculate the encoded length of a stream separated to a fixed length part and a flexible length part with: - Looping disabled - Using the generated loop points - Using the loop points found in streams. This is required to make a decision in advance about the encoding process to be used for each stream when encoding a data block. E.g. (more)
IPF Library Changes: Loop points detected or automatically generated in gap streams. Since gaps areas might be allowed to grow or shrink (depending on the decoding settings preferred by the host application using the library) in the case of making a gap larger than it used to be, some data must be automatically created. (more)
IPF Library Changes: Backwards gap decoding would require practically implementing half of the core for reversed stream/bit/decoding/encoding operations... which is not exactly an economical solution. Instead, we reversed the order of gap descriptors generated by the analyser - this would enforce correct IPF code generation in forward gap order. (more)
IPF Library Changes: Data stream decoding now completely works for all encoding types - existing or future. Extending the supported encoding types is a straightforward process from now on, with only the encoding specific streaming layer affected - i.e. adding GCR would require a GCR encoding layer added; the rest of the library code should be completely unaffected. This is very important as testing the whole library for all edge cases is extremely time consuming. (more)
IPF Library Changes: Streaming reports back whenever a change in the encoding algorithm is required, so the higher level layers can stick with one algorithm - considerable speedup. Weak bits are reported back to the higher level encoders. (more)
IPF Library Changes: The layered access approach as described below is being implemented. Streaming of IPF data as well logical data is complete for raw streams, gap streams, and data streams apart from weak bits. Changing the encoding type (i.e. MFM, GCR, etc.) as well as toggling between encoded and unencoded data is fully supported, e.g. marks are usually unencoded while the rest of the block data normally is. (more)