CPC Rulez
https://cpcrulez.fr/forum/

Compression LZ4 sur Amstrad CPC ?
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5096
Page 1 sur 1

Auteur :  genesis8 [ 16 Juil 2013, 20:52 ]
Sujet du message :  Compression LZ4 sur Amstrad CPC ?

Juste pour information, l'algo de compression LZ4 (https://code.google.com/p/lz4/) compresse rapidement et décompresse encore plus rapidement.

Il existe plusieurs implémentations dont une pour 6502 (162 octets) et 65C02 (156 octets) : http://pferrie.host22.com/misc/appleii.htm

Peut-être intéressant pour Amstrad CPC ?


LZ4 is a very fast compressor, based on well-known LZ77 (Lempel-Ziv) algorithm.
Originally a fork from LZP2, it provides better compression ratio for text files and reaches impressive decompression speed, in the range and beyond 1GB/s per core (!), especially for binary files. These speeds are scalable with multi-threading modes, quickly reaching RAM speed limits on multi-core systems.

Auteur :  Megachur [ 17 Juil 2013, 05:49 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

effectivement avec le source en c, ou l'adaptation asm en 8088/8086, cela serait facile à porter sur cpc...http://www.oldskool.org/pc/lz4_8088/LZ4_8088.ZIP

par contre, pas sur qu'avec nos 64kb de mémoire, on soit un peu juste pour ce type de compacteur/decompacteur moderne...

Auteur :  TotO [ 17 Juil 2013, 08:06 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Merci pour l'info.

Renseignements pris, il n'y a aucun intérêt à la chose.
Exomizer et appack (que l'on utilise déjà) sont plus performants sur notre CPC.

Auteur :  markerror [ 17 Juil 2013, 21:27 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Hum, pas si sûr que cela soit sans intérêt. La vitesse de décompression est aussi un facteur intéressant (je pense par exemple à des images de jeux d'aventure).

Auteur :  TotO [ 18 Juil 2013, 10:09 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

La fin de l'intro de R-Type utilise 3 frames de 16K compressées avec appack.
La décompression et l'affichage de chaque frame se fait en un dixième de seconde.

Mais si tu fais un jeu d'aventure en ROM avec des animations en plus de 12fps je dis pas non... :)

Auteur :  Titan49 [ 20 Juil 2013, 16:12 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

C'est un peu réducteur.
La compression de frame n'est jamais qu'un exemple de compression possible, et pas nécessairement le meilleur pour comprendre l'intérêt de LZ4.

L'intérêt d'un algo comme LZ4, c'est qu'il est si rapide en décompression qu'on peut l'utiliser sur des ressources qu'on n'aurait jamais envisagées de garder compressées en mémoire auparavant.
Il suffit d'aller sur les forum anglophones ou russes pour voir des commentaires du genre "c'est si rapide que c'est compétitif avec memcpy()".

Du coup, on peut à peu prêt tout compresser (les sprites, les background, les maps, etc.) puis décompresser à la volée uniquement ce qui est nécessaire pour fabriquer la frame en cours.
30% par là, 50% par ici, et rapidement, on se retrouve avec 10-15Ko en plus à exploiter sur la machine. Ca peut faire la différence pour afficher plus d'objets et/ou créer des animations plus fluides dans le même budget mémoire.

Cette technique n'est pas limitée aux CPU "vintage", même les consoles modernes l'utilisent : LZ4 est cité sur XboX, sur PSP, et même sur PC (Guild Wars 2). Pourtant, ces machines sont sensiblement plus balaises, elles auraient pu passer direct à la compression LZMA par exemple ?
Et bien non, car le temps réel, c'est important. La décompression ultra-rapide, c'est bien ce que ces jeux sont venus chercher.


> Exomizer et appack (que l'on utilise déjà) sont plus performants sur notre CPC.

C'est bien possible, mais n'oubliez pas que pour des ressources "packagées" qu'on ne fait que lire, la comparaison se fait avec LZ4 HC (Haute Compression). C'est une variante qui compresse très sensiblement plus, tout en augmentant encore la vitesse de décompression !

Auteur :  Titan49 [ 11 Oct 2013, 10:58 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Une petite trouvaille, qui m'a fait penser à ce thread :



Atari 8bit LZ4 decompression

Auteur :  Titan49 [ 21 Oct 2013, 14:21 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Oooh, ben encore mieux,
on dirait une implémentation prête à l'emploi ... :

http://www.worldofspectrum.org/forums/s ... hp?t=45185 :eng:

Auteur :  hERMOL [ 21 Oct 2013, 22:05 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

J'ai fais un essai avec le compresseur lz4 en ligne de commande , avec le paramètre "-9" (High compression) : j'ai obtenu 13964 octets sur le binaire de boulder dash, pas terrible, c'est loin derrière exomizer

url: https://cpcrulez.fr/applications_tools_c ... ARATIF.htm

Auteur :  TotO [ 22 Oct 2013, 01:32 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Et comparé en temps de décompression ?

Auteur :  hERMOL [ 22 Oct 2013, 08:51 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

c'est une bonne idée, je vais l'inclure sur ces tableaux

Auteur :  TotO [ 22 Oct 2013, 09:39 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Merci.
Parfois, c'est plus le temps d'accès de mise à disposition des données qui importe, même si le taux de compression est moindre.
A chaque usage son algo ! :)

Auteur :  Titan49 [ 24 Oct 2013, 13:22 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

On peut gagner quelques octets en extrayant le format "brut" (donc ça vire les entêtes et les checksums), mais bon, pas de quoi s'emballer, ça fera gagner 30 octets tout au plus.

D'après l'auteur, son algo de décompression LZ4 est environ 2x plus rapide que ZX7.
Alors OK, c'est plus gros, mais c'est aussi plus "réactif".
Au final, ça peut dépendre de l'usage qu'on veut.

Auteur :  TotO [ 25 Oct 2013, 14:36 ]
Sujet du message :  Re: Compression LZ4 sur Amstrad CPC ?

Titan49 a écrit :
D'après l'auteur, son algo de décompression LZ4 est environ 2x plus rapide que ZX7.
Tout l'intérêt est là. Avoir un ratio taille/décompression avantageux.
Pour un usage classique, autant utiliser exomizer ou apack.

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/