MSX Village forum

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

Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 01/02/2019 à 05h15

Reprise du message précédent

Merci.
Il manque une fonction dans le devkit !
Une "vrais" fonction wait_vbl pour attendre le retour du faisceau electron. Ce qui peut résoudre plein truc et évite ta fonction pour temporiser le programme avec des halts pas beau.


edit :
Je n'ai pas téléchargé le nouveau manuel
mais page 77

Sprites8 et 16 tu as placé dans le manuel un S a la fin de sprite alors que c'est
Sprite8() et Sprite16() mais sans S.


Video rapide sur les sprites 16 x 16
Lien Edité par Monos Le 01/02/2019 à 07h04


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 01/02/2019 à 07h13
@monos
Ca existe, Regarde les fonctions : isVsynch & isHsynch

Oui j'ai vu les coquilles sur les fonctions "Sprite" j'ai corrigé, mais je n'ai pas mis à jour le fichier en ligne pour l'instant.



Edit : Juste une précision. Quand j'ai réalisé le Brick Breaker Demo. Ou avec le Tuto Casse brique, parfois la Balle semble avoir des ratés, exactement comme si elle n'était pas synchro avec le vblank. Mais lors de tests sur un Vrai MSX, la balle était parfaitement fluide.
Je ne sais pas trop d'où vient le problème l'émulateur ? son réglage ? Je n'ai pas eu le temps de chercher. Mais il me semble qu'avec un autre émulateur Comme BlueMSX, cet effet saccadé n'est pas présent. Pourtant OpenMSX est censé être l'émulateur le plus fiable ... Edité par ericb59 Le 01/02/2019 à 08h19


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10318

Le 01/02/2019 à 11h02
pour aider avec les sprites MSX ;)

https://www.msx.org/wiki/The_OR_Color


:noel
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 02/02/2019 à 07h40
J'avais déja vu le or color mais j'ai pas pigé comment le "programmer". Je n'ai pas fais de test non plus hier.
Citation :
Ca existe, Regarde les fonctions : isVsynch & isHsynch

Oui, je dois pêux être me gouré dans comment je refais mon truc alors.

Je me trompe peut etre de résonnement. Tu vas pouvoir peut être me corrigé.
J'ai l'habitue de ce shéma la sur différent support.

- Calcule Logique.
- Wait VBL
- Affichage.

En gros j'affiche ce que je dois afficher à l'écran après le Wait VBL. (On attend le V blank. ce qui donne si je me trompe pas la zone invisible et le retour du canon)

sur msx pour calmer le prog j'ai testé donc une boucle !

while(isVsynch()==1)
{

}

MAis si tu dis qu'il y a un bug. Faut que je test sur bluemsx mais pour ça je dois apprendre la manipe pour faire une DSK. Pour le moment ba j'ai pas réussis xd J'ai bien mis les trois fichiers mais voila.
Puis je peux pas encore testé sur machine réel. J'aimerais bien aussi trouver comment ajouter un lecteur D7 sur mes msx1 un jour
En parlant de DD, J'ai vu que tu vendais des lecteurs de disquette externe. Ils sont capable ceux la de formater le 720ko ?

J'ai reçu hier midi le livre. (Bon avec les coquilles mais pas graveà
Il y a des choses à dire. Je suis satisfait sur la partie api, mais il manque beaucoup d'information complémentaire. Tu abordes des sujets (création de rom disquette, et je ne sais plus quoi) et tu ne vas pas au bout des explications j'ai trouvé ça fort dommage.

Pour revenir à la création de disquette j'aurais aimé un mini tuto dans le livre comment vraiment on fait avec les commande et tout et pas seulement "utilisé ce logiciel pour faire des DSK". Cela revient à avoir un livre de cuisine qui dit pour faire cette pâtisserie utilisé des œufs, du sucre, de la farine... sans annoncé les proposions...

Il y a moyens à mes yeux amélioré tout ça pour sortir vraiment un truc cool bourré d'information et de guide pour pouvoir exploiter le msx et programmer dessus.

Hors ce petit truc le livre sera utile pour avoir les fonctions à porté de main, le guide du C pour pense bête aussi peut aider. C'est du bon boulot ! Et je le redis tu as fait du bon boulot sur cette api !


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 02/02/2019 à 08h49
Monos :

Je me trompe peut etre de résonnement. Tu vas pouvoir peut être me corrigé.
J'ai l'habitue de ce shéma la sur différent support.

- Calcule Logique.
- Wait VBL
- Affichage.

En gros j'affiche ce que je dois afficher à l'écran après le Wait VBL. (On attend le V blank. ce qui donne si je me trompe pas la zone invisible et le retour du canon)

