150

Kevin Kofler (./147) :
TiEmu reconnaît les routines de gris courantes (y compris la version standard de Grib) pour ses "gris parfaits",

Il ne reconnait toujours pas celle de genlib qui va trop vite pour lui roll
Kevin Kofler (./147) :
PpHd dans sa sagesse infinie a ignoré tous mes arguments,

Merci pour ces compliments. Ca fait plaisir de se savoir devenu sage love

151

PpHd (./150) :
Il ne reconnait toujours pas celle de genlib qui va trop vite pour lui roll

pencil Solution de Kevin -> Passer à 10 ou 7.5 fps grin

Quant à la routine de gris de Grib, la version supportée par TiEmu est celle que j'utilise. Mes propositions avaient déjà été mergées quand Sasume t'as proposé le patch.

152

Bon, j'arrive pas à faire un truc. Je veux passer en paramètre l'adresse d'une structure à une fonction.
L'appel se fait comme ça :
DispDot(PlanesPtr,&DrawingData);
DrawingData, c'est ça :
struct Misc DrawingData = {...}
Par contre, j'arrive pas à écrire le prototype de la fonction appelée. J'ai imaginé ça :
	DispDot(void*,Misc*);
	DispDot(void*,struct Misc*);

... et encore d'autres variantes, rien n'y fait. Comment écrire ce proto ? Je sèche... D'autant plus que dans le source de la fonction DispDot, ce que j'ai écrit passe très bien... Mais le prototype dans le header, "ça veut pas" ^^.

Par contre, dans la fonction utilisatrice, est-ce bien ça qu'il faut faire pour utiliser les membres de la structure dont le pointeur est passé en argument ?
void DispDot(void* Planes,struct Misc* Data)
{
		PortSetPlane(Planes);
		DrawPix(Data->CursX0,Data->CursY0,Data->CursModePlane0);
		PortSetPlane(Planes+3840);
		DrawPix(Data->CursX0,Data->CursY0,Data->CursModePlane1);
}

Le pire, c'est que si je n'écris pas le proto de la fonction dans le header, la déclaration est implicite et ça passe ^^

153

/* définition de la structure et de son type associé */
typedef struct Ma_Struct_s
{
... définition de la structure
}
Type_De_Ma_Structure_t;

...

/* prototype de la fonction */
void Ma_Fonction (Type_De_Ma_Structure_t Mon_Parametre);

/* définition de la variable */
Type_De_Ma_Structure_t Ma_Variable = {...};
/* appel */
Ma_Fonction (Ma_Variable);

ou :

void Ma_Fonction (Type_De_Ma_Structure_t *Mon_Parametre_Ptr);
...
Ma_Fonction (&Ma_Variable);

Ensuite, pour utiliser les membres, si c'est un pointeur sur structure (second cas), c'est "->", sinon, c'est ".".
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

154

PpHd (./150) :
Il ne reconnait toujours pas celle de genlib qui va trop vite pour lui roll

Il reconnaît la routine, c'est bien la vitesse à laquelle tu changes les plans dans ton double-buffering, le problème. Et on ne m'a toujours pas proposé une bonne solution (qui ne rend pas les niveaux de gris imbitables).
Kevin Kofler (./147) :
PpHd dans sa sagesse infinie a ignoré tous mes arguments,

Merci pour ces compliments. Ca fait plaisir de se savoir devenu sage love

rotfl
C'était ironique, hein. roll (Mais je pense quand-même que tu es suffisamment sage pour avoir compris. grin)
Folco (./151) :
Quant à la routine de gris de Grib, la version supportée par TiEmu est celle que j'utilise. Mes propositions avaient déjà été mergées quand Sasume t'as proposé le patch.

Celle de ce commit-là, n'est-ce pas?
Optimized grayscale movem detection and added support for dirty-coded HW2/3 grayscale interrupts abusing the stack pointer to hold data (currently only the latest Grib is known to do that).
Folco (./152) :
DispDot(void*,struct Misc*);

