PpHd Le 07/02/2002 à 09:30 Pourrais-tu detailler ? Quelle librarie ?
Les niveaux de gris de TIGCCLIB sont dans une librairie statique, donc tu ne peux pas utiliser SetPlane dans une librairie dynamique et t'attendre à ce que le plan soit changé dans le programme principal.
Si c'est ça le problème, change ta librairie dynamique en statique, ou renvoie une valeur de la fonction de la librairie dynamique qui permette au programme principal de mettre le bon plan.
PpHd Le 08/02/2002 à 09:20 Bref explicite ce que tu veux faire.
LhA Le 09/02/2002 à 13:20 oui c est vrai j aurais du y penser d ailleurs, si je veux faire ca dans une librairire dynamique c est pour un gain de place considerable, donc le mettre en statique m'interesse pas, donc je vais poser une autre question.
comment utiliser les ecrans virtuels en nivaux de gris??
ex:
#define USE_TI89 // Produce .89z File
#define USE_TI92PLUS // Produce .9xz File
#define USE_KERNEL // Make Kernel Program
char _comment[] = "";
#include <tigcclib.h> // Include All Header Files
#include "koncept.h"
// Main Function
void _main(void)
{
void*V_Black=malloc(3840); //declaration de l ecran virtuel virtual
void*V_Light=malloc(3840);
void*V_Dark=malloc(3840);
PortSet(V_Black,239,127);
clrscr();
ScrRectFill(&(SCR_RECT){{20,20,40,40}},&(SCR_RECT){{0,0,239,128}},A_NORMAL);
memcpy(V_Dark,V_Black,3840);
memcpy(V_Light,V_Black,3840);
Fenetre(V_Light,V_Dark); //affiche des fonctions graphiques ds les deux ecran
//ma lib marche parfaitement
//exple remplacer par ce qui est ci dessou
/*
PortSet(V_Light,239,127);
rect(0,0,239,121);
rect(3,13,236,118);
PortSet(V_Dark,239,127);
rect(0,0,239,121);
rect(1,1,238,120);
*/
GrayOn();
t,3840); //je voudrai savoir si c est valide ou
memcpy(DARK_PLANE,V_Dark,3840); // memcpy(LCD_MEM,V_Light,3840);
//enfin les 2 ne marchent pas dc comment faire?
memcpy(LIGHT_PLANE,V_Ligh
ngetchx();
GrayOff();
PortRestore(); //on annule l utiisation d'écran virtuel
free(V_Dark); //on libere l espace mémoire qui avait ete alloué pour l'ecran virtual
free(V_Light);
free(V_Black);
}
bon voila mais je crois que je me suis pas très bien expliqué.
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.
LhA Le 09/02/2002 à 15:58 laisser tomber celle du haut et comment faire pour que celle marche:
#define USE_TI89 // Produce .89z File
#define USE_TI92PLUS // Produce .9xz File
#define SAVE_SCREEN
#include <tigcclib.h> // Include All Header Files
// Main Function
void _main(void)
{
void*V_Black=malloc(3840); //declaration de l ecran virtuel virtual
void*V_Light=malloc(3840);
void*V_Dark=malloc(3840);
PortSet(V_Black,239,127);
clrscr();
ScrRectFill(&(SCR_RECT){{20,20,40,40}},&(SCR_RECT){{0,0,239,128}},A_NORMAL);
memcpy(V_Dark,V_Black,3840);
memcpy(V_Light,V_Black,3840);
PortSet(V_Light,239,127);
ScrRectFill(&(SCR_RECT){{0,0,25,25}},&(SCR_RECT){{0,0,239,128}},A_NORMAL);
PortSet(V_Dark,239,127);
ScrRectFill(&(SCR_RECT){{35,35,60,60}},&(SCR_RECT){{0,0,239,128}},A_NORMAL);
GrayOn();
SetPlane(LIGHT_PLANE);
memcpy(LCD_MEM,V_Light,3840);
SetPlane(DARK_PLANE);
memcpy(LCD_MEM,V_Dark,3840);
ngetchx();
GrayOff();
PortRestore();
free(V_Dark);
free(V_Light);
free(V_Black);
}
sachant que je veux afficher un rect en gris clair, gris foncé et noir.
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.
C'est faux:
>SetPlane(LIGHT_PLANE);
>memcpy(LCD_MEM,V_Light,3840);
Correct:
memcpy(GetPlane(LIGHT_PLANE),V_Light,3840);
>SetPlane(DARK_PLANE);
>memcpy(LCD_MEM,V_Dark,3840);
Correct:
memcpy(GetPlane(DARK_PLANE),V_Light,3840);
D'ailleurs, puis-je savoir à quoi servent tes écrans virtuels? Sachant que si tu veux accéder aux plans dans ta librairie dynamique, il suffit de passer GetPlane(LIGHT_PLANE) et GetPlane(DARK_PLANE) en argument à la fonction de ta librairie.
D'ailleurs, utiliser des librairies dynamiques, c'est ne pas respecter l'utilisateur. Si on respecte l'utilisateur, on programme en _nostub.
[edit]Edité par Kevin Kofler le 09-02-2002 à 23:12:12[/edit]
arf...
sauf si le prog fait plus de 64 ko...
vu que (normalement !!!), on fait pas de libs dynamiques en nostub...
Pen^2 Le 09/02/2002 à 23:15 ..
sans dec', tu n'en a pas ras le bol de tjs repeter la meme chose Kevin ?
(je dis ça vraiment sans malice)
Si le programme fait plus de 64 KO, on fait 2 programmes, on les compresse avec ttpack, on les regroupe avec ttarchive et on adapte ttstart pour qu'il gère ça.
ou on fait une librairie dynamique...
(pas forcément en mode Kernel... en nostub, c'est faisable)
Facile: tu le fais en librairie statique et tu t'en fiches de la place perdue.
Mais bon, tu peux programmer comme tu veux. Mais c'est quand-même plus pratique de pouvoir lancer un programme comme prévu par TI et décrit dans le manuel de TI que de devoir installer un kernel et envoyer des librairies avant.
LhA Le 11/02/2002 à 00:09 chu d'accord je préfere limiter les lib surtout qu'a un moment c'etait vraiement la merde:
des lib differentes portaient le meme nom d'autre pas compatible etc...
Mais à partir du moment qu'on est obliger d'installer un kernel pour enlever la limitation fixer par TI autant s'en servir.
tu peu me dire comment on compile une lib statique sous TIGCC?? (g pas reussi)
[edit]Edité par LhA le 11-02-2002 à 00:10:16[/edit]
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.
>Mais à partir du moment qu'on est obliger d'installer un kernel pour enlever la limitation fixer par TI autant s'en servir.
N'importe quoi! Il suffit de compresser le programme avec ExePack, ou d'utiliser un lanceur. Pas besoin de kernel.
>tu peu me dire comment on compile une lib statique sous TIGCC?? (g pas reussi)
Vérifie que le fichier ar.exe se trouve dans le sous-répertoire Bin de ton répertoire TIGCC. Sinon, réinstalle TIGCC en faisant attention à cocher la case concernant l'installation de GNU ar.
Ensuite, c'est simple: Project / Options / Target: Function Archive (.a) / OK
Si tu veux utiliser des fonctions de TIGCCLIB dans une librairie statique, il faut une version récente de TIGCC. (Les anciennes versions ne le permettaient pas.)