SPACKER: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
m (Reverted edits by CcoboCeldo (Talk) to last version by Silver Surfer) |
||
Line 1: | Line 1: | ||
− | http://www.textvaralo.com |
||
<pre> |
<pre> |
||
S P A C K E R III | |
S P A C K E R III | |
||
Line 14: | Line 13: | ||
- Spacker 3 est un compacteur de fichier Exe et data | |
- Spacker 3 est un compacteur de fichier Exe et data | |
||
| |
| |
||
− | - C'est aussi un archiveur |
+ | - C'est aussi un archiveur trŠs rapide | |
| |
| |
||
- Existera aussi sur Amiga (en cours), Falcon (version DSP), | |
- Existera aussi sur Amiga (en cours), Falcon (version DSP), | |
||
Line 22: | Line 21: | ||
*** ATTENTION *** |
*** ATTENTION *** |
||
− | Le fichier AUTO_SP3.PRG est un programme RESIDENT qui permet |
+ | Le fichier AUTO_SP3.PRG est un programme RESIDENT qui permet … |
− | tout fichier |
+ | tout fichier compr‚ss‚ avec SPACKER3 de se d‚compresser,il doit |
− | par |
+ | par cons‚quent se trouver en premiŠre place dans le dossier AUTO. |
− | Lors du chargement automatique du |
+ | Lors du chargement automatique du r‚sident, on peut ne pas |
− | l'activer en maintenant la touche CONTROL |
+ | l'activer en maintenant la touche CONTROL enfonc‚e. |
***************** |
***************** |
||
~~~~~~~~~~~~~~~~~~ |
~~~~~~~~~~~~~~~~~~ |
||
− | Les |
+ | Les diff‚rentes fonctions sont class‚es par menu... |
* Menu 'FILE' |
* Menu 'FILE' |
||
Line 39: | Line 38: | ||
FORMAT DISK | |
FORMAT DISK | |
||
DISK INFO | Disponibles uniquement avec un selecteur |
DISK INFO | Disponibles uniquement avec un selecteur |
||
− | FILE INFO |------ du type de |
+ | FILE INFO |------ du type de S‚l‚tric (Shareware) qui vous |
MOVE FILE | est offert avec le Spacker 3 |
MOVE FILE | est offert avec le Spacker 3 |
||
COPY FILE | |
COPY FILE | |
||
Line 47: | Line 46: | ||
*Skip or Copy ... Permet de passer ou copier les fichiers qui |
*Skip or Copy ... Permet de passer ou copier les fichiers qui |
||
− | ne peuvent etre |
+ | ne peuvent etre pack‚es sur la destination. |
− | + | utilis‚ lors du compressage de plusieurs fichiers, il assure la |
|
copie (option Copy) sur le disque destination pour les fichiers |
copie (option Copy) sur le disque destination pour les fichiers |
||
− | ne pouvant |
+ | ne pouvant Štre compr‚ss‚s (taille originale trop petite ou taille |
− | + | compr‚ss‚e sup‚rieure … la taille originale). |
|
− | *Src A Dst A ... |
+ | *Src A Dst A ... D‚finit le lecteur Source et le lecteur destination |
*save Config ... sauvegarde la configuration |
*save Config ... sauvegarde la configuration |
||
Patch SPACKER3 en sauvegardant |
Patch SPACKER3 en sauvegardant |
||
− | l' |
+ | l'unit‚ (de disquette/disque) source, l'unit‚ destination, |
l'indicateur FILE PREF dans le menu FICHIER(C ou autre), |
l'indicateur FILE PREF dans le menu FICHIER(C ou autre), |
||
la prise ou non en compte du dossier dans le menu ARCHIVE (P ou autre), |
la prise ou non en compte du dossier dans le menu ARCHIVE (P ou autre), |
||
l'indicateur flash et la couleur de flash dans le menu PACK |
l'indicateur flash et la couleur de flash dans le menu PACK |
||
(F ou autre, RGB). |
(F ou autre, RGB). |
||
− | La config est en ASCII et |
+ | La config est en ASCII et … l'offset 28(entete)+2 de SPACKER3. |
− | *Create Auto SP3 ... |
+ | *Create Auto SP3 ... Cr‚e le r‚sident indispensable pour le decrunch |
des executables et des datas |
des executables et des datas |
||
− | *touch SP3 files Date ... Correction de la date des fichiers |
+ | *touch SP3 files Date ... Correction de la date des fichiers compact‚es |
− | permet de rattacher la longueur originale d'un fichier |
+ | permet de rattacher la longueur originale d'un fichier compress‚ |
− | avec SPACKER3 directement en |
+ | avec SPACKER3 directement en ‚crasant la date et l'heure de |
− | + | cr‚ation/modification du fichier: seule solution restante pour |
|
− | + | ‚viter le cycle lent ouverture/lecture/fermeture de fichiers |
|
lors d'une selection de fichiers. La taille originale est utile |
lors d'une selection de fichiers. La taille originale est utile |
||
− | + | … connaitre car elle permet de r‚server une taille m‚moire |
|
− | + | ‚gale au celle du fichier une fois d‚compress‚. |
|
− | L'attribut ARCHIVE est aussi |
+ | L'attribut ARCHIVE est aussi utilis‚ pour les fichiers compress‚s |
par SPACKER3, il se conserve lors d'une copie de fichier, la |
par SPACKER3, il se conserve lors d'une copie de fichier, la |
||
− | date par contre change, d' |
+ | date par contre change, d'o— l'int‚ret de cette fonction... |
* MENU 'OFFSET' |
* MENU 'OFFSET' |
||
--------------- |
--------------- |
||
− | un simple |
+ | un simple ‚diteur de fichiers Offset...Hum Hum.. |
Les offsets permettent d'ajuster la structure de compression |
Les offsets permettent d'ajuster la structure de compression |
||
− | + | … la structure de chargement d'un type de fichier: une image |
|
− | DEGAS |
+ | DEGAS compress‚e en un seul bloc et charg‚e en plusieurs fois |
− | par un programme de dessin ne sera pas |
+ | par un programme de dessin ne sera pas d‚compress‚e ou plantera |
le programme. |
le programme. |
||
Le module ESPION de structure de chargement est inclus dans le |
Le module ESPION de structure de chargement est inclus dans le |
||
− | + | r‚sident, il faut recharger le r‚sident via le Gem et choisir |
|
− | l'option SPY OFF pour indiquer l'extension des fichiers |
+ | l'option SPY OFF pour indiquer l'extension des fichiers … |
surveiller: une sauvegarde de la structure de chargement sera |
surveiller: une sauvegarde de la structure de chargement sera |
||
− | automatiquement |
+ | automatiquement effectu‚e (extension r‚serv‚e SPn ou n varie de |
− | 0 |
+ | 0 … 9) lors de la fermeture du fichier (ne pas oublier de |
− | + | d‚prot‚ger la disquette). |
|
− | Ce fichier offset |
+ | Ce fichier offset g‚n‚r‚ peut Štre ‚dit‚ et adapt‚ … un type |
standard de fichier (images DEGAS, fontes CALAMUS...). |
standard de fichier (images DEGAS, fontes CALAMUS...). |
||
Les premiers octets de ce fichier offset contiennent l'extension. |
Les premiers octets de ce fichier offset contiennent l'extension. |
||
− | Un commentaire peut |
+ | Un commentaire peut Štre rajout‚ par l'usage d'une tabulation ou |
− | d'un ';' (les lignes blanches ou |
+ | d'un ';' (les lignes blanches ou commen‡ant par un ';' sont |
− | + | ignor‚es par l'‚diteur int‚gr‚ d'offsets dans SPACKER3). |
|
− | 3 types de blocs dans un fichier sont |
+ | 3 types de blocs dans un fichier sont … distinguer: le type |
− | MOVE ( |
+ | MOVE (cod‚ par -) indique que le bloc ne sera pas compress‚ |
− | dans le fichier |
+ | dans le fichier r‚sultat de la compression, le type PACK (cod‚ +) |
− | pour compresser le bloc et le type PGFX ( |
+ | pour compresser le bloc et le type PGFX (cod‚ *) pour compresser |
le bloc par algorithme graphique 4 plans. |
le bloc par algorithme graphique 4 plans. |
||
− | Toutes les longueurs de bloc doivent |
+ | Toutes les longueurs de bloc doivent Štre paires, seul le dernier |
− | bloc fait exception s'il est |
+ | bloc fait exception s'il est assign‚ du type MOVE (pour les fichiers |
de taille originale impaire). La description d'une ligne bloc du |
de taille originale impaire). La description d'une ligne bloc du |
||
− | fichier offset est la suivante (les espaces entre |
+ | fichier offset est la suivante (les espaces entre caractŠres et |
− | les tabulations sont |
+ | les tabulations sont g‚r‚s): 'type de bloc' + 'longueur de bloc', |
− | longueur HEXA sur 5 |
+ | longueur HEXA sur 5 caractŠres max, le total des longueurs HEXA |
− | ne doit pas |
+ | ne doit pas d‚passer F423F soit 999999 octets. Les blocs de |
longueur nulle sont expressement interdits. |
longueur nulle sont expressement interdits. |
||
voici quelques exemples: |
voici quelques exemples: |
||
− | - 80 ; 128 octets |
+ | - 80 ; 128 octets … ne pas compresser (entete NEO) |
− | ; ligne de commentaires |
+ | ; ligne de commentaires ignor‚e |
− | *07D00 ; |
+ | *07D00 ; ‚cran basse r‚solution compress‚ par algo. graphique |
Il est possible de standardiser tous les fichiers offsets d'un |
Il est possible de standardiser tous les fichiers offsets d'un |
||
type de fichier en un seul fichier offset en incluant un bloc |
type de fichier en un seul fichier offset en incluant un bloc |
||
et un seul de longueur paire et variable: au lieu de la taille |
et un seul de longueur paire et variable: au lieu de la taille |
||
− | il suffit de saisir le mot |
+ | il suffit de saisir le mot cl‚ 'dummy' ou 'DUMMY' (ou mŠme |
− | 'DuMMy' si vous |
+ | 'DuMMy' si vous pr‚f‚rez). Le bloc connaitra sa longueur au |
moment de la compression (taille originale du fichier moins |
moment de la compression (taille originale du fichier moins |
||
tailles des autres blocs). Les fontes Calamus sont des fichiers |
tailles des autres blocs). Les fontes Calamus sont des fichiers |
||
− | + | charg‚s en 13 fois, 1 seul bloc parmi ces 13 blocs est variable |
|
− | et contient les data de la fonte: un seul fichier offset, |
+ | et contient les data de la fonte: un seul fichier offset, livr‚ |
− | avec SPACKER3, permet de |
+ | avec SPACKER3, permet de g‚rer toutes les fontes. Ce principe |
− | + | expos‚ par l'exemple des fontes Calamus peut Štre appliqu‚ sur |
|
− | d'autres fichiers |
+ | d'autres fichiers charg‚s en plusieurs fois (utilisez l'espion |
− | dans le |
+ | dans le r‚sident pour connaitre la structure de chargement). |
− | L' |
+ | L'‚diteur d'offset de SPACKER3 permet d'adapter un fichier |
offset sans quitter le compresseur. |
offset sans quitter le compresseur. |
||
− | L'extension |
+ | L'extension indiqu‚ est changeable … tout moment. |
Touche ESPACE change le type de bloc: MOVE/PACK/PGFX |
Touche ESPACE change le type de bloc: MOVE/PACK/PGFX |
||
− | Tab: |
+ | Tab: entr‚e valeurs HEX (ou <-) / entr‚e valeurs DEC (ou ->) |
− | Up: |
+ | Up:pr‚c‚dent,Down:suivant,Shift+Up:1er,Shift+Down:dernier bloc |
− | Ins: |
+ | Ins:insŠre un bloc juste aprŠs le bloc courant |
− | Del: |
+ | Del:d‚truit le bloc courant |
− | Variable correspond |
+ | Variable correspond … la d‚finition du bloc courant en bloc de |
− | longueur variable (mot |
+ | longueur variable (mot cl‚ DUMMY) pour avoir un fichier offset |
− | s'alignant sur la taille originale du fichier |
+ | s'alignant sur la taille originale du fichier … compresser de |
− | + | mŠme extension. |
|
Encore un plus! Si le fichier offset comprend les conditions |
Encore un plus! Si le fichier offset comprend les conditions |
||
− | suivantes alors il est |
+ | suivantes alors il est d‚clar‚ '‚x‚cutable': |
− | - le premier bloc est de type MOVE et de taille |
+ | - le premier bloc est de type MOVE et de taille ‚gale … 28 octets |
- il ne doit pas y avoir de blocs de type PACK |
- il ne doit pas y avoir de blocs de type PACK |
||
- il doit y avoir au moins un bloc de type PGFX |
- il doit y avoir au moins un bloc de type PGFX |
||
− | En clair, |
+ | En clair, cel… signifie qu'il est possible de regrouper des blocs |
− | graphiques (sprites, images...) basse |
+ | graphiques (sprites, images...) basse r‚solutions (4 plans, alignement |
− | 8 octets) |
+ | 8 octets) … l'int‚rieur d'un programme ex‚cutable et de compresser |
− | l'ensemble tout en |
+ | l'ensemble tout en exer‡ant l'algo. graphique sur les blocs PGFX: |
optimisation des performances de compression... |
optimisation des performances de compression... |
||
Line 168: | Line 167: | ||
On peut constituer des programmes SFX (SelF-eXtracting) avec des |
On peut constituer des programmes SFX (SelF-eXtracting) avec des |
||
− | fichiers |
+ | fichiers compress‚s avec SPACKER3 ou pas, toutefois, il faut |
− | noter que les fichiers |
+ | noter que les fichiers compress‚s en ‚x‚cutable,ressource,offset |
− | ne seront pas |
+ | ne seront pas d‚compress‚s lors du d‚sarchivage, seuls les fichiers |
− | + | compress‚s en type DAT seront d‚compress‚s. |
|
- ADD FILE |
- ADD FILE |
||
− | Les fichiers (contenu et location) sont |
+ | Les fichiers (contenu et location) sont ajout‚s … la liste |
− | des fichiers |
+ | des fichiers … archiver: un fichier qui n'est pas compress‚ en |
type DAT (utilisation de l'option FORCE DATA TYPE dans le menu |
type DAT (utilisation de l'option FORCE DATA TYPE dans le menu |
||
− | PACK) est sujet |
+ | PACK) est sujet … une boite d'alerte pour d‚terminer la poursuite |
du traitement (arret,passe,ajoute). |
du traitement (arret,passe,ajoute). |
||
− | Une fois le fichier SFX |
+ | Une fois le fichier SFX cr‚e par la fonction SAVE SP3 SFX, ce |
− | programme proposera ces |
+ | programme proposera ces fonctionnalit‚s: |
− | - |
+ | - possibilit‚ de d‚truire le SFX charg‚ pour regagner la place |
sur une disquette avant sauvegarde des fichiers contenus |
sur une disquette avant sauvegarde des fichiers contenus |
||
- restauration des dossiers (si option PATH ON) |
- restauration des dossiers (si option PATH ON) |
||
− | - en cas de manque de place sur disquette, |
+ | - en cas de manque de place sur disquette, possibilit‚ de |
− | changer de disquette pour finir le |
+ | changer de disquette pour finir le d‚sarchivage. |
− | L'ordre de sauvegarde est |
+ | L'ordre de sauvegarde est conditionn‚ par la taille de chacun des |
− | blocs: du plus petit (un fichier de longueur nulle peut |
+ | blocs: du plus petit (un fichier de longueur nulle peut Štre dans |
la liste des fichiers SFX (fichier identificateur de volume)) au |
la liste des fichiers SFX (fichier identificateur de volume)) au |
||
− | plus grand (pour |
+ | plus grand (pour b‚n‚ficier de toute la m‚moire). |
* Menu UNPACK : |
* Menu UNPACK : |
||
------------- |
------------- |
||
− | Les fichiers |
+ | Les fichiers compress‚s par SPACKER3 ou SPACKER2 sont reconnus |
quelquesoit le type de fichier. |
quelquesoit le type de fichier. |
||
- LOAD UNPACKER |
- LOAD UNPACKER |
||
− | Cette fonction permet de charger un |
+ | Cette fonction permet de charger un d‚compresseur externe … SPACKER3 |
− | et de |
+ | et de b‚n‚ficier du d‚compressage en s‚rie des fichiers d'un dossier. |
Elle ne remplace pas l'utilisation d'un 'multi-depacker' qui |
Elle ne remplace pas l'utilisation d'un 'multi-depacker' qui |
||
− | reconnait de lui- |
+ | reconnait de lui-mŠme le format de compression. |
− | Un fichier |
+ | Un fichier d‚compresseur pour Štre charg‚ et appel‚ par SPACKER3 doit |
− | respecter la structure ( |
+ | respecter la structure (trŠs complexe, une partie est … r‚diger en |
68000!) suivante: |
68000!) suivante: |
||
− | - octets 0 |
+ | - octets 0 … 3: constante 'SPup' |
− | - octets 4 |
+ | - octets 4 … 15: libre pour nommer le d‚compresseur |
remarques: |
remarques: |
||
− | . le mot |
+ | . le mot cl‚ REL sera utilis‚ pour dire que l'offset est |
− | + | … prendre par rapport au d‚but de fichier (d‚but+28 pour un |
|
− | + | ex‚cutable) si l'offset est positif et, par rapport … la fin de |
|
− | fichier (fin de code hors infos de relocation pour un |
+ | fichier (fin de code hors infos de relocation pour un ex‚cutable). |
− | . tous les offsets doivent |
+ | . tous les offsets doivent Štre pairs 5align‚s sur un mot m‚moire). |
− | struc |
+ | struc donn‚es type fichier ex‚cutable: |
− | - octets 16 |
+ | - octets 16 … 19: constante '.EXE' |
− | - octets 20 |
+ | - octets 20 … 21: offset d'un identificateur facultatif |
− | ( |
+ | (… 0 si octets 22 … 25 … 0) |
− | - octets 22 |
+ | - octets 22 … 25: valeur de l'identificateur (ex: 'Ice!') |
− | ( |
+ | (… 0 si octets 20 … 21 … 0) |
− | - octets 26 |
+ | - octets 26 … 27: offset =>0 d‚but de la liste checksum (borne sup) |
− | - octets 28 |
+ | - octets 28 … 29: offset >0 fin de la liste checksum (borne inf) |
− | - octets 30 |
+ | - octets 30 … 31: r‚sultat du checksum: somme des mots compris entre |
− | les 2 offsets |
+ | les 2 offsets d‚finis pr‚c‚demment moins les ‚ventuels mots longs des |
− | adresses |
+ | adresses d‚finies par leurs offsets dans les 5 mots octets 32 … 41. |
− | Le checksum permet d'identifier un |
+ | Le checksum permet d'identifier un d‚compresseur et sa version. |
− | - octets 32 |
+ | - octets 32 … 41: max 5 offsets d'adresses … retrancher du checksum |
− | (par adresse, il faut entendre 2 mots |
+ | (par adresse, il faut entendre 2 mots cons‚cutifs),ils doivent |
− | + | Štre strictement compris entre les deux bornes. |
|
− | + | … 0 si tous les mots entre les 2 bornes sont utilis‚s pour le |
|
checksum. |
checksum. |
||
− | Ex: soit le code d'un fichier |
+ | Ex: soit le code d'un fichier ex‚cutable comprenant un d‚compresseur |
− | de longueur 512 octets, |
+ | de longueur 512 octets, d‚butant relativement par rapport au |
− | + | d‚but du fichier ex‚cutable … l'offset 28+64, les adresses |
|
28+80 et 28+112 contiennent des mots longs issus de la relocation |
28+80 et 28+112 contiennent des mots longs issus de la relocation |
||
du programme, il ne faut donc pas les compter dans le checksum |
du programme, il ne faut donc pas les compter dans le checksum |
||
− | ou alors faire |
+ | ou alors faire d‚marrer le checksum aprŠs (changement de d‚but de |
− | liste checksum), |
+ | liste checksum), cel… donne: |
'.EXE' 0000 00000000 0040 0240 87D4 |
'.EXE' 0000 00000000 0040 0240 87D4 |
||
0050 0070 0000 0000 0000 |
0050 0070 0000 0000 0000 |
||
le checksum 87D4 est obtenu en ajoutant tous les mots entre |
le checksum 87D4 est obtenu en ajoutant tous les mots entre |
||
− | le |
+ | le d‚but du fichier ex‚cutable non relog‚+28(entete)+64 et le |
− | + | d‚but+28+64+512 puis en retranchant les mots des offsets |
|
− | + | d‚but+28+80,d‚but+28+82,d‚but+28+112,d‚but+28+114. |
|
− | - octets 42 |
+ | - octets 42 … 43: offset REL du bloc longueurs originale/compress‚e |
− | (octet 44 = -1) ou longueurs |
+ | (octet 44 = -1) ou longueurs compress‚e/originale (octet 44 = 0) |
- octet 44: 0 ou -1 selon ordre du bloc longueurs |
- octet 44: 0 ou -1 selon ordre du bloc longueurs |
||
− | - octet 45: valeur d'ajustement=0 si la longueur |
+ | - octet 45: valeur d'ajustement=0 si la longueur compress‚e contient |
− | la taille du bloc total ((identificateur+)longueurs+ |
+ | la taille du bloc total ((identificateur+)longueurs+donn‚es) |
− | sinon = taille du bloc longueurs (=8 ou 12 si identificateur |
+ | sinon = taille du bloc longueurs (=8 ou 12 si identificateur pr‚sent), |
− | ou = -1 si la longueur |
+ | ou = -1 si la longueur compress‚e n'est pas indiqu‚e dans le bloc |
− | longueurs mais dans le code du |
+ | longueurs mais dans le code du d‚compresseur: |
− | dans ce dernier cas, la longueur |
+ | dans ce dernier cas, la longueur compress‚e est recalcul‚e … partir |
− | de l'entete de l' |
+ | de l'entete de l'ex‚cutable (section text+data-offset du bloc des |
− | + | donn‚es compress‚es (valeur octets 46 … 47). |
|
− | - octets 46 |
+ | - octets 46 … 47: offset du bloc total ((identificateur+)longueurs+ |
− | + | donn‚es), si les donn‚es se trouvent en d‚but du bloc total, cet |
|
− | offset correspond alors |
+ | offset correspond alors … l'offset des donn‚es. |
− | struc |
+ | struc donn‚es type fichier data: |
− | - octets 48 |
+ | - octets 48 … 51: constante '.DAT' |
− | - octets 52 |
+ | - octets 52 … 53: offset d'un identificateur OBLIGATOIRE |
− | (pas de routine de |
+ | (pas de routine de d‚compression permettant d'identifier la |
− | + | m‚thode de compression), … 0 si 1er mot long du fichier data |
|
− | - octets 54 |
+ | - octets 54 … 57: valeur de l'identificateur (octet 54 toujours non nul) |
− | - octets 58 |
+ | - octets 58 … 59: offset REL du bloc longueurs originale/compress‚e |
− | (octet 60 = -1) ou longueurs |
+ | (octet 60 = -1) ou longueurs compress‚e/originale (octet 60 = 0) |
- octet 60: 0 ou -1 selon ordre du bloc longueurs |
- octet 60: 0 ou -1 selon ordre du bloc longueurs |
||
− | - octet 61: valeur d'ajustement=0 si la longueur |
+ | - octet 61: valeur d'ajustement=0 si la longueur compress‚e contient |
− | la taille du fichier |
+ | la taille du fichier compress‚ (identificateur+longueurs+donn‚es) |
− | sinon = taille du bloc longueurs (=8 ou 12 si identificateur |
+ | sinon = taille du bloc longueurs (=8 ou 12 si identificateur pr‚sent), |
− | ou = -1 si la longueur |
+ | ou = -1 si la longueur compress‚e n'est pas indiqu‚e. |
− | - octets 62 |
+ | - octets 62 … 63: offset du fichier compress‚: g‚n‚ralement … 0, sauf |
s'il contient d'autres informations en entete. |
s'il contient d'autres informations en entete. |
||
− | code d'appel de la routine de |
+ | code d'appel de la routine de d‚compression : |
− | - octets 64 |
+ | - octets 64 … 127: non utilis‚s (possibilit‚ de s'en servir pour |
− | stocker les valeurs d' |
+ | stocker les valeurs d'entr‚e et de sortie de la routine de |
− | + | d‚compression) |
|
− | - octets 128 |
+ | - octets 128 … 255: code d'appel (le mot en 128 doit Štre non nul) |
− | sont |
+ | sont charg‚s les registres A0:adresse du bloc total |
D0:type de struc fichier:0=dat/-1=exe |
D0:type de struc fichier:0=dat/-1=exe |
||
− | - octets 256 |
+ | - octets 256 … ...: extrait d'un programme compress‚ contenant |
− | le |
+ | le d‚compresseur. |
− | + | … titre d'exemple, le code d'appel utilis‚ pour ATOMIK35.SP9: |
|
code lea code-128(pc),a6 ;relativement octet 0 |
code lea code-128(pc),a6 ;relativement octet 0 |
||
Line 302: | Line 301: | ||
tst.w d0 ;test type |
tst.w d0 ;test type |
||
bne.s exe |
bne.s exe |
||
− | dat addq #4,a0 ; |
+ | dat addq #4,a0 ;aprŠs identificateur |
move.l (a0)+,d0 ;lit longueur originale |
move.l (a0)+,d0 ;lit longueur originale |
||
move.l d0,124(a6) ;et sauve pour reloger |
move.l d0,124(a6) ;et sauve pour reloger |
||
− | jsr 256+202 ;sous-routine de |
+ | jsr 256+202 ;sous-routine de d‚comp ATM5 |
lea code-128(pc),a6 ;relativement octet 0 |
lea code-128(pc),a6 ;relativement octet 0 |
||
− | move.l a5,a0 ;adresse bloc |
+ | move.l a5,a0 ;adresse bloc d‚compress‚ |
− | move.l 120(a6),a1 ; |
+ | move.l 120(a6),a1 ;r‚cupŠre adresse destination |
move.l 124(a6),d0 ;et longueur originale |
move.l 124(a6),d0 ;et longueur originale |
||
deplace move.b (a0)+,(a1)+ |
deplace move.b (a0)+,(a1)+ |
||
Line 317: | Line 316: | ||
rts |
rts |
||
− | Les autres fichiers |
+ | Les autres fichiers d‚compresseurs (extension SPn) donn‚ avec |
− | SPACKER3 peuvent aider |
+ | SPACKER3 peuvent aider … comprendre la structure complexe mais |
− | flexible d'un module de |
+ | flexible d'un module de d‚compression externe … SPACKER3. |
* Menu PACK : |
* Menu PACK : |
||
----------- |
----------- |
||
- Optimize SEQ 2 EXTEND |
- Optimize SEQ 2 EXTEND |
||
− | Option permettant de compresser les |
+ | Option permettant de compresser les s‚quences de 2 octets |
− | identiques sur une |
+ | identiques sur une ‚tendue de recherche plus grande: gains |
− | souvent |
+ | souvent appr‚ciables sur les fichiers de type samples. |
- Optimize LOW RES BLK |
- Optimize LOW RES BLK |
||
Option permettant de compresser des fichiers graphiques (sprites, |
Option permettant de compresser des fichiers graphiques (sprites, |
||
− | + | ‚crans...) en un bloc et par algoritme graphique 4 plans (basse |
|
− | + | r‚solution). Pour les images, il est pr‚f‚rable d'utiliser |
|
la compression via un fichier offset (pour pouvoir recharger |
la compression via un fichier offset (pour pouvoir recharger |
||
directement par le programme de dessin). |
directement par le programme de dessin). |
||
- FORCE DATA TYPE |
- FORCE DATA TYPE |
||
− | Compresse un |
+ | Compresse un ex‚cutable, ressource en fichier compress‚ en |
− | un bloc (DAT ou BLK si l'optimisation LOW RES BLK est |
+ | un bloc (DAT ou BLK si l'optimisation LOW RES BLK est activ‚e). |
− | + | cel… permet de cr‚er des fichiers compress‚s simples qui pourront |
|
− | + | Štre int‚gr‚s dans une archive SFX. |
|
− | Les autres |
+ | Les autres fonctionnalit‚s ne devraient pas poser problŠmes. |
Enfin, nous ne sommes pas responsables des pertes ou dommages qui pourraient |
Enfin, nous ne sommes pas responsables des pertes ou dommages qui pourraient |
||
− | apparaitre lors de l'utilisation du Spacker 3 et des |
+ | apparaitre lors de l'utilisation du Spacker 3 et des problŠmes lors du |
− | + | d‚compactage subsistent encore sous Multidesk et Neodesk III. |
|
Faites donc attention ! |
Faites donc attention ! |
||
Line 351: | Line 350: | ||
ou 3615 code Rtel, Bal Daneel |
ou 3615 code Rtel, Bal Daneel |
||
− | Nous |
+ | Nous remer‡ions … l'avance les personnes qui diffuseront ce packer dans |
le monde entier. |
le monde entier. |
||
− | Un grand merci |
+ | Un grand merci … STE59, STOF, DMVIOLATOR pour leurs encouragements. |
− | Ceci est un produit |
+ | Ceci est un produit certifi‚ 100 % FIREHAWKS, |
− | vous pouvez consommez sans |
+ | vous pouvez consommez sans mod‚ration... |
</pre> |
</pre> |
||
Revision as of 08:30, 23 May 2009
S P A C K E R III | (c) octobre 1992 - A FIREHAWKS Utility | FREEWARE !!! librement copiable | Code by Spiral. | | | Date de sortie : le 30 octobre 1992 | | | ~~~~~~~~~~~~~~~~~~ | | - Spacker 3 est un compacteur de fichier Exe et data | | - C'est aussi un archiveur trŠs rapide | | - Existera aussi sur Amiga (en cours), Falcon (version DSP), | Mac et IBM PC | | ~~~~~~~~~~~~~~~~~ | *** ATTENTION *** Le fichier AUTO_SP3.PRG est un programme RESIDENT qui permet … tout fichier compr‚ss‚ avec SPACKER3 de se d‚compresser,il doit par cons‚quent se trouver en premiŠre place dans le dossier AUTO. Lors du chargement automatique du r‚sident, on peut ne pas l'activer en maintenant la touche CONTROL enfonc‚e. ***************** ~~~~~~~~~~~~~~~~~~ Les diff‚rentes fonctions sont class‚es par menu... * Menu 'FILE' ------------- ____ NEW FOLDER | FORMAT DISK | DISK INFO | Disponibles uniquement avec un selecteur FILE INFO |------ du type de S‚l‚tric (Shareware) qui vous MOVE FILE | est offert avec le Spacker 3 COPY FILE | RENAME FILE | DELETE FILE ____| *Skip or Copy ... Permet de passer ou copier les fichiers qui ne peuvent etre pack‚es sur la destination. utilis‚ lors du compressage de plusieurs fichiers, il assure la copie (option Copy) sur le disque destination pour les fichiers ne pouvant Štre compr‚ss‚s (taille originale trop petite ou taille compr‚ss‚e sup‚rieure … la taille originale). *Src A Dst A ... D‚finit le lecteur Source et le lecteur destination *save Config ... sauvegarde la configuration Patch SPACKER3 en sauvegardant l'unit‚ (de disquette/disque) source, l'unit‚ destination, l'indicateur FILE PREF dans le menu FICHIER(C ou autre), la prise ou non en compte du dossier dans le menu ARCHIVE (P ou autre), l'indicateur flash et la couleur de flash dans le menu PACK (F ou autre, RGB). La config est en ASCII et … l'offset 28(entete)+2 de SPACKER3. *Create Auto SP3 ... Cr‚e le r‚sident indispensable pour le decrunch des executables et des datas *touch SP3 files Date ... Correction de la date des fichiers compact‚es permet de rattacher la longueur originale d'un fichier compress‚ avec SPACKER3 directement en ‚crasant la date et l'heure de cr‚ation/modification du fichier: seule solution restante pour ‚viter le cycle lent ouverture/lecture/fermeture de fichiers lors d'une selection de fichiers. La taille originale est utile … connaitre car elle permet de r‚server une taille m‚moire ‚gale au celle du fichier une fois d‚compress‚. L'attribut ARCHIVE est aussi utilis‚ pour les fichiers compress‚s par SPACKER3, il se conserve lors d'une copie de fichier, la date par contre change, d'o— l'int‚ret de cette fonction... * MENU 'OFFSET' --------------- un simple ‚diteur de fichiers Offset...Hum Hum.. Les offsets permettent d'ajuster la structure de compression … la structure de chargement d'un type de fichier: une image DEGAS compress‚e en un seul bloc et charg‚e en plusieurs fois par un programme de dessin ne sera pas d‚compress‚e ou plantera le programme. Le module ESPION de structure de chargement est inclus dans le r‚sident, il faut recharger le r‚sident via le Gem et choisir l'option SPY OFF pour indiquer l'extension des fichiers … surveiller: une sauvegarde de la structure de chargement sera automatiquement effectu‚e (extension r‚serv‚e SPn ou n varie de 0 … 9) lors de la fermeture du fichier (ne pas oublier de d‚prot‚ger la disquette). Ce fichier offset g‚n‚r‚ peut Štre ‚dit‚ et adapt‚ … un type standard de fichier (images DEGAS, fontes CALAMUS...). Les premiers octets de ce fichier offset contiennent l'extension. Un commentaire peut Štre rajout‚ par l'usage d'une tabulation ou d'un ';' (les lignes blanches ou commen‡ant par un ';' sont ignor‚es par l'‚diteur int‚gr‚ d'offsets dans SPACKER3). 3 types de blocs dans un fichier sont … distinguer: le type MOVE (cod‚ par -) indique que le bloc ne sera pas compress‚ dans le fichier r‚sultat de la compression, le type PACK (cod‚ +) pour compresser le bloc et le type PGFX (cod‚ *) pour compresser le bloc par algorithme graphique 4 plans. Toutes les longueurs de bloc doivent Štre paires, seul le dernier bloc fait exception s'il est assign‚ du type MOVE (pour les fichiers de taille originale impaire). La description d'une ligne bloc du fichier offset est la suivante (les espaces entre caractŠres et les tabulations sont g‚r‚s): 'type de bloc' + 'longueur de bloc', longueur HEXA sur 5 caractŠres max, le total des longueurs HEXA ne doit pas d‚passer F423F soit 999999 octets. Les blocs de longueur nulle sont expressement interdits. voici quelques exemples: - 80 ; 128 octets … ne pas compresser (entete NEO) ; ligne de commentaires ignor‚e *07D00 ; ‚cran basse r‚solution compress‚ par algo. graphique Il est possible de standardiser tous les fichiers offsets d'un type de fichier en un seul fichier offset en incluant un bloc et un seul de longueur paire et variable: au lieu de la taille il suffit de saisir le mot cl‚ 'dummy' ou 'DUMMY' (ou mŠme 'DuMMy' si vous pr‚f‚rez). Le bloc connaitra sa longueur au moment de la compression (taille originale du fichier moins tailles des autres blocs). Les fontes Calamus sont des fichiers charg‚s en 13 fois, 1 seul bloc parmi ces 13 blocs est variable et contient les data de la fonte: un seul fichier offset, livr‚ avec SPACKER3, permet de g‚rer toutes les fontes. Ce principe expos‚ par l'exemple des fontes Calamus peut Štre appliqu‚ sur d'autres fichiers charg‚s en plusieurs fois (utilisez l'espion dans le r‚sident pour connaitre la structure de chargement). L'‚diteur d'offset de SPACKER3 permet d'adapter un fichier offset sans quitter le compresseur. L'extension indiqu‚ est changeable … tout moment. Touche ESPACE change le type de bloc: MOVE/PACK/PGFX Tab: entr‚e valeurs HEX (ou <-) / entr‚e valeurs DEC (ou ->) Up:pr‚c‚dent,Down:suivant,Shift+Up:1er,Shift+Down:dernier bloc Ins:insŠre un bloc juste aprŠs le bloc courant Del:d‚truit le bloc courant Variable correspond … la d‚finition du bloc courant en bloc de longueur variable (mot cl‚ DUMMY) pour avoir un fichier offset s'alignant sur la taille originale du fichier … compresser de mŠme extension. Encore un plus! Si le fichier offset comprend les conditions suivantes alors il est d‚clar‚ '‚x‚cutable': - le premier bloc est de type MOVE et de taille ‚gale … 28 octets - il ne doit pas y avoir de blocs de type PACK - il doit y avoir au moins un bloc de type PGFX En clair, cel… signifie qu'il est possible de regrouper des blocs graphiques (sprites, images...) basse r‚solutions (4 plans, alignement 8 octets) … l'int‚rieur d'un programme ex‚cutable et de compresser l'ensemble tout en exer‡ant l'algo. graphique sur les blocs PGFX: optimisation des performances de compression... * Menu ARCHIVE : -------------- On peut constituer des programmes SFX (SelF-eXtracting) avec des fichiers compress‚s avec SPACKER3 ou pas, toutefois, il faut noter que les fichiers compress‚s en ‚x‚cutable,ressource,offset ne seront pas d‚compress‚s lors du d‚sarchivage, seuls les fichiers compress‚s en type DAT seront d‚compress‚s. - ADD FILE Les fichiers (contenu et location) sont ajout‚s … la liste des fichiers … archiver: un fichier qui n'est pas compress‚ en type DAT (utilisation de l'option FORCE DATA TYPE dans le menu PACK) est sujet … une boite d'alerte pour d‚terminer la poursuite du traitement (arret,passe,ajoute). Une fois le fichier SFX cr‚e par la fonction SAVE SP3 SFX, ce programme proposera ces fonctionnalit‚s: - possibilit‚ de d‚truire le SFX charg‚ pour regagner la place sur une disquette avant sauvegarde des fichiers contenus - restauration des dossiers (si option PATH ON) - en cas de manque de place sur disquette, possibilit‚ de changer de disquette pour finir le d‚sarchivage. L'ordre de sauvegarde est conditionn‚ par la taille de chacun des blocs: du plus petit (un fichier de longueur nulle peut Štre dans la liste des fichiers SFX (fichier identificateur de volume)) au plus grand (pour b‚n‚ficier de toute la m‚moire). * Menu UNPACK : ------------- Les fichiers compress‚s par SPACKER3 ou SPACKER2 sont reconnus quelquesoit le type de fichier. - LOAD UNPACKER Cette fonction permet de charger un d‚compresseur externe … SPACKER3 et de b‚n‚ficier du d‚compressage en s‚rie des fichiers d'un dossier. Elle ne remplace pas l'utilisation d'un 'multi-depacker' qui reconnait de lui-mŠme le format de compression. Un fichier d‚compresseur pour Štre charg‚ et appel‚ par SPACKER3 doit respecter la structure (trŠs complexe, une partie est … r‚diger en 68000!) suivante: - octets 0 … 3: constante 'SPup' - octets 4 … 15: libre pour nommer le d‚compresseur remarques: . le mot cl‚ REL sera utilis‚ pour dire que l'offset est … prendre par rapport au d‚but de fichier (d‚but+28 pour un ex‚cutable) si l'offset est positif et, par rapport … la fin de fichier (fin de code hors infos de relocation pour un ex‚cutable). . tous les offsets doivent Štre pairs 5align‚s sur un mot m‚moire). struc donn‚es type fichier ex‚cutable: - octets 16 … 19: constante '.EXE' - octets 20 … 21: offset d'un identificateur facultatif (… 0 si octets 22 … 25 … 0) - octets 22 … 25: valeur de l'identificateur (ex: 'Ice!') (… 0 si octets 20 … 21 … 0) - octets 26 … 27: offset =>0 d‚but de la liste checksum (borne sup) - octets 28 … 29: offset >0 fin de la liste checksum (borne inf) - octets 30 … 31: r‚sultat du checksum: somme des mots compris entre les 2 offsets d‚finis pr‚c‚demment moins les ‚ventuels mots longs des adresses d‚finies par leurs offsets dans les 5 mots octets 32 … 41. Le checksum permet d'identifier un d‚compresseur et sa version. - octets 32 … 41: max 5 offsets d'adresses … retrancher du checksum (par adresse, il faut entendre 2 mots cons‚cutifs),ils doivent Štre strictement compris entre les deux bornes. … 0 si tous les mots entre les 2 bornes sont utilis‚s pour le checksum. Ex: soit le code d'un fichier ex‚cutable comprenant un d‚compresseur de longueur 512 octets, d‚butant relativement par rapport au d‚but du fichier ex‚cutable … l'offset 28+64, les adresses 28+80 et 28+112 contiennent des mots longs issus de la relocation du programme, il ne faut donc pas les compter dans le checksum ou alors faire d‚marrer le checksum aprŠs (changement de d‚but de liste checksum), cel… donne: '.EXE' 0000 00000000 0040 0240 87D4 0050 0070 0000 0000 0000 le checksum 87D4 est obtenu en ajoutant tous les mots entre le d‚but du fichier ex‚cutable non relog‚+28(entete)+64 et le d‚but+28+64+512 puis en retranchant les mots des offsets d‚but+28+80,d‚but+28+82,d‚but+28+112,d‚but+28+114. - octets 42 … 43: offset REL du bloc longueurs originale/compress‚e (octet 44 = -1) ou longueurs compress‚e/originale (octet 44 = 0) - octet 44: 0 ou -1 selon ordre du bloc longueurs - octet 45: valeur d'ajustement=0 si la longueur compress‚e contient la taille du bloc total ((identificateur+)longueurs+donn‚es) sinon = taille du bloc longueurs (=8 ou 12 si identificateur pr‚sent), ou = -1 si la longueur compress‚e n'est pas indiqu‚e dans le bloc longueurs mais dans le code du d‚compresseur: dans ce dernier cas, la longueur compress‚e est recalcul‚e … partir de l'entete de l'ex‚cutable (section text+data-offset du bloc des donn‚es compress‚es (valeur octets 46 … 47). - octets 46 … 47: offset du bloc total ((identificateur+)longueurs+ donn‚es), si les donn‚es se trouvent en d‚but du bloc total, cet offset correspond alors … l'offset des donn‚es. struc donn‚es type fichier data: - octets 48 … 51: constante '.DAT' - octets 52 … 53: offset d'un identificateur OBLIGATOIRE (pas de routine de d‚compression permettant d'identifier la m‚thode de compression), … 0 si 1er mot long du fichier data - octets 54 … 57: valeur de l'identificateur (octet 54 toujours non nul) - octets 58 … 59: offset REL du bloc longueurs originale/compress‚e (octet 60 = -1) ou longueurs compress‚e/originale (octet 60 = 0) - octet 60: 0 ou -1 selon ordre du bloc longueurs - octet 61: valeur d'ajustement=0 si la longueur compress‚e contient la taille du fichier compress‚ (identificateur+longueurs+donn‚es) sinon = taille du bloc longueurs (=8 ou 12 si identificateur pr‚sent), ou = -1 si la longueur compress‚e n'est pas indiqu‚e. - octets 62 … 63: offset du fichier compress‚: g‚n‚ralement … 0, sauf s'il contient d'autres informations en entete. code d'appel de la routine de d‚compression : - octets 64 … 127: non utilis‚s (possibilit‚ de s'en servir pour stocker les valeurs d'entr‚e et de sortie de la routine de d‚compression) - octets 128 … 255: code d'appel (le mot en 128 doit Štre non nul) sont charg‚s les registres A0:adresse du bloc total D0:type de struc fichier:0=dat/-1=exe - octets 256 … ...: extrait d'un programme compress‚ contenant le d‚compresseur. … titre d'exemple, le code d'appel utilis‚ pour ATOMIK35.SP9: code lea code-128(pc),a6 ;relativement octet 0 move.l a0,120(a6) ;sauve adresse pour reloger tst.w d0 ;test type bne.s exe dat addq #4,a0 ;aprŠs identificateur move.l (a0)+,d0 ;lit longueur originale move.l d0,124(a6) ;et sauve pour reloger jsr 256+202 ;sous-routine de d‚comp ATM5 lea code-128(pc),a6 ;relativement octet 0 move.l a5,a0 ;adresse bloc d‚compress‚ move.l 120(a6),a1 ;r‚cupŠre adresse destination move.l 124(a6),d0 ;et longueur originale deplace move.b (a0)+,(a1)+ dbf d0,deplace subi.l #$10000,d0 ;toute la longueur originale rts Les autres fichiers d‚compresseurs (extension SPn) donn‚ avec SPACKER3 peuvent aider … comprendre la structure complexe mais flexible d'un module de d‚compression externe … SPACKER3. * Menu PACK : ----------- - Optimize SEQ 2 EXTEND Option permettant de compresser les s‚quences de 2 octets identiques sur une ‚tendue de recherche plus grande: gains souvent appr‚ciables sur les fichiers de type samples. - Optimize LOW RES BLK Option permettant de compresser des fichiers graphiques (sprites, ‚crans...) en un bloc et par algoritme graphique 4 plans (basse r‚solution). Pour les images, il est pr‚f‚rable d'utiliser la compression via un fichier offset (pour pouvoir recharger directement par le programme de dessin). - FORCE DATA TYPE Compresse un ex‚cutable, ressource en fichier compress‚ en un bloc (DAT ou BLK si l'optimisation LOW RES BLK est activ‚e). cel… permet de cr‚er des fichiers compress‚s simples qui pourront Štre int‚gr‚s dans une archive SFX. Les autres fonctionnalit‚s ne devraient pas poser problŠmes. Enfin, nous ne sommes pas responsables des pertes ou dommages qui pourraient apparaitre lors de l'utilisation du Spacker 3 et des problŠmes lors du d‚compactage subsistent encore sous Multidesk et Neodesk III. Faites donc attention ! Vous pouvez nous joindre sur 3614 code TEASER ou 3615 code Rtel, Bal Daneel Nous remer‡ions … l'avance les personnes qui diffuseront ce packer dans le monde entier. Un grand merci … STE59, STOF, DMVIOLATOR pour leurs encouragements. Ceci est un produit certifi‚ 100 % FIREHAWKS, vous pouvez consommez sans mod‚ration...
Back to Packer/Depacker