126

willy napisał/a:

Istnieje jekis PACKER ktory w miare szybko jest w stanie oakowac dane na 6502?

RLE zdecydowanie, można w locie pakować, depakować

coś bardziej wyrafinowanego i szybkiego, LZJB https://en.wikipedia.org/wiki/LZJB

moduł LZJB FreePascala przeniesiony do MadPascala
https://github.com/tebe6502/Mad-Pascal/ … b/lzjb.pas

różne przykłady dekompresji lub kompresji
https://github.com/tebe6502/Mad-Pascal/ … ompression

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

127

willy napisał/a:

Istnieje jekis PACKER ktory w miare szybko jest w stanie pakowac dane na 6502?

Co to znaczy "w miarę szybko" ?
http://atariki.krap.pl/index.php/FlashPack jest w miarę szybki

https://www.youtube.com/watch?v=jofNR_WkoCE

128

@xxl, dzięki za rozmowę na party!

Moje pierwsze podejście do ZX0: 139 bajtów kodu vs 219 XXLa "nie-stream"

Obiecująco wygląda też ZX02, który jest modyfikacją ZX0 pod 6502: https://github.com/dmsc/zx02
- są tam aż trzy procedury do wyboru. Wyniki Mono wskazują, że pakuje bardzo podobnie do ZX0 - dlaczego nie ma ich w pierwszym poście?

https://www.youtube.com/watch?v=jofNR_WkoCE

129