sur msx pour calmer le prog j'ai testé donc une boucle !

while(isVsynch()==1)
{

}

MAis si tu dis qu'il y a un bug.


Je ne sais pas trop si il y a un bug. Toujours est il que Brick Breaker n'utilise pas d'attente Vblank et que le jeu est parfaitement fluide (Pas sur OPenMSX par contre).
Après il n'y a pas grand chose à gérer à part deux sprites et quelques tests...

Je suppose donc, que si tu veux utiliser le VBLANK c'est parce que tu trouve que ton code n'est pas assez fluide à l'écran ? Si c'est ça, test d'abord ton programme sur BlueMSX pour voir ce que ça donne.
Sinon utiliser le VBLANK est très bien, je te donnes dans le post suivant un example qui te permet de gérer plusieurs actions sur un seul Test de VBLANK.

Citation :

Faut que je test sur bluemsx mais pour ça je dois apprendre la manipe pour faire une DSK. Pour le moment ba j'ai pas réussis xd J'ai bien mis les trois fichiers mais voila.


pas besoin de faire une disquette .DSK, dans le menu FILE de Blue MSX tu peux associer un dossier windows en tant que disquette.

Citation :

Puis je peux pas encore testé sur machine réel. J'aimerais bien aussi trouver comment ajouter un lecteur D7 sur mes msx1 un jour
En parlant de DD, J'ai vu que tu vendais des lecteurs de disquette externe. Ils sont capable ceux la de formater le 720ko ?


Les lecteurs de disquettes MSX1 sont fournis avec une grosse cartouche qui fait l'interface entre le lecteur et le MSX, et ajoute en même temps le disk Basic au MSX.

Oui, il me reste un lecteur de disquette USB (Compatible MAC/PC Windows) qui sait formatter, écrire et lire depuis des disquettes 720K. Idéal créer de vrais disquettes MSX.
(Le lecteur fonctionne sur windows de XP à Windows 8. Pas certain que ca marche sur Windows 10, vu que microsoft à virer les drivers Floppy. Après on peut sans doute les remettre... Je ne sais pas)

Citation :

J'ai reçu hier midi le livre. (Bon avec les coquilles mais pas graveà
Il y a des choses à dire. Je suis satisfait sur la partie api, mais il manque beaucoup d'information complémentaire. Tu abordes des sujets (création de rom disquette, et je ne sais plus quoi) et tu ne vas pas au bout des explications j'ai trouvé ça fort dommage.

Pour revenir à la création de disquette j'aurais aimé un mini tuto dans le livre comment vraiment on fait avec les commande et tout et pas seulement "utilisé ce logiciel pour faire des DSK". Cela revient à avoir un livre de cuisine qui dit pour faire cette pâtisserie utilisé des œufs, du sucre, de la farine... sans annoncé les proposions...

Il y a moyens à mes yeux amélioré tout ça pour sortir vraiment un truc cool bourré d'information et de guide pour pouvoir exploiter le msx et programmer dessus.

Hors ce petit truc le livre sera utile pour avoir les fonctions à porté de main, le guide du C pour pense bête aussi peut aider. C'est du bon boulot ! Et je le redis tu as fait du bon boulot sur cette api !


Oui tu as raison, on peut ajouter des choses. Le fait est que quand on est dedans on oublie, ou on ne pense pas à tout ce qui peut être utile aux personnes qui débutent sur le MSX. C'était pourtant mon objectif à la base... Faire venir des codeurs sur la plateforme MSX en leur offrant toutes les infos utiles.
Des infos il en manque, et je note tes remarques pour faire un update aussi rapidement que possible.
N'hésites pas à me dire tout ce qui manque.



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 02/02/2019 à 08h50
Example d'Utilisation du VSYNC

Code C :
 
// Fusion-c Example
// WaitVblank DO Action
//
 
#include <stdio.h>
#include "fusion-c/header/msx_fusion.h"
int cpt_test1;
int cpt_test2;
int cpt_test3;
// Affihage des 3 compteurs à l'écran
//
void FT_Print(void)
{
  Locate(7,4);
  printf("%d",cpt_test1);
  Locate(7,6);
  printf("%d",cpt_test2);
  Locate(7,8);
  printf("%d",cpt_test3);
  return;
}
// Routine de tests 
//
void FT_DoSomething(int compteur)
{
  int trigger;
  trigger=1;
 
     cpt_test1++;            // Do that Every Frame
 
 
    trigger=compteur & 1;
    if (trigger == 0)       // Do That Every 2 frames
    {
      cpt_test2++;
    }
 
 
    trigger=compteur & 3;
    if (trigger == 0)       // Do That Every 4 frames
    {
      cpt_test3++;
    }
 
    FT_Print(); 
 
    return;
}
void main (void)
{
  int cpt;
  cpt=0;
  cpt_test1=0;
  cpt_test2=0;
  cpt_test3=0;
  // On prépare l'écran
  Screen(0);
  Locate(1,4);
  printf("CPT1:");
  Locate(1,6);
  printf("CPT2:");
  Locate(1,8);
  printf("CPT3:");
 
 
  // Loop
  while (1)         
  {
    if (IsVsync())              // Test Vsync / Vlank
    {
 
      cpt++;
      if (cpt>=100)
      {
        cpt=0;
      }
      FT_DoSomething(cpt);
    }
  }
  Screen(0);
  Exit(0);
}
 


banniere-ericb59e
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 03/02/2019 à 09h29
Je regarderais ça.

J'avance j'avance. Le jeu est jouable en lui même. (J'ai pas intégré les bonus que je veux et le redémarrage d'une partie)

Bon j'ai pas utilisé "or" pour les sprites mais je commence à savoir un peu manipuler ça sans trop d'erreur !
Au niveau des tiles j'ai enfin trouver comment récupérer la bonne couleur que je veux !
J'ai trouvé un fichier .pal pour le screen 8. Avec le logiciel Pro Motion NG je peux intégré la palette et aller chopper le numéros de la teinte pour créer mes datas. (Non compresser du coup mais bon on avance petit à petit)

La prochaine étape est le codage d'un logiciel pour créer mes tiles en mode 8 car la c'est pas possible de coder mes points à la main ! Ensuite je vais pouvoir travailler mes graphismes !



Il faut donner à manger à nos machines !
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 05/02/2019 à 08h09
Bravo Monos :top , pour tes vidéos et pour nous présenter ton portage du jeu sur MSX 2 ^^
   
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 07/02/2019 à 06h24
De rien
J'avance tranquillement une très bonne heure tous les matins. J'organise aussi mon code pour que le programme puisse être plus facilement adapter sur d'autre support.
(Master System, pourquoi pas colecovision et peut être mégadrive) d'ou ma méthode très certainement pour gérer mes graphismes et chercher à optimiser tout ça.
j'attaque un peu l'écran titre et de selection des commande mais je viens de m’apercevoir qu'il n'y a pas de "transparence" sur un PutText xd.

Sinon l'api est cool. Mais bon de toute façon ce qu'on demande à un sdk c'est de gérer les entrés les bip bip et les trucs qui s'affichage à l'écran. Le reste c'est du bonus (pour faire un jeu)...

J'ai hâte de tester ça sur vrais machine. Je bosse encore une semaine dessus, et je fais tourner une première démos.
La ou tout va être coton c'est la partie bruitage / musique. J'ai mon compositeur attitré, mais je dois lui donner un log de composition et surtout faire manger tout ça la machine... Mais bon chaque chose en son temps. Rome ce n'est pas fait en 1 jours. Je suis très satisfait de pouvoir m'adapter à une nouvelle machine. Quand je pense qu'il y a une 10en année, je ne voulais pas programmer pur et dur et je m'en sentais pas capable xd.


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 07/02/2019 à 08h39
Pour ce qui est des musiques. Tu as des commandes de contrôle du PSG.
Mais surtout FUSION-C Intègre en natif un player .PT3
PT3 est un format fort connu dans le monde du chiptune, sur ZX Spectrum, Amstrad, MSX etc ... La plupart des trackers, comme Vortex Tracker connaissent le format.

Pour les sons et effets spéciaux, idem, soit tu attaques le PSG avec des commandes dédiées, soit tu utilises le player AYFX.
Dans TOOLS, tu as l'éditeur AYFX avec plein d'exemples de banques de sons.

Effectivement PutText n'a pas de mode transparence.
Ce que tu peux faire :
1- Afficher ton Texte sur un fond noir quelque part en page1, ou en page 0, en dessous des coordonnées Y >212 pour qu'il ne soit pas visible à l'écran
2- Utiliser flMMM pour copier la partie graphique de ton texte là où tu souhaites l'afficher à l'écran. flMMM à un paramètre transparence.

Autre solution, celle que j'emploi, tu charge une FONT Bitmap que tu stocke en page 0, dans la zone y>212. Et avec une petite routine dédiée tu affiche ton texte par une série de copie graphique. Un copie pour chaque lettre.


banniere-ericb59e
Site web    
Monos Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 28/09/2018 à 17h10

Messages: 101

Le 09/02/2019 à 06h06
J'ai envoyé les recommandation à mr.data (pour les personnes qui connaissent), il va regarder ça. I

Oui pour le texte. Mais je ne vais pas trop m’embêter pour prisonnier. En fin de semaine j'ai vu comment utiliser les touches du clavier et sortir ça avec Inkey() niake !
Pas très fan çà première abord d'utiliser la fonction ou il faut chopper la ligne et jouer avec les valeurs binaire, je trouve inkey plus simple.

Faut que je teste de plus en plus le déplacement valeur entre Vram <=> Vram quand même.

(J'ai hate aussi de débuter mes vidéo tuto sur fusion c, c'est au programme).
J'ai aussi au niveau du plateau, mis en place le speudo aléatoire enfin la génération d'une graine a partir des secondes du MSX2. Au début j'ai été cherché la valeur du registre R mais finalement je me retrouvé avec les même valeurs. Je pensais que R changé souvent j'ai du me gouré de registre ou chez pas quoi xd.

J'avance j'avance. Il va falloir que je remonte un pc avec un lecteur de disquette maintenant xd. Mon pc actuel n'a pas de port floppy arg, et mes lecteurs de disquettes externes ne peut pas "formater" le 720ko. C'est pour ça que je t'avais posé la question si les lecteurs que tu vendais pouvais formater le 720ko. Heum peut être que le msx sait de base tien. Je suis entêté de formater ça sur pc mais je sais pas comment ça fonctionne finalement. Les fichier sont t'il lissible nativement du msx => PC j'aurais juste à faire un copier coller ?

Sur le CPC muni d'un lecteur 3.5 je ne peux pas faire ça, ni sur un amiga. Sur le Mig je peux avoir du 720ko (Disquette Doss Cross) mais elle se formate sur pc et pas sur le mig...

Beaucoup de truc que je ne sais pas sur le MSX2.


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10318

Le 09/02/2019 à 08h01
une disquette formatée sur un MSX se relit sans probléme sur un PC
avec un lecteur USB sur le PC pour les transferts ça fonctionne


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 09/02/2019 à 08h23
Comme le dis Jipe, une disquette formatée MSX 720K se lit sur PC avec un lecteur 720K (ou compatible 720K). Les fichiers se lisent, et se copient de PC à la disquette MSX sans problème.

Oui, le lecteur USB qu'il reste sur ma boutique est compatible 720K.

Attention ! Inkey() est très lent ! Mieux vaut utiliser les autres fonctions de gestion clavier si c'est pour utiliser dans une boucle de jeu.
Pour les touches fléchées utilises l'instruction JoystickRead (0)

Je suis en train de préparer un update de FUSION-C avec de nouvelles fonctions.
Il manquait notamment une fonction TIMER qui est en fait simple à implémenter. Elle peut servir de seed pour les nombres aléatoires.

Fonction SetRealTimer
Code C :
 
// Set MSX Timer to a specific value
void SetRealTimer(unsigned int value)
{
    Pokew(0xFC9E,value);
}
 


Fonction RealTimer
Code C :
 
 
// Return Real Timer value. An Unsigned Int, between 0 and 65525. 
// Timer is incremented 50 or 60 Times per second. Depending of VDP Speed
unsigned int RealTimer(void)
{
    return(Peekw(0xFC9E));
}
 
Edité par ericb59 Le 09/02/2019 à 08h24


banniere-ericb59e
Site web    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 09/02/2019 à 20h33
Salut

juste un point sur mes débuts....j'avance doucement mais surement pour moi le C c'est du CCCChinois!!! mais j'y vais !!! :oups

j'arrive a:

voir sur quel MSX 1/2/2+/TR :top
envoyer des variables , et les afficher si besoin !! :top
modifier le VDP !! :top
déplacer un curseur dans l’écran !! :|

un exemple !!! en ben voila !!!

BR.zip


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 à 08h58
y as une chose bizarre !!

avec openMSX j'ai un scrolling du texte mais pas de l'ecran
avec Bluemsx j'ai un scrolling de l'ecran mais pas du texte

le mapper entre OPENMSX et BLUEMSX sur la meme machine n'est pas le meme ???

openmsx semble etre plus rapide que bluemsx .... je vais faire le teste de mon fichier BR sur un vrai MSX pour voir qui as raison !!??


ericb59 : y as pas un bug dans la routine VDP je me souvient que etre le basic et l'assembleur y 'avais un decalage du numero le 0 etait le 1 .... Edité par Bastion Rebel Le 10/02/2019 à 08h59


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 à 09h58
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    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie