MBF

From DoomWiki.org

MBF (Marine's Best Friend) is a source port created by Lee Killough in 1998 after he left the Boom team. It is regarded by some as Boom's successor. As with Boom, MBF was limited to running under MS-DOS.

MBF was originally licensed under the non-free Doom Source License, but Killough has since relicensed his work under the GNU GPL.

MBF formed the basis of the SMMU port by Simon Howard. In 2004 it was ported to Windows with the name WinMBF by Team Eternity.

Features[edit]

MBF adds several new features:

  • Friendly monsters, including single-player helper dogs.
  • Bug fixes, such as a fix for the blockmap limit (MBF includes an internal blockmap builder).
  • A "beta" mode, in which MBF simulates the behaviour of press release beta version of Doom. This includes the version of the BFG9000 included in the beta.
  • Higher-resolution 640x400 screen mode.
  • A means to change the level's sky texture (Linedef action 271).
  • Three new DeHackEd thing flags (TOUCHY, BOUNCES, FRIEND).
  • Ten new action code pointers with parameters:
A_Detonate
Similar to A_Explode in that it generate a radius of blast damage. However, instead of a fixed radius of 128 map units, the radius is set by changing the "missile damage" of the object being exploded. This allows explosion damage to be varied, although radius and damage are still tied to each other.
A_Mushroom
Creates a mushroom-like explosion, throwing fireballs up in all directions. There is primary damage from the explosion itself, and then secondary damage from contact with the fireballs. The missile damage of the spawning object controls how many fireballs are created. Optionally, the misc1 ("Unknown 1") and misc2 ("Unknown 2") fields may be used to control the angle and speed of the fireballs. These fields use fixed-point numbers (16.16), instead of integers.
A_Spawn
Spawns an object in the same position as the spawner. The misc1 and misc2 fields of the code pointer's frame (indicated by "Unknown 1" and "Unknown 2" in DeHackEd), determine the type and z-position of the spawned object, respectively. Note that if the spawner and spawnee are both solid, they might stick together.
A_Turn
Rotates the object's angle by the number of degrees indicated by the misc1 ("Unknown 1") field.
A_Face
Sets the object's angle to number of degrees in the misc1 ("Unknown 1") field.
A_Scratch
Performs a melee (close-range) attack on the object's current target. misc1 ("Unknown 1") indicates damage, while misc2 ("Unknown 2") indicates the sound effect to use.
A_PlaySound
Plays a sound effect. misc1 ("Unknown 1") is the sound effect number, and misc2 ("Unknown 2"), if nonzero, makes the sound full-volume (like boss wakeup sounds).
A_RandomJump
Jumps randomly to the state in misc1 ("Unknown 1") with a probability indicated by the misc2 ("Unknown 2") field (0-255). If the jump doesn't occur, then it falls through to the next state. Note that the frame's duration field must not be -1 for this to work correctly.
A_LineEffect
Allows activation of remote linedef action by objects. misc1 ("Unknown 1") indicates the linedef type, while misc2 ("Unknown 2") indicates the sector tag. The tagged sector(s) are activated as though a player has activated a linedef of the indicated type and tag. If the linedef is a S1 or W1 type, then the effect blocks out all further A_LineEffect effects for the object, no matter whether they are S1/W1 or SR/WR types.
A_Die
Causes an object to kill itself (i.e. commit suicide). Its primarily purpose is to make countdown timers in grenades.

Bugs[edit]

Due to changes in the collision detection algorithms, a respawned or resurrected monster can sometimes become "glued" to another monster or to a wall. This bug propagated into later ports which used the MBF source, such as PrBoom.

Locked doors requiring all three colors of keys, available through generalized linedef types (a feature inherited from Boom), will not open if the player is carrying a yellow skull key no matter how many of the other keys they have. However, they will open if you have both a blue key and a red key, regardless of type, even if you have no yellow key whatsoever. Thus, levels that use these doors can be completed earlier than intended or impossible to finish depending on how the keys are arranged and what key types are used.

In the released binary, the partial invisibility effect is not rendered correctly due to a minor mistake made during addition of support for the 640x400 screen resolution. There is no noise to the effect like normal; instead objects appear to be translucent gray masses. Lee Killough later released a patch to the source code which fixed this problem, but declined to provide a new binary distribution.

MBF 2.04 Update[edit]

In 2014, an unofficial updated version of MBF versioned as MBF 2.04, was released on the VOGONS forums by Gerwin Broers (Gerwin). After this release, Gerwin started using intermediate updates under the 2.04 moniker. 19 updates have been released since, which added the following features:

  • Plays demos from the classic v1.2 version of Doom, using code from PrBoom.
  • At least 10% better performance compared to MBF v2.03.
  • Tolerant to running within Windows NT/2000/XP.
  • Use the super shotgun in Doom 1, with parameter "-ssg -file ssg.wad", combined with "-unlock" in case of shareware.
  • Parameters "-stdvid" and "-bestvid" for benchmarking under comparable game settings.
  • FPS counter option (run a timedemo to unlock the 35 FPS framerate cap).
  • Authentic FM music.
  • Improved sound driver setup, with Doom theme.
  • Added WSS, GUS PnP, ESS and Soundscape drivers. Improved Sound Blaster 2.0/Pro and MPU-401 driver.
  • Reliable video initialization and access, independent from Allegro.
  • Startup console similar to classic Doom.
  • Imported many bugfixes from different sources.

The last release of MBF 2.04 was version 19, released September 10, 2017. It formed the basis for several spin-off builds, which are listed below.

MBF386[edit]

MBF386 is a separate build of the latest MBF 2.04 source release targeting Intel 386 processors by its original author, Gerwin Broers. Merely referenced in a note in the same VOGONS thread, Gerwin uploaded a separate build to his home directory, without specific source code, on September 23, 2017.

MBF-Sigil/MBF-SNM[edit]

In 2019, developer Sakitoshi created his own build of the then latest MBF 2.04 source release, entitled MBF-Sigil. The first release was on June 8, 2019. Alongside all of MBF 2.04's features, Sakitoshi initially only sought to add SIGIL support, taken from the Libretro PrBoom source tree to achieve playability of SIGIL under DOS. Later, support for No Rest for the Living and Master Levels for Doom II was added and the build was rebranded to MBF-SNM. The latest release under this moniker, named SNM10, was released on December 2, 2019.

See also[edit]

External links[edit]

Source code genealogy
Based on Name Base for
Boom MBF CDoom v2.05
Fusion
JDP
SMMU
WinMBF