[ TERMINE ] - Papi Commando Megadrive Edition !
+32
upsilandre
neimad
Rahow
xtopher
Ricco59_59
pckid
oofwill
vincent2105
ShiningBZH
ichigobankai
Spirale
iGeekPSG
kawickboy
beddy
Kouris
buz18
grostonton
Kristof
nemokantio
MrBurns11
Doc_Skunkovitch
Stef
tfdi
iwillbeback
chiss
F.L
bfg
Bonaf
philip
dub
Urbinou
drfloyd
36 participants
Page 11 sur 34
Page 11 sur 34 • 1 ... 7 ... 10, 11, 12 ... 22 ... 34
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Comme tu as pu le voir sur le forum de BEX, j'ai ajouté le support du driver XGM dans BEX :
http://devster.proboards.com/thread/1071/add-music-sfx-game-driver
Je ne maitrise mais alors pas du tout le basic de BEX et bizarrement si je déclares les méthodes XGM avant mon code principal j'ai l'impression que ça foire... Surement une subtilité que je n'ai pas compris, en tout cas l'exemple que je donne fonctionne, donc en reproduisant le même schéma ça devrait fonctionner pour n'importe quel jeu
http://devster.proboards.com/thread/1071/add-music-sfx-game-driver
Je ne maitrise mais alors pas du tout le basic de BEX et bizarrement si je déclares les méthodes XGM avant mon code principal j'ai l'impression que ça foire... Surement une subtilité que je n'ai pas compris, en tout cas l'exemple que je donne fonctionne, donc en reproduisant le même schéma ça devrait fonctionner pour n'importe quel jeu
Stef- Interne
- Nombre de messages : 5087
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Oui merci beaucoup Stef !!
Par contre j'ai une question sur les requis de déclaration :
Tu signales que la source sonore ne doit pas exceder OU doit être d'une longueur de 256 bits hors comment faire avec des séquences musicales longues de plusieurs minutes ?!
Y a t'il un truc que j'ai mal compris ( certainement ^^ ) !
En tout cas la scène française est super active sur tous les fronts, moi je dis Cororicooo !!
Par contre j'ai une question sur les requis de déclaration :
Tu signales que la source sonore ne doit pas exceder OU doit être d'une longueur de 256 bits hors comment faire avec des séquences musicales longues de plusieurs minutes ?!
Y a t'il un truc que j'ai mal compris ( certainement ^^ ) !
En tout cas la scène française est super active sur tous les fronts, moi je dis Cororicooo !!
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Avant d'aller au dodo, j'ai jeté un coup d'oeil au code 'Test.BEX'.
Tu fais bien de tout déclarer à la fin concernant toutes tes routines ASM.
Je pense que le mieux serait de créer des fichiers .ASM et de les intégrer avec des "include" :
Ca sera moins bordélique ! Je tâcherai d'intégrer tout ça.
Donc, en bidouillant les numéros de canaux, on peut jouer des sons & musiques en simultanée c'est ça ?
En fait en regardant et en bidouillant le code source, je ne vois pas comment jouer plusieurs sons en même temps et du coup j'ai pas réussi à jouer plusieurs .RAW en même temps ... J'suis nul hein !
De même pour la déclaration des sources, j'ai vu que tu as spécifié une taille de 256 octets ( align 256 ), mais quid de la taille des sources ? Si la taille dépasse 256 octets, ça risque de ne pas jouer la totalité du morceau ?? A moins que je me méprenne sur un détail ... C'est possible vu que je débute en assembleur !
En tout cas encore un grand MERCI pour ta collaboration à ce soucis de sons & musiques sur MD, c'est vraiment un truc pas évident à gérer quand on débute.
Tu fais bien de tout déclarer à la fin concernant toutes tes routines ASM.
Je pense que le mieux serait de créer des fichiers .ASM et de les intégrer avec des "include" :
- Code:
asm
include "Programme1.asm"
iclude "Programme2.asm"
end asm
Ca sera moins bordélique ! Je tâcherai d'intégrer tout ça.
Donc, en bidouillant les numéros de canaux, on peut jouer des sons & musiques en simultanée c'est ça ?
En fait en regardant et en bidouillant le code source, je ne vois pas comment jouer plusieurs sons en même temps et du coup j'ai pas réussi à jouer plusieurs .RAW en même temps ... J'suis nul hein !
De même pour la déclaration des sources, j'ai vu que tu as spécifié une taille de 256 octets ( align 256 ), mais quid de la taille des sources ? Si la taille dépasse 256 octets, ça risque de ne pas jouer la totalité du morceau ?? A moins que je me méprenne sur un détail ... C'est possible vu que je débute en assembleur !
En tout cas encore un grand MERCI pour ta collaboration à ce soucis de sons & musiques sur MD, c'est vraiment un truc pas évident à gérer quand on débute.
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Vetea a écrit:Oui merci beaucoup Stef !!
Par contre j'ai une question sur les requis de déclaration :
Tu signales que la source sonore ne doit pas exceder OU doit être d'une longueur de 256 bits hors comment faire avec des séquences musicales longues de plusieurs minutes ?!
Y a t'il un truc que j'ai mal compris ( certainement ^^ ) !
En tout cas la scène française est super active sur tous les fronts, moi je dis Cororicooo !!
Ah non je disais juste que la taille des samples doit être alignée sur un multiple de 256 bytes (soit octets), ce que tu peux faire facilement grâce à l'outil SizeBnd que j'ai mis en lien. Sinon il n'y a aucune limite en taille en elle même, le driver permet de jouer des samples de plusieurs minutes si tu veux mais ça va te couter cher en ROM
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Vetea a écrit:Avant d'aller au dodo, j'ai jeté un coup d'oeil au code 'Test.BEX'.
Tu fais bien de tout déclarer à la fin concernant toutes tes routines ASM.
Je pense que le mieux serait de créer des fichiers .ASM et de les intégrer avec des "include" :
- Code:
asm
include "Programme1.asm"
iclude "Programme2.asm"
end asm
Ca sera moins bordélique ! Je tâcherai d'intégrer tout ça.
Ouais j'ai vu ça, mais quand j'ai lu dans la doc que le "include" était tout buggé j'ai préféré faire simple.
En fait au départ j'avais effectivement séparé : un fichier xgm_drv.bex qui contenait toutes les méthodes du driver et un fichier test.bex qui se contentait d'inclure le "xgm_drv.bex" et qui appelait les différentes méthodes... Mais ça ne fonctionnait pas (problème d'ordre de déclaration ?) du coup je suis revenu à cette forme :-/ Je me dis que si les includes foirent à moitié ça doit être compliqué de bien structurer son code avec BEX :-/
Donc, en bidouillant les numéros de canaux, on peut jouer des sons & musiques en simultanée c'est ça ?
En fait en regardant et en bidouillant le code source, je ne vois pas comment jouer plusieurs sons en même temps et du coup j'ai pas réussi à jouer plusieurs .RAW en même temps ... J'suis nul hein !
Exactement tu peux lancer la musique et ensuite jouer des SFX en plus sans soucis.
Dans l'exemple j'ai fait très simple, j'ai juste essayé les différentes commandes (et encore pas toute).
Par exemple tu démarres la musique :
- Code:
asm
lea XGMsong,a1 ; put address of song to play in a1
end asm
xgm_startPlayMusic
C'est un peu chiant de devoir passer par du code ASM pour définir les paramètres mais j'ai l'impression qu'on ne peut pas accéder aux labels ASM depuis le basic du coup j'ai du faire comme ça :-/
Ensuite pour jouer un bruitage (sample PCM) :
- Code:
asm
lea LOOPpcm,a1 ; put address of sample in a1
move.l #(LOOPpcm_end - LOOPpcm),d1 ; put length of sample in d1
move.l #((1<<4) | 0),d2 ; put priority and channel number in d2
end asm
xgm_playPCM
Donc avec le code au dessus je joue le sample LOOPpcm sur le channel 0 avec une priorité à 1.
Si tu veux jouer un autre PCM en même temps il faut juste le jouer sur un autre channel :
- Code:
asm
lea EXpcm,a1 ; put address of sample in a1
move.l #(EXpcm_end - EXpcm),d1 ; put length of sample in d1
move.l #((1<<4) | 1),d2 ; put priority and channel number in d2
end asm
xgm_playPCM
Tu peux voir que j'ai changé la valeur à droite du "|" pour le registre d2, c'est lui qui défini le numéro du channel (valeur de 0 à 3 car 4 channels).
Je te recommande d'utiliser que 3 channels pour tes bruitages (channel 1 à 3) ainsi tu laisse le channel 0 libre pour la musique.
De même pour la déclaration des sources, j'ai vu que tu as spécifié une taille de 256 octets ( align 256 ), mais quid de la taille des sources ? Si la taille dépasse 256 octets, ça risque de ne pas jouer la totalité du morceau ?? A moins que je me méprenne sur un détail ... C'est possible vu que je débute en assembleur !
Le "align 256" permet juste d'aligner la déclaration du sample (juste en dessous) sur un multiple de 256 en mémoire. C'est important pour le driver XGM mais ça ne limite en rien la taille de celui ci Comme tu peux voir mes fichier PCM (.raw) font bien plus que 256 octets en taille.
Il est important aussi d'avoir un label à la fin du sample ainsi tu récupères facilement la taille du sample en faisant "label_end - label_start"
En tout cas encore un grand MERCI pour ta collaboration à ce soucis de sons & musiques sur MD, c'est vraiment un truc pas évident à gérer quand on débute.
De rien, moi ça me fait plaisir si ça peut servir
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Voila qui est plus clair pour moi ( et pour les autres aussi je pense !! )
Merci Stef, je vais potasser tout ça.
Ah oui, le driverZ80 est chargé une bonne fois pour toute ou faut il le recharger à chaque lecture de son ?
L'idée des 3 canaux serait de sauver 3 sons différents en mémoire ( exemple : 2 sons de tirs, un son de mort sur les canaux 1 - 3) et de les jouer en jeu indépendamment. Enfin je vois les choses comme ça !
Et d'un autre coté, on joue n'importe quelles musiques ( pourvu qu'elle soit du format approprié ) avec un canal 0.
J'espère que j'ai tout compris cette fois ci !! ^^
Encore merci à toi ! :)
Merci Stef, je vais potasser tout ça.
Ah oui, le driverZ80 est chargé une bonne fois pour toute ou faut il le recharger à chaque lecture de son ?
L'idée des 3 canaux serait de sauver 3 sons différents en mémoire ( exemple : 2 sons de tirs, un son de mort sur les canaux 1 - 3) et de les jouer en jeu indépendamment. Enfin je vois les choses comme ça !
Et d'un autre coté, on joue n'importe quelles musiques ( pourvu qu'elle soit du format approprié ) avec un canal 0.
J'espère que j'ai tout compris cette fois ci !! ^^
Encore merci à toi ! :)
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
J'ai aussi remarqué qu'il faut intégrer une petite pause entre les sons ( sleep avec bex ) joués sinon on a pas la lecture des sons en simultanée.
Peut on y remédier en y intégrant des petits NOP dans ton code source ASM ?
Peut on y remédier en y intégrant des petits NOP dans ton code source ASM ?
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Oui le driver il faut le charger une seule fois au tout début, après tu es tranquille.
Pour la gestion des voies PCM, c'est à toi de voir en fait.
Soit tu réserves des voies en dur selon les bruitages comme tu le disais ou soit tu fais du dynamique (en gros tu interroges les voies actuellement occupée et tu essais de trouver une voie libre) ou juste en faisant une bête incrémentation du numéro de voie à chaque fois :
En gros ainsi tu cycles entre les voies/channels 1 et 3.
La musique va effectivement utiliser le PCM sur le channel 0
Moi j'ai mis des pauses mais normalement elles ne sont pas nécessaire. Je vais regarder ça.
Edit: J'ai trouvé, j'avais laissé une petite erreur dans les méthodes xgm_playPCM() et xgm_stopPCM(), si tu reprends le code de ces 2 fonctions depuis le fichier test.bex en ligne ça devrait fonctionner (j'avais mis un "move" pour la commande plutot qu'un "or" du coup tu perdais la commande précédente si elle n'avait pas encore été lue).
Pour la gestion des voies PCM, c'est à toi de voir en fait.
Soit tu réserves des voies en dur selon les bruitages comme tu le disais ou soit tu fais du dynamique (en gros tu interroges les voies actuellement occupée et tu essais de trouver une voie libre) ou juste en faisant une bête incrémentation du numéro de voie à chaque fois :
- Code:
playSFX on (ch + 1) ; ch+1 car 0 est réservé à la musique
ch = ch+1
if (ch > 2) then ch = 0
En gros ainsi tu cycles entre les voies/channels 1 et 3.
La musique va effectivement utiliser le PCM sur le channel 0
J'ai aussi remarqué qu'il faut intégrer une petite pause entre les sons ( sleep avec bex ) joués sinon on a pas la lecture des sons en simultanée.
Peut on y remédier en y intégrant des petits NOP dans ton code source ASM ?
Moi j'ai mis des pauses mais normalement elles ne sont pas nécessaire. Je vais regarder ça.
Edit: J'ai trouvé, j'avais laissé une petite erreur dans les méthodes xgm_playPCM() et xgm_stopPCM(), si tu reprends le code de ces 2 fonctions depuis le fichier test.bex en ligne ça devrait fonctionner (j'avais mis un "move" pour la commande plutot qu'un "or" du coup tu perdais la commande précédente si elle n'avait pas encore été lue).
Dernière édition par Stef le Mer 4 Mar 2015 - 11:56, édité 1 fois
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Voila j'ai réussi à tout intégrer dans un code BEX "classique" :
Bon ben voila, je suis bon pour utiliser ton driver et ta méthode !
Si un jour une cartouche MD Papi Commando voit le jour, soit assuré d'avoir ton nom dans les credits !
Sinon je confirme qu'il faut mettre une "pause" entre chaque lecture sinon ta routine va jouer la dernière lecture si tu déclares tout en continue ( en tout cas avec BEX ! )
- Code:
global pcmid as long
global tempo as integer
pcmid& = 64
' load Z80 XGM driver
z80_loadDriver
tempo=1
'On synchonise la boucle sur le Vsync
on vblank gosub main
enable interrupt vblank
end
main:
while 1
'Lecture de la musique principale
if play=0 then
gosub music
play=1
end if
'PAD haut pour le son PCM N°2
if joypad(0).6 [and] tempo=1 then gosub pcm2:tempo=2
'PAD A pour le son PCM N°1
if joypad(0).0 [and] tempo=1 then gosub pcm1:tempo=2
'Tempo de validation
if tempo=2 then
for i=1 to 7500
next i
tempo=0
end if
wend
return
Music:
asm
lea XGMsong,a1 ; put address of song to play in a1
end asm
xgm_startPlayMusic
return
Pcm1:
asm
lea LOOPpcm,a1 ; put address of sample in a1
move.l #(LOOPpcm_end-LOOPpcm),d1 ; put length of sample in d1
move.l #((1<<4)|1),d2 ; put priority and channel number in d2
end asm
xgm_playPCM
return
Pcm2:
asm
lea snarepcm,a1 ; put address of sample in a1
move.l #(snarepcm_end-snarepcm),d1 ; put length of sample in d1
move.l #((1<<4)|2),d2 ; put priority and channel number in d2
end asm
xgm_playPCM
return
' Feel free to use address registers a0-a2 in your assembly language subroutine.
' Address registers a3-a7 are special registers that basic will use,
' which must not be modified by the function.
' A3 holds the address of the start of the stack.
' Modifying A3 won t mess up your program, but you will lose track of where the heap starts for your function.
' A4 holds the video port address for fast access.
' A5 holds the current position of the heap. Your function can use the heap as much as it wants,
' to hold values, or whatever. For example, you can use it like move.l #123,4(a5) or whatever.
' A6 holds the current position of the data pointer. A7 holds the stack position.
' Modifying A3 and A5 won't do any harm to your BASIC program.
declare asm sub z80_loadDriver()
move.w #$100,($A11100) ; Send the Z80 a bus request.
move.w #$100,($A11200)
MOVE.L #(Z80drv_end-Z80drv),D0
LEA Z80drv,A0
MOVE.L #$A00000,A1
@loop:
MOVE.B (A0)+, (A1)+
DBRA D0, @loop ; load driver
move.l #$A01C00,a0 ; point to Z80 sample id table (first entry = silent sample)
move.l #NULLpcm,d0 ; d0 = silent sample
move.b d0,$0(a0) ; sample address
lsr.l #8,d0
move.b d0,$1(a0)
move.b #$01,$2(a0) ; sample length
move.b #$00,$3(a0)
move.w #$000,($A11200) ; Start Z80 Reset
move.w #$000,($A11100) ; release the Z80 bus
move.l #$A00102,a0 ; point to status
@test_ready:
move.w #100,d0 ;
@wait:
DBRA D0, @wait ; wait a bit
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200) ; End Z80 Reset
NOP
NOP
NOP
NOP
NOP
move.b (a0),d0
move.w #$000,($A11100) ; release the Z80 bus
btst #7,d0 ; not yet ready
beq @test_ready
end sub
declare asm function xgm_isPlayingMusic()
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
NOP
NOP
NOP
NOP
NOP
move.b ($A00102),d0 ; get channel playing status
andi.l #$40,d0 ; keep play XGM bit only
move.w #$000,($A11100) ; release the Z80 bus
end function
declare asm sub xgm_startPlayMusic()
; a1 should point on XGM music
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
move.l a3,a0 ; a0 = reserved $FC array for sample id table
moveq #0,d0
@loop: ; prepare sample id table
move.w d0,d1
add.w d1,d1
add.w d1,d1
moveq #0,d2
move.w 0(a1,d1.w),d2 ; get sample addr in song bank table
rol.w #8,d2 ; revert endianess
cmp.w #$FFFF,d2 ; is null sample ?
bne @not_null
move.l NULLpcm,d2
jmp @addr_done
@not_null:
addq.w #1,d2 ; add offset
lsl.l #8,d2 ; pass to 24 bits
add.l a1,d2 ; transform to absolute address
@addr_done
lsr.l #8,d2 ; get high byte
move.b d2,0(a0,d1.w)
lsr.w #8,d2 ; get low byte
move.b d2,1(a0,d1.w)
move.w 2(a1,d1.w),2(a0,d1.w) ; copy sample length
addq.w #1,d0
cmp.w #$3F,d0
bne @loop
move.l #$A01C04,a2 ; destination of sample id table
lsl.w #2,d0 ; set size in bytes
subq.w #1,d0
@sampleIdLoop:
move.b (a0)+,(a2)+
dbra d0,@sampleIdLoop ; load sample id table
move.l a1,d0 ; d0 = song address
add.l #$100,d0 ; bypass sample id table
moveq #0,d2
move.w $FC(a1),d2 ; get sample data size
rol.w #8,d2 ; revert endianess
lsl.l #8,d2 ; pass to 24 bits
add.l d2,d0 ; bypass samples data
addq.l #4,d0 ; bypass music data size field
move.l #$A00104,a2 ; XGM base parameters address
move.b d0,0(a2) ; low byte
lsr.l #8,d0
move.b d0,1(a2) ; med low byte
lsr.l #8,d0
move.b d0,2(a2) ; med high byte
lsr.l #8,d0
move.b d0,3(a2) ; high byte
or.b #$40,($A00100) ; send play XGM command
move.w #$000,($A11100) ; release the Z80 bus
end sub
declare asm sub xgm_resumePlayMusic()
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
NOP
NOP
NOP
NOP
NOP
or.b #$20,($A00100) ; send resume play command
move.w #$000,($A11100) ; release the Z80 bus
end sub
declare asm sub xgm_stopPlayMusic()
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
NOP
NOP
NOP
NOP
NOP
or.b #$10,($A00100) ; send stop play command
move.w #$000,($A11100) ; release the Z80 bus
end sub
declare asm function xgm_isPlayingPCM(d0.w as integer)
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
NOP
NOP
NOP
NOP
NOP
and.b ($A00102),d0 ; get channel playing status
move.w #$000,($A11100) ; release the Z80 bus
end function
declare asm sub xgm_playPCM()
; a1 should point on PCM sample
; d1 should contains PCM length
; d2 should contains channel and priority informations: (prio << 4) | channel
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
move.l (__LONG_pcmid),d0
lsl.l #2,d0
lea $A01C00,a0
adda.l d0,a0 ; a0 point on id table entry
move.l a1,d0 ; d0 = sample address
lsr.l #8,d0 ; get sample address (high byte)
move.b d0,(a0)+
lsr.w #8,d0 ; get sample address (low byte)
move.b d0,(a0)+
lsr.l #8,d1 ; get sample length (high byte)
move.b d1,(a0)+
lsr.w #8,d1 ; get sample length (low byte)
move.b d1,(a0)+
move.l d2,d0
and.l #3,d0 ; d0 = channel number
lea $A00100,a0
moveq #1,d1
lsl.l d0,d1 ; d1 = channel shift command
move.b d1,(a0) ; set PCM play command
lea $A00108,a0
add.l d0,d0
adda.l d0,a0 ; a0 point on channel info
move.l d2,d0
lsr.l #4,d0
and.l #$F,d0 ; d0 = priority
move.b d0,(a0)+ ; set priority
move.l (__LONG_pcmid),d0 ; d0 = PCM id
move.b d0,(a0) ; set PCM id
addq.l #1,d0
and.l #$FF,d0
or.l #$40,d0 ; id < 0x40 are reserved for music
move.l d0,(__LONG_pcmid) ; pass to next id
move.w #$000,($A11100) ; release the Z80 bus
end sub
declare asm sub xgm_stopPCM()
; d2 should contains channel number
move.w #$100,($A11100) ; Send the Z80 a bus request
move.w #$100,($A11200)
move.l d2,d0
and.l #3,d0 ; d0 = channel number
lea $A00100,a0
moveq #1,d1
lsl.l d0,d1 ; d1 = channel shift command
move.b d1,(a0) ; set PCM play command
lea $A00108,a0
add.l d0,d0
adda.l d0,a0 ; a0 point on channel info
moveq #0,d0
move.b d0,(a0)+ ; set priority
move.b d0,(a0) ; set PCM id
move.w #$000,($A11100) ; release the Z80 bus
end sub
asm
Z80drv: ; Z80 XGM driver
INCBIN "soundstef\z80_xgm.bin"
Z80drv_end:
align 256
NULLpcm:
INCBIN "soundstef\null.raw"
NULLpcm_end:
align 256
XGMsong:
INCBIN "soundstef\sor2.xgc"
align 256
LOOPpcm:
INCBIN "soundstef\loop.raw"
LOOPpcm_end:
align 256
HATpcm:
INCBIN "soundstef\hat.raw"
HATpcm_end:
align 256
SNAREpcm:
INCBIN "soundstef\snare.raw"
SNAREpcm_end:
end asm
Bon ben voila, je suis bon pour utiliser ton driver et ta méthode !
Si un jour une cartouche MD Papi Commando voit le jour, soit assuré d'avoir ton nom dans les credits !
Sinon je confirme qu'il faut mettre une "pause" entre chaque lecture sinon ta routine va jouer la dernière lecture si tu déclares tout en continue ( en tout cas avec BEX ! )
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Bravo et merci pour le credit :p
J'ai corrigé le problème qui faisait que tu ne pouvais pas jouer plusieurs SFX en même temps (sans mettre de sleep), faut que tu reprennes les méthodes xgm_playPCM et xgm_stopPCM depuis mon fichier test.bex et normalement c'est ok :)
J'ai corrigé le problème qui faisait que tu ne pouvais pas jouer plusieurs SFX en même temps (sans mettre de sleep), faut que tu reprennes les méthodes xgm_playPCM et xgm_stopPCM depuis mon fichier test.bex et normalement c'est ok :)
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Ouiiiii je viens de voir Stef !
Je l'ai corrigé direct dans la routine ASM, t'as vu je gère hein !!
Je ne connaissais pas cet OPcode encore ( j'en connais pas des masses encore !! ) mais c'est bon à savoir.
Merci !
Je l'ai corrigé direct dans la routine ASM, t'as vu je gère hein !!
Je ne connaissais pas cet OPcode encore ( j'en connais pas des masses encore !! ) mais c'est bon à savoir.
Merci !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Haha, ouais tu commences à gérer l'asm :p
En gros le move remplace la valeur alors que le or permet de mettre certains bit à 1 tout en préservant les autres.
En gros le move remplace la valeur alors que le or permet de mettre certains bit à 1 tout en préservant les autres.
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
J'ai commencé à condenser ta routine dans un seul ( ou plusieurs ) fichier .ASM afin de pouvoir simplifier l'usage.
J'ai déjà intégré le chargement du driver Z80 dans un fichier .ASM, ça tourne sans problème.
Ce que je voudrais faire, c'est de pouvoir lancer la routine en une seule fonction :
Fonction Playson N°Son, N°Canal
J'ai dans l'idée de déclarer avec un bus de donnée d0 ( ou autre pour éviter des conflits ) le No de BANK :
Start:
cmpi.b #$01,d0
beq.w PlayXGM1;Son N°1
Jmp Fin:
fin:
rts
On intégrera tous les sons et musiques du projet direct dans le code .ASM.
Bon, j'ai l'idée en gros en tête ... Reste à la réaliser ! ^^
J'ai déjà intégré le chargement du driver Z80 dans un fichier .ASM, ça tourne sans problème.
Ce que je voudrais faire, c'est de pouvoir lancer la routine en une seule fonction :
Fonction Playson N°Son, N°Canal
J'ai dans l'idée de déclarer avec un bus de donnée d0 ( ou autre pour éviter des conflits ) le No de BANK :
Start:
cmpi.b #$01,d0
beq.w PlayXGM1;Son N°1
Jmp Fin:
fin:
rts
On intégrera tous les sons et musiques du projet direct dans le code .ASM.
Bon, j'ai l'idée en gros en tête ... Reste à la réaliser ! ^^
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
J'aurai une question a propos du format .vgm :
Étant donné que toutes mes ressources sonores sont en .WAV, est il possible de convertir certaine en .vgm ( les musiques ) ou peut on tout gérer en .pcm ( sons et musiques ) ?
Merci !
Étant donné que toutes mes ressources sonores sont en .WAV, est il possible de convertir certaine en .vgm ( les musiques ) ou peut on tout gérer en .pcm ( sons et musiques ) ?
Merci !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Si tu as tout en wav alors tu peux tout gérer via le pcm, le problème du wav c'est la taille que ça va te prendre en rom, une musique de 2mn en WAV va te prendre 1.7 Mo !
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Et oui, c'est le problème d'une conversion d'un jeu original venant d'un PC ...
Sinon j'ai réussi à intégrer 3 musiques et les faire jouer en boucle grace à tes fonctions.
La qualité n'est pas tip top par contre contrairement aux exemples RAW que tu as donné, ce que je trouve bizarre ... J'ai utilisé l'outil wavtoraw ( wavtoraw X.wav X.raw 14000 ) avec l'original en WAV, si tu as un conseil pour avoir un rendu plus net ...
Enfin bon, ça reste quand même très acceptable.
Demain je m'attaque aux SFX générique du jeu et après je pourrai tout intégrer au projet ! :)
A bientôt !
Sinon j'ai réussi à intégrer 3 musiques et les faire jouer en boucle grace à tes fonctions.
La qualité n'est pas tip top par contre contrairement aux exemples RAW que tu as donné, ce que je trouve bizarre ... J'ai utilisé l'outil wavtoraw ( wavtoraw X.wav X.raw 14000 ) avec l'original en WAV, si tu as un conseil pour avoir un rendu plus net ...
Enfin bon, ça reste quand même très acceptable.
Demain je m'attaque aux SFX générique du jeu et après je pourrai tout intégrer au projet ! :)
A bientôt !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
vous vous mariez quand tout les deux ???
je suis toujours autant émerveillé de tant de connaissance... bravo les gars !!
je suis toujours autant émerveillé de tant de connaissance... bravo les gars !!
chiss- Docteur agrégé **
- Nombre de messages : 5291
Age : 51
Localisation : Villars les dombes , le parc des oiseaux(01)
Date d'inscription : 04/05/2008
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
oui on va créer des couples
L'amour est dans le code ????
L'amour est dans le code ????
_______________________________________________________
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Bonjour à tous,
Ce matin j'ai intégré toutes les nouvelles routines en jeu !
On peut dire que ça change et apporte une nouvelle dimension !!
J'ai ajouté 4 musiques originales, quelques sons de tirs, de morts et de bonus.
Je n'ai pas tout intégré en .ASM, le code devient trop complexe pour moi en l'état, par contre, le driver dispose de son propre fichier .ASM.
Concernant les sons, il y a 4 canaux pour chacun à savoir :
- Musiques : Canal 0
- Sons Papi : Canal 1
- Sons Ennemis : Canal 2
- Sons Jeu divers : Canal 3
Voici un exemple en vidéo :
(https://www.youtube.com/watch?v=zMg0byEK1yY)
Encore un grand merci à Stef pour son aide précieuse !
Ce matin j'ai intégré toutes les nouvelles routines en jeu !
On peut dire que ça change et apporte une nouvelle dimension !!
J'ai ajouté 4 musiques originales, quelques sons de tirs, de morts et de bonus.
Je n'ai pas tout intégré en .ASM, le code devient trop complexe pour moi en l'état, par contre, le driver dispose de son propre fichier .ASM.
Concernant les sons, il y a 4 canaux pour chacun à savoir :
- Musiques : Canal 0
- Sons Papi : Canal 1
- Sons Ennemis : Canal 2
- Sons Jeu divers : Canal 3
Voici un exemple en vidéo :
(https://www.youtube.com/watch?v=zMg0byEK1yY)
Encore un grand merci à Stef pour son aide précieuse !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
bravo, quelle evolution ! j'aime bien les nouvelles animations
manque plus qu'une police sympa
merci à Stef pour sa contribution à Bex, qui va changer les choses au niveau sonore pour cet IDE.
manque plus qu'une police sympa
merci à Stef pour sa contribution à Bex, qui va changer les choses au niveau sonore pour cet IDE.
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Ca rend bcp mieux bravo, par contre dans la vidéo on voit toujours quelques soucis au niveau de la détection des collisions .
Mais ça avance bien ..
Mais ça avance bien ..
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
drfloyd a écrit:oui on va créer des couples
L'amour est dans le code ????
chiss- Docteur agrégé **
- Nombre de messages : 5291
Age : 51
Localisation : Villars les dombes , le parc des oiseaux(01)
Date d'inscription : 04/05/2008
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Vetea a écrit:Et oui, c'est le problème d'une conversion d'un jeu original venant d'un PC ...
Sinon j'ai réussi à intégrer 3 musiques et les faire jouer en boucle grace à tes fonctions.
La qualité n'est pas tip top par contre contrairement aux exemples RAW que tu as donné, ce que je trouve bizarre ... J'ai utilisé l'outil wavtoraw ( wavtoraw X.wav X.raw 14000 ) avec l'original en WAV, si tu as un conseil pour avoir un rendu plus net ...
Enfin bon, ça reste quand même très acceptable.
Demain je m'attaque aux SFX générique du jeu et après je pourrai tout intégrer au projet ! :)
A bientôt !
Pour la qualité oui c'est normal :-/ En fait l'outil wavtoraw que j'ai écrit fait une conversion très simple, l'opération de resampling utilise un filtre "nearest" ou "linear interpolation" selon le cas ce qui est très... médiocre qualitativement parlant :p Dans tout les cas, si ton wav de base n'est pas à 14 Khz tu auras une dégradation assez importante de la qualité avec la conversion. Du coup je te conseille de passer par un outil spécialisé pour ça, genre wavosaur (gratuit) qui te permet de resampler à 14 Khz avec des filtres plus complexes et de conserver une bonne qualité... et ensuite tu peux exporter directement en raw (export binaire) en 8 bits signé
Après faut voir ce que fait BEX en interne, s'il s'amuse à interrompre le Z80 ça impactera sur la qualité.
De même dans ton code, si tu transfères des données graphiques en utilisant le DMA pendant la période active (en dehors du vblank) tu dégrades la qualité des samples car le Z80 va être interrompu par moment.
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Je te confirme que la dégradation ne vient pas par le DMA, puisque tes samples d'origine sont d'excellente qualité même avec mon projet.
Il s'agit plutôt d'un resampling médiocre.
Je vais tacher d'y remédier de manière plus rigoureuse !
Merci !
Il s'agit plutôt d'un resampling médiocre.
Je vais tacher d'y remédier de manière plus rigoureuse !
Merci !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Bonjour à tous,
J'ai pas mal bossé ce soir sur le projet.
J'ai commencé à un peu embellir un peu le jeu avec quelques effets de Scroll, démarrage partie, stage terminé, etc ...
Bon, c'est encore un peu succint, mais on a un petit proto bien sympa à jouer je trouve.
Avec en plus les musiques et sons en jeu, ça apporte un grand plus !
Voici la Rom :
https://dl.dropboxusercontent.com/u/108143465/Papi%20Commando%20MD.bin
Amusez vous bien !
J'ai pas mal bossé ce soir sur le projet.
J'ai commencé à un peu embellir un peu le jeu avec quelques effets de Scroll, démarrage partie, stage terminé, etc ...
Bon, c'est encore un peu succint, mais on a un petit proto bien sympa à jouer je trouve.
Avec en plus les musiques et sons en jeu, ça apporte un grand plus !
Voici la Rom :
https://dl.dropboxusercontent.com/u/108143465/Papi%20Commando%20MD.bin
Amusez vous bien !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Gestion des vies en cours avec un mode God pendant quelque seconde ( papi clignote )
Si une personne possède une MD, j'aimerai qu'elle teste la nouvelle ROM pour tester son bon fonctionnement. Merci !
Si une personne possède une MD, j'aimerai qu'elle teste la nouvelle ROM pour tester son bon fonctionnement. Merci !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Salut !
Les travaux de l'après midi :
- Intégration du célébre logo "SEGA" avec le petit son qui va avec !
( Je ne suis pas arrivé à trouver le Sega "Voice" en .VGM ... Les seuls que j'ai pu trouvé ne sont pas compatible avec l'outil de conversion .Xgc de stef. )
https://www.youtube.com/watch?v=5NpBcLHZHkg
- Intégration de la vie de Papi en cours :
Le moteur de gestion des vies est en cours de codage.
Je souhaite aussi créer un outil avec QB64 pour les effets de Fading en jouant avec les couleurs de la palette.
Je trouve que c'est plus classe d'afficher les screen de cette manière que la manière brute habituelle ...
Je pense que c'est possible en full ASM, mais j'ai en tête une méthode plus simple nécessitant que du copier coller.
Il faudra juste spécifier le tramage du Fading ( en "n" Pass ) et de la déduire pour chaque couleur de la palette ( jusqu'à 15 ) les couleurs intermédiaires ! Simple non ?
QB64 ayant un convertisseur Hex / Dec intégré, j'aurai juste à rentrer les valeurs par défaut des couleurs initiales de la palette, et l'outil fera le calcul de toutes les palettes intermédiaires nécessaire pour le Fading.
Je pense que cela ne devra pas être trop long à réaliser.
A bientôt !
Les travaux de l'après midi :
- Intégration du célébre logo "SEGA" avec le petit son qui va avec !
( Je ne suis pas arrivé à trouver le Sega "Voice" en .VGM ... Les seuls que j'ai pu trouvé ne sont pas compatible avec l'outil de conversion .Xgc de stef. )
https://www.youtube.com/watch?v=5NpBcLHZHkg
- Intégration de la vie de Papi en cours :
Le moteur de gestion des vies est en cours de codage.
Je souhaite aussi créer un outil avec QB64 pour les effets de Fading en jouant avec les couleurs de la palette.
Je trouve que c'est plus classe d'afficher les screen de cette manière que la manière brute habituelle ...
Je pense que c'est possible en full ASM, mais j'ai en tête une méthode plus simple nécessitant que du copier coller.
Il faudra juste spécifier le tramage du Fading ( en "n" Pass ) et de la déduire pour chaque couleur de la palette ( jusqu'à 15 ) les couleurs intermédiaires ! Simple non ?
QB64 ayant un convertisseur Hex / Dec intégré, j'aurai juste à rentrer les valeurs par défaut des couleurs initiales de la palette, et l'outil fera le calcul de toutes les palettes intermédiaires nécessaire pour le Fading.
Je pense que cela ne devra pas être trop long à réaliser.
A bientôt !
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Pour un fade_in/out efficace (ACA qui rend bien), faut séparer les composantes RVB de chaque couleur et les décrémenter de 1 pour le fade_out, et le contraire pour le in .
Ca c'est une méthode classique, le meilleurs rendu avec cette méthode et de normaliser les valeurs de chaque composantes .
Par exemple si tu as 3 pour le vert 5 pour le bleu et 1 pour le rouge, il faut réduire seulement le bleu jusqu'au vert, ensuite seulement le bleu et le vert jusqu'au rouge, puis les 3 jusqu'à 0 ..
Ca évite un écran qui vire vert la composante qui a la valeur la plus haute lors du fade ..
Ca c'est une méthode classique, le meilleurs rendu avec cette méthode et de normaliser les valeurs de chaque composantes .
Par exemple si tu as 3 pour le vert 5 pour le bleu et 1 pour le rouge, il faut réduire seulement le bleu jusqu'au vert, ensuite seulement le bleu et le vert jusqu'au rouge, puis les 3 jusqu'à 0 ..
Ca évite un écran qui vire vert la composante qui a la valeur la plus haute lors du fade ..
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
Papi Commando MegaDrive, vidéo de démonstration exclusive !
Et voila, après pas mal d'heures de codage binaire, basic, j'en passe et des meilleures, voici une super vidéo de démonstration de mes derniers travaux :
https://www.youtube.com/watch?v=my-lqGVCpy8
Vous remarquerez les effets de fading lors de l'écran de menu ainsi que du nouveau écran intermédiaire entre chaque stage.
Cela donne un rendu un peu plus soigné et plus "Jeu Megadrive" !
Ca avance les amis !!
Invité- Invité
Re: [ TERMINE ] - Papi Commando Megadrive Edition !
aaah, alors t'as utilisé quoi comme technique pour les fade ??
Invité- Invité
Page 11 sur 34 • 1 ... 7 ... 10, 11, 12 ... 22 ... 34
Sujets similaires
» [ TERMINE ] - Papi Commando Megadrive Edition !
» [ WIP ] - Papi Commando Tennis Megadrive - SGDK
» Papi Commando - Arcade edition !
» [VDS] Papi commando megadrive :)
» Papi Commando - RAMPAGE ! *Megadrive*
» [ WIP ] - Papi Commando Tennis Megadrive - SGDK
» Papi Commando - Arcade edition !
» [VDS] Papi commando megadrive :)
» Papi Commando - RAMPAGE ! *Megadrive*
Page 11 sur 34
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum