60

Je t'avoue que pour le moment, je ne vois pas trop comment faire. J'y réfléchirai le moment venu (j'ai encore un bout de chemin à faire avant d'en arriver là tongue ).
avatar
Ancien pseudo : worfang.

61

62

Déjà que j'ai du mal à voir la différence entre les avantages du kernel et ceux du nostub (pas de troll ici s'il-vous-plait, sinon c'est le trifouet ).
Alors faire une librairie conditionnelle kernell (ouhh le joli nom ^^)...
avatar
Ancien pseudo : worfang.

63

64

Est ce que faire ça forcerait mon programme à être fait en kernel?
avatar
Ancien pseudo : worfang.

65

Oui, bref poubelle. 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é

66

Mort de rire!

C'est vraiment marrant (quoique, marrant est-il le mot? roll ) l'affrontement entre kernel et nostub. Je ne sais vraiment pas à quoi m'en tenir pour le moment... Les deux ont leurs avantages et leurs inconvenients, alors..
avatar
Ancien pseudo : worfang.

67

Daniel Vouaux (./64) :
Est ce que faire ça forcerait mon programme à être fait en kernel?

pas forcément, tu peux faire du mistub hehe et devenir le premier programme mistub au monde </mauvaise langue> tripo

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

68

Du mistub? C'est un mélange des deux? Dans tous les cas ça doit obliger l'utilisation d'un kernel (c'est l'obligation de base du mode kernel, non?). Dans ce cas là autant faire du vrai kernel. grin

Tu peux m'expliquer ce que tu sous-entend par "mistub" précisément, s'il-te-plaît? smile

EDIT: Rhoo quel pigeon j'avais pas vu ton texte en transparent! tongue
avatar
Ancien pseudo : worfang.

69

(j'ai fait un edit furtif pour le rajouter ^^)

PpHd t'expliquera mieux que moi mais en gros c'est du nostub, avec passage conditionnel en mode kernel si y en a un...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

70

Ah ça existe vraiment en plus =_=.
avatar
Ancien pseudo : worfang.

71

Mais commet tigcc ne le supporte pas, tu ne pourras pas le faire.

72

Eh bien comme souvent dans ce genre de programmes modulaires, je pense qu'il vaut mieux passer par un format intermédiaire et généraliste. Chaque plugin récupère les données de ce format et les écrit dans le sien.

Tout bêtement, ce format intermédiaire peut être transmis dans un fichier dont le nom est fixé d'avance (du genre "intermed.bitm"), et consisterait en un bitmap composé de 3 plans : gris clair, gris foncé, masque.
- Les formats en noir & blanc n'utiliseront que le bitmap clair pour produire leurs données
- Les formats sans masques n'utiliseront pas le masque.
- Les formats masqués utiliseront les 3 bitmaps.

Pour simplifier le codage des plugins, et sachant qu'il n'y a vraiment pas de contrainte de vitesse-taille pour ce genre de programmes, tu peux faire des bitmaps qui utilisent 1 octet par pixel.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

73

ça veut dire qu'on limite le logiciel dès la conception aux sprites 4 nvg, avec 1 masque. (pas de 7 ou 8 nvg ? pas possible d'utiliser plusieurs masques ?)
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. »

74

C'est lui qui voit ça ! C'était un exemple.

Ca sert à quoi plusieurs masques d'ailleurs ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

75

Extgraph proposait un format de sprite avec 1 masque par plan (donc 2 masques pour 4 nvg).
Je ne trouvais pas ça particulièrement intéressant d'ailleurs, mais ce que je voulais dire, c'est que c'est dommage de geler les possibilités de format dès le début.
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. »

76

Euhh (/mode noob ON) ça sert à quoi un masque? °_°

Pour ce qui est des plugins, j'y ait réfléchi et je vois à peu prêt comment je pourrais faire :
-Mon programme permet de créer l'image.
-Au moment où l'utilisateur souhaite enregistrer son image, il choisit un des formats de compression possible (un de ceux déjà implémenté "de base" dans le programme ou bien un de ceux rajouté par plugin). A partir de là mon programme appellerait, ou non, le plugin requit.
-Le plugin serait un programme C qui prendrait plusieurs arguments (type les pointeurs vers les tableaux représentant les images, etc...) et serait décomposé en deux grandes parties : Compression / Décompression.
-A partir de ce principe là le plugin générerait lui-même l'image au bon format.
Pensez-vous que c'est réalisable?

Thibaut> Après relecture, ça ressemble un peu à ce que tu proposes en fait ^_^. Pour ce qui est de coder 1 pixel par octet, c'est réalisable sur des sprites, mais pas sur une image de 255x255 pixels (v'la la RAM que ça boufferait =_= ). Et pis j'ai déjà codé deux fonctions (une pour la lecture, une pour l'écriture) qui simplifient sensiblement la manipulation de bits (c'est presque aussi simple que si je faisais du 1 pixel par octet, sauf que c'est plus beau et que ça mange moins de RAM ^^).

Pour ce qui est de faire du 7/8 NdG... J'avoue que je n'y avais pas trop pensé.. Il faudrait que je fasse ma propre routine d'affichage de NdG (actuellement j'utilise celle de base de TIGCC)? Je suppose qu'il existe des librairies pour ça, mais je préfèrerai m'en passer si possible. grin
avatar
Ancien pseudo : worfang.

77

Il existe plusieurs routines de 7/8 niveaux de gris, dont une faite par Kevin sur la base d'une vieille version de celle de TIGCCLIB. C'est à dire qu'elle ne bénéficie pas de certaines optimisations réalisées ultérieurement par plusieurs personnes ([EDIT]: non, Kevin, je ne fais pas référence au changement qui fâche wink ).
De plus, elle a(vait ?) ses propres pessimizations, par exemple plusieurs références xxx.l relogées dans des instructions consécutives, ce qui veut dire qu'un lea + des références d(pc) sont possibles, et évidemment plus petits ET plus rapides.
Mais ça fait cinq ans environ que Kevin n'a pas pris le temps de finir la documentation et d'intégrer le tout à TIGCCLIB. Je comprends tout à fait, parce que c'est difficile de trouver la motivation pour quelque chose d'assez long, et pénible car répétitif.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

78

D'accord. Je vais faire mon programme dans l'optique d'un 4 niveaux de gris pour le moment, et s'il y a vraiment necessité, je le ferais passer ensuite en 7 niveaux de gris.
avatar
Ancien pseudo : worfang.

79

Kevin Kofler (./35) :
Daniel Vouaux (./26) :
En fait, le Handler, c'est exactement comme une autre fonction

Pas tout à fait, il y a des choses que tu n'as pas intérêt à faire dans un handler d'interruptions (certains ROM_CALLs ne fonctionnent pas correctement, par exemple). Mais si c'est juste pour incrémenter un compteur, aucun souci.


On peut faire tout un tas de choses dans les handlers hehe
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/

80

Et quand on s'y prend bien, ça donne des choses magnifiques wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

81

Daniel Vouaux (./76) :
Pour ce qui est des plugins, j'y ait réfléchi et je vois à peu prêt comment je pourrais faire :
-Mon programme permet de créer l'image.
-Au moment où l'utilisateur souhaite enregistrer son image, il choisit un des formats de compression possible (un de ceux déjà implémenté "de base" dans le programme ou bien un de ceux rajouté par plugin). A partir de là mon programme appellerait, ou non, le plugin requit.
-Le plugin serait un programme C qui prendrait plusieurs arguments (type les pointeurs vers les tableaux représentant les images, etc...) et serait décomposé en deux grandes parties : Compression / Décompression.
-A partir de ce principe là le plugin générerait lui-même l'image au bon format.Pensez-vous que c'est réalisable?

Bien sûr, l'idée est bonne smile
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. »

82

Ok. Je tenterai de mettre ça en place le moment venu. smile

Quelqu'un peut-il me dire à quoi sert le masque d'une image?
avatar
Ancien pseudo : worfang.

83

C'est une information qui permet de délimiter un contour autour de l'image.
Parfois ton image n'est pas forcément un beau carré dont la largeur est multiple de 8, elle peut être un disque par exemple, mais pourtant stockée dans un sprite carré :
00011000
00111100
01111110
11111111
11111111
01111110
00111100
00011000

Lors de l'affichage, tu ne veux pas que les coins du sprite soient affichés (il faudrait que l'arrière-plan reste visible à la place de ces coins), car ton image n'est que le disque au milieu.
Tu vas donc utiliser un masque pour délimiter les contours de ton image :
11100111
11000011
10000001
00000000
00000000
10000001
11000011
11100111
.
La fonction de ton programme qui affichera le sprite utilisera le masque pour effacer l'arrière plan là où il y a des 0 et ensuite affichera ton image par-dessus sans écraser l'arrière-plan.
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. »

84

Ah oui. En fait, c'est un peu comme s'il y avait une teinte "transparente".
Je m'étais déjà confronté à ce problème, et je l'avais résolu d'une autre manière (moins belle et offrant moins de possibilités mais plus économique en place) :
Je partais du principe que les pixels blancs étaient transparents (à vrai dire pas tout à fait, il fallait un certain regroupement de pixels blancs).
Là où j'avais besoin d'une teinte claire, j'utilisais du gris clair (teinte somme toute assez proche du blanc, surtout quand on règle le contraste de façon à bien voir le gris foncé).
avatar
Ancien pseudo : worfang.

85

C'est pas ce principe que genlib utilise ? smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

86

Oui, il y a d'autres solutions possibles : considérer que l'une des couleurs est transparentes, ou bien essayer de déterminer automatiquement le masque (ces deux techniques sont implémentées dans genlib).
Chaque solution a ses avantages et ses inconvénients.
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. »

87

Ah oui, déterminer automatiquement le masque c'est possible aussi (en appliquant une focntion type "pot de peinture" sur les bords) mais ça empêche d'avoir de la transparence à l'intérieur de l'image.
avatar
Ancien pseudo : worfang.

88

La raison principale pour laquelle TIGCC ne gère pas le "mistub" est simple:
* soit on a aussi une implémentation _nostub des fonctionnalités pour lesquelles on veut utiliser le kernel, dans ce cas pourquoi pas toujours utiliser l'implémentation _nostub,
* soit on n'en a pas, du coup ça fait des programmes qui fonctionnent moins bien sans kernel qu'avec, ce que nous ne voulons pas encourager.

Il y a aussi des raisons techniques:
* les relogements: si on met les relogements au format AMS seulement, il y a plusieurs kernels qui ne relogeront pas le programme correctement si on le lance avec userlib::exec; on ne peut pas mettre la table kernel seulement parce que ça doit marcher sans kernel aussi; et on ne peut pas mettre les deux parce que la table kernel appliquée à un programme relogé, ça donne un programme avec des adresses qui ne sont pas valides (c'est probablement ça la raison derrière le format redondant employé par AMS, ce format peut reloger un programme déjà relogé sans problèmes).
* Les programmes "mistub" ne marchent pas si KerNO est installé, à moins de tester KerNO spécialement, parce que KerNO installe des implémentation stub des fonctions kernel qui donnent un message d'erreur "KerNO does not support DoorsOS programs".
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é

89

Pourquoi tu dis "on", "nous", alors que tu es seul pour tout décider ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

90

Quand ça a été discuté, il y avait au moins Sebastian aussi. (Je ne sais plus si Zeljko a donné son avis aussi.)
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é