1

Bonjour

Est-il possible d'inclure TileMap.h à un programme C créé sur GTC et de le compiler sans que GTC n'affiche d'erreur ? (Parce que j'ai essayé et ça marche pas trop mais je suis pas très sur de mes modifs...) confus
Elements Soul, mon projet sur TI-92+ (et d'ailleurs mon seul VRAI projet)
Avancement :

Interface : 90 %
Système de combats : 95 %
BDDs : 60 %
Histoire : 5 %

2

Quel Tilemap Engine wink ? La version de Sasume, ou la version intégrée à ExtGraph (qui ne doit pas être bien différente...) ?
Si ces fichiers ne fonctionnent pas sous GTC, on pourrait les corriger, je pense.
extgraph.h contient un #define fait pour ne traiter que TIGCC (à moins que GTC triche grin), #define qui doit dater d'une époque où on ne voyait pas encore trop GTC pointer le bout de son nez 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.

3

C'est le TileMap de Sasume dont je parle.
Effectivement, je pense qu'il devrait y avoir moyen de modifier les fichiers tilemap.h et tilemap.a.

(Mais au fait, c'est quoi un fichier *.a pour la calculette ? confus )
Je savais même pas qu'une version était intégrée à ExtGraph, qui fonctionne très bien sur ma 92+...
Elements Soul, mon projet sur TI-92+ (et d'ailleurs mon seul VRAI projet)
Avancement :

Interface : 90 %
Système de combats : 95 %
BDDs : 60 %
Histoire : 5 %

4

Je crois qu'il peut y avoir des problèmes dus à la syntaxe utilisée pour la déclaration des fonctions dans tilemap.h, syntaxe que GTC ne reconnaît pas.
Mais le mieux (à mon avis) est d'utiliser genlib, qui est quand même plus optimisé que ce que j'avais pondu à l'époque.
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. »

5

Sasume tu parles des void *dest asm("a0") ou d'autre chose ?
Et les fichiers .a ce sont les fichiers HDR de la calculette ou non ?
Elements Soul, mon projet sur TI-92+ (et d'ailleurs mon seul VRAI projet)
Avancement :

Interface : 90 %
Système de combats : 95 %
BDDs : 60 %
Histoire : 5 %

6

Oui, la déclaration des paramètres.
Mais je préfèrerais que ce soit Pollux qui réponde à ces question, personnellement je n'ai réalisé aucun test avec GTC, donc je ne sais pas à quel point c'est compatible ou incompatible.
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. »

7

!call Pollux
--- Call : Pollux appelé(e) sur ce topic ...
Je suis un des premiers à utiliser call utilement tripo
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

8

Je l'ai déjà appelé par mini-message smile
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

9

GTC ne supporte pas les appels de fonction avec des paramètres en dehors de d0-d2/a0-a1, il faudrait vraiment que je le rajoute... Pour extgraph j'avais fait il y a pas mal de temps une version compatible GTC et avec seulement les fonctions les plus utiles (sachant que la politique d'extgraph est d'avoir 500 versions différentes de chaque fonction pour n'en inclure qu'une dans le programme final, c'est pas très pratique pour la programmation on-calc si on veut tout garder sad genlib est plus adaptée, mais par contre évidemment ça ne marchera qu'en kernel).

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

10

C'est sûr que les philosophies de Genlib et d'ExtGraph sont très différentes. Du coup, ExtGraph n'est pas vraiment faite pour la programmation on-calc, même avec des headers précompilés... Et si tu supprimes les fonctions qui utilisent des paramètres hors de d0-d2/a0-a1, tu en supprimes un paquet !
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

11

non mais c'était vraiment une vieille version, à l'époque où toutes les fonctions étaient en stkparm tongue

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

12

Donc pour l'instant, GTC considère que les paramètres sont d'abord sur d0-d2/a0-a1, puis sur la pile ?
Et ce serait compliqué (ça demande d'écrire beaucoup de code ?) à changer, cette convention d'appel ?
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. »

13

Avec tout ça, ca semble mal parti pour pouvoir intégrer TileMap... sad
Mais bon, il reste toujours Genlib et ExtGraph...
Elements Soul, mon projet sur TI-92+ (et d'ailleurs mon seul VRAI projet)
Avancement :

Interface : 90 %
Système de combats : 95 %
BDDs : 60 %
Histoire : 5 %

14

Le tilemap dans ExtGraph ne marchera pas mieux que le TileMap de Sasume (qui est l'original), pour la même raison.
GenLib limitera ton programme au mode kernel-based, ce qui restreindra donc le nombre d'utilisateurs potentiels (même s'il est un fait que ceux qui utilisent un kernel sont assez nombreux, ne serait-ce que pour la protection anti-crashes).

Pollux, même question que Sasume: "Et ce serait compliqué (ça demande d'écrire beaucoup de code ?) à changer, cette convention d'appel ?" smile
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

15

16

Hé, j'ai pourtant fait attention d'éviter le gros troll "le kernel cay super mal", et j'ai précisé que pas mal de monde en utilisait tongue
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

17

18

./14: J'ai fait un sondage pour voir si ca intéresserait de monde un version nostub à jour de genlib. Le résultat a été sans appel : tout le monde s'en fout.
Et si mes souvenirs sont bons, sous GTC, il faut utiliser genclib (Mais ca doit être transparent pour l'utilisateur).

19

Lionel Debroux (./14) :
Pollux, même question que Sasume: "Et ce serait compliqué (ça demande d'écrire beaucoup de code ?) à changer, cette convention d'appel ?" smile

Ce serait simple à faire de façon inefficace, mais de façon efficace c'est nettement plus délicat...

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

20

./18: je savais que tout le monde se fout de Genlib AMS native 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.

21

Pollux (./19) :
Ce serait simple à faire de façon inefficace, mais de façon efficace c'est nettement plus délicat...
Ah sad
Concrêtement ça implique d'écrire quoi ? (juste par curiosité 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. »

22

Concrètement :
[ul][li]les registres temporaires sont limités à d0-d2/a0-a1, et sont alloués de façon séquentielle pour pouvoir être efficacement empilés et dépilés si besoin est ; il faut pouvoir ajouter d'autres registres temporaires (par exemple a4), et il faut pouvoir allouer de façon non séquentielle quand on génère les arguments de la fonction
[li]les registres sont alloués globalement pour la fonction, or ça serait un peu coûteux de mettre par exemple tous les registres d'adresses en registre temporaire simplement parce qu'un appel de fonction en a besoin : il faut donc 1] évaluer pour chaque registre si ça vaut le coup de le passer en temporaire 2] si un registre n'est pas temporaire mais doit être utilisé pour passer un argument, il faut sauvegarder son contenu dans un registre temporaire, et transformer pour la durée de l'appel les références à l'ancien registre en références au nouveau registre ; or l'architecture actuelle des registres temporaires n'est pas vraiment faite pour ça : par exemple quand on génère x+y, on génère x, on le stocke dans un registre temporaire (disons d0), puis quand on génère y on peut faire n'importe quoi avec d0 du moment que sa valeur est restaurée à la fin de la génération de y pour pouvoir effectuer l'addition -- alors que si une variable était stockée dans d0, elle pourrait être accédée absolument n'importe quand, donc la génération de y ne pourrait pas faire n'importe quoi avec d0 puisque potentiellement elle pourrait avoir besoin de cette valeur en plein milieu du calcul...
[li]plus évidemment plein de petits détails (parser les asm(), modifier la façon dont les fonctions regparm normales sont générées pour pouvoir les mélanger avec les fonctions à paramètres asm(), etc)[/ul]

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

23

Rien compris gni
Elements Soul, mon projet sur TI-92+ (et d'ailleurs mon seul VRAI projet)
Avancement :

Interface : 90 %
Système de combats : 95 %
BDDs : 60 %
Histoire : 5 %