[tuto] Convertir Un Background Bmp En Source Gc/wii


Badablek
 Share

Messages recommandés

Salut les GueuX,

Avec l'aide inestimable de Ac_K, qui a consacré pas loin de 5 heures de son temps pour m'aider à comprendre le format des fonds d'écran de mes émulateurs préférés, allant même jusqu'à coder un logiciel Wii très sympathique de conversion, je vais vous expliquer aujourd’hui comment modifier le fond d’écran de Snes9xGX 003 (applicable à n’importe quel homebrew utilisant un background compréssé). Il faudra pour cela avoir un environnement de compilation devkitpro fonctionnel et à jour, sans oublier la librairie freetype requise pour compiler ce petit bijou de homebrew.

2 méthodes s'offriront à vous : en utilisant l’utilitaire de Ac_K sur votre Wii ou en faisant ça à la main, avec les outils qui vont bien.

Je vais aujourd’hui aborder la technique manuelle, pas forcement la plus simple, mais j’aime bien la bidouille. J’ai par ailleurs crée un script quasi complet de conversion pour les plus fainéants, pour peu que vous utilisez une version enregistrée de l’excellent Winhex 15.0.

[Méthode à la main]

Outils nécessaires :

* Winhex 15.0 enregistré (le script ne fonctionne pas sur version d'évaluation)

* ce pack de logiciels

Il faut tout d’abord trouver un fond d’écran en 640 x 480 au format BMP, considérons que celui-ci se nomme background.bmp. Attention, un fond d'écran "compliqué" (entendez par là bien chargé graphiquement) va fortement faire augmenter la taille des binaires compilés (d'environ 3Mo pour une image compliquée). Il faut dans un premier temps le rendre compréhensible pour la Gamecube/Wii. Il faut donc passer par gfx2gc.exe qui va se faire un plaisir de le convertir au format Y1CBY2CR via cette commande :

Gfx2gc.exe -1D background.bmp

Un fichier "background.raw.c" est créé. Ouvrez le dans un éditeur de texte (Programmer’s Notepad est recommandé...simple, efficace, et fourni avec devkitpro !). Vous vous retrouvez devant ceci :

/* * File  : background.bmp * Width : 640 * Height: 480*/#define BACKGROUND_WIDTH   (640)#define BACKGROUND_HEIGHT   (480)#define BACKGROUND_SIZE   (307200)const unsigned long background_Bitmap[480*640]={

Puis une multitude de valeurs héxa et enfin

 };/* END OF FILE */

Le but du jeu est simple : ne garder que les codes héxa

Exemple :

0x00800080, 0x00800080, 0x00800080, 0x00800180, 0x02800380, 0x02800480, 0x02800380, 0x02800580, 0x05800380, 0x04803A80, 0x13800080, 0x02800180, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x01800280, 0x03800580, 0x05800480, 0x0A800280, 0x04800280, 0x02800180, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800580, 0x0A7F0B80, 0x15801182, 0x0B782F82, 0x0B7D157D, 0x0F8B0C79, 0x0683017D, 0x01800080, 0x00800080, 0x01800080, 0x00800180, 0x02800380, 0x0682067F, 0x0A82097F, 0x0782027F, 0x04820380, 0x0482027F, 0x0380037F, 0x02800180, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x007F0081

Ps : il faut aussi penser à retirer la dernière virgule derrière la toute dernière valeur héxa.

Sauvegardez votre travail, on va passer à l’éditeur héxadécimal.

Personnellement j’utilise Winhex 15.0. Il faut donc ouvrir background.raw.c puis on va utiliser une fonction très pratique : Remplacer chaîne héxa (Ctrl + Alt + H)

Il va falloir remplacer ces valeurs par une valeur vide (ce qui les effacera, chose que l’on veut)

2C203078

2C200D0A

3078

hexa.png

ATTENTION à bien respecter cet ordre pour remplacer !

Là, on a presque fini avec l'éditeur héxa...il ne manque plus qu’à faire une conversion Ascii > Binaire, en utilisant la fonction "Convertir" (Ctrl+ R) de Winhex. Il faut choisir "ASCII Hexadécimal > Binaire". Sauvegardez. Le fichier est enfin prêt pour la suite des opérations.

ascii2bin.png

On va passer par une petite compression Zlib qui permettra de réduire considérablement le fichier, si le background choisi est "simple" graphiquement.

zlibc -k background.raw.c background.bin 9

Dernière phase : convertir le binaire compréssé en un format compréhensible par la Gamecube/Wii.

bin2c background.bin background.h BG

A partir de là, on a tous les éléments. Il va falloir noter la taille en octets des fichiers background.raw.c et background.bin

Dans mon cas, ça sera 614400 et 517888.

Ouvrez le fichier original "gfx_bg.h" des sources de snes9x dans Programer's notepad

/* * File  : bg3.bmp * Width : 640 * Height: 480*/#define BG_WIDTH		(640)#define BG_HEIGHT	   (480)#define BG_RAW		 (614400)#define BG_COMPRESSED   (517888)static unsigned char bg[]={

Comme vous pouvez le voir, il faut renseigner les tailles du background non compréssé et compréssé. Une fois ces valeurs

correctement renseignées, il va falloir copier les données entre {} du fichier background.h que l'on vient tout juste de créer à

la place des données originales de "gfx_bg.h" (elles aussi entre {}).

Sauvegardez "gfx_bg.h", recompilez snes9x et admirez votre magnifique background perso....je sais, c''est beaucoup à faire pour si peu de chose, mais pour celui qui aime la bidouille, c'est génial.

background.jpg

Pour faciliter 90% du processus de création, j'ai inclus un fichier batch ainsi qu'un script winhex pour faire tout le boulot (sauf insérer les tailles des fichiers et coller les valeurs héxa dans le fichier "gfx_bg.h"). Il faut simplement décompresser les outils où vous voulez, copier le fichier BMP désiré dans le même répertoire, renommé background.bmp et de lancer build.bat.

J'espère automatiser à 100% le processus sous peu...

BONUS :

pour ceux qui aiment les choses vraiment bien faites, il est possible "d'optimiser" background.h et de lui faire perdre 500Ko (sur 3Mo ça peut le faire). Il suffit pour cela, toujours à l'aide de Winhex, de supprimer tous les espaces entre les valeurs héxa, en remplaçant la valeur 2C20 par la valeur 2C.

Lien vers le commentaire
Partager sur d'autres sites

^_^

mise à jour : désormais, tout le processus est automatisé de A à Z, cela ne marche cependant que pour ceux qui ont enregistré leur version de Winhex 15.0 (les scripts sont désactivés et/ou très limités sur la version de démonstration). Il suffira de placer background.bmp dans le même répertoire que les outils et de cliquer sur Build.bat. Il faudra ensuite cliquer sur OK à chaque fois que WInhex posera une quesiton, et le fichier tout prêt à être compilé apparaitra par la magie du scripting :D

Je vais essayer de refaire mes scripts sur un éditeur héxadécimal gratuit.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share