This implements the subtle differences found in the three variants
of DOOM.EXE version 1.9. The code was taken from PrBoom+ and
Chocolate Doom, respectively. I decided to go without the original
comments, the code has been commented well enough in other source
ports. @fragglet Do you think these are all the relevant differences?
* add joystick buttons for automap and main menu
Fixes#27
* joystick button triggers either escape or menu_escape
* get away with only one GetButtons() function
* rename MAX_JB to MAX_JSB
Joystick buttons are called JSB in the key binding menu,
so we stay consistent with this.
* print PREV and NEXT on separate lines in the weapon key binbing screen
Thanks @JNechaevsky for noticing, fixes#37.
* bring back the flashing disk icon (Fixes#13)
* further refinements to the disk icon code
* get away with only one static variable
* add a non hires-scaling variant of V_DrawBlock()
* add a comment to the new function prototype
When reading a TRANMAP lump in from a file, only the first 256 bytes
of the current palette are compared to the palette for which the
TRANMAP was created. An entire palette, though, consists of 256 RGB
tripel and is thus 3*256 bytes long. Thus, only the first third of
both palettes are compared and if these happen to match, translucency
will look glitched.
Fix this by comparing and writing out the entire palette to the cache
file.
This reverts the previous commit which only handled the case of an
absent REJECT table. No attempts are made to simulate REJECT buffer
overflows in Vanilla Doom, because MBF is a different EXE anyway.
* Define a user-writeable directory with a little help from SDL_GetPrefPath()
* Save config files, translation tables and savegames into this
directory.
* Screenshots are still saved into the "current" directory, i.e. the
user's $HOME on Unix.
* unconditionally create the user-writable directory
* adapt to pending inclusion of m_misc2.c
* add a dynamically growing list of IWAD search directories
This is all taken from Chocolate Doom's src/d_iwad.c.
Also, take some helper functions from Chocolate Doom's src/m_misc.c
and put them into a separate m_misc2.c file. These will be useful for
further ported code, e.g. writable user directory and drag-n-drop
support.
Fixes#6.
* add support for a build-time configurable data directory
* add some more helper functions to m_misc2.c
This converts some variables to their unsidged types, which enables
the port to load all maps which use the regular Doom BSP nodes format.
This enables the port to load some maps that it would normally choke
upon, e.g. Nova Maps 30 and 31; Eviternity Map 15 and Sunlust Maps 16,
18, 20, 24, 28 and 31.
It does still not support DeePBSP and ZDBSP nodes, and will probably
never do.
Fixes#23.
This appends a "Fullscreen Mode" entry to the Video menu.
While at it, clean up the previous menu changes a bit. Added menu entries are always appended to the end of a menu. Remove the now useless sound and music card selection entries.
More specifically, add support for the FreeDoom IWADs and for the
IWADs that are shipped with the Doom Classic engine that is used for
the Doom 3: BFG Edition.
* Add the three FreeDoom IWADs to the standard_iwads[] array.
* Improve the gamemissions detection, because freedoom2.wad contains
characteristic lumps of both Plutonia and TNT.
* Fixes#4.
* Identify the BFG Edition IWADs by their unique DMENUPIC lump.
* The BFG Edition IWADs have a PWAD signature, so be more forgiving
in CheckIWAD().
* Since the BFG Edition IWADs are missing the TITLEPIC lump, use the
DMENUPIC lump instead.
* Since the BFG Edition IWADs have their M_SCRNSZ menu graphic lump
read "Gamepad:", use the unused M_DISP lump instead which reads
"Display".
* Fixes#3.