MSX Village forum

La Place des Développeurs ROM 48K et slots

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 23/12/2021 à 22h18

Reprise du message précédent

Ricco59 :
J'essaie le replay d'Aoineko, si tu le permets évidemment ;)


C'est fait pour :top

Si tu es motivé, je vais même te vendre la concurrence. ^^
Y a l'utilisateur mvac7 qui a fait quelque chose que j'ai pas encore fini : généraliser l'utilisation du PSG pour un fonctionnement centralisé par les différents Replayer en C.
En gros, chaque Replayer (PT3, ayFX et WYZ) utilise la même base de code pour la gestion du PSG (j'ai commencé à le faire, mais je me suis perdu en route).
Le seul défaut de sa lib, c'est qu'elle est éparpillé sur plusieurs repo GitHUB (https://github.com/mvac7?tab=repositories).

Après, si tu veux juste jouer une musique au format PT3 et jouer des SFX par dessus, ma Lib t'ira très bien. :)
Par contre, autant le Replayer PT3 semble largement le plus répandu en C, autant j'ai pas l'impression que beaucoup de musiciens actuels l'utilisent.
Y a beaucoup de morceaux existants, mais si tu veux une musique originale, il faudra trouver quelqu'un d'assez motivé pour la créer avec Vortex Tracker (ou la convertir ?).
Les musiques que j'ai vu passer récemment (sur MRC et Youtube) sont généralement faite avec TriloTracker ou Arkos Tracker 2.


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

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 26/12/2021 à 10h02
Hello

Ca y est, la musique fonctionne avec le son ;)
Je n'ai plus qu'à essayer sur la vraie machine

Viendra ensuite la recherche d'un musicien ;)

Belle journée


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 26/12/2021 à 13h29
Bien joué :top

La fin de ton calvaire approche... Sinon, tu as choisi quel replayer ?


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 26/12/2021 à 22h14
Re les zamis

@KN2000, concernant la fin, elle n'a jamais été aussi proche mais combien de temps ça va encore me demander héhéhé

Je viens de tester sur mon 8245 et ça marche. Encore 2, 3 correctifs...
Faut que je fasse des tests plus poussés sur le jeu lui-même (on est jamais à l'abri d'un büg).
Je viens d'y penser à l'instant : faut aussi que j'essaie sur un autre slot

Concernant le player, c'est celui d'Aoineko qui joue les modules .pt3 (Vortex tracker est LE tracker , à ma connaissance, produisant ces modules. J'utilise Vortex Tracker II v1.0 beta 19 (c)2000-2009 S.V.Bulba )

Comme je le disais plus haut, si un MuSiXien traine sur ce post et qu'il est motivé pour me faire 2, 3 choses, ce serait chouette. D'avance merci

Tchao les zamis Edité par Ricco59 Le 27/12/2021 à 14h48


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 26/12/2021 à 23h00
Pour le slot étendu, tu peux essayer avec OpenMSX avec les paramètres : ext slotexpander -cart myRomFile.rom .
Avec cette config, ta cartouche se retrouvera dans le slot étendu 1-0 .

Y a deux choses à faire attention dans ton programme :
- Que ton crt0 change bien la page 2 avec le slot principal et le sous secondaire (sous-slot) de la page 1
- Que tu récupères bien la slot ID complet de ta cartouche (info de slot principal et secondaire) et que tu l'utilises dans le RDSLT (dans le registre A)

Pour le premier point, j'ai justement corrigé le crt0 de mes cartouches 32K en faisant du ménage pour le support des mappers.
Je changeais le slot principal, mais pas le secondaire ; ce qui pose des soucis quand le jeu est dans un slot étendu.
Tu trouveras le code correct dans la macro SET_PAGE2_SLOT_FROM_PAGE1 : https://github.com/aoineko-fr/CMSX/blob/master/cmsx/src/crt0/macros.asm

@EricB Il faudra aussi corriger Fusion-C 1.3 qui utilise l'ancien crt0


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

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 27/12/2021 à 18h25
aoineko :
Dans ma lib, j'utilise PT3 pour la musique (Vortex Tracker) et AyFX pour les sons.
Les deux fonctionnent de concert.


Du coup, il ne faut pas utiliser le canal bruit dans Vortex Tracker ? Je veux dire, il n'y a pas de risque de conflits entre des effets dans VT lorsque l'on joue des sons aveec AyFX ? Edité par KN2000 Le 27/12/2021 à 18h54


Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 27/12/2021 à 23h03
Dans la lib, les deux sont mergés, avec une priorité pour ayFX.
On peux choisir le canal sur lequel se joue les SFX pour prendre celui qui gène le moins et si ça ne suffit pas, il y a une option pour faire cycler automatiquement le canal du SFX (pour que ça ne soit pas toujours le même canal PT3 qui soit écrasé).
Après, c'est pas magique. Le SFX va forcement écraser un peu de musique. Mais d'après les tests que j'ai fait, ça passe plutôt bien.

Tu peux essayer le sample de ma lib ici : s_psg.rom
La musique se lance avec [espace], les SFX se jouent avec les flèches gauche/droite, et haut/bas permet de changer le canal ou est joue le SFX.
Ca dépend de la musique, mais dans cette exemple, le canal B (qui joue une sorte de nappe) est clairement le moins problématique à écraser.


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

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 27/12/2021 à 23h51
Merci encore Guillaume ;)

L'idéal c'est de jouer la musique sur 2 voies et de réserver la 3e pour les SFX. J'ai fait ça à l'époque sur Amiga, bon c'est vrai il y a 4 voies, le proc est plus rapide etc... ce qui est déjà mieux
Ceci dit sur MRC, une musicien se débrouille très bien sur 2 voies avec Arkos Tracker et il fait de chouettes musiques. Le AY a son charme ;)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/12/2021 à 10h49
Yo les zamis

Bon j'ai un pti souci, je ne sais pas si c'est un bug de openMSX ou si c'est moi qui deconne ;)

- quand je lance openMSX (17.0) via Catapult :
---- je selectionne mes différentes machines ou mes Bios
---- je charge ma rom (Cartridge Slots) en Cart A et ça marche
---- j'ejecte ma rom
---- je charge ma rom dans le 2e Slot (Cart B) et ça marche

- Quand je lance directement openMSX (cbios 0.29)
---- je clique en haut à gauche (MENU) et je charge ma rom Cart. Slot A, ça marche
---- j'éjecte la rom
---- je charge ma rom en Cart. Slot B, le menu fonctionne et qd j'arrive au jeu, toutes mes données ne sont pas transférées.

Bizarre....
je viens d'essayer sur blueMSX (2.8.3), en port B, ca marche po (est-il encore fiable à 100% )

Alors Bug openMSX ou Bug Eric ;)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 28/12/2021 à 10h52
Citation :
Bug Eric



Ça c'est inconcevable. et je sais de quoi je parle :siffle


banniere-ericb59e
Site web    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/12/2021 à 11h02
:lol

Ceci dit, openMSX reagit de 2 façons différentes. Pourquoi ?

Edité par Ricco59 Le 28/12/2021 à 11h30


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 28/12/2021 à 12h05
Déjà, as tu bien modifié ton code pour détecter dynamiquement le SlotId (slot primaire/secondaire) de ta cartouche et le sélectionner lors de l'appel de RDSLT ?
Sinon, ça ne marchera pas.

Si t'as bien fait tout ça, il n'y a pas de raison que ça ne marche pas quelque soit l'émulateur et le slot.
Le fait que le comportement semble erratique peut venir de l'initialisation de la RAM qui diffère d'un émulateur à l'autre (et d'une machine à l'autre).


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

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/12/2021 à 14h41
Voici ce que je fais. (Cela dit je ne m'explique pas pourquoi openMSX donne un résultat différent en fonction de la procédure suivie)

ID_Slot = 0x02



void Read_SlotID(void)__naked
{
__asm
call RSLREG // lit slot primaire 0x5d8c
rrca
rrca
and #3
ld c,a
ld b,#0
ld hl,#EXPTBL // port étendu ou non
add hl,bc
ld a,(hl)
and #0x80
or c
ld c,a
inc hl
inc hl
inc hl
inc hl
ld a,(hl)
and #0x0C
or c ; A contient le Slot-ID
ld hl,#_ID_Slot
ld (hl),a
ret
__endasm;
}


void Page0_2VRam(unsigned short* Source, unsigned short Taille )
{
Source;
Taille;

__asm

// lit niveau et le multiplie par 72
ld l,4(ix) // hl = source des données en page 0, slot ID_Slot
ld h,5(ix)
ld c,6(ix) // bc = taille
ld b,7(ix)

ld de,#_Buffer_VRam
push de
Boucle_2VRam:
ld a,(#_ID_Slot)
push bc
push de
call #0x000c
ei
pop de
pop bc
inc hl
pop de
ld (de),a
inc de
push de

dec bc
ld a,b
or c
jp nz,Boucle_2VRam
pop de

__endasm;

}

Edité par Ricco59 Le 28/12/2021 à 14h45


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 28/12/2021 à 15h22
il faut savoir que OpenMSX change les config suivant la machine employée



:noel
Site web    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/12/2021 à 15h23
Bon... I'm back

Ericb59, tu avais raison même si le comportement de openMSX me triturait les méninges lol
En fait j'ai 3 routines de lecture byte/byte
- 1 pour tout ce qui est graphs
- 1 pour les levels
- 1 pour les coordonnées 'départ' du curseur

Eh bien figurez-vous les zamis que je n'avais actualisé que la routine concernant les graphs (avec le bon ID_Slot), j'avais zappé les 2 autres :jesors

Maintenant c'est OK ;)


EDIT :
@Jipe
Ce qui se passait était qd meme étrange car
si j'utilisais la procédure consistant à passer par Catapult, ca fonctionnait que je sois en slot 1 ou 2
si par contre je lançais directement openMSX avec le jeu en slot A ca marchait mais plus en slot B et ce, quelque soit le BIOS ou la machine

En tout cas, c'est résolu même si sous blueMSX en slot2, ca reboot en boucle... :fou
Edité par Ricco59 Le 28/12/2021 à 15h33


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 28/12/2021 à 15h50
La première fonction à l'air OK... en dehors du fait que tu dépends des fonctions du BIOS et de sa zone de travail en RAM. Côté BIOS y a peu de risques que ça ne fonctionne pas comme prévu. Côté RAM, tu es sûr de pas écraser la zone de travail du BIOS ?
Tu devais déjà valider la valeur de ta première fonction avec un programme qui la print. Essai-le sur les différents émulateurs et sur différentes configurations : slot primaire 1, slot primaire 2, slot étendu, etc.
Si tu valides que la valeur est toujours bonne, le problème vient de ta 2e fonction (ou d'ailleurs).


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie