MSX Village forum

La Place des Développeurs MegaRom, comment ça marche ? afin de poursuivre mon outil 'décompilateur'

Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 16/07/2015 à 11h42
Salut à tous,

Je voudrais savoir comment fonctionnent les megaroms ; quelles plages mémoire sont chargées au départ (16ko ou 32ko) et par la suite comment sont accédés les autres blocs ?

Mon outil dcmsx arrive à générer un code source compilable par asmsx pour la plupart des .BIN, .COM et .ROM en 16 ou 32 ko mais je manque d'information concernant les ROM de plus grande taille.

Je sais qu'il existe des différences suivant le type (ASCII/Konami/SCC).
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 16/07/2015 à 12h21
il y a 3 grandes familles de megaroms

KONAMI Banks 8K adresses de mappage : page fixe en 4000H , 6000H , 8000H , A000H
KONAMI SCC Banks 8 k adresses de mappage : 5000H , 7000H , 9000H , B000H
ASCII qui se divise en 2 :
Banks 8k adresses de mappage 6000H , 6800H , 7000H ,7800H
Banks 16k adresses de mappage 6000H , 7000H

les megaroms utilisent la plage mémoire de 4000H a BFFFH

ceux en banks de 8k utilisent 4 plages
4000H 5FFFH
6000H 7FFFH
8000H 9FFFH
A000H BFFFH

ceux en banks de 16 utilisent 2 plages
4000H 7FFFH
8000H BFFFH

pour mapper une page il suffit d'écrire sa valeur a l'adresse voulue
3E0D LD A,0DH
3200A0 LD(A000H),A

en fait la plage d'adresses à mapper est plus étendue mais j'ai mis celles utilisées courament


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 16/07/2015 à 12h53
Jipe :


pour mapper une page il suffit d'écrire sa valeur a l'adresse voulue

3E0D LD A,0DH

3200A0 LD(A000H),A





Je n'ai pas compris ton exemple ; pour moi 'mapper' cela veut dire rendre visible du z80 un ou plusieurs blocks de 16 ko (donc banks). Là tu écris 0Dh à l'adresse A000h. C'est quoi 0Dh ?
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 16/07/2015 à 13h20
une megarom de 128K en pages de 8K est divisée en 16 pages de 00H a 0Fh

le changement de page (mapper ) se fait directement par écriture dans une adresse

0DH est le numéro de la page

le fait de d'avoir l'adresse A000H veux dire que l'on a affaire a une KONAMI

on retrouve la page 0Dh dans la plage mémoire de A000H a BFFFH ( vue par le Z80 )

j'ai choisis le mapper KONAMI car l'adresse de l'écriture est la même que celle de la plage mémoire donc plus simple a comprendre

bien sur il faut être dans le bon slot : celui de la cartouche contenant le mapper


