home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Supremacy 1
/
Supremacy-1.iso
/
DEMOS
/
C-D
/
DOCDISK.ZIP
/
UTILS.DOC
/
SPACKER3.DOC
< prev
next >
Wrap
Text File
|
1991-09-01
|
18KB
|
370 lines
S P A C K E R III
(c) octobre 1992 - A FIREHAWKS Utility
FREEWARE !!! librement copiable
Code by Spiral.
Pour etre complet, Spacker 3 doit etre livre avec les fichiers suivants :
- dossier SPV3_OFF Exemple de fichiers offsets
- dossier SPV3_S source de décrunch
- dossier SPV3_UNP Exemples de Dépackeurs externes
- SPACKER3.PRG Le compacteur, décompacteur et archiveur !
- SPACKER3.DOC la doc
- SP3_PROG.PRG créateur de header
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.
Toutefois, si vous voulez conserver l'autonomie de votre éxécutable,
c'est-à-dire sans le résident...C'est possible !!! Il suffit d'executer
une fois votre prg compacté avec SP3 le programme SP3_PROG (addSFX).
ATTENTION, vous ne pourrez plus le décompacter (Pour protéger vos
éxécutables !)
~~~~~~~~~~~~~~~~~~
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...