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 > Active Memory Decrunching
2008-11-11 22:45
The Shadow

Registered: Oct 2007
Posts: 304
Active Memory Decrunching

There is a theoretical technique that some crackers have experimented with in the past. It may be useful for such applications as working with a large digitized SID for example. If for instance you have a very large song and you wish to fit it into a demo page, with a large bit of code and some large graphics. Within the memory is a sequence crunched song. Within the memory is a specially designed decruncher. While the music plays, the decruncher decrunches part of the crunched memory into a block or two of open memory and the player only plays what is in the open memory.
Some crackers have experimented with what I have referred to in the past as 'Memory Level Packing'. A game with levels just small enough to be levelcrunched within memory and decrunched into open memory as levels progress.
2008-11-11 23:09
SIDWAVE
Account closed

Registered: Apr 2002
Posts: 2238
And ?

Are you gonna make a demolinker that will do this ?
2008-11-11 23:44
The Shadow

Registered: Oct 2007
Posts: 304
No, sequence crunchers are beyond my level of skill.
2008-11-12 03:42
doynax
Account closed

Registered: Oct 2004
Posts: 212
Many games use meta-tiles to compress levels in memory, while trackers allow for reusing old patterns many times within a song, other games use RLE coding for their tilemaps. I'd argue that any of these techniques is an example of in-memory decompression.
For my own game project I use a sliding-window LZ cruncher, and even stream in compressed data from floppy. But such convoluted schemes are only applicable to a very limited set of games as you cannot seek within the data stream, only decrunch forward.
2008-11-12 07:54
WVL

Registered: Mar 2002
Posts: 902
Quote: Many games use meta-tiles to compress levels in memory, while trackers allow for reusing old patterns many times within a song, other games use RLE coding for their tilemaps. I'd argue that any of these techniques is an example of in-memory decompression.
For my own game project I use a sliding-window LZ cruncher, and even stream in compressed data from floppy. But such convoluted schemes are only applicable to a very limited set of games as you cannot seek within the data stream, only decrunch forward.


This is not 100% true.. I've made a LZW-packer that can decompress from points in the file which you can specify. The result is a packed binary + a pointer list. To handle this, it works a bit different from normal LZW-packers (which refer to already unpacked data while unpacking) by referring to packed data instead.
2008-11-12 08:16
The Shadow

Registered: Oct 2007
Posts: 304
Equal Character packing, sequence crunching and levelpacking are familiar terms to me. I am unfamiliar with the term LZW. What does it stand for and how does it work?
2008-11-12 08:39
doynax
Account closed

Registered: Oct 2004
Posts: 212
Quote: This is not 100% true.. I've made a LZW-packer that can decompress from points in the file which you can specify. The result is a packed binary + a pointer list. To handle this, it works a bit different from normal LZW-packers (which refer to already unpacked data while unpacking) by referring to packed data instead.

I'd call that static dictionary coding since LZ refers to Ziv and Lempel's discoveries of pratical methods for dynamically building dictionaries, whether for LZ77/LZSS or LZ78/LZW, not dictionary coding itself.
But, yes, there are plenty of compression which allow (more or less) random access at the cost of compression ratio. Huffman coding is another good example.
2008-11-12 09:22
SIDWAVE
Account closed

Registered: Apr 2002
Posts: 2238
Quote: Equal Character packing, sequence crunching and levelpacking are familiar terms to me. I am unfamiliar with the term LZW. What does it stand for and how does it work?

http://en.wikipedia.org/wiki/LZW

http://marknelson.us/1989/10/01/lzw-data-compression/
2008-11-12 09:55
algorithm

Registered: May 2002
Posts: 705
Yhe 'Open your eyes' demo uses in memory decrunching to decrunch the codebook/frame data to a buffer while the demo is running. but memory is limited as the buffer area is required and only left with around 30k or so of crunched data to depack when required.
2008-11-12 09:58
The Human Code Machine

Registered: Sep 2005
Posts: 112
I used Darksqueezer in memory decompression for the background pictures here: Ikarus
2008-11-12 10:01
Mace

Registered: May 2002
Posts: 1799
Interesting to see that people start dicussing although The Shadow merely stated something.

There's not a single questionmark in his post :-)

Andy, what is your point?
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
DeMOSic/MS^LSD^ONS
CreaMD/React
Bieno/Commodore Plus
Microshark/Damage(HUN)
Andy/AEG
Holy Moses/Role
MWR/Visdom
The Syndrom/TIA/Pret..
CA$H/TRiAD
Guests online: 118
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.3)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Booze  (9.7)
3 Stormbringer  (9.7)
4 Fungus  (9.6)
5 Grim Reaper  (9.3)

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