GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

[ 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 Précédent  1 ... 7 ... 10, 11, 12 ... 22 ... 34  Suivant

Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mar 3 Mar 2015 - 22:51

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 Wink

Stef
Interne
Interne

Nombre de messages : 5087
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mar 3 Mar 2015 - 23:15

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 !! Mr. Green Mr. Green
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 2:06

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.

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 ! MDR Sad

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 ! Wink

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.
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 10:44

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 !! Mr. Green Mr. Green

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 Wink
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 11:02

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 ! MDR Sad

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 ! Wink

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 Wink 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" Wink


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 Wink
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 11:24

Voila qui est plus clair pour moi ( et pour les autres aussi je pense !! Wink )
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 ! :)
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 11:30

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 ?
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 11:43

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 :

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
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 11:55

Voila j'ai réussi à tout intégrer dans un code BEX "classique" :

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 ! Wink

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 ! )
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 12:00

Bravo cheers 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 :)
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 12:01

Ouiiiii je viens de voir Stef !
Je l'ai corrigé direct dans la routine ASM, t'as vu je gère hein !! MDR MDR Razz
Je ne connaissais pas cet OPcode encore ( j'en connais pas des masses encore !! ) mais c'est bon à savoir.
Merci !
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 12:10

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.
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 13:17

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 ! ^^
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Mer 4 Mar 2015 - 16:00

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 ! Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Mer 4 Mar 2015 - 22:18

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
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Jeu 5 Mar 2015 - 0:11

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 ... Wink
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 !
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par chiss Jeu 5 Mar 2015 - 10:43

vous vous mariez quand tout les deux ??? Mr. Green

je suis toujours autant émerveillé de tant de connaissance... bravo les gars !! cheers
chiss
chiss
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 5306
Age : 51
Localisation : Villars les dombes , le parc des oiseaux(01)
Date d'inscription : 04/05/2008

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par drfloyd Jeu 5 Mar 2015 - 11:46

oui on va créer des couples

L'amour est dans le code ????

_______________________________________________________
[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184739
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Jeu 5 Mar 2015 - 11:48

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 ! thumleft
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par F.L Jeu 5 Mar 2015 - 13:22

bravo, quelle evolution ! j'aime bien les nouvelles animations
manque plus qu'une police sympa Wink
merci à Stef pour sa contribution à Bex, qui va changer les choses au niveau sonore pour cet IDE.
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3432
Age : 49
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Jeu 5 Mar 2015 - 14:36

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 ..
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par chiss Jeu 5 Mar 2015 - 17:50

drfloyd a écrit:oui on va créer des couples

L'amour est dans le code ????

MDR MDR
chiss
chiss
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 5306
Age : 51
Localisation : Villars les dombes , le parc des oiseaux(01)
Date d'inscription : 04/05/2008

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Stef Jeu 5 Mar 2015 - 23:02

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 ... Wink
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é Wink
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
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Jeu 5 Mar 2015 - 23:22

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 ! Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 2:18

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. Wink
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 ! rambo rambo
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 12:44

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 ! Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 17:32

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 :
[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 271026881

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 ? Wink
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 !
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 18:29

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 ..
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 20:54

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 14052305121513261112259619-300x206

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 !! cheers cheers
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 21:19

Super, continue ! Very Happy
avatar
Invité
Invité


Revenir en haut Aller en bas

[ TERMINE ] - Papi Commando Megadrive Edition ! - Page 11 Empty Re: [ TERMINE ] - Papi Commando Megadrive Edition !

Message par Invité Ven 6 Mar 2015 - 22:25

aaah, alors t'as utilisé quoi comme technique pour les fade ??
avatar
Invité
Invité


Revenir en haut Aller en bas

Page 11 sur 34 Précédent  1 ... 7 ... 10, 11, 12 ... 22 ... 34  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum