MSX Village forum

L'atelier Mappeur NEO

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 26/11/2023 à 20h11
Salut,
J'en appel à nos pros du fer à soudé !

En discutant avec Bengalack (créateur de Lilly's Saga), nous avons convenu qu'il serait vraiment super cool de pouvoir avoir des cartouches qui dépasse la limite des 2/4 Mo des mappeurs habituels (ASCII8/16 et Konami).
J'ai donc planché sur un mappeur (coté logiciel) qui permettrait cela tout en conservant la compatibilité avec des formats assez rependu : ASCII8/16.
La proposition est décrite en détail là : https://aoineko.org/msxgl/index.php?title=ASCII-EX_mapper

Pour ceux qui préfère le français, voici un résumé :

L'idée est d'étendre le format des mappeurs de ASCII8/16 avec un registre de segment sur 16 bits (au lieu de 8 bits pour le mappeur d'origine).
Cela permet de sélectionner jusqu'à 65536 segments dans chaque banque de la cartouche, mais pour le moment, nous proposons de réserver 4 bits pour une évolution ultérieur du standard et d'avoir donc 12 bits disponible pour les segments, soit 4096 segments.
Ce qui fait comme taille 64 Mo au total avec des segments de 16 Ko (2 banques), et 32 Mo pour des segments de 8 Ko (4 banques).

Voila pour la théorie.
Maintenant, je n'ai pas la moindre idée de la faisabilité de la chose !
Je pense qu'un prototype à 16 ou 32 Mo serait déjà très bien pour commencer.

Qu'en dite-vous ?
Voyez-vous des soucis qui empêcheraient de créer une telle cartouche ? Edité par aoineko Le 07/03/2024 à 19h25


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5794

Le 26/11/2023 à 20h39
En theori ça a l'air simple, en tant normal, c est 4096ko max pour ascii et 2048ko pour un mapper scc. Pablibiris m'a expliqué que son PCB yamanooto etait pret pour du 4096ko (en la flashant a nouveau et en changeant la memoryflash) , la deja je ne comprend pas comment il a triché :hum
Mais dit moi, pourquoi faire autant de Mo :| :| :| Edité par MSXlegend Le 01/12/2023 à 21h45


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
DataPro Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 14/06/2011 à 10h12

Messages: 845

Le 26/11/2023 à 20h46
Une cartouche de 16 Mo permettrait de faire une belle compilation de jeux.
Les chinois en ont fait pas mal pour la famicom et la NES avec jusqu'à 800 jeux en une cartouche.


MSX1: Yeno DPC-64 - Sanyo PHC-28S - Sanyo PHC-28L - Canon V20 - Sony HB-75F - Yeno MX-64
MSX2: Panasonic FS-A1F 128Ko RAM 128 Ko VRAM + Gotek / Philips NMS8255 Azerty
Carnivore 2 : 8Mb FlashROM ° 1024Ko RAM ° IDE ° FM-PAC(MSX Music)° SCC+
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 26/11/2023 à 21h08
MSXlegend :
Mais dit moi, pourquoi faire autant de Mo :| :| :|


Ca ouvrirait de nouvelles possibilités tout simplement. :)

Ca permettrait par ex., de faire un jeu comme Sales Discontinued (qui fait 32 Mo) en version cartouche plutôt qu'en X disquettes ou en version HDD (et avec la rapidité d'accès à une ROM plutôt qu'à un disque).
Et si tu as vu le nouveau projet de Bengalack sur MRC (Sneak peak), tu peux imaginer aisément la taille que peut prendre chaque musique OPL4 sur 42 canaux !
J'ai aussi quelques idées qui profiterait bien de cette place supplémentaire.

Alors bien sûr on peut faire de très bons jeux en se limitant à 2/4 Mo, là n'est pas la question. ^^
Le mieux me semble que chaque créateur puisse faire le jeu dont il a envi sur MSX.
Et puis, on ne parle pas de faire des jeux qui prennent 50 Go ! 16 Mo par ex. c'est pas si loin de la taille des derniers jeux MSX sortie à l'époque (comme Illusion City et ses 13 disquettes).

Et ce mappeur ouvrirait de nouvelles portes à explorer (un jeu à la Dragon Lairs, des mega-compiles de jeu, etc.).

Bref, voyons déjà si c'est techniquement faisable, à quel cout, quelle taille, etc. Edité par aoineko Le 26/11/2023 à 21h08


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 07/12/2023 à 20h59
J'ai une question pour les pros de l'électronique (en rapport avec le nouveau format de mappeur auquel on réfléchi avec Bengalack) :

Est-ce qu'une cartouche reçoit sur le bus du port cartouche les accès aux données (lecture ou écriture) sur les pages ou elle n'est pas sélectionnée ?
Par ex., pour une simple cartouche avec un ROM de 32K sur les pages #1 (4000-7FFFh) et #2 (8000-BFFFh), est-ce que la cartouche "reçoit" les accès à la page #2 quand le slot/sous-slot sélectionné pour cette page n'est pas celui de la cartouche ?

En gros, est-ce que le mécanisme de sélection de slot redirige "physiquement" les signaux vers les slots correspondants ou est-ce que (comme pour les ports I/O si j'ai bien compris) le signal est envoyé à tous les slots et que c'est eux qui décident de l'ignorer s'ils ne sont pas sélectionnés ?


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 08/12/2023 à 12h00
le premier critère a prendre en compte avant de fabriquer un mapper étendu c'est le choix de la mémoire flashrom qui doit fonctionner sur 8 bits et avoir une taille de 64 Mo
généralement ces mémoires fonctionnent en 3V et ne s'interfacent pas directement avec les tensions 5V du MSX ce qui complique la cartouche


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 08/12/2023 à 18h43
Merci pour l'info.

Pour le moment, on a discuté avec le créateur de la cartouche Pico MSX qui pourrait apparemment facilement supporter ce nouveau mappeur. C'est une cartouche programmable donc elle n'a peut-être pas les mêmes contraintes qu'une cartouche "physique".
J'aimerais vraiment que ce nouveau format de mappeur soit faisable qu'avec des composants dédiés (comme les anciens mappeurs) mais il n'y a pour le moment personne dans les gens qui discutent du format, dont ce soit la spécialité.

Et sinon, pour ma question sur le fonctionnement de la sélection des slots lors des accès lecture/écriture aux données ? ^^

Est-ce que le MSX "filtre" les signaux et ne les envoies qu'aux slots sélectionnées à un instant T (les 4 slots correspondant aux 4 pages de l'espace mémoire), ou bien est que tous les slots reçoivent le signal et c'est eux qui choisissent de le traiter ou non ?
Edité par aoineko Le 08/12/2023 à 18h48


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 08/12/2023 à 20h05
pour répondre à ta question tous les slots reçoivent les signaux d'adresses et de données en même temps


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 08/12/2023 à 23h15
Même s'ils ne sont pas sélectionnés !? :|

Dans ce cas, si on a 2 cartouches ASCII-8 dans 2 slots différents, une écriture à l'adresse 6000h (adresse de switch du bank #0 pour le mappeur ASCII-8) va déclencher un changement de segment dans tous les mappeurs en même temps, même sans être sélectionné ? Wow... je ne savais pas.

Cela voudrait aussi dire que quand on écrit à l'adresse de changement de segment, cela écrirait aussi dans la RAM qui se trouve dans la même page !?
Dans le cas précédent, écrire en 6000h pour switcher un segment devrait aussi écrire en RAM à la même adresse (en page 1).

A moins que chaque périphérique filtre les accès en regardant lui-même s'il est sélectionné ou pas ? Edité par aoineko Le 08/12/2023 à 23h21


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 09/12/2023 à 08h41
je vois qu'il faut mettre la main dans le cambouis comme on dit

les signaux d'adresses et de données arrivent bien tous en même temps voir les bus en jaune pour adresses et bleu pour données

mais bien sur qu'il y a une sélection a l'intérieur des MSX pour ne pas adresser tous les périphériques en même temps par un décodage

j'ai choisit le synoptique simple d'un MSX1 VG8010

tout d'abord il y a une sélection des pages CHIP SELECTION et des slots SLOT SELECTION

exemple pour la rom il faut le signal SLOT0 /SLTSL0 et /CS01 page 0000h à 7FFFh

le décodage de la ram de ce MSX est simplifié car elle ne fait que 32K mais sur un mapper il y a un signal de SLOT SELECT

Citation :
Dans ce cas, si on a 2 cartouches ASCII-8 dans 2 slots différents, une écriture à l'adresse 6000h (adresse de switch du bank #0 pour le mappeur ASCII-8) va déclencher un changement de segment dans tous les mappeurs en même temps, même sans être sélectionné ? Wow... je ne savais pas.


heureusement non !!!
on voit que les signaux des 2 slots sont tous en parallèle a part le son et les SLOT1 /SLTSL1 et SLOT2 /SLTSL2
donc 2 cartouches vont bien recevoir les données et adresses en même temps mais seule sera active celle dont le slot est sélectionné

la deuxiéme chose a prendre en compte c'est le décodage des ports du MSX pour les périphériques

VDP 98h /Y3
PSG A0h /Y4
PPI A8h /Y5

ensuite les accès en lecture et écriture qui ne se font pas en même temps

exemple pour le VDP il faut la combinaison /RD ou /WR et /Y3 port 98h


msx_20efb


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 09/12/2023 à 09h43
Merci pour les explications. :top

Donc si je comprends bien, une cartouche "pourrait" intercepter tous les signaux en lecture/écriture, mais ne le fait pas si son /SLTSL n'est pas actif.
C'est bien ça ?

Je m'écarte un peu du sujet initial mais pour bien comprendre : si par ex., on voulait faire une cartouche de debug (dans un slot et une page donnée) qui renvoi vers le PC les accès en lecture/écriture de toutes les pages et sur de tous les slots, ça serait possible en ignorant /CS1, /CS2, /CS12 et /SLTSL ?
Ou est-ce que le filtre des signaux se fait au niveau du port cartouche et n'arrive pas à l'intérieur de la cartouche ? Edité par aoineko Le 09/12/2023 à 09h44


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 09/12/2023 à 14h02
il faudrait que cette cartouche de debug incorpore les décodages des slots donc simuler un PPI et les puces qui vont avec


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 05/03/2024 à 01h11
Salut,

Après pas mal de discussions avec certains membres de la communauté MSX, nous avons pu avancer sur les spécifications d'un nouveau format de mappeur pour MSX qui apporte quelques nouveautés pour les développeurs. Ces mappeurs s'appellent maintenant : NEO-8 (segment 8 Ko) et NEO-16 (segment de 16 Ko).

Les avantages :
- Des registres de segments sur 16-bits qui permettent de sélectionner jusqu'à 4096 segments (soit une taille max de 32 et 64 Mo).
- Un mappeur accessible sur la page 0 (0000-3FFFh), en plus des pages 1 et 2 pour offrir 24 KB d'espace contiguë aux développeurs.
- Des extensions possibles (un certains nombre de bits sont réservés pour permettre d'ajouter de nouvelle fonctionnalité comme le support de puce sonore, des options de debug, etc.)

Le détail des spécifications : https://aoineko.org/msxgl/index.php?title=NEO_mapper

Ce format de mappeur est déjà supporté par la cartouche MSX Pico (firmware 1.25) jusqu'à 12 Mo, et émulé par les émulateurs openMSX (version de développement) et Emulicious.

Des ROMs de test de toutes les tailles sont dispo là : https://aoineko.org/msx/targets/rom/
Elles ne font pas grand chose pour le moment, mais l'idée de base de ce projet c'est de permettre de créer des jeux comme Sales Discontinued au format cartouche.

On verra ce que les gens en ferons. :)


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5793

Le 05/03/2024 à 10h43
Impressionnant :siffle
Comme quoi quand on maîtrise son art ça a l'air si simple mais y a du taf derrière :glass:top

Un peu d'humour...... Bientôt faudra prévoir un système de refroidissement sur nos MSX :oups:D

----------mon cerveau divague--------

Si je comprend bien :
-un tel mapper utilise de la RAM traditionnel existante.
-c'est tout à fait imaginable par la suite une intégration d'un copro 16bits indépendant qui traiterais les données à la volé, genre DSP, scaler vidéo,...

Mode délire Off

En tout cas c'est passionnant ce que vous faites :) :tea



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2698

Le 07/03/2024 à 19h21
TurboSEB :
-un tel mapper utilise de la RAM traditionnel existante.


De base, les mappeurs NEO fonctionnent exactement comme les mappeurs ASCII ou Konami. Ils n'utilisent pas la RAM, mais permettent de changer pour chaque sous-page (ou "banque") du mappeur, quel segment de la ROM est visible par le Z80.

Les nouveautés c'est de permettre de choisir parmi un plus grand nombre de segments (d'où l'augmentation de taille possible) et d'avoir des sous-page (banque) sur la page mémoire 0 (celle où se trouve le BIOS).

TurboSEB :
-c'est tout à fait imaginable par la suite une intégration d'un copro 16bits indépendant qui traiterais les données à la volé, genre DSP, scaler vidéo,...


Tout à fait. Ça fait partie des idées qu'a donne Laurens (Grauw sur MRC) pour les possibles extensions. Dans le format, on a réservé 4 bits (sur 16) pour les extensions donc ça peut permettre d'ajouter plein de chose.

On pourrait d'ailleurs en utiliser aussi pour encore augmenter la capacité des ROM. Actuellement, avec 12 bits pour les numéros de segment, ça permet 64 Mo max (avec des segemnts de 16 Ko). Avec 1 bit de plus, on passe à 128 Mo, et avec un 2e, à 256 Mo ! Bon, je pense pas qu'on ait besoin d'autant. ^^
L'idée initiale du projet c'est de pouvoir avoir un jeu genre Sales Discontinued en cartouche. 64 Mo, ça suffit. :)

En tout cas c'est cool, y a déjà un projet de jeu en Screen 12 en développement sur mappeur NEO. J'ai hâte de voir ce que la communauté fera de ces nouvelles possibilités.


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie