MSX Village forum

La Place des Développeurs collision de sprites

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 08h32
lors d une collision de sprites, y a t il moyen de connaitre les numeros des sprites qui rentrent en collision ? cette info est elle quelque part dans un registre ou ailleurs ? :hum


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 26/08/2012 à 09h36
Non, il y a juste l'information de la collision sur le bit 5 de S#0 et les coordonnées du conflit dans S#3, S#4, S#5 et S#6.

Code :
Figure 4.70    Readout of the conflict coordinate

    MSB   7    6    5     4    3    2    1    0      LSB
    ----------------------------------------- --+
S#3    | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 |   |
    -----------------------------------------   | X-coordinate where the
                            | conflict occurred
    -----------------------------------------   |
S#4    | 1  | 1  | 1  | 1  | 1  | 1  | 1  | X8 |   |
    ----------------------------------------- --+

    ----------------------------------------- --+
S#5    | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |   |
    -----------------------------------------   | Y-coordinate where the
                            | conflict occurred
    -----------------------------------------   |
S#6    | 1  | 1  | 1  | 1  | 1  | 1  | Y9 | Y8 |   |
    ----------------------------------------- --+


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 09h46
:sick Quel monde cruel !!


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 26/08/2012 à 10h19
en comparant les x et y du conflit a la position des sprites tu peux déterminer ceux en cause ;)


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 10h23
oui je sais, mais c'est pas cool !
Comme j'ai un personnage qui est composé de 4 sprites superposés, je suis toujours dans un état de collision de sprites, et donc une routine de détection avec coordonnées risque fort de me ralentir...


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 26/08/2012 à 10h26
essai de passer a 3 sprites :)


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 26/08/2012 à 10h41
je ne sais pas dans quel mode tu travailles mais en screen 4 a 8 il y a une mode de sprites améliorés

on peux affecter une couleur par ligne du sprite avec une fonction color sprite$

trés bien expliqué dans le livre guide du msx basic version 2.0 de Sony livré avec le HB700


:noel
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 26/08/2012 à 12h38
livre dispo sur le site de MSXLegend ^^ (entre autres) :
http://www.msxlegend.sitew.com/Livres_et_Notices.A.htm#Livres_et_Notices.A
Ce livre etant bien fait serait pratique sur le site :oups en telechargement , il vaut mieux multiplier les sources :heink



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 19h30
j utilise les instruction color sprite.

j ai realisé les sprites avec tiny sprite, en mode msx2 avec la palette par defaut.
Pour mon personnage principale il m a généré 4 sprites, que je dois supperposer pour obtenir les bonnes couleurs. il y a plus de deux couleurs par lignes.


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 26/08/2012 à 19h36
dans ce cas il faut simplifier le perso ou le faire a la main ;)


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/08/2012 à 20h57
Ou les déplacer en bloc avec une routine ASM ;)
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 21h22
les deplacer n est pas le probleme.
mon probleme serait de detecter des collisions avec d autres sprites, mais si faut que je tests les coodonnees c est pas genial.... :moue


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/08/2012 à 21h58
j'y connais pas grand chose, mais il me semble que tu peux déterminer si il y a collision, juste en déterminant une couleur précise.

1) Par exemple, tu détermine que la couleur 16 provoque une collision!

2) Tu colories en COULEUR 16 tout les objets dont tu veux faire un obstacle.

3) Le seul soucis est que t'es obligé de colorier en 16 les obstacles ce qui limite la variété des obstacles.

4) La solution est de colorier le contour de n'importe quel objet avec de la couleur 16 de sorte à transformer l'objet en obstacle.

Me demande pas comment on fait, encore une fois, j'y connais vraiment pas grand chose.



Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 26/08/2012 à 22h23
connais pas cette technique...
quelqu un a plus de details ?


banniere-ericb59e
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 26/08/2012 à 23h08
Tu utilises une couleur comme masque de collision.
Une couleur est dédiée à la définition d'un obstacle qui provoque un évenement.
L'inconvénient, comme le souligne Igal, est que ça uniformise les obstacles (c'est pour cela qu'on défini les contours uniquement avec la couleur «collision».

Les avantages de la technique:
+ tu n'es plus limité en dimension pour l'obstacle, comme le serait un sprite.
+ cela te libère des sprites

Les inconvénients:
- ça consomme des ressources (il faut lire la mémoire video ce qui est couteux en temps d'accès)
- il faut bien souvent tester à plusieurs endroits de tes personnages, à moins que tu ne fasse «les aventures de Mr Pixel et des amis» ce qui va limiter la teille des personnages :)
- si tu ne fais pas bien ton test, ou que tu loupes un cycle, le point de test de ton personnage peut se retrouver à l'intérieur de l'obstacle. Dans ce cas, soit ça bugge complètement (crash car tu vas te retrouver à des endroits pas prévus dans la mémoire video), soit tu te retrouves «prisonnier» à l'intérieur de l'obstacle. À moins d'avoir un thème surréaliste, ce n'est pas souhaitable.

Je suis resté dans des généralités, mais les vrais codeurs MSX pourront compléter avec les particularités de la plateforme.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie