summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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.
2014-05-05setup: Add Xbox360, Logitech joystick settings.Simon Howard
Recognise the Xbox360 controller and Logitech Dual Action controllers and set defaults as appropriate. Thanks to Brad Harding for the information about these controllers.
2014-05-05Clean up file headers.Simon Howard
This change rewrites and simplifies the copyright headers at the top of all source files: * Remove "Emacs style mode select" line; this line was included in the headers for the originally released source files and appears to be to set the file type for old versions of Emacs. I'm not sure entirely why it was required but I don't think it is any more. * Remove "You should have received a copy of..." text from copyright header. This refers to the old 59 Temple Place address where the FSF headquarters used to be located and is no longer correct. Rather than change to the new address, just remove the paragraph as it is superfluous anyway. This fixes #311. * Remove ---- separator lines so that the file headers are barer and more simplified.
2014-05-04music: Tweak comment parsing for substitute configs.Simon Howard
Allow comments to be attached to the end of configuration lines, as well as being specified on a line on their own.
2014-05-03setup: Add configuration for Wii remote.Simon Howard
The Wii remote is not a HID device, meaning it cannot be supported in a proper cross-platform way. However, it can be supported for individual platforms. Add a fingerprint and configuration for a Wii remote under OS X using the WJoy tool.
2014-05-03setup: Fix disabling of joystick button bindings.Simon Howard
When setting a joystick button binding to -1 to disable it, set it directly; do not go through to the physical button mapping layer. Also add a quick note to encourage users to send in details of their gamepads.
2014-05-03setup: Start a list of known gamepads.Simon Howard
Detect certain gamepads by name and automatically configure defaults for buttons and axes, to minimize setup time. Supported so far are the PS3 controller and AIRFLO gamepad.
2014-05-01setup: fix usejoystick/use_joystick typo in the previous commitMike Swanson
2014-05-01setup: Enable joystick after calibration.Simon Howard
If the user has just successfully calibrated the joystick, then turn on use_joystick as a convenience feature.
2014-05-01opl: Fix crash when using OPL music.Simon Howard
The previous change to add the poll method to the music module interface introduced a crash, as the OPL music struct does not define a poll method.
2014-05-01setup: Add control for joystick menu button.Simon Howard
The code is already in place for this but there was no control in the setup tool to configure it.
2014-05-01config: Clarify config file documentation.Simon Howard
Re-word some of the documentation for the joystick button config variables, to avoid confusion between physical/virtual joystick buttons.
2014-05-01setup: Configure joystick buttons with virtual mapping.Simon Howard
Refactor how joystick buttons are reassigned. Define a fixed mapping from joyb* variables to virtual buttons, and change the button assignments at the virtual->physical mapping level.
2014-04-30joystick: Add virtual-physical button mapping.Simon Howard
The solution to solving #386 is to add a layer of indirection: the game code can only support up to ~20 joystick buttons, but this doesn't matter as long as we never want to bind more than 20 buttons to actions anyway. Redefine the game's notion of buttons to be based on "virtual" joystick buttons, and map these buttons to physical (SDL) buttons based on configuration file variables.
2014-04-30system: Refactor error dialog box.Simon Howard
When showing error message via Zenity, show the expanded (sprintf'ed) error, not the format string. Refactor the sprintf part to be part of the common code to avoid duplication.
2014-04-30joystick: Mask out bits for button axis buttons.Simon Howard
When a "button" is actually used as part of a button axis, don't include presses on the button as part of the buttons field posted in joystick events. This avoids situations where button 1 or 2 are part of a D-pad, breaking menu navigation (related to #389).
2014-04-30strife: Fix joystick jump button.Simon Howard
The code to handle the joystick jump button variable was not implemented. Check the jump button on the joystick as well as the keyboard and mouse button equivalents when deciding whether to set the jump bit.
2014-04-30system: Escape special characters for Zenity.Simon Howard
When invoking Zenity to display an error message, some characters can have special meanings to the shell. Escape these properly so that the error message is always shown correctly. This fixes #355.
2014-04-30Merge branch 'master' of github.com:chocolate-doom/chocolate-doomSimon Howard
2014-04-29setup: Detect and ignore bad joystick axes.Simon Howard
In some cases a joystick axis can be "stuck" and have a large uncentered value. These must be detected and ignored, otherwise the axis can be chosen during calibration instead of the user's actual desired axis.
2014-04-29Add native notification box for errors on linux.Willy Barro
Errors will now be shown as a message box, instead of only a console message. This fixes the user not seeing error messages, like if the IWAD is not provided. - Add zenity notification box call on I_Error
2014-04-29setup: Allow backspace or del to clear controls.Simon Howard
Backspace or delete clears other input boxes; make it do the same for keyboard, mouse and joystick inputs.
2014-04-29hexen: Fix joystick strafe left/right buttons.Simon Howard
Hexen was missing the code to handle the strafe left/right buttons.
2014-04-28setup: Detect and configure hat-based D-pads.Simon Howard
As a second fallback, if all joysticks are centered and no buttons are pressed, look at the hats on the joystick to see if one of those is uncentered. Bizarre as it seems, some gamepads actually present the D-pad as a hat.
2014-04-28joystick: Add "hat axis" support.Simon Howard
Just as some controllers have D-pads that are presented as a set of buttons, some other controllers actually present their D-pads as joystick hats. Add "hat axis" support where the hat number and axis can be packed into a single integer value.
2014-04-28joystick: Increase 'dead zone' size.Simon Howard
The joystick dead zone is the range within which the joystick is interpreted as being centered. Increase this range significantly, as some controllers (eg. the PS2 controller + USB connector) can be very sensitive, leading to the player spinning randomly even when the stick is centered.
2014-04-28setup: Add support for button axis calibration.Simon Howard
Detect when we need to configure a "button axis" by falling back to buttons when none of the joystick axes are significantly outside of the centered range. Add extra calibration stages to get the D-pad buttons for right and down in these cases.
2014-04-28joystick: Add support for "button axes".Simon Howard
Some gamepads, notably the PS3 SIXAXIS controller, provide the D-pad not as a pair of axes, but rather as four separate buttons. Define a special axis numbering scheme that packs two button numbers into a single number, and allow an axis to be defined this way.
2014-04-27music: Add loop point Ogg/Flac metadata support.Simon Howard
ZDoom has defined a format for Vorbis metadata comments named LOOP_START and LOOP_END that allow the start and end points to be defined in .ogg and .flac files for looping music. Add support for these (they are used in Brandon Blume's SC-55 recordings).
2014-04-22Fix a segfault in i_sdlmusic.cFabian Greffrath
We are free()ing the const char* a few lines later.
2014-04-19server: Fix sending of WAD/DEH checksums to clients.Simon Howard
Clients receive the WAD and dehacked checksums of the controlling player and are supposed to display a warning at the startup screen if they do not match. However, reversed logic in the code that sends the waiting data to clients meant that they were always sent their own checksums, so the error message was never displayed. This fixes #384.
2014-04-19setup: Make iwad_t pointers const.Simon Howard
The table of IWAD data is stored in const memory, so make all iwad_t pointers const to fix compiler warnings.
2014-04-19Exit with error on startup if using the wrong IWAD.Simon Howard
Having multiple binaries can cause some confusion - some users try to run chocolate-doom with hexen.wad, thinking it is supported. Add a startup check that makes sure the user is not trying to start the game using the wrong IWAD file for the binary being run. This fixes #382.
2014-04-19setup: Change labelling to clarify gamepad support.Simon Howard
Vanilla Doom's setup.exe only made reference to "joysticks" as back then gamepads were relatively uncommon for PCs and ports for game controllers canonically known as "joystick ports". Nowadays it's far more likely (and ergonomic) that the player will be using a gamepad than a joystick. Change the labelling to refer to "Gamepad/Joystick" or "controller" instead.
2014-04-19joystick: Add joystick button to toggle menu.Simon Howard
When using a joystick or gamepad it's nice to be able to bring up the menu without having to reach for the keyboard. This makes modern gamepads more useful/usable.
2014-04-19joystick: Add an axis to allow strafing.Simon Howard
Modern gamepads typically have 2-3 D-pads and joysticks. This means that it's desirable to be able to use one joystick for turning and another for strafing. Add another axis in addition to the current X and y axes that performs strafe movement.
2014-04-13setup: Call TXT_Shutdown on exit.Simon Howard
Some systems (fbcon SDL driver) get messed up if not cleanly shut down. Make sure that we call SDL_QuitSubsystem on shutdown.
2014-04-12music: Fix -dumpsubstconfig for Heretic/Hexen.Simon Howard
The config dumping command line option assumed that music lumps were named like D_MYLUMP, but this is not the case for Heretic and Hexen, where there is no D_ prefix and music lumps can have any name. Change the logic to instead look at the contents of lumps and identify music lumps from the MUS / MIDI header.