1

Je suis en train d'essayer de coder un jeu en C.
Les maps des niveaux sont des matrices avec le n° du tile correspondant dans chaque cellule (comme pour les RPG en BASIC).
Mais je n'arrive pas trouver une routine qui me permette d'afficher les tiles à partir de la matrice sans faire des tonnes de 'IF'.
Pouvez-vous m'aider, SVP ?

2

La routine que tu demandes existe bel et bien. Elle est super optimisee. Mais si je le dis, je vais me faire taper dessus...

3

optimisation...
Jachie> qd tu entend le mot OPTIMISATION ici (surtout qd c PpHd qui le dit), tu ne peux penser qu'à UNE SEULE chose : genlib !!!
(moi, j'ose le dire... même si je sais bien que Kevin va encore dire que Genlib = Kernel = pas bien grin)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

4

Il n'y a pas une doc en français de genlib ?
Et pour utiliser Genlib en C, y faut pas avoir genclib ?
J'y connais vraiment rien en librairies

5

pour utiliser un prog qui a été prog en C avec genlib, il faut effectivement GenClib sur la TI (sauf si le programmeur a pas utilisé les trucs de genclib, mais directement les macros de Genlib (ou un truc comme ça))
=> par ex, je crois que Total utilisait genlib en C sans Genclib...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

6

Il existe une doc complete en anglais dans le zip. Et genclib est juste un interface, qui disparaitra des que tigcc suportera la convention d'appels par registres. Il ne faut rien savoir sur genclib.

7

oué.
La doc en angalis=> ça, je crois que tt le monde le sais grin mais en français par contre...


Honnétement, la doc en angalmis, elle est pas dure. Je l'ai moi-même lu quelques fois, et j'ai quasiment tt pigé (sans trop faire d'efforts).
Cela dit, ça demande qd même une certains connaissance de l'anglais technique...
LIre la doc de TIGCC permet d'en apprend pas mal !
[edit]Edité par squale92 le 15-11-2001 à 18:30:07[/edit]
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

Je veux pas dire, mais c'est pas du shakespeare. => Tres simple !

9

c ce que je disais.
Mais c qd même un peu spécialisé comme vocabulaire.
Au tt début que j'ai commencé le C, j'avais toujorus le dico ac moi !!!
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

10

ouai mais après c'est souvent les mêmes mots qui reviennent embarrassed

11

oué. Maintenant, le dico que j'avais acheté, il me sert quasiment plus...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

PpHd: "des que tigcc suportera la convention d'appels par registres": Ah bon, c'est prévu un passing-by-register sur TIGCC ?
Mais les fonctions de TIOS ne supportent que le passing-by-stack, donc ça ne marchera que pour des fonctions style ExtGraph, Genlib (qui ne sera d'ailleurs pas à réécrire, car elle a déjà le passing-by-register).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

13

arf... un fanatique de retour ?
grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

14

Disons qu'il existe un patch deja tout pret pour ca, et que sebastian n'a qu'a l'utiliser.
Je l'ai essayer et ca marche au poil

15

s'il ne veut pas l'utiliser, il ne serait pas possible que tu le distribue par toi même ?
(vu que Kevin fait maintenant parti de la Team, c mal barré sad)

enfin, si tu le distribue par toi même, tu te fera huer encore une fois... mais bon, tu es habitué grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

16

Mais pourquoi vous aimez pas genlib, elle a l'air très bien, cette lib ???

17

certaines personnes ne veulent pas entendre parler de Genlib, parce que Genlib ne fonctionne que si un Kernel est installé...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

Je ne comprendrai jamais la guerre kernel/_nostub...
C'est pas chiant d'installer un kernel sur sa TI...
Ah si, j'oubliais, ça prend 12Ko de mémoire, c'est tellement énorme.

enfin, je veux dire que d'un point de vue de 'joueur', je m'en fous complètement qu'un jeu soit en kernel ou pas.
Mais c'est vrai que je n'ai pas assez programmé en C pour me rendre compte des différences qu'il y a entre programmer un jeu en kernel ou en _nostub.
[edit]Edité par jackiechan91 le 15-11-2001 à 21:24:38[/edit]

19

Vous serez probablement étonnés, mais j'ai parlé du passage par registres à Sebastian il y a quelques jours. Il ne m'avait pas du tout l'air interessé. Surtout qu'il m'a dit qu'il pense que c'est que vous utilisez GCC-AmigaOS dans le GCC de LiteOS et que c'est pour ça que le passage par registres est supporté. (Est-ce vrai? Ou votre patch fonctionne-t-il avec GCC-M68k-COFF?) Tu peux essayer de parler directement à Sebastian. Et juste pour être sûr: le support du passage par registre laisse-t-il le passage par convention C habituel inchangé? Je pense bien que c'est le cas, mais mieux vaut s'assurer. (Sinon, on ne pourra en aucun cas le mettre! Tous les ROM_CALLs utilisent la convention C!)

Et le patch est disponible sur le FTP de JM, mais ce n'est pas facile du tout de recompiler GCC.

Encore un truc: votre patch fonctionne-t-il avec GCC 3.0x? Il est hors de question de revenir à GCC 2.9x!


Pour répondre à la question d'origine: ne te fais pas avoir par la publicité de PpHd. C'est très simple d'éviter d'avoir des tonnes de ifs, il suffit d'avoir un array de tiles. Par exemple pour 10 tiles 16*16:
short tiles[10][16] /* Il n'y a pas de 3ème dimension car chaque ligne fait un seul short. */={{/*tile1*/},{/*tile2*/},{/*tile3*/},{/*tile4*/},{/*tile5*/},{/*tile6*/},{/*tile7*/},{/*tile8*/},{/*tile9*/},{/*tile10*/}};

Après, il suffit d'accèder à chaque tile par: tiles[0], tiles[1], ...
[edit]Edité par Kevin Kofler le 16-11-2001 à 00:38:55[/edit]
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é

20

PpHd est doué en optimisation, mais Kevin aussi ! Je n'ai encore jamais eu à faire ceci, mais je crois que je ferai comme Kevin quand j'aurai à le faire, Genlib n'étant de toute façon pas accessible en nostub.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

21

Le passage par registre + -omit-frame-pointer permettrait d'acceler pas mal toutes les fonctions ! C'est franchement ce qui manque a tiGcc (Et ne dites pas que c'est seulement utile pour les kernels, c'est aussi vachement utile pour speeder les appels de fonctions puisque gcc optimera l'appel pour que les registres possedent deja la bonne valeur lors de l'appel !).
Je ne sais pas si c'est GCC-AmigaOS ou COFF, mais je ne crois pas (Ca comiple ensuite avec objtoti). Et meme si c'est AmigaOs, c'est pas trop grave puisqu'il me semble que c'est le format d'a68k (donc deja supporte par le linkeur). C'est sous la forme d'un patch de GCC. Et il laisse bien evidemement le passage par pile inchange ! Ca serait le comble !
Et je ne sais pas s'il fontionne avec GCC 3.0 (PS c pas mon patch smile)

Ensuite, Kevin, je te signales que tu n'as pas repondu a la question. Il demande pas comment indexer les tiles mais comment afficher une matrice de tiles.

22

C'est toi qui n'a pas compris que Kevin avait bien repondu a la question.
Une fois qu'il a fait sont tableau de tiles, Il n'a qu'a appeler 'tiles[M[i][j]]'
ou M est la matrice dont JackieChan nous parlait.
ce n'est pas violent tout de meme ?

Kevin> n'est-ce pas plus efficace de faire un tableau de pointeus dsur des sprites: ce sera moins gourmant en memoire, et pas genantettant donné qu'on n'y accede qu'en lecture a ce tableau. (pas de questions a se poser, meme si on connait pas les pointeurs).
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

23

>naholyr: Non, ce sera meme plus lent.
Appeller tiles[M[i][j]] ? Comment ca ? Ca s'appelle un tiles ?

24

C'est simple: on a un tableau de numéros de tiles qui représente le niveau:
unsigned char niveau[100][100]=/*...*/;
Puis, pour afficher un écran:
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<6;j++)
Sprite16(i*16,j*16,16,tiles[niveau[i+xpos][j+ypos]],LCD_MEM,SPRT_OR);

[edit]Edité par Kevin Kofler le 16-11-2001 à 23:59:05[/edit]
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é

25

ben oui moi j'utilise souvent des matrices en 3D pour ptits sprites

26

Merci beaucoup, d'avoir répondu, surtout kévin.
Je vais essayer ça...

27

Au fait, il y avait une erreur dans le dernier code que j'ai posté. C'est corrigé.
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é

28

Kevin: pourquoi utilises-tu le Sprite16 standard de TIGCC et pas le Sprite16_OR de ExtGraph ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

29

Le mot "standard" de ta phrase explique tout. grin Évidemment, on peut utiliser ExtGraph à la 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é

30

C'est mieux même. smile