Cadre
Pour notre projet d’ingénierie, nos tuteurs voulaient nous faire face aux défis de la conception d’un système en temps réel avec des performances relativement élevées sur des ressources limitées (mémoire, bande passante).
Les spécifications exigent une plateforme de jeu en utilisant le matériel suivant :
- d’un Digilent Nexys 3 Conseil (pour la mise en œuvre d’un GPU sur le FPGA).
- Conseil de MCBSTM32F400 d’un Keil (pour le système d’exploitation de la plateforme d’hébergement et stocker les données du jeu).
- un affichage Tech DT035TFT LCD avec un pilote de Novatek NT39016 (affichage de protable true Color).
Il y a deux équipes de deux étudiants qui travaillent sur ce projet. Une équipe se concentre sur la MCU de bras et l’autre sur le GPU.
Spécifications
La plate-forme doit correspondre à la performance d’une plateforme de jeux commerciaux de 16 bits par exemple SNES, Sega MegaDrive, avec le multicouche cadres et le défilement. La plate-forme se compose de deux éléments principaux : le microcontrôleur de la carte mère et le GPU relié à la sortie vidéo.
- Les exigences spécifiques de MCU sont graphiques API pour le GPU, l’API audio codec audio embarqué, utilisateur e/s, interface MCU/GPU, interface de carte SD. Programmation du jeu vidéo. Un module de configuration de l’écran LCD (luminosité, contraste, etc.) est également considéré comme à l’intérieur de la GPU.
- Les exigences spécifiques de GPU sont affichage multicouche, mélange de différentes couches à l’aide de la transparence, couleurs de 16 bits RGBA, multicouche, défilement, opérations de base 2D (bitblit (copie), couleur de remplissage, modification de la transparence et leur combinaison (effacer, déplacer, etc.), la génération primitive (lignes, cercles, texte), sorties vidéo LCD et VGA. Graphiques orientée vers le contrôleur de mémoire avec accès DMA.
Plans de mise en œuvre
Les deux équipes devront collaborer régulièrement pour élaborer les deux principales composantes précédemment mentionnés. Nous avons conçu l’architecture de la plate-forme pour s’en assurer.
Notre équipe commencera la mise en oeuvre en fournissant toutes les interfaces requises entourant le GPU, telles que le support pour l’écran LCD et la connexion vers le jury MCU. Cela sera développé en parallèle avec la conception des modules HDL associé à ces interfaces. À ce stade, une intégration préliminaire avec le GPU aura lieu afin d’assurer la cohérence et l’interopérabilité des deux modules. Cela sera suivi par la conception de logiciels sur la MCU de pilotes de périphériques requis, API audio et vidéo et enfin les OTR. Après l’intégration finale avec l’équipe graphique, impliquant tous les modules GPU, le jeu prévu est mises en oeuvre et testé.
YouTube Vidéo
Avant d’entrer dans les détails, vous pouvez consulter ce lien Youtube contenant un bref résumé de notre projet et une vidéo montrant ce que nous avons réussi à le faire jusqu'à maintenant. Le projet n’est pas encore terminé, mais on va mettre à jour cette page à tout moment une nouvelle fonctionnalité est ajoutée au projet.
Première démonstration : Animation
Dans cette démo il y a deux couches d’affichage dans le tampon de trame, le fond est une image d’étoiles en 320 x 240 et l’image du premier plan est un 3200 x 240 avec une couleur d’arrière-plan fixe qui est configurée pour une couleur transparente tout en convertissant le fichier bmp dans notre format. Le MCU défile régulièrement sur l’image de premier plan pour créer le mouvement animé.
Deuxième démonstration : un gameplay court
Dans cette démonstration, nous fournissons un jeu court avec l’utilisation des sprites et des images de fond de la rue de la Rage (abandonware). Dans ce cas, les animations sont créées à l’aide de bitblits sur le premier plan et le mouvement du personnage est créé à l’aide de défilement. Vous pouvez aussi voir une génération primitive à la fin pour afficher un message.