home *** CD-ROM | disk | FTP | other *** search
/ Supremacy 1 / Supremacy-1.iso / DEMOS / C-D / DOCDISK.ZIP / UTILS.DOC / SPACKER3.DOC < prev    next >
Text File  |  1991-09-01  |  18KB  |  370 lines

  1.                           S P A C K E R III                            
  2.                (c) octobre 1992 - A FIREHAWKS Utility                  
  3.                     FREEWARE !!! librement copiable                    
  4.                            Code by Spiral.                             
  5.   
  6. Pour etre complet, Spacker 3 doit etre livre avec les fichiers suivants :
  7.  
  8.         - dossier SPV3_OFF    Exemple de fichiers offsets
  9.         - dossier SPV3_S      source de décrunch
  10.         - dossier SPV3_UNP    Exemples de Dépackeurs externes        
  11.         - SPACKER3.PRG        Le compacteur, décompacteur et archiveur !
  12.         - SPACKER3.DOC        la doc
  13.         - SP3_PROG.PRG        créateur de header
  14.  
  15.  
  16. Date de sortie : le 30 octobre 1992            
  17.                           
  18.  
  19.                           ~~~~~~~~~~~~~~~~~~
  20.  
  21.    - Spacker 3 est un compacteur de fichier Exe et data
  22.  
  23.    - C'est aussi un archiveur très rapide
  24.  
  25.    - Existera aussi sur Amiga (en cours), Falcon (version DSP),
  26.              Mac et IBM PC
  27.                           ~~~~~~~~~~~~~~~~~~
  28.  
  29. *** ATTENTION ***
  30. Le fichier  AUTO_SP3.PRG  est  un programme RESIDENT qui permet à
  31. tout fichier compréssé avec SPACKER3  de  se décompresser,il doit
  32. par conséquent se trouver en première place dans le dossier AUTO.
  33. Lors  du  chargement  automatique  du  résident,  on  peut ne pas
  34. l'activer  en  maintenant  la  touche  CONTROL  enfoncée.
  35.  
  36. Toutefois, si vous voulez conserver l'autonomie de votre éxécutable,
  37. c'est-à-dire sans le résident...C'est possible !!! Il suffit d'executer
  38. une fois votre prg compacté avec SP3 le programme SP3_PROG (addSFX).
  39. ATTENTION, vous ne pourrez plus le décompacter (Pour protéger vos
  40. éxécutables !)
  41.                           ~~~~~~~~~~~~~~~~~~
  42.  
  43.  Les différentes fonctions sont classées par menu...
  44.  
  45.   * Menu 'FILE'
  46.   -------------
  47.                       ____
  48.         NEW  FOLDER       |
  49.         FORMAT DISK       |
  50.         DISK   INFO       |        Disponibles uniquement avec un selecteur
  51.         FILE   INFO       |------  du type de Sélétric (Shareware) qui vous
  52.         MOVE   FILE       |        est offert avec le Spacker 3
  53.         COPY   FILE       |
  54.         RENAME FILE       |
  55.         DELETE FILE   ____|
  56.  
  57.  
  58.    *Skip or Copy    ... Permet  de  passer ou copier  les fichiers qui
  59.                         ne  peuvent  etre  packées sur la destination.
  60.     utilisé  lors du compressage  de  plusieurs fichiers, il assure la
  61.     copie (option Copy) sur  le  disque destination pour  les fichiers
  62.     ne pouvant ètre compréssés (taille originale trop petite ou taille
  63.     compréssée supérieure à la taille originale).
  64.  
  65.    *Src A Dst A     ... Définit le lecteur Source et le lecteur destination
  66.  
  67.    *save Config     ... sauvegarde la configuration
  68.                         Patch SPACKER3 en sauvegardant
  69.     l'unité (de disquette/disque) source, l'unité destination,
  70.     l'indicateur FILE PREF dans le menu FICHIER(C ou autre),
  71.     la prise ou non en compte du dossier dans le menu ARCHIVE (P ou autre),
  72.     l'indicateur flash et la couleur de flash dans le menu PACK
  73.     (F ou autre, RGB).
  74.     La config est en ASCII et à l'offset 28(entete)+2 de SPACKER3.
  75.  
  76.    *Create Auto SP3 ... Crée le résident indispensable pour le decrunch
  77.                         des executables et des datas
  78.  
  79.    *touch SP3 files Date ... Correction de la date des fichiers compactées
  80.    permet de rattacher la longueur originale d'un fichier compressé
  81.    avec SPACKER3 directement en écrasant la date et l'heure de
  82.    création/modification du fichier: seule solution restante pour
  83.    éviter le cycle lent ouverture/lecture/fermeture de fichiers
  84.    lors d'une selection de fichiers. La taille originale est utile
  85.    à connaitre car elle permet de réserver une taille mémoire
  86.    égale au celle du fichier une fois décompressé.
  87.    L'attribut ARCHIVE est aussi utilisé pour les fichiers compressés
  88.    par SPACKER3, il se conserve lors d'une copie de fichier, la
  89.    date par contre change, d'où l'intéret de cette fonction...
  90.  
  91.  * MENU 'OFFSET'
  92.  ---------------
  93.  
  94.     un simple éditeur de fichiers Offset...Hum Hum..
  95.  
  96.    Les offsets permettent d'ajuster la structure de compression
  97.    à la structure de chargement d'un type de fichier: une image
  98.    DEGAS compressée en un seul bloc et chargée en plusieurs fois
  99.    par un programme de dessin ne sera pas décompressée ou plantera
  100.    le programme.
  101.  
  102.    Le module ESPION de structure de chargement est inclus dans le
  103.    résident, il faut recharger le résident via le Gem et choisir
  104.    l'option SPY OFF pour indiquer l'extension des fichiers à
  105.    surveiller: une sauvegarde de la structure de chargement sera
  106.    automatiquement effectuée (extension réservée SPn ou n varie de
  107.    0 à 9) lors de la fermeture du fichier (ne pas oublier de
  108.    déprotéger la disquette).
  109.  
  110.    Ce fichier offset généré peut ètre édité et adapté à un type
  111.    standard de fichier (images DEGAS, fontes CALAMUS...).
  112.    Les premiers octets de ce fichier offset contiennent l'extension.
  113.    Un commentaire peut ètre rajouté par l'usage d'une tabulation ou
  114.    d'un ';' (les lignes blanches ou commençant par un ';' sont
  115.    ignorées par l'éditeur intégré d'offsets dans SPACKER3).
  116.    3 types de blocs dans un fichier sont à distinguer: le type
  117.    MOVE (codé par -) indique que le bloc ne sera pas compressé
  118.    dans le fichier résultat de la compression, le type PACK (codé +)
  119.    pour compresser le bloc et le type PGFX (codé *) pour compresser
  120.    le bloc par algorithme graphique 4 plans.
  121.  
  122.    Toutes les longueurs de bloc doivent ètre paires, seul le dernier
  123.    bloc fait exception s'il est assigné du type MOVE (pour les fichiers
  124.    de taille originale impaire). La description d'une ligne bloc du
  125.    fichier offset est la suivante (les espaces entre caractères et
  126.    les tabulations sont gérés): 'type de bloc' + 'longueur de bloc',
  127.    longueur HEXA sur 5 caractères max, le total des longueurs HEXA
  128.    ne doit pas dépasser F423F soit 999999 octets. Les blocs de
  129.    longueur nulle sont expressement interdits.
  130.  
  131.    voici quelques exemples:
  132.    - 80  ; 128 octets à ne pas compresser (entete NEO)
  133.         ; ligne de commentaires ignorée
  134.    *07D00   ; écran basse résolution compressé par algo. graphique
  135.  
  136.    Il est possible de standardiser tous les fichiers offsets d'un
  137.    type de fichier en un seul fichier offset en incluant un bloc
  138.    et un seul de longueur paire et variable: au lieu de la taille
  139.    il suffit de saisir le mot clé 'dummy' ou 'DUMMY' (ou mème
  140.    'DuMMy' si vous préférez). Le bloc connaitra sa longueur au
  141.    moment de la compression (taille originale du fichier moins
  142.    tailles des autres blocs). Les fontes Calamus sont des fichiers
  143.    chargés en 13 fois, 1 seul bloc parmi ces 13 blocs est variable
  144.    et contient les data de la fonte: un seul fichier offset, livré
  145.    avec SPACKER3, permet de gérer toutes les fontes. Ce principe
  146.    exposé par l'exemple des fontes Calamus peut ètre appliqué sur
  147.    d'autres fichiers chargés en plusieurs fois (utilisez l'espion
  148.    dans le résident pour connaitre la structure de chargement).
  149.  
  150.    L'éditeur d'offset de SPACKER3 permet d'adapter un fichier
  151.    offset sans quitter le compresseur.
  152.    L'extension indiqué est changeable à tout moment.
  153.  
  154.    Touche ESPACE change le type de bloc: MOVE/PACK/PGFX
  155.    Tab: entrée valeurs HEX (ou <-) / entrée valeurs DEC (ou ->)
  156.    Up:précédent,Down:suivant,Shift+Up:1er,Shift+Down:dernier bloc
  157.    Ins:insère un bloc juste après le bloc courant
  158.    Del:détruit le bloc courant
  159.  
  160.    Variable correspond à la définition du bloc courant en bloc de
  161.    longueur variable (mot clé DUMMY) pour avoir un fichier offset
  162.    s'alignant sur la taille originale du fichier à compresser de
  163.    mème extension.
  164.  
  165.    Encore un plus! Si le fichier offset comprend les conditions
  166.    suivantes alors il est déclaré 'éxécutable':
  167.    - le premier bloc est de type MOVE et de taille égale à 28 octets
  168.    - il ne doit pas y avoir de blocs de type PACK
  169.    - il doit y avoir au moins un bloc de type PGFX
  170.    En clair, celà signifie qu'il est possible de regrouper des blocs
  171.    graphiques (sprites, images...) basse résolutions (4 plans, alignement
  172.    8 octets) à l'intérieur d'un programme exécutable et de compresser
  173.    l'ensemble tout en exerçant l'algo. graphique sur les blocs PGFX:
  174.    optimisation des performances de compression...
  175.  
  176. * Menu ARCHIVE :
  177. --------------
  178.  
  179.    On peut constituer des programmes SFX (SelF-eXtracting) avec des
  180.    fichiers compressés avec SPACKER3 ou pas, toutefois, il faut
  181.    noter que les fichiers compressés en éxécutable,ressource,offset
  182.    ne seront pas décompressés lors du désarchivage, seuls les fichiers
  183.    compressés en type DAT seront décompressés.
  184.    
  185.    
  186.  
  187.    - ADD FILE
  188.    Les fichiers (contenu et location) sont ajoutés à la liste
  189.    des fichiers à archiver: un fichier qui n'est pas compressé en
  190.    type DAT (utilisation de l'option FORCE DATA TYPE dans le menu
  191.    PACK) est sujet à une boite d'alerte pour déterminer la poursuite
  192.    du traitement (arret,passe,ajoute).
  193.  
  194.    Une fois le fichier SFX crée par la fonction SAVE SP3 SFX, ce
  195.    programme proposera ces fonctionnalités:
  196.    - possibilité de détruire le SFX chargé pour regagner la place
  197.    sur une disquette avant sauvegarde des fichiers contenus
  198.    - restauration des dossiers (si option PATH ON)
  199.    - en cas de manque de place sur disquette, possibilité de
  200.    changer de disquette pour finir le désarchivage.
  201.  
  202.    L'ordre de sauvegarde est conditionné par la taille de chacun des
  203.    blocs: du plus petit (un fichier de longueur nulle peut ètre dans
  204.    la liste des fichiers SFX (fichier identificateur de volume)) au
  205.    plus grand (pour bénéficier de toute la mémoire).
  206.  
  207. * Menu UNPACK :
  208. -------------
  209.  
  210.    Les fichiers compressés par SPACKER3 ou SPACKER2 sont reconnus
  211.    quelquesoit le type de fichier.
  212.  
  213.    - LOAD UNPACKER
  214.  
  215.    Cette fonction permet de charger un décompresseur externe à SPACKER3
  216.    et de bénéficier du décompressage en série des fichiers d'un dossier.
  217.    Elle ne remplace pas l'utilisation d'un 'multi-depacker' qui
  218.    reconnait de lui-mème le format de compression.
  219.  
  220.    Un fichier décompresseur pour ètre chargé et appelé par SPACKER3 doit
  221.    respecter la structure (très complexe, une partie est à rédiger en
  222.    68000!) suivante:
  223.  
  224.    - octets 0 à 3: constante 'SPup'
  225.    - octets 4 à 15: libre pour nommer le décompresseur
  226.  
  227.    remarques:
  228.    . le mot clé REL sera utilisé pour dire que l'offset est
  229.    à prendre par rapport au début de fichier (début+28 pour un
  230.    exécutable) si l'offset est positif et, par rapport à la fin de
  231.    fichier (fin de code hors infos de relocation pour un exécutable).
  232.    . tous les offsets doivent ètre pairs 5alignés sur un mot mémoire).
  233.  
  234.    struc données type fichier exécutable:
  235.  
  236.    - octets 16 à 19: constante '.EXE'
  237.    - octets 20 à 21: offset d'un identificateur facultatif
  238.     (à 0 si octets 22 à 25 à 0)
  239.    - octets 22 à 25: valeur de l'identificateur (ex: 'Ice!')
  240.     (à 0 si octets 20 à 21 à 0)
  241.    - octets 26 à 27: offset =>0 début de la liste checksum (borne sup)
  242.    - octets 28 à 29: offset >0 fin de la liste checksum (borne inf)
  243.    - octets 30 à 31: résultat du checksum: somme des mots compris entre
  244.      les 2 offsets définis précédemment moins les éventuels mots longs des
  245.      adresses définies par leurs offsets dans les 5 mots octets 32 à 41.
  246.      Le checksum permet d'identifier un décompresseur et sa version.
  247.    - octets 32 à 41: max 5 offsets d'adresses à retrancher du checksum
  248.      (par adresse, il faut entendre 2 mots consécutifs),ils doivent
  249.      ètre strictement compris entre les deux bornes.
  250.      à 0 si tous les mots entre les 2 bornes sont utilisés pour le
  251.      checksum.
  252.  
  253.    Ex: soit le code d'un fichier exécutable comprenant un décompresseur
  254.        de longueur 512 octets, débutant relativement par rapport au
  255.        début du fichier exécutable à l'offset 28+64, les adresses
  256.        28+80 et 28+112 contiennent des mots longs issus de la relocation
  257.        du programme, il ne faut donc pas les compter dans le checksum
  258.        ou alors faire démarrer le checksum après (changement de début de
  259.        liste checksum), celà donne:
  260.        '.EXE' 0000 00000000 0040 0240 87D4
  261.        0050 0070 0000 0000 0000
  262.        le checksum 87D4 est obtenu en ajoutant tous les mots entre
  263.        le début du fichier exécutable non relogé+28(entete)+64 et le
  264.        début+28+64+512 puis en retranchant les mots des offsets
  265.        début+28+80,début+28+82,début+28+112,début+28+114.
  266.  
  267.    - octets 42 à 43: offset REL du bloc longueurs originale/compressée
  268.     (octet 44 = -1) ou longueurs compressée/originale (octet 44 = 0)
  269.    - octet 44: 0 ou -1 selon ordre du bloc longueurs
  270.    - octet 45: valeur d'ajustement=0 si la longueur compressée contient
  271.      la taille du bloc total ((identificateur+)longueurs+données)
  272.      sinon = taille du bloc longueurs (=8 ou 12 si identificateur présent),
  273.      ou = -1 si la longueur compressée n'est pas indiquée dans le bloc
  274.      longueurs mais dans le code du décompresseur:
  275.      dans ce dernier cas, la longueur compressée est recalculée à partir
  276.      de l'entete de l'exécutable (section text+data-offset du bloc des
  277.      données compressées (valeur octets 46 à 47).
  278.    - octets 46 à 47: offset du bloc total ((identificateur+)longueurs+
  279.      données), si les données se trouvent en début du bloc total, cet
  280.      offset correspond alors à l'offset des données.
  281.  
  282.    struc données type fichier data:
  283.    - octets 48 à 51: constante '.DAT'
  284.    - octets 52 à 53: offset d'un identificateur OBLIGATOIRE
  285.      (pas de routine de décompression permettant d'identifier la
  286.      méthode de compression), à 0 si 1er mot long du fichier data
  287.    - octets 54 à 57: valeur de l'identificateur (octet 54 toujours non nul)
  288.    - octets 58 à 59: offset REL du bloc longueurs originale/compressée
  289.      (octet 60 = -1) ou longueurs compressée/originale (octet 60 = 0)
  290.    - octet 60: 0 ou -1 selon ordre du bloc longueurs
  291.    - octet 61: valeur d'ajustement=0 si la longueur compressée contient
  292.      la taille du fichier compressé (identificateur+longueurs+données)
  293.     sinon = taille du bloc longueurs (=8 ou 12 si identificateur présent),
  294.      ou = -1 si la longueur compressée n'est pas indiquée.
  295.    - octets 62 à 63: offset du fichier compressé: généralement à 0, sauf
  296.      s'il contient d'autres informations en entete.
  297.  
  298.    code d'appel de la routine de décompression  :
  299.    - octets 64 à 127: non utilisés (possibilité de s'en servir pour
  300.     stocker les valeurs d'entrée et de sortie de la routine de
  301.     décompression)
  302.    - octets 128 à 255: code d'appel (le mot en 128 doit ètre non nul)
  303.     sont chargés les registres A0:adresse du bloc total
  304.                                D0:type de struc fichier:0=dat/-1=exe
  305.    - octets 256 à ...: extrait d'un programme compressé contenant
  306.      le décompresseur.
  307.  
  308.    à titre d'exemple, le code d'appel utilisé pour ATOMIK35.SP9:
  309.  
  310. code  lea   code-128(pc),a6      ;relativement octet 0
  311.    move.l   a0,120(a6)     ;sauve adresse pour reloger
  312.    tst.w d0       ;test type
  313.    bne.s exe
  314. dat   addq  #4,a0       ;après identificateur
  315.    move.l   (a0)+,d0    ;lit longueur originale
  316.    move.l   d0,124(a6)     ;et sauve pour reloger
  317.  
  318.    jsr   256+202        ;sous-routine de décomp ATM5
  319.  
  320.    lea   code-128(pc),a6      ;relativement octet 0
  321.    move.l   a5,a0       ;adresse bloc décompressé
  322.    move.l   120(a6),a1     ;récupère adresse destination
  323.    move.l   124(a6),d0     ;et longueur originale
  324. deplace move.b (a0)+,(a1)+
  325.    dbf   d0,deplace
  326.    subi.l   #$10000,d0     ;toute la longueur originale
  327.    rts
  328.  
  329.    Les autres fichiers décompresseurs (extension SPn) donné avec
  330.    SPACKER3 peuvent aider à comprendre la structure complexe mais
  331.    flexible d'un module de décompression externe à SPACKER3.
  332.  
  333. * Menu PACK :
  334. -----------
  335.    - Optimize SEQ 2 EXTEND
  336.      Option permettant de compresser les séquences de 2 octets
  337.      identiques sur une étendue de recherche plus grande: gains
  338.      souvent appréciables sur les fichiers de type samples.
  339.  
  340.    - Optimize LOW RES BLK
  341.      Option permettant de compresser des fichiers graphiques (sprites,
  342.      écrans...) en un bloc et par algoritme graphique 4 plans (basse
  343.      résolution). Pour les images, il est préférable d'utiliser
  344.      la compression via un fichier offset (pour pouvoir recharger
  345.      directement par le programme de dessin).
  346.  
  347.    - FORCE DATA TYPE
  348.      Compresse un exécutable, ressource en fichier compressé en
  349.      un bloc (DAT ou BLK si l'optimisation LOW RES BLK est activée).
  350.      celà permet de créer des fichiers compressés simples qui pourront
  351.      ètre intégrés dans une archive SFX.
  352.  
  353. Les autres fonctionnalités ne devraient pas poser problèmes.
  354.  
  355. Enfin, nous ne sommes pas responsables des pertes ou dommages qui pourraient
  356. apparaitre lors de l'utilisation du Spacker 3 et des problèmes lors du
  357. décompactage subsistent encore sous Multidesk et Neodesk III.
  358. Faites donc attention !
  359.  
  360. Vous pouvez nous joindre sur 3614 code TEASER
  361.                           ou 3615 code Rtel, Bal Daneel
  362.  
  363. Nous remerçions à l'avance les personnes qui diffuseront ce packer dans
  364. le monde entier.
  365.  
  366. Un grand merci à STE59, STOF, DMVIOLATOR pour leurs encouragements.
  367.  
  368. Ceci est un produit certifié 100 % FIREHAWKS,
  369. vous pouvez consommez sans modération...
  370.