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

Forum Casio - Autres questions


Index du Forum » Autres questions » Add-in / Comment rafraîchir l'écran de la calculatrice sans qu'une touche soit pressée?
Nosiulconc Hors ligne Membre Points: 25 Défis: 0 Message

Add-in / Comment rafraîchir l'écran de la calculatrice sans qu'une touche soit pressée?

Posté le 30/07/2021 23:01

Bonjour,

Je me suis intéressé il n'y a pas si longtemps à la création d'Add-in et, depuis, j'ai mis le doigt sur un problème plutôt gênant:
Je n'arrive pas à rafraîchir l'écran de la calculatrice sans qu'il faille appuyer sur une touche (n'importe laquelle).

Pour être plus précis, je suis sur le SDK de Casio (fx-9860G) en SH3 et j'utilise MonochromeLib.

Tout ce que je sais c'est que le problème n'est pas causé par l'utilisation de la fonction IsKeyDown().

Est-ce donc un problème inerrant à l'émulateur embarqué dans le logiciel, est-ce que j'utilise de la mauvaise manière ML_clear_vram() et ML_display_vram() ou est-ce que c'est une contrainte de base que l'on doit se farcir? (ou le SH3 peut-être?)

Merci pour la réponse, je suis désespéré


Redcmd Hors ligne Membre Points: 341 Défis: 7 Message

Citer : Posté le 30/07/2021 23:19 | #


ML_display_vram() is used to display the current data in the vram on to the display
ML_clear_vram() clears all the data in the vram
(vram is just a section of memory that is commonly used for storaging the pixels for the display)
you try the default builtin functions Bdisp_PutDisp_DD() and Bdisp_AllClr_VRAM()

Also depending on which calculator you have, IsKeyDown() won't work because the software and hardware is different to that of the emulator
And all display functions don't work correctly on some calculators as well
(there are fixes for both)

Can you send us a copy of your code please?
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 31/07/2021 08:32 | #


Salut ! Il n'y a pas d'arnaque normalement, appeler ML_display_vram() ou Bdisp_PutDisp_DD() rafraîchit l'écran quoi qu'il arrive.

Deux pistes de recherche :
  • GetKey() appelle implicitement Bdisp_PutDisp_DD(). Vérifie que l'écran est bien rafraîchi manuellement quand tu n'utilises pas GetKey().
  • Ton programme peut aussi être bloqué tant que tu n'appuies par sur une touche ; GetKey() en particulier bloque (contrairement à son cousin en Basic CASIO), ce qui peut empêcher le programme de progresser comme tu le veux.

Bon courage
Nosiulconc Hors ligne Membre Points: 25 Défis: 0 Message

Citer : Posté le 31/07/2021 10:07 | #


Merci encore pour les réponses!

Il faut croire que la nuit porte conseil, l'erreur était sous mon nez depuis le début:
C'est la fonction GetKey(&key) qui bloque la vram à chaque exécution de la boucle while(1).

Cependant autre question alors, comment faire en sorte que la vram ne se bloque pas?

Voici le code pour ceux qui sont intéressés:

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    Objects[0] = Cube;
    Scene[0] = Obj_1;

    while(1)
    {
        if(IsKeyDown(KEY_CTRL_UP))
        {
            CamPos.x+=CamZ.x*5;
            CamPos.y+=CamZ.y*5;
            CamPos.z+=CamZ.z*5;
        }
        else if(IsKeyDown(KEY_CTRL_DOWN))
        {
            CamPos.x-=CamZ.x*5;
            CamPos.y-=CamZ.y*5;
            CamPos.z-=CamZ.z*5;
        }
        else if(IsKeyDown(KEY_CTRL_RIGHT))
        {
            RotateCamZ(0.1);
        }
        else if(IsKeyDown(KEY_CTRL_LEFT))
        {
            RotateCamZ(-0.1);
        }

        Frame();
            
        GetKey(&key);
    }

    return 1;
}
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 31/07/2021 13:07 | #


Ce n'est pas la VRAM qui est bloquée, c'est le programme tout entier. Si tu veux éliminer GetKey(), il suffit de ne le pas l'appeler et de réguler la vitesse du programme avec un timer.

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 - 2023 | Il y a 49 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