summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2014-10-08Allow -warp to episodes beyond episode 4.Simon Howard
Vanilla Doom's -warp parameter allows warping to episodes beyond E4. This didn't work in Chocolate Doom because of some changes made to the G_InitNew code before the source release. Actual decompilation of that function in Vanilla Doom shows that the episode/map sanity checking is not present: http://pastie.org/8140437 There is at least one known WAD (2002ado) that has a map on E5M1 that is playable in Vanilla, and this stops that map from being possible to play. Comment out that code because it obviously doesn't deserve to be there. This fixes #426. Thanks plumsinus.
2014-10-08Disable -oldsync startup message.Simon Howard
A message is printed if you are playing a game using the old sync code, which could put you at a disadvantage compared to other players. Disable this message for now as we're defaulting to old sync for the time being.
2014-10-08Use old network sync code by default.Simon Howard
The new netgame client sync code has the potential to be much better than the original sync code. However, it currently has a buggy controller and needs revisiting and overhauling (#358). For the time being, switch back to the old sync code by default and allow the new code to be enabled using the -newsync parameter (replacing the -oldsync parameter).
2014-10-08midi: Fix "D_DDTBLU disease".Simon Howard
The Doom II MAP14/MAP20 music has a hanging note at the end of the track that is never turned off. If this is not reset when the track loops, there is a continuous (and annoying) drone sound throughout the next iteration of the song. Some information is here: http://www.doomworld.com/vb/source-ports/66802-the-d-ddtblu-disease/ This changes the mus2mid code to generate an "all notes off" controller event at the start of the MIDI track. This is specifically done at the start and not the end of the track because otherwise the looping of tracks like D_RUNNING is affected. Thanks to a whole host of people for help on this: @plumsinus for reporting the bug, @bradharding for devising a fix as part of Doom Retro, and Quasar for feedback and his own fix to the Eternity Engine. This fixes #412.
2014-10-07Allow multiple substitute mappings for music tracks.Simon Howard
For the Hexen substitute mapping configuration file, it's desirable to be able to include two mappings for each music lump: a straight high quality recording of that lump, and the recording that was included on the Hexen CD audio tracks. So allow multiple mappings so that we can fall back to try other filenames if the first choice file doesn't appear to exist.
2014-10-06terminate the destination string in M_StringReplace()Fabian Greffrath
fixes #428
2014-10-01Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-10-01hexen: Add workaround for Mac Hexen IWAD.Simon Howard
The Mac version of hexen.wad is slightly different from the normal DOS one: it contains a bunch of extra lumps but more importantly, the GENMIDI and DMXGUS lumps are missing. This means that Chocolate Hexen would crash on startup with the default settings (as OPL is the default music output). To work around this problem and allow the game to start up properly, detect if the required lump is missing and adjust the music settings, printing a helpful message to stdout to inform the user.
2014-09-24Upstream fix to torpedo weapon changingJames Haley
Use of the wrong enum value as an index into weaponinfo left the torpedo's selectability accidentally relying on you having 30 or more rockets instead of cells. Verified against binary as a choco error.
2014-09-19Upstream fixes to stair building issuesJames Haley
First sector moved instantly for buildDown16 stairs due to neglect of using direction instead of constant 1. Also found that Strife clears the tag of the first stair sector.
2014-09-18Upstream bug fix to teleport beacon allegianceJames Haley
Was not propagating properly from player to beacon to rebels due to mistranslated assembly code; access to wrong structure.
2014-09-15deh_main.c: fix "warning: implicit declaration of function ‘I_Error’"Fabian Greffrath
2014-09-13Add vld_ prefix for vldoor_e enum values.Simon Howard
It was pointed out to me recently that vldoor_e has enum values named 'open' and 'close'. These can potentially conflict with POSIX standard functions that have the same names, if the right header files are included. This doesn't currently cause any problems. However, to avoid any possibility of a conflict occurring if a different compiler is used, add a vld_ prefix to all the enum values, to namespace them.
2014-09-13dehacked: Load Freedoom DEHACKED lump on startup.Simon Howard
If using one of the Freedoom IWADs, detect it by checking for the FREEDOOM lump, and then load its DEHACKED lump to apply the cosmetic string changes that it includes. In case we're using an old version of one of the Freedoom IWADs, don't bomb out with an error while parsing the DEHACKED lump.
2014-09-13dehacked: Set stricter scoping for magic comments.Simon Howard
Magic comments allow some of the Vanilla limits to be overridden, but they should only apply to the files in which they were defined. Reset the flag variables that control these overrides before every new Dehacked file is parsed, so that a flag set in one file cannot spill over into other files that are parsed subsequently.
2014-09-13dehacked: Fix BEX string expansions.Simon Howard
The Dehacked code must pass a special flag to DEH_ReadLine() when parsing the [STRINGS] section, so that lines can be escaped onto following lines. However, this flag value was calculated incorrectly. The BEX [STRINGS] section cannot be looked up at the start of parsing a Dehacked file, because GetSectionByName() will return NULL for it (extended strings are not available yet). Instead, simplify the logic to look at the name of the current section and check that way.
2014-09-11simplify and generalize deh_allow_extended_strings usageFabian Greffrath
2014-09-11improvements to the [STRINGS] section parserFabian Greffrath
- restructure DEH_ReadLine() to avoid use of "goto" - bex_string_t type name ends in "_t" - declare constant table as "static const" - add magic comment *allow-extended-strings* and corresponding variable deh_allow_extended_strings - fix logical error when no [STRINGS] section is registered to which corrent_section could be compared
2014-09-08add parser for [STRINGS] sections in BEX filesFabian Greffrath
2014-08-24setup: Add gamepad config for Buffalo Classic Gamepad.Simon Howard
The Buffalo Classic USB Gamepad is a USB gamepad that resembles the classic SNES controller. Thansk to Fabian Greffrath for sending in the report.
2014-08-18setup: Add config for Multilaser JS030 gamepad.Simon Howard
Thanks to "Absolute Zero" for the report with the gamepad settings.
2014-08-17Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-08-17setup: Add gamepad config for XBOX One controller.Simon Howard
The XBOX One controller apparently appears identical to the Xbox 360 controller. Thanks Brad Harding.
2014-08-16Fix finding of voices.wad when -iwad is only hintJames Haley
Somebody broke this by using sizeof() on a malloc'd char *
2014-08-16Warning fixes (23 remain...)James Haley
2014-08-13Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-08-05Merge branch 'master' of https://github.com/chocolate-doom/chocolate-doomFabian Greffrath
2014-08-05call InitializeSections() in DEH_LoadLump()Fabian Greffrath
apparently, this has been forgotten before, so DEH_PointerInit() was not executed which meant that *some* DEHACKED patches would not work when loaded from within a PWAD but would work when extracted from that WAD and loaded via -deh. fixes #421
2014-07-15free() some allocated bytesFabian Greffrath
Thanks valgrind!
2014-06-18Move extern definitions for p_map.c to p_local.hFabian Greffrath
This fixes conflicting array sizes for the variable "spechit" as reported in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748393. Fixes #414
2014-06-13Merge pull request #411 from chungy/ignoreSimon Howard
Ignore some more autogenerated files
2014-06-12Ignore some more autogenerated filesMike Swanson
2014-06-12Add desktop entries for all the games, make the Setup launch genericMike Swanson
The same icon is used for all four games, even though it's designed to resemble Doom's logo and looks a bit silly with all of them lined up. Also the Setup Desktop Entry now only launches chocolate-setup, which then prompts for the game to configure. This avoids cluttering up a DE's Preferences menu, control panel, or however it will be displayed.
2014-05-26setup: Add default config for Xbox360 on Linux.Simon Howard
The Xbox360 controller is handled differently by different operating systems, and the layout is different on Linux to Windows. Detect the Linux layout and set some appropriate defaults.
2014-05-17setup: Tweak joystick axis widget.Simon Howard
Reduce the width slightly (the previous size was excessively wide) and tweak "none" string to match the joystick button widget.
2014-05-16setup: Don't leave joystick subsystem running.Simon Howard
Only init the joystick subsystem when we need to call the joystick API functions, and quit the subsystem when we are finished. This avoids conflicts with the joystick widgets that quit the subsystem while the main code relies on it running. This fixes a bug where trying to calibrate the joystick twice would fail on the second attempt.
2014-05-16setup: Factor out axis configuration to widget.Simon Howard
Move code for configuring joystick axes into a separate widget, and add axis widgets to the configuration window for all possible movement.
2014-05-12opl: Handle negative time division values.Simon Howard
A negative time division file indicates the MIDI file uses SMPTE time rather than the normal time system. This is not supported yet, but for the time being, return a sensible time division value that doesn't cause the sound to stutter and the game to become unplayable. This fixes #352, although the affected MIDIs do not yet play properly.
2014-05-11Fix compilation with MSVC2008alexey.lysiuk
2014-05-11Merge pull request #401 from alexey-lysiuk/clang_build_fixSimon Howard
Fix compilation error with Clang
2014-05-11Merge pull request #403 from alexey-lysiuk/hexen_demo1_desyncSimon Howard
hexen: Fix desync of demo1 on some platforms/compilers
2014-05-11Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-05-11opl: Change library to use us instead of ms.Simon Howard
Multi-track MIDI files are played back using separate callback chains for each track, and this introduces the possibility of one track becoming out of sync with the others. This was noticeable in WADs that use multi-track MIDIs, such as Alien Vendetta. Increase the timing resolution to microsecond precision to fix this.
2014-05-10opl: Add API to adjust tempo.Simon Howard
When the tempo is changed, the times on all active timers must be adjusted to match the new timing values. Add an API to do this and invoke it when a tempo change meta event is read.
2014-05-10hexen: Fix desync of demo1 on some platforms/compilersalexey.lysiuk
Official release of Hexen's source code relies on unspecified behavior the in order of function's argument evaluation, see ISO-IEC 9899-1999, [6.5.2.2.10] P_Random() are called in different parameters of P_SpawnMobj() within A_LeafSpawn()
2014-05-10Fix compilation error with Clangalexey.lysiuk
No more 'control may reach end of non-void function' error
2014-05-08music: Allow / separators in substitute filenames.Simon Howard
For substitute music files we want to be able to specify relative paths in a platform-independent way using Unix path separators. Replace Unix-style / separators in the path that was read with the path separator for the native system.
2014-05-08'strife' is a valid game for chocolate-setup too!Rohit Nirmal
2014-05-08opl: Process MIDI 'set tempo' meta events.Simon Howard
The MIDI format includes a special meta event to set the tempo of playback, and some WADs depend on this - notably the music in Alien Vendetta. Move the variables controlling tempo to the global scope (they are not per-track as I previously thought) and set when the tempo events are encountered. This is some progress towards resolving #334, but that bug is not yet completely fixed, because the tempo change does not retroactively apply to OPL timers that have already been set.
2014-05-06oplmusic: Handle key-on with volume 0 as key-off.Simon Howard
Some MIDI files, such as the music tracks in AV.wad, use a second "key on" event with a volume of zero to mean "key off". Handle this case correctly.