Age | Commit message (Collapse) | Author |
|
If the user has just successfully calibrated the joystick, then
turn on use_joystick as a convenience feature.
|
|
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.
|
|
The code is already in place for this but there was no control in
the setup tool to configure it.
|
|
Re-word some of the documentation for the joystick button config
variables, to avoid confusion between physical/virtual joystick
buttons.
|
|
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.
|
|
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.
|
|
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.
|
|
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).
|
|
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.
|
|
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.
|
|
|
|
Add native notification box for errors on linux.
|
|
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.
|
|
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
|
|
Clicking on a scrollbar should scroll the cursor to that location, but
the logic for it was buggy because of loss of precision when doing an
integer divide. When dividing by bar_max, seek up to the nearest value
so that the cursor always arrives where we clicked.
Thanks to Alexandre-Xavier for reporting this bug. This fixes #359.
|
|
Backspace or delete clears other input boxes; make it do the same for
keyboard, mouse and joystick inputs.
|
|
Hexen was missing the code to handle the strafe left/right buttons.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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).
|
|
|
|
These are the equivalents of .deh for Heretic and Strife. Add these as
file associations and auto-switch to the appropriate game type when
opened.
|
|
We are free()ing the const char* a few lines later.
|
|
|
|
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.
|
|
The table of IWAD data is stored in const memory, so make all iwad_t
pointers const to fix compiler warnings.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
|
|
Some systems (fbcon SDL driver) get messed up if not cleanly shut
down. Make sure that we call SDL_QuitSubsystem on shutdown.
|
|
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.
|
|
Some machines don't work well with 8-bit screen depths any more. It's
better to default to just using the machine's native color depth
instead. Change the default to 0 (for SDL_SetVideoMode this means "use
native color depth"), auto-adjust to native color depth on startup if
screen_bpp=0 (so that debug messages at least make sense) and document
for the config file value that a value of zero means "use native".
|
|
This matches the -nodes parameter that ipxsetup has; interpret it as
an "auto-start" parameter that launches the game when the intended
number of clients have joined the server.
|
|
Always call SDL_SetVideoMode() with bpp=0 to use the native pixel
depth of the display. This avoids problems with some systems that
don't properly support 8-bit screen modes any more. Draw into an
intermediate buffer and let SDL take care of the pixel depth
conversion for us.
|
|
Always call SDL_SetVideoMode with bpp=0 to use the desktop's native
bit depth, and instead draw into an intermediate 8-bit screenbuffer
surface. This ensures that we do not encounter any palette mess-ups
as on some systems true 8-bit screen modes are poorly supported.
|
|
Once a game type (IWAD) has been selected, remember that selection
rather than resetting to the first item in the list when the window is
closed and reopened. This fixes #169 (thanks Alexandre Xavier).
|
|
Vanilla Doom allows warp with the IDCLEV cheat up to MAP40, though it
normally crashes. Match this behavior and set MAP40 as the maximum
rather than MAP34. This fixes #181 (thanks Alexandre Xavier).
|
|
In the C standards, malloc(0) may return NULL without indicating a
failure to allocate. As values read from the MIDI file may be
arbitrary, add one to the allocated length so that we always allocated
a positive value. This fixes #165 (thanks nmain).
|
|
Sanity check the handles passed to the i_sdlsound.c API functions and
ignore requests that involve channel numbers higher than 15. This
fixes a crash if the user sets the snd_channels config variable is set
to a high value. This fixes #149 (thanks Alexandre Xavier).
|
|
speaker_handle should be close()d after forking the separate sound
server. This fixes #192 (thanks Edward-san).
|
|
Don't launch the game if a server address has not been entered; show a
message to the user instead. This fixes #121.
|
|
Using the .mp3 extension in generated music config files carries an
implicit recommendation to use that format. There are a number of
reasons to prefer other formats. The biggest is that MP3 is patent
encumbered. Furthermore, while FLAC and Ogg Vorbis both support the
Vorbis comment format that allows metadata loop point tags to be
specified.
|
|
Thanks Gaerzi.
|
|
Use appropriate directory separator for OS when generating config file
paths. When generating config files, include a header line that
indicates what is being assigned.
|