C'est ça la bonne solution (mais il manque la valeur de retour dans ton prototype!), si tu veux pouvoir écrire juste Misc*, il faut utiliser un typedef comme le dit Ximoon.

Mais ton problème est probablement qu'il faut que tu définisses ta structure avant ta fonction. Au minimum avec une forward declaration:
struct Misc;
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é

155

oui utilise un typedef ça te simplifiera la vie : pas la peine de taper struct partout. Sinon il me semblerait que ce que tu as écrit doive marcher (le truc avec struct Misc*), mais j'utilise jamais de structure sans typedef, donc je sais pas.

N.B. : dans ce que dit Ximoon, "Ma_Struct_s" est optionnel et, de mon point de vue, redondant, donc en général je le vire.
Bon en fait il y a un cas où c'est nécessaire, c'est si le type de ta structure est défini récursivement (typiquement, la structure contient un pointeur vers une autre structure du même type), parce que tu ne peux pas utiliser un typedef à l'intérieur de sa propre définition (par contre avec une structure tu peux). Je ne sais pas trop d'où vient cette bizarrerie, sans doute des raisons historiques comme d'habitude.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

156

sick Le débogueur sert à ça! roll

Kevin, tu sais très bien comment le debugger fonctionne chez moi wink
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

157

Oui Kevin, il s'agit bien de ce commit là (et merci du commentaire élogieux, mais ma méthode en fait le handler probablement le plus rapide et le plus petit tongue).

Merci à tous pour la structure !

158

Lionel Debroux (./156) :
Kevin, tu sais très bien comment le debugger fonctionne chez moi wink

Tu sais très bien que les paquetages de Romain sont foireux (et il le sait lui aussi, signalé depuis longtemps), compile à partir des sources (ou passe à Fedora tongue).
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é

159

Tu sais très bien que c'est pire quand je compile à partir des sources, et que ce n'est donc (pour ce qui me concerne) pas du tout dû au packaging de Romain (dont tu continues pourtant à te plaindre lourdement, même en ce qui me concerne). Tu persistes à montrer injustement de l'irrespect à Romain.
Je publie le mini-message que je t'ai envoyé il y a un peu plus de deux mois, avec une emphase qui n'y était pas dans l'original, et aussi une mise à jour en italique:
09/02
R 09:46 Lionel Debroux » Kevin Kofler: Tel que TIEmu est actuellement, j'ai l'impression d'être revenu trois à cinq ans en arrière. En fait, au temps où ExtendeD, toi et moi (principalement) avons fait pas mal de beta-testing et feature requests pour TIEmu.
C'était en effet à cette époque qu'on avait des bugs de la classe d'un crash (ici, avec libération d'adresses invalides, me dit glibc dans la console) quand on fait une opération courante, du genre valider l'adresse qu'on veut aller voir dans la mémoire ou cliquer sur un ROM_CALL dans la liste des ROM_CALLs...
Et encore, à l'époque, la source additionnelle de complexité (je sais que tu en as chié pour faire un truc qui fonctionne à peu près), bugs et lenteur qu'est GDB/Insight n'existait pas...

