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

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fx-CG20 ColorLib
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

fx-CG20 ColorLib

Posté le 06/10/2013 17:36

Salut à tous et à toutes

Voilà après avoir ouvert un topic sur les meilleurs fonctions pour programmer en C sur PRIZM(lien), j'ai décidé d'en faire une librairie qui les compilera afin de ne plus avoir à les chercher pendant des heures .Ce sera donc la ColorLib .

Voici la version 0.9 car le code est a vérifier et à tester sur fx-CG20. Ce n'est pas la version finale car il me manque des fonctions (tracer un rectangle, ...) et il faudra écrire la doc dessus.


N'hésiter pas à me soutenir et à me faire part de vos remarques et problèmes.


Topic pour proposer d'autres fonctions intéressantes




Fichier joint


Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 12/10/2013 15:39 | #


oui
S'il te plait

Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/10/2013 18:09 | #


Ya pas de problèmes! Inscris-toi sur Github

Ajouté le 12/10/2013 à 18:13 :
ColorLib est sur GitHub!

Ajouté le 12/10/2013 à 18:21 :
Je crée une branche le temps de nettoyer ce code. Des prototypes dans un .c, c'est un peu stupide. Si tu relis bien le cours du SdZ, ils t'expliquent pourquoi il faut les mettre dans le .h.

Ajouté le 12/10/2013 à 18:23 :
Oh noon, une fonction abs. J'ai fait une macro pour ça, ça évite d'avoir tout plein de fonctions au même fonctionnement. Ca dégage. Désolé, mais Key_down aussi. Aucun intérêt dans une lib graphique.

Ajouté le 12/10/2013 à 18:30 :
IntStr dégage, et setFps ne narche pas comme ça...

Ajouté le 12/10/2013 à 18:37 :
La branche clean est ma branche de nettoyage de lib.

Ajouté le 12/10/2013 à 18:38 :
Une fois inscrit, envoie moi un mail m'indiquant ton id Github que je puisse t'ajouter, Lancelot.
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 13/10/2013 12:54 | #


On trouve où l'ID Github
Doit-je installer sur mon ordi ?
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 13/10/2013 13:11 | #


L'ID c'est le pseudo (plus ou moins) que tu as choisis lors de ton inscription sur Github, et après l'installer ou pas, ça dépend ce que tu veux en faire
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 13/10/2013 20:27 | #


Eiyeron a écrit :
Des prototypes dans un .c, c'est un peu stupide. Si tu relis bien le cours du SdZ, ils t'expliquent pourquoi il faut les mettre dans le .h.


Oui je connais ce tuto, mais j'avais penser plus efficace de faire comme la MonochromeLib
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 13/10/2013 20:30 | #


Dans MonochromeLib les prototypes sont dans le .h
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 13/10/2013 21:43 | #


Lancelot, pourquoi tu as forké? Là, tu as crée une copie du repo qui ne sera modifiable que par toi. je t'aurais mis en collaborateur, tu pourrais après modifier le mien...

Ajouté le 13/10/2013 à 21:49 :
Supprime ton fork, t'es dans la liste à present.
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 18/10/2013 19:12 | #


Any news ? Ca me semble calme sur GitHub
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 18/10/2013 19:24 | #


Je ne m'en suis pas encore servi cette semaine car trop de boulot en cours . j'y travaille durant la premiere semaine des vacances
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 20/10/2013 18:05 | # | Fichier joint


Voici la version 0.92

J'ai corriger les fautes que l'on m'a donné

Ajouté le 20/10/2013 à 18:09 :
il faut encore la tester

EDIT : 400 points
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 20/10/2013 18:27 | #


Ah, ça commence à avoir de la gueule !

Juste quelques petites remarques personnelles, t'es pas obligé d'en tenir compte, c'est juste pour chercher la petite bête !

On à encore quelques
short* VRAM = (short*)0xA8000000;
qui trainent !
Quitte à faire un define de la VRAM avec GetVRAMAdress...

Je vois pas vraiment pourquoi tu inclues toujours "rtc.h", enfin je crois savoir pourquoi, mais il me semble que c'est inutile à présent, vu qu'il n'y a plus la fonction setFps

Et, à mon avis, il serait bon de remplacer tout les
Bdisp_SetPoint_VRAM
par la fonction de tracé de pixel de la lib, et ainsi s'affranchir totalement de tout include des libs de base : c'est à dire, plus besoin de <display_syscalls.h> pour le fonctionnement de la lib en elle même, qui deviendrait autonome. Enfin, il faut quand même vérifier avant qu'il n'y ait pas d'autre fonctions de display.h qui trainent !

Sgn() et Abs() existent à deux endroits : il y a les macros et les fonctions... A voir ce que l'on garde. Perso je choisirait les macros, mais il faut faire des tests à nouveau !

Je me rend compte que j'ai quelques autres fonctions sous la main chez moi, je les mets d'ici ce soir si tu veux .

Sinon, content que ça avance comme ça !

Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 20/10/2013 18:47 | #


ok je retiens compte de tes remarques
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 20/10/2013 18:57 | #


ce qui serait bien aussi, c'est une fonction d'affichage de la vram sur l’écran faite maison, car si j'ai bien compris, la fonction d'affichage de la vram bloque l’exécution du programme jusqu'au rafraîchissement (si j'ai bien compris, ce qui n'est pas dit), et une fonction maison pourrait vraiment booster la programmation je pense

(maintenant, il faut sans doute une bonne connaissance bas niveau pour ca)
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 !
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 20/10/2013 19:02 | #


oui je ne n'ai pas encore ces connaissances .

Pourrait-tu me donner cette fonction d'affichage de la vram (je suis un peu perdu dans toutes les fonctions que j'accumule) ?
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 20/10/2013 19:05 | #


Il ne me semble pas que quelqu'un s'y soit attaqué, et c'est relativement complexe à faire "maison".
Sinon, pour l'instant il faut utiliser la fonction incluse dans le sdk de base...
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 20/10/2013 19:15 | #


Pour le define vram, voici mes idées (a tester):
#define VRAM 0xA8000000
ou
#define VRAM GetVRAMAdress
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 20/10/2013 19:17 | #


La seconde !
Enfin plutôt
#define VRAM GetVRAMAdress();


En théorie, ça devrait être bon ! Enfin, à tester quand même .


Ajouté le 20/10/2013 à 19:38 :
Voila, quelques fonctions dont je parlais tout à l'heure.

CL_DrawDiscus
Cliquer pour enrouler


Tracé d'un disque, i.e, un cercle plein.

void CL_drawDiscus(int x0, [purple]int[/purple] y0, [purple]int[/purple] rayon, [purple]int[/purple] couleur)
{
    [purple]int[/purple] k;
    [purple]int[/purple] x,y,d;
    [b][blue]for[/blue][/b] (k=[maroon]0[/maroon]; k <= rayon; k++)
    {
        x = [maroon]0[/maroon];
        y = k;
        d = k - 1;
        [b][blue]while[/blue][/b] (y >= x)
        {
            CL_point( x0 + x, y0 + y, couleur);
            CL_point( x0 + y, y0 + x, couleur);
            CL_point( x0 - x, y0 + y, couleur);
            CL_point( x0 - y, y0 + x, couleur);
            CL_point( x0 + x, y0 - y, couleur);
            CL_point( x0 + y, y0 - x, couleur);
            CL_point( x0 - x, y0 - y, couleur);
            CL_point( x0 - y, y0 - x, couleur);
            [b][blue]if[/blue][/b] (d >= [maroon]2[/maroon]*x)
            {          
                d -=[maroon]2[/maroon]*x+1;
                x++;
            }
            [b][blue]else[/blue][/b] if (d < 2*(k-y))
            {
                d += [maroon]2[/maroon]*y-1;
                y--;
            }
            [b][blue]else[/blue][/b]
            {
                d += [maroon]2[/maroon]*(y-x-1);
                y--;
                x++;
            }
        }
    }
}


CL_Vertical_Line
Cliquer pour enrouler


Nom relativement explicite il me semble

void CL_Vertical_Line(int x, [purple]int[/purple] y1, [purple]int[/purple] y2, unsigned short color)
{
        unsigned short* VRAM = GetVRAMAdress();
        [purple]int[/purple] i;
        [purple]int[/purple] yi = max(min(y1,y2),[maroon]0[/maroon]);
        [purple]int[/purple] yf = min(max(y1,y2),LCD_HEIGHT_PX);
        [b][blue]if[/blue][/b](x < 0 || x > LCD_WIDTH_PX) [b][blue]return[/blue][/b];
        [b][blue]for[/blue][/b](i=yi; i <= yf; i++)
                VRAM[LCD_WIDTH_PX*i + x] = color;
}


CL_Filled_Rectangle
Cliquer pour enrouler


Rectangle plein de sommet A(xi, yi) et B(xi, yi) opposés

