Page 1 sur 1

[Résolu] Une idée débile

Posté : mer. 17 juil. 2019 22:32
par DuDono
Je me demandais si, par le plus grand des hasards, il serait possible de modifier des adresses au-delà de $FFFF. Cela me semble peu probable et inutile sur console, mais ça pourrait être énorme sur émulateur.

Re: Une idée débile

Posté : jeu. 18 juil. 2019 01:04
par Krys3000
Salut,

Il n'y a pas d'adresses au-delà de $FFFF sur un processeur 8-bit comme la Game Boy.

Les adresses jusqu'à $7FFF constituent la ROM, ensuite de $8000 à $9FFF c'est la VRAM (Video RAM utilisée comme source du rendu vidéo) puis de jusqu'à $BFFF c'est la SRAM (Save RAM utilisée pour sauvegarder par exemple, on peut l'éditer par ACE mais c'est plus compliqué) et enfin seulement commence la WRAM (Work RAM contenant les données du jeu) que l'on édite le plus souvent en ACE, jusqu'à $DFFF. A partir de $E000 et jusqu'à $FDFF, c'est l'Echo RAM, un miroir partiel de la WRAM, qui est suivie par l'OAM ($FE00-$FE9F) qui assure la gestion des sprites et qu'on peut modifier par ACE mais il faut vraiment savoir ce qu'on fait. Enfin, il y a la HRAM (High RAM, directement connectée au processeur, que l'on édite jamais).

Re: Une idée débile

Posté : dim. 18 août 2019 15:18
par DuDono
Sinon, avec le mobile gb adapter, ça se passe comment?

Re: Une idée débile

Posté : sam. 24 août 2019 17:01
par Buglitch
Oui, et sur émulateur, même si tu forçais l’existence de mémoire au delà de $FFFF, ça ne serait jamais utilisé par le jeu, et tu ne peux même pas référencer cette nouvelle partie de la mémoire depuis le jeu puisque les instruction qui prenne une adresse ne prenne pas assez de bits pour aller au dessus de $FFFF (ça fonctionne sur un adresse space 16 bits).

DuDono a écrit : dim. 18 août 2019 15:18 Sinon, avec le mobile gb adapter, ça se passe comment?
Je connais pas précisément le Mobile GB Adapter donc je peux pas te parler du protocole utilisé mais le cable link marche avec les adresses $FF01 et $FF02 et une clock. En gros tu inscrit les donnés que tu veux envoyer par le câble à l’adresse $FF01 et elle sont envoyé périodiquement à travers le cable en fonction de la clock. (et $FF02 sert pour la config et l'état actuel du transfert).
Et ça marche dans les deux sens, quand le transfert est terminé tu peux read en $FF01 pour récup ce qu'on t'as envoyé en réponse via le cable. (bon en soit tu peux commencer à lire pendant le transfert, l'information s'écrit petit à petit en mémoire)