MSX Village forum

La Place des Développeurs Final Smash Cette fois c'est le bon !?

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 11/02/2021 à 00h48
Un premier test d'affichage pour un jeu de tennis sur MSX1... :siffle

fs_0_1.rom

Je dessine à chaque frame les 2 personnages en 4 couleurs directement dans la table des patterns (comme ça je ne suis pas limité par les 256 patterns).
Dans le pire cas, j'ai 4 sprites par ligne par joueur. Quand la balle (5e sprite) arrivera au niveau du joueur, la peau disparaitra pour laisser la place au background... qui est couleur peau (ou couleur terre-battue). :)

Pour l'instant, le dessin des 2 personnages prends quasiment une demi-frame, mais c'est parce que les morceaux de sprite ne sont pas contiguës. Avec un bloc de mémoire contiguë, on tombe à moins d'1/4 de frame. Et y a surement moyenne d'optimiser encore. D'ailleurs, pour qu'on puisse voir les animations, j'incrémente la frame d'anim que toutes les 8 frames du VDP ; donc y a aucune raison de dessiner les sprites à chaque frame (je pourrais dessiner 1 personnage par frame par ex.).

Le terrain sera fix (sans scrolling).

Voilà, là, ça me semble un projet beaucoup plus faisable. ^^
(même si l'IA aura aussi un cout non négligeable)

Et puis comme c'est sur MSX1, ça pourrait être un candidat pour le MSXdev'21 (avec une deadline, ça m'aidera p'être à le finir).


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 11/02/2021 à 08h25
Ils sont très aboutis tes sprites.

Tu les a créé comment stp?

Juste par curiosité, j'ai valorisé le registre (23) de 64 unités de sorte à visualiser la zone des sprites mais il se passe rien dans cette zone! Edité par igal Le 11/02/2021 à 08h36


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 11/02/2021 à 09h15
Je te ferai une réponse plus détaillée ce soir, mais dans les grandes lignes :
- J'ai rippé à la main les sprites du jeu Tennis de la Game boy (le premier bon jeu de tennis auquel j'ai joué ^^)
- J'ai colorisé les sprites en 4 couleurs (+ 1 calque avec des ombres)
- J'ai split chaque couleur sur une ligne puis j'ai exporté chaque ligne de couleur de sprite avec mon outil (CMSXimg)
- Dans mon programme, à chaque frame (pour le moment), je copie les sprites de ma frame d'anim courante vers des adresses fixes dans la table des patterns de sprites
- Pour la partie noire, j'alterne d'une frame à l'autre entre mes deux parties "noires" (celles avec et sans l'ombrage supplémentaire), ce qui donne l'impression que les couleurs de bases sont doublés (une couleur vive et une couleur sombre quand l'ombrage passe par dessus). Malheureusement, c'est ça qui génère le scintillement (faudra que je vois si y a moyen de réduire cet effet)
- Mes sprites (16x16) pointent donc toujours vers les mêmes patterns et j'aurai donc juste besoin de modifier leur coordonnée X/Y

J'sais pas si c'est clair ? ^^
J'ai fait quelques schemas pour moi ; je vous les partagerai.


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 11/02/2021 à 09h59
igal :
Juste par curiosité, j'ai valorisé le registre (23) de 64 unités de sorte à visualiser la zone des sprites mais il se passe rien dans cette zone!

Normal, la zone des sprites n'est pas forcément toujours à cet endroit.
L'utilisateur la place où bon lui semble dans la VRAM, en fonction de ses besoins.


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 11/02/2021 à 10h12
Voici les addresses que j'utilise pour le moment :
Code TEXT :
    // Address of Name Table in VRAM = 1400h
    // Address of Color Table in VRAM = 2000h
    // Address of Patern Table in VRAM = 0800h
    // Address of Sprite Attribute Table in VRAM = 1000h
    // Address of Sprite Pattern Table in VRAM = 0000h

