Je recherche une routine garphique extrement rapide (c'est pour ca que je pense a PpHd et Timad)!
Le format des srite est le suivant!
Unsigned int *sprite[3][n]
ou n est la largeur du sprite!
le premier bloc de donn"es est le gris clair!
le deuxieme le gris foncé (pour le moment la même chose que tigcc)
le troisieme le mask!
Cette routine est tres importante pour l'aboutissment de kirby (je l'utiliserai pour ecrire dans le vscreen, la routine que j'ai faite doit etre trop lente car lorque l'ecran est charger de monstre ca ralenti par rapport a s'il ya a personne!)
Merci d'avance
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
TiMad Le 30/07/2002 à 22:53 c'est exactement le meme format que XLib..
Le probleme c'est que je ne connais pas Genlib, et que je ne peut donc pas l'adapter.
Sauf si tu me donnes des infos...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
Je veux juste une fonction du type
put_16(int x,int y ,int height,unsigned int *spr,void *buffer)
ou buffer peut etre 0x4C00 ar exemple.
Apres je ferais les ajouts pout le vscreen!
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
TiMad Le 31/07/2002 à 12:39 A hauteur variable, ca ne sera jamais assez rapide...
fait plutot une routine qui transforme ton sprite en un sprite 16x16 puis utilise une routine de gen.
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
il faut m'aider!
j'ai des probleme aux niveau des synchro!
S' ya plein de monstre il ralenti!
pourtant je fais
plein de code
while(gl_timer<3)
gl_put_plane(P1)
gl_timer=0;
normalement tout ce l'affichage devrait etre calé sur 3/90s quelque soit le code je comprend pas!!!
PpHd il faut que tu m'aide please!
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
TiMad Le 01/08/2002 à 18:49 Si ca ralentit, cela est du a 2 possibilitées:
1. Tu n'initialises pas ton pointeur au debut de ta boucle. Il faut faire comme cela (NB: c'est du code X, mais tu dois connaitre l'equivalent Gen):
XTimer=0;
// Affichage du niveau
// gestion des sprites ...
While (XTimer<20); // Tout depend de la frequence du timer de Genlib.
2. Tu as fais exactement comme ce que j'ai marqué si dessus, mais il y a une variation de vitesse.
C'est tout simplement du au fait que ta boucle prend plus de temps à l'execution que la frequence (ou FPS) que tu souhaites imposer au jeu.
Par exemple dans l'exemple precedent, si l'affichage prend trop de temps, XTimer peut etre superieur a 20 etc.
La solution, c'est de baisser volontairement ton fps, ou alors d'optimiser ton algorithme, et ta gestion de colision etc. (car si c'est lent, ce n'est pas du à Genlib.)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
j'avais remarqué!
j'ai optimiser la routine d'affichage des sprites et ca va un peu mieux c'est pas envore genial!
je vais voir avec d'autre truc!
Le probleme c'est que je sais pas inserer beaucoup de code d'asm dans du code C
ou alors je reprog tout en asm mais la ca va prendre du temps!!!
Je sais il faut que j'optimise!
Merci pour la reponse c'est ce que je pensais!
Mais en ca ralenti quand je sature l'ecran de perso!
et la c'est pas souvent dans le jeu que ca se produit!
Enfin je vais voir!
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
TiMad Le 02/08/2002 à 14:07 Pour insérer du code asm dans un projet en C, il y a plusieurs facons:
soit tu fait:
void Off(void)
asm("
Off:
Trap #4
rts")
Soit tu crée un fichier asm GNU:
.data
.xdef Off,IntOff,InOn
.even
Off:
Trap #4
rts
IntOff:
moveq #0,%d0
Trap #1
rts
IntOn:
move.w #700,%d0
Trap 1
rts
par exemple.
Faut savoir que quand tu progs des fonctions asm pour un usage en C, tu as le droit de detruire: %d0,%d1,%d2 et %a0.
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
médor Le 02/08/2002 à 14:09 et les fonctions qui manipulent un argument en entrée et en sortie ? c plus dur ou pas ?
Les cartes !!!!
Je dois les retrouver ! :D:D:D
TiMad Le 02/08/2002 à 14:36 exacte.
Pour les sorties, c'est simple:
Si c'est une adresse: c'est dans %a0
Si c'est une valeur: %d0
pour les entrées:
ex:
void XGNSprite16x16(register short x asm("d0"),register short y asm("d1"),register void *XBWSprrite asm("a1"));
et après tu le gères directement en asm (c'ad que x est deja dans d0 etc...)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!