MSX Village forum

La Place des Développeurs "Diddy kong" petit programme basic en screen 8 test: animation du personnage

Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 04/10/2012 à 13h41

Reprise du message précédent

Oui, c'est effectivement ça la solution ...

Quand je disais qu'il n'y a pas de couleur transparente en SCREEN8, je voulais dire qu'il n'est pas possible de mettre un pixel en couleur transparente. Mais par contre, effectivement, lors des copies via les macros du VDP (exploitées en BASIC), il est possible d'utiliser cette option.

Pour rappel, avec TPSET (SC = couleur de la source; DC = couleur de la destination), pour chaque pixel :

- si SC=0, alors DC=DC
- sinon DC=SC



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)
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 04/10/2012 à 14h33
tpset ça me dit quelque chose :heink et non je ne l'ai pas mis :oups
Je sais déja qu'il faut copier la rangé du decor en page 1 (il me reste un petit peu de place) puis je copie le décor page 1 a l'emplacement de mon personnage en page 1, j'integre ensuite mon personnage sur le decor 41x41 copié en page 1 puis je copie l'ensemble en page 0 à l'emplacement du perso :) (je sais c'est pas très clair :fou )
test ce soir...
merci Edité par MSXlegend Le 04/10/2012 à 14h38


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 04/10/2012 à 15h54
Il me semble pas que tu retombe sur tes pattes comme ça :gne
Perso je ferais comme ça

Copie décor en page 1
Copie perso en page 0

Là, tu peux recopier décor en page 1 vers page 0 pour effacer le perso
Modif coordonnées perso

Reboucle au début

mais je suis pas un killer en programmation :oups

Regarde sur le moteur d'osaure tu aura la meilleur solution ;)

MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 04/10/2012 à 16h58
En fait je n'ai que 2 pages. Page 0 (s'efface en sortant du programme) et page 1 qui lui garde l'image chargé.
Le probleme, c'est que je n'ai qu'un page pour travailler. La page 0 etant le resultat final.
Le principe est simple. Il me faut un double de la page 0 (fond d'ecran) sinon celui ci s'effacera au fur et a mesure que mon perso avance....
je doit donc copier une partie de la page 0 (la zone ou mon perso se deplace) dans le peu de place qu'il me reste en page 1.

donc je procede comme suis:

1-je copie une zone de mon fond d'ecran (correspondant a la position de donky) sauvegardé en page 1 dans une zone de libre en vram page 1 (41x41)
2-je fusionne dans la même page le perso (avec la bonne annimation) de 41x41 avec tpset sur mon fond 41x41
3-normalement, j'obtien un carré 41x41 avec mon perso et le fond d'ecran . Je copie donc celui ci a l'emplacement ou il est censé se trouver en page 0

Résultat, on n y voit que du feu, le perso se deplace sans bande noire. L'inconvéniant, c'est que ça ralenti considérablement l'annimation. En effet, il y a 3 copy par boucle: fond banane 41x41+perso41x41= ensemble a copier en page 0

verdic ce soir si je n'ai pas trop mal au crane ;) Edité par MSXlegend Le 04/10/2012 à 17h00


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2703

Le 04/10/2012 à 17h27
MSXlegend :
En fait je n'ai que 2 pages. Page 0 (s'efface en sortant du programme) et page 1 qui lui garde l'image chargé.

Le probleme, c'est que je n'ai qu'un page pour travailler. La page 0 etant le resultat final.

Le principe est simple. Il me faut un double de la page 0 (fond d'ecran) sinon celui ci s'effacera au fur et a mesure que mon perso avance....




J'ai eu le même problème pour CarWar en mode 8 (2 pages). La solution que j'ai choisi c'est d'utiliser la marge en bas des pages pour sauvegarder le décors sous mes voitures. Chaque frame, avant de déplacer mon sprite, je commence par l'effacer avec le bout de décor sauvegardé, puis je sauvegarde le bout de décors à la prochaine position, puis je re-dessine mon sprite a sa nouvelle position.

Si la résolution est en 256x212, tu as une marge de 256x44 sur chaque page pour stocker des données non visible.



EDIT : En relisant ton post, j'ai l'impression que c'est déjà plus ou moins ce que tu fais. ^^ Edité par aoineko Le 04/10/2012 à 17h29


On est toujours ignorant avant de savoir.
Github    
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 04/10/2012 à 18h04
c'est une bonne vielle méthode des années 80-90 ;)
On fait avec les moyens du bord d'une page :D

Edité par MSXlegend Le 04/10/2012 à 18h09


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 04/10/2012 à 18h09
Par contre plus de place pour faire mon perso dans l'autre sens, mais il me semble que je peux inverser mon perso dans l'autre sens du genre :
copy(x+41,y)-(x,y+41),1 to (0,0),0 au lieu de copy(x,y)-(x+41,y+41),1 to (0,0),0
je ne sais pas si cela fonctionne, ça remonte à plus de 20 ans quand même :siffle


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 04/10/2012 à 18h33
pour inverser l'image horizontalement ou verticalement il faut d'abord la copier dans une variable tableau

ensuite il faut recopier cette variable tableau avec un paramétre de 0 a 3 suivant l'orientation

voir page 131 et plus du bouquin Guide du MSX Basic Version 2.0 de Sony


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2703

Le 04/10/2012 à 19h02
MSXlegend :
c'est une bonne vielle méthode des années 80-90 ;)




J'ai commencé a programmer sur PC après 95. ^^

Je redécouvre donc les astuces de l'époque 8 bits.


On est toujours ignorant avant de savoir.
Github    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 777

Le 04/10/2012 à 21h36
les éléments mobiles en screen8 avec COPY TPSET c'est toujours délicat...

J'avais fait ça à une autre époque:

Gods Démo (MSXosaure - 2008) MSX2 par MSXosaure

gods.zip


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 04/10/2012 à 21h54
Jipe :
pour inverser l'image horizontalement ou verticalement il faut d'abord la copier dans une variable tableau



ensuite il faut recopier cette variable tableau avec un paramétre de 0 a 3 suivant l'orientation



voir page 131 et plus du bouquin Guide du MSX Basic Version 2.0 de Sony




Merci Jipé, j'ai vu dans mon guide :)



MSXosaure :
les éléments mobiles en screen8 avec COPY TPSET c'est toujours délicat...



J'avais fait ça à une autre époque:



gods.zip




je me rappel de ta demo en screen 8. en attendant de regarder ça, c'est bien le color 0 que je doit parametrer en transparence? Edité par MSXlegend Le 04/10/2012 à 21h55


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 05/10/2012 à 08h09
MSXlegend :
c'est bien le color 0 que je doit parametrer en transparence?


Oui, c'est la couleur 0 que tu dois utiliser pour permettre la transparence lors de la copie.

Comme je l'ai déjà écrit plus haut :



Metalion :
Pour rappel, avec TPSET (SC = couleur de la source; DC = couleur de la destination), pour chaque pixel :



- si SC=0, alors DC=DC

- sinon DC=SC
Edité par Metalion Le 05/10/2012 à 08h10


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)
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 07/10/2012 à 03h19
Voila j'ai resolu le probleme. J'ai oublié de mettre set page 0,1 (page 1 active)
maintenant il y a donky et les bananes ^^





le menu titre est encore brouillon et mon travail inachevé, le perso n'est pas jouable pour le moment mais ça viendra ;)

Donkey Kong the demo à télécharger Edité par MSXlegend Le 07/10/2012 à 11h32


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 5814

Le 07/10/2012 à 11h38
Jipe :
pour inverser l'image horizontalement ou verticalement il faut d'abord la copier dans une variable tableau



ensuite il faut recopier cette variable tableau avec un paramétre de 0 a 3 suivant l'orientation



voir page 131 et plus du bouquin Guide du MSX Basic Version 2.0 de Sony




J'ai appliqué la méthode indiqué, et ça m'a mis syntaxe Error. Je vais étudier ça et faire des tests avec une simple image.


Createur du KCX Bluetooth emitter au format cartouche compatible stereo moonsound
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10356

Le 07/10/2012 à 11h49
le plus dur c'est la formule de la variable tableau

pour les essais il vaut mieux utiliser celle de la page 132 avec
s=int((((absx1-x2)+1*(abs(y1-y2)+1*taille pixel+7)/8+4)/8)+1 taille pixel étant 8 en screen8
dim p(s)

aprés on peut simplifier pour calculer x1-x2 et y1-y2 en valeur absolue


:noel
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5795

Le 07/10/2012 à 12h50
MSXLegend :

Citation :
J'ai appliqué la méthode indiqué, et ça m'a mis syntaxe Error.




C'est ETONNANT :D:lol







^^ Je rigole , mais j'apprecie la recherche , J'apprend ^^





MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie