joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.81k stars 383 forks source link

MT32 emulation problem with Prince of Persia2 #1810

Open dogos1 opened 4 years ago

dogos1 commented 4 years ago

Describe the bug Sound of MT32 emulation is very weird(very tiny sound of MT32 or nosound) when I run Prince of Persia2 in Dosbox

To Reproduce Steps to reproduce the behavior: I download Prince of Persia 2 v1.1 from below site which is latest version https://popuw.com/download2.html unzip "pop2v11.zip" then launch "prince.exe" with dosbox-x(before gameplay I run setup.exe and select "Roland MT-32/LAPC-1/CM-32L"-"MPU-401 MIDI interface"-330h of I/Q Port- 2 IRQ in Music Synthesizer setting)

Expected behavior I really want to hear normal sound of MT32 emulation whenever I play PoP2 v1.1 or older version like other games(Fate of Atlantis,X-wing,Princess Maker2) which has no problem with MT32 emulation in Dosbox-x 0.83.4

Screenshots Normal sound of MT32 emulations in DOSBOX-x X-wing Fate of Atlantis Princess Maker2

Problematic sound of MT32 emulation Prince of Persia 2 The Shadow and the Flame

Environment (please complete the following information):

DOSBOX-X 0.83.4 64bit Windows 8.1 Korean Edition.

DOSBOX-X configuration(MIDI)


mpu401                = intelligent
mpubase               = 330
mididevice            = mt32
midiconfig            = 0
samplerate            = 44100
mpuirq                = 2
mt32.romdir           = C:\Users\rom
mt32.reverse.stereo   = off
mt32.verbose          = off
mt32.thread           = off
mt32.dac              = auto
mt32.reverb.mode      = auto
mt32.reverb.time      = 5
mt32.reverb.level     = 3
mt32.partials         = 32
fluid.driver          = default
fluid.soundfont       = 
fluid.samplerate      = 48000
fluid.gain            = .6
fluid.polyphony       = 256
fluid.cores           = default
fluid.periods         = default
fluid.periodsize      = default
fluid.reverb          = yes
fluid.chorus          = yes
fluid.reverb.roomsize = .61
fluid.reverb.damping  = .23
fluid.reverb.width    = .76
fluid.reverb.level    = .57
fluid.chorus.number   = 3
fluid.chorus.level    = 1.2
fluid.chorus.speed    = .3
fluid.chorus.depth    = 8.0
fluid.chorus.type     = 0
rderooy commented 4 years ago

I had the game set for mididevice=fluidsynth + sbtype=sbpro1

Because according to https://en.wikipedia.org/wiki/List_of_MT-32-compatible_computer_games the game was composed on a Roland SC-55.

Running it with mididevice=mt32 it does indeed sound weird. But then I switched from my default cm32l ROM set to the mt32-old ROM set and it sounds fine again. So make sure your mt32.romdir points to a directory with ONLY the mt32-old ROMs.

rderooy commented 4 years ago

Looking around, I also found this which may be of interest: https://www.vogons.org/viewtopic.php?t=32668

p.s. I have the Prince of Persia Collection CD which includes both POP1 and POP2.

dogos1 commented 4 years ago

Thank you for your reply. I always use roms folder which contains only two file of "MT32_PCM.ROM" and "MT32_CONTROL.ROM" for MT-32 Control and PCM ROM file and two files have below hash value, I think which is correct MT32 ROM file.

Version=1
Format=MD5
9513fec4f09a7d327748340ce3a2a59b MT32_CONTROL.ROM
89e42e386e82e0cacb4a2704a03706ca MT32_PCM.ROM

I followed the link(overwrite "MIDI.DRV" and MMPU401.DRV") which you introduced to me, But this workaround doesn't solve my problem. I found that initial release of PoP2 works perfect in MT32 emulation.But all later version(v1.0 and v1.1) of PoP2 is always sound weird(very tiny sound or nosound) with MT32 emulation.

https://www.dropbox.com/s/vk1iytgebn1pbuy/bandicam%202020-08-23%2022-46-22-753.avi?dl=0

rderooy commented 4 years ago

Are you sure you don't have CM32L roms in that same directory? As mentioned on the Wiki MIDI page, if you point mt32.romdir to a directory with both MT32 and CM32L roms, it will use the later.

In any case, I have the 1.1 CD-ROM version, and I needed to use the mt32 old roms as the cm32l roms caused problems with POP2.

dogos1 commented 4 years ago

You can check that there is only two rom file( "MT32_PCM.ROM" and "MT32_CONTROL.ROM") in roms folder from dropbox link which I created in previous comment.(0:00-0:05) I also have CD-ROM version of PoP2 which contains 1.1 version But It also sound weird with MT32 emulation.

rderooy commented 4 years ago

@dogos1 I think your using the wrong MT32_CONTROL.ROM. That is a ROM from a MT-32 New or a patched version.

You need the following MT-32 OLD ROM: 5626206284b22c2734f3e9efefcd2675 MT32_CONTROL.1987-10-07.v1.07.ROM

Obviously rename (or symlink) it to MT32_CONTROL.ROM

dogos1 commented 4 years ago

I replaced MT32_CONTROL.ROM with MT32 old rom which has below hash value


DIR roms\
5626206284b22c2734f3e9efefcd2675 MT32_CONTROL.ROM
89e42e386e82e0cacb4a2704a03706ca MT32_PCM.ROM

But It also failed to solve problem of weird sound with MT32 Emulation.

rderooy commented 4 years ago

@dogos1

Here are some recordings that I did from my system. Unfortunately I had to ZIP them, as github does not allow any sound file types to be attached.

This is a recording using the DOSBox-X integrated MT-32 support using the MT-32 Old ROMs. pop2_mt32.zip

This is a recording again using the DOSBox-X integrated MT-32 support, but using the CM-32L ROMs. pop2_cm32l.zip

Strangely this recording now sounds fine, perhaps the other time I ran into some timing issue on game start which caused the CM-32L initialisation to get messed up.

This is a recording where I have setup DOSBox-X to use external (ALSA) MIDI, which then gets picked up by the Munt MT-32 emulator. Again using MT-32 Old ROMs.

pop2_munt_external_mt32.zip

This is a another recording with the Munt MT-32 emulator, but this time with the CM-32L rom set. pop2_munt_external_cm32l.zip

p.s. For some reason, the first recording has lots of noise (hiss, crackling). This sometimes happens on my system. Most often when uses the internal DOSBox-X FluidSynth support, but does not happen when I play MIDI files directly from the desktop. The second recording with the external Munt process is also much cleaner.

rderooy commented 4 years ago

For comparison, here is the General Midi version. This is using the Internal FluidSynth support, with a GM+GS soundfont (https://musical-artifacts.com/artifacts/1229)

pop2_gm.zip

This suffers from noise also. Also the sound-blaster Voice over is way too low in volume compared to the MIDI. This is a common problem with the fluidsynth MIDI support. The fix for this is to set fluid.gain=.2. Not sure why the DOSBox-X fluidsynth defaults to .6 since .2 is the default from upstream fluidsynth.

dogos1 commented 4 years ago

I tried to use FluidR3 soundfont which you inform of. Videoclip of POP2 with FluidR3 soundfont It works well in initial release of POP2 as I tried to it with MT32 emulation yesterday,But When I run POP2 1.1 version, It doesn't any sound at all and even suddenly halted, And I tested POP initial release and 1.1 version in DOSBOX-ECE. It also sound weird in POP2 1.1 version with MT32 emulation.

rderooy commented 4 years ago

@dogos1 what did you have mididevice= set to in that video?

Your intro sounds ok, it is when you load the save file that things seem to be messed up. Could you post you save file for me to try?

dogos1 commented 4 years ago

POP2(initial release) savefile

Below code is DOSBOX-X configuration(MIDI) of mine

mpu401                = intelligent
mpubase               = 330
mididevice            = fluidsynth
midiconfig            = C:\Downloads\roms\FluidR3_GM_GS.sf2
samplerate            = 44100
mpuirq                = 2
mt32.romdir           = C:\Downloads\roms
mt32.reverse.stereo   = off
mt32.verbose          = off
mt32.thread           = off
mt32.dac              = auto
mt32.reverb.mode      = auto
mt32.reverb.time      = 5
mt32.reverb.level     = 3
mt32.partials         = 32
fluid.driver          = default
fluid.soundfont       = C:\Downloads\roms\FluidR3_GM_GS.sf2
fluid.samplerate      = 48000
fluid.gain            = .2
fluid.polyphony       = 256
fluid.cores           = default
fluid.periods         = default
fluid.periodsize      = default
fluid.reverb          = yes
fluid.chorus          = yes
fluid.reverb.roomsize = .61
fluid.reverb.damping  = .23
fluid.reverb.width    = .76
fluid.reverb.level    = .57
fluid.chorus.number   = 3
fluid.chorus.level    = 1.2
fluid.chorus.speed    = .3
fluid.chorus.depth    = 8.0
fluid.chorus.type     = 0
rderooy commented 4 years ago

I tried your "last" save file location.

With V1.1 of the game configured for General Midi, and DOSBox-X configured with mididevice=fluidsynth and the GM+GS soundfont:

This is also what the above Vogons post mentioned, the V1.1 CD-ROM release removes the in-game General Midi sounds.

With V1.1 of the game configured for MT-32, and DOSBox-X configured with mididevice=mt32 (using the CM-32L roms):

With V1.1 of the game configured for MT-32, and DOSBox-X configured with mididevice=alsa and midiconfig=128:0 and running the separate Munt MT-32 emulator (using the CM-32L roms):

Note: I did not yet try that MIDI patch from the Vogons post myself.

rderooy commented 4 years ago

I tried "Fix 2" from the Vogons post, and it made no difference, no GM sound during gameplay. I then figured that it perhaps depends on "Fix 1", so I also applied that, but still no GM sound during gameplay with my V1.1 of the game.

dogos1 commented 4 years ago

I uninstalled "CoolSoft VirtualMIDISynth" which I have installed a year ago. Finally, I succeed to play POP v1.0 and v1.1 as well as initial release of POP2 with decent MT32 emulation. I think VirtualMIDISynth maybe conflicted with MT32 device which is emulated by Dosbox application.

Videoclip of POP2 v1.0 and v1.1

I also tried to play POP v1.1 with FluidR3 soundfont,and As you mentioned It is impossible to hear any MIDI sound after intro cutscene.

rderooy commented 4 years ago

There seem to be a couple of v1.1 CD releases. I have the 1998 release which includes POP1, POP2 and a video with the making of POP3D. But there was apparently an earlier 1995 compilation release and perhaps the fixes are meant for that 1995 version.

1995 version: https://www.mobygames.com/game/prince-of-persia-cd-collection https://archive.org/details/Redump.org38188

1998 version: https://www.mobygames.com/game/prince-of-persia-collection https://archive.org/details/PrinceOfPersiaCollectionLimitedEditionUSA

rderooy commented 4 years ago

Correction, the 1995 version is v1.0 and General MIDI works during gameplay