1

Voila j'ai lu la question precedente de bidoo et les reponses, notamment de samuse qui explique qu'avec GENLIB on peut scroller un écran pixel par pixel, et je voudrais savoir comment ça marche et quelles fonctions utiliser ( en sachant que je débute en C donc pas de mots trop compliqués SVP wink... ).
Merci d'avance pour les réponses.
Seules deux choses sont infinies : l'univers et la stupidité de l'homme ; et encore, je ne suis pas sûr de la première. Albert Einstein

2

tu as regardé la doc de genlib, pour commencer (je peux pas t'en dire plus, je n'y connais rien en graphismes)
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

3

Dans le pack Genlib, repertoire Tigcc, regarde l'exemple gen5.c

4

Je n'avais pas regardé la doc de genlib car je ne l'avais pas... Merci pr l'idée ; ) !!!
Seules deux choses sont infinies : l'univers et la stupidité de l'homme ; et encore, je ne suis pas sûr de la première. Albert Einstein

5

Le principe d'une map (2D) est d'afficher plein de petites images (carrés) de taille définie les uns à côté des autres. Le fait de faire défiler une map correspond donc à dessiner les carrés en question en utilisant un décalage (offset). Par exemple, sans scrolling, tu dessines ta map ainsi:
1 2 3
4 5 6
7 8 9
Le 1, le 4 et le 7 se trouveront à la position x=0 (tout à gauche). Le 2, le 5 et le 8 à la position x=16 (si on prend que chacun des carrés fait seize pixels). Enfin, la dernière colonne sera aux positions x=32. Maintenant, si tu dessines cela avec un offset (c-à-d plus à gauche ou plus à droite), tu auras l'impression que la map a défilé. Par exemple, si tu dessine la première colonne (1, 4, 7) aux positions x=-1, la deuxième à x=15, et la dernière à x=31, ta map aura défilé de un pixel sur la gauche.
Sachant cela, tu peux faire défiler n'importe quelle map, en t'assurant que le scrolling reste toujours entre 0 et -15, puisque s'il dépasse cette valeur, tu peux alors le remettre à zéro et dessiner ta map comme suit:
2 3 4
5 6 7
8 9 0
Note que la dernière colonne est en fait nouvelle, car on ne la voyait pas avant. Le problème technique qui se pose est que si tu dessines tes sprites à des positions négatives (-1 dans notre exemple), la TI va planter. Il te faut donc utiliser des routines de sprites clippées. C'est relativement difficile à réaliser, mais la plupart des librairies t'en mettent à dispositions, comme GENLIB dont tu as parlé plus haut. Cependant, avant de choisir "bêtement" GENLIB, renseigne-toi sur les autres librairies qui sont disponibles car cela peut jouer un facteur important (vitesse mais surtout la taille) selon ce que tu recherches. Pour débuter, je te conseille une lib peu rapide mais plus souple et plus petite. wink
Edit: Méga-cross! 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

6

Merci pour ta réponse Brunni. Tu me conseilles koi comme librairie + rapides ???
Et une autre queston sur GENLIB : elle s'utilise en C ou asm ??? ( parce que ds la doc j'ai l'impression que c'est de l'asm ... )
Seules deux choses sont infinies : l'univers et la stupidité de l'homme ; et encore, je ne suis pas sûr de la première. Albert Einstein

7

Je n'ai jamais utilisé GENLIB, car j'ai lu qu'elle était très rapide (ce qui m'est inutile vu que je code de toutes manières comme un porc) mais surtout qu'elle produisait des programmes TRES TRES gros.
Je ne peux pas te conseiller au niveau des libs, puisque je n'ai utilisé qu'Extgraph que j'ai modifiée selon mes besoins. Mais vu que les routines sont écrites en ASM à présent, ce n'est plus possible. Mais même si une librairie est écrite en ASM, tu peux généralement l'utiliser en C aussi (ce n'est pas compliqué).
PpHd
: Dans le pack Genlib, repertoire Tigcc, regarde l'exemple gen5.c
gen5.c ça veut dire que c'est du C donc que la lib est bien utilisable en C! wink
Edit: En fait dans Extgraph, il y a les fonctions ClipSpriteXXX que tu peux utiliser. Ca a l'avantage de s'utiliser de la même manière que les sprites standard, excepté que c'est clippé.
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

