Tetris - Bloquage à la sélection du niveau

Tetris - Bloquage à la sélection du niveau

by Rémi Claude Delacourt -
Number of replies: 7

Bonjour,

Lors de l'exécution du Tetris.gb (trouvé sur ce lien : https://www.emurom.net/emulation/roms-gameboy/detail-3017-tetris.html), tout se passe bien (démarrage, sélection Joueur 1, choix du type de partie et de la musique) jusqu'à la sélection du niveau. 

Nous pouvons bien naviguer à travers la  sélection du niveau, mais une fois celui-ci sélectionné, l'image se fige et le jeu se "bloque" à ce moment. Cependant les prints indiquant l'instant de l'appui d'une touche continue, les cycles de la gameboy continuent d'augmenter, la méthode generate_image(..) continue à être appelée, tout semble fonctionner normalement en mettant de côté le display.

Nous arrivons donc un peu à cours d'idées de où le problème pourrait venir, viendrait-il de la ROM que nous avons téléchargée, d'une mauvaise utilisation de la bibliothèque de notre part, auriez-vous une piste ou une idée pour nous permettre d'avancer ? Quelqu'un d'autre aurait-il eu un beug similaire ?

PS : Tous les autres jeux fonctionnent comme il faut.

Merci pour vos réponses.

In reply to Rémi Claude Delacourt

Re: Tetris - Bloquage à la sélection du niveau

by Elior Jacques Papiernik -

Même problème chez nous, apparemment on est nombreux.


Est-ce qu'un groupe à déjà réussi à faire tourner Tetris ?

In reply to Rémi Claude Delacourt

Re: Tetris - Bloquage à la sélection du niveau

by Jean-Cédric Chappelier -

comme dit (https://moodlearchive.epfl.ch/2019-2020/mod/forum/discuss.php?d=37598#p78086), j'avais le même problème sur un des Tetris que j'avais testé (mais pas sur un autre bizarrement) ; le problème disparaissait en empêchant (au niveau du bus) le write sur des adresses < 0x8000 (= en ROM)

In reply to Jean-Cédric Chappelier

Re: Tetris - Bloquage à la sélection du niveau

by Aman Bansal -
En effet, cela résolu le problème (il y a 1 écriture dans la bank rom).

Devrait-on garder cela (empêchement de l'écriture pour les adresses < 0x8000 dans bus_write et bus_write16) pour le rendu final ou faudrait-il l'enlever ?

Nous pouvons mettre un commentaire disant que c'est un cas particulier pour Tetris, si c'est mieux.

(Aussi, je suppose que c'est normal qu'on ne puisse pas jouer au mode multijoueur ?)

Merci d'avance.
In reply to Aman Bansal

Re: Tetris - Bloquage à la sélection du niveau

by Aman Bansal -

PS: Les autres roms (j'ai eu seulement avec 2048) essaient d'écrire aussi dans les adresses < 0x8000. Mais empêcher ces écritures ne semble pas poser de problème (les tests de blargg passent aussi).

In reply to Jean-Cédric Chappelier

Re: Tetris - Bloquage à la sélection du niveau

by Aurélien Clergeot -

Bonjour,

Pour pouvoir faire tourner Tetris, j'ai du modifier le bus.c, en autorisant seulement les writes à une addresse >= 0x8000. Maintenant, Tetris fonctionne, mais les tests ne passent plus avec cette version du bus.

J'ai donc deux versions : bus.o et bus_no_write_in_rom.o, et je link une des deux versions en fonction des targets de make. Est-ce bien autorisé ?

In reply to Aurélien Clergeot

Re: Tetris - Bloquage à la sélection du niveau

by Jean-Cédric Chappelier -

la version officielle attendue ne fait en effet pas ces vérifications.

Il suffit d'ajouter un
#ifdef WRITE_ROM_CHECK
(ou qqchose comme ça)
autours de ces vérifications. Ainsi, en compilation normale vous aurez la version attendue, et si vous voulez ajouter ces vérifications, compilez en ajoutant -DWRITE_ROM_CHECK (ou le nom que vous aurez choisi).