@Prodatron: Thanks. I just took a quick look at the decruncher. It looks like the compression rate may not be as high as bitbuster, but on the other hand it looks faster. For my little app, speed is more important so I'll try to modify it to out the data instead of unpacking to ram.
@ARTRAG: Here is my decoder. Its quite simple so I think you'll understand how the data is being packed. As I said, its not that generic but fits my data pretty well.
; Unpacks 256 bytes of data located at HL to the VRAM at DE
depack:
ld a,e
out [$99],a
ld a,d
and $3f
or $40
out [$99],a
ld c,$98
xor a ; Make sure we get a reload on the
; byte with bits
ld b,a ; Reset loop counter (this routine
; unpacks 256 bytes but that could
; easliy be changed
.Loop:
add a,a ; Get next bit
jp nz,.NoReload ; If byte with bits is zero, get next
ld a,(hl)
inc hl
add a,a ; Get next bit in new byte
.NoReload:
jp c,.NoNewVal ; If high bit was set, we have a new
; value, else the old value is outed
ld d,(hl)
inc hl
.NoNewVal:
out (c),d ; Out the value
djnz .Loop ; Continue loop
ret