Hai gia' provato a vedere come funzionano i rar e i compattatori che si trovano qui: http://trd.speccy.cz/system.htm ? come ti sembrano ----- Original Message ----- From: "Paolo Ferraris" <pieffe8@xxxxxxxxxxxxx> To: <zxspectrum@xxxxxxxxxxxxx> Sent: Sunday, April 16, 2006 6:15 AM Subject: [zxspectrum] algoritmo di compressione > Ciao a tutti, > > approfittando del fatto che in questi giorni c'e` poco traffico sulla > lista (a proposito, condoglianze per il tragico avvenimento dei giorni > scorsi) ne approfitto per mandarvi questa lunga email mettendovi al > corrente dei risultati delle mie sperimentazioni sul mio algoritmo di > compressione. > > Come molti di voi gia` sanno, tre anni fa avevo sviluppato un algoritmo > di compressione specificatamente per la minigame compo. Infatti, quello > che cercavo (e ancora cerco) e` che la dimensione combinata del codice > compresso e del decompressore sia la piu` piccola possibile nel caso di > minigiochi (pochi KB di codice). In particolare, non mi interessava ne` > la velocita` di decompressione ne` tantomeno di quella di compressione, > a tal punto che il compressore funziona solo su PC. Il mio codice e` > stato usato sia da Russell Marks nei minigiochi Zblast SD e Scrolly > Stack, sia da me nelle due versioni di 4k Race e in zxsudoku. > > Recentemente sono tornato a lavorare sul mio algoritmo. Ho scoperto che, > gia` con quel che avevo allora, il mio compressore rendeva meglio, per > quanto riguarda il criterio descritto qui sopra, dei piu` famosi packers > per C64 e Spectrum: anche nei casi in cui il mio codice compresso non > era il piu` piccolo, era la dimensione del decompressore a fare la > differenza. Per esempio, Exomizer, (credo) il piu` famoso e potente > packer del C64, riusciva a rispiarmare, nel comprimere 4k Race refueled, > circa 80 bytes rispetto al mio compressore, ma il mio decompressore usa > meno di 100 bytes rispetto agli oltri 280 dell'altro. > > Dato che sono un dannato perfezionista (a volte mi odio per questo :-) ) > non mi e` andato completamente giu` che qualche compressore per C64 > comprimesse piu` del mio :-), anche se, ovviamente, non sempre si puo` > avere tutto: ci sta` che la compressione non sia ottimale se si vuole > tenere il decompressore piccolo. > > Prendendo spunti qua e la`, ho avuto perecchie idee per migliorare il > mio compressore. L'idea di base del mio packer --- come la codifica > stile-Huffmann viene fatta --- risulta sempre molto valida, ma ho > migliorato sia la codifica stile-LZ sia gli algoritmi usati dal > compressore per trovare la codifica piu` corta possibile. Ora il mio > compressore comprime praticamente uguale a exomizer (almeno nei > minigiochi), avendo "ingrossato" il mio decompressore di soli 14 bytes :-) > > Ho quindi recuperato ben 74 bytes in 4k Race Refueled. Forse potrei > usarli per aggiungere qualcosa al gioco e risottometterlo di nuovo > quest'anno :-) > (Ovviamente scherzo. Ho fatto ben di piu` che "aggiungere qualcosa" > l'anno scorso ma sono stato oggetto di forti critiche. Se facessi anche > solo qualcosa di simile mi ammazzerebbero :-) ) > > Non so se rilasciare il mio programma. Fare polishing del codice > richiede tempo ed e` abbastanza noioso. Non sono neanche particolarmente > bravo e veloce a scrivere documentazione. Poi non vorrei perdere il mio > "vantaggio" nella minigame compo :-) anche se mettendo il mio codice a > disposizione permetterebbe agli sviluppatori per Spectrum di essere allo > stesso livello di quelli per Commodore: I commodoriani usano sempre > exomizer o similari, mentre finora nessun minigame per lo spectrum usa > un algoritmo decente, a parte quelli che usano il mio. > > > -p > >