Je suis en Screen 1 pour le moment ; j'ai pas encore tranché sur le fait d'utiliser le Screen 1 ou 2 (j'imagine que si j'ai pas de scrolling, autant rester sur le Screen 1).


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 11/02/2021 à 10h22
aoineko :
Je suis en Screen 1 pour le moment ; j'ai pas encore tranché sur le fait d'utiliser le Screen 1 ou 2 (j'imagine que si j'ai pas de scrolling, autant rester sur le Screen 1).

C'est surtout une question d'utilisation des couleurs.
En SCREEN1, tu peux uniquement avoir 2 couleurs par pattern 8x8, et elles sont figées par lots de 8 patterns.


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 11/02/2021 à 10h26
Metalion :
C'est surtout une question d'utilisation des couleurs.


Ah, oui.
Pour le terrain et le filet, les limites du SC1 ne sont pas un problème mais si je veux faire des gradins et mettre un Pentaru sur une chaise d'arbitre, le SC2 serait surement mieux.


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 12/02/2021 à 19h26
Ca y est, j'ai le terrain !

Voici la nouvelle version : fs_0_2.rom

J'ai ajouté un exporter de Screen 2 à mon outil de conversion d'image (CMSXimg) qui génère toutes les tables nécessaires pour ce mode.
C'était beaucoup plus simple que je pensais. :)

On peut bouger le personnage bleu avec les flèches du clavier (les anims ne suivent pas pour le moment).

Ca avance...



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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 12/02/2021 à 20h32
Un bug !
Les personnages n’ont pas de raquettes ! :siffle


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 13/02/2021 à 00h57
Nouvelle version avec les anims de déplacements et de shoot du joueur du bas : fs_0_3.rom.

Et non, Eric, y a pas encore les raquettes. :p

D'ailleurs, avec la raquette et la balle, je vais commencer à outrepasser la limite des 4 sprites par ligne.
Heureusement, j'ai prévu mon coup pour que la peau (qui à la même couleur que le terrain) disparaisse en premier.
Dans le pire des cas, la couleur blanche (peu utilisé) disparaitra aussi.
Heureusement, ça arrivera pas tout le temps et ça devrait être assez rapide.
De toute façon, avec les limites du MSX1, c'est difficile de faire mieux.

EDIT : J'ai un bug quand j'appuis sur les touches [Haut]+[Gauche], ou [Bas]+[Droit], je détecte plus la touche [Espace]. C'est un problème connu ou j'ai un bug qq part ?


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 13/02/2021 à 07h15
tu as un bug quelque part :siffle


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 13/02/2021 à 20h26
Je me suis essayé au Pixel Art aujourd'hui. :)
Ca vous semble assez différent de l'original (en vert) pour ne pas être du plagiat ?



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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 14/02/2021 à 07h49
La réponse donnée sur msx.org me semble correcte : "inspiré mais pas rippé"
:D

Ceci dit, comment vas-tu faire ça sur MSX1 ?

- impossible en sprite software, à cause des restrictions de couleurs sur 8 pixels
- impossible en sprite hardware, je compte 7 couleurs différentes, et le maximum est de 4 sprites par ligne

:hum Edité par Metalion Le 14/02/2021 à 08h28


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 14/02/2021 à 09h32
Metalion :
Ceci dit, comment vas-tu faire ça sur MSX1 ?


Mon prototype est déjà full MSX1 : fs_0_3.rom.

J'utilise des sprites hardware 16x16.
J'ai 4 sprites en bas et 3 en haut.
Les couleurs "ombrés" sont obtenus en alternant la partie noire pour qu'elle passe par dessus les autres couleurs une frame sur 2 (d'où les scintillements).
Je dépasserai la limite des 4 sprites par lignes de temps en temps, mais normalement, de façon assez sporadique.
Et dans ces cas, j'ai fait en sorte que les couleurs les moins critiques disparaissent en premier (d'abord la peau qui à la même couleur que le fond, puis le blanc, qui est peu utilisé).

EDIT : Pour réduire le scintillement, je testerai de faire du double-buffering pour le dessin des sprites pour que chaque version, ombrée ou non, reste le même temps à l'écran.


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

Villageois

Rang

Avatar

Inscrit le : 12/10/2013 à 10h39

Messages: 319

Le 14/02/2021 à 14h04
Bravo bravo bravo c’est super comme idée et réalisation
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie