137 Commits

Author SHA1 Message Date
Roman Fomin
54606e7cf8
update build system, remove "woof.com" hack (#2329)
* Add `WITH_FLUIDSYNTH` option and disable it by default.

FluidSynth has a lot of dependencies. On Windows, it takes up about 90% of the
build time with vcpkg. Disabling it by default would speed up the build process
for new developers.

* Disable GCC checks for MSVC (clang-cl) to speed up the configuration step.

* Move CMDLINE and COPYING to docs, remove README.md from distribution.

* Remove "woof.com" hack for console output on Windows.

The console still works in debug builds.

* Always search FluidSynth, update README.md.
2025-07-20 21:13:40 +07:00
ceski
c378d97aef
Add support for SNDINFO ambient sounds (#2280) 2025-06-02 00:12:36 -07:00
ceski
0ef7f192e3 Update README.md 2025-05-09 20:07:19 -07:00
elf-alchemist
bea52a7cf9
Partial ID24 line specials implementation (#2230)
* complevel/demo_version checks now de-macroized
* new `side` arg on ShootSpecialLine for two-sided activations
* new `rotation` floors and ceiling property
* 6 new W/S/G inventory-restting exits
* 24 new W/S/G music changer specials
* 9 new static rotation and offset specials
* 5 new static two-sided scroller specials

---------

Co-authored-by: Roman Fomin <rfomin@gmail.com>
2025-04-04 08:25:12 +07:00
elf-alchemist
f9b9f23be7
Implement ID24 DemoLoop specification (#2141)
* implement id24 demoloop specification

* fixed various assorted issues from draft PR

* added further fixes and simplifications to demoloop system

* cleaner demoloop internals

* implement outro_wipe field functionality

* Revert "implement outro_wipe field functionality"

This reverts commit 1dba7b23d025c32bd4574499d54514c1a4bbcace.

* added demoloop TODO notice

---------

Co-authored-by: Fabian Greffrath <fabian@greffrath.com>
2025-01-16 11:57:44 +07:00
Roman Fomin
5b1851e94d
umapinfo: finale handling improvements, cosmetic changes (#2096)
* rename u_mapinfo->g_umapinfo, cosmetic changes

* update copyright and README.md
2024-12-20 16:00:54 +07:00
Roman Fomin
1e4aa38e0d
replace u_scanner with DECORATE compatible version (#2090) 2024-12-13 18:58:20 +07:00
Fabian Greffrath
cb6c9a5e5c
Update README.md 2024-12-12 15:56:12 +01:00
Fabian Greffrath
b674af945d
Update README.md 2024-12-07 13:40:50 +01:00
Roman Fomin
ffd59bd61a
update README.md (#2065) 2024-12-02 22:19:56 +07:00
Fabian Greffrath
67d3c45b7d
Update README.md 2024-11-26 10:45:09 +01:00
Fabian Greffrath
a78246d8cb fix copyright information in README.md 2024-11-26 08:27:50 +01:00
Roman Fomin
bd81f370c6
implement carousel widget (#2020)
* Don't use Boom logic for next/prev buttons

* Darken disabled icons in complevel vanilla

* Restore menu item for vanilla weapon cycle

* Restore menu item for vanilla weapon cycle, "off" by default

* Reset carousel when resetting status bar

When starting a new game, loading a save game, loading next level, etc.

* Reset carousel when paused or menu is active

* Reset carousel when dead

* Animate switching

* Decouple next weapon selection from ready/pending state

* Reset `nextweapon` state when weapon change command is discarded

* Set `nextweapon` in P_GiveWeapon

* Reset carousel when standard automap is activated

* Reset the carousel if the nextweapon cmd is not sent

---------

Co-authored-by: ceski <56656010+ceski-1@users.noreply.github.com>
2024-11-18 08:03:32 +07:00
Roman Fomin
fbb026b3b1 update the list of build-dependencies in README.md 2024-11-13 20:53:59 +07:00
Roman Fomin
726abe64e5
support for TRAKINFO (#1982)
* switch to yyjson, add sha1 library from Chocolate Doom

yyjson allows comments and has better error reporting.

* search for the system package yyjson

* fix memory leaks (clang-tidy warnings)

* search for extras.wad, add -noextras parameter

* add M_StringToDigest
2024-11-13 12:51:00 +07:00
Roman Fomin
a9c4b09102
compatibility database from DSDA-Doom (#2015) 2024-11-11 23:11:15 +07:00
Roman Fomin
e7c0f19fbe
support for DMXOPL (#1988) 2024-11-07 23:07:28 +07:00
Roman Fomin
2b05d6d6ab
id24: SBARDEF (#1916)
* implement SBARDEF parsing

* add default sbardef.lmp to base

* add support for Boom colors

* implement widescreen mode, F5 switches to fullscreen HUD

* update dig* font

* load defaults from sbhuddef.lmp

* remove hu_stuff.* and hu_lib.*

* add support for translucency, introduce -dumptranmap

* apply Fabian Greffrath's patch, fixes

* build woof.pk3 only if the base files have been modified

* remove key blinking
2024-11-06 12:55:40 +07:00
ceski
3b43ebad50 Update README.md 2024-11-03 21:02:30 -08:00
Roman Fomin
388ee0b8ad rewrite win_opendir.c (from Chocolate Doom) 2024-09-08 10:47:13 +07:00
ceski
3ee1bb572c
Add gamepad rumble support (#1876) 2024-09-07 07:13:47 -07:00
Fabian Greffrath
a34a6662b9 update README.md 2024-09-06 09:17:18 +02:00
Roman Fomin
cd63e89417
move libraries to "third-party" directory (#1879) 2024-09-04 01:52:17 +07:00
ceski
9b91cec258
Add gamepad gyro and flick stick support (#1800)
* Remove obsolete camera update check

No longer needed since mouse and gamepad "prep" were separated.

* Use `MIN_F` constant

* Rename "swap" to "southpaw"

* Reorganize gamepad settings and menu items

* Update defaults

* Use consistent gamepad naming

A few exceptions made for joystick names.

* Simplify `deltatics` calculation

* Simplify `I_CalcGamepadAxes()`

* Track axis update time

* Use axis update time for `CalcExtraScale()`

* Extra sensitivity improvements, refactoring

* Add flick stick feature

* Flush gamepad events on reset

* Add separate touchpad touch and press inputs

* Add `joy_flick_mode`

* Add `joy_flick_rotation_speed`

* Enable float data type for events

* Add gyro support

* Update README.md

* Add option to disable analog sticks

Rename setting to be more descriptive and force new default value. Analog sticks can always navigate menus, regardless of this setting.

* Don't scale flick stick by regular stick sensitivity

When in flick stick mode and holding strafe modifier, regular stick sensitivity still applies.

* Add local space turn/lean options

* Add player space turn/lean options

* Add calibration option

* Remove "clear calibration" menu item

* Fix DisableItem and DisableItemFunc checks

* Add back gyro "tightening" menu item

Set a recommended default. Power users will want to disable this.

* Add gyro "steadying" menu item to combine smoothing and tightening

* Combine gyro space/enable into one setting

* Load gyro calibration once

* Lower max steadying and use 0.1 increments

Also update default steadying threshold to 3.0 degrees/second.

* Cosmetic changes

* Use degrees/second for analog stick speed

A default of 240 degrees/second is an unofficial standard used in many FPS games.

* Disable menu items if joy_enable is set to 0

* Show raw value dot on thermos for deadzone and steadying

Similar to the concept featured in Ironwail. Also reduce scope for some variables.

* Fix opening/closing a gamepad multiple times

SDL_CONTROLLERDEVICEREMOVED events send the instance ID, not the index.

* Enable/disable menu items when gamepad is opened/closed

* Cosmetic change

* Use button names that match gamepad platform

Can be overridden with `joy_platform`. Config read/write always uses Xbox-centric naming, as before.

* Improve touchpad key binding response

* Use sensor state for gyro data instead of events

Read the sensor state instead of using SDL_CONTROLLERSENSORUPDATE events as a workaround for low update rate gyro devices (e.g. Switch controllers). When the menu is active, temporarily enable SDL_CONTROLLERSENSORUPDATE events to capture as many samples as possible for calibration.

* Allow more actions to confirm/cancel "restore defaults"

So that gamepad users can confirm/cancel.

* Let MENU_BACKSPACE back out of menu item selection

Except for binding an input. This allows gamepad users to press B/circle to back out of menu items.

* Reduce scope for `motion`

* Reduce scope for `flick`

* Cosmetic changes

* Change menu item dots to meters with color

* Add "invert" gyro button action

* Use separate gyro space/enable (again)

Let players toggle gyro aiming on/off quickly without affecting the desired gyro space, which is an abstract concept.
2024-08-11 00:43:02 -07:00
Fabian Greffrath
9d2811382f fix external asset contributors copyrights 2024-06-24 14:00:32 +02:00
ceski
fe9e2d8920 Update README.md 2024-06-01 07:28:36 -07:00
Roman Fomin
e100d5c3f1
add support for 8-bit PNG files (#1708)
* move V_LinearToTransPatch function to v_fmt.c

* add simplified V_LinearToPatch function

* rename the appropriate W_CacheLump* to V_CachePatch* or V_CacheFlatNum
2024-05-28 08:11:14 +07:00
Fabian Greffrath
1dcef22726 release Woof! 14.3.0 2024-03-15 08:15:40 +01:00
Roman Fomin
5ca3c41045
implement support for DBIGFONT lump in FON2 format (#1575)
* add SLADE copyright

* adapt V_LinearToTransPatch from Eternity Engine

This will be useful for PNG support.

* nit-pick: sort copyright holders in README.md

---------

Co-authored-by: Fabian Greffrath <fabian@greffrath.com>
2024-03-12 09:11:21 +07:00
Fabian Greffrath
8048019e72
update README.md with the newest additions (#1466)
* update README.md with the newest additions

* further overhaul

* fixes

* bump copyright year for all recent contributors

* add Usage section with Cheat Codes and CLI

* there will be no Woof! 12.1.0 --> 13.0.0

* document CMake requirement

* v_video.c takes code from Eternity Engine -> GPL-3
2024-02-16 11:25:45 +01:00
Roman Fomin
1503cfed67
menu and related improvements (#1402)
* Use m_array in m_input, cleanup and formatting.

* M_Responder refactoring, mouse cursor in the menu.

* Windows console exit message.

* Highlight menu patches/strings.

* Convert v_trans.c to double (there were auto conversions due to double
  constants anyway).

* Implement resolution scale thermo.

* Menu items with different heights.

* Mouse support in save/load and volume menu.

* Remove S_STRING, cleanup.

* Remove dynamic help screen.

* Rearrange menus using Ceski's layout.

* Add `static` everywhere.

* Improve help messages.

* Hide mouse cursor when keys or pad buttons are pressed.

* Disable complevel menu item if COMPLVL lump is present.

* Enable mouse capture for exclusive fullscreen.

* Adjust resolution scale thermo:
  - First step is from 100% to 200%
  - 50px steps
  - Last value is native resolution height

* Remove "Mouse Treshhold" from the menu.

* Add autostrafe50 to compat menu.

* Implement S_ONOFF (alias for S_YESNO).

* Remove S_NEXT/S_PREV, implementation of tabs for page switching (thanks Ceski!)

* Add LB/RB for menu Left/Right keys.

* Add color codes support to M_DrawStringCR.

* Shaded help string.

* Cycle pages in Save/Load screen using mouse.

* Reformat and fix M_ResetDefaults function, don't reset MIDI device

---------

Co-authored-by: ceski <56656010+ceski-1@users.noreply.github.com>
2024-02-03 16:27:34 +07:00
Fabian Greffrath
63124579ae
adapt Eternity Engine's smooth Automap line drawing approach (#1388)
* adapt Eternity Engine's smooth Automap line drawing approach

* get rid of flexTranInit
2024-01-12 14:34:38 +01:00
Fabian Greffrath
edd527feb0
NanoBSP integration (#1342)
* WIP: NanoBSP integration

* update to latest nano_bsp HEAD

* update to nano101 as posted on the DW forums

* include p_extnodes.h instead of declaring P_GetOffset()

* one comment

* update copyright information

* introduce W_LumpExistsWithName()/W_LumpLengthWithName()

* use W_LumpExistsWithName()/W_LumpLengthWithName() more thoroughly

* error out if no SECTORS lump found

* report failing map lump name, not number
2023-12-29 10:12:09 +01:00
Fabian Greffrath
3d4e3122cd
add copyrights of LxDoom/LSDLDoom and PrBoom authors 2023-11-29 11:09:02 +01:00
Fabian Greffrath
6b0359b01e mention Voxel in README, update some Copyrights 2023-11-13 10:20:02 +01:00
Fabian Greffrath
38d29534e1
Update README.md 2023-09-14 13:53:12 +02:00
Fabian Greffrath
483e4e7892
add support for XGLN/ZGLN nodes (#1186)
* add support for XGLN/ZGLN nodes

Code taken from DSDA-Doom, thanks @kraflab

Fixes #1185

* docs

* fix typo/forgetto

* document origin

* register new parameter

* add some linedef == NULL checks

* condense P_SetupLevel() logging even further

* cosmetics
2023-08-24 20:11:36 +02:00
Fabian Greffrath
c1d7849266
Update README.md 2023-05-02 15:02:45 +02:00
Fabian Greffrath
ab6b4e1f01
clarify library dependencies in the "Build" section 2023-04-28 13:40:08 +02:00
Fabian Greffrath
3ed6defb4b
Update README.md (#1000)
* Update README.md

* full path to WOOFHUD docs

* clarify build environments

* do not announce static Windows builds yet
2023-04-20 14:41:42 +02:00
Fabian Greffrath
6faaefcc4e
factor out HUD font patches and update with the ones provided by @liPillON (#950)
* factor out HUD font patches and update with the ones provided by @liPillON

* replace only the patches which were actually changed

* add kraflab's copyright

* update copyright holders

Regarding license: derivative work of GPL-2+ (Boom) is still GPL-2+
2023-03-22 11:04:01 +01:00
Fabian Greffrath
0daf278ce4 update copyright information for textscreen fonts 2023-03-21 11:08:23 +01:00
Fabian Greffrath
cd3768ef44 grammar fix: past participle of teach = taught
Thanks @MrAlaux
2023-02-03 08:31:08 +01:00
Fabian Greffrath
95cde386eb
load sound lumps with libsndfile (#864)
* Load sound lumps with libsndfile

* factor out entire sound lump loading into i_sndfile.c

* fix void pointer arithmetics

* fix wav buffer length calculation

* include libsndfile in vcpkg CI
2023-01-11 08:37:45 +01:00
Roman Fomin
b69852fb07
switch to vcpkg for MSVC build (#855)
* switch to vcpkg for MSVC build

* Remove library downloads and install in MSYS2 environment.

* Add vcpkg.json with dependencies.

* add vcpkg to CI

* fix parallel linking conflict (files with the same name)

* use vcpkg targets (fix debug build)

* delete cross compilation toolchain files, update README.md

* switch to ninja for MSVC build

* turn off MSYS2 update

* use binary caching feature, save to GitHub using NuGet backend

* This works much more robust, also it's recommended method:
  https://github.com/microsoft/vcpkg/blob/master/docs/users/binarycaching.md

* move MSVC workflow to separate file, don't run it on pull request
2022-12-30 20:44:59 +07:00
ceski
5734d8b589
winmidi: Fix looping (#823)
* winmidi: Fix looping

* Send NOP event for non-tempo meta events

* Revert "Send NOP event for non-tempo meta events"

This reverts commit 7e71eca6b3d8eec8dfc5a920a40c960c1f0bdc46.

* Ignore unsupported event types

* Update copyright

* Update README.md
2022-12-03 20:45:24 +07:00
Fabian Greffrath
0da1ef78cd some updates to README.md 2022-10-06 09:33:19 +02:00
Fabian Greffrath
6b4ff8fe8c
minor wording fix 2022-08-10 20:36:58 +02:00
Fabian Greffrath
d6fa5e79be
update README.md (#696)
* Sort Releases before Compiling.
* Mention Windows binaries.
* Refer to Changelog instead of quoting it.
* Mention some demo QoL features.
2022-08-10 16:36:01 +02:00
Fabian Greffrath
760e947633 release Woof! 10.1.0 2022-07-18 09:37:39 +02:00