← Previous → Next Contents

Last modified: 2023-08-05 16:07


Best enhanced source port:  PrBoom-Plus


(Texture format GL_RGBA, 8xAA and 16xAF, render_fov=90, qdgamma 1.25.)

Description:  Enhanced source port.  Fork of PrBoom with minor enhancements.

New repository (PrBoom+um branch, ending with version 2.6.66):  https://github.com/coelckers/prboom-plus/releases
Old repository (ending with version 2.5.1.4):  http://sourceforge.net/projects/prboom-plus/

PrBoom-Plus is a relatively modest fork off of PrBoom.  I did most of my compatibility testing with PrBoom some years ago, but migrated to PrBoom-Plus in 2009 because I could not get a correctly scaled widescreen picture from PrBoom after upgrading to a 16:9, 1920×1080 monitor.

I played PrBoom all the way through E1, E2 and E3 in OpenGL without encountering a serious problem.  Considering that most source ports flunk out before finishing E1M1, that is quite an achievement.  Older versions of PrBoom had various glitches, but I had no problems with the later versions.

When running on Linux, user input and rendering are smooth.  The last time I tried Windows—PrBoom 2.3.1 on Windows XP SP2—it was not so smooth.

There are separate sensitivity controls for the vertical and horizontal axes of the mouse / track ball, and you get plenty of headroom on both.

A raft of run-time options controls compatibility nits like the stair-climbing ability of goons, but the simplest thing is to use the command-line switch -complevel, which takes a magic number as documented in README.compat to specify what version of DOOM to emulate.

Beware:  PrBoom and PrBoom-Plus do not default to Vanilla-compatible behavior the way that Chocolate DOOM does.  If you don't use the -complevel command-line switch, you will encounter incompatibilities with vanilla DOOM.  The only complevels relevant here are those that emulate the variants of DOOM 1.9:  refer to README.compat for the others.

complevelNameDescription
2doom2_19_compatibilityDOOM 2 1.9
3ultdoom_compatibilityUltimate DOOM
4finaldoom_compatibilityFinal DOOM
vanillaauto(Added in 2.6um) Guess based on IWAD file name

The "rare" Anthology variant of Final DOOM is not yet emulated.

Video configuration

Following are the lines in my prboom-plus.cfg that differ from the default video configuration.  All of these correspond to settings that can be made in the setup menus.  To get correct results, it is vital to set Options → General → Screen Resolution to the native resolution of the monitor.

videomode                 "OpenGL"
screen_resolution         "1920x1080"
use_fullscreen                1
screenblocks                 11
usegamma                      4
gl_texture_filter_anisotropic     4
hud_displayed                 1
hudadd_secretarea             1
hudadd_smarttotals            1
hudadd_crosshair              1
hudadd_crosshair_target       1
render_stretch_hud            1
render_multisampling          8

When OpenGL is enabled, the graphics get much darker, requiring some tweaking in the monitor, Nvidia driver, or X server.

render_multisampling is AA.  The program's setup does not allow setting it to 16.  Manually editing the config file to do so causes it to be reset to 0 on the next run.

Sound configuration

PrBoom-Plus supports many options for MIDI output, including:

For some reason, PrBoom-Plus cuts FluidSynth's volume in half by default.  Instead of compensating with the volume sliders, you can fix it directly by changing the value of mus_fluidsynth_gain in prboom-plus.cfg from 50 to 100.

The better way stopped working

Selecting FluidSynth for MIDI output in PrBoom-Plus used to give me a lot of crackling.  With 2.5.1.4 the crackling was gone but it still seemed laggy.

What used to work better for me was to use FluidSynth indirectly through a FluidSynth-enabled SDL library.  You can try this by choosing SDL as the preferred MIDI player in setup and then setting the environment variable SDL_SOUNDFONTS to point to the SF2 sound font.  Alternately, you can apply one of the patches below so that the sound font is specified by the snd_soundfont line in prboom-plus.cfg, just like when using FluidSynth directly.

It works fine with with PrBoom-Plus 2.5.1.4 and SDL 1.  Unfortunately, with SDL2_mixer 2.0.4 and FluidSynth 2.2.5, it triggers a segfault in the libs when PrBoom-Plus tries to change the music.

#14 <signal handler called>
#15 0x00007fe99f90692a in ?? () from /usr/lib64/libfluidsynth.so.3
#16 0x00007fe99f90790c in ?? () from /usr/lib64/libfluidsynth.so.3
#17 0x00007fe99f908193 in ?? () from /usr/lib64/libfluidsynth.so.3
#18 0x00007fe99f91ac7a in delete_fluid_synth () from /usr/lib64/libfluidsynth.so.3
#19 0x00007fe99fa11ff3 in ?? () from /usr/lib64/libSDL2_mixer-2.0.so.0
#20 0x00007fe99fa1065a in Mix_FreeMusic () from /usr/lib64/libSDL2_mixer-2.0.so.0
#21 0x00000000004d67e0 in I_UnRegisterSong (handle=0) at /tmp/prboom-plus-2.6.2/prboom2/src/SDL/i_sound.c:1035
#22 0x00000000004c8f25 in S_StopMusic () at /tmp/prboom-plus-2.6.2/prboom2/src/s_sound.c:672
#23 S_StopMusic () at /tmp/prboom-plus-2.6.2/prboom2/src/s_sound.c:660
#24 0x00000000004c8fce in S_ChangeMusic (musicnum=43, looping=1) at /tmp/prboom-plus-2.6.2/prboom2/src/s_sound.c:556

(This forum post describes the use of SDL_SOUNDFONTS and SDL_FORCE_SOUNDFONTS.)

More patches for 2.5.1.4

Enhancements to the automap that were made between versions 2.5.1.3 and 2.5.1.4 introduced a crash on launch problem that can occur when OpenGL is enabled.  This patch sacrifices some automap functionality to avoid that crash.

Got illegal instructions?  The configure script automatically adds -march=native to the compile line, overriding any attempts to build binaries that are compatible with other, older CPUs.  This patch stops that.  (It looks like --disable-cpu-opt was supposed to do something relevant, but it has no effect.)

Among other local changes to Makefile.am, I had to add -fcommon to AC_C_COMPILE_FLAGS to fix FTB with GCC 10.

Just for fun, this patch turns the left Control key into an extra-special "kaboom" key for use when life gets complicated and the demons are closing in.  Note that this is hacked in with blatant disregard for all sorts of things and will void your warranty, break your demos, make multiplayer impossible, etc.

Memorable glitches that went away


OpenGL rendering nit, PrBoom or PrBoom-Plus 2.4.5.


← Previous → Next Contents
KB
Home