La Place des Développeurs ROM 48K et slots
aoineko
Membre non connecté
Conseiller Municipal
Reprise du message précédent
Ricco59 :
J'essaie le replay d'Aoineko, si tu le permets évidemment
C'est fait pour
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.
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
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
Bien joué
La fin de ton calvaire approche... Sinon, tu as choisi quel replayer ?
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 !
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
@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
aoineko
Membre non connecté
Conseiller Municipal
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
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.
aoineko :
Dans ma lib, j'utilise PT3 pour la musique (Vortex Tracker) et AyFX pour les sons.
Les deux fonctionnent de concert.
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
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 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.
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
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
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
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
Ceci dit, openMSX reagit de 2 façons différentes. Pourquoi ?
Edité par Ricco59 Le 28/12/2021 à 11h30
aoineko
Membre non connecté
Conseiller Municipal
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).
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.
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
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;
}
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
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...
Edité par Ricco59 Le 28/12/2021 à 15h33
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
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...
Edité par Ricco59 Le 28/12/2021 à 15h33
aoineko
Membre non connecté
Conseiller Municipal
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).
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.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie