600

Oula. Je finis le jeu en mode solo et donc original et après on vois les modes OK!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

601

MacIntoc > Bah oui donc c'est bien ce que je disais, ça manque de [bons] jeux de baston sur Ti (ou au moins de jeux de baston qui marchent tongue)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

602

Pas d'idées au sujet de l'écran?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

603

Vertyos> Teletubbies fighting il fait rien que crasher ma TI.... Mais où est Hervé Bonafos ???? mourn

604

De toute façon il est très lent, donc pas jouable, donc pas d'interet pour un jeu de baston.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

605

J'ai enfin corrigé le problème de la Bille qui était peu visible.

Voilà j'ai constaté qu'avec mon ancienne méthode de redessiner toute la MAP après casser une brique que le jeu perdait énormément de frames quand la bille feu détruisait toutes les briques sans collisions et dans d'autres cas... J'ai donc pensez à redessiner que le bout de décors manquant suivant des calculs sur le sprite, mes routines fonctionnent mais il ce pose 2 problèmes que je pense peut être améliorer or je ne vois pas comment:

Voilà la routine en C qui redessiner le bout de décors à l'endroit où est détruit la brique.
//Dessine bout de background (casse brique)
void DrawMapBackground (unsigned char xblock, unsigned char yblock)
{
	short x=(xblock*BLOCK_SIZEX)+START_X;
	short y=yblock*BLOCK_SIZEY;
	
	//Modulo 2 block*2 octets
	unsigned char xoffset=((xblock&0x01)^1)*2+1;
	
	//(y-Numéro du sprite*32)*16 octets 			Numéro du sprite=(y-Début)/Size y
	unsigned short yoffset=(y-(((y-START_X)/32)*32))*16;
	
	//Dessine Small background
	DrawSmallBackground (x,y,xoffset+yoffset,DecorsBlocks,BufferMap);
}


x et y contiennent la coordonnée de la brique grâce à la matrice...
xoffset contient l'offset d'affichage du sprite de 32x32 du décors suivant x.
yoffset contient l'offset d'affichage du sprite de 32x32 du décors suivant y.

START_X est une constante est vaut 8 ainsi que START_Y.
Dans yoffset j'ai mis 16 pour la raison est que j'utilise un buffer pour le sprite de telle sorte qu'il fasse 64x64 au lieu de 32x32.
DecorsBlocks coorespond au buffer du sprite faisant 64x64 et BufferMap est le buffer d'affichage de la zone de briques.

Le problème est que je ne vois pas comment optimiser les calculs de xoffset et surtout yoffset, je trouve ça plutôt lent!


De plus j'utilise un buffer de 1024 octets pour un sprite de 64x64 au format entrelacé et je trouve ça énorme, y aurait-il un autre moyen en évitant ce buffer?

De plus voici la routine s'occupant d'afficher le bout de sprite désiré.
Elle affiche le sprite en 16x7 soit la taille d'une brique.
BufferMap fait 3696 octets par plan.

Y a t-il divers possibilités d'optimiser cette routine?

;C prototype: void DrawSmallBackground (short x, short y, unsigned short offset, void *sprite, void *dest);
;
;void DrawSmallBackground (register short x asm("%d0"),
;		 	   register short y asm("%d1"),
;			   register unsigned short offset asm("%d2"),
;			   register void *sprite asm("%a0"),
;			   register void *dest asm("%a1"));

;Ici le sprite fait 7 pixels de hauteur	et 16 pixels de largeur 


	xdef DrawSmallBackground

DrawSmallBackground:
	move.l	d3,-(a7)
    	add.w	d1,d1
    	add.w	d1,d1			;y*2
	move.w	d1,d3
	lsl.w	#3,d3			;y*32
	sub.w	d1,d3			;32-2=y*30

    	lsr.w    #3,d0	; d3 = x/16

    	add.w    d0,d3	; d1 = 18*y + x/16
    	adda.w   d3,a1	; a0 += offset
    	
    	;Offset sprite
    	add.w 	 d2,a0
    	
;DrawSprite LIGHTPLANE
	moveq.l	 #6,d3
DrawSprite_0:
 	move.b	 (a0),(a1)
 	move.b	 1(a0),1(a1)
 	
 	lea.l	 28(a1),a1
 	lea.l	 16(a0),a0 		   	
    	dbra.s	 d3,DrawSprite_0

;DrawSprite DARKPLANE    	
    	lea.l	 3696-28*7(a1),a1
    	lea.l	 -16*7+8(a0),a0
    	
	moveq.l	 #6,d3
DrawSprite_1:
	move.b	 (a0),(a1)
	move.b	 1(a0),1(a1)
	
	lea.l	 28(a1),a1
	lea.l	 16(a0),a0
	dbra.s	 d3,DrawSprite_1
   
    	move.l	 (a7)+,d3
	rts


Ses routines sont assez crutial pour le jeu et donc doivent être hyper optimiser or je ne vois pas comment optimiser plus. En effet le jeu aura la possibilité d'avoir énormément d'interaction et principalement ce genre de routines qui risque d'être appellé très souvent...

Merci de vos réponses. smile

(Désolé pour ce post avec beaucoups de codes ce que Vertyos n'aime pas, mais je ne vois pas la meilleur façon de présenter ceci sans que vous croyez que je n'ai pas chercher et essayer de trouver un algorithme).
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

606

C'est pénible, quand tu écris tu confonds des mots avec d'autres, qui se prononcent plus ou moins de la même façon...

Pour ton calcul du yoffset, tu peux remplacer le ((y-START_X)/32)*32 par (y-START_X) & (~0x1F).

Pour ta fonction en ASM, la plupart de tes commentaires sont faux. Relis ton code.
Le format que tu utilises pour ton sprite me paraît curieux.
Cherche des infos sur l'adressage indirect post-incrémenté.
Et sache qu'écrire deux octets à la suite revient à écrire un word (si l'adresse est paire).
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. »

607

C'est pénible, quand tu écris tu confonds des mots avec d'autres, qui se prononcent plus ou moins de la même façon...


Désolé, j'avais pas trop le temps d'écrire ce post.
Pour ton calcul du yoffset, tu peux remplacer le ((y-START_X)/32)*32 par (y-START_X) & (~0x1F).


Ok merci. smile
Pour ta fonction en ASM, la plupart de tes commentaires sont faux. Relis ton code.
Le format que tu utilises pour ton sprite me paraît curieux.
Cherche des infos sur l'adressage indirect post-incrémenté. Et sache qu'écrire deux octets à la suite revient à écrire un word (si l'adresse est paire).


En effet a force de corriger la routine j'ai oublié de modifier les commentaires.

Le format de mon sprite est assez bizarre en effet, c'est un format entrelacé:

1 ligne fait 64 bits, soit line0_lightplane,line0_darkplane,line1_lightplane,line1_darkplane...

Je pense diminuer ce sprite de 64x64 en 38x48 pixels.

Quand à l'écriture directement de 16 bits je ne peux pas ici car toutes les adresses sont impaire et ce pour favoriser une autre fonction d'affichage du décors qui doit être affiché avec des adresses paires.

Merci pour tout je vais voir ce que je peux modifier. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

608

Quel intérêt d'utiliser un format entrelacé si tu n'affiches pas succéseivement une ligne de chaque plan ?
Et puis ça te permettra d'accélérer ta routine en utilisant addq au lieu de lea (quoique, il paraît qu'ils prennent autant de temps chacun).
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. »

609

Un format entrelacé est bien facile à utiliser pour les offsets et surtout pour l'affichage standard de mon fond.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

610

(quoique, il paraît qu'ils prennent autan de temps chacun).

Oui, mais :
[mode kevin=ON]
Ce N'est PAS la vitesse qui compte! addq est plus petit donc il faut l'utiliser!
[/mode]

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

611

LOL en tout cas le moteur semble être plus stable maintenant avec ma nouvelle méthode un peu barbare quand même. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

612

J'ai recodé une partie du moteur de gestion des briques, le jeu tourne a une vitesse stable de 90 fps même dans le cas où il y a énormément de collisions, il semble par contre que l'ajout d'une brique en mouvement retire 2 fps au jeu.

J'ai donc réalisé une fonction capable de redessiner une partie du décors lorsqu'une brique est cassé et de reconstituer les pmbres suivant les briques alentours.

//Dessine bout de background (casse brique)
void DrawMapBackground (unsigned char xblock, unsigned char yblock)
{
	short x=(xblock*BLOCK_SIZEX)+START_X;
	short y=yblock*BLOCK_SIZEY;
		
	//Modulo 2 block*2 octets
	unsigned char xoffset=((xblock&0x01)^1)*2+1;
	
	//(y-Numéro du sprite*32)*16 octets 			Numéro du sprite=(y-Début)/Size y
	unsigned short yoffset=(y-((y-START_Y) & 0xE0))*16;
	
	//Dessine Small background (Détruit brique)
	DrawSmallBackground (x,y,xoffset+yoffset,DecorsBlocks,BufferMap);
	
	//Détruire ombre bas
	y+=BLOCK_SIZEY;
	yoffset=(y-((y-START_Y) & 0xE0))*16;
	
	DrawSmallBackground (x,y,xoffset+yoffset,DecorsBlocks,BufferMap);
	
	//Détruire ombre bas droite
	if ((xblock+1)!=13)
	{
		xoffset=(((xblock+1)&0x01)^1)*2+1;
		DrawSmallBackground (x+16,y,xoffset+yoffset,DecorsBlocks,BufferMap);
	}
	
	//Redessine briques
	if (((yblock+1)!=18) && (LevelMap [yblock+1][xblock]&0x0F))
		DrawBlockNoShadow (x,y,SPRITE_BLOCKS [LevelMap [yblock+1][xblock]&0x0F],BufferMap);
		
	if (((xblock+1)!=13) && ((yblock+1)!=18) && (LevelMap [yblock+1][xblock+1]&0x0F))
		DrawBlockNoShadow (x+BLOCK_SIZEX,y,SPRITE_BLOCKS [LevelMap [yblock+1][xblock+1]&0x0F],BufferMap);
		
	//Ombres
	y-=BLOCK_SIZEY;
	if (((yblock-1)>=0) && (LevelMap [yblock-1][xblock]&0x0F))
		DrawSmallShadowBlock (x+8,y,BufferMap);
		
	if (((xblock-1)>=0) && ((yblock-1)>=0) && (LevelMap [yblock-1][xblock-1]&0x0F))
		DrawSmallShadowBlock (x,y,BufferMap);
	
	if (((xblock-1)>=0) && (LevelMap [yblock][xblock-1]&0x0F) && ((!LevelMap [yblock+1][xblock]&0x0F) || (((yblock+1)==18))))
		DrawSmallShadowBlock (x,y+7,BufferMap);
		
	if (((xblock+1)!=13) && (LevelMap [yblock][xblock+1]&0x0F) && ((!LevelMap [yblock+1][xblock+1]&0x0F) || (((yblock+1)==18))))
		DrawSmallShadowBlock (x+BLOCK_SIZEX+8,y+BLOCK_SIZEY,BufferMap);
		
	//Dessine ombre gauche
	if (!xblock)
	{
		DrawSmallShadowBlock (x,y,BufferMap);
		
		if (((yblock+1)==18) || (!LevelMap [yblock+1][xblock]&0x0F))
			DrawSmallShadowBlock (x,y+BLOCK_SIZEY,BufferMap);
	}
}


DrawSmallBackground dessine une partie du décors soit 16x7 pixels.
DrawBlockNoShadow dessine une brique sans ombres.
DrawSmallShadowBlock, dessine seulement une ombre de 8x7 pixels.

Ma matrice fait 13x18 briques.
Quand au buffer BufferMap qui contient les briques dessiné, il commence à y=0 et x=8 pour la première brique.

Si vous voyez de grandes optimisations n'hésitez pas. smile


De plus il me faudrais des personnes pour réaliser des MAPs de leur propre crus ou celle du jeu existant ou encore proposer des fonds de décors de 32x32 pixels ainsi que des scénarios comme par exemple une bille intrus dans le jeu qui peut détruire la raquette, un monstre spécial, un niveau qui bouge... faites des propositions.

Voici la première version de l'éditeur qui bug un peu mais ça va s'améliorer.
Je remercie fred d'Orage Studio. wink

Editeur de niveaux pour Arkanoid Revenge of DOH

De nouvelles mises à jours de PolySnd et la publications d'autres porgrammes vont apparaître durant les vacances, si vous voulez en parler allez sur le forum de mon site http://perso.wanadoo.fr/tisofts
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

613

C'est cool. neutral
avatar
;)

614

lol en fait je cherche à optimiser cette focntion.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

615

Ah oui, comme ce projet succite peu d'enthousiasme, je ne diffuserais plus rien et il n'y aura plus d'avancement de mes projets...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

616

Bonne idée smile
Fignole le et à sa sortie on aura plein de surprises top
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. »

617

ba pour qu'il suscite de l'enthousiasme faudrait déjà qu'il soit fini ton truc grin
Tekken Punch !!!

Tome 9 de Love Hina dispo le 20 Mai !!!

618

lol en fait tu as raison. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

619

Allé un petit screen du jeu avec un niveau pas très beau et avec le minimum de sprites. smile
screen_7.jpg
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

620

voila la fameuse ombre!

C vrai que ca fait terrible comme effetcool

621

Ca consomme assez de ressources mais bon ça donne du style au jeu.
En tout cas il sera possible de les désactiver. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

622

J'attends la semaine prochaine pour pouvoir profiter à fond de ma calto trivil

623

OK!!!

Je viens de réaliser la gestion de bonus et leur affichage malgré un problème d'équiprobabilité.

Je pose juste une petite question pour ce qui on réalisé des shoot'em up... comment vous gérez les missiles? Vous utilisez des structures ou tout simplement des listes? Et une dernière chose, pour retirer un élément d'une liste, il est plus interessant d'utiliser memmove ou de réaliser le déplacement d'éléments un par un?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

624

memmove est à bannir si tu veux un jeu rapide.
Réaliser le déplacement d'éléments un par un est très probablement pire.
Trouve une autre structure de données.
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. »

625

Et que pense tu d'une méthode avec flags?

J'ai une liste de 50 items, je veux supprimer l'item 24 je met son flag à 0 et pour ajouter un élément je parcours cette liste dès que je trouve un flag à 0 j'ajoute...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

626

C'est mieux sûrement.
Mais tu peux faire encore mieux. 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. »

627

En tout cas cette opération de suppression d'items ce fait de temps en temps sur des listes à 10 items maximum. Mais je vais adopter la dernière idée pour les missiles. smile

Pour les missiles je pense faire ça:
short MISSILE_xpos [20];
short MISSILE_ypos [20];
unsigned char nbrMissile;

Ca a pas trop l'air optimal mais bon je vois pas plus simple que ça!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

628

bravo pr le jeu !!! c vraiment hyper-stylé !!!! vivement qu'il sorte !!! top
avatar

629

Merci. smile
Mais le screen ne montre pas grand chose, il y a énormément d'animations et surtout les monstres et les boss qui vont venir.

Quand j'aurais fini la gestion de tous les bonus et de fin de niveau je sortirais une version.
De plus le jeu tourne à 75 fps constant grâce à 23 fonctions graphiques en ASM mais j'avoue qu'avec 10 billes et 5 rackets le jeu commence à ramer.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

630

D'autant plus que le niveau c'est pas un des plus simples grin