VOGONS


First post, by AdamP

User metadata
Rank Member
Rank
Member

Hi,

It's been a while since I posted here. I'm having difficulty in getting Zombie Wars to work properly in Windows for Workgroups 3.11 on DOSBox: I cannot get the music to play properly. I'm using MPU-401 (I tried SB16 Synth, but I get the same problems). I also tried the Super Sapi driver, but it didn't work on the game, and even the Adlib driver, which for some reason doesn't work at all. Depending on the track, the music "hangs", plays for a couple of seconds and then jumps to the end, or plays the start in a loop. I did get a message saying it may not work properly with the default MIDI Mapper setting, but I can't find anything on it in the help or the manual, so I haven't the foggiest what the "correct" MIDI Mapper setup is for this game 🙁. I have 2 other Windows 3.1 games: Operation: Inner Space, and Gearheads, whose music work fine. I do have a couple of Windows 98 machines, and it works fine on them (does Windows 9x have MIDI Mapper settings? I don't think it does).

I do remember it working on a real Windows 3.1 machine donkey's years ago, so is this a problem with DOSBox (I think I sometimes get some page fault in DOSBox on quitting Windows after running the game)? Or am I missing something? Thanks.

DOSBox settings:

# This is the configurationfile for DOSBox 0.74. (Please use the latest version of DOSBox)
# Lines starting with a # are commentlines and are ignored by DOSBox.
# They are used to (briefly) document the effect of each option.

[sdl]
# fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back)
# fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox.
# fullresolution: What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
# Using your monitor's native resolution with aspect=true might give the best results.
# If you end up with small window on a large screen, try an output different from surface.
# windowresolution: Scale the window to this size IF the output device supports hardware scaling.
# (output=surface does not!)
# output: What video system to use for output.
# Possible values: surface, overlay, opengl, openglnb, ddraw.
# autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)
# sensitivity: Mouse sensitivity.
# waitonerror: Wait before closing the console if dosbox has an error.
# priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized.
# pause is only valid for the second entry.
# Possible values: lowest, lower, normal, higher, highest, pause.
# mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value.
# usescancodes: Avoid usage of symkeys, might not work on all operating systems.

fullscreen=true
fulldouble=false
fullresolution=original
windowresolution=original
output=opengl
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true

[dosbox]
# language: Select another language file.
# machine: The type of machine tries to emulate.
# Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe.
# captures: Directory where things like wave, midi, screenshot get captured.
# memsize: Amount of memory DOSBox has in megabytes.
# This value is best left at its default to avoid problems with some games,
# though few games might require a higher value.
# There is generally no speed advantage when raising this value.

language=
machine=svga_s3
captures=capture
memsize=31

[render]
# frameskip: How many frames DOSBox skips before drawing one.
# aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!.
# scaler: Scaler used to enlarge/enhance low resolution modes.
# If 'forced' is appended, then the scaler will be used even if the result might not be desired.
# Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.

frameskip=0
aspect=false
scaler=hq3x
Show last 196 lines

[cpu]
# core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
# Possible values: auto, dynamic, normal, simple.
# cputype: CPU Type used in emulation. auto is the fastest choice.
# Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch.
# cycles: Amount of instructions DOSBox tries to emulate each millisecond.
# Setting this value too high results in sound dropouts and lags.
# Cycles can be set in 3 ways:
# 'auto' tries to guess what a game needs.
# It usually works, but can fail for certain games.
# 'fixed #number' will set a fixed amount of cycles. This is what you usually need if 'auto' fails.
# (Example: fixed 4000).
# 'max' will allocate as much cycles as your computer is able to handle.
#
# Possible values: auto, fixed, max.
# cycleup: Amount of cycles to decrease/increase with keycombo.(CTRL-F11/CTRL-F12)
# cycledown: Setting it lower than 100 will be a percentage.

core=auto
cputype=auto
cycles=max
cycleup=10
cycledown=20

[mixer]
# nosound: Enable silent mode, sound is still emulated though.
# rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged.
# Possible values: 1024, 2048, 4096, 8192, 512, 256.
# prebuffer: How many milliseconds of data to keep on top of the blocksize.

nosound=false
rate=44100
blocksize=1024
prebuffer=20

[midi]
# mpu401: Type of MPU-401 to emulate.
# Possible values: intelligent, uart, none.
# mididevice: Device that will receive the MIDI data from MPU-401.
# Possible values: default, win32, alsa, oss, coreaudio, coremidi, none.
# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use.
# See the README/Manual for more details.

mpu401=intelligent
mididevice=default
midiconfig=0

[sblaster]
# sbtype: Type of Soundblaster to emulate. gb is Gameblaster.
# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.
# sbbase: The IO address of the soundblaster.
# Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
# irq: The IRQ number of the soundblaster.
# Possible values: 7, 5, 3, 9, 10, 11, 12.
# dma: The DMA number of the soundblaster.
# Possible values: 1, 5, 0, 3, 6, 7.
# hdma: The High DMA number of the soundblaster.
# Possible values: 1, 5, 0, 3, 6, 7.
# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer.
# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.
# Possible values: auto, cms, opl2, dualopl2, opl3, none.
# oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well).
# Possible values: default, compat, fast.
# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly).
# Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.

sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=44100

[gus]
# gus: Enable the Gravis Ultrasound emulation.
# gusrate: Sample rate of Ultrasound emulation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# gusbase: The IO base address of the Gravis Ultrasound.
# Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.
# gusirq: The IRQ number of the Gravis Ultrasound.
# Possible values: 5, 3, 7, 9, 10, 11, 12.
# gusdma: The DMA channel of the Gravis Ultrasound.
# Possible values: 3, 0, 1, 5, 6, 7.
# ultradir: Path to Ultrasound directory. In this directory
# there should be a MIDI directory that contains
# the patch files for GUS playback. Patch sets used
# with Timidity should work fine.

gus=false
gusrate=44100
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND

[speaker]
# pcspeaker: Enable PC-Speaker emulation.
# pcrate: Sample rate of the PC-Speaker sound generation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.
# Possible values: auto, on, off.
# tandyrate: Sample rate of the Tandy 3-Voice generation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).

pcspeaker=true
pcrate=44100
tandy=off
tandyrate=44100
disney=false

[joystick]
# joysticktype: Type of joystick to emulate: auto (default), none,
# 2axis (supports two joysticks),
# 4axis (supports one joystick, first joystick used),
# 4axis_2 (supports one joystick, second joystick used),
# fcs (Thrustmaster), ch (CH Flightstick).
# none disables joystick emulation.
# auto chooses emulation depending on real joystick(s).
# (Remember to reset dosbox's mapperfile if you saved it earlier)
# Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.
# timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away).
# autofire: continuously fires as long as you keep the button pressed.
# swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks.
# buttonwrap: enable button wrapping at the number of emulated buttons.

joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=false

[serial]
# serial1: set type of device connected to com port.
# Can be disabled, dummy, modem, nullmodem, directserial.
# Additional parameters must be in the same line in the form of
# parameter:value. Parameter for all types is irq (optional).
# for directserial: realport (required), rxdelay (optional).
# (realport:COM1 realport:ttyS0).
# for modem: listenport (optional).
# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
# transparent, port, inhsocket (all optional).
# Example: serial1=modem listenport:5000
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial2: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial3: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial4: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.

serial1=disabled
serial2=disabled
serial3=disabled
serial4=disabled

[dos]
# xms: Enable XMS support.
# ems: Enable EMS support.
# umb: Enable UMB support.
# keyboardlayout: Language code of the keyboard layout (or none).

xms=true
ems=false
umb=true
keyboardlayout=uk166

[ipx]
# ipx: Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

mount C C:\dosgames
mount -cd
mount E E:\ -t cdrom -usecd 0
rem mount A A:\ -t floppy
SET SOUND=C:\SB16
SET IEPPP=C:\MSIE50
C:\SB16\DIAGNOSE /S
C:\SB16\MIXERSET /P /Q
rem ipxnet startserver
rem ipxnet connect 192.168.1.254
rem ipxnet status
C:\

System.ini:

[boot]           
386grabber=vgadib.3gr
oemfonts.fon=vgaoem.fon
fixedfon.fon=vgafix.fon
fonts.fon=vgasys.fon
display.drv=svga256.drv
shell=progman.exe
network.drv=
mouse.drv=mouse.drv
language.dll=langeng.dll
sound.drv=mmsound.drv
comm.drv=comm.drv
system.drv=system.drv
286grabber=vgacolor.2gr
keyboard.drv=keyboard.drv
drivers=mmsystem.dll power.drv msmixmgr.dll winmm16.dll
SCRNSAVE.EXE=C:\WIN31\SSFLYWIN.SCR

[keyboard]
keyboard.dll=kbduk.dll
oemansi.bin=
subtype=
type=4

[boot.description]
aspect=100,96,96
displayinf=OEM0.INF
display.drv=Super VGA 1024x768 256 Small
mouse.drv=Microsoft, or IBM PS/2
language.dll=English (International)
system.drv=MS-DOS System with APM
codepage=437
woafont.fon=English (437)
keyboard.typ=Enhanced 101 or 102 key US and Non US keyboards
network.drv=No Network Installed
secondnet.drv=No Additional Network Installed

[386Enh]
display=vddsvga.386
EGA80WOA.FON=EGA80WOA.FON
EGA40WOA.FON=EGA40WOA.FON
CGA80WOA.FON=CGA80WOA.FON
CGA40WOA.FON=CGA40WOA.FON
SysVMIn2ndBank=FALSE
device=C:\WIN31\SYSTEM\WIN32S\W32S.386
device=dva.386
device=*vpd
mouse=*vmd
woafont=dosapp.fon
COM4Base=02E8
COM4Irq=3
COM3Base=03E8
COM3Irq=4
device=vpmtd.386
device=lpt.386
device=serial.386
device=vcomm.386
device=vtdapi.386
device=vshare.386
device=vcache.386
Show last 180 lines
device=ifsmgr.386
device=lanman10.386
network=*dosnet,*vnetbios
device=vpowerd.386
ebios=*ebios
keyboard=*vkd
device=*vpicd
device=*vtd
device=*reboot
device=*vdmad
device=*vsd
device=*v86mmgr
device=*pageswap
device=*dosmgr
device=*vmpoll
device=*wshell
device=*BLOCKDEV
device=*PAGEFILE
device=*vfd
device=*parity
device=*biosxlat
device=*vcd
device=*vmcpd
device=*combuff
device=*cdpscsi
local=CON
FileSysChange=off
PagingFile=C:\WIN31\WIN386.SWP
MaxPagingFileSize=122864

device=vsbpd.386
netheapsize=20
InDOSPolling=FALSE
TimerCriticalSection=10000
UniqueDOSPSP=TRUE
PSPIncrement=5
netmisc=
netcard3=
transport=
vidsp=5848
32BitSP=13158

device=vadlibd.386
[standard]

[NonWindowsApp]
localtsrs=dosedit,ced

[mci]
Sequencer=mciseq.drv
WaveAudio=mciwave.drv
CDAudio=mcicda.drv
AVIVideo=mciavi.drv
QTWVideo=C:\WIN31\SYSTEM\MCIQTW.DRV

[drivers]
midimapper=midimap.drv
timer=timer.drv
Midi=sb16fm.drv
Midi1=sb16snd.drv
Wave=sb16snd.drv
Aux=sb16snd.drv
Mixer=sb16snd.drv
MIDI2=mpu401.drv
VIDC.IV41=ir41.dll
VIDC.IV32=ir32.dll
VIDC.IV31=ir32.dll
VIDC.YVU9=iyvu9.dll
VIDC.CVID=iccvid.drv
VIDC.MSVC=msvidc.drv
VIDC.MRLE=MSRLE.drv
WaveMapper=msacm.drv
MSACM.msadpcm=msadpcm.acm
MSACM.imaadpcm=imaadpcm.acm
;MIDI3=msadlib.drv
;MIDI4=SBPRO2.drv

[svga256.drv]
dpi=96
resolution=3
ChipSet=VMware SVGA2
LatchCapable=Yes
svgamode=56

[vcache]
minfilecache=512

[Network]
FileSharing=No
PrintSharing=No
winnet=nonet
multinet=nonet
LogonDisconnected=yes
EnableSharing=no
UserName=ADAM
Workgroup=WORKGROUP
ComputerName=MSI31
Comment=Adam Plenty
MaintainServerList=NO
SlowLanas=
SessTimeout=600

[network drivers]
devdir=C:\WIN31
LoadRMDrivers=No
[sndblst.drv]
Port=220
Int=5
DmaChannel=1
MidiPort=330
HDmaChannel=5
FDMAPlayBack=1
FDMARecording=1
FullDuplex=1
VoiceVolume=12, 12
FMVolume=16, 16
CDVolume=16, 16
LineVolume=16, 16
MicVolume=16
MasterVolume=16, 16
SpeakerVolume=16
AuxVolume=0, 0
InputMasterVolume=16, 16
MuteVirtual=10
OutputMixerSwitch=6
BassTone=16, 16
TrebleTone=16, 16
RecordGain=1, 1
OutputGain=1, 1
AGC=0
Mux_WaveIn=1e
SaveOnExit=1

[mpu401.drv]
port=330
int=5


[DISPLAY]
dpi=120
color-format=8
screen-size=1280
fastmmio=on
textrmw=0
scache=on
ellipse-support=on
polygon-support=on
dac-type=nbt

[msacm.imaadpcm]
MaxRTEncodeSetting=6
MaxRTDecodeSetting=6

[DDEShares]
METER$=NetMeter,cpu_usage,,31,,0,,0,0,0
CHAT$=winchat,chat,,31,,0,,0,0,0
SCHAT$=winchat,chat,,31,,0,,0,0,0
CLPBK$=clipsrv,system,,31,,0,,0,0,0
HEARTS$=mshearts,hearts,,15,,0,,0,0,0

[Password Lists]
*Shares=C:\WIN31\Share000.PWL


[SHIVAPPP]
ClaimPort=0

[RemoteAccess]
Medias=Rasser
Mac=RASMAC


[groups]

[group_net]

[mciseq.drv]
disablewarning=true

Reply 2 of 11, by AdamP

User metadata
Rank Member
Rank
Member
Osprey wrote:

In your DOSBox settings, set the SB16 IRQ to 7. If you still don't get MIDI, try changing midiconfig=0 to just midiconfig=

That didn't work 🙁. Changing the IRQ to 7 actually caused problems with the sound: Windows kept playing the beginning of a sound repeatedly and there was no way to stop it. I had to crash DOSBox because Windows wouldn't quit. Changing the Int value in the sndblst.drv section of system.ini fixed this, however (I actually had this problem when initially setting up the sound. That's why I had the IRQ set to 5). I have the same problems with the SB16 synth as I do with MPU-401. Getting rid of the midiconfig value didn't solve it either 🙁.

Any other ideas?

Reply 4 of 11, by AdamP

User metadata
Rank Member
Rank
Member
Osprey wrote:

Have you installed the Sound Blaster drivers in Win3.11? Also, make sure that they're configured to the same settings (IRQ/IO/DMA) that you have set in DOSBox.

I installed some Sound Blaster 16 drivers I got somewhere. They are configured to match DOSBox's settings (I/O: 220 IRQ:7 LDMA: 1 HDMA: 5 MPU-401: 330). Other Windows 3.1 games work fine.

I wonder if resetting DOSBox's settings would help? (I had this queer problem with Solar Winds being unable to initialise the sound card for some reason, and it only worked when I reset DOSBox)

Reply 5 of 11, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author
AdamP wrote:

I did get a message saying it may not work properly with the default MIDI Mapper setting, but I haven't the foggiest what the "correct" MIDI Mapper setup is for this game

If you're trying to use MPU-401 then check to see if the MIDI Mapper in the Win3 Control Panel is set to an external MIDI option. If you don't have an external mapping for some reason then create one that maps all channels to external.

Reply 6 of 11, by AdamP

User metadata
Rank Member
Rank
Member
ripsaw8080 wrote:
AdamP wrote:

I did get a message saying it may not work properly with the default MIDI Mapper setting, but I haven't the foggiest what the "correct" MIDI Mapper setup is for this game

If you're trying to use MPU-401 then check to see if the MIDI Mapper in the Win3 Control Panel is set to an external MIDI option. If you don't have an external mapping for some reason then create one that maps all channels to external.

I set it to SB16 MIDI Out (is that what you meant?), but got the same problem. It sounded the same as MPU-401, so do I even need MPU-401 driver in Windows? 😕

Reply 7 of 11, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author
AdamP wrote:

I set it to SB16 MIDI Out (is that what you meant?)

Yes, same thing; the nomenclature varies between drivers.

do I even need MPU-401 driver in Windows?

It doesn't hurt to install the driver, and then you can use it in the MIDI Mapper as an output port. Some SB drivers don't have a "MIDI Out" feature, so the MPU-401 driver is more useful for those.

I've briefly tested Zombie Wars 1.0R in WfWG 3.11 and the MIDI music does seem to stop when it shouldn't, sometimes with notes hanging. My results were better in Win 3.1 with included SB 1.5 and MPU-401 drivers. However, the MIDI volume slider in the game's settings appears to do nothing, and resets to zero when the game is launched. The README on the game disc says Win95 is recommended, so maybe Win3 support is not the best.

Reply 8 of 11, by AdamP

User metadata
Rank Member
Rank
Member
ripsaw8080 wrote:

I've briefly tested Zombie Wars 1.0R in WfWG 3.11 and the MIDI music does seem to stop when it shouldn't, sometimes with notes hanging. My results were better in Win 3.1 with included SB 1.5 and MPU-401 drivers. However, the MIDI volume slider in the game's settings appears to do nothing, and resets to zero when the game is launched. The README on the game disc says Win95 is recommended, so maybe Win3 support is not the best.

I've ripped the music files from the game, and they all play fine in a MIDI player in both Windows 10 and Windows 3.1 on DOSBox. They're all in standard MIDI format, so it beats me why they don't play properly in the game itself 😕. The files are in the SFX.SB0 file for what it's worth. I'm also using version 1.0R.

Reply 9 of 11, by ZeroX4

User metadata
Rank Newbie
Rank
Newbie

I see when this post was created i simply care to provide Fix in case someone like me 5 years from it's creation or even later is still looking for solution

In short of it You need to disable MPU-401 port so set it to none and change resolution to 640x480 like yeah you need to change resolution to have MIDI music playing properly in Zombie Wars that just happened

Here is my post where i describe exact same issue and how to do it step by step
[FIXED] Windows 3.1 Zombie Wars midi music problem

Last edited by ZeroX4 on 2022-05-09, 22:10. Edited 1 time in total.

Reply 11 of 11, by ZeroX4

User metadata
Rank Newbie
Rank
Newbie
AdamP wrote on 2022-05-09, 21:16:

Disable MPU-401? That's a bummer, seeing as it sounds MUCH better than FM.

Edit: Seems like your solution works, however!

We can't have everything and i also feel even worse of that since recently i discovered Cool Soft Virtual Midi Synth

For any1 interested this video is kinda straight forward tutorial for dosbox

But i was even able to use it under windows 7 to play sonic 3k or is it sonic and knuckles collection whatever with better music
https://www.youtube.com/watch?v=AfRItQFShtY