π
<-

Langage C sur ez80: Vos questions/problèmes

Assembleur, Axe, C/C++, ICE...

Langage C sur ez80: Vos questions/problèmes

Unread postby Wistaro » 05 Feb 2017, 19:06

Bonjour à tous,

Vous avez peut-être commencé à programmer en langage C sur votre calculatrice, et vous bloquez sur un code qui ne fonctionne pas? Vous avez des ram cleared intempestifs? Vous avez tout essayé et rien ne fonctionne?

Pas de problème.

Ici, vous pourrez poser votre question ou expliquer votre souci à l'ensemble de la communauté.
Les autres internautes se chargeront de vous répondre!

Souvenez-vous, il n'y a pas de questions bêtes :)

Ce topic est dédié aux questions/problèmes et n'est pas destiné à vous faire le programme de A à Z.
Les membres peuvent vous débloquer, mais ils ne vous donnerons jamais le code "clef en main"!


Retrouvez un tutoriel en français sur le langage C ici: viewtopic.php?f=12&t=18775 ou en anglais ici:
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3188
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby Wistaro » 11 Feb 2017, 18:57

Bon j'inaugure ce forum avec un question qui peut sembler bête mais qui me pose problème.

Mon souci est très simple. Je souhaite déplacer un/plusieurs sprites sur un autre assemblage de sprite.

On m'a expliqué (et je me suis renseigné) qu'il fallait utiliser la méthode du "double-buffering" pour éviter les traces laissées par le passage du sprite.

Malheureusement, je dois sûrement mal m'y prendre.
Voici comment je procède:
Le curseur est le sprite que l'on souhaite faire bouger par dessus.

Code: Select all
On récupère la fenêtre dans un sprite de la taille de l'écran dans un pointeur "tototo"
Affichage en transparence du curseur à la position du curseur
Boucle While(){

     si fleche haut:
            Incrémentation du compteur pour le curseur
            Affichage du sprite tototo
            Affichage en transparence du curseur à la nouvelle position
            Affichage du sprite tototo
            Affichage en transparence du curseur à la nouvelle position
     FinSi
     Si fleche bas: [...] // idem
     Si fleche gauche: [...] //idem
     Si fleche droite: [...]  //idem

           
}


Après de nombreux tests infructueux, je fais appel à vous :p
Auriez-vous une solution? Ma logique n'est-elle pas la bonne?

Merci!

(PS: le code est disponible ici en read/write: https://tiplanet.org/pb/?id=11600_14853 ... ile=main.c )
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3188
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby MateoConLechuga » 12 Feb 2017, 03:15

I modified your main function code so that way you can see how to do it :) There isn't any double buffering, but if you have questions on how to do it feel free to post. Enjoy!
User avatar
MateoConLechugaVIP++
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 60.5%
 
Posts: 50
Joined: 12 Oct 2015, 21:56
Gender: Male
Calculator(s):
MyCalcs profile
GitHub: mateoconlechuga

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby Wistaro » 13 Feb 2017, 16:08

MateoConLechuga wrote:I modified your main function code so that way you can see how to do it :) There isn't any double buffering, but if you have questions on how to do it feel free to post. Enjoy!


Big thanks I understand better :)

I just add "gfx_GetSprite(behind_cursor, cursor_x, cursor_y);" in the moving conditions, to avoid cursor "flapping" effect.

Thanks for unlocking me :)
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3188
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby Litarvan » 09 Mar 2017, 15:59

Bonjour !

Je commence la programmation C sur CE depuis peu, et j'essaie pour l'instant d'afficher un splash tout simple.
Hors, je n'arrive pas à afficher du texte et une sprite sur le même écran.

Si je dessine la sprite, le texte ensuite sera invisible.
Si je dessine la sprite, puis remet la palette de base, le texte sera visible mais la sprite avec des couleurs moches.
Si je dessine pas la sprite, le texte sera visible.
Et dans ces trois cas, le deuxième texte que je dessine est buggé.

Voilà mon code :

Code: Select all
    gfx_SetPalette(logo_gfx_pal, sizeof(logo_gfx_pal), 0);

    gfx_SetDrawBuffer();

    gfx_Sprite(logo, 50, 75);

    gfx_SetDefaultPalette(gfx_8bpp);
    gfx_SetTextFGColor(gfx_black);
    gfx_SetMonospaceFont(8);

    gfx_PrintStringXY(strcat("Paint v", VERSION), 120, 80);
    gfx_PrintStringXY("Appuyez sur une touche", 120, 110);

    gfx_SwapDraw();


Voilà le résultat de ce code (qui est le deuxième cas que j'ai décrit).

Image

Merci d'avance pour votre aide :/
User avatar
Litarvan
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Level up: 0%
 
Posts: 9
Joined: 21 Oct 2016, 22:27
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: 2nde

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby MateoConLechuga » 09 Mar 2017, 20:18

Since you converted your image using a custom palette rather than using the default palette (xlibc) option, you have to specify the correct text foreground color. You can specify for example something like this instead:

Code: Select all
#define TEXT_FG_COLOR 254

    gfx_SetPalette(logo_gfx_pal, sizeof(logo_gfx_pal), 0);

    gfx_SetDrawBuffer();

    gfx_Sprite(logo, 50, 75);

    // gfx_SetDefaultPalette(gfx_8bpp);
    // gfx_SetTextFGColor(gfx_black);
    gfx_palette[TEXT_FG_COLOR] = gfx_RGBTo1555(0, 0, 0);
    gfx_SetTextFGColor(TEXT_FG_COLOR);
    gfx_SetMonospaceFont(8);

    // gfx_PrintStringXY(strcat("Paint v", VERSION), 120, 80); // This line is incorrect
    gfx_PrintStringXY("Appuyez sur une touche", 120, 110);

    gfx_SwapDraw();


Alternatively you can look at what colors are generated in the convpng output using the `#OutputPaletteImage` option as well, and use one of those indexes instead. Or just add the line `#Palette : xlibc`

Also, strcat doesn't work that way. You have to allocate space in your buffer to store the resulting string.
User avatar
MateoConLechugaVIP++
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 60.5%
 
Posts: 50
Joined: 12 Oct 2015, 21:56
Gender: Male
Calculator(s):
MyCalcs profile
GitHub: mateoconlechuga

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby Litarvan » 10 Mar 2017, 14:05

Works perfectly ! Thanks a lot, your work is awesome
User avatar
Litarvan
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Level up: 0%
 
Posts: 9
Joined: 21 Oct 2016, 22:27
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: 2nde

Re: Langage C sur ez80: Vos questions/problèmes

Unread postby Adriweb » 10 Mar 2017, 14:07

You can also use a (global) temp buffer for string operations if need be, it avois the "heavy" heap allocs, and strcat (etc.) works just fine as well

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
993 utilisateurs:
>960 invités
>26 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)