XI. Création de Tiles et de Maps
(utilisation de Tile Studio)

Dernière modif : 02/03/2002

1) Qu'est ce que Tile Studio ?

a- Introduction

Tile Studio est un logiciel qui permet la réalisation de Tiles de différentes tailles avec des outils de manipulation de couleurs très pratiques. On peut avoir plusieurs jeux de Tiles par projets. A partir de chacun de ces jeux de Tiles, on peut créer une multitudes de Maps. Là aussi, les outils de manipulation des Maps sont très puissants: animations, copie de blocs avec adaptation automatique de la taille... Enfin, et ce n'est pas le moindre, Tile Studio a un langage de programmation propre qui permet de définir exactement le fichier qui sera exporté, en fonction de ses besoins.

Nous utiliserons, donc, dans tous le reste du tutorial ce logiciel pour ce qui sera de la création des Tiles, des Maps, et même des Sprites et de leurs animations. Mais, le seul problème est que la dernière version (v. 2.2beta3) de Tile Studio est bugguée jusqu'à la moëlle, ce qui est dommage car il manque quelques commandes utiles à la génération du code pour la GBA à la version précédente (v. 2.1) qui fonctionne parfaitement.

Ainsi, nous utiliserons :

b- Installation de Tile Studio

La première chose à faire est de se le procurer, pour celà allez sur son site et téléchargez les fichiers suivants:
- "TS.ZIP" (1.7 Mo) : qui est l'archive contenant l'ensemble du logiciel dans sa version 2.1, ainsi qu'un tutorial en anglais sur son utilisation.
- "ts.exe" (295 Ko) : qui est la mise à jour du programme vers la version 2.2 béta 3.

A cause des différents bugs de la dernière version, l'installation du logiciel est un peu compliquée :

c- Le rendre le projet utilisable avec la GBA

Le logiciel est installé mais n'est pas encore utilisable pour la réalisation de jeux avec la GameBoy Advance, pour celà vous devez télécharger "GBA_C.ZIP (6.5Ko)" qui contient les fichiers ".tsd" que j'ai créé permettant l'exportation des Tiles, Maps, Sprites et Sequences pour qu'ils puissent être utilisé avec ARM SDT et GCC.

L'installation se fait en décompressant "GBA_C.ZIP" dans le répertoire où vous avez installé Tile Studio.

Lorsque vous voudrez utiliser vos Tiles et Maps (ou les sprites et leurs animations) dans vos programmes en C :

NOTE: Dues aux limitations de "GBA_C_Background" et "GBA_C_Sprite", vous devrez créer dans TOUS les cas différents projets pour vos Maps et vos Sprites/Animations. On ne peut pas mélanger les deux dans un seul projet!!!

2) Le module "Tiles"

a- L'interface

1 : L'ensemble des Tiles du jeu de tiles (tiles set) sélectionné.

2 : La tile en cours de réalisation/modification.

3 : Apperçu de ce que donnerait la tile dans une carte.

4 : Le nuancier de couleurs. En bas à gauche la couleur sélectionnée et sur sa droite la couleur de transparence, c'est à dire la couleur au travers de laquelle vous verez les Backgrounds du dessous (par défaut gris clair, comme ici, mais quelque soit la couleur que vous choisirez, "GBA_C_Background" et "GBA_C_Sprite" définiront la couleur noire comme couleur de transparence).

5 : Les outils de tracé des tiles (Cf. plus bas).

6 : La barre d'outils générale de Tile Studio.

b- Création d'un set de Tiles

NOTE: Vous pouvez créer des Tiles des tailles quelconques du moment que vous respectez le fait mentionné plus haut que la largeur et la hauteur des tiles soit un multiple de 8 pixels, et celà malgré le fait que la GBA ne peut utiliser que des Tiles de 8x8 pixels. En fait, la division de taille de vos tiles se fera autmatiquement lors de la génération du fichier en-tête. Ne vous inquiétez pas trop de ça pour le moment on aura l'occasion d'y revenir plus tard...

c- Tracé des tiles

STYLO : Tracé à main levée pixel par pixel avec la couleur sélectionnée
EPAISSEUR DE TRAIT : Selectionne l'épaisseur des traits. L'épaisseur augmente lorsqu'on clique à gauche et diminue lorsqu'on clique à droite.
Utilisé avec le pinceau et les formes vides.
PINCEAU : Tracé à main levée de la couleur et de l'épaisseur de trait sélectionnés.
Lorsqu'une "color pattern" est sélectionnée (en allant dans le menu Palette | Color patterns | Toggle color pattern) le tracé se fait avec toutes ses couleurs.
FORMES VIDES : Permet de tracer des lignes, carrés, cercles, carrés à bords arrondis dont les limites sont de la couleur et épaisseur de trait sélectionnés.
FORMES PLEINES : Permet de tracer des carrés, cercles, carrés à bords arrondis remplis avec la couleur sélectionnée.
Lorsqu'une "color pattern" est sélectionnée (en allant dans le menu Palette | Color patterns | Toggle color pattern) le tracé se fait avec toutes ses couleurs. La disposition des couleurs est par défaut concentrique mais on peut l'avoir horizontale en appuyant une seule fois sur 'h' pendant le tracé, verticale avec 'v' et diagonale avec 'd'.
REMPLISSAGE : Rempli un contour fermé avec la couleur sélectionnée.
SELECTION : Permet de copier la partie sélectionnée, d'y coller le contenu du presse papier, de la déplacer, de l'inverser horizontalement ou verticalement, de bouger ses pixels dans les quatre directions.
EFFETS SPECIAUX : A utiliser en cononction avec un outil de tracé (ligne, stylo...)
- soleil : éclaircit les pixels recouverts.
- lune : assombrit les pixels recouverts.
- couleurs : mélange les pixels recouverts avec la couleur sélectionnée.
- pavé : adoucit les différences de couleurs entre les pixels recouverts. Lorsqu'une "color pattern" est sélectionnée les pixels recouverts seront remplis aléatoirement des couleurs de la "color pattern".

d- L'utilisation des palettes

Avec la GBA, l'utilisation d'une palette dans les Modes Tiles et pour les Sprites est obligatoire. Je vous conseille vivement de n'utiliser qu'une seule palette par projet réalisé avec Tile Studio.

Vous avez deux méthodes pour utiliser les palettes :

e- Divers

3) Le module "Map"

a- L'interface

1 : L'ensemble des Tiles du jeu de tiles (tiles set) sélectionné pour la map.

2 : Vue d'ensemble de la map (où sont mentionnés les séquences, les limites et les "Map Codes").

3 : La tile sélectionnée à placer sur la carte (ici la tile est une superposition de 2 tiles dont une est inversée horizontalement).

4 : Le presse papier (zone de la carte copiée).

5 : Emplacement des séquences.

6 : Les outils de tracé des Maps (Cf. plus bas).

7 : La barre d'outils générale de Tile Studio.

b- Création d'une Map

Petite précision pour commencer : on ne peut utiliser qu'un jeu de Tiles par Map (par contre on peut créer plusieurs Maps à partir d'un seul jeu de Tiles).

c- Tracé d'une Map

STYLO : Permet de tracer sur la Map la tile (ou la superposition de tiles) sélectionnée.
SELECTION : A plusieurs utilisations.
Permet de remplir une large portion de la carte lorsque une fois sélectionnée on clique sur une tile du set de tiles.
Permet de supprimer une selection en appuyant sur Suppr.
Permet de placer les Tiles sélectionnées dans le presse papier en allant dans Edit | Copy et le restitue en le redimensionnant lorsqu'on sélectionne une partie de la Map en en allant dans Edit | Paste.
Permet de définir les Maps Codes et les limites à un ensemble de tiles.
Permet de créer des séquences.
Place l'ensemble des tiles du Set de Tiles dans la Map lorsqu'on englobe avec cet outil une zone de la Map.
REMPLISSAGE : Rempli la zone de la Map englobée par cet outil avec la tile (ou la superposition de tiles) sélectionnée.
LIMITES : Permet de définir les limites pour un emplacement dans la Map.
MAP CODE : Place un code (allant de 0 à 255) dans un emplacement de la Map.

d- Limites (Bounds)

On peut placer des limites qui ne pourront pas être franchies par vos sprites dans les Maps. Dans le module Map de Tile Studio elles sont représentées par des barres blanches, mais elles seront invisibles lorsque la Map sera affichée. Elles permettront de renseigner le programme sur les zones inclinées ou infranchissables: murs, barrières, montagnes, plans inclinés...

La procédure pour les créer est très simple, il suffit de sélectionner la(les) tile(s) avec l'outil de tracé SELECTION sur laquelle (lesquelles) on veut placer des limites et de cliquer dans la zone LIMITES de façon à obtenir les limites qui vous conviennent.
Ici par exemple vos sprites ne pourront pas arriver sur cette tile en arrivant du bas ou de la gauche.

