Seuls les membres ayant 30 points peuvent parler sur le chat.
Menu
Liste des logiciels
Nom Date
Libs Python Graph 35+E II et Graph 90+E
SDK G85 - EasyInput
SDK G85 - Memory and Files access
SDK G85 - Easy Coding
SDK G85 - Easy grayscales
SDK G85 - GrayScreenshotLib
SDK G85 - MonochromeLib
Lua - Tile Motor


Visiteurs :
Si vous souhaitez soumettre un logiciel veuillez prendre contact avec un administrateur seuls à pouvoir ajouter des logiciels par mesure de sécurité.
Logiciels >> Snippets >> SDK G85 - Easy grayscales
SDK G85 - Easy grayscales
Ajouté par :
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message
Pour les calculatrices : Graph 35+ USB, 35+E, 75, 75+, 75+E
Ajouté le : 2011-05-21 10:35
Nombre de visites de la page : 8535

Fichiers à télécharger :

¤ gray.zip 4 Ko (714 téléchargements)

Description :

Ce snippet contient un moteur de niveaux de gris facile à utiliser, ainsi que quelques fonctions de dessin.

1 - Le moteur de niveaux de gris
Les sources sont à la base tirées de Revolution-fx de kucalc (merci à lui), mais je les ai allégées, et j'en ai simplifié l'utilisation.
au début du programme, il faut appeler gray_init()
Cette fonction se charge d'allouer la mémoire pour les 4 buffers vidéo (2 pour l'écran, 2 pour la mémoire vidéo). Elle se charge aussi d'initialiser le timer avec les bonnes fréquences. Elle retourne 0 en cas d'erreur, 1 sinon.
Ensuite, vous pouvez appeler gray_clearVRAM() pour effacer les données des 2 buffers de la mémoire vidéo, puis faire votre dessin, et ensuite appeler gray_swapBuffers() qui va se charger d'inverser l'écran et la mémoire vidéo, pour afficher les données de la VRAM à l'écran.
Pour arrêter le moteur de niveaux de gris, appelez gray_quit() et n'oubliez pas d'appeler reset_calc() à la fin du programme, pour redémarrer proprement la calculatrice (indispensable après l'utilisation de ce niveaux de gris).


2 - Les fonctions de dessin
Pour ne pas laisser le moteur de niveaux de gris tout nu, j'y ai ajouté quelques fonctions de dessin pour servir d'exemple.
Nous avons donc : draw_bmp qui dessine une image de nimporte quelle taille sur un des deux buffers de la mémoire vidéo
Et aussi, les fonction draw_read_pix et draw_write_pix, qui permettent de lire et d'écrire un pixel selon sa couleur (0=blanc, 1=gris clair, 2=gris foncé, 3=noir).

Un petit README est fourni dans le zip, qui récapitule grosso-modo ce qui est écrit ici.

Commentaires :

Pages: Précédente | 1, 2, 3

CritorEn ligneAdministrateurPoints: 2061 Défis: 18 Message
Posté le 27-01-2015 à 17:49 | #
Désolé pour le déterrage.

Le problème du Reset_Calc(); à appeler juste après GrayEnd(); a-t-il été réglé, que ce soit par une mise à jour ou une nouvelle bibliothèque ?

Merci.
LephenixnoirEn ligneAdministrateurPoints: 19191 Défis: 142 Message
Posté le 27-01-2015 à 19:14 | #
Rien de nouveau à ma connaissance.
Je travaille sur un tel programme, en modifiant la valeur de vbr comme le faisait Kucalc, mais en redirigeant les interruptions pour ne pas les perdre. Kristaba m'avait donné une base de code qui remplissait ce rôle mais je me suis récemment aperçu qu'elle ne fonctionnait pas sur ma calculatrice, donc point mort pour l'instant.
RedcmdEn ligneMembrePoints: 290 Défis: 5 Message
Posté le 25-01-2020 à 09:08 | #
Its working on my CASIO fx-9750GII OS 02.04.201 SH4
I have to hold down a key when it starts
So hold [EXE] down for a few sec instead of just tapping it
not sure if I have to hold it when the program starts or when gray_init() is run
If I don't hold a key, my calc instantly restarts

Also my program doesn't quit when running on my calc, in the SDK the program quits after half a second
So I have to press the restart button on the back

The gray colour has a werid flickering horzontal strip pattern on it
It doesn't seem to be vsync lines
Every 2nd line is lighter and every other 2nd line is darker
every screen refresh the lines alternative between lighter and darker gray

Sometimes it wont work ever and just crashes instantly 100% of the time
But if I rebuild it in the SDK and redownload it, sometimes it will work and it will always work untill I rebuild and redownload

My current testing code
#include "fxlib.h"
#include "gray.c"
#include "draw.c"

int AddIn_main(int isAppli, unsigned short OptionNum) {
    unsigned int i, x, y;

    gray_init();
    gray_clearVRAM();

    for (x = 0; x < 32; x++) {
        for (y = 0; y < 32; y++) {
            draw_write_pix(x, y, 2, screen->DD1, screen->DD2);
        }
    }

    for (i = 0; i < 0x100000; i++);

    gray_quit();
    reset_calc();

    return 1;
}

#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum) {
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
LephenixnoirEn ligneAdministrateurPoints: 19191 Défis: 142 Message
Posté le 25-01-2020 à 09:24 | #
You have found PLL's simplified version of Kucalc's engine. This engine hijacks interrupts to use a hardware timer, effectively disabling all other interrupts in the system.

Hence GetKey() is unusable, SetTimer() is unusable, and much more. You absolutely have to use IsKeyDown() and you must crash-reset at the end to restore the thing.

As far as I remember this causes EBRs on the emulator (an error with message "Exception Blocked Reset!"), which was known as the bane of Planète Casio's C programmers for a long time. x)

There's no update or stability improvement to expect here, this code dates all the way back to 2007 and the concept is still as broken as it was originally...

Pages: Précédente | 1, 2, 3

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