La Place des Développeurs FUSION-C Codez en C pour MSX les doigts dans le nez !
igal
Membre non connecté
Conseiller Municipal
Reprise du message précédent
Salut Éric le support du v9990 est une super nouvelleEst ce que tu envisagés d'implémenter la totalité du support superimpose et digit sans les limites imposées par Phillips et/ou Sony ?
ericb59
Membre non connecté
Conseiller Municipal
igal :
Salut Éric le support du v9990 est une super nouvelle
Est ce que tu envisagés d'implémenter la totalité du support superimpose et digit sans les limites imposées par Phillips et/ou Sony ?
Est ce que tu envisagés d'implémenter la totalité du support superimpose et digit sans les limites imposées par Phillips et/ou Sony ?
Non, ce n'est pas prévu. Mais je pense que tu connais par coeur les In et les out qu'il faut utiliser pour faire tout ça non ?
Si c'est le cas, ces possibilités peuvent être utilisées tout comme en Basic, avec les fonctions InPort, OutPort, Vpoke, Vpeek de Fusion-C.
Il est aisé de faire quelques procédures qui automatise tout ce que tu veux, et si tu me donnes infos et exemples, je peux te les faire.
Pour la structure c'est surtout que ça ma fait un bug xd je me disais merde c'est pas comme ça on déclare une structure ? J'ai du mené l’enquête donc. Ceci dit je suis passé ç HMMC qui fait ce que je veux maintenant. <3
Par contre je n'ai pas vu de fonction pour changer une seul couleur de la palette de l'index en screen 5. Je teste un peu ce mode.
Par contre je n'ai pas vu de fonction pour changer une seul couleur de la palette de l'index en screen 5. Je teste un peu ce mode.
ericb59
Membre non connecté
Conseiller Municipal
igal :
C'est super tout ce que tu fais Eric
Merci Igal.
Maintenant ça serait bien si plus de gens se mettaient à programmer pour le MSX.
Avec les fonctions qu'il y a dans FUSION-C c'est à peine plus compliqué de programmer en C qu'en Basic.
Bonjour,
Je démarre un développement et j'ai un petit pb avec la méthode GetMatrixKey. Je n'obtiens aucune valeur et je ne sais pas pourquoi.
Je veux connaître l'état des boutons F1 et GRAPH.
Voici mon code qui permet juste d'afficher l'état des controles.
line 1 : direction du joueur 1 ok
line 2 : état bouton 1 port 1 (barre d'espace ou bouton 1 joystick) ok
line 3 : état bouton 2 port 1 (bouton 2 joystick seulement) ok
line 4 : état de la matrice de la ligne 6 ok (vaut toujours 0 alors que je devrais m'attendre à 255, en plus la valeur n'évolue pas)
Merci d'avance.
#include "fusion-c/header/msx_fusion.h"
#include "fusion-c/header/vdp_graph2.h"
void Init(void);
void InputRead(void);
void Dispose(void);
char MenuInterrupt(void);
char joystick;
char buttonA;
char buttonB;
char matrix;
void main(void)
{
Init();
Cls();
do {
MenuInterrupt();
} while (buttonA==0);
Dispose();
}
void Init(void) {
SetColors(15,0,0);
KeySound(0);
}
char MenuInterrupt(void) {
InputRead();
Locate(0,0);
PutCharHex(joystick);
Locate(0,1);
PutCharHex(buttonA);
Locate(0,2);
PutCharHex(buttonB);
Locate(0,3);
PutCharHex(matrix);
return 1;
}
void InputRead(void) {
joystick = JoystickRead(0) | JoystickRead(1);
buttonA = TriggerRead(0) | TriggerRead(1);
buttonB = TriggerRead(3);
matrix = GetKeyMatrix(6); // (b2)Graph, (b5)F1
}
void Dispose(void) {
SetColors(15,4,4);
Beep();
KillKeyBuffer();
}
Je démarre un développement et j'ai un petit pb avec la méthode GetMatrixKey. Je n'obtiens aucune valeur et je ne sais pas pourquoi.
Je veux connaître l'état des boutons F1 et GRAPH.
Voici mon code qui permet juste d'afficher l'état des controles.
line 1 : direction du joueur 1 ok
line 2 : état bouton 1 port 1 (barre d'espace ou bouton 1 joystick) ok
line 3 : état bouton 2 port 1 (bouton 2 joystick seulement) ok
line 4 : état de la matrice de la ligne 6 ok (vaut toujours 0 alors que je devrais m'attendre à 255, en plus la valeur n'évolue pas)
Merci d'avance.
#include "fusion-c/header/msx_fusion.h"
#include "fusion-c/header/vdp_graph2.h"
void Init(void);
void InputRead(void);
void Dispose(void);
char MenuInterrupt(void);
char joystick;
char buttonA;
char buttonB;
char matrix;
void main(void)
{
Init();
Cls();
do {
MenuInterrupt();
} while (buttonA==0);
Dispose();
}
void Init(void) {
SetColors(15,0,0);
KeySound(0);
}
char MenuInterrupt(void) {
InputRead();
Locate(0,0);
PutCharHex(joystick);
Locate(0,1);
PutCharHex(buttonA);
Locate(0,2);
PutCharHex(buttonB);
Locate(0,3);
PutCharHex(matrix);
return 1;
}
void InputRead(void) {
joystick = JoystickRead(0) | JoystickRead(1);
buttonA = TriggerRead(0) | TriggerRead(1);
buttonB = TriggerRead(3);
matrix = GetKeyMatrix(6); // (b2)Graph, (b5)F1
}
void Dispose(void) {
SetColors(15,4,4);
Beep();
KillKeyBuffer();
}
ericb59
Membre non connecté
Conseiller Municipal
Salut RibbSayan
Ton code fonctionne.
Tu obtiens matrix = 0xFF quand aucune des touches de la ligne n'est appuyée.
Si tu appuis sur F1 on obtient : 0xDF
Pour Graph je ne sais pas, car par émulation je ne sais pas trop où se trouve la touche GRAPH !
J'ai fait le test avec OpenMSX 0.15 sur machine Philips NMS 8255
Suivant la machine, la matrice clavier peut être différente. (Mais pas pour les touches Spécifiques MSX)
http://www.msxdev.com/articles/keymatrix.php
Edité par ericb59 Le 05/03/2020 à 09h37
Ton code fonctionne.
Tu obtiens matrix = 0xFF quand aucune des touches de la ligne n'est appuyée.
Si tu appuis sur F1 on obtient : 0xDF
Pour Graph je ne sais pas, car par émulation je ne sais pas trop où se trouve la touche GRAPH !
J'ai fait le test avec OpenMSX 0.15 sur machine Philips NMS 8255
Suivant la machine, la matrice clavier peut être différente. (Mais pas pour les touches Spécifiques MSX)
http://www.msxdev.com/articles/keymatrix.php
Edité par ericb59 Le 05/03/2020 à 09h37
Salut Eric,
Merci de ta réponse.
Bah zut pour moi car rien n'y fait, je ne vois même pas FF mais 00. Ce qui n'est déjà pas normal. Je suis sur la même config que toi OpenMsx 0.15, Philips NMS 8255 (et Fusion v1.2)
J'imagine que la touche F1 fonctionne car hors de mon programme, dans le dos, j'affiche bien "color" en tapant F1.
Après je suis sous windows10 64bits, je ne sais pas si ca peut y faire quelque chose.
Je vais vérifier mes roms system.
Tu pourrais m'envoyer ton fichier .com j'aimerai voir si en binaire j'ai des différences.
Merci d'avance.
Merci de ta réponse.
Bah zut pour moi car rien n'y fait, je ne vois même pas FF mais 00. Ce qui n'est déjà pas normal. Je suis sur la même config que toi OpenMsx 0.15, Philips NMS 8255 (et Fusion v1.2)
J'imagine que la touche F1 fonctionne car hors de mon programme, dans le dos, j'affiche bien "color" en tapant F1.
Après je suis sous windows10 64bits, je ne sais pas si ca peut y faire quelque chose.
Je vais vérifier mes roms system.
Tu pourrais m'envoyer ton fichier .com j'aimerai voir si en binaire j'ai des différences.
Merci d'avance.
ericb59
Membre non connecté
Conseiller Municipal
Voici le fichier
testK.zip
- Pour être honnête je ne compile pas avec FUSION_C 1.2 et avec ma béta de la version 1.3
mais je n'ai pas touché à ces fonctions dans la nouvelles version.
- Fait attention de compiler avec SDCC v3.6
Certaines autres version plus récentes posent des problèmes, je n'y ai pas encore regardé. Donc dans l'immédiat il faut utiliser SDCC 3.6
- Pour le windows 10, non ca ne pose pas de problèmes
Ta version fonctionne très bien chez moi aussi.
Je suis en SDCC v3.6
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.6.0 #9615 (MINGW64)
published under GNU General Public License (GPL)
Je vais regarder coté binaire pour voir les différences.
Merci à toi
Je suis en SDCC v3.6
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.6.0 #9615 (MINGW64)
published under GNU General Public License (GPL)
Je vais regarder coté binaire pour voir les différences.
Merci à toi
Les binaires sont très différents. J'ai 3 fois le tag "Made with FUSION-C 1.2 (ebsoft)" (au début, au mileu et en bas), tu ne l'as qu'une fois au début.
Après le contenu est difficilement comparable.
Voici mon binaire si ca t'intéresse.
hota.zip
Après le contenu est difficilement comparable.
Voici mon binaire si ca t'intéresse.
hota.zip
ericb59
Membre non connecté
Conseiller Municipal
Oui pour le Tag c'est un bug que j'ai corrigé
Hum chez moi ton dernier indicateur (celui des touches de fonctions) réagit avec les touches fléchées !
J'ai peut être corrigé un bug de la 1.2 à 1.3 ? Je ne m'en souviens pas en tout cas !
Bref... On va faire autrement.
Je m'aperçois que je n'ai pas mis de fonctions simple pour le contrôle des touches de fonctions alors voici une routine que je vais intégrer dans FUSIONC-C 1.3
tu peux l'intégrer à ton programme
Cette fonction FKeys vas te retourner un Octet qui correspond à l'état des touches.
Etat 1 : Touche appuyées
Etat 0 : Touche non appuyée
Ou plus simple elle retourne
1 : Si F1 est appuyé
2 : Si F2
4 : Si F3
8 : Si F4
16 : SI F5
32 : Si ESC
64 : Si GRAPH
128 Si STOP
Les combinaisons de touches sont possibles.
Dis moi si ca fonctionne chez toi...
PS De plus cette fonction est plus rapide que GetKeyMatrix, car elle n'utilises pas d'appel au Bios.
Edité par ericb59 Le 05/03/2020 à 21h27
Hum chez moi ton dernier indicateur (celui des touches de fonctions) réagit avec les touches fléchées !
J'ai peut être corrigé un bug de la 1.2 à 1.3 ? Je ne m'en souviens pas en tout cas !
Bref... On va faire autrement.
Je m'aperçois que je n'ai pas mis de fonctions simple pour le contrôle des touches de fonctions alors voici une routine que je vais intégrer dans FUSIONC-C 1.3
tu peux l'intégrer à ton programme
Code C :
char Fkeys(void) // Return Status of keys : F1 - F2 - F3 - F4 - F5 - ESC - GRAPH - STOP { __asm ld a,(#0xFBEB) xor #0xFF rra rra rra rra rra and #0b01000111 ld b,a ld a,(#0xFBEC) xor #0xFF rla rla rla and #00011000 or b ld l,a ld h,#0 ret __endasm; }
Cette fonction FKeys vas te retourner un Octet qui correspond à l'état des touches.
Etat 1 : Touche appuyées
Etat 0 : Touche non appuyée
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
STOP | GRAPH | ESC | F5 | F4 | F3 | F2 | F1 |
Ou plus simple elle retourne
1 : Si F1 est appuyé
2 : Si F2
4 : Si F3
8 : Si F4
16 : SI F5
32 : Si ESC
64 : Si GRAPH
128 Si STOP
Les combinaisons de touches sont possibles.
Dis moi si ca fonctionne chez toi...
PS De plus cette fonction est plus rapide que GetKeyMatrix, car elle n'utilises pas d'appel au Bios.
Edité par ericb59 Le 05/03/2020 à 21h27
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie