Class: ImgToScript::Generators::HexMask::Enhanced
- Inherits:
-
ImgToScript::Generators::HexMask
- Object
- ImgToScript::Generators::HexMask
- ImgToScript::Generators::HexMask::Enhanced
- Defined in:
- lib/img_to_script/generators/hex_mask/enhanced.rb
Overview
Generates image rendering script using the DRAW/M statement with the 'enhancements'.
To save space at the MPO-10 cart, it's possible to replacelong sequences of repeating chunks with a shorter (in terms of number of chars required to store the statement) code, e.g.:
xxDRAWMFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF // 43 bytes -- 16 x 'AA'. xxDRAWMFF:FORI=1TO16:DRAWMAA:NEXTI:DRAWMFF // 42 bytes -- repeating chunks were replaced with a loop.
Same principle could be applied to eliminate long sequences of white pixels, e.g.: xxDRAWMFF00000000000000000000FF // 31 bytes -- 10 x '00'. xxDRAWMFF:DRAWOxxx,yy:DRAWMFF // 29 bytes -- replaced with a manual shift.
The algorithm is:
- apply RLE to the array of hex chunks (DRAW/M arguments);
- loop through the array of run-lengths: take an element (a 'chunk') and heck if it's run-length is larger than an estimated value (MIN_REP_CHUNKS or MIN_REP_WH_CHUNKS);
- if true: add pending chunks to the BASIC code; then append a FOR-NEXT loop or DRAW/O. Clear pending chunks array and continue to loop through the array of run-lengths.
- otherwise: add current chunk to the array of pending chunks;
- after the loop: add pending chunks.
Constant Summary collapse
- MIN_REP_CHUNKS =
16- MIN_REP_WH_CHUNKS =
9