****************************************** ** ** ** MICE ** ** V1.3 (04.93) ** ** par Pierre-Louis MANGEARD ** ** ** ****************************************** MICE signifie : My Image Code Editor. C'est un générateur de code source, Assembleur et C, à partir d'images IFF, comme des brosses Deluxe Paint par exemple. MICE fonctionne très bien avec des fichiers IFF standards contenant tous les chunks habituels conseillés par les concepteurs : 'FORM', 'ILBM', 'BMHD', 'CMAP', CAMG', 'DEST', et 'BODY'. Mais si tu utilises des formats javanais avec des chunks exotiques tant pis pour toi. MICE se sert de la REQ.LIBRARY alors tu fais gaffe qu'elle figure bien dans ton répertoire LIBS. MICE génère un code source structuré destiné au DEVPAC 2 en assembleur, et au LATTICE (ou SAS) en C. Pour les autres assembleurs ou compilateurs, tu n'auras qu'à apporter les modifications nécessaires à ton code. MODE D'EMPLOI : --------------- Voici une série de manipulations permettant de faire le tour de toutes les possibilités de MICE. Je te conseille de les exécuter l'une après l'autre : il n'y en a pas pour longtemps et comme ça tu comprendras tout. Tu prendras soin d'abord de charger un éditeur quelconque pourvu qu'il ait un requester de fichier, pour constater le résultat des opérations. Pour procéder à ces essais, tu trouveras avec cette Doc un tiroir nommé 'Brushes' contenant 3 brosses IFF, nommées 'Brol', 'Gazm' et 'Rototo'. Tu lances MICE à partir de son icône ou du Shell pour chacun des tests. Un requester de fichier apparaît : tu iras te placer à chaque fois dans le tiroir 'Brushes'. I.- Un seul fichier sélectionné : --------------------------- 1 -> Tu double-clickes sur le fichier 'Rototo'. Le requester disparaît. Une fenêtre apparaît, peuplée de gadgets booléens et d'un gadget de chaîne intitulé 'SOURCE CODE FILENAME'. - 4 gadgets sont préselectionnés ('ASSEMBLY', 'IMAGE STRUCT', 'IMAGE DATA' et 'COMMENTS') - un gadget est "ghosted" ('MULTIFILES') - Le gadget de chaîne contient la mention 'RAM:Mice.Code'. 2 -> Tu clickes maintenant sur le gadget 'DO & QUIT'. Tout disparaît. 3 -> A partir de ton éditeur, tu charges à partir de la RAM: un nouveau fichier qui vient d'y être créé et qui s'appelle justement 'Mice.Code'. Ce fichier contient la structure 'Image' et les datas d'image de la brosse 'Rototo', codés en assembleur, et agrémentés de commentaires, que tu peux intégrer directement à un programme destiné à être assemblé avec le DEVPAC. Tu constates que le code reprend le nom de la brosse que les labels 'ImageRototo' et 'ImageDataRototo' sont générés. Je te laisse imaginer l'avantage que représente ce système qui te permet de nommer pertinemment tes brosses dès leur génération à partir de ton logiciel de dessin. Donc, pour bénéficier pleinement de l'efficacité de MICE, tu dois respecter certaines règles pour nommer tes brosses IFF ; pour les connaître, reporte-toi au paragraphe 'LABELS ET NOMS DE FICHIERS'. II.- Option 'COMMENTS' : ----------------- Dans l'essai précédent, l'option 'COMMENTS' était sélectionnée par défaut. Voyons maintenant quel a été son rôle en la désélectionnant. 1 -> Tu double-clickes sur le fichier 'Rototo'. 2 -> Tu clickes maintenant sur le gadget 'COMMENTS'. Il se désélectionne. 3 -> Dans le gadget 'SOURCE CODE FILENAME', tu renommes le fichier de sortie en rajoutant un '1', par exemple : 'Mice1.Code'. 4 -> Tu clickes maintenant sur le gadget 'DO & QUIT'. Tout disparaît. 5 -> A partir de ton éditeur, tu charges, à la suite du code précédent ou dans une autre fenêtre afin de pouvoir les comparer, le nouveau fichier 'RAM:Mice1.Code'. Ce fichier contient la structure 'Image' et les datas d'image de la brosse 'Rototo', codés en assembleur, mais SANS les commentaires. III.- Option 'PALETTE' : ---------------- Cette option ajoute le code de la palette de la brosse sélectionnée à partir du requester. Pour voir à quoi cela ressemble, tu peux si tu veux répéter les mêmes manipulations que I et II, mais en sélectionnant en plus l'option 'PALETTE'. IV.- Option 'C' : ---------- Cette option permet d'obtenir le code source en C et non en Assembleur. Les deux gadgets sont en va-et-vient. Pour voir à quoi cela ressemble, tu peux si tu veux répéter les mêmes manipulations que précédemment, mais en sélectionnant l'option 'C' plutôt que l'option par défaut 'ASSEMBLY'. V.- Multi-sélection de fichiers sans l'option 'MULTIFILES' : ------------------------------------------------------ V.1.- Option 'ASSEMBLY' : 1 -> En maintenant la touche 'SHIFT' enfoncée, tu clickes successivement sur les trois fichiers 'Brol', 'Gazm', et 'Rototo', puis tu relâches 'SHIFT'. 2 -> Tu clickes sur le bouton 'OK' du requester. 3 -> Tu sélectionnes l'option 'PALETTE'. Tu remarqueras au passage que le gadget 'MULTIFILES' n'est plus "ghosted", mais pour l'instant on le laisse de côté. 4 -> Tu clickes sur 'DO & QUIT'. 5 -> A partir de ton éditeur, tu charges 'RAM:Mice.Code'. Le code que tu as obtenu comprend 3 sections : - SECTION Palette,DATA comprenant la Palette - SECTION ImageStructure,DATA comprenant toutes les structures 'Image' - SECTION ImageData,DATA_C comprenant tous les datas d'image Cet agencement te permet de manipuler d'un seul coupé-collé des blocs entiers de data d'un même type. La palette n'est donnée qu'une seule fois en tête de fichier. C'est la palette du premier fichier sélectionné, 'Brol'. Si 'Brol' n'avait pas contenu de palette ou une palette corrompue, 'Mice.Code' n'aurait pas fait figurer de SECTION Palette. V.2.- Option 'C' : Le code généré en C est structuré différemment de celui en assembleur. Pour voir à quoi cela ressemble, tu répètes les mêmes manipulations que dans la partie V.1., mais en sélectionnant l'option 'C' plutôt que l'option par défaut 'ASSEMBLY'. La palette est donnée en premier, mais les datas d'image ne sont pas séparés des structures 'Image' et les données des 3 images 'Brol', 'Gazm' et 'Rototo' restent groupées. En effet, tu remarques que chaque chunk 'ImageData' est précédé de la directive 'USHORT chip' : ce mot-clef 'chip' garantit que le data qui suit sera chargé en CHIP MEMORY lorsque tu lanceras ton exécutable. Il n'est donc pas nécessaire de stocker séparément les datas d'image des structure 'Image'. VI.- Multi-sélection avec l'option 'MULTIFILES' et sans 'PALETTE' : ------------------------------------------------------------ 1 -> En maintenant la touche 'SHIFT' enfoncée, tu clickes successivement sur les trois fichiers 'Brol', 'Gazm', et 'Rototo', puis tu relâches 'SHIFT'. 2 -> Tu clickes sur le bouton 'OK' du requester. 3 -> Tu sélectionnes l'option 'MULTIFILES'. Tu remarques que dès que tu as clické, le gadget 'SOURCE CODE FILENAME' a indiqué 'RAM:' et non plus 'RAM:Mice.Code'. 4 -> Tu clickes sur le bouton 'DO & QUIT' de la fenêtre. 5 -> Avec le requester de ton éditeur de fichier, tu constates qu'il y a 3 nouveaux fichiers en RAM:, nommés 'Brol.Code', Gazm.Code' et 'Rototo.Code'. Si tu les visionnes l'un après l'autre tu verras que chacun contient la structure 'Image' et les datas d'images de sa brosse d'origine. VII.- Multi-sélection avec l'option 'MULTIFILES' et avec 'PALETTE' : ------------------------------------------------------------ 1 -> En maintenant la touche 'SHIFT' enfoncée, tu clickes successivement sur les trois fichiers 'Brol', 'Gazm', et 'Rototo', puis tu relâches 'SHIFT'. 2 -> Tu clickes sur le bouton 'OK' du requester. 3 -> Tu sélectionnes l'option 'PALETTE'. 4 -> Tu sélectionnes l'option 'MULTIFILES'. 5 -> Tu clickes sur le bouton 'DO & QUIT' de la fenêtre. 6 -> La fenêtre disparaît et laisse place à un requester qui te demande : 'Repeat palette in each file ?' ('Dois-je répéter la palette dans chaque fichier ?'). Tu peux répondre 'Yes' ou 'No' : VII.1.- Réponse 'Yes' au requester : Avec le requester de ton éditeur de fichier, tu constates qu'il y a en RAM: les 3 fichiers 'Brol.Code', Gazm.Code' et 'Rototo.Code'. Si tu les visionnes l'un après l'autre tu verras qu'ils contiennent chacun la palette, la structure 'Image' et les datas d'image de la brosse correspondante. Mais cette fois-ci, la palette de chaque fichier a pour nom, respectivement, 'PaletteBrol', 'PaletteGazm', et 'PaletteRototo'. VII.2.- Réponse 'No' au requester : Avec le requester de ton éditeur de fichier, tu constates qu'il y a en RAM: les 3 fichiers 'Brol.Code', Gazm.Code' et 'Rototo.Code' ainsi qu'un nouveau fichier nommé 'Palette.Code'. Si tu le visionnes tu verras qu'il contient la palette. Les 3 autres fichiers ne contiennent plus la palette. VIII.- Multi-sélection de fichiers avec l'option 'PALETTE' seule : --------------------------------------------------------- Dans la grande majorité des cas, quand tu veux coder des brosses IFF, elles appartiennent toutes à un même écran et partagent donc la même palette de couleurs. C'est pourquoi MICE ne génère qu'une seule palette, sauf dans le cas décrit en VII.1. Mais si tu ne sélectionnes QUE l'option 'PALETTE', MICE comprendra que c'est bien PLUSIEURS palettes que tu désires et génèrera soit un fichier unique avec les trois palettes 'PaletteBrol', 'PaletteGazm', et 'PaletteRototo', soit, si tu as choisi l'option 'MULTIFILES', trois fichiers 'Brol.Code', Gazm.Code' et 'Rototo.Code' contenant chacun sa palette respective. IX.- Option 'SHOW IFF' : ----------------- IX.1- Sélection unique : 1 -> Tu double-clickes sur le fichier 'Rototo'. 2 -> Sélectionne l'option 'SHOW IFF'. 3 -> Un écran apparaît qui te montre à quoi ressemble la brosse 'Rototo'. 4 -> Tu appuies sur le bouton gauche de la souris : l'écran disparaît et tu retournes à la fenêtre. IX.2- Multi-sélection : 1 -> En maintenant la touche 'SHIFT' enfoncée, tu clickes successivement sur les trois fichiers 'Brol', 'Gazm', et 'Rototo', puis tu relâches 'SHIFT'. 2 -> Tu clickes sur le bouton 'OK' du requester. 3 -> Tu sélectionnes l'option 'SHOW IFF'. 4 -> Un écran apparaît qui te montre à quoi ressemble la brosse 'Brol'. 5 -> Tu appuies sur le bouton gauche de la souris : l'écran disparaît et un autre lui succède qui te montre à quoi ressemble la brosse 'Gazm'. 6 -> Tu appuies sur le bouton gauche de la souris : l'écran disparaît et un autre lui succède qui te montre à quoi ressemble la brosse 'Rototo'. 7 -> Tu appuies sur le bouton gauche de la souris : l'écran disparaît et tu retournes à la fenêtre. X.- Options 'DO', 'DO & QUIT', 'CANCEL', QUIT' : ------------------------------------------ Dans les exemples précédents, il était toujours dit de clicker sur le bouton 'DO & QUIT' à la fin de chaque manipulation. Cette option permet de coder sa ou ses images, puis de quitter MICE directement. L'option 'DO' permet de coder sa ou ses images et, dès que le codage est achevé, de revenir au requester de fichiers pour éventuellement traiter d'autres images. L'option 'CANCEL' permet de revenir au requester de fichiers sans avoir fait quoi que ce soit. L'option 'QUIT' permet de quitter MICE sans avoir fait quoi que ce soit, tout comme le bouton 'Forget it' du requester. LABELS ET NOMS DE FICHIERS : ---------------------------- MICE recupère le nom de ta brosse pour génèrer ses labels. C'est très pratique, car dès que tu as créé ton dessin tu peux le sauvegarder sous le nom que tu comptes utiliser dans ton programme. MICE transforme la première lettre de ton nom de fichier en majuscule si elle ne l'est pas déjà. Par exemple, à partir d'une brosse nommée 'rototo', MICE génèrera les labels suivants : 'ImageRototo', 'ImageDataRototo', et éventuellement 'PaletteRototo'. Etant donné que le nom de ton fichier IFF deviendra label, il doit donc respecter quelques règles : - le nom doit commencer par les caractères a-z, A-Z ou _. - il ne peut contenir d'autres caractères que a-z, A-Z, 0-9 ou _. - il ne doit donc pas contenir d'espace. - il ne doit donc pas contenir de caractères accentués. exemples de noms valides : Rototo veRGlUtoMItrOPhLerCABle Ramb0 R2D2 Louis_XIV _fna __vlu exemples de noms invalides : Starsky&Hutch 2001_A_Space_Odyssey &%$?#(>* _make room ! yékéké etc... - MICE refuse un fichier dont la première lettre du nom n'est pas correcte. - MICE accepte les fichiers contenant des caractères illégaux : il se contente de garder ce qui est valide et de supprimer ce qui suit. Voici quelques exemples de ce que cela donne : Starsky&Hutch donne le label ImageStarsky brush.1 " " ImageBrush brush.2 " " ImageBrush brush(!&?<>) " " ImageBrush _make room ! " " Image_make etc... " " ImageEtc Tu feras donc attention que les premiers caractères significatifs de tes noms soient bien différents d'un fichier à l'autre. Dans le cas ci-dessus des 2 noms de fichiers 'brush.1' et 'brush.2', tu peux constater qu'ils donnent le même label, ce qui te vaudrait un message d'erreur lors de la compilation avec le DEVPAC ou le LATTICE/SAS. Si tu as choisi l'option 'MULTIFILES', tu ne verras apparaître qu'un seul fichier source, du nom de 'Brush.Code', qui contiendra le code source du dernier des deux fichiers 'brush.1' et 'brush.2' à avoir été traité, celui-ci ayant écrasé le précédent puisqu'il portait le même nom. Par défaut, MICE génère le fichier 'RAM:Mice.Code', et prend 'RAM:' comme périphérique de sortie pour l'option 'MULTIFILES'. Chronologie : MICE V1.00 : octobre 1991 MICE V1.20 : novembre 1991 (Fish 590) Quelques bugs fixés. MICE V1.30 : avril 1993 Optimisations globales et Topaz 8 pour la fonte des gadgets. ================***************************================== *=*=*=*=*=*=*=*=*=*=*=*=*=* CORRESPONDANCE : ______________ Pierre-Louis MANGEARD 95, chemin Kennedy 97432 LA RAVINE DES CABRIS Ile de la Réunion ou Pierre-Louis MANGEARD Médiathèque de Saint-Pierre BP 396 97410 SAINT PIERRE Ile de la Réunion ou Pierre-Louis MANGEARD 15, rue des Cailles Plateau Caillou 97460 SAINT PAUL Ile de la Réunion tel: 19 ~ 262 57 40 28