Messagerie


Commodore 64

Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
mercredi 24 avril 2019 à 10:17
Faire un jeu Commodore c64 Like : La partie graphique
Il 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 64
Le 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 64
Voici 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'écran
Nous 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 Mode
Le 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 character
Ce 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 sprites
Mode 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.

Fin
Voila, 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 ! 





Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
vendredi 5 juillet 2019 à 07:29

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 ! 

Modifié le vendredi 5 juillet 2019 à 07:30 par Monos
Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
samedi 20 juillet 2019 à 08:05

HAPY C64

Salut les gens. Depuis un petit moment je me fais plaisir en codant un SDK pour le commodore 64. Hapy C64. Il permet de coder en C sur PC , cela crée un fichier binaire lisible sur un émulateur C64 et un vrais commodore aussi. C'est super cool de coder ce genre de librairie, cela permet d'en apprendre plus sur une machine.

La librairie permet en gros  de gérer les sprites, les tiles, le clavier, les joytick, le son, gérer une valeur aléatoire... Elle est prévue pour être simple et faire des petits jeux pour le commodore 64. A l'heure actuel la présentation de l'api semble intéressée du monde ce qui est cool.  Début Aout je retrouve des passionnés du C64 pour en faire des tests poussés de la librairie avant de publier mon travaille au public ! 

Bref créer une librairie c'est fort sympathique. Cela permet de mettre les mains sous le capot et d'apprendre comment fonctionne une machine. A l'heure actuel tout est caché pour les programmeur. Mais avant ce n'était pas le cas et ils se devaient connaitre le fonctionnement de sur quoi ils travaillait. (Savoir comment un téléphone android/ios fonctionne vraiment c'est inutile , ni même un PC xd)


Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 4 visiteurs au total

Derniers messages