[zxspectrum] (de)compressione e Z88DK

  • From: "Marcello Zaniboni" <marcello.zaniboni@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 27 Jul 2006 18:32:10 +0200

Vi aggiorno su un progettino per ora inutile che sto portando avanti
con lentezza e discontinuità :-)

E' già da un po' di tempo che provo a fare una libreria di
decompressione per Z88DK. L'idea iniziale era di fare scrivere a Z88DK
un file compilato in formato già compresso, comprimendolo quindi dopo
la compilazione, poco prima di creare il TAP; e poi di decomprimerlo
al volo dopo l'esecuzione... insomma una specie di UPX
(http://upx.sourceforge.net/).
Ovviamente il grande ispiratore del lavoro è stato Paolo Ferraris con
i suoi minigiochi!

Poi la faccenda si è evoluta e ho fatto la parte di decompressione
sotto forma di funzione ANSI C. Qui l'idea era di comprimere prima i
dati da PC e poi il programma compilato può decomprimerli in un'area
di memoria a sua scelta. Purtroppo mi sono scontrato con le
performance del codice compilato :-( le prime prove sono scoraggianti:

http://www.geocities.com/marcellozaniboni/zxdecompression.zip

ho compresso uno screen da 6912 a 3499 byte (-49% ...fin qui molto
bene); la lunghezza complessiva del compilato è diventata di 4741,
cioè 3499 di dati + 1242 di programma... un pò molti, ma va bene lo
stesso.
Il problemone sono le performance: più di un quarto d'ora per
decomprimere tutto!!! Guardando i risultati dello stesso algoritmo su
PC mi ero fatto un po' di illusioni... a questo punto mi sa che mi
tocca riprendere il linguaggio macchina dello Z80!!! :-)

Ciao,
Marcello

Other related posts: