Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [C]Easy Coding
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

[C]Easy Coding

Posté le 03/07/2011 22:53

SAlut à tous!
Je viens ici présenter Easy Coding, alias ECode, petit projet que je développe en même temps que coder en C des jeux/progs, ave cla précieuse aide de KekevVTT...

Qui n'a jamais eu marre d'avoir pleins de petites fonctions traîner ici ou là-bas, fonctions très utiles, mais que vous devez à chaque fois réécrire/recopier?

Avec Easy Coding, vous aurez une petite lib de fonctions toutes utiles et toutes chouettes, du Int to String, jusqu'à la détermination de la vlaeur d'un bit dans un int!

Désormais, ECode détient des fonctions de détections de touches de nouvelles génération, dignes de FAstKeyDown, mais avec la compatibilité en prime! Fini les versions G75 plus lentes que les G85+! Fini les boucles de jeu ralenties pour rien!

Voici une petite liste non exhaustive venant du .h actuel
typedef enum {EMUlATOR, G35, G75, G85, G85SD, G95, UNDEFINED} Model;


/**MODEL DETECTION**/
char isEmulator();
char isG35p75();
char isG75();  // BESOIN DE LA VALEUR!!!
char isG85();
char isG85SD();
char isG95();
char hasSD();
Model modelDetector();

/**STRING MANIUPLATION**/
char* toLower(unsigned char* str, unsigned int len);
char* toUpper(unsigned char* str, unsigned int len);
char* strMirror(unsigned char* str, unsigned int len);
char* strRotate(unsigned char* str, unsigned int len, unsigned char mov);
void printf(unsigned char x, unsigned char y, unsigned char str, int mode);
void printn(unsigned char x, unsigned char y, int n, unsigned char mode);

/**TO STRING OPERATIONS**/
unsigned char* intToStr(char* c, int n);
unsigned char* uintToStr(char* c, unsigned int n);
unsigned char* charToStr(char* c, char n);
unsigned char* ucharToStr(char* c, unsigned char n);
unsigned char* floatToStr(char* c, float f, int pecision);

/**TO NUMBER**/
char strToChar(char* c);
unsigned char strToUchar(char* c);
int strToInt(char* c);
unsigned int strToUint(char* c);

/**TO HEX**/
char* charToHex(char* result, unsigned char hex);
char* intToHex(char* result, unsigned int hex);

/**BITS OPERATIONS**/
char readBit_char(char num, char index);
char inverseBit_char(char num, char index);
char upBit_char(char num, char index);
char downBit_char(char num, char index);
char readBit_int(int num, char index);
int inverseBit_int(int num, char index);
int upBit_int(int num, char index);
int downBit_int(int num, char index);

/**KEY DETECTION**/
unsigned char KeyDown( unsigned char code);
unsigned char KeyUp( unsigned char code);
unsigned char AnyKey();


/**OTHERS**/
char* input(char* c, int x, int y, int longueur, char nb);
int numArray_char(char* arr);
int numArray_int(char* arr);


Ca donne envie?

Ce n'est qu'un projet, donc je ne publie pas directement les sources, mais peut-être après avoir étoffé le bousin

?-Pourquoi avoir fait cette lib?
R-Je me sentais pas d'avoir à chaque fois une lib standard de 2ko pour une fonction, donc j'ai fait ici des fonctions facilement sélectionnables, et qui ne dépendent de rien (sauf input, mais fxlib.h, c'est LE fichier, quoi!).

Ainsi vous pouvez avoir aussi bien une fonction d'appelée, que toute la lib, en un seul define!

LIB RELEASED! Sous license Creative Commons:
C'est à dire que vous pouvez le modifier, le publier, l'utiliser, mais à condition de le republier sous les mêmes conditions ( même license) et d'iattribuer l'oeuvre originale, c'est à dire indiquer au moins mon pseudo Eiyeron dans les sources, ou dans le programme en execution.

Maj du 28/08/2011 à 1:23: AJout de la détection de la carte SD, et correction de la doc...
Mini Hotfix à 11:58: correction de AnyKeyDown.
Re Hfix pour recorrection. Décidemment!
05/09/2011 10:33 : Minif fix de nom de fonctions

18/09/2011 15:21: J'ai enfin les codes pour G75

13/10/2011: après un oubli, j'esaye de réparer mon eeruer en ajoutant d'autres corrections pour des fonctions. Il me reste à corrigerquelques trucs, mais il me faut tester.

18/10/2011: COrrections de KevkevVTT, qui mérite sa place de co-programmeur
Hey! KeyDOwn fonctionne avec un cpuspeed dans le caisson! o/

Fichier joint


Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 14/04/2012 09:07 | #


Suite à mes expérimentations sur PRGM2, je me suis rendu compte que la fonction ML_get_contrast() de MonochromeLib ne fonctionne pas.

Comme ta lib est déjà bien calée en détection des modèles, est-ce que tu pourrais rajouter un fonction qui renvoie la bonne valeur du contraste pour chaque modèle ?
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/04/2012 11:44 | #


Je vais essayer de me renseigner la dessus, mais la fonction qu'il y a dans PRGM2 marche chez moi!
Kevkevvtt Hors ligne Membre Points: 819 Défis: 17 Message

Citer : Posté le 14/04/2012 11:58 | #


Eiyeron a écrit :

Je vais essayer de me renseigner la dessus, mais la fonction qu'il y a dans PRGM2 marche chez moi!

Justement, c'est ça le truc : le contraste dépend de la calculatrice utilisée.
Programmer et rouler, Je ne fais que ça
PRO CONVERT le meilleur programme de conversion sur casio !
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 14/04/2012 13:07 | #


Eiyeron a écrit :

Je vais essayer de me renseigner la dessus, mais la fonction qu'il y a dans PRGM2 marche chez moi!

PierrotLL m'a confirmé que la fonction de MonochromeLib ne marche pas.

Kevkevvtt a écrit :

Justement, c'est ça le truc : le contraste dépend de la calculatrice utilisée.

C'est pour ça que je demande ici.

Il faudrait rajouter une fonction du genre :
int Contraste_init()
{
    int contraste = 0;
    if(isG35p75()) contraste = 161;
    if(isG75()) contraste = 170;
    if(isG85()) contraste = 175;
    if(isG85SD()) contraste = 175;
    if(isG95()) contraste = 170;
    return contraste;
}

Après y'a plus qu'à déterminer les bonnes valeurs.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 19:51 | #


une petite question, que renvoie AnyKey()? Et pourquoi on ne met pas de &key en parametre de la fonction? J'ai essayé de comprendreen regardant le code mais je ne comprends pas "return *((unsigned char*)0xA4000120)!=0xFF;" on dirait limite pas du C je trouve...
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 20:38 | #


c'est un syscall, CAD une fonction systeme, qui effectivement si tu ne la connait pas est incomprehensible...
et a mon avis la fonction renvoye 1 si une touche est appuyée, ou 0 si aucune touche n'est appuyée
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 20:42 | #


C'est PAR-FAIT !
mais c'est bizarre la fonction est déclarée en char*....
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 12/01/2013 20:50 | #


*((unsigned char*)0xA4000120) est un pointeur vers une zone fixe de la mémoire, donc c'est une comparaison entre la valeur sur la quelle pointe ce pointeur et 255 (0xFF en exadécimal).
C'est on ne peut plus du C...
en gros, le return vaudra 0 si la valeur a la case 0xA400 0120 (pas vraiment convertible, mais j'ai fait une algo qui me donne 2751463712) est égale a 0xFF (255), et sinon renvoie 1

Ajouté le 12/01/2013 à 20:53 :
Dodormeur a écrit :
c\'est un syscall, CAD une fonction systeme

désole de te contredire... mais la il s\'agit d\'une lecture de zone de mémoire, ce qui n\'est pas forcément égal a un syscall (bien que le syscall marche un peux sur le principe, vu que l\'on modifie une zone de mémoire pour activer une fonction) (ici, il me semble que l\'on regarde la zone de la mémoire ou sont stocké les codes de touches enfoncées)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 20:55 | #


mea culpa
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 12/01/2013 20:57 | #


t’inquiète, moi c'est parce que je travaille sur les syscalls depuis un moment que j'ai pu comprendre plus ou moins comment ils fonctionnent, mais il est vrai que c'est loin d'être évident si on ne comprend pas comment marche les pointeurs et comment est utilisée la mémoire de la calculatrice.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 18/01/2013 20:02 | #


Faut trop pas trop lire mon code, c'est soit du moche, soit du trop optimisé pour être lisible (ce qui est peu le cas)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 29/12/2013 17:52 | #


Comment ça fonctionne char isEmulator(); ?
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 29/12/2013 17:57 | #


tu peux faire :

if(isEmulator)
{
code si c'est sur l'émulateur
}
else
{
code si c'est onCalc
}

En fait, ça retourne 1 si t'es sur l'émulateur, 0 sinon
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 29/12/2013 18:11 | #


Okay, quelqu'un devrait faire une documentation sur cet lib.

PS: J'ai un nouveau logo

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 166 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