| |
AKA :
Three in 17307 Bytes
Credits :
Download :
Look for downloads on external sites:
Pokefinder.org
User Comment Submitted by Oswald on 6 April 2024
cool predicting pixels sounds like chatgpt's predicting words | User Comment Submitted by ChristopherJam on 6 April 2024
tl;dr - the cruncher only stores the colours it needs for each character, then tries to predict each pixel value given
- the pixel above
- the pixel to the left
- the number of colours in this character
It compresses the data by outputting fewer bits whenever the original image has a pixel that matches the prediction. | User Comment Submitted by ChristopherJam on 6 April 2024
The core of the decruncher is something that returns a two bit value in response to an eight bit "context," that consumes fewer bits from the input stream for bit pairs that have in the past been more likely outputs for that context value. For each character, it fetches a two bit "number of colours" value with a context of the count for the previous character, then fetches from zero to 3 colour nybbles to place in screen and colour RAM (each one using the preceding colour as context), then each of the 32 pixels contained in the character are fetched using a context of [previous pixel, four pixels in the past, count of colours] - so most of the time one pixel to the left and one above,
But yes, that does mean doing one arithmetic decoding plus probability adjustment step per output bit of the entire image (two per bitpair) - though it practically skips over any chars that are full of the background colour.
Jetboy: For full screen images It'd get you one or two more koalas per side compared to using spot+dali, at the cost of much longer decompression times. Is it actually full screen things you're after, or something a bit smaller? | User Comment Submitted by Jetboy on 5 April 2024
So what magic are you doing to get such good compression? I'm working on a graphic collection right now, and such a tool would be handy for me as it would let me squeeze more images per diskside. | User Comment Submitted by ChristopherJam on 5 April 2024
Ah, nice. Thanks for updating those.
So, spot-style 'otpimizing' for png2prg 1.7? :D | User Comment Submitted by Burglar on 5 April 2024
thanks cjam :)
though, the comparison with png2prg is not that good, so I redid the benchmark a bit so we're comparing apples: pack pic generated by png2prg, just like you did with spot. png2prg contains fade code and a fast TSCrunch that does not compress well.
+-------------+-------------+-------------+
| spot+dali |png2prg+dali | koalacanner |
+-------------+-------------+-------------+
| 7349 | 7546 | 6755 | (Untitled/Floris)
| 5155 | 5464 | 4594 | (Song of the Sunset/Mermaid)
| 5986 | 6155 | 5624 | (Short Circuit/Karen Davies)
+-------------+-------------+-------------+
and yes, sending multiple images to png2prg will not make a slideshow, it will attempt to create a bitmap anim. | User Comment Submitted by ChristopherJam on 5 April 2024
Cheers all.
Yes, this is indeed a bit OT from the original "remap bitpairs to make koalas more compression friendly"
I didn't manage to convince png2prg 1.6 to combine all three images into a single slideshow ("bitpairColors differ between frames"), but here's a size comparison of generating one standalone prg for each image:
+-------------+-------------+
| png2prg 1.6 | koalacanner |
+-------------+-------------+
| 9234 | 7085 | (Untitled/Floris)
| 7340 | 4924 | (Song of the Sunset/Mermaid)
| 7769 | 5954 | (Short Circuit/Karen Davies)
+-------------+-------------+
And for spot+dali, compressed image data only:
+-------------+-------------+
| spot+dali | koalacanner |
+-------------+-------------+
| 7349 | 6755 | (Untitled/Floris)
| 5155 | 4594 | (Song of the Sunset/Mermaid)
| 5986 | 5624 | (Short Circuit/Karen Davies)
+-------------+-------------+
This thing doesn't bother storing unused colours - each char comes with a count of additional colour attributes, which is used to determine how many colour nybbles to fetch, and also as an input into the bitpair prediction.
Quiss: Yes! As Krill mentioned, I didn't manage to get any wins from backreferences. Any common motifs were quickly recognised by the adaptive bitpair prediction. I must admit, it surprised me too. | User Comment Submitted by Burglar on 4 April 2024
nice one cjam!
the pics appear to be loading from tape ;)
in essence this seems to be a koala cruncher and not so much a koala optimizer.
how does it compare to other tools like SPOT 1.2 or dare I say it, png2prg 1.6, if you'd use zx0/dali or exomizer on the optimized koalas? | User Comment Submitted by Krill on 4 April 2024
"No backreferences?" - That surprised me as well. Apparently having a constantly updated pool of context-driven probability distributions is enough. =) | User Comment Submitted by Quiss on 4 April 2024
That's quite the codec! The interleaving of bitmap/color is interesting. No backreferences? | User Comment Submitted by ChristopherJam on 4 April 2024
Very crunchy, very slow.
Shout out if you'd find a tool for the codec useful and I'll consider writing one - it's basically just a proof of concept at the moment. |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia (1)
|
|
| Forum | |
|
| Support CSDb | |
|
| |
|