Posté le 15/07/2017 13:54
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 51 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 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.
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"
Albert Einstein
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
Citer : Posté le 25/11/2021 20:37 | #
C'est un peu bourrin comme question ça non ? x)
keybios.h → gint/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
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
Albert Einstein
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.
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)
Albert Einstein
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/
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
Albert Einstein
Citer : Posté le 25/11/2021 21:53 | #
Les attributs de la sous-classe sont privés sauf si tu demandes qu'ils soient publics :
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.
/* ... */
collider->Component::gameObject->transform->position->x
/* etc */
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 ?
Albert Einstein
Citer : Posté le 26/11/2021 06:40 | #
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...
dtext() avec une police custom.
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 ?
Albert Einstein
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.
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
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
Albert Einstein
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 :
Et ensuite tu dois prendre son adresse chaque fois que tu t'en sers :
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.
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
Albert Einstein
Citer : Posté le 26/11/2021 18:52 | #
Regarde dans le tutoriel (hint : cherche "keydown") et dans le header intuitif (hint : <gint/keyboard.h>)
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...
Albert Einstein
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)