MSX Village forum

La Place des Développeurs FUSION-C Codez en C pour MSX les doigts dans le nez !

Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 10/02/2019 à 09h58

Reprise du message précédent

suite a mes tests sur un vrai MSX ..

machine de test : MSX2 NMS8250 128ko/128ko et MSX2+ SANYO PHC35+FDD 64ko/128ko

le RAM MAPPER deconne il trouve plein de slot et de bank alors qu'il n'y as que 128ko dans le slot 3.2 (#8B) bizarre et pour le 2+ c'est pareil ???

concernant le VDP c'est openMSX qui semble le plus proche , du MSX REEL .
BLUEMSX fait un scrolling ??? c'est ce que je lui ai demander j'ai verifier dans le book Pratique du MSX le registre 23 sert pour ca !!! maintenant les 2 ne font pas le meme resultat ???

y as un bug quelque part ??



TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 10/02/2019 à 10h47
@BastionRebel / Je suis bien content que tu te mette au C... Ben ca n'a pas l'air d'être si chinois que ça... :)


Par contre ne je sais pas bien si ce que je vois à l'écran, avec ton fichier BR.COM c'est bien ce que tu souhaitais faire ou pas ?
Peux tu poster ton code source, car je ne comprend pas bien quel problème tu soulèves...

Pour l'utilisation des fonctions Mapper je re-précise qu'il faut être sous MSX-DOS 2 , avec une ROM MSX-DOS 2, sinon les routines ne fonctionnent pas.


banniere-ericb59e
Site web    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 10/02/2019 à 13h08
voila le code ...



//
// Fusion-C
// My First Program in C
//
//#include "fusion-c/header/vars_msxSystem.h"
//#include "fusion-c/header/vars_msxBios.h"
//#include "fusion-c/header/vars_msxDos.h"
#include "fusion-c/header/msx_fusion.h"
#include "fusion-c/header/vdp_graph2.h"
#include "fusion-c/header/rammapper.h"
#include <stdio.h>

int i;
int w;
int s;
int x;
int y;

MAPPERINFOBLOCK *table;

void ft_manette(void){
char joy;

joy=JoystickRead(0);

switch (joy)
{
// haut
case 1:
if (y>5)
{
y--;
}
break;
// droite
case 3:
if (x<78)
{
x++;
}
break;
// bas
case 5:
if (y<20)
{
y++;
}
break;
// gauche
case 7:
if (x>1)
{
x--;
}
break;
}
}





void main(void)
{

x=40;
y=10;

Screen(0);
Locate(0,0);
if (ReadMSXtype()==0)
{
Width(40);
Print("MSX 1");
w=40;
}
if (ReadMSXtype()==1)
{
Width(80);
Print("MSX 2");
w=80;
}
if (ReadMSXtype()==2)
{
Width(80);
Print("MSX 2+");
w=80;
}
if (ReadMSXtype()==3)
{
Width(80);
Print("Turbo R");
w=80;
Locate(12,0);
if (GetCPU()==0)
{
Print("Z80");
}
if (GetCPU()==1)
{
Print("R800 ROM");
}
if (GetCPU()==2)
{
Print("R800 RAM");
}
}

Locate(0,1);

if (vMSX()==1)
{
Print("VDP MSX1");
}
if (vMSX()==2)
{
Print("VDP MSX2");
}

Locate(0,16);

InitRamMapperInfo(4);

table = _GetRamMapperBaseTable();
while (table->slot!=0)
{
printf("Slot #%x \r\n",table->slot);
printf("16KB Segments #%x \r\n",table->number16KBSegments);
printf("Free 16KB Segments #%x \r\n",table->numberFree16KBSegments);
printf("Allocated System 16KB Segments #%x \r\n",table->numberAllocatedSystem16KBSegments);
printf("User 16KB Segments #%x \r\n",table->numberUser16KBSegments);
printf("===================== \r\n");
table = table + 1; //one record (8 bytes per record)

}
for (s=0; s<20; s++){
for (i=0; i<8; i++) {
Locate(15,0);
printf("Cmp:%d",s);
FillVram((w*3),204,(w*7));
FillVram((w*10),219,(w*4));
Locate(20,i+15);
Print("oooooooooOOOOOOOOOOO");
FillVram((w*10),32,(w*4));
FillVram((w*3),203,(w*7));
Locate(20,i+15);
Print("OOOOOOOOOooooooooooo");
VDPwrite(23,i);
}
}

VDPwrite(23,0);

for (i=0; i<25; i++)
{
Locate(50,i);
printf("VDP%d",i);
Locate(55,i);
printf("=%d",VDPstatus(i));
}

for (i=0; i<1000; i++)
{
ft_manette();
Locate(x,y);
Print("X");
Locate(x,y);
Print(" ");
Locate(25,0);
printf("x=%d",x);
Locate(30,0);
printf("y=%d",y);
Locate(40,0);
printf("T=%d",i);
}
Locate(0,1);
//fin routine
}



pour le MAPPER Ok je comprend mieux...

pour le Prob VDP en faite quand tu essai sur openMSX tu as une chose et sur bluemsx tu en as une autre ??? l'un scrolle le txt et l'autre tous l'ecran !!


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 10/02/2019 à 13h24
Une video de prisonnier III (ou j'en suis) sur un vrais MSX II !
Faut que je regarde d'ou bien le décalage xd

Merci JP, Et goonies.


Il faut donner à manger à nos machines !
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 10/02/2019 à 13h27
normal

que sur blue je n'ai pas les meme config !!!

dans le fichier compil
:Emulator
openMSX\openmsx.exe -machine Philips_NMS_8255 -ext msxdos2 -diska dsk\

le NMS8255 a une ext MSXDOS2 !!!


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 10/02/2019 à 14h17
Monos :
Une video de prisonnier III (ou j'en suis) sur un vrais MSX II !
Faut que je regarde d'ou bien le décalage xd

Merci JP, Et goonies.


pour ton decalage y as une fonction sous basic

fais un color 15,4,1 pour voir le bord suivant le screen ou tu est !!

setadjust(x,y) les 2 entres -7 et +7

quand le screen est ok

setscreen pour sauvegarder!!!

si la pile marche encore sinon y as pas d'enregistrement en de conservation des parametres !!!



TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10318

Le 10/02/2019 à 14h40
sur le sony c'est une batterie : pas dis quelle soit chargée ou encore bonne
sinon regarde si le set adjust est présent dans la bibliothéque C de éric


:noel
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 10/02/2019 à 15h20
Problème réglé.
La batterie semble fonctionner.
Merci.


Il faut donner à manger à nos machines !
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 10/02/2019 à 15h45
@bastion rebel
Citation :
pour le Prob VDP en faite quand tu essai sur openMSX tu as une chose et sur bluemsx tu en as une autre ??? l'un scrolle le txt et l'autre tous l'ecran !!


La routine de scroll Hardware Vertical de FUSION-C : SetSrollV, utilises le port 23 du VDP. Donc je peux te dire qu'il n'y a pas de bug à ce niveau là. Par contre, tu l'utilises sur un mode écran Texte Screen 0... Je me pose la question de savoir du résultat attendu dans ce mode écran ? et de son interpretation dans un émulateur?

Je viens de tester ton programme mais en passant en mode Screen8, et tu as bien un scroll vertical.


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 10/02/2019 à 15h46
Monos :
Une video de prisonnier III (ou j'en suis) sur un vrais MSX II !
Faut que je regarde d'ou bien le décalage xd

Merci JP, Et goonies.



TOP ! Ca prend forme ton jeu :top


banniere-ericb59e
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 10/02/2019 à 17h19
Merci oui, cette semaine j'aimerais mettre ne place le choix des commande enfin que ça soit lié dans le jeu !=> C'est fait xd
Afficher à "droite" l'action que le joueur doit faire.
Cela serais cool pour la démo alpha que j'ai envie de publier la semaine prochaine ! Edité par Monos Le 10/02/2019 à 19h36


Il faut donner à manger à nos machines !
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 17/02/2019 à 19h35
Je n'arrive pas à faire fonctionner la fonctio LMMM.
J'arrive à faire ce que je veux avec ta fonction screencopy qui utilise flmmm mais la simple fonction nada.


Il faut donner à manger à nos machines !
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 17/02/2019 à 20h18
Attention tu parles de 2 fonctions différentes là :
LMMM et fLMMM

fLMMM est la plus sympa, elle nécessite l'initialisation de la structure MMTASK
qui contient ces éléments :
Code C :
typedef struct {
    unsigned int X;        // source X (0 to 511)
    unsigned int Y;        // source Y (0 to 1023)
    unsigned int X2;    // destination X (0 to 511)
    unsigned int Y2;    // destination Y (0 to 1023)
    unsigned int DX;     // width (0 to 511)
    unsigned int DY;     // height (0 to 511)
    unsigned char s0;    // set to 0, dummy 1st empty byte sent to chip
    unsigned char DI;    // set to 0 (b), works well from left to right
    unsigned char LOP;    // 0 to copy (a), Logical+Operation ("or"| definitions)    
} MMMtask;


Attention à la subtilité... avec fLMMM on travaille en mode coordonnées.
En screen 8, tu as deux pages de VRAM qui font chacune 256 x 256 pixels.
Ta première page n'affiche à l'écran que 256 x 212 pixels

Ta seconde page se situe aux coordonnées Y, de 256 à à 511.

Si l'élément graphique que tu veux copier se trouve sur la seconde page de la VRAM aux coordonnées relatives 0,0 et qu'il fait 20 pixels sur 20.
Et que tu veux le copier aux(100,100) de la page 0 affichée à l'écran
Code C :
 
MMMtask  t;
 
    t.X = 0; 
    t.Y = 256; 
    t.X2 = 100; 
    t.Y2 = 100; 
    t.DX = 20;  
    t.DY = 20;               
    t.s0 = 0; 
    t.DI = 0; 
    t.LOP = 0;
 
    fLMMM(&t);
 
 


banniere-ericb59e
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 17/02/2019 à 20h29
Citation :
Attention tu parles de 2 fonctions différentes là :

Oui je sais.
La fonction fLMMM ça marche bien mais pas quand j'utilise simplement la fonction LMMM


Il faut donner à manger à nos machines !
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 17/02/2019 à 20h38
Code :

 HMMC (data_grille, 0, 256, 16, 16 ); // Page 1 ok vu avec débuger
 LMMM(0,256,16,16,0,0,0);


J'ai bien le morceau dans page 2 vu que dans mon programme j'arrive à le chercher avec ton screen copy et FLMMM
J'ai peut être loupé une info la !


Il faut donner à manger à nos machines !
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 17/02/2019 à 22h43
Je ne me souviens plus très bien, car j'ai surtout travaillé avec FLMMM.
Il me semble me souvenir que LMMM ne fonctionne que sur la Page VRAM Active. DOnc pas pour aller copier un élément graphique d'une autre page.
Je vérifie dans le code source demain, mais ça doit être ça.



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