Posté le 30/05/2018 18:37
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 309 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 07/06/2018 15:34 | #
D'ailleurs question complexe: comment fonctionne GetKey() ? (juste le fonctionnement de la touche MENU)
Citer : Posté le 07/06/2018 15:39 | #
Voici comment est découpé le système d'exploitation de Casio :
(30%) RUN/MAT, STAT, etc.
(30%) syscalls
(40%) GetKey()
La question est donc très complexe. Pour le menu, en gros :
- Quand tu appuies sur MENU, GetKey() dit au système, « eh, affiche le menu »
- Le système affiche le MENU en lisant la table des add-ins qui est dans la RAM du système
- Il fait donc d'autres appels à GetKey() mais ne touche pas à la RAM de l'add-in
- Si on revient dans l'add-in, le GetKey() de l'add-in fait comme si de rien n'était
- Sinon, le système décharge complètement l'add-in et lance une autre application
Ça marche vraiment parce que les données et le code du menu principal sont isolés et indépendants de l'add-in. Et aussi indépendants de sa pile (même s'ils peuvent se mettre dessus, ça je ne sais pas).
Bon, et c'est beaucoup des hypothèses ce que je raconte là, mais je suis confiant que ça se passe comme ça.
Citer : Posté le 07/06/2018 22:52 | #
Si tu utilises GetKey() et que ton utilisateur quitte le programme en appuyant sur MENU pendant un appel à GetKey(), alors il pourra revenir. Dans l'idéal tu ne dois jamais sortir de la fonction main().
Non je n'utilise pas GetKey(), j'utilise ça :
{
const unsigned short* keyboard_register = (unsigned short*)0xA44B0000;
int row, col, word, bit;
row = basic_keycode%10;
col = basic_keycode/10-1;
word = row>>1;
bit = col + ((row&1)<<3);
return (0 != (keyboard_register[word] & 1<<bit));
}
que j'ai volé je ne sais plus où...
Ceci dit, ne pas avoir le droit de sortir de main() est une concept... ahem... interessant ?
Comment on quitte, du coup ?
Citer : Posté le 07/06/2018 22:56 | #
Tu dois utiliser GetKey() à chaque instant où tu veux que :
1. Le joueur puisse revenir au menu
2. Si le joueur revient au menu, il peut retourner dans ton application et la retrouver en l'état
Il n'y a pas d'autre possibilité !
Btw : si tu utilises uniquement key_down() alors ton programme ne se met jamais en « pause » lorsqu'il attend les entrées utilisateur, ce qui est très mauvais pour la batterie.