:noel
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 16/07/2015 à 14h38
126in1 = Megarom de 2048Ko avec pages de 16Ko (Screen Software)

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 4000h (page 0 à l'initialisation)
Plage 2 (8000h~BFFFh) : 4001h (page 1 à l'initialisation)


XXin1 = Megarom de 512Ko avec pages de 8Ko (Screen Software)

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : 4000h (page 0 à l'initialisation)
Plage 2 (6000h~7FFFh) : 4001h (page 1 à l'initialisation)
Plage 3 (8000h~9FFFh) : 4002h (page 2 à l'initialisation)
Plage 4 (A000h~BFFFh) : 4003h (page 3 à l'initialisation)


90in1 = Megarom de 1024Ko avec pages de 16Ko (Super Games 90)

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : Port d'éntrée/sortie 77h (page 0 à l'initialisation)
Plage 2a (8000h~9FFFh) et 2b (A000h~BFFFh) : Port d'entrée/sortie 77h (page 0 à l'initialisation)

Il n'y a pas d'adresse de changement de page mais le port d'entrée/sortie 77h à la place.

Format de la valeur :
Bit 0~5 = Numéro de page de 16Ko
Bit 6 = Si ce bit est à 0, la page ira dans la plage 1 et la page suivante ira dans la plage 2 (a et b). Si le bit 6 est à 1, les 8 premiers Ko de la page indiquée ira dans la plage 2b et les 8Ko restant dans la plage 2a. Le bit 6 est ignoré lorsque le bit 7 est à 0.
Bit 7 = Si ce bit est à 0, la page indiquée sera placée dans les deux banks et le Bit 6 sera ignoré. Si le bit 7 est à 1, c'est le bit 6 qui est pris en compte.

Autre description à vérifier :

It is mapped by a I/O port instead of mapped memory. The port is &H77

bits 0-5: selected 16KB page
bits 6-7: addressing mode...
00 = same page at 4000-7FFF and 8000-BFFF (normal mode)
01 = same page at 4000-7FFF and 8000-BFFF (normal mode)
10 = [page AND 3E] at 4000-7FFF, [page AND 3E OR 01] at 8000-BFFF (32KB mode)
11 = same page at 4000-7FFF and 8000-BFFF, but 8000-BFFF has high 8KB and low 8KB swapped (Namco mode)



ASC8 = Megarom avec pages de 8Ko

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : 6000h~67FFh (page 0 à l'initialisation) (se reflète sur la plage 0C000h~0DFFFh)
Plage 2 (6000h~7FFFh) : 6800h~6FFFh (page 0 à l'initialisation) (se reflète sur la plage 0E000h~0FFFFh)
Plage 3 (8000h~9FFFh) : 7000h~77FFh (page 0 à l'initialisation) (se reflète sur la plage 00000h~01FFFh)
Plage 4 (A000h~BFFFh) : 7800h~7FFFh (page 0 à l'initialisation) (se reflète sur la plage 02000h~03FFFh)

SRAM 8Ko pour Royal Blood, Wizardry et Xanadu
Plage 1 (4000h~5FFFh) (en lecture seule)
Plage 2 (6000h~7FFFh) (en lecture seule)
Plage 3 (8000h~9FFFh) (lecture / écriture)
Plage 4 (A000h~BFFFh) (lecture / écriture)

Format de la valeur pour Xanadu :
Bit 0~4 = Numéro de page
Bit 5 = Sélection de la SRAM si à 1 (ex: Xanadu)
Bit 6~7 = Inutilisé

Format de la valeur pour Royal Blood & Wizardry :
Bit 0~6 = Numéro de page
Bit 7 = Sélection de la SRAM si à 1

SRAM 8Ko pour les jeux KOEI-8 :
Plage 1 (4000h~5FFFh)

SRAM 8Ko pour les jeux KOEI-32 :
Plage 1 (8000h~BFFFh)


ASC16 = Megarom avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 6000h~67FFh (page 0 à l'initialisation)
Plage 2 (8000h~BFFFh) : 7000h~77FFh (page 0 à l'initialisation)

Hydlide 2 a une SRAM de 2Ko
Plage 1 (4000h~47FFh en lecture seule) (la page se répète de 4800h~4FFFh, 5000h~57FFh, etc... jusqu'à 7FFFh)
Plage 2 (8000h~87FFh en lecture / écriture) (la page se répète de 8800h~8FFFh, 9000h~97FFh, etc... jusqu'à BFFFh)

Format de la valeur pour Hydlide 2 :
Bit 0~3 = Numéro de page
Bit 4 = Sélection de la SRAM si à 1
Bit 5~7 = Inutilisé


Cross Blaim = Megarom de 64Ko avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : page 0 fixe
Plage 2 (8000h~BFFFh) : 4045h


Dooly = Rom de 32Ko sans page (Dooley The Little Dinosaur)

Adresses de changement de mode :
Plage (4000h~BFFFh) : 4000h~7EFFh & 7F01h ~7FFFh (mode 0 à l'initialisation)

Valeur lue :
En mode 0, la valeur lue = La valeur à l'adresse
En mode 1, la valeur lue = (valeur à l'adresse & F8h) or ((valeur à l'adresse x 4) & 4) or ((valeur à l'adresse / 2) & 3)
En mode 4, la valeur lue = (valeur à l'adresse & F8h) or ((valeur à l'adresse / 4) & 1) or ((valeur à l'adresse x 2) & 6)
En mode 3 et 7, la valeur lue = valeur à l'adresse or 7
En mode 2, 5 et 6,
si (la valeur à l'adresse) & 7 = 1, 2 ou 4 alors la valeur lue = F8h
si (la valeur à l'adresse) & 7 = 3, 5 ou 6 alors si le mode = 2 alors la valeur lue = (valeur à l'adresse & F8h) or ((valeur à l'adresse x 4) & 4) or (((valeur à l'adresse / 2) & 3) xor 7)
si le mode = 5 alors la valeur lue = (valeur à l'adresse & 7)
si le mode = 6 alors la valeur lue = (valeur à l'adresse & F8h) or ((valeur à l'adresse / 4) & 1) or (((valeur à l'adresse x 2) & 6) xor 7)


ESE-RAM ASC16 = Mega-sram avec mapper de type ASC16.

Le bit 7 de l'adresse 6000h permet d'activer le mode RAM sur la plage 4000h-5FFFh. (Mode Rom par défaut)
Le bit 7 de l'adresse 7000h permet d'activer le mode RAM sur la plage 8000h-BFFFh. (Mode Rom par défaut)


ESE-RAM ASC8 = Mega-sram avec mapper de type ASC8.

Le bit 7 de l'adresse 6000h permet d'activer le mode RAM sur la plage 4000h-5FFFh. (Mode Rom par défaut)
Le bit 7 de l'adresse 7000h permet d'activer le mode RAM sur la plage 8000h-9FFFh. (Mode Rom par défaut)
Le bit 7 de l'adresse 7800h permet d'activer le mode RAM sur la plage A000h-BFFFh. (Mode Rom par défaut)


ESE-RAM SCC = Mega-sram avec mapper de type SCC plus l'adresse 7FFEh ou 7FFFh qui permet d'activer le mode RAM.

Le bit 4 de l'adresse 7FFEh ou 7FFFh permet d'activer le mode RAM sur la plage 4000h-7FFDh. (Mode Rom par défaut)


FMPAC = Megarom avec pages de 16Ko

Adresses de changement de page :
Plage (4000h~7FFFh) :
5FFEh = Ecriture 4Dh pour activer la SRAM sinon 0
5FFFh = Ecriture 69h pour activer la SRAM sinon 0
7FF4h = Numéro de registre du YM-2413 (écriture seule)
7FF5h = Ecriture des données
7FF6h = Activer l'OPLL (lecture / écriture)
7FF7h = ROM page (lecture / écriture)

SRAM 8Ko:
Plage (4000h~5FFFh)


Generic8 = Megarom avec pages de 8Ko

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : 4000h (page 0 à l'initialisation)
Plage 2 (6000h~7FFFh) : 6000h (page 1 à l'initialisation)
Plage 3 (8000h~9FFFh) : 8000h (page 2 à l'initialisation)
Plage 4 (A000h~BFFFh) : A000h (page 3 à l'initialisation)


Generic16 = Megarom avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 4000h~47FFh (page 0 à l'initialisation) (reflets : 05000h~077FFh, 06000h~067FFh, 07000h~077FFh)
Plage 2 (8000h~BFFFh) : 8000h~87FFh (page 1 à l'initialisation) (reflets : 09000h~097FFh, 0A000h~0A7FFh, 0B000h~0B7FFh)


Goonies2 = Megarom avec pages de 8Ko (The Goonies 'R' Good Enough)

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : 5000h~57FFh (seule 5000h est utilisée) (page 0 à l'initialisation)
Plage 2 (6000h~7FFFh) : 7000h~77FFh (seule 7000h est utilisée) (page 1 à l'initialisation)
Plage 3 (8000h~9FFFh) : 9000h~97FFh (seule 9000h est utilisée) (page 2 à l'initialisation)
Plage 4 (A000h~BFFFh) : B000h~B7FFh (seule B000h est utilisée) (page 3 à l'initialisation)

La cartouche contient aussi un PSG AY-3-8910 émulé par un FPGA accessible par les ports d'entrée suivants.

010h = Port d'écriture aux registres
011h = Port d'écriture des données
012h = Port de lecture des données (Inutilisé dans The Goonies 'R' Good Enough)


HarryFox16 = Megarom de 64Ko avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 6000h~6FFFh (Page 0 à l'initialisation)
Plage 2 (8000h~BFFFh) : 7000h~7FFFh (Page 1 à l'initialisation)

Valeur = 0 ou 1 (page 0 /2 pour la plage 6000h~6FFFh ou page 1/3 pour l'autre plage)


Konami3 = Megarom avec pages de 8Ko (Game master 2)

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : Toujours page 0
Plage 2 (6000h~7FFFh) : 6800h~6FFFh (seule 6800h est utilisée)
Plage 3 (8000h~9FFFh) : 7000h~8FFFh (seule 7000h est utilisée)
Plage 4 (A000h~BFFFh) : 7800h~AFFFh (seule 7800h est utilisée)

Le Game master 2 a une SRAM de 8Ko (2 pages)
Plage 1 : ne peut être utilisé
Plage 2 (7000h~7FFFh)
Plage 3 (9000h~9FFFh)
Plage 4 (B000h~BFFFh)

Format de la valeur pour le Game master 2 :
Bit 0~3 = Numéro de page
Bit 4 = 1 activer la SRAM
Bit 5 = page SRAM
Bit 6~7 = Inutilisé


Konami4 = Megarom avec pages de 8Ko

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : page 0 fixe (se reflète sur la plage 0000h~1FFFh)
Plage 2 (6000h~7FFFh) : 6000h~7FFFh (seule 6000h est utilisée) (page 1 à l'initialisation) (se reflète sur la plage 2000h~3FFFh)
Plage 3 (8000h~9FFFh) : 8000h~9FFFh (seule 8000h est utilisée) (page x à l'initialisation)
Plage 4 (A000h~BFFFh) : A000h~BFFFh (seule A000h est utilisée) (page x à l'initialisation)

Hai no Majutsushi (RC-765) contient un convertisseur numérique / analogique sur 8bit. Chaque valeurs (0=-128/ FFh=+128) à envoyer doivent être écrite à une adresse 5000h~5FFFh.


Konami5 = Megarom avec pages de 8Ko (Mapper de type SCC)

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : 5000h~57FFh (page 0 à l'initialisation) (se reflète sur la plage 0C000h~0DFFFh)
Plage 2 (6000h~7FFFh) : 7000h~77FFh (page 1 à l'initialisation) (se reflète sur la plage 0E000h~0FFFFh)
Plage 3 (8000h~9FFFh) : 9000h~97FFh (page 2 à l'initialisation) (se reflète sur la plage 00000h~01FFFh)
Plage 4 (A000h~BFFFh) : B000h~B7FFh (page 3 à l'initialisation) (se reflète sur la plage 02000h~03FFFh)

La plage 3 se reflète sur plage 0000h~1FFFh et la plage 1 sur 2000h~3FFFh.

Format de la valeur pour les megarom SCC :
- Bits 0~5 = Numéro de page. Si tous à 1 dans la plage 3, l'accès aux registres de l'SCC devient possible.
- Bits 6~7 = Inutilisés

Format de la valeur pour les megarom SCC+ :
- Bits 0~5 = Numéro de page. Si tous à 1 dans la plage 3 (et bit 7 à 0), l'accès aux registres de l'SCC devient possible.
- Bit 6 = Inutilisé
- Bit 7 = Si à 1, la plage 4 permettra d'accéder aux registres de l'SCC+ (actif seulement en mode ROM). Inutilisé dans les banks 1~3.

Gestion du son en mode SCC :

9800h~981Fh : Forme de l'enveloppe de la voix 1 sur 32 octets signés (bit7 à 1 pour valeur négative)
9820h~983Fh : Forme de l'enveloppe de la voix 2 sur 32 octets signés (bit7 à 1 pour valeur négative)
9840h~985Fh : Forme de l'enveloppe de la voix 3 sur 32 octets signés (bit7 à 1 pour valeur négative)
9860h~987Fh : Forme de l'enveloppe de la voix 4 et 5 sur 32 octets signés (bit7 à 1 pour valeur négative)
9880h~9881h : Fréquence de la voix 1 sur 12bit
9882h~9883h : Fréquence de la voix 2 sur 12bit
9884h~9885h : Fréquence de la voix 3 sur 12bit
9886h~9887h : Fréquence de la voix 4 sur 12bit
9888h~9889h : Fréquence de la voix 5 sur 12bit
988Ah : Volume de la voix 1 (les bits 4~7 sont ignorés)
988Bh : Volume de la voix 2 (les bits 4~7 sont ignorés)
988Ch : Volume de la voix 3 (les bits 4~7 sont ignorés)
988Dh : Volume de la voix 4 (les bits 4~7 sont ignorés)
988Eh : Volume de la voix 5 (les bits 4~7 sont ignorés)
988Fh : Commutateur on/off de la voix 1 à 5
9890h~989Fh : Pareil que 9880h à 988Fh
98A0h~98DFh : Inutilisé
98E0h~98FFh : Registre de déformation (Inutilisé par Konami)

Fréquence = Fréquence du CPU / (32 * (tempo + 1)

Gestion du son en mode SCC+ :

B800h~B81Fh : Forme de l'enveloppe de la voix 1 sur 32 octets signés (bit7 à 1 pour valeur négative)
B820h~B83Fh : Forme de l'enveloppe de la voix 2 sur 32 octets signés (bit7 à 1 pour valeur négative)
B840h~B85Fh : Forme de l'enveloppe de la voix 3 sur 32 octets signés (bit7 à 1 pour valeur négative)
B860h~B87Fh : Forme de l'enveloppe de la voix 4 sur 32 octets signés (bit7 à 1 pour valeur négative)
B880h~B89Fh : Forme de l'enveloppe de la voix 5 sur 32 octets signés (bit7 à 1 pour valeur négative)
B8A0h~B8A1h : Fréquence de la voix 1 sur 12bit
B8A2h~B8A3h : Fréquence de la voix 2 sur 12bit
B8A4h~B8A5h : Fréquence de la voix 3 sur 12bit
B8A6h~B8A7h : Fréquence de la voix 4 sur 12bit
B8A8h~B8A9h : Fréquence de la voix 5 sur 12bit
B8AAh : Volume de la voix 1 (les bits 4~7 sont ignorés)
B8ABh : Volume de la voix 2 (les bits 4~7 sont ignorés)
B8ACh : Volume de la voix 3 (les bits 4~7 sont ignorés)
B8ADh : Volume de la voix 4 (les bits 4~7 sont ignorés)
B8AEh : Volume de la voix 5 (les bits 4~7 sont ignorés)
B8AFh : Commutateur on/off de la voix 1 à 5
B8B0h~B8BFh : Pareil que B8A0h à B8AFh
B8C0h~B8DFh : Registre de déformation (Inutilisé par Konami)
B8E0h~B8FFh : Inutilisé

Registre de mode :
Ce registre sert à sélectionner le mode SCC ou SCC+ ainsi que le mode RAM ou ROM des banks. Toujours accessible à l'adresse suivante.

BFFEh ou BFFFh :
Bit 0 = 1 pour mettre la plage 0 en mode RAM, 0 pour le mode ROM
Bit 1 = 1 pour mettre la plage 1 en mode RAM, 0 pour le mode ROM
Bit 2 = 1 pour mettre la plage 2 en mode RAM, 0 pour le mode ROM
Bit 3 = Inutilisé
Bit 4 = 1 pour mettre tous les Plage en mode RAM, 0 pour le mode ROM
Bit 5 = 1 pour le mode SCC+, 0 pour le mode SCC
Bits 6~7 = Inutilisés

Les adresses BFFEh et BFFFh ne sont pas utilisable en tant que RAM


MSXDOS2 = Megarom de 64Ko avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 6000h (MSXDOS 2 officiel) ou 7FFFh (MSXDOS 2 non-officiel)


Playball = Rom de 32Ko sans page + synthétiseur vocal ADPCM (NEC UPD7756C) munie d'un convertisseur analogique / numérique sur 9bit pour enregistrer des sons avec une ROM interne de 32Ko.

Adresses d'écriture au registre :
BFFFh

Format de la valeur :
00h = Lire "strike"
01h = Lire "ball"
02h = Lire "foul"
03h = Lire "safe"
04h = Lire "out"
05h = Lire le son lorsque vous démarrez le jeu
06h = Lire le son lorsque vous frappez la balle avec la raque
07h = Lire le son lorsque la balle est attrapée par l'homme derrière le batteur
08h = Lire "game set" (fin du jeu)
09h = les hommes peuvent se promener librement après la pâte est frappé par la balle
0Ah =the batter gets hit by the ball

Plus d'info : http://fr.msx.org/forumtopic975.html


Rtype = Megarom de 384Ko avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : Page 1Eh fixe
Plage 2 (8000h~BFFFh) : 7000h~7FFFh (Seules 7000h et 7800h sont utilisées)


Super Lode Runner = Megarom de 128Ko avec pages de 16Ko

Adresses de changement de page :
Plage 1 (8000h~BFFFh) : 0000h


Super Pierrot = Megarom avec pages de 16Ko

Adresses de changement de page :
Plage 1 (4000h~7FFFh) : 4000h~7FFFh (page 0 à l'initialisation)
Plage 2 (8000h~BFFFh) : 8000h~BFFFh (page 0 à l'initialisation)


Zemina = Megarom avec pages de 8Ko

Adresses de changement de page :
Plage 1 (4000h~5FFFh) : page 0 fixe (se reflète sur la plage 0000h~1FFFh)
Plage 2 (6000h~7FFFh) : 6000h~7FFFh (page 1 à l'initialisation) (se reflète sur 2000h~3FFFh)
Plage 3 (8000h~9FFFh) : 8000h~9FFFh (page 2 à l'initialisation)
Plage 4 (A000h~BFFFh) : A000h~BFFFh (page 3 à l'initialisation) Edité par GDX Le 17/07/2015 à 02h02
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 16/07/2015 à 14h48
heureusement que tu n'a pas donné tout ça en premier car le pauvre sylvain aurait été perdu

cela dis c'est une bonne chose d'avoir toutes ces infos regroupées au même endroit :) :top


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 16/07/2015 à 15h04
Merci

(désolé pour cette question, je l'ai posée en même temps que GDX envoyait son post, mais je la laisse quand même...)

OK et à l'initialisation on se trouve dans cette configuration ? :

banks de 8k sur 4 plages
4000H 5FFFH => bank 0
6000H 7FFFH => bank 1
8000H 9FFFH => bank 2
A000H BFFFH => bank 3

banks de 16k sur 2 plages
4000H 7FFFH => bank 0
8000H BFFFH => bank 1 Edité par Visiteur Le 16/07/2015 à 15h55
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 16/07/2015 à 15h10
dans les mégaroms ASCII il y a un reflet a l'init

banks de 8k sur 4 plages
4000H 5FFFH => bank 0
6000H 7FFFH => bank 1
8000H 9FFFH => bank 0
A000H BFFFH => bank 1

banks de 16k sur 2 plages
4000H 7FFFH => bank 0
8000H BFFFH => bank 0

certains jeux se servent de ce reflet pour démarer en 4000H et ensuite sauter dans les adresses 8000H ;)


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 16/07/2015 à 16h06
GDX :


Konami4 = Megarom avec pages de 8Ko



Adresses de changement de page :

Plage 1 (4000h ~ 5FFFh) : Page 00h fixe (la plage 1 se reflète dans la plage 0)

Plage 2 (6000h ~ 7FFFh) : 6000h ~ 7FFFh (seule 6000h est utilisée) (page 01h à l'initialisation)

Plage 3 (8000h ~ 9FFFh) : 8000h ~ 9FFFh (seule 8000h est utilisée) (page x à l'initialisation.)

Plage 4 (A000h ~ BFFFh) : A000h ~ BFFFh (seule A000h est utilisée) (page x à l'initialisation)





(la plage 1 se reflète dans la plage 0) comme on ne parle pas de "plage 0" je suppose qu'il faut lire "la page 1 se reflète dans la page 0)" ? Cela veut-il dire que la bank 1 contient les mêmes données que la bank 0 ?



A moins que cela soit plutôt :

(Cette page se reflète sur la plage 0C000h~0DFFFh) comme pour Konami5 ! Edité par Visiteur Le 16/07/2015 à 16h09
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 17/07/2015 à 00h06
sylvain :
(la plage 1 se reflète dans la plage 0) comme on ne parle pas de "plage 0" je suppose qu'il faut lire "la page 1 se reflète dans la page 0)" ? Cela veut-il dire que la bank 1 contient les mêmes données que la bank 0 ?


C'est mal expliqué en effet et il manque un reflet. L'explication est sur le post suivant:



http://www.msxvillage.fr/forum/topic.php?id=1001&pt=2#m18640



Je reédite mon message plus haut... Edité par GDX Le 17/07/2015 à 01h28
   
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1501

Le 17/07/2015 à 12h44
Un petit copier-coller dans le wiki (si ce n'est déjà fait :D) ?


MSX un jour, MSX toujours ! :D
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 17/07/2015 à 13h33
Quand je vois le code assembleur des jeux Konami (par exemple, non je ne fais pas une fixation!), je me dis qu'à l'évidence les développeurs avaient un atelier de génie logiciel, et ne codaient pas en assembleur.

Est-ce que quelque-chose a transpiré, je veux dire, est-ce que l'on sait quelque-chose sur leurs outils et le langage utilisé à l'époque ?

Ha... ben là ils disent que c'était en assembleur www.msx.org/forum/msx-talk/general-discussion/konami-development-tools-revealed Edité par Visiteur Le 17/07/2015 à 13h41
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 17/07/2015 à 13h52
je me rappelle d'un post ou l'on voyait une station de développement qui n'avait rien a voir avec un MSX


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 17/07/2015 à 13h58
Jipe :
je me rappelle d'un post ou l'on voyait une station de développement qui n'avait rien a voir avec un MSX




Oui un HP 64000



Et, à priori, les outils utilisés :



64252 - Z80 Emulation: 64252A v 2406, 64252-12004,

64823D1/2 - Z80/NSC800 Pascal Compiler: 64823A r 2.10, 64823-12003 (2 discs),

64824D1/2 - Z80/NSC800 C Compiler: 64824A r 2.20, 64824-12003 (2 discs),

64842 - Z80/NSC800 Assembler/Linker: 64842A v 2301, 64842-12010, Edité par Visiteur Le 17/07/2015 à 14h02
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 17/07/2015 à 14h01
j'avais retouvé ça : http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=92843
mais pas la photo en N/B d'époque des gars de chez konami :(


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