VG5000µ, haute résolution

Dans les articles précédents sur l'affichage du VG5000µ, je travaillais dans une résolution que je nomme « gros pixels », basée sur des caractères semi-graphiques. Grâce à l'implémentation d'une routine d'affichage de pixel, j'avais pu programmer un affichage de ligne et un affichage de cercle.

Avec ce mode d'affichage, on obtient une résolution de 80 pixels horizontalement par 75 pixels verticalement. Ce qui donne un total de 6000 pixels. Cependant, le manuel d'utilisation de la machine indique une définition d'image de 80 000 points. Plus de 13 fois plus. Existe-t-il une façon d'afficher des pixels plus petits et d'atteindre une haute (toute proportion gardée) définition ?

Petit rappel : je ne m'occupe pour le moment que des capacités du VG5000µ offertes par le BASIC, et se mettant à la place d'une utilisation à l'époque, avec juste le manuel de base.

Plus fin

Pour atteindre une définition plus fine depuis le BASIC, il faut …

Lire la suite →

Récréation 3D, Atari STe

Après les machines précédemment évoquées en synthèse, toutes basées sur des processeurs 8 bits, voici ma première recréation de l'époque 16 bits, un Atari STe. Dans ma chronologie de programmeur, le 512 STe (gonflé en mémoire) a remplacé l'Amstrad CPC 6128. Un plutôt gros changement.

Côté musique, l'Atari était relié à un synthétiseur et j'ai pu découvrir les joies de la programmation MIDI et écrire un petit séquenceur à usage personnel (et très limité).

Atari STe

Lire la suite →

Tracé d'un cercle en BASIC sur VG5000µ

Maintenant que nous avons un algorithme pour tracer un cercle ainsi que le moyen d'afficher un gros pixel à l'écran, nous voilà prêts pour traduire tout cela en BASIC, comme cela a été fait auparavant avec le segment de droite.

Pour rappel, voici l'implémentation en BASIC d'affichage d'un point à l'écran.

100 REM AFFICHE UN POINT DANS L'ESPACE SEMI-GRAPHIQUE
110 REM X CONTIENT L'ABSCISSE ENTRE 0 et 79
120 REM Y CONTIENT L'ABSCISSE ENTRE 0 et 74
130 ZX=INT(X/2):ZY=INT(Y/3)
140 RX=X-ZX*2:RY=Y-ZY*3
150 CH=2^(RY*2+RX)
160 DI=&"4000"+ZY*80+ZX*2
170 AT=PEEK(DI+1)
200 OL=64:IF (AT AND 128) = 128 THEN OL=PEEK(DI)
220 IF (OL AND 128) = 128 THEN OL=64
230 POKE DI,OL OR CH
240 POKE DI+1,224
250 RETURN …
Lire la suite →

VG5000µ, simplification du tracé du cercle

Avec de passer à l'implémentation en BASIC du cercle décrit dans un article précédent, passons un peu par une phase de simplification. Cet article va contenir quelques lignes de mathématiques.

L'outil mathématique le plus complexe utilisé est celui des factorisations et développements de carrés. Les identités remarquables seront d'un grand secours. Niveau de fin de collège je crois.

Pour rappel, voici l'algorithme de tracé de cercle de Bresenham :

  • initialiser cx et cy avec les coordonnées du centre du cercle, r avec son rayon
  • initialiser (x, y) à (0, r), c'est à dire le point au sommet du cercle.
  • tant que x ≤ y
    • tracer le pixel(x + cx, y + cy) et ses sept symétries.
    • calculer \(m = (x+1)^2 + (y-0.5)^2 - r^2\)
    • si m ≥ 0 alors \(x \leftarrow x + 1\) et \(y \leftarrow y - 1\)
    • sinon \(x \leftarrow x + 1\)
  • fin

On pourrait l'implémenter tel quel. Mais je veux …

Lire la suite →

Récréation 3D, Amstrad CPC 6128

L'ordinateur 8 bits que j'ai le plus décortiqué, sur lequel j'ai le plus programmé en son temps, est un CPC 6128. J'y ai débuté le Pascal et abordé légèrement le C. J'y ai aussi fait mes premiers essais en assembleur.

Un ordinateur élégant, sobre, avec un clavier très agréable, qui pouvait servir dans de nombreux domaines. Son principal et historique défaut reste son format de disquettes, particulier, rare et cher.

Amstrad CPC 6128

Lire la suite →