MSX Village forum

La Place des Développeurs MSX2 MEMORY MAPPER et ROM DE PLUS 32 Ko ???

6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 11/07/2018 à 18h11
Sur MSX2 comment est reconnu une ROM 32 Ko en SLOT1 ???

J'ai crée une rom de test commencant en 4000h mais à partir de 8000h elle n'est plus visible dans blue msx en tout cas !!!

le mapper pour un 8250F est toujours d'après blue msx :

0==FB
1==FA
2==F9
3==F8

????

Je m'attendais à voir en 1 et 2 les mêmes valeurs ??

y a t'il quelque chose de particulier pour basculer la partie 2 sur la zone cartouche SLOt1 ???? Edité par 6502man Le 28/07/2018 à 17h16


Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 11/07/2018 à 19h03
sur un vrai msx la rom utilise le signal /cs12 ça veux dire quelle commence en 4000 et termine en BFFF

BlueMSX n'est pas trés performant pour voir les slots il s'arrête a 7FFF !!

utilise SHEM dans une config MSX2

tu le trouveras ici : http://msxvillage.fr/wiki/wiki.php?title=utilitaires-bien-pratiques-pour-msx


:noel
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 11/07/2018 à 22h48
Merci Jipe, je vais regarder SHEM ;)



Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 28/07/2018 à 17h34
Je reviens sur ce sujet concernant les mappers et notamment comment BlueMsx reconnait le type de mapper ???

Et surtout comment doit être organiser le binaire ".ROM" ????

D'après ce que j'ai trouvé comme infos sur le net cette configuration irait très bien pour ce que je veux faire :
Code :

Generic 8
Mapper based on a mix of Konami's MegaROMs. It is used by some emulators. If you use blueMSX, you need to select the Konami Generic mapper.

Bank (8kB)    Switching address    Initial Page
4000h~5FFFh    4000h (mirrors: 4001h~47FFh, 05000h~077FFh)    0
6000h~7FFFh    6000h (mirrors: 6001h~67FFh, 07000h~077FFh)    1
8000h~9FFFh    8000h (mirrors: 8001h~87FFh, 09000h~097FFh)    2
A000h~BFFFh    A000h (mirrors: A001h~A7FFh, 0B000h~0B7FFh)    3


Si j'ai bien compris il suffit d’écrire le numéro de page à l'adresse 4000h ou 6000h ou 8000h ou A000h pour commuter la zone concernée ?

Mais est ce que le binaire est partitionné comme ca pour une cartouche 64Ko :
Code :

OFFSET du binaire    PAGE       Adresse CPU
-----------------    ----       ---------------
0000h-1FFFh        : page 0      4000h~5FFFh
2000h-3FFFh        : page 0      6000h~7FFFh
4000h-5FFFh        : page 0      8000h~9FFFh
6000h-7FFFh        : page 0      A000h~BFFFh

8000h-9FFFh        : page 1      4000h~5FFFh
A000h-BFFFh        : page 1      6000h~7FFFh
C000h-DFFFh        : page 1      8000h~9FFFh
E000h-EFFFh        : page 1      A000h~BFFFh



Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 28/07/2018 à 18h03
une cartouche 64k n'a normalemant pas de mapper , les 64k de la rom sont en ligne dans un slot par pages de 16k non commutables

seules quelques megarom de 64k utilisent un mapper

il faut voir a ce moment une mémoire en tranches de 8k de 4000 a BFFF mais c'est le programme qui affecte les banks dans la page 4000 qui est fixe

un mapper de type generic mapper konami peux sans probléme adresser une cartouche de 512k


:noel
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 28/07/2018 à 19h37
Je disait 64ko comme exemple mais ont peux prendre 128K ou 256K comme exemple je veux juste crée un binaire qui soit reconnu par bluemsx et pouvoir commuter les pages ;)



Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1494

Le 29/07/2018 à 18h21
Je ne comprends pas ta question.
Qu'est-ce que tu appelles l'offset du binaire ?

Ton code doit être stocké avec comme adresse de départ l'adresse de ta page une fois qu'elle sera commutée.
Donc si ta page a comme destination finale A000h, ton code doit commencer en A000h.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 29/07/2018 à 19h51
Désolé si j'ai pas était clair dans ma question :( :fou

Finalement j'ai réussi à faire un binaire .ROM de type mapper Konami 4Ko ;)

Avec les adresses de commutation de page :
Code :
Bank 1   NA
Bank 2    6000h
Bank 3    8000h    
Bank 4    A000h


