Commit Graph

123 Commits

Author SHA1 Message Date
Anonymous Maarten abd1405074
platform/sdl1: avoid limiting frame twice in SDL1_Harness_Swap (#512)
* Remove unused debug_print declarations from harness/trace.h

* sdl1: avoid limiting fps twice

SDL1_Renderer_Present already limits fps
2025-10-30 18:39:53 +00:00
BeWorld 7c53f1c0ca SDL3: hide cursor and not show 2025-10-18 07:15:15 +13:00
Carlo Bramini 5787ec29b0 WIN32: replace LOG_DEBUG() with LOG_DEBUG2()
Compiling dethrace rises this error when it is compiled with MinGW:

dethrace/src/harness/os/windows.c: In function 'OS_GetAdapterAddress':
dethrace/src/harness/os/windows.c:440:47: error: macro 'LOG_DEBUG' passed 2 arguments, but takes just 1
  440 |         LOG_DEBUG("name: %s", aa->FriendlyName); // Skip if name is provided and doesn't match FriendlyName
      |                                               ^

According to the content of dethrace/src/harness/include/harness/trace.h, I replaced with LOG_DEBUG2() macro and the problem has been solved.
2025-10-10 19:59:56 +13:00
BSzili a9f82ef975 French localization support 2025-10-10 19:59:18 +13:00
Anonymous Maarten 9c82a405bd
Add SDL3 platform driver (#454) 2025-10-02 22:56:47 +00:00
Carlo Bramini 67a3da8eca WIN32: fix undefined reference to GetAdaptersAddresses on MinGW
This PR fixes issue #487.
2025-10-01 12:09:58 +13:00
Dethrace Engineering Department 65bc16a129
Support for compiling with MSVC 4.20 for binary matching (#465)
* fix some global vars

* make sound support optional

* removes LOG_TRACE calls

* now compiles under msvc 4.2

* removes unused functions, adds ignored functions to report

* bump BRender dependency

* adds docker container for running msvc 4.2

---------

Co-authored-by: Jeff Harris <jeff@1amstudios.com>
2025-07-30 13:27:18 +12:00
Dethrace Engineering Department a7f320beb0
Ini file and fallback directories (#462)
* implements an ini file and fallback directories

* Update README.md
2025-07-19 21:32:55 +12:00
Dethrace Engineering Department 6cbc054790
All cross-platform sys.c implementation (#455)
* adds missing fatalerror constant usage

* removes win95 polyfill bits

* tidies up dossys a little
2025-06-16 21:49:06 +12:00
Dethrace Engineering Department bcbecb372b
Windows networking (#453)
* adds network adapter discovery

* adds a pc-all network implementation

* tidy cmake rules

---------

Co-authored-by: Jeff Harris <jeff@1amstudios.com>
2025-05-10 18:44:54 -07:00
Anonymous Maarten a2cdd1f061
Support multiple platform drivers (#444)
* Start of supporting multiple platform drivers

* Remove dependency of null platform on SDL2

* cmake: support loading SDL2 dynamically

* Move CMake options to project root for SDL2::SDL2 access

* Don't link to OpenGL

* Move common dynamic loading to header

* Add SDL 1.2 platform

* Add SDL1 platform backend

* Remove accidental addition

* Try multiple platform drivers until we find a good one

* Fix sdl1 mouse

* Use my BRender fork FIXME FIXME FIXME REMOVEME REMOVEME REMOVEME

* Build dethrace supporting SDL1 on ci

* use dethrace-labs BRender fork
2025-05-03 23:44:46 +02:00
Dethrace Engineering Department ca1ef76e7f
Adds original 3dfx rendering path (#434)
* using dossys, virtual_fb driver

* keyboard and hires working with dossys

* adds explicit opengl mode, opengles support, use-after-free fix

* remove compiler warnings

* bump BRender dep to latest commit

* adds mouse code from DOS version which correctly scales based on pixel size

* more 3dfx fixes, adds game-completed arg
2025-03-31 18:44:38 +13:00
Szilárd Biró 1ef129a7bf
add AudioBackend_SetVolumeSeparate to the harness audio interface (#433) 2025-01-31 06:56:54 +13:00
Szilárd Biró 20e81f46ff
Polish localization support (#414) 2024-12-04 07:27:34 +13:00
Anonymous Maarten a826a16d75
Play music when starting the game with `-nocutscenes` (#398)
* Use BrIntToFixed in DoHeadups

* Add and use enum for headup slot

* Play music when starting with -nocutscenes

---------

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2024-10-15 08:30:02 +13:00
Szilárd Biró 16048adbc1
turn closesocket into a function (#409)
Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2024-09-20 07:35:37 +12:00
BeWorld d47c7a03d4
remove duplicate "platform->DestroyWindow" (#410)
Duplicate code, not necessary

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2024-09-20 07:34:59 +12:00
Anonymous Maarten cd64d99512
Only pass mouse/keyboard to dethrace when the current window is DethRace (#404)
This is useful when opening a 2nd SDL window to avoid events of the
other window leaking into carmageddon (and the reverse).
2024-09-12 03:04:25 +00:00
Bartosz Kurczyński 90971e9e56
Fixed: Non-spatial sound does not obey global sound effect's volume. Spatial sound is either too loud or to quiet. (#400) 2024-07-27 07:00:09 +12:00
Dethrace Engineering Department ec04a9c111
Fixes crash when not calling ma_audio_unint correctly (#397)
* fixes crash when not calling ma_audio_unint correctly

* adds check that we are not still playing the previous track
2024-07-21 03:01:41 +12:00
Dethrace Engineering Department 6e6ce12eb7
Original music (#393)
* adds support for GOG-format music ogg files

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2024-07-17 06:53:42 +12:00
Dethrace Engineering Department 40919b4295
full screen by default (#394) 2024-07-13 21:16:16 +12:00
Dethrace Engineering Department af3019469a
Audio in cutscenes (#390)
* audio in cutscenes
2024-07-10 06:27:31 +12:00
Anonymous Maarten e3a50e34d1
Fix Windows arm64 build (#371)
* Build arm64 Windows executable

* Use dbghelp to print a stacktrace and use addr2line as last resort

* Print stack depth

* Cleanup windows.c includes + use OS_Basename + define [RX]_OK ourselves

* Cannot do _access(X_OK) on Windows

* SymInitialize: don't invade process

* Use _access_s

* Ignore failure to get symbol line and line number

* Only consider using addr2line when ADDR2LINE is set
2024-07-09 02:28:40 +02:00
Dethrace Engineering Department 68360350e5
Adds proper MacOS bundle and icons for Windows builds (#381)
* macos bundle

* windows icons

* MacOS bundle works when placed inside a carmageddon directory
2024-07-05 09:12:19 +12:00
Anonymous Maarten 673244bb8c
Implement network (#366)
* SendCarData, ReceivedStartRace

* fixes heap overflow during join

* fixes access on possibly-null pDetails

* DoNetScores

* Fix cast warning of comparefn of qsort

* DisplayUserMessage

* Pack tNet_contents on 4 byte boundary so 32-bit and 64-bit Intel cpu get same struct lay-out

* Add a few static assertions to verify net message offsets

* Add dethrace Wireshark dissector (WIP)

* add dissector installation instructions

* Set wireshark info column

* Fix various typo's

* 4-byte align tNet_message_join as well + more dethrace.lua

* Add more assertions

* Fix network car choose loop

* player scores

* tidy

* mechanics

* Implement SortNetHeadAscending for 'Terminal Tag'

* Update WireShark dissector

* start of tNet_message_pedestrian dissector

* network player cars can see each other move

* netmsgid tidy ups

* dissector: print HOST/CLIENT in info column

* Don't allow hosting a game when starting dethrace with --no-bind

* fix oldd copy

* time_step is integer, fixes client car out of sync

* wasted, recover, kick player out

* NetSendPointCrush

* crushpoint, declarewinner

* network race summary wip

* Start and finish a game of tag/fox

* network fixes

* Players can now send love letters to each other

* Rewrite if's a bit

* Use enum values for GetMiscString and DoFancyHeadup

* Fix fox effect

* Fix fox/it effect at start of race

* Use KEYMAP_ enum values

* Disable address sanitizer and dr_dprintf logging

---------

Co-authored-by: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com>
2024-06-20 22:35:48 +02:00
Anonymous Maarten 1d5f6f1634
Add '--verbose' cli argument (#370) 2024-06-20 00:24:56 +02:00
Anonymous Maarten a74ee0ac82
Don't leak file descriptors in GetFileAttributesA polyfill (#372) 2024-06-20 10:22:34 +12:00
Dethrace Engineering Department 6222f6994f
Software renderer (#363)
* BRender software rendering initial commit

* changes required for brender v1.3.2

* fixes missing selection rectangle in race summary screen

* fix track rendering, remove opengl bits

* adding BRender submodule

* enables mirror, bumps brender

* enable linux arm64 builds

* clang-format on all files

---------

Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2024-06-14 19:52:09 +12:00
Dethrace Engineering Department 3870bf8c8a
Fix windows chdir behavior (#365)
* fix windows chdir behavior

* log panics to file and check for gl shading language

---------

Co-authored-by: Jeff Harris <jeff@1amstudios.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2024-06-14 10:31:54 +12:00
Anonymous Maarten 62bbf66deb
Fixes for Portuguese Carmageddon (#353)
* Fix bugs exposed by Portuguese Carmageddon

* Fixes for warnings/errors found in rec2

* Macos says "no"

* Last argument of _partSet can be a pointer

* feof is a macro dereferencing f on some systems

* Allow longer program_name in addr2ine

* Fix casing issue with sounds

French Carmageddon provides DATA/SOUND/fyeah1.WAV where it expects DATA/SOUND/FYEAH1.WAV

* tools: add encode capability to decode script

* Replace font id integers with enum

* Result of BrFileGetLine is not used

* Document the StripControls fix

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>

---------

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2024-05-28 12:59:37 +00:00
Anonymous Maarten e07b7114a3
Implement sound options menu (hidden behind --sound-options) (#359)
* Implement sound options menu (hidden behind --sound-options

* Don't use M_PI*

* DoInterfaceScreen uses gEffects_outlet instead of gIndexed_outlets[0]
2024-05-28 10:10:23 +00:00
Anonymous Maarten c76b766ce7
ci: use libsdl-org/setup for SDL + package with CPack (#362)
* Fix unittests with null renderer

* cmake: fix configuration when building from a non-git/non-release archive

* test: don't access freed memory

* cmake+ci: use libsdl-org/setup-sdl for SDL2 + create package with CMake

* Install all files to root + SDL2.dll
2024-05-28 10:02:39 +00:00
Anonymous Maarten 9054ba9b81
Little touches to windows platform code (#331)
* windows: print strerror message on failure to open file

* Remove leading _ from _program_name

* A few windows functions can be static

* ci: Always upload artifact

* linux+macos: Print message on stderr when fopen fails

* Remove merge artifacts

* Remove stray '#include <stdio.h>'
2024-05-25 21:14:29 +00:00
Dethrace Engineering Department 511d827e7e
chdir to exe path (#345)
* using OS_Basename to get root directory from argv[0]

* remove call to old GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS since opengl guarantees at least 16
2023-08-09 12:56:09 +12:00
Dethrace Engineering Department 80f1a8876c
fixes stack traces on osx (#337) 2023-07-06 12:55:50 +12:00
Dethrace Engineering Department 1c10b74141
Networking #1 - Lobby implemented (#335)
* Basic networking functions implemented to get the lobby functional

* Apply suggestions from code review

* PDNetObtainSystemUserName gets local system name

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-07-05 14:18:52 +12:00
Dethrace Engineering Department 7d475fc117
Fixes player engine stumbling sound (#332)
* audio backend

* fixes stumbing sound at speed

* implements missing S3ChangePitchSpeed, tidies error codes

---------

Co-authored-by: Jeff Harris <jeff@1amstudios.com>
2023-07-04 07:40:44 +12:00
Anonymous Maarten 3f61e9b479
Fix damaged cars in action replay (#333)
* misc: use appropriate types

* Fix buffer overflow read when the_angle == DR_PI_OVER_2

Yes, this happened on my system.

* piping: extra debug

* appropriate type

* piping: read number of chunks correctly

* Always enable replay
2023-06-01 03:13:02 +00:00
Anonymous Maarten 07d517307a
Only use KEYBOARD.COK when it is available, otherwise use embedded table (#322)
* Some executables accept a -german command line option for a 'safe' environment

* Add ascii table for carmageddon, and use it when KEYBOARD.COK is not available

* Remove unneeded braces in input.c

* Use KEY_SHIFT_ANY instead of KEY_LSHIFT

* Remove empty line

* Move ascii tables to external header

* Make sure to treat extended ASCII as unsigned: they must be positive to avoid out-of-bounds texture access
2023-05-04 11:27:06 +00:00
Dethrace Engineering Department 99473ffdf5
adds (void) to all functions taking no args (#318) 2023-05-02 23:07:01 +12:00
Dethrace Engineering Department c90f24d2e0
Fixes missing fatal error messages (#316)
* fixes missing fatal error messages
2023-05-02 13:01:28 +12:00
Anonymous Maarten 597de52fd3
Build dethrace with -Wstrict-prototypes (#314)
* Add HOOK_NORETURN to certain function declarations

This fixes the following warning:
warning: ‘noreturn’ function does return

* Fix -Wstrict-prototypes warnings

* Fix -Wstrict-prototypes warnings in S3

* harness: split null.h in null.h and null.c

* Move GLRenderer_ClearBuffers to previous location

* Whitespace fixes
2023-05-01 23:21:02 +00:00
Dethrace Engineering Department 34a22f2516
Provide an argument to GLRenderer_FlushBuffer (#313)
* fix flush by correctly providing an argument
2023-04-30 22:15:40 +12:00
Dethrace Engineering Department 33000e4623
Remove references to `u_material_index_range` (#311)
* fixes issue 304
2023-04-26 21:48:50 +12:00
Dethrace Engineering Department 35a4ce83df
implements brender environment mapping (#309) 2023-04-25 10:36:52 +12:00
Dethrace Engineering Department f3515d5f64
SmackerLib API (#303)
* adds better smack support

* more docs
2023-04-19 13:11:56 +12:00
Dethrace Engineering Department ef9e4d668d
Implements win95sys.c (#301)
* refactor to use win95sys instead of dossys

* added underscore to avoid conflict with windows functions
2023-04-18 22:50:05 +12:00
Dethrace Engineering Department 1a0301b6ee
Smudged vertices (#300)
* implements vertex shading and smudging

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-04-14 21:58:15 +12:00
Anonymous Maarten dd6a7cbc6f
Fix for running with -robots + implement DOS gore password check (#249)
* Fix SIGSEGV when running with -robots

We cannot write to read-only memory.

* Add --dos-mode argument to require entering password
2023-04-01 15:42:28 +13:00