1

euh ...
alors voila en fait je suis un gros newbi qui pige rien, et voila mon probleme , je voudrais creer un ecran virtuel qui fasse : la hauteur de l'ecran de la calculatrice (ti89) et 3 fois sa largeur, cad a 99 pixels de hauteur et 477 pixel de longuer sachant que ds les tuto que j'ai lu, un malloc(3840) permet de creer un ecran de 239, 127 pixel
donc ma question est :comment je peux savoir la taille que je dois donner au malloc ?
j"ai lu que l'a fonction sizeof permettait de savoir cela mais elle a pour arguemnt un type (char,short...) et le type des ecran virtuel , c'est void alors comment je fais ??

et de plus cher Hi bou , je suis peut etre un newbi mais sache que l'on peut faire des niveaux de gris et moi j'utilise en ce moment 4 couleurs voila

j'espere que ce sera plus comprehensible merci a ceux qui me repondront
NTW !!!!!

2

Bah... c toi qui créer ton écran virtuel, donc c toi ui donne les dimension. Sinon, Hibou n'as pas tord, c bien 1 bit par pixel. Les nvg s'obtiennent en superposant pendant un certain temps 2 écrans virtuel (en fin, je crois, j'ai jamais fait de nvg).
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

3

donc avec un malloc(3840) je peux faire un screen avec les dimensions que je veux????
NTW !!!!!

4

Les tailles de l'écran c'est pas 239*127 mais 240*128. Pour avoir un écran 3 fois plus large, bah il te faudra 3 fois plus de mémoire, c'est logique. Mais fais attention quand tu recopie cet écran virtuel sur le "vrai" écran, si tu es débutant je pense que tu vas avoir un peu de mal à t'en sortir.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

matthieu> c pas avec un malloc que tu définis en écran virtuel...
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

6

Mais il en alloue un.
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

j'avais compris cela , mais le probleme n'est pas la sad , le tuto est indiqué pour un ti 92 moi j'ai une ti 89 et je sai pas la taille a allouer pour un ecran normal de 100*160 pixels comment je peux faire pour le savoir personne ne le sait ?
NTW !!!!!

8

Peu importe que ce soit une Ti89 ou 92, la taille de l'écran est toujours 240*128, c'est uniquement la partie visible qui change. Et Hibou avait raison, il n'y a que 2 couleurs, donc on code un pixel sur un bit, ce qui fait 8 pixels sur un octet, donc la taille de l'écran est 240/8*128 = 3840 octets.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Je crois que g mal compris sa question.

matthieu>En fait, tu veux seulement savoir qu'elle taille en octet il faut réserver pour faire un écran virtuel de 99x477 ??
Si ce n'est que ça, il suffit simplement de multiplier la longueur par la largeur (donc 99*477/8). Si tu veux des nvg, il faut que tu prévoit 2 écran virtuel différent de 99*477/8.
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

10

merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
top vertyos tu dechire
NTW !!!!!

11

merci bcoup ôssi macintoc
tro sympa ce forum heureusement qu'il existe sinon des mecs kom moi s'en sortirait jamais
NTW !!!!!

12

trisotfl
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

13

MacIntoc :
matthieu>En fait, tu veux seulement savoir qu'elle taille en octet il faut réserver pour faire un écran virtuel de 99x477 ?? Si ce n'est que ça, il suffit simplement de multiplier la longueur par la largeur (donc 99*477/8). Si tu veux des nvg, il faut que tu prévoit 2 écran virtuel différent de 99*477/8.

C'est faux. Il faut arrondir la largeur par excès vers le prochain multiple de 8, c'est-à-dire 104. Une ligne ne commence jamais au plein milieu d'un octet.
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é

14

Bah si il fait son propre écran virtuel avec des tailles étranges, pourquoi pas après tout grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

hey soyez sympa les gars sad , je debute moi ca fait a peine 2 semaine que je prog en c sur ti
bon alors cher kevin, je t'ai ecouté et j'ai mis 480 mais mon probleme maintenant , c comment acceder a tou cet ecran , je pensai passer par bitmapget comme pour la librairie "flib" mais j'avais omis le detail qu'il fallait mettre en premier arg un "const scr_rect" alors comment puis-je faire, voila le programme que je comptais utiliser qqun pourrait-il le corriger merci infiniment d'avance :

#include <tigcclib.h>
short _ti89;
void _main(void)
{
SCR_RECT screen = {{0, 0, 159, 99}};
void *vscreen=malloc(6000) ;
void *buffer=malloc(6000);
PortSet(vscreen, 499, 99);
ClrScr();
short i;
for(i=0; i<100 ;i++) {printf("%d",i);}
BitmapGet (&vscreen, buffer); // et ba la ca marche pas !!!
PortRestore();
BitmapPut (-50, 0, buffer, &screen, A_REPLACE);
free(vscreen);
free(buffer);
ngetchx();
}
NTW !!!!!

16

Tu devrais utiliser BitmapPut directement. Alloue 4 octets de plus pour ton écran virtuel, et mets hauteur et largeur dans les 4 premiers octets, comme ça tu as directement ton écran virtuel sous forme de structure BITMAP.
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é

17

Non non non... Là t'es parti dans une TRES mauvaise voie : celle du gars qui cherche plus rien par lui meme et qui pose ses questions sur le forum dès qu'il bloque plus de 5 minutes. Déjà a première vue ton buffer est trop petit pour contenir un écran de 500*100, cherche le reste toi même...

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

18

oula c beaucoup tro rapide pour moi ca, comment on fait ca ?
NTW !!!!!

19

Kevin>ué, je c, j'y av pas pensé sur le coup, merci pour la rectificationsmile
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

20

void *vscreen=malloc(6004);
*(short*)vscreen=100;
1[(short*)vscreen]=480;

Et au passage, ton PortSet est mauvais, c'est PortSet(vscreen,479,99); qu'il faut faire (479, pas 499). Avec mon code, ça devient PortSet(vscreen+4,479,99); parce qu'il faut sauter les 4 octets que j'ai rajoutés au début.
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é

21

bon ba voila le code final pour la premiere fois ca affiche qqchose mais c tou bizar ...je remercie tou le monde et jvé me coucher il est tôt la ...

#include <tigcclib.h>
short _ti89;
void _main(void)
{
SCR_RECT screen = {{0, 0, 159, 99}};
void *vscreen=malloc(6004);
*(short*)vscreen=100;
1[(short*)vscreen]=480;
PortSet(vscreen+4, 479, 99);
ClrScr();
DrawLine(0, 0, 159, 100, A_XOR);
PortRestore();
ClrScr();
BitmapPut (0, 0,vscreen, &screen, A_NORMAL);
ngetchx();
free(vscreen);
}
NTW !!!!!

22

Je vois le problème: C'est que AMS stocke hauteur et largeur de ton écran virtuel dans des unsigned char, donc 480 est trop grand (c'est 256 (255+1) maximum). Il n'y a pas grand chose qu'on puisse faire pour ce problème. sad
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é

23

ah bon!!!! on est tant limité que cela ???
bon ba merci Mr kofler
NTW !!!!!

24

Kevin> Effectivement... quels cons! Ils font des en-têtes utilisant des unsigned shorts mais ils n'en prennent que l'octet de poids faible... tsss
Et puis: [avis_personnel] Tu n'as pas besoin d'utiliser des écrans qui sont plus grands que ceux de la TI car celle-ci est bien assez puissante pour te permettre de tout redessiner l'écran à chaque frame s'il s'agit d'un jeu... wink [/avis_personnel]
Sinon tu vas devoir te taper toi-même l'écriture de routines supportant le blit sur un écran plus grand (et en tant que débutant je doute que tu le veuilles hm? grin)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

25

voui mais c +fluide avec un ecran virtuel e

alors voila, j'ai testé ce bout de code mais ca marche pas pourtant j'ai verifié et reverifié et etc je ne pas trouvé d'erreur :


#include <tigcclib.h>
short _ti89;
void _main(void)
{
SCR_RECT screen = {{0, 0, 255, 99}}; // l'ecran visible
void *vscreen=malloc(6404); //l'cran virtuel principal
*(short*)vscreen=100; // l'idée de Mr kofler
1[(short*)vscreen]=512; //
PortSet(vscreen+4,511, 99);
ClrScr(); // on bidouille un peu ds l'ecran virtuel
short i;
char interm[10];
for(i=0;i<6;i++)
{
DrawLine(i,0,i,99,A_NORMAL);
DrawLine(0,99-i,511,99-i,A_NORMAL);
DrawLine(511-i,0,511-i,99,A_NORMAL);
}
for(i=0;i<510;i+=10)
{
sprintf(interm,"%d",i);
DrawStr(i,80,interm,A_NORMAL);
}
PortRestore(); // on s'arrette la
void *vscreen1=malloc(3204);// definition de l'ecran n°2
*(short*)vscreen1=100;
1[(short*)vscreen1]=256; // taille supporté par l'ams
memcpy(vscreen1+4,vscreen+4,3200); // on mets tous ce qu'il ya ds vscreen du 4e octet au 3200 e octet ds vscreen 1
void *vscreen2=malloc(3204); // ds la doc tigcc le memcpy se fait avec des byte, j'ai essayé et ca fait planté ma calc alors qu'avec les octets y'a un resultat sur l'ecran
*(short*)vscreen2=100;
1[(short*)vscreen2]=256; // taille suporté par l'ams
memcpy(vscreen2+4,vscreen+3204,3200); // de meme pour vsc2
free(vscreen); // fô pas prendre tro de place non plus
short quitter=0;
short x=0;
ClrScr();
BitmapPut (x, 0,vscreen1+4, &screen, A_REPLACE); // deja la c bizzare que ca affiche rien
ngetchx();
INT_HANDLER save_int_1;
save_int_1 = GetIntVec(AUTO_INT_1);
SetIntVec(AUTO_INT_1, DUMMY_HANDLER);
do{
if(_rowread(0x7E)&0x2)
{
ClrScr();
x-=10;
BitmapPut (x, 0,vscreen1+4, &screen, A_NORMAL);
if(x<-109){BitmapPut (255+x, 0,vscreen2+4, &screen, A_NORMAL);} // si on est arrivé a la fin de vscreen 1 on affiche vscreen2 un ecran + loin
for(i=0;i<1000;i++) {} // une boucle pour ralentir un peu
}
if(_rowread(0x3F)&0x1) quitter=1;
}while(quitter==0);
SetIntVec (AUTO_INT_1, save_int_1);
free(vscreen1);free(vscreen2);
}
voila ba je ne comprend pas ce qu'il ne marche pas
merci a ceux qui me liront
NTW !!!!!

26

Kevin Kofler :
Je vois le problème: C'est que AMS stocke hauteur et largeur de ton écran virtuel dans des unsigned char, donc 480 est trop grand (c'est 256 (255+1) maximum). Il n'y a pas grand chose qu'on puisse faire pour ce problème. sad

avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

27

c bien bizar tou ca j'ai reussi a faire afficher qqchose mais j'ai l'impression que le memcpy a copier le bytes ds un autre ordre si qqun a des info la dessus ce serait sympa
NTW !!!!!

28

heu, y'a pas de raison smile

29

matthieu > Non. Dès que tu dépasses 255 dans ton PortSet, ça devient faux. Si tu mets 480, il prendra un écran de 224 pixels. Alors forcément tu verras quelque chose, mais ce sera faux. Donc tu n'as aucune chance de pouvoir utiliser les routines AMS de cette manière.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

30

a ouééé j'avais completement oublié le portset(...) ah d'accord ba tou va mieu maintenant ba dis donc c vraiment compliké les ecrans virtuels
NTW !!!!!