PRESENTATION DU PROJET ZELDA POUR CPC6128

 

 

 

1 – LA LEGENDE DE ZELDA

 

Si vous ne connaissez pas encore ce monument du RPG Japonais, je vais vous en faire un bref rappel ici. Tout débute en 1986 sur la console Nintendo NES pour se poursuivre encore de nos jours sur la Nintendo DS. Un petit personnage du nom de Link est chargé de sauver la princesse Zelda des mains de Ganon le prince des ténèbres. Pour se faire, il doit parcourir un vaste monde recelant de sombres donjons remplis de boss, à la recherche d’objets et de cœurs pour ses points de vie. Cette légende donnera alors naissance à toute une saga et un véritable engouement planétaire. Pour en savoir plus, vous pouvez vous reporter aux nombreux sites internet existants, comme celui-ci :

 

http://www.puissance-zelda.com/index.php

 

C’est donc ce jeu que nous nous proposons d’adapter sur CPC, mais dans les limites de ce dernier bien entendu. Déjà les premières ébauches donnent des résultats assez beaux. Elles sont notamment tirées de Zelda 3 « a link to the past » sur Nintendo SNES.

 

      

 

Vous pouvez jouer à ce jeu avec l’émulateur SNES9X pour Windows. Les fichiers nécessaires sont accessibles ici :

 

Emulateur SNES9X

ROM Zelda 3

 

Evidemment, le CPC n’arrive pas à la cheville de la SNES et une adaptation pourrait paraître hasardeuse voire sacrilège. Mais les premiers résultats sont plus qu’encourageants et montrent que l’on aurait tort de se géner.

 

 

2 – Le scénario

 

Le scénario reste à définir. Celui de Zelda 3 était assez complexe, fait de rebondissements et de quêtes secondaires variées. Celui du CPC pourra être plus simple, tout en restant fidèle à l’esprit de la saga. Encore faut-il connaître son histoire…

 

 

3 – ADAPTATION GRAPHIQUE

 

D’abord, une adaptation graphique ne pouvait se faire qu’en mode 0, pour pouvoir bénéficier de la couleur au maximum. En plus, les pixels rectangulaires se prêtent plutôt bien aux décors par sprites ou répétitifs. Par contre, les couleurs criardes du CPC sont loin des teintes pastel de la SNES, puisque ses 27 couleurs sont les suivantes (en luminosité +30%) :

 

 

Ainsi il est nécessaire de revoir complètement les couleurs de certains secteurs de jeu. Voici quelques essais d’écran de jeu pour montrer les changements dus au mode 0. Ces écrans ne sont là qu’à titre indicatif et sont susceptibles de changer.

 

 

Ce premier écran est basé sur celui présenté plus haut, dans la version SNES. Mais on voit clairement les modifications, tant au niveau pixelisation, qu’au niveau des couleurs.

 

 

Ce deuxième écran est également basé sur celui plus haut. Ici les couleurs étant très vives, il fallait les contraster pour équilibrer le tout. Et cet équilibre est assez délicat avec la palette du CPC. On remarquera aussi que certaines choses ne peuvent être converties en mode 0. C’est le cas des plantes qu’il a fallut redessiner entièrement, avec un résultat passable.

 

 

Ici c’est un essai de donjon avec ses habituels rats et ses pots à fouiller. La manque de dégradé de gris a pu être compensé avec du vert et du gris-bleu.

 

 

Une grotte. Les couleurs marron, orange, jaune clair et gris se prêtent très bien au décor.

 

 

La maison de Link, avec toujours cette utilisation du marron, orange et jaune clair.

 

Voici maintenant la conversion de 2 secteurs de jeu, le 1er en 512x512, l’autre en 1024x1024. Ces écrans sont bien en mode 0 et n’utilisent que 16 couleurs max.

 

 

Le deuxième secteur, celui de la ville :

 

 

Le 3ème secteur, celui des marécages

 

 

 

4 – CREATION DU MONDE DE ZELDA CPC

 

 Tous les graphismes ci-dessus sont en fait un assemblage de sprites 8x16 mode 0 (étirés sur 16x16 donc), tels que ci-dessous :

 

                       

 

