Posté le 27/11/2019 15:12
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 44 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 10/04/2022 19:07 | #
Ah oui c'est que le typage est un peu chiant pour ça.
Pas de souci, tu peux juste forcer le cast :
En C++ on pourrait faire mieux et éviter tous les casts, il faudra que je supporte ça un jour.
Citer : Posté le 10/04/2022 19:31 | #
Alors la sauvegarde fonctionne bien mais du coup c'est le Load qui lui ne fait pas planté la casio mais la softlock, c'est à dire que le cercle en haut à gauche ne tourne même plus, je peux rien faire à part appuyer sur le bouton reset.
bopti_image_t* Load_Image(unsigned char* path)
{
FILE* fp = fopen((const char*)path, "r");
int size;
fread(&size, sizeof size, 1, fp);
bopti_image_t* img = (bopti_image_t*)malloc(size);
fread(&img, size,1, fp);
fclose(fp);
return img;
};
bopti_image_t* img = (bopti_image_t*)gint_world_switch(GINT_CALL(Load_Image, (unsigned char*)"testImg.bin"));
Albert Einstein
Citer : Posté le 10/04/2022 19:44 | #
Tu t'es trompé à la fois dans le fread() et le fwrite(), l'opérande c'est img et pas &img, puisque tu veux lire/écrire les données pointées par img et pas le pointeur de 4 octets lui-même.
Edit : cette fois j'ai testé donc je suis sûr qu'il n'y a pas d'autre arnaque :-)
Citer : Posté le 10/04/2022 19:50 | #
Ho ça marche !
Merci beaucoup !
Ajouté le 13/04/2022 à 17:51 :
J'aimerai utiliser gint_world_switch(GINT_CALL mais pour une fonction qui n'a pas de paramètre et ça me mets cette erreur :
error: invalid use of member function ‘void GameManager::InitGameParty()’ (did you forget the ‘()’ ?)
34 | gint_world_switch(GINT_CALL(gameManager->InitGameParty));
Albert Einstein
Citer : Posté le 13/04/2022 18:03 | #
A mon avis (a confirmer par Lephe), il faut que tu passes par un pointeur sur fonction.
il faut créer un
void(*functionptr)( void ) = nullptr; // Pointeur sur fonction (je pars sur hypothese sans parametre)
functionptr = gameManager->InitGameParty; // onfait pointer le pointeur vers la bonne fonction
gint_world_switch(GINT_CALL(functionptr)); // on appelle gint_world_switch en donnant ce pointeur vers fonction
Je pense que ça passe comme ça.
Citer : Posté le 13/04/2022 18:23 | #
Ça ne passerait pas non plus. GINT_CALL() n'accepte que des fonctions, or tu es en train de passer une méthode. La différence c'est que c'est essentiellement une clôture qui lie l'instance. C'est donc un objet différent, et donc tu peux pas tricher sur le typage.
Par contre tu peux passer l'information additionnelle (l'instance) à côté :
{
gameManager->InitGameParty();
}
gint_world_switch(GINT_CALL(call_InitGameParty, (void *)gameManager));
Voire peut-être avec une lambda :
[](GameManager *gameManager){ gameManager->InitGameParty(); },
(void *)gameManager);
Citer : Posté le 13/04/2022 18:36 | #
Oh la vache on est dans la subtilité là
Citer : Posté le 13/04/2022 18:55 | #
Ok merci
Ajouté le 13/04/2022 à 18:57 :
ça fait une semaine que je suis sur la sérialisation des données de RPG Maker j'en peux plus .
Je viens à l'instant de sérialiser toutes les données
Ajouté le 19/04/2022 à 18:13 :
Je voulais savoir s'il existe un moyen de faire un truc comme ça :
#ifndef Gint
//Code pour casio
#endif
#ifndef WindowsEtLinux
//Code pour Windows et Linux
#endif
Si oui qu'elle est la syntaxe
Albert Einstein
Citer : Posté le 19/04/2022 18:14 | #
Tu peux faire :
// gint
#else
// pas gint
#endif
Citer : Posté le 19/04/2022 21:35 | #
Est-ce qu'il y a moyen que le PC puisse lire un fichier en big-endian comme le fait la casio ou l'inverse c'est à dire en little-endian ?
Car j'aimerai normaliser les données, j'ai cherché sur internet, j'ai rien trouvé de vraiment concluant
Albert Einstein
Citer : Posté le 19/04/2022 21:38 | #
Il suffit de bien définir ton format et d'inverser l'endianness après la lecture. Il n'y a pas de fonction standard pour faire ça en C, mais sous Linux tu peux faire :
#include <endian.h>
void load(char const *file)
{
// ...
int n;
fread(&n, sizeof n, 1, fp);
// Big-Endian (32 bits) TO Host
// = convertit big-endian au format natif
// = rien sur la calto, inversion de l'endianness sur le PC
n = be32toh(n);
}
Citer : Posté le 20/04/2022 17:43 | #
Je suis retourner voir ce message pour pouvoir afficher mes propres couleurs avec cette fonction :
((R & 0xf8) << 8) | ((G & 0xfc) << 3) | ((R & 0xf8) >> 3)
Sauf que quand je fait avec ces valeurs : (255,0,0)
ça me fait pas du rouge mais du rose
Albert Einstein
Citer : Posté le 20/04/2022 17:44 | #
Relis juste un petit coup les noms des variables, vois si tu peux apercevoir la typo.
Citer : Posté le 20/04/2022 17:46 | #
Ho mince désolé j'ai copier collé bêtement le message sans relire, j'ai cru que c'était un problème de valeur. oops
Ajouté le 20/04/2022 à 18:19 :
C'est quelle police (le nom) d'écriture par défaut de Gint ?
Albert Einstein
Citer : Posté le 20/04/2022 18:52 | #
Pas de nom. Surtout sur Graph 90+E, où c'est une police originale.
Citer : Posté le 21/04/2022 20:50 | #
J'ai encore un soucis : j'ai une variable static qui se trouve dans une librairie compilé (exemple : lib.c), donc je ne peux pas modifier ce fichier
variable en question :
static v16 g_depth = 0;
Problème : je veux accéder a cette variable depuis un autre fichier et j'y parviens pas
Albert Einstein
Citer : Posté le 21/04/2022 20:58 | #
Ce n'est pas possible.
Citer : Posté le 28/08/2022 22:26 | #
Hello les gens !
Je voulais savoir s'il y avait moyen d'utiliser le port 3-pin avec Gint ? et si oui comment ?
Albert Einstein
Citer : Posté le 28/08/2022 22:30 | #
Pour l'instant il n'y a pas de driver donc il faut faire un world switch et utiliser des syscalls, voir https://gitea.planet-casio.com/Slyvtt/libSerial .
Citer : Posté le 28/08/2022 22:47 | #
Ok, j'ai jeter regarder aussi ce topic j'ai les même erreur, et j'ai toujours pas compris comment on installe libSerial, ni quelle lib il faut inclure
Albert Einstein
Citer : Posté le 29/08/2022 17:10 | #
J'ai fait un make de libSerial mais je doit mettre où le "libserial.a" après ?
Albert Einstein