Fajny jest tez zx5. Ostatnio pakowałem plik 35kb (1.dat)  i zx5 był najlepszy, oczywiście  shlikler i upkr były lepsze, ale one dłużej rozpakowują i mają większe wymagania pamięciowe. Z zx5 jest jednak jeden problem, mianowicie przy niektórych plikach paker się wysypuje :(
Małe porównanie:
35˙867 1.dat
13˙761 1.dat.zx0
13˙763 1.dat.zx02
13˙715 1.dat.zx5
16˙991 1.dat.zx7

130 Ostatnio edytowany przez mono (2025-08-23 20:44:45)

WCrush https://csdb.dk/release/?id=154698

$ wcrush 6 conan.gfx conan.gfx.wcr

crush for windows v0.9 by CS

trying to crush conan.gfx...

size of conan.gfx: 7680 bytes.
crushed size: 1867 bytes, 24% left

$ wcrush 6 Landscape.xex Landscape.xex.wcr

crush for windows v0.9 by CS

trying to crush Landscape.xex...

size of Landscape.xex: 30653 bytes.
crushed size: 14610 bytes, 47% left

$ wcrush 6 RiverRaid.rom RiverRaid.rom.wcr

crush for windows v0.9 by CS

trying to crush RiverRaid.rom...

size of RiverRaid.rom: 8192 bytes.
crushed size: 6528 bytes, 79% left
Post's attachments

Makefile 2.48 kb, liczba pobrań: 4 (od 2025-08-23) 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

131 Ostatnio edytowany przez mono (2025-08-24 16:30:02)

Wziąłem wersję PackFire 1.6 z https://www.pouet.net/prod.php?which=54840 i dostałem problem z alokacją pamięci przy uruchomieniu tego pod wine-9.0 (Ubuntu 9.0~repack-4build3) na Ubuntu 24.04.3 LTS.
Trzeba zrobić tak:

$ wget https://ntcore.com/files/4gb_patch.zip
$ unzip 4gb_patch.zip
$ wine 4gb_patch.exe packfire.exe

i działa. To samo zrobiłem dla PackFire 1.2k. Wcześniej działało, teraz przestało.

Post's attachments

Makefile 2.82 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

132

https://github.com/tebe6502/Mad-Assembl … n/packfire

działa tylko z PackFire 1.2

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

133 Ostatnio edytowany przez mono (Dzisiaj 15:02:40)

Jeszcze jeden komodorowy kompresor - pucrunch https://github.com/mist64/pucrunch

$ pucrunch -fshort -d -l0x1000 -x0x1000 conan.gfx conan.gfx.pcr
Load address 0x1000=4096, Last byte 0x2dff=11775
Exec address 0x1000=4096
New load address 0x0801=2049
Interrupts enabled and memory config set to $37 after decompression
Runnable on Commodore 64
Checked: 7680 
Selecting the number of escape bits.. Selected 2-bit escapes
Optimizing LZ77 and RLE lengths...
Selecting LZPOS LO length.. Selected 8-bit LZPOS LO part
Note: Using option -m6 you may get better results.
In: 7680, out: 1983, ratio: 25.83% (2.07[1.79] b/B), gained: 74.18%
Gained RLE: 2390 (S+L:1277+1113), LZ: 3613, Esc: -18, Decompressor: -285
Times  RLE: 148 (145+3), LZ: 382, Esc: 30 (normal: 654), 2 escape bits
Saving C64 short
conan.gfx.pcr uses the memory $2d-$30, $f7-$1d7, and $0802-$2e09.
Compressed 7680 bytes in 0.01 seconds (909.09 kB/sec)

$ pucrunch -fshort -d -l0x1000 -x0x1000 Landscape.xex Landscape.xex.pcr
Load address 0x1000=4096, Last byte 0x87bc=34748
Exec address 0x1000=4096
New load address 0x0801=2049
Interrupts enabled and memory config set to $37 after decompression
Runnable on Commodore 64
Checked: 30653 
Selecting the number of escape bits.. Selected 2-bit escapes
Optimizing LZ77 and RLE lengths...
Selecting LZPOS LO length.. Selected 8-bit LZPOS LO part
In: 30653, out: 14460, ratio: 47.18% (3.78[3.71] b/B), gained: 52.83%
Gained RLE: 6143 (S+L:3481+2662), LZ: 10610, Esc: -273, Decompressor: -285
Times  RLE: 471 (467+4), LZ: 2959, Esc: 437 (normal: 7645), 2 escape bits
Saving C64 short
Landscape.xex.pcr uses the memory $2d-$30, $f7-$1d7, and $0802-$87c8.
Compressed 30653 bytes in 0.02 seconds (1210.31 kB/sec)

$ pucrunch -fshort -d -l0x1000 -x0x1000 RiverRaid.rom RiverRaid.rom.pcr
Load address 0x1000=4096, Last byte 0x2fff=12287
Exec address 0x1000=4096
New load address 0x0801=2049
Interrupts enabled and memory config set to $37 after decompression
Runnable on Commodore 64
Checked: 8192 
Selecting the number of escape bits.. Selected 2-bit escapes
Optimizing LZ77 and RLE lengths...
Selecting LZPOS LO length.. Selected 8-bit LZPOS LO part
Note: Using option -m6 you may get better results.
In: 8192, out: 6810, ratio: 83.13% (6.66[6.40] b/B), gained: 16.88%
Gained RLE: 412 (S+L:412+0), LZ: 1462, Esc: -205, Decompressor: -285
Times  RLE: 134 (134+0), LZ: 1033, Esc: 329 (normal: 4265), 2 escape bits
Saving C64 short
RiverRaid.rom.pcr uses the memory $2d-$30, $f7-$1d7, and $0802-$3008.
Compressed 8192 bytes in 0.00 seconds (2680.97 kB/sec)

Niestety rozmiar liczony jest razem z dekompresorem i nie da się uzyskać informacji o samych danych wynikowych (jakoś pewnie by się dało policzyć). Całościowo:

  1983  conan.gfx.pcr
 14460  Landscape.xex.pcr
  6810  RiverRaid.rom.pcr
Post's attachments

Makefile 2.97 kb, liczba pobrań: 1 (od 2025-09-18) 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

134 Ostatnio edytowany przez seban (Dzisiaj 17:22:54)

Hej!

Zdarzyło mi się używać PuCrunch zanim jeszcze powstał Exomizer (autor exomizera nawet wspomina że opierał się na PuCrunch). Oficjalna strona PuCrunch znajduje się tutaj: https://a1bert.kapsi.fi/Dev/pucrunch/

Używając PuCrunch da się pakować zbiory danych, wynikowy plik nie zawiera procedury dekompresującej, należy użyć flagi -d -c0 ( i dalej opcjonalnie -l 0xaddr -x 0xaddr) , może to wyglądać np. tak:

./pucrunch -c0 -d -l 0xa150 -s conan.gfx conan.pu
Note: The execution address was not detected correctly!
      Use the -x option to set the execution address.
Load address 0xa150=41296, Last byte 0xbf4f=48975
Exec address 0xffffffff=-1
New load address 0x0801=2049
Standalone decompressor required
Checked: 7680 
Selecting the number of escape bits..  1:1251 2:1177 3:1560
Selected 2-bit escapes
Optimizing LZ77 and RLE lengths... gained 346 units.
Selecting LZPOS LO length..  8:6342 9:6548 10:6762 11:7016 12:7296
Selected 8-bit LZPOS LO part
Note: Using option -m6 you may get better results.
RLE Byte Code Re-Tune, RLE Ranks:
  1.0x00 67  
  2.0xaa 31    3.0x55 21    4.0x15 5     5.0x44 5     6.0x04 4     7.0x45 4   
  8.0x54 3     9.0x10 2    10.0x05 1    11.0x0c 1    12.0x11 1    13.0x40 1   
 14.0x51 1    15.0xa8 1   
In: 7680, out: 1729, ratio: 22.52% (1.81[1.79] b/B), gained: 77.49%
Gained RLE: 2390 (S+L:1277+1113), LZ: 3613, Esc: -18, Decompressor: -31
Times  RLE: 148 (145+3), LZ: 382, Esc: 30 (normal: 654), 2 escape bits
(Gained by RLE Code: 84, LZPOS LO Bits 8, maxLen: 256, tag bit/prim. 1.03)
   LZPOS HI+2 LZLEN S-RLE RLEcode
   ------------------------------
2         306    88    50      67
3-4        50    95    26      52
5-8        17    46    26      18
9-16        7    53     6      11
17-32       2    81    27       0*
33-64       0    18    10       -
65-128      0     1     0       -
129-256     0     0     -       -
LZ77 rescan gained 0 bytes
Hash Checks 27423 (7007, 25.55% equal), RLE/LZ compares 41740
Compressed 7680 bytes in 0.00 seconds (2323.42 kB/sec)

Wyniki kompresji poszczególnych plików:

conan.pu - 1729 bajtów ( ./pucrunch -c0 -d -l 0xa150 -s conan.gfx conan.pu )
RiverRaid.rom - 6556 bajtów ( ./pucrunch -c0 -d -l 0xa000 -s RiverRaid.rom RiverRaid.pu  )
Landscape.xex - 14206 bajtów ( ./pucrunch -c0 -d -l 0x3000 -s Landscape.xex Landscape.pu )

135

Dzięki Seban! Wychodzi na to, że ten PuCrunch lokuje się gdzieś w pobliżu deflate (kompresory z mojego Makefile, ale xxl ma więcej w pierwszym poście):

$ ls -lSra conan.gfx*
 1403  conan.gfx.upk
 1440  conan.gfx.shr
 1452  conan.gfx.pfr
 1452  conan.gfx.pfl
 1561  conan.gfx.ex3
 1566  conan.gfx.ex2
 1581  conan.gfx.pft
 1599  conan.gfx.zfl
 1625  conan.gfx.zx0
 1629  conan.gfx.zx02
 1671  conan.gfx.zx1
 1671  conan.gfx.dfl
 1729  conan.gfx.pcr
 1739  conan.gfx.apl
 1770  conan.gfx.bbx
 1813  conan.gfx.arj
 1864  conan.gfx.zx7
 1867  conan.gfx.wcr
 1893  conan.gfx.chr
 1927  conan.gfx.bpc
 2223  conan.gfx.lz4
 7680  conan.gfx

$ ls -lSra RiverRaid.rom*
 5953  RiverRaid.rom.upk
 6006  RiverRaid.rom.pfr
 6006  RiverRaid.rom.pfl
 6068  RiverRaid.rom.shr
 6147  RiverRaid.rom.bpc
 6192  RiverRaid.rom.zfl
 6199  RiverRaid.rom.ex3
 6284  RiverRaid.rom.pft
 6284  RiverRaid.rom.ex2
 6292  RiverRaid.rom.dfl
 6313  RiverRaid.rom.zx02
 6313  RiverRaid.rom.zx0
 6436  RiverRaid.rom.arj
 6440  RiverRaid.rom.apl
 6504  RiverRaid.rom.zx1
 6525  RiverRaid.rom.chr
 6528  RiverRaid.rom.wcr
 6556  RiverRaid.rom.pcr
 6614  RiverRaid.rom.bbx
 7156  RiverRaid.rom.zx7
 7417  RiverRaid.rom.lz4
 8192  RiverRaid.rom

$ ls -lSra Landscape.xex*
 12473  Landscape.xex.upk
 12761  Landscape.xex.pfr
 12761  Landscape.xex.pfl
 12765  Landscape.xex.bpc
 12921  Landscape.xex.shr
 13486  Landscape.xex.zfl
 13530  Landscape.xex.zx0
 13547  Landscape.xex.zx02
 13604  Landscape.xex.ex3
 13771  Landscape.xex.ex2
 13823  Landscape.xex.pft
 13917  Landscape.xex.zx1
 14028  Landscape.xex.apl
 14206  Landscape.xex.pcr
 14491  Landscape.xex.dfl
 14529  Landscape.xex.chr
 14587  Landscape.xex.bbx
 14610  Landscape.xex.wcr
 14621  Landscape.xex.arj
 15769  Landscape.xex.zx7
 16937  Landscape.xex.lz4
 30653  Landscape.xex

Chociaż to zależy od danych.

Post's attachments

Makefile 2.97 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje