Commit graph

3194 commits

Author SHA1 Message Date
Simon Howard
37d108a5ab PHILOSOPHY: Minor formatting fixes 2016-11-26 21:35:08 -05:00
Simon Howard
d9fa2c3a16 PHILOSOPHY: format command-line args as code. 2016-11-25 00:18:34 -05:00
Simon Howard
7a140df7c0 hexen: Convert demo code to use new demo API.
The vvHeretic bits are non-vanilla extensions and we should be able
to disable these entirely either when recording or playing back.
2016-11-25 00:12:31 -05:00
Simon Howard
e913d920dc heretic: Convert vvHeretic code to new demo API.
The vvHeretic bits are non-vanilla extensions and we should be able
to disable these entirely either when recording or playing back.
2016-11-25 00:03:29 -05:00
Simon Howard
45e57dd270 Add API for handling non-vanilla demo extensions.
As per the recent change to PHILOSOPHY, we now support non-vanilla
demo format extensions provided that warnings are given and there is
an option to disable them (#817). Add an API for handling such
extensions in a consistent way across games.
2016-11-24 21:33:03 -05:00
Simon Howard
76dd7ccbc3 PHILOSOPHY: Add exception for demo format extensions.
This follows some recent discussions around the project's philosophy
and which fan-made hacks are supported (specifically the Doom
v1.91 / -longtics feature). It's worth providing some explicit
guidance as to why this feature is supported, while other executable
hacks are not.

Some of the features of this new clause are not yet implemented (the
-strictdemos flag and the warnings when playing non-vanilla demos).

This is part of #817. Thanks to @AXDOOMER for challenging some of the
perceived inconsistencies in the project philosophy and inspiring me
to explain this in a more rational/structured way.
2016-11-24 20:40:57 -05:00
Simon Howard
4f5b2b8a2f hexen: Forbid demo extensions in WAD files.
Save and restore of these extension bits is a convenience for demo
playback purposes and not intended as an editing feature. If a demo
with such bits set is found inside a WAD file, we ignore them as
Vanilla Hexen would do.

Part of #817.
2016-11-24 20:20:28 -05:00
Simon Howard
1ae0fe6984 NEWS: Add some missing items. 2016-11-24 20:17:37 -05:00
Simon Howard
23f5b06c78 NEWS: Reformat to consistent past tense. 2016-11-24 19:44:19 -05:00
Simon Howard
2c55acf403 Change email address for feedback to dev list.
This address is intended for bug reports. It's better if this is sent
to the dev team's mailing list rather than to me directly.
2016-11-24 19:27:12 -05:00
Simon Howard
297e10ae2b PHILOSOPHY: Clarify "vanilla" section.
We are now working to emulate older (pre-v1.9) Doom versions, so it
is worth clarifying the goals of the project slightly.

Also add Chex Quest to the list of games.
2016-11-23 00:50:09 -05:00
Simon Howard
89fc8d8991 heretic: Forbid vvHeretic options in WAD files.
As with the Doom v1.91 format, parsing of vvHeretic extension bits is
a convenience for demo playback purposes and not intended as an
editing feature. If a demo with such bits set is found inside a WAD
file, we ignore them as Vanilla Heretic would do.

Part of #817.
2016-11-23 00:38:01 -05:00
Simon Howard
e92f889b71 doom: Forbid longtics demos in WAD files.
As per reasoning on #817, we only allow longtics demos as a feature for
users to cleanly record vanilla gameplay without affecting the turning
resolution. When playing back demos, we detect the different header byte
(111) that indicates a longtics demo file and proceed accordingly.

However, we should only support such demos when they are played manually
on the command line by the user. Longtics demo playback support should
not be a feature that WAD authors can use to break from Vanilla
behavior. If such a demo is encountered inside a WAD, treat it as
Vanilla would treat it and exit accordingly.
2016-11-23 00:26:49 -05:00
Simon Howard
999f56818b doom: Load IWAD DEHs after setting gamevariant.
Certain IWADs (Freedoom and Hacx) contain DEHACKED lumps that must be
loaded to be played properly. This is conditional on the value of
gamevariant, but this variable was only being initialized for these
IWADs after the code to load the DEHACKED lumps. Reorder to correct.
2016-11-22 23:45:14 -05:00
Fabian Greffrath
533e3726f0 Try multiple capitalizations when searching for WADs.
Add M_FileCaseExists() that checks if a file exists by trying
multiple different capitalization formats, and change WAD
search code to use this when locating WAD files.
2016-11-22 17:53:48 -05:00
Fabian Greffrath
8f95671864 Merge pull request #818 from CapnClever/hexen-copyfile
hexen/sv_save.c: revert 9e71dbb, fix fwrite check
2016-11-22 14:31:30 +01:00
Thomas A. Birkel
01038bc020 hexen/sv_save.c: revert 9e71dbb, fix fwrite check
The condition and message under fwrite() was a near-copy of the
corresponding fread() case: it now checks and displays correctly.
2016-11-22 07:03:42 -05:00
Fabian Greffrath
9e71dbbd21 hexen/sv_save.c: fix variable 'write_count' set but not used 2016-11-22 11:19:07 +01:00
Fabian Greffrath
40b2fed7e5 hexen/p_acs.c: fix redundant redeclaration of CheckACSPresent() 2016-11-22 11:17:02 +01:00
Simon Howard
152e5c01d2 Merge pull request #814 from CapnClever/hexen-mousecontrols
hexen/g_game.c: Include miscellaneous mouse functionality
2016-11-20 21:53:49 -05:00
Simon Howard
02fd356266 Merge pull request #812 from CapnClever/raven-demoplayback-args
g_game.c: Don't overwrite Heretic/Hexen timedemo arguments
2016-11-20 21:50:12 -05:00
Thomas A. Birkel
84a2e9f0f9 hexen/g_game.c: Include miscellaneous mouse functionality
Strafe left, strafe right, and move backward mouse commands work.
'Double click acts as "use"' option works, where previously it was
always enabled.

Fix for #813
2016-11-20 13:22:43 -05:00
Thomas A. Birkel
089ab59dff g_game.c: Don't overwrite Heretic/Hexen timedemo arguments
Same as commit 621a8d8 but changing G_TimeDemo().

Additional fix for #803
2016-11-20 11:13:50 -05:00
Simon Howard
dc4eb0ba8d Merge pull request #805 from AXDOOMER/master
Fix number of joystick buttons so Chocolate-Setup doesn't crash
2016-11-13 00:36:02 -05:00
Alexandre-Xavier Labonté-Lamoureux
8c282de8f9 Fix number of joystick buttons so Chocolate-Setup doesn't crash
This fixes #799. Made the size of 'static int *all_joystick_buttons[]'
explicit so the compiler will know if there is something wrong.
2016-11-12 23:08:19 -05:00
Simon Howard
226a67f8bf Merge pull request #804 from CapnClever/raven-demoplayback-args
g_game.c: Don't overwrite Heretic/Hexen demo playback arguments
2016-11-11 10:10:54 -05:00
Thomas A. Birkel
621a8d8362 g_game.c: Don't overwrite Heretic/Hexen demo playback arguments
-nomonsters and -respawn need to be read for vanilla demo playback: this
fix allows either command line or special bits to enable them.

Fix for #803
2016-11-10 23:44:06 -05:00
Simon Howard
406a15b840 Merge pull request #797 from CapnClever/setup-testmouse-thresholdzero
v_video.c: Enhance V_DrawMouseSpeedBox in non-acceleration cases
2016-11-10 18:15:23 -05:00
Thomas A. Birkel
61fbb8bcf7 v_video.c: Enhance V_DrawMouseSpeedBox in non-acceleration cases
Display speed box when acceleration settings are inconsequential.
Additionally, show as direct mouse input and adjust if input exceeds box
length by decreasing resolution.

Fix for #791
2016-11-10 03:21:58 -05:00
Simon Howard
dc2d1d6229 Merge pull request #800 from fabiangreffrath/issue794
p_saveg.c: initialize result in saveg_read8()
2016-11-08 11:59:35 -05:00
Fabian Greffrath
b0c0fb1500 p_saveg.c: initialize result in saveg_read8()
When Choco has reaches the end of a savegame file, further attempts to
read from this file with fread() will fail and the result variable
will not get set set. Since the result variable does not get initialized
either, saveg_read8() will return some "random" value.

However, as it turns out, the uninitlaized value of the result
variable isn't that random at all, but most often 0. Unfortunately, 0
has a specific meaning in the context of p_saveg.c, as it is the value
of tc_ceiling in enum specials_e. As a result, the tclass variable in
P_UnArchiveSpecials() will get interpreted as tc_ceiling and lead to
the construction of ceiling thinkers until Choco runs out of zone
memory.

What this little change does is initialize the result variable
returned by saveg_read8() to some arbitrary value that has no further
meaning in any of the enums in p_save.c. This will lead to Choco
erroring out with an "unknown tclass" message, which is consistent
with Vanilla. The actual tclass value may be different, but since it
is expected to be somehow "random" this isn't something I plan to
emulate any further at this point.

Fixes #794, #658, #85.
2016-11-08 08:43:44 +01:00
Simon Howard
48e19c69bf Merge pull request #790 from CapnClever/raven-compat-setup
Compatibility options in Heretic and Hexen
2016-11-01 15:27:21 -04:00
Thomas A. Birkel
1e15f89231 Update branch with requested changes
Whitespace error; string-compare handling; rewording of NEWS description;
removed useless variables.
2016-10-31 13:29:15 -04:00
Thomas A. Birkel
52cee8eac8 Add compatibility options to Heretic/Hexen
Includes unlimited demo support for both games, savegame buffer overrun
suppression for Heretic, and CopyFile allocation fix for Hexen.
2016-10-28 20:50:14 -04:00
Thomas A. Birkel
ffb988cdec hexen/sv_save.c: Rewrite save-reading code and CopyFile, misc cleanup
Changes functionality such that a compatability option to toggle
a vanilla savegame limit can be added cleanly.

'StreamOut' functions changed to 'SV_Write' for consistency/clarification.
2016-10-28 19:44:31 -04:00
Thomas A. Birkel
32928efdfd heretic/p_saveg.c: Reproduce vanilla savegame error
Removes SaveGameType variable, since the SVG_RAM code was never used.
2016-10-27 17:24:04 -04:00
Fabian Greffrath
15b8e6e1e4 i_sdlsound.c: fix compilation with libsamplerate 0.1.9
This new version has const-corrected the data_in field, fixes #788
2016-10-24 15:30:18 +02:00
Simon Howard
9b75e50ff9 Merge pull request #786 from CapnClever/raven-demo-expansion
Hot fix for #432
2016-10-23 18:39:40 -04:00
Thomas A. Birkel
72d58c2ea1 g_game.c: Remove extra demo pointer shift (causes desync) 2016-10-23 18:25:07 -04:00
Fabian Greffrath
4feb5d07e2 p_saveg.c/g_game.c: move common defines into the p_saveg.h header 2016-10-22 14:10:13 +02:00
Simon Howard
c358f7eb00 Merge pull request #784 from CapnClever/raven-demo-expansion
Additional Heretic/Hexen demo support
2016-10-21 11:13:12 -04:00
Thomas A. Birkel
42e8b05aa4 Update branch with requested changes, fourth pass
Clean up bit checks, add defines to clarify usage
2016-10-21 04:55:50 -04:00
Thomas A. Birkel
aa3e8e11e5 Add demo support to automatically playback parameters in Heretic/Hexen
-longtics, -respawn, and -nomonsters are stored in the demo via the
player one header byte.

Move longtics into single file: its usage is now limited to only
G_RecordDemo so it can stay local to g_game.c.

Additional implemention for #432
2016-10-20 18:50:56 -04:00
Thomas A. Birkel
69a8ad9584 Update branch with requested changes, third pass
Improve comments and alignment.
2016-10-20 17:26:08 -04:00
Thomas A. Birkel
425b850cd5 Update branch with requested changes, second pass
Improve comments and parameter descriptions, use M_ParmExists()
instead of M_CheckParam().
2016-10-20 10:51:46 -04:00
Simon Howard
228ea81c51 Merge pull request #785 from CapnClever/raven-config-multiplayer
Fix network player name binding in Heretic/Hexen
2016-10-20 10:14:59 -04:00
Thomas A. Birkel
496810dda5 Fix network player name binding in Heretic/Hexen (#612) 2016-10-19 23:06:45 -04:00
Thomas A. Birkel
9c76e770d6 Update branch with requested changes
Improve indentation and comments, use M_ParmExists() instead of
M_CheckParam().
2016-10-19 00:27:12 -04:00
Thomas A. Birkel
e5d5a0930e g_game.c: Fix -timedemo "realtics" duration in Heretic/Hexen
Same fix that fraggle did for Doom: only matters for multilevel demos so
it wasn't relevant until such demos could be played back.

Partial implementation of #432
2016-10-16 04:17:24 -04:00
Thomas A. Birkel
9d51e53108 Add -demoextend parameter to improve Heretic/Hexen demo support
Vanilla Heretic and Hexen demo support is limited to one level (quits
after level completion) and one life (quits after player respawn). When
-demoextend is used, these premature quits are ignored.

Additional work on Hexen to conditionally suppress demo-related
variable setting whenever loading a map.

Partial implementation of #432
2016-10-15 02:05:31 -04:00