30

Que veux-tu exactement ?

31

Ben tu design bien mieux les fonctions que mio, mais par exemple, hier, j'ai eu besoin d'afficher du texte en blanc, j'ai du écrire ça :
	move.l	HelpTextPtr(%fp),%d3			|any help text to print ?
	beq.s	NoString				|no, continue
		clr.w	-(%sp)				|font : 0
		move.l	%d3,-(%sp)			|&string
		RC	DrawStrWidth			|get string lenght in pixels
		move.w	LcdHeight(%fp),%d4
		subi.w	#28,%d4				|y
		move.w	HelpTextCoord(%fp),%d5		|get its abcisse
		sub.w	%d0,%d5				|sub string lenght
		bpl.s	NotNegative			|<0 ?
			moveq.l	#1,%d5			|else adjust it
NotNegative:
		move.l	#239<<16+127,(%sp)		|screen size
		move.l	CurrentDScreen(%fp),-(%sp)	|first plane
		RC	PortSet				|redirect functions
		move.w	#3,(%sp)			|color
		move.l	%d3,-(%sp)			|&string
		move.w	%d4,-(%sp)			|y
		move.w	%d5,-(%sp)			|x
		RC	DrawStr				|print it
		move.l	#239<<16+127,(%sp)		|screen size
		move.l	CurrentDScreen(%fp),-(%sp)	|first screen
		addi.l	#3840,(%sp)			|second one
		RC	PortSet				|redirect functions
		move.w	#3,(%sp)			|color
		move.l	%d3,-(%sp)			|&string
		move.w	%d4,-(%sp)			|y
		move.w	%d5,-(%sp)			|x
		RC	DrawStr				|print it
		lea.l	30(%sp),%sp			|fix stack

Alors qu'un attribut couleur dans genlib:tongueut_small_string aurait suffit.
Une autre fois, j'ai fait une "intro" avec un texte défilant de bas en haut, dans plusieurs fontes. A cause du manque de clipping et de couleur, c'était plutôt galère : afficher le texte dans un buffer, le transformer pour n'avoir qu'à le orer sur le screen, faire le clipping etc... Bref, dès qu'on veut du texte en-dehors du bon gros texte en plein milieu dont on connait la longeur exact, c'est rigolo. grin

32

genlib::create_bgs_string ?

33

Ouais, mais ça fout un masque à l'affichage, et c'est en font 2. Et il y aussi la lenteur de DrawStr, genlib doit aller 10 fois plus vite.

34

Pas celle de PedroM tongue

35

Autre question, quand l'écran ne se redessine pas, je dois chercher par où ? J'ai aucun flag d'activé (_flag_2, vérifié avec grep) ? Ma pile est bonne en sortie, je sais plus par où chercher...

36

./34 -> merde, je debug sous PedroM, j'aurai des surprises sous AMS. N'empêche que DrawStr doit tenir compte de PortSet, ça m'étonnerait que les routines de Genlib en tiennent compte ?

37

Folco (./35) :
Autre question, quand l'écran ne se redessine pas, je dois chercher par où ? J'ai aucun flag d'activé (_flag_2, vérifié avec grep) ? Ma pile est bonne en sortie, je sais plus par où chercher...

Je pense avoir trouvé. Je fais un PortRestore et ça marche. PpHd, PreOS le fait si je ne m'abuse ? Ca ne serait pas possible d'en faire autant ? Je l'ai jamais fait dans mes programmes kernel sous AMS parce que le kernel le prenait en charge (le mauvais côté de lire les sources de PreOS, c'est de se reposer dessus après cheeky.

38

En fait, si je ne me trompe pas, PortRestore n'est appelé que lorsque "very bad thing happen", donc en cas de crash du crash handler. AMS est donc partiellement réinitialisé pour essayer de limiter la casse. Ca n'a pas l'air d'être le cas le reste du temps.

39

Donc voilà, n'est-ce pas, bien sûr.

40

Ben désolé si ma mémoire a fait défaut, chuis pas infaillible...

41

Pourquoi c'est dommage? Pourquoi pas utiliser les routines d'affichage de texte déjà dans la ROM au lieu de grossir encore genlib qui prend déjà beaucoup trop de place?
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é

42

La remarque de prendre beaucoup de place s'applique plus à ExtGraph qu'à Genlib grin

Quant à l'opportunité et les modalités d'utilisation de routines spéciales de dessin de texte... le sujet a déjà été abordé de nombreuses fois depuis plus de sept ans wink
Rappel rapide:
* sur PedroM, ça serait probablement jouable d'utiliser les routines built-in, à moins que Martial veuille utiliser un mode de dessin spécial;
* sur AMS 1.xx, les routines de dessin de texte sont déjà nettement perfectibles, mais c'est environ trois fois pire sous AMS 2.xx et 3.xx: les routines de dessin rapides sont un ordre de grandeur plus rapides que DrawStr.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

43

Qu'est-ce que je m'en contre-bats puissamment les kooyes avec une pelle à tarte de AMS 1.xx, si tu savais. Ceux qui ont encore ça (et je sais pas si ya une seule personne sur terre), ils ont qu'à upgrader. C'est aussi ridicule que quand Kevin se plaint de la non-compatibilité PlusShell de PreOS (tout en tirant à boulets rouges sur les Fedora 8 presque ou depuis peu obsolètes). tritop

44

Je suis d'accord avec toi grin
C'est pour ça que je n'ai pas refait une réponse longue à ./41 dans ./42 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.

45

Ah parce que c'était concis ? grin J'ai déjà mon opinion en fait, donc oui, la version longue, je m'en passe grin (bien que j'avoue relire une fois par an "kernel vs nostub" par nostalgie, donc les vieux trolls, on oublie pas trioui)

46

Ah parce que c'était concis ? grin

Tu lis les pavés que j'écris parfois depuis suffisamment longtemps pour savoir que pour moi ça, c'est concis, voyons trioui
./42 s'adressait uniquement à notre Kevin préféré.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

47

Folco (./31) :
Ben tu design bien mieux les fonctions que mio, mais par exemple, hier, j'ai eu besoin d'afficher du texte en blanc, j'ai du écrire ça :
	move.l	HelpTextPtr(%fp),%d3			|any help text to print ?
	beq.s	NoString				|no, continue
		clr.w	-(%sp)				|font : 0
		move.l	%d3,-(%sp)			|&string
		RC	DrawStrWidth			|get string lenght in pixels
		move.w	LcdHeight(%fp),%d4
		subi.w	#28,%d4				|y
		move.w	HelpTextCoord(%fp),%d5		|get its abcisse
		sub.w	%d0,%d5				|sub string lenght
		bpl.s	NotNegative			|<0 ?
			moveq.l	#1,%d5			|else adjust it
NotNegative:
		move.l	#239<<16+127,(%sp)		|screen size
		move.l	CurrentDScreen(%fp),-(%sp)	|first plane
		RC	PortSet				|redirect functions
		move.w	#3,(%sp)			|color
		move.l	%d3,-(%sp)			|&string
		move.w	%d4,-(%sp)			|y
		move.w	%d5,-(%sp)			|x
		RC	DrawStr				|print it
		move.l	#239<<16+127,(%sp)		|screen size
		move.l	CurrentDScreen(%fp),-(%sp)	|first screen
		addi.l	#3840,(%sp)			|second one
		RC	PortSet				|redirect functions
		move.w	#3,(%sp)			|color
		move.l	%d3,-(%sp)			|&string
		move.w	%d4,-(%sp)			|y
		move.w	%d5,-(%sp)			|x
		RC	DrawStr				|print it
		lea.l	30(%sp),%sp			|fix stack

Alors qu'un attribut couleur dans genlib:tongueut_small_string aurait suffit.
Une autre fois, j'ai fait une "intro" avec un texte défilant de bas en haut, dans plusieurs fontes. A cause du manque de clipping et de couleur, c'était plutôt galère : afficher le texte dans un buffer, le transformer pour n'avoir qu'à le orer sur le screen, faire le clipping etc... Bref, dès qu'on veut du texte en-dehors du bon gros texte en plein milieu dont on connait la longeur exact, c'est rigolo. grin


Autre merde : la couleur 3, sous PedroM, c'est le texte en blanc sur fond transparent, mais sous AMS, c'est grisé. Or j'ai besoin de la même couleur que celle de PedroM... sad

48

Je ne comprends pas comment sous AMS ca peut être grisé par 2 appels à DrawStr avec la même couleur 3 #triconfus#

49

Le mode "insélectionnable" du TIOS il m'a semblé, mais peut-être que je me trompe. Mais je suis sous Fedora 10 là, TiEmu marche pas.

50

Le mode 3 est A_SHADED, c'est effectivement le mode "grisé" (pointillé en fait) de AMS.
La documentation de DrawChar dit ça sur A_SHADED:
The character is masked so that every other pixel is turned off then ORed into the destination

C'est PedroM qui n'est pas conforme.

Pour avoir l'effet que tu veux, il faut que tu affiches ton texte 2 fois, une fois avec A_NORMAL et une fois avec A_XOR.
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é

51

A oué peut être. Mais ca sert à rien grisé. C'est plus joli blanc.

52

grin

(Alors, on aura quelque chose d'implanté dans genlib à ce niveau-là ? cheeky)

53

Tu me fournis le patch trilove ?

54

Pour que tu me dises encore "Bon, je l'intègre, mais autrement" ? trifouet grin
Sinon, je peux regarder, mais je suis rendu à avancer dans mon code vu que j'ai trouvé mon bug, alors je fais avec ce que j'ai grin (et puis bon, je prétends pas avoir le quart de la moitié de ton niveau, donc bon, pour ce que valent mes patches ... neutral)

Sinon, quelques questions :
- il n'y a pas de problème à désallouer les DScreens avant d'appeler genlib::quit (je pense que non) ?
- il y a des fonctions de lignes horizontales, mais pas de verticales de prévues ?
- qu'est-ce que ça va faire concrètement les fonctions genlib::draw_hline_light/shadow ? Si c'est une question de canal alpha/autre concept de graphisme, je n'y connais rien donc je ne sais pas ce que font ces fonctions...

55

Folco (./54) :
- il n'y a pas de problème à désallouer les DScreens avant d'appeler genlib::quit (je pense que non) ?

Non
Folco (./54) :
- il y a des fonctions de lignes horizontales, mais pas de verticales de prévues ?

Line tout court à une routine dédiée pour les verticales je crois.
Folco (./54) :
- qu'est-ce que ça va faire concrètement les fonctions genlib::draw_hline_light/shadow ? Si c'est une question de canal alpha/autre concept de graphisme, je n'y connais rien donc je ne sais pas ce que font ces fonctions...

Ca applique un filtre qui éclaircit ou assombrit la ligne.
Exemple: l'attaque luminaire de chorno fantasy ou jes ombres dynamiques de chrono fantasy.