8

lol... Merci je n'avais pas pensé à ca ( gen5.CCCCCCCCCCCC !!! ). confus gol
Et ExtGraph va bien pr un débutant ???
Seules deux choses sont infinies : l'univers et la stupidité de l'homme ; et encore, je ne suis pas sûr de la première. Albert Einstein

9

Euh... ben ça je n'en ai aucune idée! ^^
Mais bon si tu as compris le principe (ce que je t'ai expliqué plus haut) alors tu n'auras aucune peine à l'implémenter avec Extgraph, surtout si tu es déjà familiarisé avec les fonctions de sprites avec TIGCC... wink
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

10

>mais surtout qu'elle produisait des programmes TRES TRES gros.
Totalement faux. La seule contrainte est de devoir linke ton programme dynamiquement avec la lib.
Langages: C (GCC, GTC) / ASM / Small / Forth / et j'en passe tongue

11

Personnellement, je trouve que genlib est un peu difficile à aborder par les débutants, mais tu peux quand même essayer.
L'avantage de genlib, c'est qu'elle est vraiment très rapide (c'est la lib la plus rapide).

Si tu veux, il y a une version traduite de la doc de genlib sur la page perso de Ximoon : http://membres.lycos.fr/ximoon
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. »

12

Sasume> Toi, tu conseillerais quoi pour les débutants?
>mais surtout qu'elle produisait des programmes TRES TRES gros. Totalement faux
Heu oui désolé, j'ai dit une connerie chinois
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

13

PpHd> Forth ? et qu'entends-tu par "j'en passe" ? tongue

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

14

Oue Forth tongue

>"j'en passe" ?
Je les connais pas tous.

15

Pour TI ? On peut le télécharger où ? (en tout cas pas dmc)

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

16

on ne peut pas il me semble. Ça n'a jamais été releasé si je ne me trompe pas.

17

Brunni> Je conseille de tout essayer pour prendre ce qui te convient le mieux.
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. »

18

je pense aussi que c'est la meilleure méthode à suivre
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

19

Chaque lib a ses avantages et ses inconvénients :
(selon moi) :
XLib :
+ Très rapide
- Enorme

Genlib :
+ Très rapide
+ Dynamique donc si plusieurs programmes l'utilisent on réalise une bonne économie de place
- Pas énormément de fonctions différentes (mais à priori, ça sa s'arranger bientôt)

ExtGraph :
+ Prend peu de place (sans compter le tilemap engine) par rapport à la concurrence statique (xlib quoi)
+ Enormément de fonctions différentes donc on trouve forcément son bonheur
- Un peu plus lente que les autres libs
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. »

20

Xlib était en DLL avant, de taille 6 ~ 7 Ko si j'ai bonne mémoire tongue, donc niveau place si elle est utilisée par plusieurs programmes ça va. m'enfin KK avait gueulé sur cette DLL, je sais pas si pour les nouvelles versions TiMad a continué.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

21

La DLL ne comprenait que les fonctions les plus utilisées de Xlib (XOn(), XOff(), ...), le reste était statique (fonctions de sprites, de clavier, ...).
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. »

22

Sasume, parle pas de ce que tu connais pas stp..

Chaque lib a ses avantages et ses inconvénients :
(selon moi) :
XLib :
+ Très rapide
- Enorme

Genlib :
+ Très rapide
+ Dynamique donc si plusieurs programmes l'utilisent on réalise une bonne économie de place - Pas énormément de fonctions différentes (mais à priori, ça sa s'arranger bientôt)

Le Enorme est trés exagéré sachant que dans 7 ko t'as les fonctions de plan et tous les sprites maské et avec transparence de toutes les tailles + JoyPad + niveau de gris..
L'avantage de genlib, c'est qu'elle est vraiment très rapide (c'est la lib la plus rapide).

-> Ca veut rien dire pour les sprites, c Xlib la plus rapide, pour les pxl aussi pour les cpylcd aussi.. ya que les tilesmp qui n'est pas supporté dans une version distribué de Xlib qui peut donc etre considéré comme trés rapide (notamment sprite8x8).
D'ailleut j'avais diffusé des benchmarks la dessus...
La DLL ne comprenait que les fonctions les plus utilisées de Xlib (XOn(), XOff(), ...), le reste était statique (fonctions de sprites, de clavier, ...).