e- Map Codes

On peut placer des codes à certains endroits de la Map qui seront invisibles lorsque celle-ci sera affichée, mais qui renseignera le programme sur les zones de la Map où se trouveront monstres, pièges, passages secrets, trésors...

Ici aussi, la procédure est très simple, il suffit de sélectionner la(les) tile(s) avec l'outil de tracé SELECTION sur laquelle (lesquelles) on veut placer le code et de cliquer dans la zone MAP CODE de façon à accéder au menu permettant d'entrer la valeur que vous désirez.
Ici par exemple nous avons placé le code (héxadécimal) 15 qui pourrait correspondre dans votre programme à un piège.

f- Animations (Sequences)

Avec Tiles Studio nous pouvons créer des animations de Tiles que l'on peut placer dans nos Maps pour avoir des arbres qui bougent, de l'eau qui coule... Mais ce n'est pas encore implémenté dans "GBA_C_Background" ni dans DirectGBA. Par contre, on peut utiliser cette possibilité pour l'animation de nos sprites (d'où l'existence du fichier "GBA_C_Sprite.tsd").

La procedure pour créer une animation est la suivante:

Placer les tiles de notre sprite dans l'ordre d'apparition dans l'animation.
Indiquer la durée d'affichage pour chacune des frames (cette durée est donnée en nombre de synchro verticale par seconde).
Sélectionner l'ensemble des frames avec l'outil SELECTION.
Aller dans Sequence | Convert to Tile Sequence et voilà c'est fait vous avez un apperçu de votre animation dans le coin inférieur droit de l'écran.

4) Génération du code pour la GBA

a- Création du fichier ".h"

Une fois que vous aurez créé un projet avec Tile Studio qui contiendra vos Tiles et vos Maps OU vos sprites et vos animations il faudra les transformer en un fichier en-tête qui sera utilisable dans un programme en C pour la GBA.

b- Les structures

Pour utiliser facilement les différentes données exportées par Tile Studio "GBA_C_Background" et "GBA_C_Sprite" utilisent des structures suivantes que je vous détaille pour information (vous les comprendrez mieux lorsqu'on les utilisera):

tile_struct :
Structure contenant les informations d'un jeu (set) de tiles pour les Maps et les Sprites.
u16 PaletteSize : nombre de couleurs dans la palette du set de tiles.
u16 *PaletteData : pointe vers le tableau contenant la palette de couleurs.
u16 TilesNb : nombre de tiles dans le set.
u16 TileWidth : largeur d'une tile en pixels.
u16 TileHeight : hauteur d'une tile en pixels.
u16 Overlap : hauteur en pixels du chevauchement vertical des tiles (pour pseudo 3D non-isométrique)
u16 *TilesData : pointe vers le tableau contenant le set de tiles.
u16 *VidMemLocation : adresse en mémoire vidéo de l'emplacement où vous placerez les données des tiles (i.e. le Tile Block).

map_struct :
Structure contenant les informations d'une map.
tile_struct *Tiles : pointe vers la structure du set de tiles utilisé pour la map.
u16 MapWidth : largeur de la map en tiles.
u16 MapHeight : hauteur de la map en tiles.
u16 *MapData : pointe vers le tableau contenant la map.
u8 *Bounds : pointe vers le tableau contenant les limites pour gérer les limites de la carte.
u8 *MapCode : pointe vers le tableau contenant des emplacements spéciaux de la map (trésors, passages secrets, ennemis, pièges...).

sequence_struct :
Structure contenant les informations d'une séquence (animation de sprites).
tile_struct *Tiles : pointe vers la structure du set de tiles utilisé pour les sprites de la séquence.
u16 Sequence_length : nombre de frames dans la sequence d'animation.
u16 *TileNum : pointe vers le tableau contenant les numéros des sprites (dans l'ordre d'apparition) composant l'animation.
u8 *Duration : pointe vers le tableau contenant les temps d'affichage pour chacune des frames de l'animation.

c- Petites choses à savoir

5) Transformer une image en Tiles/Map

Avec Tile Studio nous pouvons transformer très facilement une image en Tiles et sa Map associée afin de pouvoir l'afficher dans le différents Modes Tiles.

La marche à suivre est la suivante:

Et voilà, il ne reste plus qu'à l'utiliser mais nous verrons ça dans le prochain chapitre...

6) Astuces diverses