Pour une ROM de 64 Ko ca ce réparti comme ca:
Code :

   Offset   Bits
     ROM    Mapper
    $0000      0
    $2000      1
    $4000      2
    $6000      3
    $8000      4
    $A000      5
    $C000      6
    $E000      7


Par contre j'ai pas réussi à commuter les pages au dela des premiers 32Ko du binaire avec un binaire de type mapper ASCII 8K ????
mais bon c'est pas grave puisque j'y arrive très bien avec un mapper de type Konami 8K :)


Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 29/07/2018 à 22h15
pour les mapper ASCII les adresses de commutation sont 6000 6800 7000 7800


:noel
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 29/07/2018 à 22h25
Oui c'est ce que j'avais pris comme adresse de commutation mais je ne suis pas arrivé à commuter en mapper ASCII !!!

de toutes façon vu que ca fonctionne très bien en mode Konami je reste sur ce type de mapper ;)


Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 29/07/2018 à 22h31
il faut initialiser les pages dans la page 4000


:noel
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 29/07/2018 à 22h36
Comment ce fait l’initialisation ?


Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1494

Le 29/07/2018 à 22h48


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 30/07/2018 à 08h54
Voilà un façon de faire :

Code TEXT :
 
PGSTART:  DI
          LD SP,0F0F0h ; positionne la pile en F0F0h (l'adresse pile est décrémentée à chaque PUSH, incrémentée à chaque POP)
          CALL 00138h  ; RSLREG Lecture du registre des Slot primaires / bits 6-7 slot plage 3, bits 4-5 slot plage 2, bits 2-3 slot plage 1, bits 0-1 slot plage 0
          RRCA
          RRCA         ; deux décalages à droite
          AND 003h     ; on ne conserve que l'information du slot plage 1
          LD C,A       ; que l'on charge dans C
          LD B,000h
          LD HL,0FCC1h ; EXPTBL Indicateur de Slot étendu pour chaque Slot primaire
          ADD HL,BC    ; se place sur l'information slot plage 1
          LD A,[HL]    ; recupere l'info dans A
          AND 080h     ; ne conserve que le bit de poids le plus fort = Le bit 7 de ces variables est à 1 lorsque le Slot correspondant est étendu en Slot secondaires.
          OR C         ; replace l'info de slot plage 1 dans A
          LD C,A       ; charge l'info dans C
          INC HL
          INC HL
          INC HL
          INC HL       ; se place sur l'information slot secondaire plage 1
          LD A,[HL]
          AND 00Ch
          OR C
          LD H,080h    ;
          CALL 00024h  ; ENASLT sélectionne le slot (HL=plage à sélectionner, A = Numéro du Slot sous la forme F000SSPP)
          LD HL,0C000h
          LD DE,0C001h
          LD BC,030EFh
          LD [HL],000h
          LDIR         ; mise à 0 de la mémoire à partir de C000 jusqu'à C000+30EF = F0EF
; positionnement des pages ROM 
          PUSH HL           ; sauvegarde HL
          LD HL,0F0F1h      ; adresse de sauvegarde de la page en cours en 06000h
          LD A,001h
          LD [LD_6000],A    ; charge la page ROM 1 en 06000h
          LD [HL],A         ; enregistre le numéro page ROM 06000h en 0F0F1h
          INC A
          LD [LD_8000],A    ; charge la page ROM 2 en 08000h
          INC HL            ; enregistre le numéro page ROM 08000h en 0F0F2h
          LD [HL],A
          INC A
          LD [LP_A000],A    ; charge la page ROM 3 en 0A000h
          INC HL            ; enregistre le numéro page ROM 0A000h en 0F0F3h
          LD [HL],A
          POP HL            ; resitue HL
          EI                ; active les interruptions
 
 
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 30/07/2018 à 17h17
Merci pour les infos ;)

Pour le code c'est pour un mapper Konami et j'ai fait plus simple :

Code :

Main
    DI
    LD A,$D4           ; SLOT Enable
    OUT ($A8),A        ; active la zone $8000-bfff 

    LD A,$01
    LD ($6000),A
    
    LD A,$02
    LD ($8000),A
    
    LD A,$03
    LD ($A000),A

    .....



Pour un mapper Ascii 8K je n'ai pas trouvé d'info concernant l'initialisation dont parle Jipe, mais j'ai une idée que je vais examiner ...


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