Justement non.. les fonctions de sprites était dans la dll.. sinon je vois pas l'interet de faire une dll...

23

ça faisait longtemps zzz
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.

24

En meme temps je peut pas laisser dire des conneri*s grosses comme le monde

25

hehe

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

26

Et graphX ?
avatar
I'm on a boat motherfucker, don't you ever forget

27

graphX c bien aussi!

28

Bon, désolé mais je me sens obligé...
JackosKing VNR
:
Chaque lib a ses avantages et ses inconvénients :
(selon moi) :
XLib :
+ Très rapide
- Enorme

Genlib :
+ Très rapide
+ Dynamique donc si plusieurs programmes l'utilisent on réalise une bonne économie de place - Pas énormément de fonctions différentes (mais à priori, ça sa s'arranger bientôt)
Le Enorme est trés exagéré sachant que dans 7 ko t'as les fonctions de plan et tous les sprites maské et avec transparence de toutes les tailles + JoyPad + niveau de gris..
Je me souviens avoir vu les sources et le énorme n'est pas injustifié.
L'avantage de genlib, c'est qu'elle est vraiment très rapide (c'est la lib la plus rapide).

-> Ca veut rien dire pour les sprites, c Xlib la plus rapide, pour les pxl aussi pour les cpylcd aussi.. ya que les tilesmp qui n'est pas supporté dans une version distribué de Xlib qui peut donc etre considéré comme trés rapide (notamment sprite8x8). D'ailleut j'avais diffusé des benchmarks la dessus...
OK. Tu as peut-être raison...
La DLL ne comprenait que les fonctions les plus utilisées de Xlib (XOn(), XOff(), ...), le reste était statique (fonctions de sprites, de clavier, ...).
Justement non.. les fonctions de sprites était dans la dll.. sinon je vois pas l'interet de faire une dll...
Ben éviter de prendre de la place pour du code qui n'est pas utilisé par tous les programmes.
Mais je reviens sur ce que j'ai dit j'ai probablement parlé trop vite.
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. »

29

Brunni> Je conseille de tout essayer pour prendre ce qui te convient le mieux.
Heu non ce n'était pas pour moi mais pour philippe021 hehe
Sinon je pense qu'il n'est pas obligatoire d'utiliser une lib tongue Perso je gérais mon écran comme suit (ce n'est pas forcément une bonne idée, après faut voir):
baseX et baseY -> scrolling en nombre de blocs, c-à-d à partir de quel bloc on commence à dessiner au sommet de l'écran
scrlX et scrlY -> défilement précis (entre 0 et la taille d'un bloc) qui donne le décalage vers la gauche/haut appliqué.
Après, je gère ma map pour j=0 à hauteur_ecran/hauteur_bloc, et pour i=0 à largeur_ecran/largeur_bloc:
Avec le bloc[j+baseY,i+baseX]:
Je calcule d'abord l'adresse du sprite que je vais afficher en fonction du bloc en question, et crée éventuellement les objets définis dans la map avant de les en retirer (de manière à ne pas les créer plusieurs fois). Ensuite je dessine le sprite aux positions (i*largeur_bloc-scrlX, j*hauteur_bloc-scrlY). Utiliser la fonction ClipSprite16 de Extgraph me semble le plus simple, d'autant que tu n'es pas obligé d'inclure toute la lib si tu n'as besoin que d'une seule fonction... wink
On peut facilement de cette manière gérer plusieurs plans d'une passe (par exemple dans mon Mario, j'avais le plan 1, la terre, le plan 2, l'arrière-plan, le plan 3, les objets)
Voilà, qu'en pensez-vous?
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

1. ExtGraph est une lib statique, donc ça n'a pas vraiment de sens de dire qu'on l'inclut entièrement...
2. Ce sera plus lent qu'en utilisant des tilemap engines mais ça prendra beaucoup moins de place (puisque à priori tu utiliseras de toute façon une routine de sprite16 clippée pour afficher des objets dans ton environnement).
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. »