1

Petite question :
Quelles sont les différences entre un programme seul et un prog avec un ASM ?
(moyens de le faire, avantages) car les essais que je fais sont toujours en 1 seul fichier alors que j'ai pas mal de progs avec au moins 2 fichiers. roll
Débutant avec TIGCC sur TI92+

2

A propos du programme en ASM: tu le fais en format A68k ou en format GNU ?

Il y a très peu de différences entre un programme (C ?) seul et un programme (C ?) avec un ASM.
Pour utiliser ta routine ASM dans le programme C il suffit de faire:

[Source C]
extern __myfunc__ (__attribute__((__stkparm__)) si ta fonction ASM prend ses paramètres sur la pile, ce qui est en général le cas) (paramètres de la function);
(Si ta fonction prend ses paramètres par registres, tu seras peut-être obligé de recourir à l'assembleur inline).

[Source ASM]
(format GNU, je ne sais pas ce que ça donne en A68k mais ça doit être proche)
.data
.xdef __myfunc__
.even
__myfunc__:
[...]

Pour les avantages: ça t'évite d'avoir tout dans le même source C et de le rendre illisible...

J'espère que j'ai bien compris ce que tu voulais dire...
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

En fait j'ai mal posé ma question triso
Je ne suis peut-être pas clair car je débute ...
En fait c'est par rapport aux progs que je dl : ils ont souvent un fichier supp en ASM; est-ce que çà sous entends forcément qu'il soit en assembleur ou on peut faire un prog en plusieurs fichiers en C. Comme par exemple les fichiers qui au lancement écrivent "decompressing".
J'espère avoir été plus clair cette fois roll
Débutant avec TIGCC sur TI92+

4

Autre question de débutant :

Je fais des essais avec extgraph pour commencer et j'ai çà :

static unsigned short sprite[] = {0xFF,0xC3,0xA5,0x99,0x99,0xA5,0xC3,0xFF};

puis

Sprite8_XOR(x, y, 8, sprite, LCD_MEM);

et à la compilation j'ai le message suivant :
"passing arg 4 of 'Sprite' from incompatible pointer type

que dois-je mettre à la place de sprite ?
Débutant avec TIGCC sur TI92+

5

Tu peux faire sans problème des projets avec plusieurs sources C, ASM, il n'y a pas de problème... Il faudra seulement que tu déclares tes fonctions extern si tu les utilises dans un autre fichier C que celui où elles ont été définies. Ou alors tu fais un header C inclus par tous tes fichiers C (mais pas par les ASM, ça ne doit pas être possible), mais il faut mettre au début:
#ifndef __MY_HEADER__
#define __MY_HEADER__

et à la fin:

#endif

(c'est pour éviter que le header soit préprocessé deux fois, ça gagne du temps de compilation).

Au fait, tu n'as pas répondu à ma question: tes fichiers sont en A68K ou en GNU ?

Pour le message n°3: deux choses possibles:
- soit tu fais un sprite de 16 pixels, dans ce cas-là il faut définir ton tableau comme static unsigned short (c'est ce que tu as fait) et utiliser les fonctions Sprite16...
- soit tu fais un sprite de 8 pixels (on dirait que c'est ce que tu veux faire), il faut définir ton tableaur comme static unsigned char et utiliser les fonctions Sprite8...

Surtout ne pas faire un cast à (unsigned char *) dans ton appel à Sprite8_XOR, car sinon tu vas avoir de drôles de choses (un sprite affiché une ligne sur 2, si tu laisses tel quel)...


Lionel Debroux.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

6

En fait je n'ai pas de fichiers ASM, c'est le type affiché sur la TI. C'est juste de l'information sinon merci pour l'explication, je pourrai essayer.

Pour l'histoire des sprites j'avais remarqué l'erreur entre temps ( char pour 8 au lieu de short tongue ). çà m'apprendra à faire attention ou à lire les docs arfff

Par contre j'ai mis sur une touche la fonction
SpriteX8_MIRROR_H(8, sprite, 8, sprite);
et quand je le fais j'ai droit à une belle "illegal instruction" pk ?
Débutant avec TIGCC sur TI92+

7

Alors que si je met

SpriteX8_MIRROR_H(8, sprite, 1, sprite);

mon sprite s'efface au lieu de s'inverser !trisotriso
Débutant avec TIGCC sur TI92+

8

Déjà, src ne doit pas être égal à dest ! Prends un autre sprite pour faire le mirror (actuellement, ça va ressembler à n'importe quoi).
Deuxièmement, le troisième paramètre (bytewidth) doit être 1 et pas 8 dans ton cas (actuellement, tu inverses un rectangle de 8*64 pixels sur lui-même, au lieu d'inverser un carré de 8*8 dans un autre sprite). Et comme ton sprite est en mémoire, il écrase ce qui est derrière lui, et notamment le code... Donc c'est parfaitement normal que ça plante...
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

Je n'avais pas vu ton message, donc tu as corrigé toi-même le deuxième problème. Mais le premier reste à corriger, c'est très simple...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

10

Après déclaration du deuxième sprite ..

SpriteX8_MIRROR_H(8, sprite, 1, sprite2);
sprite = sprite2 ;
me donne l'erreur suivante :
incompatible tupes in assignment !

trisoArf je sais j'ai du maltriso
Débutant avec TIGCC sur TI92+

11

J'ai bien çà qui marche :

for(i=0;i<8;i++){
sprite[i] = sprite2[i] ;
}

mais j'imagine qu'il y a mieux ..
Débutant avec TIGCC sur TI92+

12

peut-être un

memcpy(sprite, sprite2, 8*sizeof(char));

(ou sans le *sizeof(char), c'est pareil)
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

13

Pim89>
mais c'est bien sur !! top
en fait le C reviens doucement car çà fait longtemps que je n'en ai pas fait ( 4 ans sans y toucher )
Débutant avec TIGCC sur TI92+

14

utiliser plusieurs fichiers permet de mieux regrouper ses fonctions selon leur usage...
et éventuellement, de méler plusieurs languages smile
(fort pratique par exemple qd on veut avoiir des fonctions graph en ASM, et le reste du code en C... parce que l'ASM GNUilline, c pratique... mais c moche)
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

15

C'est bon à savoir ( bah oui je pars de rien moué ) grinwinkgrinwink
Pour l'instant je vais rester avec un seul fichier mais je prend note héhé magic
Débutant avec TIGCC sur TI92+

16

syb_yd a écrit :
Petite question :
Quelles sont les différences entre un programme seul et un prog avec un ASM ?
(moyens de le faire, avantages) car les essais que je fais sont toujours en 1 seul fichier alors que j'ai pas mal de progs avec au moins 2 fichiers. roll

Ce sont souvent des programmes compressés avec ExePack (reconnaissables par le programme principal qui porte une extension ppg).

Project / Options... / Compress file
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é

17

Kevin >> c'est exactement de çà que je parlais !! où puis-je avoir des infos là-dessus ?oui
Débutant avec TIGCC sur TI92+

18

Il n'y a pas besoin d'informations là-dessus. C'est juste une option à sélectionner dans les options du projet!
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é

19

Oki oki magic Je vais aller trifouiller dans les options. rotfl
Débutant avec TIGCC sur TI92+