Sommaire

Entrées-Sorties

Bitmap Display

Activer Tool>Bitmap Display et le configurer avec

  • Unit width: 16
  • Unit height: 16
  • Display width: 512
  • Display hwight: 256
  • Base address: 0x10010000 (static data)

La résolution est donc 32x16 (avec des gros pixels)

Routine plot

Implémentez un routine plot avec l’ABI suivante:

  • a0: couleur du pixel (RVB 24bits)
  • a1: abscisse (x) du point
  • a2: ordonnée (y) du point
  • Note: l’origine (0,0) est en haut à gauche

Dessin de carrée

Implémentez une routine square qui désigne un carrée

  • a0: couleur du carrée (RVB 24bits)
  • a1: abscisse (x) du coin en haut à gauche
  • a2: ordonnée (y) du coin en haut à gauche
  • a3: longueur du coté (positif)

Notes:

  • rect appelle plot.
  • Il est possible de dessiner les 4 cotés avec une seule boucle.

Testez:

	# un carré blanc en 5x2 de taille 3
	li a0, 0xFFFFFF	# blanc
	li a1, 5
	li a2, 2
	li a3, 3
	jal square

Dessin d’une maison

Implémentez une routine house qui dessine une maison

  • a0: couleur des murs (RVB 24bits)
  • a1: abscisse (x) du coint en haut à gauche
  • a2: ordonnée (y) du coint en haut à gauche
  • a3: longueur du coté (positif)
  • a4: couleur du toit (RVB 24bits)

Note:

  • C’est juste un carré avec deux segments à 45° dessus :)

testez:

	# une maison rouge en 10x8 de coté 7 avec un toit vert
	li a0, 0xFF0000	# rouge
	li a1, 10
	li a2, 8
	li a3, 7
	li a4, 0x00FF00	# vert
	jal house

	# une maison grise en 20x6 de coté 4 avec un toit cyan
	li a0, 0x808080	# gris
	li a1, 20
	li a2, 6
	li a3, 4
	li a4, 0x00FFFF	# cyan
	jal house

Dessin final

dessin final

Jeu du Serpent (extra)

Progression graphique

En utilisant le Tools>Bitmap Display et Tools>Timer Tool

  • Dessinez un pixel blanc aux coordonnées 16x8
  • Toutes les secondes, décrémentez l’ordonnée et affichez le pixel. Ceci qui dessine graduellement une ligne blanche: 16x8, puis 16x7, puis 16x6, etc.
  • Quand le pixel dépasse le haut (16x-1), il est téléporté en bas (16x15): le monde wrappe (c’est un topologiquement un tore).

Interactions avec le clavier

En utilisant le Tools>Keyboard and Display MMIO Simulator

  • Surveillez activement les touches du clavier virtuel.
  • Quand les touche w, a, s ou d sont pressés changez la direction du pixel respectivement vers le haut, la gauche, le bas et la droite.
  • La touche q termine le programme, les autres touches sont ignorées.
  • Le pixel garde sa direction et avance toutes les seconde en dessinant une trace.

Le reste de la chouette

  • Finissez d’implémenter le jeu Snake. Lisez l’article Wikipédia pour les détails :)