Crash incompréhensible avec MonochromeLib
Posté le 02/01/2015 17:14
Salut à tous,
j'utilise un bout de code dans mon jeu qui marchait parfaitement jusqu'à maintenant et qui a décide d'une compilation à l'autre de ne plus fonctionner du tout.
Voici la commande toute simple :
ML_bmp_16_or(gadgets[0],[maroon]50[/maroon],[maroon]50[/maroon]);
Et le sprite fait bien 16*16 :
{[maroon]0[/maroon]x7F, [maroon]0[/maroon]xFE, [maroon]0[/maroon]x80, [maroon]0[/maroon]x01, [maroon]0[/maroon]x80, [maroon]0[/maroon]x01, [maroon]0[/maroon]x8E, [maroon]0[/maroon]x01, [maroon]0[/maroon]x9A, [maroon]0[/maroon]x01, [maroon]0[/maroon]x9F, [maroon]0[/maroon]x81, [maroon]0[/maroon]x91, [maroon]0[/maroon]x41, [maroon]0[/maroon]x9E, [maroon]0[/maroon]xA1, [maroon]0[/maroon]x90, [maroon]0[/maroon]x51, [maroon]0[/maroon]x90, [maroon]0[/maroon]x29, [maroon]0[/maroon]x90, [maroon]0[/maroon]x09, [maroon]0[/maroon]x8F, [maroon]0[/maroon]xF1, [maroon]0[/maroon]x80, [maroon]0[/maroon]x01, [maroon]0[/maroon]x80, [maroon]0[/maroon]x01, [maroon]0[/maroon]x80, [maroon]0[/maroon]x01, [maroon]0[/maroon]x7F, [maroon]0[/maroon]xFE}
Avant tout marchait parfaitement, puis sans aucune raison quand le programme arrive à la ligne il plante, tout simplement, avec cette erreur :
Et à cette ligne exactement :
Tandis que si j'utilise la commande
ML_bmp_or(gadgets[0],[maroon]50[/maroon],[maroon]50[/maroon],[maroon]16[/maroon],[maroon]16[/maroon]);
Le sprite s'affiche correctement...
Sauriez-vous d'où vient l'erreur ? Parce que tout les ML_bmp_16_or et and de mon code ne fonctionnent plus ...
Citer : Posté le 02/01/2015 17:16 | #
Faut changer les ML_bmp_16 en Ml_bmp_or (si ça marche comme ça omg
Bizarre l'erreur
Citer : Posté le 02/01/2015 17:17 | #
non non c'est bien ML
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 02/01/2015 17:17 | #
Comme d'habitude, c'est un problème de pointeur
Citer : Posté le 02/01/2015 17:18 | #
moi je cherche surtout a savoir pourquoi i est un char en fait
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 02/01/2015 17:18 | #
Darkstorm explique toi
Ajouté le 02/01/2015 à 17:23 :
Sachant que j'ai essayé ML_bmp_16_or(&gadgets[0],50,50); et j'ai le même problème
Citer : Posté le 02/01/2015 17:26 | #
Ça m'est arrivé assez souvent, ce que je te conseille de faire c'est de tester avec différents sprites, commenter certaines parties du code, y'a que comme ça que tu arrivera à débugger. Là comme ça je vois pas où est l'erreur.
Citer : Posté le 02/01/2015 17:29 | #
Le truc c'est que peu importe dans quelle fonction ou dans quel fichier je place ce bout de code, il fait quand même crasher l'émulateur, ça vient peut être de mon fichier de sprites dans ce cas
Ajouté le 02/01/2015 à 17:31 :
Code:Blocks m'indique ça à cette ligne :
|94|warning: passing argument 1 of 'ML_bmp_16_or' from incompatible pointer type [enabled by default]|
Ajouté le 02/01/2015 à 17:36 :
Quand je renomme gadgets de static const unsigned char à static const unsigned short, le programme ne crash pas mais le sprite ne s'affiche pas correctement
Citer : Posté le 02/01/2015 17:47 | #
moi je cherche surtout a savoir pourquoi i est un char en fait
Car on a pas besoin d'un int pour aller de 0 à 16
Citer : Posté le 02/01/2015 17:49 | #
Car on a pas besoin d'un int pour aller de 0 à 16
normalement, les char ne sont utiliser que pour les caractères
Citer : Posté le 02/01/2015 17:59 | #
Et alors, ils prennent n'importe quelles valeurs de 0 à 255, et prennent moins de place en mémoire. Pourquoi tu crois que les sprites sont déclarés en unsigned char ?
Citer : Posté le 02/01/2015 19:04 | #
Je ne pense pas que ça soit à cause de ML. Tente de lancer le morceau de code dans un projet de test et tu verras.
Non, à mon avis c'est dû à des effets de bord et c'est quasiment impossible à debugger. Ça m'est arrivé l'autre jour et il m'a bien fallu une heure pour comprendre le problème.
Citer : Posté le 02/01/2015 20:17 | #
Bon au final ce bug m'a été utile car il m'a obligé à recoder toute une partie de mon programme assez mal codée que je voulais refaire depuis longtemps et en plus ça remarche comme avant
Citer : Posté le 04/01/2015 21:46 | #
Bon au final ce bug m'a été utile car il m'a obligé à recoder toute une partie de mon programme assez mal codée que je voulais refaire depuis longtemps et en plus ça remarche comme avant
C'est bien ce que je disais :3