1

Bonjour tout le monde,

J'ai quelques questions concernant l'affichage et la gestion de sprites/tiles via ExtGraph.
1) Comment gérer et afficher des sprites qui ont une taille de 8x16 (8 pixels en largeur et 16 pixels en hauteur?
2) Même question pour les sprites qui font 48x48 (48=3x16)
3) Est-il possible de faire des flippings de sprites de toute taille en niveaux de gris et noir & blanc ? Je ne vois que du flipping pour des sprites de 8x8.

Quelques exemples?

Suggestion pour ExtGraph:
1) Gérer le flipping horizontal et vertical pour les sprites en noir & blanc et niveaux de gris autre que du 8x8 (pour toute taille de sprite)
2) Ajout d'animation de palettes
3) Gestion des collisions entre sprites de toute taille au pixel près en fonction d'une couleur de référence.

Voilà.

D'avance merci pour l'aide à mes interrogations.

Fred.
There is no spoon.

2

boulifb
: 1) Comment gérer et afficher des sprites qui ont une taille de 8x16 (8 pixels en largeur et 16 pixels en hauteur?
Utilise les fonctions de la famille Sprite8.
2) Même question pour les sprites qui font 48x48 (48=3x16)
Utilise les fonctions de la famille SpriteX8 ou SpriteX16 si celles-ci sont disponibles (je ne sais plus trop où ça en est précisément).
3) Est-il possible de faire des flippings de sprites de toute taille en niveaux de gris et noir & blanc ? Je ne vois que du flipping pour des sprites de 8x8.
Non, ces fonctions travaillent avec des sprites de n'importe quelle taille. Relis bien la doc.
Quelques exemples?
Tu en as plein avec la distribution d'extgraph (une vingtaine il me semble).
2) Ajout d'animation de palettes
C'est-à-dire ? Comme genlib ?
3) Gestion des collisions entre sprites de toute taille au pixel près en fonction d'une couleur de référence.
C'est-à-dire ? Tu es sûr que les fonctions de collision déjà fournies ne te permettent pas de réaliser ce que tu veux ?

En tout cas merci pour tes remarques 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. »

3

1) je me doutais d'une technique de ce genre, les bigs bosses ont une taille de 48x48 (donc 3x16 par 3x16)
2) idem que 1)
3) j'ai parcouru la doc, mais je ne vois rien concernant les sprites autre que 8x8, mais j'ai peut-être une mauvaise vue wink

Exemples pour le flipping???

2) Palettes: possibilité de jouer avec les niveaux de gris sans êtres obligé d'avoir x sprites. Par exemple pour faire flasher un joueur ou changer la couleur d'un ennemie...
3) Collision: lorsque 2 sprites se rencontrent et qu'ils se touchent il y a collision. Par exemple, le joueur touche un ennemie et le joueur perd une vie... wink


Fred.
There is no spoon.

4

Les routines de collisions de sprites.
;C prototype: short CollideSprite8 (short x0,short y0,short x1,short y1,short h,void *sprite0,void *sprite1)
;
;short CollideSprite8 (register short x0 asm ("%d0"),
;		       register short y0 asm ("%d1"),
;		       register short x1 asm ("%d2"),
;		       register short y1 asm ("%d3"),
;		       register short h asm ("%d4"),
;		       register void *sprite0 asm ("%a0"),
;		       register void *sprite1 asm ("%a1"));

	xdef CollideSprite8

CollideSprite8:
	;if (x0>x1)
	cmp.w	d2,d0
	bls.s	_x1_superior
	exg.w	d0,d2
	exg.w	d1,d3
	exg.l	a0,a1
_x1_superior:
	sub.w	d0,d2
	;dx->d2

	cmpi.w	#16,d2
	bge.s	_no_collide
	cmp.w	d3,d1
	bge.s	_y0_superior
	sub.w	d1,d3
	move.w	d3,d1
	add.w	d3,a0
	bra.s	_continue1

_y0_superior:	
	sub.w	d3,d1
	move.w	d1,d3
	add.w	d3,a1
_continue1:
	cmp.w	d4,d1
	bge.s	_no_collide

	addq.w	#1,d1
	move.b	(a0)+,d0
	move.b	(a1)+,d3
	lsr.b	d2,d3
	and.b	d3,d0
	tst.b	d0
	beq.s	_continue1
	moveq.l	#1,d0
	rts
		
_no_collide:
	moveq.l	#0,d0
	rts


;C prototype: short CollideSprite16 (short x0,short y0,short x1,short y1,short h,void *sprite0,void *sprite1)
;
;short CollideSprite16 (register short x0 asm ("%d0"),
;		       register short y0 asm ("%d1"),
;		       register short x1 asm ("%d2"),
;		       register short y1 asm ("%d3"),
;		       register short h asm ("%d4"),
;		       register void *sprite0 asm ("%a0"),
;		       register void *sprite1 asm ("%a1"));

	xdef CollideSprite16

CollideSprite16:
	;if (x0>x1)
	cmp.w	d2,d0
	bls.s	_x1_superior
	exg.w	d0,d2
	exg.w	d1,d3
	exg.l	a0,a1
_x1_superior:
	sub.w	d0,d2
	;dx->d2

	cmpi.w	#16,d2
	bge.s	_no_collide
	cmp.w	d3,d1
	bge.s	_y0_superior
	sub.w	d1,d3
	move.w	d3,d1
	add.w	d3,d3
	add.w	d3,a0
	bra.s	_continue1

_y0_superior:	
	sub.w	d3,d1
	move.w	d1,d3
	add.w	d3,d3
	add.w	d3,a1
_continue1:
	cmp.w	d4,d1
	bge.s	_no_collide

	addq.w	#1,d1
	move.w	(a0)+,d0
	move.w	(a1)+,d3
	lsr.w	d2,d3
	and.w	d3,d0
	tst.w	d0
	beq.s	_continue1
	moveq.l	#1,d0
	rts
		
_no_collide:
	moveq.l	#0,d0
	rts


;C prototype: short CollideSprite32 (short x0,short y0,short x1,short y1,short h,void *sprite0,void *sprite1)
;
;short CollideSprite32 (register short x0 asm ("%d0"),
;		       register short y0 asm ("%d1"),
;		       register short x1 asm ("%d2"),
;		       register short y1 asm ("%d3"),
;		       register short h asm ("%d4"),
;		       register void *sprite0 asm ("%a0"),
;		       register void *sprite1 asm ("%a1"));

	xdef CollideSprite32

CollideSprite32:
	;if (x0>x1)
	cmp.w	d2,d0
	bls.s	_x1_superior
	exg.w	d0,d2
	exg.w	d1,d3
	exg.l	a0,a1
_x1_superior:
	sub.w	d0,d2
	;dx->d2

	cmpi.w	#32,d2
	bge.s	_no_collide
	cmp.w	d3,d1
	bge.s	_y0_superior
	sub.w	d1,d3
	move.w	d3,d1
	lsl.w	#2,d3
	add.w	d3,a0
	bra.s	_continue1

_y0_superior:	
	sub.w	d3,d1
	move.w	d1,d3
	lsl.w	#2,d3
	add.w	d3,a1
_continue1:
	cmp.w	d4,d1
	bge.s	_no_collide

	addq.w	#1,d1
	move.l	(a0)+,d0
	move.l	(a1)+,d3
	lsr.l	d2,d3
	and.l	d3,d0
	beq.s	_continue1
	moveq.l	#1,d0
	rts
		
_no_collide:
	moveq.l	#0,d0
	rts


Elles sont ce quelles sont, elles datent d'Arkanoid. Si Lionel Debroux ne veut pas les mettres dans Extgraph alors tant pis.
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.

5

Ah oui ça marche avec les masques des sprites en n&b.
Des fonctions de copie du masque existents.
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.

6

boulifb :
1) je me doutais d'une technique de ce genre, les bigs bosses ont une taille de 48x48 (donc 3x16 par 3x16) 2) idem que 1)
Je ne suis pas sûr que tu aies bien compris comment fonctionnent les fonctions de la famile SpriteX8

3) j'ai parcouru la doc, mais je ne vois rien concernant les sprites autre que 8x8, mais j'ai peut-être une mauvaise vue wink[/cite]Sûrement : http://opensvn.csie.org/ExtGraph/trunk/DOCS/ExtGraph/sprite_mirror_rotate.html
Exemples pour le flipping???
Qu'est-ce qui te pose problème pour comprendre le fonctionnement des ces fonctions seulement avec la doc ?
2) Palettes: possibilité de jouer avec les niveaux de gris sans êtres obligé d'avoir x sprites. Par exemple pour faire flasher un joueur ou changer la couleur d'un ennemie...
OK, je trouve que c'est une idée intéressante, mais ça risque d'être difficilement intégrable à l'API actuelle. A moins de simplement fournir des fonctions générant un nouveau sprite en fonction du sprite original et de la palette choisie, puis d'ensuite afficher ce sprite avec une fonction classique d'affichage. Mais ce serait moins efficace que de l'afficher en générant le sprite à la volée...
3) Collision: lorsque 2 sprites se rencontrent et qu'ils se touchent il y a collision. Par exemple, le joueur touche un ennemie et le joueur perd une vie... smile
Qu'est-ce qui ne va pas avec ces fonctions : http://opensvn.csie.org/ExtGraph/trunk/DOCS/ExtGraph/collision.html ?
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

tiens, pkoi ça m'ouvre la source des pages HTML au lieu de me montrer le contenu des pages ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

Ah peut-être parce que l'entete MIME générée par le serveur n'est pas appropriée.
J'ai simplement testé avec IE 5.
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. »

9

avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

10

Euh, oui en fait j'ai IE 6 d'ailleurs, pas 5.
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. »

11

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Je pense que c'est dans l'entête de la trame http que le content-type est à Text/Plain.
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

non, les pages de yaronet:
<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />

et la page en question:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML lang="en">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">


c'est donc ca qui manque
<?xml version="1.0" encoding="windows-1252"?>
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

14

Que veux-tu dire ?
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. »

15

Je veux dire que les pages de yaronet ont leur content type à plain text aussi.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

16

sasume: Merci pour tout smile je vais expérimenter ça.
geo²: concernant les routines que tu as mises, je mets ça dans des fichiers asm sous TIGCC et après comment je les utilise? Je ne connais pas plus que ça TIGCC wink

Pour l'histoire, en utilisant TIGCC, ce dernier a détruit le source de mon projet. Du coup, je dois tout recommencer. Alors, j'en profite pour tout refaire au propre et tout remettre à plat. J'ai également recodé toutes les tables de sprites 16x16 (y en a un paquet: 230) et 32x32.
Je suis en train de vérifier si tout est encodé proprement en faisant un programme qui balaye les tables de sprites. c'est long et ça tue les yeux sad

fred.
There is no spoon.

17

boulifb :
Pour l'histoire, en utilisant TIGCC, ce dernier a détruit le source de mon projet


Honnêtement c'est la première fois que j'entend parler de ça et ça me surprend énormément... As-tu fait un bug report comme je te l'avais déjà suggéré, si tu es certain que ça vienne de TIGCC ? Car si c'est réellement le cas ça vaut le coup de s'y intéresser.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.