La Place des Développeurs MSXgl MSX Game Library
aoineko
Membre non connecté
Conseiller Municipal
Reprise du message précédent
RibbSayan :
Pour ma part, ça serait un jeu plateforme style valis 2 en screen 4 avec scrolling fluide et musiques SCC...
Et depuis ce matin, avec la demo que tu viens de mettre en ligne. J'ai des étoiles pleins les yeux.
Et depuis ce matin, avec la demo que tu viens de mettre en ligne. J'ai des étoiles pleins les yeux.
Par contre, faudrait que je trouve un format qui support le SCC car avec le VGM (qui n'est qu'un log des accès aux registres) les musiques SCC sont énormes.
Je vais regarder du coté de TriloTracker, qui me semble être le plus utilisé récemment.
On est toujours ignorant avant de savoir.
aoineko :
Par contre, faudrait que je trouve un format qui support le SCC car avec le VGM (qui n'est qu'un log des accès aux registres) les musiques SCC sont énormes
C'est le gros problème du format VGM. Il est précis et fidèle, mais comme c'est juste un dump des registres, les tailles sont justes incompatibles avec un jeu, par exemple. Edité par Metalion Le 20/01/2022 à 11h06
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
Metalion :
C'est le gros problème du format VGM. Il est précis et fidèle, mais comme c'est juste un dump des registres, les tailles sont justes incompatibles avec un jeu, par exemple.
Ma version VGM "light" pour le AY-3-8910 a une taille compatible avec un jeu MegaROM et me semble même une option tout à fait justifiable vu la légèreté de son replayer.
Pour le SCC, ça semble plus compliqué d'en faire une version vraiment compact (surtout à cause des wave-tables), mais ça se tente.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
J'ai fait une version light de VGM qui inclus les infos du SCC, mais même si j'ai des réductions de l'ordre de 63%, la par contre, on reste sur des tailles qui ne sont pas viables pour un jeu (plusieurs dizaine de KB).
Du coup, je vais garder que la version light pour PSG (ayVGM).
Du coup, je vais garder que la version light pour PSG (ayVGM).
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Après le SCC, MSXgl support maintenant le MSX-Music (YM2413) !
On peut accéder directement au YM2413 et le format VGM supporte maintenant cette puce sonore.
J'ai mis à jour le sample VGM avec une musique de Undeadline qui n'utilise que le MSX-Music (pas de PSG).
C'est la 6e musique : https://webmsx.org/?MACHINE=MSXTR&ROM=https://github.com/aoineko-fr/MSXgl/raw/main/projects/samples/emul/rom/s_vgm.rom&CARTRIDGE1_FORMAT=ASCII16&PRESETS=SCC2
On peut accéder directement au YM2413 et le format VGM supporte maintenant cette puce sonore.
J'ai mis à jour le sample VGM avec une musique de Undeadline qui n'utilise que le MSX-Music (pas de PSG).
C'est la 6e musique : https://webmsx.org/?MACHINE=MSXTR&ROM=https://github.com/aoineko-fr/MSXgl/raw/main/projects/samples/emul/rom/s_vgm.rom&CARTRIDGE1_FORMAT=ASCII16&PRESETS=SCC2
On est toujours ignorant avant de savoir.
@aoineko j'ai préparé une carte électronique avec un YM2413 en version ultra light à greffer en interne. J'ai ajouté des réglages pour les aigus, grave et le volume. Je vais faite un test et si ça marche je te ferai signe si tu veux en installer une dans ton MSX.
Il faut cultiver notre jardin.
aoineko
Membre non connecté
Conseiller Municipal
Gfx :
@aoineko j'ai préparé une carte électronique avec un YM2413 en version ultra light à greffer en interne. J'ai ajouté des réglages pour les aigus, grave et le volume. Je vais faite un test et si ça marche je te ferai signe si tu veux en installer une dans ton MSX.
Ah oui, ça serait super !
Tiens nous au courant de tes avancées.
On est toujours ignorant avant de savoir.
MSX-Music, c chouette ça
le YM2413, c'est le chip sonore que l'on peut mettre dans une mastersystem pour avoir le son FM ??
Quel Talent ce Gfx
le YM2413, c'est le chip sonore que l'on peut mettre dans une mastersystem pour avoir le son FM ??
Quel Talent ce Gfx
aoineko
Membre non connecté
Conseiller Municipal
Ricco59 :
le YM2413, c'est le chip sonore que l'on peut mettre dans une mastersystem pour avoir le son FM ??
Toutafé.
Et comme y a qu'un seul instrument custom (les autres sont "build-in" dans une ROM), ça génère que peu de donnée.
C'est une super puce sonore pour un jeu 8-bits je trouve.
Et quand on voit ce que Falcom en a fait dans Dragon Slayer VI par ex., je me dis qu'elle mérite plus de reconnaissance (le YM2413 est souvent critiqué pour ses faibles capacités).
On est toujours ignorant avant de savoir.
Hello @aoineko,
je tente quelques trucs avec ta super librairie et je me demandais quelle serait la meilleure méthode pour découper les sprites de mon petit personnage avec CMSXimg :
j'ai essayé ça mais je crois que je n'ai pas compris comment fonctionnent les layers...
Edité par Gfx Le 28/01/2022 à 23h33
je tente quelques trucs avec ta super librairie et je me demandais quelle serait la meilleure méthode pour découper les sprites de mon petit personnage avec CMSXimg :
j'ai essayé ça mais je crois que je n'ai pas compris comment fonctionnent les layers...
cmd :
CMSXimg.exe animations.png -out animations.h -name g_Data -mode sprt -size 8 8 -skip -num 8 12 -trans 0x060606 -pal msx1 -bpc 1 -l i8 0 0 1 1 0xded087 8 0 1 1 0xb766b5 0 8 2 1 0xffffff
Edité par Gfx Le 28/01/2022 à 23h33
Il faut cultiver notre jardin.
aoineko
Membre non connecté
Conseiller Municipal
Les layers, c'est un sous-découpage des blocs de base.
Par rapport à tes données, il faut que ton bloc de base soit en 16 x 16 ( -size 16 16 ).
Ensuite, à l'intérieur de ces blocks, tu va pouvoir définir plusieurs layers (il faut un -l pour chaque layer).
J'ai pas tester (si tu veux, envoi-moi ton PNG que je test), mais ça devrait ressembler à ça :
(tu peux tout mettre sur une ligne mais perso je préfère mettre un layer par ligne dans mes fichiers bash, surtout quand ils incluent plusieurs couleurs)
Les layers :
- La couleur de peau présente que dans le sous-blocs 8x8 en haut à gauche (position 0,0 et taille 1,1),
- La couleur du chapeau présente dans le sous-blocs de 16x8 du haut (position 0,0 et taille 2,1),
- La couleur de vêtement présente dans le sous-blocs de 16x8 du bas (position 0,8 et taille 2,1).
(en bleu, les blocs et en vert, les layers)
Dis-moi si c'est bon.
Par rapport à tes données, il faut que ton bloc de base soit en 16 x 16 ( -size 16 16 ).
Ensuite, à l'intérieur de ces blocks, tu va pouvoir définir plusieurs layers (il faut un -l pour chaque layer).
J'ai pas tester (si tu veux, envoi-moi ton PNG que je test), mais ça devrait ressembler à ça :
Code BASH :
CMSXimg.exe animations.png -out animations.h -name g_Data -mode sprt -pos 0 0 -size 16 16 -num 4 6 ^ -l i8 0 0 1 1 0xDED087 ^ -l i8 0 0 2 1 0xB766B5 ^ -l i8 0 8 2 1 0xFFFFFF
(tu peux tout mettre sur une ligne mais perso je préfère mettre un layer par ligne dans mes fichiers bash, surtout quand ils incluent plusieurs couleurs)
Les layers :
- La couleur de peau présente que dans le sous-blocs 8x8 en haut à gauche (position 0,0 et taille 1,1),
- La couleur du chapeau présente dans le sous-blocs de 16x8 du haut (position 0,0 et taille 2,1),
- La couleur de vêtement présente dans le sous-blocs de 16x8 du bas (position 0,8 et taille 2,1).
(en bleu, les blocs et en vert, les layers)
Dis-moi si c'est bon.
On est toujours ignorant avant de savoir.
Merci @aoineko, ça fonctionne bien maintenant. J'obtiens bien un tableau de cette forme :
Je vais essayer d'ajouter ça en VRAM en partant de ton example s_game
Merci !
Citation :
// ======== Frame[0]
// ---- Layer[0] (8x8 0,0 1,1 inc 1)
// Sprite[0] (offset:0)
0x00, /* ........ */
0x02, /* ......#. */
0x05, /* .....#.# */
0x05, /* .....#.# */
0x0F, /* ....#### */
0x05, /* .....#.# */
0x03, /* ......## */
0x00, /* ........ */
// ---- Layer[1] (8x8 0,0 2,1 inc 1)
// Sprite[1] (offset:8)
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
// Sprite[2] (offset:16)
0x00, /* ........ */
0xF8, /* #####... */
0xBC, /* #.####.. */
0x5C, /* .#.###.. */
0x5C, /* .#.###.. */
0x6E, /* .##.###. */
0x66, /* .##..##. */
0x00, /* ........ */
// ---- Layer[2] (8x8 0,8 2,1 inc 1)
// Sprite[3] (offset:24)
0x01, /* .......# */
0x05, /* .....#.# */
0x0C, /* ....##.. */
0x1B, /* ...##.## */
0x27, /* ..#..### */
0x07, /* .....### */
0x28, /* ..#.#... */
0x18, /* ...##... */
// Sprite[4] (offset:32)
0x80, /* #....... */
0xC0, /* ##...... */
0xE0, /* ###..... */
0x70, /* .###.... */
0x80, /* #....... */
0xF0, /* ####.... */
0x08, /* ....#... */
0x30, /* ..##.... */
// ======== Frame[1]
// ---- Layer[0] (8x8 0,0 1,1 inc 1)
// Sprite[0] (offset:0)
0x00, /* ........ */
0x02, /* ......#. */
0x05, /* .....#.# */
0x05, /* .....#.# */
0x0F, /* ....#### */
0x05, /* .....#.# */
0x03, /* ......## */
0x00, /* ........ */
// ---- Layer[1] (8x8 0,0 2,1 inc 1)
// Sprite[1] (offset:8)
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
0x00, /* ........ */
// Sprite[2] (offset:16)
0x00, /* ........ */
0xF8, /* #####... */
0xBC, /* #.####.. */
0x5C, /* .#.###.. */
0x5C, /* .#.###.. */
0x6E, /* .##.###. */
0x66, /* .##..##. */
0x00, /* ........ */
// ---- Layer[2] (8x8 0,8 2,1 inc 1)
// Sprite[3] (offset:24)
0x01, /* .......# */
0x05, /* .....#.# */
0x0C, /* ....##.. */
0x1B, /* ...##.## */
0x27, /* ..#..### */
0x07, /* .....### */
0x28, /* ..#.#... */
0x18, /* ...##... */
// Sprite[4] (offset:32)
0x80, /* #....... */
0xC0, /* ##...... */
0xE0, /* ###..... */
0x70, /* .###.... */
0x80, /* #....... */
0xF0, /* ####.... */
0x08, /* ....#... */
0x30, /* ..##.... */
// ======== Frame[1]
Je vais essayer d'ajouter ça en VRAM en partant de ton example s_game
Merci !
Il faut cultiver notre jardin.
aoineko
Membre non connecté
Conseiller Municipal
Cool
Ce qui est un peu technique, c'est que tu dois réagencer les blocks de 8x8 en VRAM.
Pour maximiser le nombre de sprites que tu peux afficher par ligne, je te conseille d'utiliser des sprites 16x16 avec l'une de ces configurations :
Et du coup, dans un sprite 16x16, tu dois agencer les 4 blocks 8x8 dans cet ordre : haut-gauche, bas-gauche, haut-droite, bas-droite.
Ce qui est un peu technique, c'est que tu dois réagencer les blocks de 8x8 en VRAM.
Pour maximiser le nombre de sprites que tu peux afficher par ligne, je te conseille d'utiliser des sprites 16x16 avec l'une de ces configurations :
Et du coup, dans un sprite 16x16, tu dois agencer les 4 blocks 8x8 dans cet ordre : haut-gauche, bas-gauche, haut-droite, bas-droite.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Tiens, ça me fait penser que ça fait un bout de temps que je souhaite ajouter un module pour gérer les animations.
En fait j'ai fait un truc assez avancé pour Final Smash, il faudrait juste que je le sorte du projet pour le mettre dans la librairie.
En fait j'ai fait un truc assez avancé pour Final Smash, il faudrait juste que je le sorte du projet pour le mettre dans la librairie.
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie