Documentation pour X-Converter Version 1.01, 25 Nov 1992, par MR.BLUESKY de DRIFTERS Ce programme est librement distribuable à condition qu'il ne subisse aucune modification, que cette doc soit diffusée avec, et que les distributeurs ne fassent aucun profit. L'auteur se réserve tous les autres droits. Ce programme est mis à votre disposition sans aucune garantie. Utilisez le à vos risques et périls. 1. Introduction ~~~~~~~~~~~~~~~ X-Converter est un nouveau convertisseur graphique avec beaucoup plus de fonctions que ceux existant déjà. Il fonctionne correctement sur TOUS les Amiga depuis le système V33 jusqu'au V37. 2. Installation ~~~~~~~~~~~~~~~ Copiez les fichiers suivants: * X-Converter où vous voulez * X-Converter.info * XC.font dans votre tiroir FONTS: De plus, il nécessite les librairies suivantes: * diskfont.library V33+ * icon.library V33+ * reqtools.library V37+ Tout ceci devrait se trouver quelque part sur ce disk. 3. Démarrage ~~~~~~~~~~~~ X-Converter démarre indifféremment du CLI/SHELL ou du WorkBench. S'il est lancé du CLI/SHELL, il se détache automatiquement (rend la main). 4. Chargement d'une image source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sélectionnez 'Open IFF' dans le menu 'Project' et répondez au file-requester. XC gère des images sources allant jusqu'à 32000x32000 (ça sera assez, non ?!?) et extrait correctement un éventuel stencil provenant de DPaint. Si vous n'avez pas assez de mémoire (chip) pour l'affichage de l'image, un requester vous préviendra et XC sera terminé. Notez que l'affichage se fait toujours en basse résolution non-entrelacée, et ce même si votre image est en haute résolution et/ou entrelacée. J'ai fait ce choix parce que ça permet de faire des découpages précis, même avec une souris un peu capricieuse. Si l'image source est plus grande que l'écran, utilisez les touches curseur pour la faire scroller. 5. Découpage d'un fragment d'image ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Il y a actuellement 2 façons de découper un fragment; la première, en utilisant tout bêtement la souris: déplacez le centre de la croix (si elle n'est pas affichée, cliquez le bouton de droite pour la faire apparaitre) sur le coin supérieur gauche du fragment et cliquez le bouton de gauche; tout en maintenant le bouton enfoncé, déplacez la souris jusqu'au coin inférieur droit (vous pouvez suivre les coordonnées en haut de l'écran) puis relâchez le bouton, le fragment est défini et immédiatement bufferisé. L'autre façon consiste à rentrer les coordonnées directement au clavier: pour ce faire, sélectionnez l'option 'Frame size' dans le menu 'Set-up'; une fenêtre s'ouvre et vous permet de saisir toutes les valeurs numériques nécessaires, y compris la profondeur du fragment; vous pouvez également utiliser cette option pour modifier un fragment défini précédemment avec la souris. Cliquez sur 'Update' pour définir ou mettre à jour le fragment; cliquez sur 'Cancel' pour annuler l'opération. La taille maximum de découpage varie en fonction de la version du hardware de votre Amiga: si vous avez un ancien blitter (V34 et précédents), elle est limitée à 992x1008; sinon (V36+ ou V34 pour les A-2000B) le 'fat blitter' permet de découper jusqu'à 32000x32000. 6. Sauvegarde d'un fragment ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Une fois votre fragment défini, vous pouvez le sauvegarder dans les formats suivants: * IFF : fichier standard IFF-ILBM. * Raw normal : bitmap standard (bitplan 1, bitplan 2...). * Raw blit : bitmap spéciale permettant de gagner des accès blitter (bitplans entrelacés). * BOB normal : presque identique à 'Raw normal' à part qu'un mot nul est ajouté à la fin de chaque ligne pour les décalages à droite du blitter. * BOB one-shot : idem BOB normal mais avec des bitplans entrelacés. * Sprite normal : sprite standard (2 bitplans entrelacés d'une largeur de 16 pixels). * Sprite attached: sprite 16 couleurs (2x2 bitplans entrelacés d'une largeur de 16 pixels). * Palette IFF : palette standard IFF. * Palette raw : mots contenant les composantes RVB de chaque couleurs, 4 bits par composante, justifié à droite, en hex: 0x0RVB. * Icon main frame: fichier icone standard. Réglez les flags en sélectionnant 'Icon flags' dans le menu 'Set-up', en fonction de l'utilisation que vous désirez en faire. * Icon sec. frame: ajoute une seconde image à une icone déjà existante n'en contenant qu'une. Ici, pas besoin de régler les flags puisque l'icone existe déjà. En plus de tout ça, vous pouvez choisir si vous voulez ou non que la palette en cours soit ajoutée (au format raw) devant ou derrière les données graphiques (excepté si vous choisissez un format inadéquat comme IFF, icone...) en sélectionnant un des 3 flags flags dans le sous-menu 'Palette' du menu 'Set-up'; il est également possible de retoucher la palette avant de sauvegarder: utilisez pour cela l'option 'Edit' dans ce même sous-menu. Il y a encore d'autres options possibles avant la sauvegarde d'un fragment; vous pourriez avoir besoin par exemple qu'il soit sauvegardé comme un source. XC peut générer pour vous soit un source C, soit un source assembleur: pour cela sélectionnez le type de sauvegarde dans le sous-menu 'Target type' du menu 'Set-up', 'Binary', 'C source' ou bien 'ASM source'; la création de sources ne concerne cependant pas tous les formats, pour des raisons logiques: les formats IFF, icone et palette IFF seront toujours sauvegardés sous forme de fichiers binaires. La dernière option concerne les sprites: vous pouvez demander à XC d'insérer ou non les mots (nuls) de contrôle (2 mots avant les données graphiques, 2 mots après) en activant ou désactivant 'Sprite ctrl' dans le sous-menu 'Prefs' du menu 'Project'. 7. Les fragments 'One-row' ~~~~~~~~~~~~~~~~~~~~~~~~~~ La fonction 'One-row frame' du menu 'Set-up' permet de créer des fragments particuliers, de largeur illimitée et à partir d'une image source de taille standard. Un exemple d'utilisation de cette fonction pourrait être le formatage d'un jeu de caractères destiné à une démo ou un jeu: imaginez que ce jeu de caractères soit défini dans une matrice de 32x40, et dessiné dans une image de taille standard (320x256); ça donnerait quelque chose comme ça: ABCDEFGHIJ KLMNOPQRST UVWXYZ0123 456789!?:. ;=+* Dans ce cas précis, la fonction one-row convertirait les données de la façon suivante: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?:.;=+* c'est-à-dire une rangée unique Voici comment obtenir la conversion pour cette exemple: la première rangée de caractères ne commence peut-être pas sur la première ligne raster de l'image: dans ce cas, entrez la valeur de l'origine verticale dans 'Y-Offset'. Puis définissez la largeur nominale des rangées dans 'Nominal width' (ici 320), la largeur de la dernière rangée dans 'Last width' (ici 4x32=128), le nombre de rangées 'pleines' dans 'Full rows' (ici 4), la hauteur de la rangée cible, qui définit aussi l'interlignage entre 2 rangées sources, dans 'Height' (ici 40), et enfin la profondeur dans 'Depth'. C'est tout ! Cliquez sur 'Update' pour valider les paramètres ou 'Cancel' pour annuler l'opération. Notez que les 2 largeurs à entrer doivent être obligatoirement alignées sur un octet (8 pixels). Vous pouvez ensuite sauvegarder le fragment défini soit au format 'raw normal', soit au format 'raw-blit', avec ou sans palette. Mais vous ne pouvez pas générer de fichier source. 8. Utilisation d'un stencil ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Une des caractéristiques originales de XC est de pouvoir découper des fragments de façon sélective, c'est-à-dire à travers un stencil. Attention, bien que le panneau de définition ressemble un peu à celui de DPaint, le stencil de XC fonctionne différemment et n'est pas compatible: le stencil de DPaint est précalculé, ce qui apporte une souplesse nécessaire au dessin mais en contre-partie nécessite un bitplan de plus donc plus de mémoire chip; le stencil de XC est, lui, appliqué en temps réel: il n'occupe pas de mémoire supplémentaire mais n'est pas instantané. La première chose à faire est de le définir: sélectionnez 'Make' dans le sous-menu 'Stencil' du menu 'Special'. Cliquez sur les couleurs à verrouiller. Cliquez sur 'Clear' pour effacer le masque, sur 'Invert' pour l'inverser, sur 'Restore' pour revenir à la dernière définition validée, sur 'Real CMap' pour visualiser la palette complète, et enfin sur 'Make' pour valider le nouveau masque ou 'Cancel' pour annuler l'opération. Après avoir cliqué sur 'Make' et si le masque est valide (au moins une couleur sélectionnée), le stencil est activé: un S s'affiche en haut à droite de l'écran; pour le désactiver ou le réactiver, sélectionnez 'Toggle on/off' dans le sous-menu 'Stencil'. Le stencil activé, les découpages ne prendront plus en compte les couleurs verrouillées: cela nécessite un délai supplémentaire au moment de la bufferisation (application du masque en temps réel), proportionnel à la taille du fragment. Ce délai peut devenir gênant si vous avez de nombreux fragments à découper: dans le cas où ces découpages se font dans la même image et à travers le même stencil, il est possible de masquer directement l'image source en sélectionnant 'Mask src' dans le sous-menu 'Stencil', une fois pour toutes; désactivez ensuite le stencil et vous pourrez à nouveau découper sans délai. Une autre option stencil, 'Mask frame' permet d'appliquer le masque sur le fragment, sans être obligé de le redécouper, en cas d'oubli. Notez qu'aucune opération de stencil n'est possible sur un fragment 'one-row'; ceci s'explique par le fait que ce genre de fragment n'est pas bufferisé, mais construit en temps réel au moment de la sauvegarde. Vous pouvez néanmoins masquer l'image source et obtenir de cette façon un fragment masqué par rapport à l'image originale. 9. Compilation de fragments ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cette possiblité n'existe actuellement, à ma connaissance, que dans UN autre convertisseur graphique, mais qui n'est pas compatible 2.0 (argh !). L'idée n'est donc pas inédite mais quoiqu'il en soit, XC permet une gestion beaucoup plus souple et surtout plus puissante. Expliquons d'abord ce qu'est la compilation de fragments: imaginez que vous êtes entrain de développer une application avec beaucoup de graphismes (images intuition, BOBs, sprites...). Vous allez très vite vous retrouver avec une multitude de fichiers externes que vous devrez 'incbin'er au moment de la compilation ou de l'assemblage, ce qui perdra énormément de temps, surtout si vous travaillez sur des disquettes (mais même avec un disque dur, 'lock'er et charger des douzaines de fichiers externes à chaque fois que vous compilez/assemblez peut très rapidement devenir énervant). Pour éviter ces désagréments, pour pourriez opter pour des images directement incluses dans votre source principal mais cette fois ci vous rencontreriez un autre problème: la taille de votre source principal ! Les fonctions de compilation de XC ont été développées de façon à résoudre tous ces problèmes: elles permettent de mettre toutes les images d'une même application dans un fichier binaire unique et de le maintenir à jour par la suite. Ce qui signifie que vous pourrez ajouter et retirer à volonté les fragments contenus dans ce fichier; de plus, XC peut générer, si vous le désirez, un fichier texte décrivant le contenu précis du fichier compilé ! Voici comment procéder: une fois que vous avez défini un fragment (normal ou 'one-row'), sélectionnez 'Add frame' dans le sous-menu 'Pack' du menu 'Special'; une fenêtre s'ouvre et vous demande de choisir le format désiré; faites votre choix et cliquez sur 'Accept' pour ajouter le fragment. C'est tout ! Si vous avez l'intention de compiler plusieurs fragments dans le même format, vous pouvez désactiver la fenêtre de sélection, de façon à gagner du temps, en sélectionnant 'Pack quiet' dans le sous-menu 'Prefs'; dans ce cas, initialisez le format en sélectionnant 'Frame fmt' dans le sous-menu 'Pack'. La compilation de fragments prend en compte les flags palette définis dans me menu 'Set-up', donc n'oubliez pas de faire le réglage avant de compiler. Pour retirer un ou plusieurs fragments de la liste, sélectionnez 'Rem frame': une fenêtre s'ouvre et affiche la liste des fragments avec leurs caractéristiques; cliquez sur le(s) fragment(s) indésirables puis cliquez sur 'Remove' pour valider la suppression ou 'Cancel' pour annuler l'opération. Une fois que vous avez terminé (pour cette fois-ci) la compilation, sélectionnez 'Save pack' dans le menu 'Project' pour sauvegarder la nouvelle liste; si vous désirez que XC génère le descriptif, sélectionnez 'Save pack + Infos'. Voilà, vous pourrez, par la suite, faire des mises à jour de la liste en rechargeant votre liste dans le buffer de compilation (option 'Open pack' du menu 'Project'). Notez que XC sauvegarde un fichier binaire supplémentaire qui contient toutes les informations concernant votre liste; ne l'effacez surtout pas ou alors vous ne pourrez plus rechargez la liste par la suite; n'essayez pas d'interpréter les données qu'il contient pour votre propre usage, ni de le modifier, parce qu'il pourrait changer avec les futures versions de XC. Notez aussi que le fichier compilation ne contient pas uniquement vos fragments: vous devez ignorer les 6 premiers octets qui sont des données propres à XC, qui lui permettent de s'y retrouver; ne retirez pas cette entête, sinon XC ne reconnaitra plus le fichier; cet offset est pris en compte par le texte descriptif. 10. Autres options ~~~~~~~~~~~~~~~~~~ * préférences pas encore expliquées: - No icons: : désactivez cette option si vous voulez que XC génère des icones aux fichiers sauvegardés. - Scrollers: : activez cette option si vous voulez des gadgets pour le scrolling de l'image source. - C source .c : activez cette option si vous voulez qu'un suffixe .c soit ajouté en cas de sauvegarde en source C. - ASM source .asm: activez cette option si vous voulez qu'un suffixe .asm soit ajouté en cas de sauvegarde en source assembleur. - ASM source .s : activez cette option si vous voulez qu'un suffixe .s soit ajouté en cas de sauvegarde en source assembleur. * Autres: - Sélectionnez 'Mouse On/Off' dans le menu 'Special' pour cacher et réactiver le pointeur de la souris. 11. Résumé des raccourcis clavier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AMIGA + o : open IFF AMIGA + f : set frame size AMIGA + e : set color map before flag AMIGA + h : set color map behind flag AMIGA + k : set no color map flag AMIGA + p : edit color map AMIGA + b : set binary type flag AMIGA + s : set ASM source type flag AMIGA + c : set C source type flag AMIGA + r : set one-row frame AMIGA + i : set icon flags AMIGA + t : toggle stencil On/Off AMIGA + d : make stencil AMIGA + v : reset pack AMIGA + l : add frame AMIGA + x : remove frame Del : toggle mouse On/Off