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...
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+
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.

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...
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...
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+
Pim89 Le 03/08/2002 à 12:01 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 ! ^^
Il n'y a pas besoin d'informations là-dessus. C'est juste une option à sélectionner dans les options du projet!