MBF
From DoomWiki.org
MBF | |
Codebase | Boom |
---|---|
Developer(s) | Lee Killough |
Development status | Inactive |
Written in | C |
Target platform | DOS |
License | GPLv2+ |
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.
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 (Fraggle). In 2004 it was ported to Windows with the name WinMBF by Team Eternity.
Contents
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).
- The OPTIONS lump, which allows to set game options, such as compatibility options, chat strings, and enemies options. The format of the lump is a text file listing the different option names followed by a value of either 1 or 0, denoting true or false, respectively. For example, comp_vile 1 allows arch-viles to create ghost monsters, while comp_pain 1 prohibits pain elemental from spawning lost souls when there are already more than 20 lost souls in the level. The settings provided inside the OPTIONS lump overwrite the options set by the user in the in-game compatibility menu, which are as a result skipped over on the menu screen.
- 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 does not 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]
- Artica series -- PWADs that utilise the MBF "friendly" bit
External links[edit]
- Download MBF at Doomworld/idgames
- Download MBF source code at Doomworld/idgames
- Download WinMBF 2.03 Build 2 at Doomworld/idgames
- Download WinMBF 2.03 source code at Doomworld/idgames
- MBF 2.04 source code and binary, at VOGONS
- MBF386 binary, on Gerwin Broers's homepage
- MBF-SNM source code and binary, hosted by GitHub
- HTML MBF reference
Source code genealogy | ||
---|---|---|
Based on | Name | Base for |
Boom | MBF | Bernewfie |
CDoom v2.05 | ||
Fusion | ||
JDP | ||
SMMU | ||
WinMBF |