Il se peut toutefois qu’il y ait des exceptions comme les intérieurs de maison (à voir). Une fois les sprites répertoriés, il devient possible de créer tout un monde avec. Mais ce monde assez vaste et varié, encore faut-il pouvoir le créer. La question qui se pose est donc de savoir si cela vaut vraiment la peine d’en recréer un de A à Z. Je pense que la solution se situe plus dans la reprise de certains secteurs, avec modifications ou ajouts de lieux selon la nécessité ou la volonté de chacun. En plus il existe quelques versions de fans, créées avec RPG maker, et s’inspirant de Zelda 3 sur SNES. Il est donc tout à fait possible d’y piocher des idées. De toute façon, le scénario et les situations seraient quand même totalement inédits.

 

 

 

CreateCpcMap

(par Ludovic DEPLANQUE)

I.     Introduction

CreateCpcMap est un logiciel Windows permettant d’éditer une « map » pour une utilisation dans un jeu CPC type « Zelda ». J’ai crée ce logiciel pour permettre d’éditer facilement un « plan » du jeu.

Dans les jeux de type « Zelda », il y a une similitude dans la représentation des graphiques de l’aire du jeu. En se basant sur le principe que chaque aire du jeu peut être découpée en élément simple de 16x16 pixels (8x16 pixels dans le cas du mode 0 du CPC), il devient alors facile de recréér complètement une aire de jeu à l’aide de « sprites » de cette taille.

CreateCpcMap permet de créer ces « sprites », et de les assembler pour créer la « map ».

J’ai volontairement limité le nombre de sprites à 256 (de 0 à 255, le sprite 0 étant un sprite « vide ») pour simplifier ensuite le dessin de la map (chaque sprite de la map est donc représenté par un octet).

Quant à la map, elle a une taille de 128x128 sprites. Ce qui représente une taille totale pour l’aire de jeu de 1024x1024 pixels (512x1024 pixels mode 0).

II.     Presentation de l’interface

II.1     Introduction

 

L’interface principale se divise en 3 parties :

-         La partie centrale, qui représente la map en elle-même, avec les barres de défilement verticale et horizontale,

-         La partie gauche, qui représente la table des 256 sprites, avec une barre de défilement verticale,

-         La partie basse, qui contient essentiellement les boutons de commandes et les informations diverses.

 

Le bouton « Lire Sprites » permet de charger un fichier avec l’extension .SPT, qui représente les 256 sprites.

Le bouton « Sauver Sprites » permet de sauvegarder les 256 sprites définis dans un fichier avec l’extension .SPT.

Le bouton « Importer sprites » permet d’ouvrir la fenêtre de l’importateur de sprites.

Le bouton « Raz Sprites », situé sous la table des sprites, permet d’éffacer les 256 sprites d’un coup.

Le bouton « Lire Map » permet de charger un fichier avec l’extension .MAP, qui représente les 128x128 cases de la map.

Le bouton « Sauver Map » permet de sauvegarder la map dans un fichier avec l’extension .MAP.

Le bouton « Importer Map » permet d’ouvrir la fenêtre de l’importateur de map.

Le bouton « Raz Map » permet d’effacer d’un coup les 128x128 cases de la map (l’effacement revient à mettre le sprite 0 sur toute la map).

Le bouton « Lire palette » permet de lire un fichier palette au format .PAL (compatible OCP ART STUDIO et ConvImgCPC).

Le bouton « Sauver Palette » permet de sauvegarer la palette au format .PAL (compatible OCP ART STUDIO et ConvImgCPC).


II.2     L’editeur de sprites

II.2.1     Introduction

La map étant composée au maximum de 128x128 sprites, il convient tout d’abord, avant de la dessiner, de créer les sprites qui vont la composer. C’est pour cela que CreateCpcMap comporte un éditeur de sprites.

II.2.2     Présentation générale

Pour ouvrir l’éditeur de sprites, il suffit de cliquer sur le bouton « editer sprite » dans la partie basse de l’écran. Une fenêtre nomée « Editeur de sprites » apparaît alors.

 

 

Cette fenêtre comporte plusieurs éléments :

-         La partie centrale affiche le sprite sélectionné, en zoom. C’est également cette partie qui servira à créer/modifier le sprite. Un clic gauche avec le bouton de la souris affecte le point du sprite désiré avec la valeur courante du stylo. Un clic droit affecte le point avec la couleur zéro.

-         A gauche est indiqué le numéro de sprite courant, celui que l’on va donc éditer. En dessous, le carré représente la couleur du stylo sélectionné.

