Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > On the relative pros and cons of various RLE schemes
2024-04-21 17:12
ChristopherJam

Registered: Aug 2004
Posts: 1402
On the relative pros and cons of various RLE schemes

So over in Native crunch/decrunch code. I just suggested encoding
abbcdddeffffg as
abb{0}cdd{1}eff{2}g

Raistlin kindly liked the idea, Krill quite sensibly didn't want us to hijack the post and suggested a new post for the new topic. so... Have at it!
 
... 38 posts hidden. Click here to view all posts....
 
2024-04-23 09:34
Bitbreaker

Registered: Oct 2002
Posts: 501
Quoting Krill

RLE used to be LZ-crunched anyways, so RLE compression ratio wasn't much of a concern.


What is kind of hard to understand, as LZ includes RLE by design (match with offset 1)
2024-04-23 09:34
Krill

Registered: Apr 2002
Posts: 2940
Quoting JackAsser
Check any Dinosours release and you'll get the point. :D
I was aware that Dinasours pack everything 10 times for comedic effect,
but i thought maybe they've released the Airwolf Fixer of crunchers or something and i've missed that. :)
2024-04-23 09:37
Krill

Registered: Apr 2002
Posts: 2940
Quoting Bitbreaker
Quoting Krill

RLE used to be LZ-crunched anyways, so RLE compression ratio wasn't much of a concern.
What is kind of hard to understand, as LZ includes RLE by design (match with offset 1)
Native LZ crunchers used to require quite a bit of working memory, so the maximum size of input programs was often smaller than entirely uncompressed programs.
Thus RLE first, then LZ. Also this two-pass approach can make for better overall compression ratio.
2024-04-23 09:54
Jetboy

Registered: Jul 2006
Posts: 265
Quoting Krill
Thus RLE first, then LZ. Also this two-pass approach can make for better overall compression ratio.


Puls LZ ones were rather slow, so prepacking with RLE first could save substantial amounts of time. As shorter file to pack tends to pack quicker.
2024-04-23 10:06
enthusi

Registered: May 2004
Posts: 675
Just to add an alternative which is a bit special but cute:
Maniac Mansion and ZMK use some RLE depacker that resides in ZP and encodes most-common bytes, which I felt works rather well for graphics. I wrote something about that here:
https://www.pagetable.com/?p=603

A byte of < $40 = count of raw bytes following
$3f to < $80 represents the length of the run of the byte to follow (+$3f of course).
$7f to < $a0 is the number of runs of most common byte 1,
$9f to < $c0 and $bf to <$e0 and $df-$ff for common byte 2, 3 and 4 respectively.
2024-04-23 15:21
ChristopherJam

Registered: Aug 2004
Posts: 1402
ooh, I like that one enthusi.

Really interesting the historical divide between packers and crunchers, especially the way intros tended to be displayed between one and the other. It does indeed reduce the impact on runlength limits considerably. Not sure why I ever bothered trying to improve the ratio of my higher ratio crunchers for empty spaces now :P
2024-04-23 16:35
Martin Piper

Registered: Nov 2007
Posts: 697
In the old days, dictionary based compression would be quite slow and memory hungry. The usual way of speeding it up would be to limit the distance searched and limit the dictionary.

Using a RLE compression pass before a dictionary compression stage would reduce the total input data, it would reduce the strain on the dictionary, and would pass some benefit along to the dictionary based compression.

As dictionary algorithms improve, and also as time and memory becomes less of an issue, the dictionary size can be increased and this means there is less benefit to shrinking the input data with a RLE pre-pass.
2024-04-23 18:46
Fungus

Registered: Sep 2002
Posts: 668
Main reason for packing first was before crunchers had REU versions with 2mhz or 8mhz support they were slow as hell and took many hours. So smaller input files crunched way faster. Also crunching large files tended to bug out. They generally were smaller too, so it became the norm.
2024-05-29 11:39
Starfox

Registered: Jul 2014
Posts: 42
I researched a lot about RLE a year ago.

Forgot most of it, lol!

But you can preprocess the data before run-length encoding it, to make the RLE more successful.

There were a couple of schemes used, which were probably mostly optimized for text. Burrows-Wheeler Transform for instance.

I have my notes at home, let me see if there's anything useful.
2024-05-29 14:20
Martin Piper

Registered: Nov 2007
Posts: 697
Quote: I researched a lot about RLE a year ago.

Forgot most of it, lol!

But you can preprocess the data before run-length encoding it, to make the RLE more successful.

There were a couple of schemes used, which were probably mostly optimized for text. Burrows-Wheeler Transform for instance.

I have my notes at home, let me see if there's anything useful.


If I recall, reversing BWT encoded data needs a few sorts for each stored string. Which makes it quite expensive? Creating the BWT data also needs a sort, but I don't care about that so much.
Previous - 1 | 2 | 3 | 4 | 5 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
jicas/Patagonia
csabanw
manganoid/Hokuto Force
Andy/AEG
Guests online: 95
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Mojo  (9.7)
5 Edge of Disgrace  (9.6)
6 3SIRA  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Comaland 100%  (9.6)
10 No Bounds  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 It's More Fun to Com..  (9.5)
7 Dawnfall V1.1  (9.5)
8 Onscreen 5k  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Nostalgia  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.2)
Top Fullscreen Graphicians
1 Joe  (9.7)
2 Veto  (9.6)
3 Facet  (9.6)
4 The Sarge  (9.6)
5 Carrion  (9.5)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.054 sec.