je pense que la solution de squale92 est la meilleur
Tibz8
: Entierement d'accord et attendre une ou 2 secondes entre chaque niveux n'est pas bien grave ce qui serait grave c'est que cela ce produise pendant le jeu !
le pb C ke pour super metroid les niveaux sont gros (+ de 50ko pour certains) donc les tps de chargement sont de l'ordre de 5sec si C pa +.

Thibaut B
:le pb C ke pour super metroid les niveaux sont gros (+ de 50ko pour certains) donc les tps de chargement sont de l'ordre de 5sec si C pa +.
Tu peux avoir un temps de 2 secondes maxi avec le format de Pollux

Entierement d'accord et attendre une ou 2 secondes entre chaque niveux n'est pas bien grave ce qui serait grave c'est que cela ce produise pendant le jeu !
Je vous rapelle qu'il existe les 'Pack Archive

Pollux
:Thibaut B
:le pb C ke pour super metroid les niveaux sont gros (+ de 50ko pour certains) donc les tps de chargement sont de l'ordre de 5sec si C pa +.
Tu peux avoir un temps de 2 secondes maxi avec le format de Pollux
La routine de décompression tourne autour de 80 ko/s, donc 50 ko ça se décompresse en à peine plus d'une demi-seconde

Tibz8
: la j'avoue que je ne comprend pas !!
Pourtant mon shell met plus de 0,5 secondes à se lancer je crois
). En mettant un "return;" tout au début de _main() et en le faisant tourner en boucle, il met 0.6 secondes pour se charger puis se décharger (d'où la différence de 0.05 secondes).
(mais ça, ça dépend des données à décompresser : parfois on fait du 70 ko/s, parfois 90 ou plus).
Et l'ordre de grandeur est correct.est-ce k'il est possible d'implanter xpack directement dans le prog plutot ke de l'utiliser en externe? j'avoue ke je préfèrerai mais bon j'en ferai pa un drame si C pa le cas
en fait le jeu est un ensemble de zones accollées les unes aux autres et on peu passer de l'une a l'autre qd on ve. C pas comme un shoot'm up par exemple ou tu passe de niveaux en niveaux et ou tu peux te permettre un tps de chargement.
Pollux
: Le décompresseur est en lib statique (il n'est pas très gros, 800 octets environ), mais je n'ai pas encore fait de lib au format TIGCC (fichier .a), seulement au format GTC.
Pollux
: SMA a aussi ce problème, et fait une petite pause (une demi-seconde) lorsqu'on changeait de zone. Il utilise shrinklib (qui est assez rapide, un peu plus lent que XPak je crois mais pas forcément de beaucoup), mais c'est pour kernel. Attention, si tu utilises ttpack, tu risques d'avoir de gros problèmes de vitesse et/ou de taux de compression (si tu essayes de trop morceler tes niveaux).
).
) je me demande si ce serait pas possible d'implémenter un LZ (ou plus généralement, un PuCrunch-like comme TTPack ou XPak) à dépendance limitée (et non à distance de LZ limitée) : i.e. quand on décompresse une séquence LZ, il faut qu'elle soit à une distance d du point d'insertion de moins de d_max et que les octets auxquels elle fait référence soient des littéraux ou bien des séquences LZ à une distance d' de moins de d_max-d, et qu'elle ne fasse elle-même référence qu'à des littéraux ou des séquences LZ à une distance de moins de d_max-d-d', et ainsi de suite... Je ne suis pas sûr que la pénalité de taux de compression soit complètement dissuasive (ça doit rester qd même assez supérieur à Huffman), et ça permet de pouvoir accéder à un endroit quelconque du fichier compressé en décompressant seulement d_max octets en trop (et accessoirement, on peut aussi se contenter d'un buffer de taille d_max). En limitant seulement la distance du LZ, on a l'avantage de la mémoire en O(d_max), mais on n'a pas le "temps d'accès" (comme sur les disques durs
) en O(d_max).Kevin Kofler
: Une solution pour minimiser la consommation de la RAM tout en réduisant celle de l'archive, mais évidemment au dépens de la vitesse, est de décompresser on-the-fly, c'est-à-dire d'utiliser une compression simple (par exemple RLE) et d'utiliser des routines d'affichage de sprites compressés (RLE).
(Pack Archive powa: compresses ou non-compresses (et quel que soit le format de compression): kernel::ExtractFile + HeapFree). L'utilisateur final pourra compresser avec shrnklib, ou Xpack ou TTpack.
+ Les graphs du persos, ennemis, bref les sprites -> Fichier archivee non-compressee.