-         Tout en bas se trouve la palette de couleurs. En cliquant sur une couleur, on affecte celle-ci au stylo.

-         Au dessus de la palette se trouve le sélecteur de sprites. Pour choisir un sprite à éditer, il suffit de faire défiler, avec la barre de scrolling, les sprites vers celui désiré. Le sprite à éditer est celui situé au centre des 5 sprites représentés. Les autres sprites sont simplement affichés pour avoir un apperçu des 2 sprites précédent et les 2 sprites suivant le sprite que l’on veut éditer.

-         Enfin, le bouton « Grille » permet d’afficher/effacer une grille sur le sprite à éditer. Les coordonnées X,Y du curseur de souris dans le sprite sont également affichés, lorsque la souris se trouve dans la zone d’édition.


II.2.3     Importer des sprites depuis un fichier .SCR

La création des sprites pouvant s’avérer relativement longue, il existe une option pour simplifier cette étape : l’importation de sprites depuis un fichier .SCR.

Pour cela, suffit de cliquer sur le bouton « Importer sprites » depuis la fenêtre principale. Une fenêtre nomée « ImportSpritesScr » s’ouvre alors :

 

 

Depuis cette fenêtre, on peut donc lire un fichier écran CPC au format .SCR (17ko). Pour cela, il suffit de cliquer sur le bouton « Lire écran SCR ». Si l’on coche la case « Importer Palette », le programme examinera le fichier .SCR pour voir s’il comporte une palette, et si oui, affectera la palette du programme avec la palette trouvée dans le fichier .SCR. (Si le fichier .SCR a été enregistré avec le programme « ConvImgCPC », la palette se trouve dans le fichier .SCR).

 

L’image lue apparaît alors dans la fenêtre, en dessous d’un cadrillage. Ce cadrillage divise notre image en « sprites » élémentaire de 8x16 pixels en mode 0. Si l’on clique dès maintenant sur le bouton « Importer », nous allons donc créer 20x12 = 240 sprites d’un coup, formés par notre image .SCR.

 

Il se peut que seulement une partie de l’image soit utile pour la création des sprites. C’est pour cela que les champs de saisie « OffsetX, OffsetY, Nb. Sprites X, Nb. SpritesY » existent.

 

En effet, dans ces champs, nous allons indiquer la zone « active » de notre image .SCR qui est intéressante pour la création des sprites.

Les valeurs à renseigner sont en unités de sprites. Pour cela, il suffit donc de compter les « carreaux » formés par la grille au dessus de notre image. Par exemple, si la première et la deuxième ligne de l’image sont vides, on entrera « 2 » dans le paramètre « Offset X ».

Il ne faut pas oublier ensuite d’appuyer sur le bouton « Appliquer », pour que la grille se redessine sur l’image .SCR en fonction de la sélection que nous avons choisi.

 

Un autre paramètre important, est le champ « Premier sprite ». En effet, si nous avons déjà quelques sprites existants, il serait dommage de les effacer avec l’importation de nouveaux sprites. Il suffit donc, avant de lancer l’importateur, de regarder le numéro du premier sprite « libre » dans la fenêtre principale, et de le saisir dans ce champ. L’importation débutera alors automatiquement à partir de ce numéro.

 

Remarque : l’importateur de sprites vérifiera qu’un sprite n’existe pas avant de l’importer, afin d’éviter les doublons.


II.3     L’editeur de map

II.3.1     Présentation générale

L’éditeur de map se situe donc dans la partie centrale de l’interface principale. Pour éditer une map, il suffit de choisir le sprite à insérer, en cliquant sur le sprite désiré dans la partie gauche de l’écran (le sprite choisi apparaît alors dans la petite zone d’information en bas de l’écran « Sprite courant », avec son numéro). Ensuite, il suffit de cliquer à l’endroit de la map désiré pour ajouter ce sprite.

 

Plutôt que de dessiner sprites par sprites, il est également possible de faire du « copier-coller » d’une zone existante de la map : en cliquant avec le bouton droit sur le coin supérieure gauche, et en se déplaçant en bas à droite, tout en restant appuyé sur le bouton droit de la souris, un rectangle blanc se dessine autour de la zone qui servira de modèle. L’affichage « bloc(x,y) » apparaît alors dans la zone du bas de la fenêtre, pour indiquer que le bloc a été mémorisé, en rappelant sa taille. Ensuite, chaque clic gauche de souris sur la map « collera » le bloc voulu. Pour rebasculer dans le mode classique d’ajout de sprites, il suffit simplement de cliquer sur un sprite dans la partie gauche.

 

II.3.2     Importer une partie de map depuis un fichier .SCR

Comme pour les sprites, il est possible d’importer directement une partie de map depuis un fichier .SCR.

Pour cela, suffit de cliquer sur le bouton « Importer Map» depuis la fenêtre principale. Une fenêtre nomée « ImportScr » s’ouvre alors :

 

 

Comme pour l’importation des sprites, on retrouve le bouton « Lire écran SCR » et la case à cocher « Importer Palette », dont le fonctionnement est identique.

 

Les champs « Offset Map X et Offset Map Y » indiquent à partir de quelles position il faut commencer à importer la map. Attention ! Contrairement à l’importation des sprites, c’est la position dans la map, et non pas la position dans l’écran .SCR que l’on choisit ici avec ces deux champs.

 

Par exemple, si dans l’éditeur principal, nous avons déjà dessiné une map de 20x16 sprites, il conviendra de mettre la valeur 20 dans le champ « Offset Map X » et la valeur 16 dans le champ « Offset Map Y ». Ne pas oubler ensuite de cliquer sur le bouton « Appliquer », avant d’importer.

 

Le programme analysera alors l’image SCR, et si il reconnaît dans cette image des motifs identiques aux sprites définis, il les ajoutera automatiquement à la map. Tout motif non reconnu sera remplacé par le sprite 0.

III.     Informations techniques

III.1     Structure des fichier .PAL

Ce format est le même que le format .PAL utilisé par le logiciel OCP art studio. Il s’agit d’un fichier binaire, dont les octets suivants sont utilisé:

Octet 3 = Couleur 0

Octet 15 = Couleur 1

Octet 27 = Couleur 2

Octet 39 = Couleur 3

Octet 51 = Couleur 4

Octet 63 = Couleur 5

Octet 75 = Couleur 6

Octet 87 = Couleur 7

Octet 99 = Couleur 8

Octet 111 = Couleur 9

Octet 123 = Couleur 10

Octet 135 = Couleur 11

Octet 147 = Couleur 12

Octet 159 = Couleur 13

Octet 171 = Couleur 14

Octet 183 = Couleur 15

Les couleurs sont les valeurs utilisés par le Gate Array du cpc, et non pas les couleurs utilisées par le Firmware et le basic. (par exemple, la couleur noire a la valeur #54 en hexadécimal).

 

III.2     Structure des fichiers .SPT

Les fichiers .SPT sont des fichiers de 16384 octets, contenant les 256 sprites de taille 8x16 pixels mode 0 (soit 4x16 octets en mémoire vidéo CPC), organisés de la manière suivante : (les sprites sont numérotés de 0 à 255)

Octet 0 = octet 0 sprite 0 (Ligne 0, colonne 0)

Octet 1 = octet 1 sprite 0 (Ligne 0, colonne 1)

Octet 2 = octet 2 sprite 0 (Ligne 0, colonne 2)

Octet 3 = octet 3 sprite 0 (Ligne 0, colonne 3)

Octet 4 = octet 4 sprite 0 (Ligne 1, colonne 0)

Octet 63 = octet 63 sprite 0 (Ligne15, colonne 3)

Octet 64 = octet 0 sprite 1 (Ligne 0, colonne 0 )

Octet 127 = octet 63 sprite 1 (Ligne 15, colonne 3)

Octet 128 = octet 0 sprite 2 (Ligne0, colonne 0 )

..

Octet 16383 = octet 63 sprite 255 (Ligne 15, colonne 3)

 

III.3     Structure des fichiers .MAP

Les fichiers .MAP sont des fichiers de 16384 octets, contenant les 128x128 cases de la map. (La map ayant une taille de 128 sprites en X et de 128 sprites en Y).

La structure est la suivante : (les coordonnées sont numérotées de 0 à 127)

Octet 0 = sprite position (0,0) de la map

Octet 1 = sprite position (1,0) de la map

Octet 127 = sprite position (127,0) de la map

Octet 128 = sprite position (0,1) de la map

Octet 129 = sprite position (1,1) de la map

Octet 255 = sprite position (127,1) de la map

Octet 256 = sprite position (0,2) de la map

Octet 16383 = sprite position (127,127) de la map.