void CL_Filled_Rectangle( [purple]int[/purple] xi, [purple]int[/purple] yi, [purple]int[/purple] xi2, [purple]int[/purple] yi2, unsigned short color)
{
        unsigned short* VRAM = GetVRAMAdress();
        [purple]int[/purple] i,j;
        const [purple]int[/purple] x = max(0,min(xi,xi2));
        const [purple]int[/purple] x2 = min( LCD_WIDTH_PX,max(xi,xi2));
        
        const [purple]int[/purple] y = max(0,min(yi,yi2));
        const [purple]int[/purple] y2 = min( LCD_WIDTH_PX,max(yi,yi2));
        
        const [purple]int[/purple] xm = max(x,x2);
        const [purple]int[/purple] ym = max(y,y2);
        
        const [purple]int[/purple] xe = x2-x+1;
        
        VRAM += LCD_WIDTH_PX*y + x;
        [b][blue]for[/blue][/b](j = min(y,y2); j <= ym; j++) {
                [b][blue]for[/blue][/b](i=min(x,x2); i <= xm; i++) {
                        *(VRAM++) = color;
                }
                VRAM += LCD_WIDTH_PX-xe;
        }
}


CL_Getpixel
Cliquer pour enrouler


Retourne la valeur d'un point dans la VRAM.

short CL_Getpixel(short x, short y)
{
    short *VRAM = GetVRAMAdress();
    [b][blue]return[/blue][/b] *(VRAM + (y * LCD_WIDTH_PX) + x);
}


Voila, le DrawCircus peut remplacer l'ancienne fonction de cercle remplit car plus optimisée et plus précise !
Après libre à toi d'en faire une similaire avec un canal alpha, pareil pour le rectangle !

Bon courage !
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 20/10/2013 19:48 | #


merci Je fait les mises à jours
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 22/10/2013 08:00 | #


T'as compris le système de collaboration? J'espère que tu n'edites pas directement la.branche master.

Ajouté le 22/10/2013 à 11:14 :
Viens de finir de nettoyer le nom des fonctions dans la branche clean. Faudra tester, et on mergera. okay?

Ajouté le 22/10/2013 à 11:15 :
Je me suis basé sur la syntaxe de Pierrot : CL_nom_fonction. Fais la même chose si tu veux que la lib soit cohérente!
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 22/10/2013 11:29 | #


je ne me suis pas tellement servit de GitHub

Ajouté le 22/10/2013 à 12:14 :
ok j'ai repris tes améliorations


Ajouté le 22/10/2013 à 12:23 :
je m'arrive pas à me créer un branche pour faire mes modification
je suis encore perdu dans ce site en anglais.
je copie ton code et travaille sur Notepad++ sur l'ordi. Une fois la branche crée, je rajouterai mon code.

Ajouté le 22/10/2013 à 12:26 :
bon, j'ai une erreur recupante qui arrive plsieurs fois dans le code dont je n'arrive pas à me débarrasser

C:/PrizmSDK-0.3/projects/colorlib1/src/ColorLib2.c: In function 'CL_point':
C:/PrizmSDK-0.3/projects/colorlib1/src/ColorLib2.c:103:11: error: expected identifier or '(' before numeric constant
C:/PrizmSDK-0.3/projects/colorlib1/src/ColorLib2.c:104:10: error: lvalue required as left operand of assignment
C:/PrizmSDK-0.3/projects/colorlib1/src/ColorLib2.c:105:11: error: lvalue required as increment operand
C:/PrizmSDK-0.3/projects/colorlib1/src/ColorLib2.c:106:11: error: lvalue required as increment operand


Ajouté le 22/10/2013 à 12:27 :
Surement un problème de vram ?
Voici le code correspondant:

101 void CL_point(int x, [purple]int[/purple] y, [purple]int[/purple] color)
102 {
103     char* VRAM = (char* 0xA8000000);
104      VRAM += [maroon]2[/maroon]*(y*LCD_WIDTH_PX + x);
105     *(VRAM++) = (color&0x0000FF00)>>8;
106     *(VRAM++) = (color&0x000000FF);
107     [b][blue]return[/blue][/b];
108 }


Ajouté le 22/10/2013 à 12:34 :
Une fois que le problème sera résolut, je rajouterai les fonctions manquantes de ta version (cercle , polygone, ...)
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

Citer : Posté le 22/10/2013 12:39 | #


Mets la parenthèse fermante après char* pour voir .

Sinon, si t'es perdu sur github, tu peux toujours essayer ça : http://try.github.io/levels/1/challenges/1

C'est en anglais, mais ça peut aider

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 41 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