MSX Village forum

La Place des Développeurs Question sur Slot/RAM MAPPER ASCII16

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 13h13

Reprise du message précédent

aoineko :
[quote=ericb59]
Et les banks des ROM mappées (qui sont dans l'une des pages), pointent vers un segment.


? :hum
En fait c'est la même chose non ?
Les segments de la Megarom sont pointées sur des adresses ?
Qu'est-ce que tu appels "banks des ROM mappées" ?


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/01/2022 à 14h54
Le Z80 voit 4 pages qu'on peut faire pointer vers la même page dans n'importe lequel des slots et sous-slots de la machine.
Une ROM mappée est composée de 2 ou 4 banks (pour les mappers 16K ou 8K) qu'on peut faire pointer vers l'un des segments de la ROM.

Voici l'exemple d'une ROM ASCII-8 de 128K.
Il y a une double indirection de l'espace mémoire visible par le Z80 :, d'abord à travers le slot/sous-slot sélectionné dans chacune des pages, puis dans le cas de la ROM mappé, à travers le segment sélectionné dans chacun des banks.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 16h08
En fait tu appel “bank” 2 segments de la rom asci8.
Ca serait une rom ascii 16, ca serait 1 segment de cette rom.

Je ne vois pas bien l’interet, de ces 2 noms… bank, segments.
Au final c’est la même chose , non ?


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/01/2022 à 16h17
Déjà, c'est pas moi qui appelle ça des "bank" (cf. ). ^^
Ma seule fantaisie, c'est de les numéroter depuis 0 pour garder une consistance avec la numérotation des pages.

Dans le cas particulier d'une ROM ASCII-16, un bank fait 16K, donc la même taille qu'une page.
Mais dans tous les mappers 8K, il y a 2 banks par page ; d'où l'importance de différencier ces deux notions à mon humble avis.

Au delà des noms, le seul truc important à comprendre c'est la double indirection.

Le Z80 ne verra le contenu d'un segment de ta ROM mappée que si :
- Ce segment est sélectionné dans un des "bank" (ou "emplacements interchangeables" si tu préfères) de la ROM,
et
- que la page correspondante à ce "bank" pointe vers le slot de la ROM.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 17h09
J'ai bien compris le principe. C'est la même chose que pour le Memory Mapper qu'on utilise avec MSX-DOS2.

Je cherche juste à ce que les "concepts" aient les bons mots, parce que je m'embrouille dans ce que je lis ici et là.
C'est pas juste pour faire de la sémantique.

Ce qui me trouble, c'est de savoir avec qui la "bank" à une relation ; avec la page ? ou avec la ROM ?
Je reprend mon exemple de la Megarom ASCII16. Le segment sera de même valeur qu'une bank, et de même valeur que la page. Du coup il ne sert à rien de mentionner le terme de bank.
Je peux tout simple dire, que la page 1 pointe sur le Segment 5 de ma ROM ASCII16 qui se trouve en slot 1.
Par contre si on a une ASCII8, on subdivise la page en deux... Et c'est peut être là que le terme Bank peut avoir un sens (Selon moi).

Question subsidiaire que je me pose :
Je comprendre que dans les années 80, chaque société ait développé des concepts de Mapper différents... Konami en 2, Ascii en a deux... Quel est l'intérêt aujourd'hui de disposer d'autans de choix ? Il me semble que les ASCII8 et ASCII16 sont suffisant ? Y a t-il un intérêt particulier à choisir un Mapper Konami ?

De même, de mon point de vu très limité (car je n'ai jamais développé de Megarom), quel est le cas d'usage où l'on va préférer utiliser un mapper ASCII16 ou ASCII8 ?
J'ai l'impression que le ASCII 16 serait plus simple à gérer, mais c'est peut être une fausse impression ?




banniere-ericb59e
Site web    
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 552

Le 21/01/2022 à 17h35
Page n ou Bank n (n=0,1,2,3), c'est la même chose!


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 17h42
Sector28 :
Page n ou Bank n (n=0,1,2,3), c'est la même chose!


Oui suivant l'interlocuteur j'ai l'impression que les termes changent pour des concepts identiques.
Page / Bank / Segment ... En fait y a rien de figé dans le marbre.

Je copie colle ici un post de Grauw sur MRC.
Code TEXT :
 
ROM banks just follow each other sequentially in a ROM file. For a 16K mapper the first 4000H bytes are the first bank, the second 4000H bytes the second, the third 4000H bytes the third, etc. Selecting a bank is done by writing the bank number to a mapper-specific memory address. I recommend ASCII8 to start with.
 
The easiest way to start a new ROM bank in code is to first pad until the end of the current bank:
 
ds -$ & 1FFFH  ; for 8k mappers
ds -$ & 3FFFH  ; for 16k mappers
And then reset the org address to match the page where the code that follows will be accessed:
 
org 8000H
Some assemblers like Pasmo handle org strangely so they are not suited for making megaroms.
 


Il parle de "Banks", pour moi ca serait les segments de la ROM, ou j'ai toujours rien compris ? :lol


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 21/01/2022 à 17h55
les puces de Mapper ASCII LZ93A13 et M60002 peuvent gérer des pages ( bank ) de 8K ou de 16K par construction

il y a même des straps à souder prévus sur les circuits pour passer de l'un a l'autre

la seule différence vient du nombre d'adresses utilisées sur la ROM de A0 à A13 -> 8K , de A0 à A14 -> 16K

les mappers Konami sont spécifiques car la page 0 de 4000h à 5FFFh est fixe

les mappers SCC sont aussi spécifiques avec la puce sonore embarquées

au point de vue de la programmation on peut transformer un jeu en mapper Konami ou SCC vers un mapper ASCII juste en changeant les adresses de commutation de pages ( banks )

exemple de konami 8k vers ASCII 8K

remplacer 4000h par 6000h
remplacer 6000h par 6800h
remplacer 8000h par 7000h
remplacer A000h par 7800h

exemple de SCC 8k vers ASCII 8K

remplacer 5000h par 6000h
remplacer 7000h par 6800h
remplacer 9000h par 7000h
remplacer B000h par 7800h

d'ailleurs les adresses ne sont uniquement sur ces valeurs figées mais sur une plage d'adresses suite à un décodage sommaire ex l'adresse de commutation 6000h pour une Konami est aussi la même jusqu'a 7FFFh

voir sur le site de BiFi pour plus d'informations : http://bifi.msxnet.org/msxnet/tech/megaroms


:noel
Site web    
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 552

Le 21/01/2022 à 18h17
ericb59 :
Il parle de "Banks", pour moi ca serait les segments de la ROM, ou j'ai toujours rien compris ? :lol

Il n'y pas de segmentation sur un msx, toutes les pages d'une mégarom sont de même tailles (8k / 16k), il s'agit donc de pages (banks).


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 18h44
JIPEMSX :
les puces de Mapper ASCII LZ93A13 et M60002 peuvent gérer des pages ( bank ) de 8K ou de 16K par construction

il y a même des straps à souder prévus sur les circuits pour passer de l'un a l'autre



Oui je m'en souviens bien du temps où j'avais des LZ93A13 pour faire les Cartouches Flash. ^^

JIPEMSX :

la seule différence vient du nombre d'adresses utilisées sur la ROM de A0 à A13 -> 8K , de A0 à A14 -> 16K

les mappers Konami sont spécifiques car la page 0 de 4000h à 5FFFh est fixe

les mappers SCC sont aussi spécifiques avec la puce sonore embarquées

au point de vue de la programmation on peut transformer un jeu en mapper Konami ou SCC vers un mapper ASCII juste en changeant les adresses de commutation de pages ( banks )

exemple de konami 8k vers ASCII 8K

remplacer 4000h par 6000h
remplacer 6000h par 6800h
remplacer 8000h par 7000h
remplacer A000h par 7800h

exemple de SCC 8k vers ASCII 8K

remplacer 5000h par 6000h
remplacer 7000h par 6800h
remplacer 9000h par 7000h
remplacer B000h par 7800h

d'ailleurs les adresses ne sont uniquement sur ces valeurs figées mais sur une plage d'adresses suite à un décodage sommaire ex l'adresse de commutation 6000h pour une Konami est aussi la même jusqu'a 7FFFh

voir sur le site de BiFi pour plus d'informations : http://bifi.msxnet.org/msxnet/tech/megaroms


Donc à moins d'utiliser une PUCE SCC, ce qui me parait peut probable, le Mapper Konami SCC n'a plus aucun intérêt à être utilisé aujourd'hui.

Le mapper Konami ou ASCII8 c'est le même usage donc.
Au niveau hardware il est plus simple de créer une cartouche à Mapper Konami car il utilise des composants classiques.
Donc il peut être utile.

ASCII8 et ASCII16 ? Qu'est-ce qui justifie l'usage de l'un ou l'autre selon vous ? (A part la capacité maximale de la ROM)


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 18h49
Sector28 :

Il n'y pas de segmentation sur un msx, toutes les pages d'une mégarom sont de même tailles (8k / 16k), il s'agit donc de pages (banks).


On pourrais donc parler de Bank aussi du coté MSX autant que du coté de la MEGAROM.

Ca commence à s'éclaircir dans mon esprit.
C'est important pour moi tout ca, car je dois mettre noir sur blanc l'explication pour le manuel de Fusion-C.

Merci à tous pour vos apports ^^ Edité par ericb59 Le 21/01/2022 à 18h52


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/01/2022 à 18h56
ericb59 :
On pourrais donc parler de Bank aussi du coté MSX autant que du coté de la MEGAROM.


On pourrait utiliser "pages" pour les deux :
- Les pages de l'espace mémoire du Z80 (ou l'on peut sélectionner un slot)
- Les pages de l'espace du mapper (ou l'on peut sélectionner un segment de ROM)

C'est ce qu'ils font sur MSX.org.

Perso, je trouve ça plus compliqué à comprendre (surtout qu'ils oublient souvent de préciser de quelles "pages" ils parlent) mais si c'est clair pour toi, tout va bien. :)

ericb59 :
ASCII8 et ASCII16 ? Qu'est-ce qui justifie l'usage de l'un ou l'autre selon vous ? (A part la capacité maximale de la ROM)


Avec un mapper 8K, tu as 4 banks/pages avec lesquelles tu peux jongler. Ca offre beaucoup plus de souplesse qu'un mapper 16K qui n'aura que 2 banks/pages.
En fait, le mapper 16K n'a que peu d'intérêt puisque qu'avec un mapper 8K, il est facile de mettre 2 segments contiguës dans 2 banks/pages contiguës pour obtenir un espace de 16K.
L'inverse n'est évidemment pas possible.
Après, le mapper 16K c'est le seul moyen d'avoir une ROM 4 MB.
Mais bon, pas sûr qu'aucun jeu MSX n'ai jamais eu besoin d'autant de place. ^^


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/01/2022 à 19h29
Citation :
n fait, le mapper 16K n'a que peu d'intérêt puisque qu'avec un mapper 8K, il est facile de mettre 2 segments contiguës dans 2 banks/pages contiguës pour obtenir un espace de 16K.

