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 pointa2
: 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 à gauchea2
: ordonnée (y) du coin en haut à gauchea3
: longueur du coté (positif)
Notes:
rect
appelleplot
.- 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 à gauchea2
: ordonnée (y) du coint en haut à gauchea3
: 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
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
oud
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 :)