Faire un jeu Commodore c64 Like : La partie graphiqueIl existe plusieurs moyen de faire du néo rétro dans le monde de la création. Le plus souvent c'est juste de prendre la palette de couleur de la machine cible et roule ma poule ! Oué regarde c'est un jeu du style C64 !
Monumentale erreur ! Un system informatique que cela soit une micro ordinateur ou une console, ce n'est pas spécialement qu'une palette de couleur. Il y a d'autre contrainte graphique !
Les caractéristiques du commodore 64Le C64 tourne avec le Mos 6510 (6502). Un processeur 8bits. La machine est équipé de 64ko de ram.
Ceci dit pour re faire des jeux néo rétro c64 cela n'aide pas. Il vaut mieux se pencher un peu sur le coté graphique de la machine.
Le C64 possède 5 modes d'affichage. Seul les deux premiers modes sont utiles à vrais dire pour nous.
La palette de couleur du Commodore 64Voici une des palettes du 64. (Elle varie un peu en fonction du C64, des émulateurs et tout ça)
Le C64 possède un nuancier de 16 teintes. La particularité du C64 c'est d'avoir 3 gris dans la 2nd partie du niancier. On a un nuancier qui n'est pas flashi.
La résolution de l'écranNous allons parler résolution de l'écran. Comme tous les vieux micros ordinateurs, (et console), il y a deux parties. Un carde (Border), et la zone en elle même. (Le Background sur le C64 Paper sur le CPC par exemple).
Le Border n'a pas de taille définie, alors que le background fait 320 pixel de largeur et 200 pixel de hauteur.
Tous comme le Border, le background peut prendre une couleur du nuancier.
Le mode 0 : Standard Character ModeLe mode 0 est le mode native du C64 à l'allumage. Elle permet d'afficher des "tiles" de 8 x 8 points à l'écran.(1 point = 1 pixel en mode 0) Mais c'est tiles doivent être posisionné dans un quadrillage de 40 x 25 lignes.
Les tiles sont appellé character set (charset). (C'est le jeu de caractère ascii de base mais qui peut être modifié).
Au niveau du quadrillage du background, chaque carré peut se voir attribué une couleur du nuancier. Ce qui correspond à la couleur affichage du tiles. Ce qui veut dire qu'un tile de 8 x 8 point peut afficher soit sa couleur allumé soit la couleur du background.
Encodage dans la mémoire : Pour un peu de techique, un tile est donc 8 octets. (1 par ligne). Chaque bit d'une ligne est donc 1 point affichable. 0 c'est la couleur du background, 1 c'est la couleur assigné à la case qui s'affiche.
Un character en mode 0 par exemple !
Le mode 1 : Multi color characterCe mode permet d'afficher plus de couleur dans un tile mais avec des contraintes !
Nous avons toujours la couleur de background qui peut être affiché quand un point du tile n'est pas allumé.
Il est possible de choisir deux couleurs du nuancier qui peut être utilisé pour tous les tiles.
Et enfin chaque tiles peut prendre une couleur assigné au quadrillage. Ceci dit cette couleur par emplacement doit être choisis seulement de la couleur 9 à 16 du nuancier (Dont 3 couleurs sont des gris, voici pourquoi il y a souvent du gris dans les jeux C64 !)
L'autre contrainte de taille c'est que nous pouvons afficher que 4 points latérallement dans notre tile. (toujours 8 en hauteur). Mais la taille d'un point fait 2 * 1 pixels.
Encodage dans la mémoire : Pour un peu de technique et comprendre pourquoi que 4 points : Un tile fait toujours 8 octets. Un octet par ligne. Ceci dit vu que le tile peut afficher 4 couleurs, il faut 2 bits pour s'avoir quoi afficher. %00 = On affiche la couleur du background. %01 on affiche la 1er couleur général choisis. %10 on affiche la 2em couleur général choisis. %11 on affiche la couleur de la case du quadrillage. On peux donc par ligne choisir que 4 points. Et comme un quadrillage c'est 8*8 pixel. pour atteindre cette dimenssion, 1 point vaut 2 x 1 pixel. (4 * 2 = 8 le compte est bon)
En mode 1.
Les spritesMode standard :
Il est possible d'afficher 8 sprites à l'écran d'une traille maximum de 24 x 21 points. (1 point est 1 pixel)
Chaque sprite peut prend 1 couleur du nuancier.
On peux aussi paramétrer un sprite pour qu'il passe derrière un tile ! (ça c'est cool)
sprite simple
(Il est possible de superposer des sprites pour avoir une 2nd couleur)
Mode multicolore :
Tous comme les tiles, il est possible d'avoir plusieurs couleur dans un sprite.
On peux dans ce cas la définire que 12 points du sprites. (Ce qui fait 1 point = 2 x 1 pixel à l'écran)
Le sprite peut avoir soit la couleur transparente, soit sa propre couleur ou sois utiliser une des deux couleurs général qui peut être défini pour tous les sprites !!!
Exemple sprite multi color.
FinVoila, vous avez un début d'élément pour faire un jeu du type c64 en respectent un peu les contraintes technique de la machine. Le C64 propose des tips de programmation pour dépasser les 8 sprites (interruption)
et faire plein d'effet !
Airwolf (Super Copter)
Réduire l'écran !Il est possible de cacher des lignes et des colonnes à l'affichage. Ce qui permet de poser des tiles invisibles à l'écran est préparer un scrolling.
Il existe donc un mode 38 ou 40 colonnes. Et un mode 24 ou 25 lignes. Ce qui permet de préparer 1 tiles en hauteur et 2 tiles en largeurs !