C'est pas faux (Mais faut 2 manips)

Citation :
Ca offre beaucoup plus de souplesse

Pour faire quoi concrètement ?

Citation :
Mais bon, pas sûr qu'aucun jeu MSX n'ai jamais eu besoin d'autant de place.

Oui je viens de faire une "Private Edition" de Barbarian (MSX2). Cartouche de 4096K. A ma connaissance la seule existant sur MSX, mais je peux me tromper.


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/01/2022 à 21h37
ericb59 :
Pour faire quoi concrètement ?


A mon avis, les premiers 16K (bank 0 et 1) vont probablement rester sur leurs segments initiaux (avec le programme principal).
Cela laisse 2 banks (bank 2 et 3) qu'on peut switcher indépendamment pour mettre de données (des graphismes, de la musique, etc.) ou des drivers (des algos de décompression, un replayer, etc.).

Mais bon, tout dépend des besoins... ¯\_(ツ)_/¯


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 22/01/2022 à 06h39
pour se donner une idée dont la façon que les pages sont utilisées dans un jeu il y a le debugger de RuMSX :)

selectionner Debug

Debug setting

dans Verbose cocher startup messages et memory

dans Output cocher File (append)

mettre un nom et dossier si besoin dans Filename

faire RESET par l'icone bouton rouge laisser tourner puis quitter le jeu

avec un éditeur de texte rechercher initializing puis analyser

exemple avec KVII MSX1

Initializing memory mappers...
RAM-MAPPER: block 3 (03) at 0000h
RAM-MAPPER: block 2 (02) at 4000h
RAM-MAPPER: block 1 (01) at 8000h
RAM-MAPPER: block 0 (00) at C000h
Initializing VDP, PSG, and CPU...
Running ROM code...
ROM-MAPPER: 8kB block 0 at 4000 (in slot 1)
ROM-MAPPER: 8kB block 1 at 6000 (in slot 1)
ROM-MAPPER: 8kB block 2 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 3 at A000 (in slot 1)
ROM-MAPPER: 8kB block 4 at 6000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 6 at A000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 5 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 15 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 2 at 8000 (in slot 1)
ROM-MAPPER: 8kB block 1 at 6000 (in slot 1)
ROM-MAPPER: 8kB block 2 at 8000 (in slot




:noel
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie