Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Tutoriels d'utilisation de gint (commentaires)
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Tutoriels d'utilisation de gint (commentaires)

Posté le 15/07/2017 13:54

Les tutoriels d'utilisation de gint sont sur ce topic.

Pour garder les tutoriels ensemble dans les posts du topic d'origine (et surtout pas créer un topic par tuto...), je vous propose de poster vos questions/commentaires/etc ici. Merci !


Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20 Suivante
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 24/11/2021 21:49 | #


Le mécanisme qui semble être spécifiquement en cause c'est le système de callback de gint, par lequel durant une interruption on peut s'échapper de l'interruption pour revenir en mode utilisateur pour exécuter du code (par exemple un callback de timer).

Le fait de s'échapper n'est pas le problème ici, c'est juste le fait d'appeler la fonction gérant l'échappement qui cause le crash (même si la fonction ne fait rien). Le soupçon c'est que cette fonction est spéciale, elle est chargée dynamiquement à une adresse déterminée à l'exécution. C'est la seule fonction qui est traitée comme ça sur SH3 (edit : sur SH4 aussi). Il pourrait y avoir une condition spéciale qui interfère avec ce bout de mémoire après un certain temps ou certaines actions.

Ajouté le 25/11/2021 à 19:02 :
Le bug est résolu selon toutes observations. C'est bien le même truc qui causait ton 5×4 = 6912 et ça se produisait que sur SH3 parce que c'est dans un tout petit bout d'assembleur spécifique au SH3 que l'arnaque se trouvait.

Donc quel génie ce Yatis, et sinon dis-moi si tu recroises le problème.
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 25/11/2021 20:32 | #


Salut, juste pour savoir, parmi les lib suivantes, lesquels sont intégré dans gint ?

#include "keybios.h"
#include "fxlib.h"
#include <stdio.h>
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include "MonochromeLib.h"
#include <iostream>
#include <math.h>
#include "usefull.h"
"La créativité est contagieuse faites la tourner"
Albert Einstein
Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 25/11/2021 20:35 | #


De celle que je connais :
MonochromeLib est complètement obsolète
string.h c'est ok, stdlib.h, stdio.h, math.h aussi
Les autres je ne sais pas
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 25/11/2021 20:37 | #


C'est un peu bourrin comme question ça non ? x)

keybios.hgint/keyboard.h
fxlib.h → différentes parties de gint
stdio.h, stdlib.h, string.h → libc : https://gitea.planet-casio.com/Vhex-Kernel-Core/fxlibc/src/branch/master/STATUS
time.h → libc aussi mais pas encore implémenté
MonochromeLib.h → faut ajuster (dans ML_get_vram() renvoyer gint_vram de gint/display.h, principalement)
iostream → non
math.h → oui (OpenLibm)
usefull.h → API de gint
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 25/11/2021 20:45 | #


Ok thx, du coup j'ai voulu importé libc mais quand je fait :
#include "fxlibc.h"
ou #include "libc.h"
ça fonctionne pas
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 25/11/2021 20:47 | #


Tu gagnerais à te familiariser un peu plus avec le C ha ha. xD

La libc (bibliothèque standard du C) est composée de plein d'en-têtes standard, dont <stdio.h>, <stdlib.h>, <string.h> et <time.h> (parmi ceux que tu as cités). Dans le document que j'ai lié tu peux voir qu'est-ce qui est implémenté pour chacun d'entre eux. Les noms des en-têtes n'ont pas changé, quand je dis "libc" c'est juste pour rappeler qui les fournit.
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 25/11/2021 21:17 | #


Ha d'accord merci
Est-ce que tu peux jeter un œil vite fait Lephenixnoir sur une erreur via discord car c'est plus simple ? (sans vocal, c'est juste car il y a des fichiers à transférer)
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 25/11/2021 21:22 | #


Tu peux les envoyer ici c'est aussi simple (un zip en PJ), ou sur https://t.breizh.pm/
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 25/11/2021 21:25 | # | Fichier joint


Ok
alors j'ai ce genre d'erreur avec le fichier joint, et je ne comprend pas pourquoi ça me fait ça ?

/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp: In constructor ‘BoxCollider2D::BoxCollider2D(GameObject*, bool, Vector2*, Vector2*, const char*)’:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:574:7: error: ‘class Object Object::Object’ is private within this context
  574 |     ((Object*)this)->name = (unsigned char*)"BoxCollider2D";//////////////////////////////////////////
      |       ^~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp: In member function ‘virtual bool BoxCollider2D::AreTheyTouching(Collider2D*)’:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:581:16: error: ‘class Component Component::Component’ is private within this context
  581 |     int x1 = ((Component*)collider)->gameObject->transform->position->x +
      |                ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:583:16: error: ‘class Component Component::Component’ is private within this context
  583 |     int x2 = ((Component*)collider)->gameObject->transform->position->x +
      |                ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:585:16: error: ‘class Component Component::Component’ is private within this context
  585 |     int y1 = ((Component*)collider)->gameObject->transform->position->y +
      |                ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:587:16: error: ‘class Component Component::Component’ is private within this context
  587 |     int y2 = ((Component*)collider)->gameObject->transform->position->y +
      |                ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:590:18: error: ‘class Component Component::Component’ is private within this context
  590 |     int MyX1 = ((Component*)this)->gameObject->transform->position->x + ((BoxCollider2D*)this)->center->x - (size->x / 2);
      |                  ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:591:18: error: ‘class Component Component::Component’ is private within this context
  591 |     int MyX2 = ((Component*)this)->gameObject->transform->position->x + ((BoxCollider2D*)this)->center->x + (size->x / 2);
      |                  ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:592:18: error: ‘class Component Component::Component’ is private within this context
  592 |     int MyY1 = ((Component*)this)->gameObject->transform->position->y + ((BoxCollider2D*)this)->center->y - (size->y / 2);
      |                  ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:593:18: error: ‘class Component Component::Component’ is private within this context
  593 |     int MyY2 = ((Component*)this)->gameObject->transform->position->y + ((BoxCollider2D*)this)->center->y + (size->y / 2);
      |                  ^~~~~~~~~
In file included from /mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:27:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.hpp:502:7: note: declared private here
  502 | class Collider2D : MonoBehaviour {
      |       ^~~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp: In member function ‘virtual void Text::OnRenderObject()’:
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:613:83: error: ‘MINI_OVER’ was not declared in this scope
  613 |     PrintMini((int)(posX - camX), (int)(posY - camY), (unsigned char*)this->text, MINI_OVER);
      |                                                                                   ^~~~~~~~~
/mnt/c/Users/leofa/OneDrive/Bureau/GintCasio/test/mystere-noir-et-blanc - Gravity/src/ParticuleEngine.cpp:613:5: error: ‘PrintMini’ was not declared in this scope
  613 |     PrintMini((int)(posX - camX), (int)(posY - camY), (unsigned char*)this->text, MINI_OVER);
      |     ^~~~~~~~~
make[2]: *** [CMakeFiles/myaddin.dir/build.make:76: CMakeFiles/myaddin.dir/src/ParticuleEngine.cpp.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/myaddin.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 25/11/2021 21:53 | #


class Collider2D : MonoBehaviour

Les attributs de la sous-classe sont privés sauf si tu demandes qu'ils soient publics :

class Collider2D : public MonoBehaviour

Spoiler aussi : tous ces casts là ça ne marche pas ce n'est pas comme ça que tu accèdes à un attribut de la sous-classe.

this->Object::name = "BoxCollider2D";
/* ... */
collider->Component::gameObject->transform->position->x
/* etc */
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 25/11/2021 22:23 | #


Ha je suis imbécile, c'est juste ça.
Sinon les casts fonctionne il fallait juste passer en public mais sinon je vais maintenant cette nouvelle notation.
Sinon est-ce qu'il y a un équivalent du PrintMini, car celui-ci ne fonctionne pas sur Gint ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 26/11/2021 06:40 | #


Sinon les casts fonctionne (...)

Si tu veux que ça crashe le jour où tu hérites de deux classes ou que tu ajoutes des méthodes virtuelles, tu peux caster ; ou alors tu peux utiliser le langage comme il est prévu. :x Le compilateur a le droit d'arranger les attributs comme il le veut et tu n'as aucune garantie que la sous-classe est tout au début de la structure. Si tu as plusieurs sous-classes c'est carrément impossible. Si tu as des tables virtuelles ça rajoute des pointeurs. Dans tous les cas ça va que te créer des embrouilles...

Sinon est-ce qu'il y a un équivalent du PrintMini, car celui-ci ne fonctionne pas sur Gint ?

dtext() avec une police custom.
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 26/11/2021 14:20 | #


ok.
Sinon question, je voudrait adapter ma class Texture pour Gint est du coup j'aimerai savoir quel serait les bon type qu'il faut (pointer etc...)

class Texture {
public:
    Texture(int width, int height, bopti_image_t* Data) {
        textureData = Data;
        this->width = width;
        this->height = height;
    };
    bopti_image_t* textureData;
    int height;
    int width;
};

Est-ce qu'il faut un bopti_image_t ou un bopti_image_t* ?
Et du coup quel serait la fonction qu'il faudrait pour afficher l'image :

int x = 5;
int y = 5;
Texture* texture = Texture(5,5,img1);
dimage(x, y, texture->textureData);

dimage(x, y, texture->textureData); ou dimage(x, y, &texture->textureData); ou autre ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 26/11/2021 15:01 | #


Hello,

déja au début :

int x = 5;
int y = 5;

ensuite Texture* texture = new Texture(5, 5 , img1);

il faut passer par new pour l'allocation dynamique via ton constructeur.
attention car il faut que img1 soit de type bopti_image_t*, donc cela le cas, si tu fais une création via un extern bopti_image_t img1, il faudrait utiliser &img1.

puis dimage( x,y, texture->textureData );

sachant que le protoype de la méthode est void dimage(int x, int y, bopti_image_t const *image);
donc c'est textureData qui correspond.
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 26/11/2021 15:35 | #


Compte tenu de ta classe de textures tu ne peux pas utiliser bopti. Garde ton système actuel avec SpriteCoder et MonochromeLib à la place : de une tu perdras beaucoup moins de temps à adapter ton code (il suffit de changer 2/3 trucs dans MonochromeLib), de deux tu t'éviteras de rager contre bopti qui ne peut pas faire de transformations, rotations, etc
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 26/11/2021 16:50 | #


Non parce que je veux que particule soit fonctionnel sur graph 90 aussi. Du coup je suis obligé de passer par le système d'image de gint même si je peux pas changer la taille de l'image ou faire des rotations.
À la limite si tu les rajoute ces fonctions par la suite on verra
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 26/11/2021 17:14 | #


Sur Graph 90+E le format est plus aimable ; recoder les grandissements/rotations dessus c'est faisable. Enfin si tu insistes, de mémoire cette doc sur le format mono est à jour.

Et du coup concernant les images, SlyVTT a quasiment tout dit ; mais pour préciser, fxconv te crée une variable de type bopti_image_t que tu déclares externe :

extern bopti_image_t mon_image;

Et ensuite tu dois prendre son adresse chaque fois que tu t'en sers :

Texture(... &mon_image);
dimage(x, y, &mon_image);
/* etc */

Quand bien même tu voudrais la passer par valeur tu ne pourrais pas, c'est une structure à taille variable.
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 26/11/2021 17:41 | #


Ok nice ça marche merci Slyvtt et Lephenixnoir.
Sinon il y a un équivalent du IsKeyDown ?
je sais qu'il y a le GetKey, mais il met en pause le programme, et j'ai pas envie qu'il fasse ça
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 26/11/2021 18:52 | #


Regarde dans le tutoriel (hint : cherche "keydown") et dans le header intuitif (hint : <gint/keyboard.h>)
Farhi Hors ligne Membre Points: 691 Défis: 0 Message

Citer : Posté le 26/11/2021 19:07 | #


Alors j'ai lu la partie sur keydown() mais j'ai pas très bien compris comment on s'en serve.
Qu'est-ce qu'il prend comme paramètre etc...
"La créativité est contagieuse faites la tourner"
Albert Einstein
Inikiwi En ligne Membre Points: 194 Défis: 0 Message

Citer : Posté le 26/11/2021 19:10 | #


le fonction nécessite juste le enum de la touche et ça renvoie 0 ou 1 (false, true)
Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 73 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