Assembleur 6502 - VCS2600
Publié : 13 avr. 2020 10:16
Salut à tous,
Profitant encore et toujours de ces (longs ?) moments pour faire de la théorie, j'avais envie de pousser davantage mes faibles connaissances en assembleur et de m'intéresser davantage à une console que j'aime bien, l'Atari 2600. En quelques lignes d'assembleur, il est plus ou moins facile d'obtenir rapidement des graphismes.
J'ai commencé par parcourir l'excellent tuto disponible ici :
https://www.randomterrain.com/atari-260 ... ie-01.html
Qui explique vraiment très bien la génération d'image, les timings, les bases de l'assembleur... Et qui propose des exemples pas à pas. Il ne semble toutefois pas aller jusqu'au bout des possibilités de la machines (sprites, collisions, joysticks...), il faudra donc que je cherche d'autres sources d'infos.
Pour l'édition/assemblage du code j'utilise l'IDE en ligne 8bitworkshop dont quelqu'un avait fait la pub il y a quelques temps :
https://8bitworkshop.com/v3.5.1/?file=e ... atform=vcs# (qui contient également quelques exemples)
J'ajoute à ces éléments le jeu d'instructions du 6502 : https://www.atariarchives.org/2bml/chapter_10.php
Et en complément le "Stella programming guide" qui est très complet mais qui manque peut-être un peu de pédagogie.
J'ai commencé par étudier la méthodologie de tracé d'un "fond". Sur la VCS l'arrière plan est constitué de deux éléments : un arrière plan coloré (une seule couleur par "scanline") et d'un "playfield" constitué de trois registres qui vont permettre de tracer la moitié gauche de l'écran. Pour la seconde moitié, on peut soit re-dessiner un autre "playfield" différent du premier, soit répéter celui de gauche, avec ou sans symétrie.
Pour chaque "scanline", il est donc nécessaire de définir la couleur d'arrière plan, la couleur du "playfield", et les trois registres permettant de décrire la géométrie de ce dernier. Le bleu et le vert foncé sont des variations de couleur de l'arrière plan, le blanc et les arbres sont le "playfield" coloré.
En bricolant un peu et en automatisant la lecture de pixels à partir d'une image, j'ai pu obtenir ceci :
En utilisant donc la symétrie pour obtenir le "playfield" de droite.
Bon une fois cette étape passée, je souhaite ajouter un personnage pouvant bouger. Mais c'est là que les soucis arrivent... Mon code est très mal fait !
Suite au prochain épisode !
PS : Des dieux de l'assembleur 6502 ici ?? Je vais avoir besoin d'aide
Profitant encore et toujours de ces (longs ?) moments pour faire de la théorie, j'avais envie de pousser davantage mes faibles connaissances en assembleur et de m'intéresser davantage à une console que j'aime bien, l'Atari 2600. En quelques lignes d'assembleur, il est plus ou moins facile d'obtenir rapidement des graphismes.
J'ai commencé par parcourir l'excellent tuto disponible ici :
https://www.randomterrain.com/atari-260 ... ie-01.html
Qui explique vraiment très bien la génération d'image, les timings, les bases de l'assembleur... Et qui propose des exemples pas à pas. Il ne semble toutefois pas aller jusqu'au bout des possibilités de la machines (sprites, collisions, joysticks...), il faudra donc que je cherche d'autres sources d'infos.
Pour l'édition/assemblage du code j'utilise l'IDE en ligne 8bitworkshop dont quelqu'un avait fait la pub il y a quelques temps :
https://8bitworkshop.com/v3.5.1/?file=e ... atform=vcs# (qui contient également quelques exemples)
J'ajoute à ces éléments le jeu d'instructions du 6502 : https://www.atariarchives.org/2bml/chapter_10.php
Et en complément le "Stella programming guide" qui est très complet mais qui manque peut-être un peu de pédagogie.
J'ai commencé par étudier la méthodologie de tracé d'un "fond". Sur la VCS l'arrière plan est constitué de deux éléments : un arrière plan coloré (une seule couleur par "scanline") et d'un "playfield" constitué de trois registres qui vont permettre de tracer la moitié gauche de l'écran. Pour la seconde moitié, on peut soit re-dessiner un autre "playfield" différent du premier, soit répéter celui de gauche, avec ou sans symétrie.
Pour chaque "scanline", il est donc nécessaire de définir la couleur d'arrière plan, la couleur du "playfield", et les trois registres permettant de décrire la géométrie de ce dernier. Le bleu et le vert foncé sont des variations de couleur de l'arrière plan, le blanc et les arbres sont le "playfield" coloré.
En bricolant un peu et en automatisant la lecture de pixels à partir d'une image, j'ai pu obtenir ceci :
En utilisant donc la symétrie pour obtenir le "playfield" de droite.
Bon une fois cette étape passée, je souhaite ajouter un personnage pouvant bouger. Mais c'est là que les soucis arrivent... Mon code est très mal fait !
Suite au prochain épisode !
PS : Des dieux de l'assembleur 6502 ici ?? Je vais avoir besoin d'aide