L'école mirrored rom
MSXlegend
Membre non connecté
Conseiller Municipal
mais qu'est ce que c est que ce charabia !!
ça fait un moment que je vois certains jeux (des petits de 16-32k en generals) m'afficher sur bluemsx un mapper "mirrored rom"
Le peu d'info que j'ai eu sur la toile, c est que la rom demarre a 0000h au lieu de 4000h habituellement
Quand j'ai testé le jeu 16k version beamrider, idem, il démarre à 0000h.
Quelqu'un a plus d'info dessus? merci Edité par MSXlegend Le 22/08/2023 à 17h20
ça fait un moment que je vois certains jeux (des petits de 16-32k en generals) m'afficher sur bluemsx un mapper "mirrored rom"
Le peu d'info que j'ai eu sur la toile, c est que la rom demarre a 0000h au lieu de 4000h habituellement
Quand j'ai testé le jeu 16k version beamrider, idem, il démarre à 0000h.
Quelqu'un a plus d'info dessus? merci Edité par MSXlegend Le 22/08/2023 à 17h20
Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du KCX Bluetooth transmitter
mirrored rom avec BlueMSX ça veux dire tout simplement que c'est un jeu en cartouche 8K 16K 32K 48K ou 64K qui n'utilise pas de mapper spécifique mais juste les Signaux Slot Select , CS1 , CS2 et CS12 pour démarrer la cartouche
essaye avec Knigtmare il ne démarre pas en 0000h mais en 4000h et pourtant sur détection automatique il affiche bien mirrored rom
essaye avec Knigtmare il ne démarre pas en 0000h mais en 4000h et pourtant sur détection automatique il affiche bien mirrored rom
MSXlegend
Membre non connecté
Conseiller Municipal
Je comprend mieux. et si une rom de 64ko m'affiche un mapper ascii16, il ne fronctionnera donc pas dans une 27512 !!
donc mirrored rom = eprom 8k 16k 32k 48k 64k
Merci pour les precisions Edité par MSXlegend Le 22/08/2023 à 17h42
donc mirrored rom = eprom 8k 16k 32k 48k 64k
Merci pour les precisions Edité par MSXlegend Le 22/08/2023 à 17h42
Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du KCX Bluetooth transmitter
MSXlegend
Membre non connecté
Conseiller Municipal
eh eh , pas mieux .
"Say no to drugs"
"Say no to drugs"
Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du KCX Bluetooth transmitter
ericb59
Membre non connecté
Conseiller Municipal
Si je ne dit pas de bêtise. Une Mirrored ROM c'est une ROM de 8, 16, 32k,
dont le contenu est visible aussi sur un autre slot que celui dans lequel se trouve la cartouche.
C'est une conséquence du système de slots/subslot du MSX.
Cela dit, il me semble aussi que les Megarom, donc les ROM avec un Mapper, peuvent aussi avoir des pages miroir dans d'autres slots. Mais c'est une autre question.
Edité par ericb59 Le 22/08/2023 à 20h00
dont le contenu est visible aussi sur un autre slot que celui dans lequel se trouve la cartouche.
C'est une conséquence du système de slots/subslot du MSX.
Cela dit, il me semble aussi que les Megarom, donc les ROM avec un Mapper, peuvent aussi avoir des pages miroir dans d'autres slots. Mais c'est une autre question.
Edité par ericb59 Le 22/08/2023 à 20h00
en fait c'est BlueMSX qui les appellent ainsi
si on charge un jeu en rom de 8K il est bien en miroir dans la mémoire
j'explique : le jeu va de 4000h à 5FFFh
comme le signal employé est CS1 la zone adressée par le MSX va de 4000h à 7FFFh
donc on retrouve bien un reflet du jeu en 6000h
si on charge un jeu en rom de 8K il est bien en miroir dans la mémoire
j'explique : le jeu va de 4000h à 5FFFh
comme le signal employé est CS1 la zone adressée par le MSX va de 4000h à 7FFFh
donc on retrouve bien un reflet du jeu en 6000h
MSXlegend
Membre non connecté
Conseiller Municipal
moi je t ai perdu apres ....le jeu va de 4000h......
(j'ai compris le principal c est deja ça ) Edité par MSXlegend Le 22/08/2023 à 20h38
(j'ai compris le principal c est deja ça ) Edité par MSXlegend Le 22/08/2023 à 20h38
Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du KCX Bluetooth transmitter
aoineko
Membre non connecté
Conseiller Municipal
Une mirrored ROM c'est un ROM dont certains bits d'accès aux données ne sont pas utilisés et ou tu as donc plusieurs adresses qui pointent vers le même contenu.
D'où l'effet miroir, comme si le contenu pouvait être vu à différent endroit de l'espace mémoire du slot de la ROM.
Par ex., avec une ROM de 16 KB qui ignore les 2 derniers bits d'adressage (bit#14 et bit#15) les adresses suivantes pointent vers la même contenu de la ROM :
- 0100h
- 4100h
- 8100h
- C100h
(c'est comme si on appliquait le masque 3FFFh sur toutes les adresses)
Par contre, attention, si les données sont bien visibles depuis plusieurs endroits de l'espace mémoire, un programme lui est fait pour fonctionner à des adresses données qui sont inscrites en dur dans le code (à chaque [call] ou jump par exemple).
Du coup, une mirrored ROM de 16 KB qui est prévu pour tourner à partir de 4000h (cas classique) sera bien visible en 0000h, 8000h et C000h, mais les adresses du programme seront faites pour fonctionner entre les adresses 4000h et 7FFFh.
Les mirrored ROM sont le seul moyen de faire un programme qui est prévu pour être lancé à partir de 0000h car le BIOS du MSX ne va pas chercher l'entête des ROM en 0000h (seulement 4000h et 8000h) mais avec l'effet miroir il va trouver l'entête en 4000h et faire un saut au début du programme qui se trouvera dans les adresses 0000h.
A noter enfin, qu'une ROM simple (plain ROM en anglais) n'est pas forcement mirrored.
Tout dépend de l’électronique de la cartouche.
Dans le cas d'une ROM 16 KB (en 4000h par ex.) non mirrored, un accès au reste de l'espace mémoire du slot donnera un résultat indéterminé (Jipe expliquera mieux que moi, mais je crois qu'on obtient FFh dans le meilleur des cas). Edité par aoineko Le 23/08/2023 à 14h24
D'où l'effet miroir, comme si le contenu pouvait être vu à différent endroit de l'espace mémoire du slot de la ROM.
Par ex., avec une ROM de 16 KB qui ignore les 2 derniers bits d'adressage (bit#14 et bit#15) les adresses suivantes pointent vers la même contenu de la ROM :
- 0100h
- 4100h
- 8100h
- C100h
(c'est comme si on appliquait le masque 3FFFh sur toutes les adresses)
Par contre, attention, si les données sont bien visibles depuis plusieurs endroits de l'espace mémoire, un programme lui est fait pour fonctionner à des adresses données qui sont inscrites en dur dans le code (à chaque [call] ou jump par exemple).
Du coup, une mirrored ROM de 16 KB qui est prévu pour tourner à partir de 4000h (cas classique) sera bien visible en 0000h, 8000h et C000h, mais les adresses du programme seront faites pour fonctionner entre les adresses 4000h et 7FFFh.
Les mirrored ROM sont le seul moyen de faire un programme qui est prévu pour être lancé à partir de 0000h car le BIOS du MSX ne va pas chercher l'entête des ROM en 0000h (seulement 4000h et 8000h) mais avec l'effet miroir il va trouver l'entête en 4000h et faire un saut au début du programme qui se trouvera dans les adresses 0000h.
A noter enfin, qu'une ROM simple (plain ROM en anglais) n'est pas forcement mirrored.
Tout dépend de l’électronique de la cartouche.
Dans le cas d'une ROM 16 KB (en 4000h par ex.) non mirrored, un accès au reste de l'espace mémoire du slot donnera un résultat indéterminé (Jipe expliquera mieux que moi, mais je crois qu'on obtient FFh dans le meilleur des cas). Edité par aoineko Le 23/08/2023 à 14h24
On est toujours ignorant avant de savoir.
aoineko :
A noter enfin, qu'une ROM simple (plain ROM en anglais) n'est pas forcement mirrored.
Tout dépend de l’électronique de la cartouche.
Tout dépend de l’électronique de la cartouche.
Comprendre tout le décodage qui va piloter les broches /CE /CS (c'est la même choses c'est juste le nomage qui change "CHIP ENABLE BAR" ou "CHIP SELECT BAR" ) et/ou /OE (OUTPUT ENABLE BAR)
Le "/" ou "BAR" c'est pour signaler que le signal est actif à l'état- bas ou "0" (logique négative).
aoineko :
Dans le cas d'une ROM 16 KB (en 4000h par ex.) non mirrored, un accès au reste de l'espace mémoire du slot donnera un résultat indéterminé (Jipe expliquera mieux que moi, mais je crois qu'on obtient FFh dans le meilleur des cas).
Si il y a un réseau de résistances relié au +5V sur le bus de données le Z80 va effectivement "voir" FFh. Parce que si /OE n'est pas au niveau "0" alors la ROM dans notre cas est dans un état dit "troisième état ("third start") qui en réalité est plutôt un état haute impédance ("Hi-Z").
Dit autrement la ROM ne pilote ni à l'état bas "0", ni à l'état haut "1", d'ou cette notion de 3ème état ("Third state").
Dans ce cas le rôle du réseau de résistances, va avoir pour rôle de "tirer" les signaux vers le +5V alias l'état "1".
Ainsi on évite que le bus soit flottant et que l'état des bits soit indéterminé.
Voilà c'était un peu long mais comme souvent en technique il faut expliquer un minimum pour comprendre ce qu'il se passe.
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
petite précision sur l'électronique : les signaux /CS1 /CS2 et /CS12 sont couplés avec le signal /RD ce qui dire qu'il ne peuvent servir qu'avec une ROM
Extrait de la Doc du Canon V20
Extrait de la Doc du Canon V20
Traduction :
Sélection des signaux de la ROM
Outre les signaux de sélection d'emplacement, il est stipulé que le signal de sélection de rom répertorié ci-dessous soit émis vers l'emplacement de cartouche. Par conséquent, ces signaux sont produits en U2, U47 et U16 en utilisant les bits de poids fort du bus d'adresse et le signal /RD (voir figure III.6).
Lorsque la cartouche ROM d'adresse 4000-BFFF est utilisée, l'avantage est que le coût de la cartouche elle-même peut être réduit puisque le circuit décodeur d'adresse est situé dans l'unité principale.
Outre les signaux de sélection d'emplacement, il est stipulé que le signal de sélection de rom répertorié ci-dessous soit émis vers l'emplacement de cartouche. Par conséquent, ces signaux sont produits en U2, U47 et U16 en utilisant les bits de poids fort du bus d'adresse et le signal /RD (voir figure III.6).
Lorsque la cartouche ROM d'adresse 4000-BFFF est utilisée, l'avantage est que le coût de la cartouche elle-même peut être réduit puisque le circuit décodeur d'adresse est situé dans l'unité principale.
MSXlegend
Membre non connecté
Conseiller Municipal
Je pense qu'une fois que l'on maitrise ça, on maitrise le reste
Je me penche sur tout ça car je trouve cela vraiment intérréssant
Merci
Je me penche sur tout ça car je trouve cela vraiment intérréssant
Merci
Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du KCX Bluetooth transmitter
REMARQUE:
Ça ne change rien sur le fonctionnement attendu, MAIS d'un point de vue de logique pure, la manière dont sont connecté les signaux /CE et /OE de la ROM du CANON V20 sont "à l'envers"
En effet les signaux /CSxx sont le fruit du signal /RD et du décodage des A14 et A15 pour obtenir des signaux /RD par page de 16KO.
D’ailleurs CANON créé un signal équivalent à un /CS01 qui couvre les pages 0000h-3FFFh (/CS0) et 4000h-7FFFh (/CS1).
Hors CANON à décidé de câbler le signal /SLTSL0 sur la broche /OE de la ROM et /CS01 sur la broche /CE.
Encore une fois fonctionnellement parlant ça marche, mais d'un point de vue logique il faudrait /SLTSL0 sur /CE et /CS01 sur /OE, et ça serait vérifié sur une SRAM qu'on utiliserait à la place de la ROM dans une cartouche par exemple. Edité par z80 Le 26/08/2023 à 12h31
Ça ne change rien sur le fonctionnement attendu, MAIS d'un point de vue de logique pure, la manière dont sont connecté les signaux /CE et /OE de la ROM du CANON V20 sont "à l'envers"
En effet les signaux /CSxx sont le fruit du signal /RD et du décodage des A14 et A15 pour obtenir des signaux /RD par page de 16KO.
D’ailleurs CANON créé un signal équivalent à un /CS01 qui couvre les pages 0000h-3FFFh (/CS0) et 4000h-7FFFh (/CS1).
Hors CANON à décidé de câbler le signal /SLTSL0 sur la broche /OE de la ROM et /CS01 sur la broche /CE.
Encore une fois fonctionnellement parlant ça marche, mais d'un point de vue logique il faudrait /SLTSL0 sur /CE et /CS01 sur /OE, et ça serait vérifié sur une SRAM qu'on utiliserait à la place de la ROM dans une cartouche par exemple. Edité par z80 Le 26/08/2023 à 12h31
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie