1

G un problème avec les écras virtuels...
Je voudrais avoir un écran virtuel vierge, afficher ce que j'ai à afficher dessus puis l'ajouter (OR) à l'écran courant au lieu de remplacer l'ancien par le nouveau.

Donc :

SCR_RECT scr_ttl={{0,0,calc(159,239),calc(99,127)}};
char bfr_vrt[3840];
PortSet(bfr_vrt,239,127);
clrscr();
[Affichage, etc...]
BitmapPut(0,0,bfr_vrt,&scr_ttl,A_NORMAL);
PortRestore();

Mais ça marche pas sad
Pourtant le bfr_vrt contient bien ce que je veux, puisque quand j'utilise memcpy je vois bien mes graphismes dessus (par contre le reste de l'écran devient blanc, c pour ça que je veux aussi garder l'ancien écran).

Bref comment faire pour OR-er le nouvel écran par dessus l'ancien ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

avec genlib ça rule ou au pire extgraph : ya des routines de fastcopyscreen
avatar
納 豆パワー!
I becamed a natto!!!1!one!

3

et sans genlib ni extgraph t'as pas une solution ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Remplace:
BitmapPut(0,0,bfr_vrt,&scr_ttl,A_NORMAL);
par:
memcpy(0x4c00,bfr_vrt,3840);
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

Bah oui, mais comme je l'ai marqué dans l'avant dernière phrase, memcpy marche, mais il remplace le LCD_MEM par mon buffer, or je voudrais simplement ajouter le buffer sur le LCD_MEM (l'ajouter en mode normal, comme quand on place un sprite en mode OR)
[edit]Edité par Bob 64 le 05-04-2002 à 00:25:20[/edit]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Bon, alors:
SCR_RECT scr_ttl={{0,0,calc(159,239),calc(99,127)}};
short bfr_vrt[3844/2];
bfr_vrt[0]=128;bfr_vrt[1]=240;
PortSet(bfr_vrt+2,239,127);
clrscr();
//[Affichage, etc...]
PortRestore();
BitmapPut(0,0,bfr_vrt,&scr_ttl,A_NORMAL);
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Ça n'affiche tjrs rien sad (enfin ça affiche avec memcpy mais pas BitmapPut)

Enfin merci quand même...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

memcpy c + rapide que BitmapPut, non ?

Elle est implémentée en C ou en assembleur ?
whether the weather be fine
or whether the weather be not,
whatever the weather,
we'll weather the weather

9

ça n'a pas le même usage. Memcpy copie d'un buffer sur l'autre, en écrasant tout. BitmapPut aurait l'avantage de préserver l'ancien fond, et d'ajouter le nouveau au dessus.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Et BitmapPut est implémentée en quoi ?
whether the weather be fine
or whether the weather be not,
whatever the weather,
we'll weather the weather

11

j'en ai aucune idée...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Non parce que si c en basic, je l'utilise pas...
whether the weather be fine
or whether the weather be not,
whatever the weather,
we'll weather the weather

13

T'en a déjà vu beaucoup des fonctions de TIGCC en basic ? triso
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

un code à l'arrache:

int i;
char *buf=malloc(3840);//les 3840 bytes de l'ecran
PortSet(buf,239,127);//ne pas changer en fct de la cal surtout!
[tes gfx...]
for(i=0;i<=3840;i++)
 *(LCD_MEM+i)|=*(buf+i);
PortRestore();
free(buf);


optimise toi meme ça t'apprendra!

tu peux essayer de remplacer les chars par des longs
(attention un ptr long est tjrs à une adresse paire sinon, barre noire!)
tu peux optimiser d'autres trucs...
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

15

2 erreurs sur la ligne *(LCD_MEM+i)|=*(buf+i); sad

Au fait ça veut dire quoi |=* ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

ué, triso
whether the weather be fine
or whether the weather be not,
whatever the weather,
we'll weather the weather

17

vtff
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

deja tu remplaces 3840 par 3839,
a|=b ça veut direa=a|b
c'est un ou binaire
je capte pas, keskimarchepas?
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

19

je connais pas les | binaires grin

Les 2 erreurs sont :
- Dereferencing 'void *' pointer
- invalid use of void expression
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

essaye ça:

int i;
char *buf=malloc(3839);//les 3840 bytes de l'ecran
PortSet(buf,239,127);//ne pas changer en fct de la cal surtout!
[tes gfx...]
for(i=0;i<=3840;i++)
 *((unsigned char*)LCD_MEM+i)|=*(buf+i);
PortRestore();
free(buf);
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

21

toptoptop

Merci lovelovelove

(est-ce que tu peux juste m'expliquer ce que fait l'opperateur | stp ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

Heu en fait la réponse se trouve dans la doc de TIGCC, j'y cours...

merci pour ton algo ! (je ne sais pas comment l'optimiser, mais comme ça c très bien wink)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

BitmapPut rame je crois comparé à memcopy() ...

il me semble que cette première est une fonction TIOS, donc pas hyper rapide ...
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

24

Obligé car memcpy c hyperrapide...

25

>janjan2: deja tu remplaces 3840 par 3839,

NON! C'est bien malloc(3840) qu'il faut mettre, pas malloc(3839). Tu ne remarqueras pas la différence dans ce cas particulier parce que la taille effectivement allouée d'un handle est toujours paire et que malloc(3839) allouera donc également au moins 3840 octets, mais si par exemple tu voulais 3841 octets, malloc(3840) ne suffirait pas!
[edit]Edité par Kevin Kofler le 06-04-2002 à 03:32:12[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

je sais bienroll
j'en ai bavé pour le comprendre en faisant ma pemiere routine de sprite
qui me faisait des adress error tt le tps

mais c'est bien 3839 pour la boucle
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

27

Ah encore une pitite question :

Quand on a définit un SCR_RECT, comment peut-on au cours du programme ajouter ou soustraire qqchose à une des coordonnées ?

En gros :
SCR_RECT zone={{0,0,159,99}};
zone[2]+=1;


comment remplacer la 2eme ligne ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

28

tu fais ça, je crois que ça marchera : zone.xy.y0-=1;

29

toptoptop
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)