Dans l'état actuel des choses, un truc est clair: si VTI permet de faire ce que je veux (ce n'était pas le cas pour un des trucs que j'ai faits ce week-end, mais pour l'autre, c'était le cas), c'est VTI sous Wine que je vais probablement utiliser, puisque TIEmu sans GDB et TIEmu avec GDB (si je les compile moi-même) sont tous les deux complètement inutilisables, comme décrit dans le topic des feature requests.
Le package tiemu-gdb n'est pas inutilisable, mais moins stable que VTI sous Wine. Pour désassembler & exécuter des ROM_CALLs du CAS ou autres, on n'a pas besoin d'un debugger symbolique... J'ai utilisé VTI bien plus qu'il n'en suffit pour savoir ce qu'il permet et ne permet pas de faire, et avec quelles limitations.
(en fait, j'utilise parfois VTI sous Wine, et parfois TILP+TIEmu sous Vista virtualisé avec Virtualbox)


Aider à debugger (et peut-être implémenter) une fois de plus pour faire avancer les choses, je veux bien... mais je serais plus motivé si tu montrais plus de respect, en particulier envers Romain. Tu es injuste avec lui, puisque le gros des problèmes NE VIENT PAS du packaging. Et comme il l'écrit, il n'a non seulement pas le temps, mais aussi pas d'ordinateur...



Ce à quoi tu n'avais rien répondu, d'ailleurs.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

160

Je n'avais pas répondu parce que ta description du problème est trop vague pour le résoudre, voire même comprendre de quoi il s'agit. Il s'agit peut-être du problème corrigé par ce commit dans le SVN (et dans le paquetage Fedora). Il y a aussi ce commit qui pourrait te servir. Si ces 2 commits ne corrigent pas ton problème, il faudra que tu me fournisses plus de détails pour que je puisse m'en occuper.
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é

161

(et si on revenait au sujet roll)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

162

ta description du problème est trop vague pour le résoudre

Pour pouvoir le résoudre, il faudrait peut-être essayer de le reproduire, et de comprendre les indications qu'on te donne ? wink
quand on fait une opération courante, du genre valider l'adresse qu'on veut aller voir dans la mémoire ou cliquer sur un ROM_CALL dans la liste des ROM_CALLs...


D'après les messages de commit, r2797 et r2798 sont N/A pour moi: j'utilise une dérivée Debian stable, qui n'a ni GTK 2.14+ ni le dernier X.Org.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

163

Et bah, tes 2 opérations marchent parfaitement ici (Fedora 9). Bref, je pense que tes instructions pour reproduire le problème sont insuffisantes.

Peux-tu nous procurer des backtraces et nous faire un bug report sur SourceForge? Dans ce topic, c'est vraiment hors sujet.
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é

164

Merci en effet de changer de topic. smile

165

Bon, j'ai encore un ouarningue dont j'ignore le sens.
J'ai deux protos :
void	DispDot(void*,struct Misc*);
void	DispLine(void*,struct Misc*);

Merci déjà Kevin, j'incluais le header déclarant la structure après celui déclarant les fonctions. Merci aussi aux autres, spécialement à Pollux pour son exemple détaillé. smile

Pour le proto de DispDot, il me raconte un truc qu'il ne me ressort pas pour DispLine, alors que j'emploie les deux de la même manière :
Its scope is only this definition or declaration, which is probably not what you want.

En d'autres termes, j'y comprends rien. grin De plus, il ne me sort ça que pour un seul proto. confus
Il me dit également "Struct Misc declared inside parameter list", alors que la structure est déclarée dans un header inclus avant. Je dois toujours pas avoir tout compris. sorry

166

Apparemment non, la déclaration de la structure n’est pas lue avant que le compilo ne tombe sur ces lignes.
Tu obtiens ton warning sur quel fichier, quelle ligne précisément ? Peux-tu poster aussi le début du fichier ?
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. »

167

Folco (./165) :
Merci [...] spécialement à Pollux pour son exemple détaillé

Pollux ? Il est passé ? smile

168

Oué, Ximoon, c'est pareil embarrassed grin

169

Ok, j'avais effectivement un fichier ou j'incluais le header des fonctions sans inclure celui des variables. Merci Sasume. smile

170

Folco (./168) :
Oué, Ximoon, c'est pareil embarrassed grin

#trihum#
• Ximoon va s'interroger sur son identitée, bonne nuit.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

171

Si j'ai passé un pointeur sur une structure en argument à une fonction, comment cette fonction peut-elle en appeler une autre avec en paramètre un pointeur sur un élément de cette fonction ?
En fait :
Ma fonction A fait un :

A:
lea.l Struct(pc),a0
bsr B
...
B:
lea.l MACHIN(a0),a0
bsr C

Ca va faire ce que je veux un &Struct->Machin ?

172

Essaie, et si t'as un doute, rajoute des parenthèses grin
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

173

Ben non, ça compile pareil avec ou sans parenthèse ("pareil apparemment", pas regardé le source asm), mais dans tous les cas j'ai le warning :
"Passing argument 1 of '*(*200u+1620u)' from incompatible pointer type".

174

Ah. Me dirait-il pas ça parce que la fonction que j'appelle (DrawClipRect) attend un pointeur sur un WIN_RECT, alors que je lui balance un pointeur pointant sur quelque part en mémoire, qui n'a rien à voir avec un pointeur sur un WIN_RECT (enfin d'après lui... en mémoire, c'en est bien un de WIN_RECT ^^).

hé, dites ! hmm ça a l'air ça, vu que j'ai aussi un SCR_RECT dans ma structure, que je passe en argument à DrawClipRect, et il l'accepte sans broncher. Maintenant, si je lui dis juste que c'est un long à la place du SCR_RECT, il gueule, alors qu'on parle de la même chose, ie de 4 chars. Ca devrait donc marcher. Quelqu'un confirme ? cheeky

(ça fait quand même crade de se taper ce genre de warnings sans pouvoir les résoudre... sauf à la barbare, ie en créant un WIN_RECT, copie conforme des données qui seront juste à côté... sorry)

175

Ben oui, précisément : ton pointeur &(Struct->Machin) a le type Machin_t* où Machin_t est le type déclaré pour Machin dans la définition de la structure. Si la fonction que tu appelles attend un pointeur d'un autre type que ça, tu as un warning. Il faut caster pour supprimer le warning.

Mais pourquoi ton pointeur n'a pas le bon type ? si dans ta structure il y a bien un WIN_RECT pourquoi tu ne la déclares pas comme ça ?

traduction du warning : tu passes en argument n°1 à ta fonction qui n'a pas de nom (je suppose que c'est un ROM call, il te donne juste son adresse...) un pointeur dont le type (Machin_t*) est incompatible avec le type qu'elle attend (WIN_RECT*)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

