Commit Graph

136 Commits

Author SHA1 Message Date
Anonymous Maarten db3d6ac91e
Implement edit functions + functions around camera + ... (#146)
* Fix SEGFAULT due to reading out of bounds (we were using wrong index)

* Use floats instead of doubles

* Implement all flicplay.c functions

* Compare ptr against NULL

* Implement TotalRepair

* Implement some edit functions

* Implement actor/special volume related edit functions

* Implement MungeSpecialVolume

* Implement a few depth functions

* Fix location of spawned actors (when SHIFT was not pressed)

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2022-09-28 20:40:53 +13:00
Anonymous Maarten b5ccfe7dd2
No more gcc/clang warnings (#169)
* Change type of DRPixelmapCleverText2 to char*

* Fix warnings emitted due to -Wreturn-type

* Fix BR_ONE_LS redefinition warning

* Fix warnings emitted by -Wparentheses

* Tag FatalError and PDFatalError with noreturn attribute, fixing -Wreturn-type warnings

* Fix string type of TransBrPixelmapText~

* Fix a few -Wmaybe-uninitialized warnings

* Fix -Wformat and -Wpointer-sign warnings in test_datafile.c

* Fix -Wshift-negative-value warning

* Fix -Wpointer-sign warning

* chdir is declared with attribute 'warn_unused_result'

* Fix -Wmaybe-uninitialized warning

* Fix -Warray-bounds warning

* Fix -Wmaybe-unitialized warning

* Fix -Wmaybe-unitialized warning

* Fix -Wmaybe-unitialized warning

* Fix -Wmaybe-unitialized warnings

* Fix a few -Wmaybe-uninitialized warnings

* cmake: unify warnings amongst gcc and clang

* fatalerror_fixup

* Fix -Wabsolute-value warning

* Fix all warnings when building with MinGW on Windows

* Fix warning caused by -Wimplicit-fallthrough

* Fix warnings caused by -Wcast-function-type

Fixes these types of warnings:
cast between incompatible function types from ‘br_uint_32 (*)(br_actor *, void *)’ {aka ‘unsigned int (*)(struct br_actor *, void *)’} to ‘intptr_t (*)(br_actor *, void *)’ {aka ‘long int (*)(struct br_actor *, void *)’} [-Wcast-function-type]

* Fix warning caused by -Wmissing-field-initializers

* Normalize direction_v vector and store in displacement
2022-09-24 17:42:58 +12:00
Anonymous Maarten 8e576ddbe3
Fix buffer overload when loading more then 100 pixelmaps on 64-bit system (#175) 2022-09-23 21:15:26 +12:00
Anonymous Maarten fc65625272
brender: don't override the row_bytes stored on disk (#167) 2022-09-23 20:52:40 +12:00
Anonymous Maarten b71d585583
Simplify code in ChooseNewObjective (#168) 2022-09-23 14:47:08 +12:00
Anonymous Maarten b7da8770b4
Fix IRandomBetween returning out-of-range numbers (#173) 2022-09-23 08:39:52 +12:00
Dethrace Engineering Department 370c7ca480
Implements TeleportOpponentToNearestSafeLocation (#165)
* implements TeleportOpponentToNearestSafeLocation
2022-09-16 21:19:16 +12:00
Anonymous Maarten 4bb4be17a4
Fix pedestrian edit functions segfaulting when path isn't created (#163)
Dropping a point in pedestrian edit mode would segfault otherwise.
CARM95.EXE also segfaults.

How to reproduce:
- enable Pedestrian edit mode
- F10 or F11 (+a few other)
2022-09-16 15:14:31 +12:00
Anonymous Maarten 25b796335d
Fix address sanitizer error when loading "Industrial Action" (#150)
* Move resource header check out of UserToRes to allow BrResCheck to fail

* Add BrResCheck and BrResSize to brender.h header (used while debugging)

* Skip OG code behavior of setting row_bytes to align to a 4 byte boundary
2022-09-16 15:13:11 +12:00
Anonymous Maarten 9ec9fb008f
Implement DoEndSummary2 (aka Damage Gallery) (#152)
* Implement DoEndSummary2 (aka Damage Gallery)

* Fix warnings emitted by -Wabsolute-value and -Wsometimes-uninitialized
2022-09-16 15:10:52 +12:00
Anonymous Maarten 4c6e3a325c
Use nearest_section in FindNearestGeneralSection (#162) 2022-09-16 15:09:41 +12:00
Anonymous Maarten 25ecaf7309
damage_magnitude_accumulator is only available when a car is oppo, net_human or local human (#160) 2022-09-16 08:43:37 +12:00
Dethrace Engineering Department e8a38f4a1a
fixes NextPratcamChunk (#155) 2022-09-12 10:32:28 +12:00
Anonymous Maarten 0081b02dec
Implement parts shop (#151)
* Change type of last argument of TransBrPixelmapText from 'signed char*' to 'char*'

* Implement parts shop
2022-09-12 06:16:01 +12:00
Anonymous Maarten 561e369ede
Implement pratcam (#148) 2022-09-11 20:37:23 +12:00
Dethrace Engineering Department de154693c9
implements processfrozen (#154) 2022-09-11 16:12:41 +12:00
Dethrace Engineering Department 5e05fc1c6b
Aggressive opponents (#153)
* implements crash earnings, fixes wasted message
2022-09-11 15:52:32 +12:00
Anonymous Maarten f99be5f57a
Fix buffer overflow when driving with full speed into noncar thing (#144) 2022-09-07 15:59:37 +12:00
Anonymous Maarten 519671f9e8
Refactor CMake build system (#119)
* Remove 'SCRATCH' file

* cmake: move as much as variable assignments after project()

* Embed version in dethrace executable

* Allow installing DethRace + create binary archive

* Use ashutoshvarma/setup-ninja github action for getting ninja

* cmake: group user configurable options

* cmake: building in debug mode will add -g

* cmake: provide dethrace_werror interface target + DETHRACE_WERROR cmake option

* Update SDL2 to latest release

* Rename dethrace_werror target to compile_with_werror

* Also add -Werror to dethrace
2022-09-05 14:22:59 +12:00
Anonymous Maarten 8a2167920e
Add support for fullscreen + never grab mouse + resize window (#140)
* Implement full-screen via ALT+ENTER

* Never grab mouse

* Allow resizable window + fix mouse when resizing/switching to full screen

* Keep aspect ratio of gl viewport when resizing window

* Fix mouse when resizing the window

* Fix off by one error
2022-09-05 09:59:00 +12:00
Anonymous Maarten b3bdbb2650
Little changes (#139)
* br_material.power is a br_scalar (=float)

* Implement FopRead_OLD_VERTICES

* Fix FopRead_OLD_MATERIAL_INDEX

* Use BR_ASIZE in appropriate places

* Use br_material* instead of intptr_t

* Reset resource parent after reading struct

* Use flags of correct type

* Use NULL instead of 0

* Ignore utf-8 errors when decoding carmageddon-"encrypted" files to utf-8
2022-09-02 12:50:55 +12:00
Willian c220ad0b5e
remove unused Windows HANDLE (#142) 2022-09-02 12:43:16 +12:00
Priit Laes 8c060fa1c7
gl: Relax GLSL requirement from 3.3 to 3.1 (#137)
* opengl: Bump to OpenGL 3.1 / GLSL 1.40
2022-08-31 15:01:20 +12:00
Szilárd Biró 20c2128b89
Big endian fixes (#135)
* BRender big endian fixes

* Game big endian fixes

* Replace BrSwap32 with BrHtoNL for load/save

* Detect endianness using CMake
2022-08-30 09:19:50 +12:00
Dethrace Engineering Department ee83724f8a
Opponents following race and cheat paths (#136)
* fix segfault, now hitting not implemented on ProcessPursueAndTwat

* opponents actually sort of driving

* remove cglm dependency

* opponents driving around generally working

* fully mapped out gEdit_funcs

* adds --i-am-cheating flag to allow skipping entering cheat code

* cleaned up ProcessFollowPath

* cleanup FollowCheatyPath, fixes crash in SmokeLine

Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2022-08-29 15:21:57 +12:00
Anonymous Maarten 05f16d3066
Fix prototype(s) + function uses (#133) 2022-07-11 06:35:38 +12:00
Dethrace Labs 44df22a375 implement missing S3StopOutletSound 2022-06-03 17:40:06 +12:00
Dethrace Engineering Department 7730cf842e
Audio support (#130)
* 2d sound working in menus

* fix incorrect references to gIndexed_outlets

* 3d sound, pitch, pan, volume

* enable per-outlet pitch

* fix path length issues, compile warnings

* fixes hall of mirrors effect in smack videos

* fixes ped running away direction

* fixes horn by fixing S3GetChannelForTag

* fix master volume, uninitialized variable
2022-06-03 13:03:49 +12:00
Anonymous Maarten e97bc083d9
Add pedestrians + power-ups (#118)
* Add pedestrians

* Pedestrian tweaks

* glrenderer: add texture tranformation support for animated pedestrians

* Use Brender functions in more locations

* Implement CheckPileDriverBonus

* revert changes to CollideCamera2 except bugfix

* fix uninitialized variable

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
Co-authored-by: Dethrace Labs <carmageddon.reversing@gmail.com>
2022-05-10 23:39:55 +12:00
Dethrace Engineering Department 1a884666ec
Offroad effects (#128)
* dust and bumpiness
2022-05-05 05:05:52 +12:00
Dethrace Engineering Department 63d8c37b44
Textured horizons (#127)
* implements horizon textures
2022-05-04 13:45:41 +12:00
Dethrace Engineering Department 2db34d2913
Implements "noncar" physics (#122)
* Noncar physics

* Noncar collision detection

* Noncar bending and snap-off working
2022-05-03 14:05:15 +12:00
Dethrace Engineering Department ffc117264f
flush buffers in EndScene (#126) 2022-05-02 08:48:35 +12:00
Dethrace Engineering Department 4491add68f
fixes #123 (#124) 2022-05-02 08:30:07 +12:00
Dethrace Engineering Department 3ea4dc83fa
Vehicle damage (#116)
* implement damage and repair

* clang format align trailing comments

* damage HUD

* wheel rotation damage wobbles
2022-04-01 10:52:09 +13:00
Anonymous Maarten 4115ce64eb
Detect CTRL/SHIFT/ALT + add control dialg + add end-of-race ranking screen + fixes (#113)
* Detect CTRL/SHIFT/ALT + add demo menu's

* Fix cockpit + fancy headup roll-in

* Align on bytes (glPixelStori)

* Fix AddressSanitizer error when mousing around (+introduce pixelmap dispatch)

* Fix moving around groovidelics/funkotronics (Found with AddressSanitizer)

* Fix out-of-bounds write when entering map (thx AddressSanitizer)

* Fix out-of-bounds read in BrPixelmapPixelSet through DimRectangle (thx AddressSanitizer)

* Allow moving around the 3d scene in map mode

* Let BrPixelmapFill make use of the dispatch table

* Modify view port to fix rendering in map mode

* Fix AddressSanitizer error when loading demo (loading cop cars)

* Don't use magic values

* Fix offset'ed depth effects when rendering to an offset window

* Implement edit mode (not all functions are added yet)

* Implement cockpit Look(Left|Forward|Right)

* Fix AddressSanitizer error in DoInstruments

* Fix wheel in cockpit when switching position

* Implement special volume actor creation for edit functions

* Add all edit options for MSVC

* Implement first screen of race summary

* Use dispatch for BrPixelmapText

* Use dispatch for BrPixelmapAllocateSub

* Make BrPixelmapDirectLock and BrPixelmapDirectUnlock use the dispatch table

* Don't print LOG_TRACE for BrDevLastBeginQuery to avoid spamming the console

* Implement BrDevLastBeginQuery and BrDevLastBeginSet

* Fix end-of-race for demo's + fix splatpack

* Add controls panel

* Rewrite SmokeLine a bit (there is an AddressSanitizer error at the 'if (*depth_ptr > z)' check, which this change does not fix

* Dispose cop cars => Fix playing multiple levels with cop cars in the same session

* Implement easy memory pixelmap methods

* Fix 2 errors with splatpack

* Fix MainMenuDone1 and MainMenuDone2
2022-03-30 15:03:46 +13:00
Anonymous Maarten 8cf723c669
Dispose track after race + get german localization running (#107)
* Implement DisposeTrack

* Implement LoadInterfaceStrings + DrawTranslations + fix german interface

* Recognize all flavours: full/demo/splatpack/splatpack demo/splatpack x-mas demo

* Fix input for demos
2022-03-28 08:49:52 +13:00
Anonymous Maarten 80f5fceff9
Start To Mouse (#109)
* Detour fopen to an OS-specific implementation of fopen

* Set opponent count to 5

* Implement switching opponents in 'View opponent' sub-panel
2022-03-25 12:36:11 +13:00
Dethrace Engineering Department 7e14a97692
Easier platform porting (#108)
* Create PORTING.md

* Creates io_platform abstraction

* removes miniposix

* remove unistd refs

* removes watcom functions

* fixes shadow rendering memory leak
2022-03-21 12:10:49 +13:00
Anonymous Maarten d3ebbb6f1f
Visual Studio Fixes (#106)
* Visual Studio Fixes

* Disable flooring the frame period to 10ms

* Don't build with mingw on gha
2022-03-17 10:30:38 +13:00
Dethrace Engineering Department e61ecfa6a1
Shrapnel and sparks (#105)
* splash, shrapnel, spark effects
2022-03-14 10:59:16 +13:00
Anonymous Maarten e2164d3377
Start checking checkpoints + laps (#103)
* Start counting laps

* Fix flashing checkpoints in map mode

* Clean up taken image after changecar dialog
2022-03-12 20:03:37 +13:00
Anonymous Maarten 60102a37e4
Add change car dialog (#102)
* Add 'change car' dialog

* Implement functions to support switching car

* When opening a file in brender fails, try all uppercase file before failing

* Some cars need GetFourScalars
2022-03-10 14:32:09 +13:00
Anonymous Maarten d4dc8d2013
Add change race dialog (#101)
* Implement 'add races' dialog
2022-03-08 06:15:27 +13:00
Anonymous Maarten b512e1542a
Don't grab the mouse when debugging (#97)
* Add platform-dependent code to detect attached debugger
* Only do relative mouse mode when debugger is not attached
* Do an abort when a debugger is attached
2022-03-07 10:59:47 +13:00
Dethrace Engineering Department 64cf56dd8a
Update skidmark.c 2022-03-07 10:53:06 +13:00
Dethrace Engineering Department 4ed433e095
Smoke effects (#100)
* fixes missing tires
* Adds smoke rendering
2022-03-07 10:26:42 +13:00
Dethrace Engineering Department 6eb6d59a40
Fix PDKeyDown2 (#98) 2022-03-04 11:42:12 +13:00
Anonymous Maarten 6568a15103
Truckload of updates (#96)
* dethrace: implement all missing brucetrk functions

* brender: use sqrtf in macros to avoid double->float conversion

* dethrace: implement a few key callbacks (will crash further along the line)

* dethrace: start earning some money (display credits message)

* dethrace: create spark/shrapnel objects (no render yet)

* ALL IN ONE

* brender: implement 'easy' euler functions

* brender: implement BrMatrix4PreTransform and BrTransformToTransform

* brender: add TAU constand (=2*pi)

* brender: add FIXME/STUB to render function (+ implement it)

* brender: add a few functions to the global brender header

* Add DETHRACE_FIX_BUGS macro to the cmake build system to optionally fix bugs/compiler warnings

* dethrace: implement 2 crush functions

* dethrace: use floats in FindFace + re-use local stack variable

* tNet_contents is an enum: the header aliases the start of the other messages

* dethrace: stub PDMouseButtons

* dethrace: implement a few utility functions

* dethrace: implement ChangeSelectionTo + de-inline ResetInterfaceTimeout

* dethrace: use chars instead of magic values + add fix for compiler warning about number formatting

* dethrace: compare a pointer against a NULL pointer

* dethrace: implement a lot of powerup functions

* dethrace: implement a few piping functions

* dethrace: implement a few opponent functions

* dethrace: completely implement load/save (or so I hope :D)

* dethrace: implement a few oily functions

* dethrace: implement got/lose/periodic powerup proc array

* brender: add BrXXXFindHook functions to brender header

* dethrace: register callback functions on missing material/model/map/tables

* dethrace: compare pointers with pointers and ints with ints

* Hide powercallback typedefs behind #ifdef

* dethrace: implement Del/End/PgDn APO buy buttons logic

* Add BrDiagHandlerSet to brender.h

* dethrace: SwithToRealResolution/SwitchToLoresMode call PD functions

* Use correct type when comparing against characters.

* dethrace: implement writing out and disposing crush data

* dethrace: add NonFatalError + fix entry in gError_messages

* dethrace: implement StopCarSmoking and StopCarSmokingInstantly

* dethrace: implement SkidNoise + ScrapeNoise + DamageUnitWithSmoke + DamageUnit

* dethrace: InitCarSkidStuff -> use floats instead of doubles

* Add BrPixelmapCopy + BrPixelmapPixelSet to brender header

* dethrace: implement DisableCar

* dethrace: stub out a lot of functions in sound.c

* dethrace: load and dispose pratcam data

* dethrace: minor additions to flicplay.c

* skidmark: compare floats with floats

* dethrace: implement some functions to convert face materials for different wall texturing levels

* add stub BrPixelmapCopy function + add STUB_ONCE calls in other methods

* MungeForwardSky does nothing, I think

* Use macros to initialize variables in AllocateCamera

* Implement AdjustSkid + use floats

* DRStdioOpenRead: Compare pointer against NULL

* dethrace: Implement IncrementLap

* dethrace: implement ChangeAmbientPratcam

* Implement SortOutRecover

* Implement CheckHornLocal

* Use COUNT_OF in dethrace

* Draw arrow blip on map

* Implement DRPixelmapCopy

* Fix error code value

* Stub GotPowerupX

* Add ability to run the game/tests without signal handler, this allows a debugger to attach

* Don't save a game in PDFatalError

* Fix loadsave recopy arrays

Co-authored-by: Dethrace Engineering Department <78985374+dethrace-labs@users.noreply.github.com>
2022-03-02 17:15:59 +13:00
Dethrace Engineering Department 92b67a9314
Implements depth effects (#95)
* implements depth effects
* fix missing skidmark textures
* implement sky color
* temporary fix for missing kerb materials
2022-03-01 14:19:13 +13:00