176

Ok, j'avais pas pensé à caster, chsuikon ! Je déclare pas ça en WIN_RECT, parce que ces données (4 shorts) me servent tantôt à afficher un point (là faut des shorts), une ligne (idem), ou des rectangles (et là, on est sur du WIN_RECT)...

177

Et voilà, ça, ça marche :
DrawClipRect((WIN_RECT*)&(Data->CursX0),&(Data->Clip),Data->RectangleModePlane0);
(enfin, ça compile grin)
(cross-edit -> et merci pour l'explication du warning chinois ^^)

178

Si tes quatre shorts peuvent contenir des données de différents types suivant les cas, tu as je crois une solution propre qui est d'utiliser une "union", mais je n'en sais pas plus (jamais utilisé ça ^^). Regarde la doc si tu veux happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

179

Oui, j'y ai pensé, une avgue réminiscence de mes lectures passées. En fait, j'avais jamais envisagé une union pour cet usage. Je pensais que c'était pour bouffer moins de place (à tel endroit, j'y mets un short qui me sert à ça, et à tel autre endroit de mon prog, un long qui me sert à autre chose). Je pensais pas que ça pouvait servir juste pour faire des fake types. grin

hinhin, je SCR_RECT est une union, d'une structure de 4 chars ou d'un long, alors que le WIN_RECT n'est qu'une structure de 4 shorts, alors que ça aurait pu être une union déclarant aussi 4 shorts indépendants. C'est raté, à moi de faire l'union en effet.

180

Non non, le but de l'union est bien de pouvoir présenter différentes représentations d'une même donnée, typiquement voire une structure comme un tableau d'octets, ou un entier comme un champ de bits, selon. Et là, tu serais en plein cas d'école pour le faire happy
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.