Commit Graph

95 Commits

Author SHA1 Message Date
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
Anonymous Maarten 26fd105889
Various work for upstream (#93)
* dethrace: right align numbers in columns

* tools/progress.py: allow sorting on different keys

* brender: add BrPixelmapSave(Many)? to brender.h

* brender: add BrActorLoadMany and BrModelAddMany to brender.h

* brender: add BrWriteModeSet to brender.h header

* brender: define br_size_t as size_t

* brender: expose default order_table through header

* brender: sort tokens by value (and add _BRT_LAST_BUILTIN_TOKEN value)

* brender: diffusion factor of default material is 0.7

* brender; br_value_tag and br_lexer_token.v are unions

* brender: add all genclip functions

* brender: add all token functions

* brender: add assocarr functions

* brender: add lexer functions

* brender: add default model

* brender: add resource functions

* brender: fix BrMaterialAllocate

* brender: add logwrite functions

* brender: add brprintf functions

* brender: add missing file function (BrFileAttributes)

* brender: add BrAngleToDegrees define in br_defs.h

* brender: add image functions

* brender: implement all resreg functions

* brender: implement all pmnull methods

* dethrace: fix brender init string + other params

* brender: use BR_ASIZE when using pm_resourceClasses

* brender: implement all dbsetup functions

* dethrace: implement all input functions

* dethrace: implement various depth edit mode functions

* infra: add WARN_ONCE macro to avoid spamming the console

* dethrace: add enable/disable plingmaterials + add log message

* dethrace: Implement a few loading functions

* dethrace: implement PrintScreenFile + PrintScreen to write screen to BMP

* brender: 8 directories for image is a better default

* brender: Implement makeMeshFromBounds + add typedef for render callbacks

* brender: implement all functions in enables.c

* brender: implement all fwsetup functions

* brender: implement some prepmesh functions

* brender: implement all modsupt.c functions

* brender: use correct types in comparisons

* brender: add whitespace in brlists.c

* brender: actually return something in BrBoundsToMatrix34

* brender: implement all bswap functions

* brender: implement all brerxcept functions

* brender: Implement BrActorSearch + fix RenumberActor

'd' is the depth, it should be the same for all children

* dethrace: gMem_names contains empty strings instead of NULL

* dethrace: ServiceTheGame also does CheckMemory

* dethrace: implement DisposeActorMatrix + DisposeColumns

* dethrace: Implement TogglePedestrians + GetPedCount + GetPedPosition

* dethrace: implement a few superficial powerup functions

* dethrace: implement a few shading helper functions

* dethrace: implement a few world actor helper functions

* dethrace: InitNetGameplayStuff has empty implementation

* dethrace: implement + use DRPixelmapCentredText

* dethrace: display APO bars on HUD

* dethrace: do DoNewGameAnimation when starting a new race (=empty)

* dethrace: (Open|Close)Diagnostics are the first/last functions to run

* dethrace: implement RestoreCameraPosition

* dethrace: LoadOpponentMugShot does a MAMSLock

* dethrace: use enum value for gRace_over_reason

* dethrace: add withespace after LOG_TRACE

* dethrace: implement SetSmokeLastDamageLEvel + StealCar

* dethrace: implement ResetOilSpills

* dethrace: InitRace calls InitNetGameplayStuff

* dethrace: use COUNT_OF instead of magic number

* brender; br_value_tag and br_lexer_token.v are unions

* dethrace: implement options menu (missing graphics/controller/sound menu)

* dethrace: implement DrawRectangle + DrawRRectangle

* dethrace: implement (Set|Reset)NonFatalALlocationErrors + MAMSInitMem

* dethrace: Call MAMSInitMem() in InitialiseApplication

* dethrace: implement some flic accessor methods

* dethrace: implement getters to initialize the graphics options menu

* dethrace: implement graphics options menu

* dethrace: support saving options to file

* dethrace: implement AwardTime

* Add utility script to decode encrypted text file

* dethrace: implement Log2 + LoadDepthTable

* dethrace: replace number with their character equivalent

* dethrace: implement DimRectangle

Dimming the rectangles for the HUD is not working, because the renderer needs to write back to the back screen.

* dethrace: implement KillOldestQueuedHeadup

* resource: remove debug fflush

* modrend: fix comment

* depth: fix factor 2 bug

* loading: undefine BAIL_IF_NEGATIVE

* dbsetup: use macros for enabled types

* input: remove outdated comment
2022-02-23 13:58:24 +13:00
Dethrace Engineering Department 0f4957064f
Vehicle shadows (#92)
* solid black shadow polygons rendering, no clip planes yet

* 8 bit colors, full color framebuffer

* fancy shadows, full 8 bit color pipeline

* fix shadows disappearing sometimes
2022-02-23 08:14:15 +13:00
Anonymous Maarten 5260839fbe
Serialize pixelmap/material/model/actor structs to file (#80)
* regsupt: Implement all regsupt functions

* test: fix regsupt tests to cope with 'polluted' brender state

* tests: Re-order tests + fix temp file

* tests: Move binary/test file contents test to shared file+header

* Add euler defines to angles header

* Stub BrPixelmapDirectLock and BrPixelmapDirectUnlock (FIXME: add TODO/FIXME)

* math: Implement BrVectorX functions

* Fix BRender duplicate material struct name + bug in datafile

* Add missing brstddiag functions

* BrStdioOpenRead: use brender types

* Implement all functions in v1dbfile + genfile (=BRender resource loading)

* tests: Fix test_loading_ConvertPixToStripMap

* Fix tests on Windows

* Use array indices as argument to offset
2022-02-06 16:23:10 +13:00
Dethrace Engineering Department 988891306d
Adds skidmarks (#78) 2022-01-28 13:27:21 +13:00
Dethrace Engineering Department a5dad0f74f
adds progress script (#76) 2022-01-27 09:30:41 +13:00
Anonymous Maarten ba4b7630fb
Add all datafile functions (+needed dependent functions) (#73)
* brender: add fixed functions + tests

* brender: re-order assignment of variables

Little nitpick patch, sorry :^)

* brender: implement all scratch functions + tests

* tests: Actually build and run math test functions

* brender: implement BrFilePrintf

* brender: BrVsprintfN returns number of characers written

* tests: add ability to create temporary file in temporary folder

* brender: add binary/text store+load of datafile + tests
2022-01-26 11:54:30 +13:00
Dethrace Engineering Department 94167e09c8
Recovery and Race Completed logic (#74)
* implements race completed, recovery logic

* fps limiter, better framebuffer handling
2022-01-25 22:32:11 +13:00
Anonymous Maarten ee032df264
Fix MSVC tests + add mingw support (#65)
* Include windows.h before imagehlp.h

This fixes a long list of undefined type errors when building with mingw (on Linux).

* Remove matherr function

This function is provided by the c library.

* Use GetFileAttributesA to filter files

dirent->d_type is not available in all implementation.
Posix only mandates the fields d_name and d_ino.

* Use FindOpenGL.cmake to get the opengl library

Mingw has no libGL.so, but has libopengl32.a. Use the CMake module to abstract this away.

* harness needs to link to dbghelp

This fixes undefined references to:
__imp_SymInitialize, __imp_SymGetModuleBase64,
__imp_SymFunctionTableAccess64, __imp_StackWalk64 and __imp_SymCleanup.

* Don't add -g to compile options.

CMAKE_BUILD_TYPE=(Debug|RelWithDebInfo) takes care of this

* Set test file name before running tests in suite.

This causes the message to contain the correct file name where an assertion failed/succeeded.

* Use wrapper to sleep for number on seconds in tests

sleep on Windows expects milliseconds.
sleep on Posix expects seconds.

* Use char* instead of void*

MSVC complained that it couldn't determine the size of void

* Don't test state of removed resource after deletion when building Debug

When building in Debug configuration, the compiler may mark deleted memory ranges with some value.
Therefore, we cannot expect deleted memory to remain unchanged.
(MSVC in Debug mode does this)

* Use helper to get system temporary folder.

Using /tmp on Windows failed hard.

* Header containing sse3 intrinsics is pmmintrin.h

See https://github.com/recp/cglm/pull/234

* Add errno.h include for ENOTSUP

* Fix test_utility_GetALineWithNoPossibleService: avoid strcpy of uninitialized s

Found by running the tests with CMAKE_BUILD_TYPE=Debug with MSVC

* Add mingw@Linux and mingw@Windows jobs to github workflow

* Rename build-windows.ps1 script to build-msvc.ps1.

Also bump the versions of SDL2 and ninja, used in this script.

* Run tests in github jobs running on Windows

Co-authored-by: Dethrace Engineering Laboratory <78985374+dethrace-labs@users.noreply.github.com>
2022-01-20 13:17:10 +13:00
Anonymous Maarten e8f3b6f95b
Implement all brender matrix functions (#66)
* Add macro to test float array with precision

* Implement all matrix4 functions + add tests

* Implement all matrix23 functions + add tests

* Implement all matrix34 functions + add tests

* Implement all quat functions + add tests
2022-01-20 13:13:25 +13:00
Anonymous Maarten 991a9226fb
Implement all functions related to lists + registries (#67)
* Implement all br_list + br_simple_lists operations + tests

* Implement all br_register operations + tests

* Also fix BrRegistryFind/BrRegistryRemove with empty registers
2022-01-20 13:10:19 +13:00
DJs3000 6971c1d49c
Fix 2 error (#71)
* Update datafile.c

lcc: "/root/dev/dethrace/src/BRSRC13/CORE/FW/datafile.c", строка 409: ошибка:
         переменная "n" может быть использована неинициализированной
         [-Werror=maybe-uninitialized]

* Update common.c
"scancode unsigned" can't be below zero.
2022-01-20 13:09:36 +13:00
Dethrace Labs 905bf98867 fixes demo CheckTimer() 2022-01-18 09:31:42 +13:00
Dethrace Engineering Laboratory 73c799d573
Textures! (#69)
* textures working
* adds demo code
* fixes incorrect rotation
2022-01-18 09:16:24 +13:00
Dethrace Engineering Laboratory 6d21a1c480
BRender inline functions (#64)
* convert CollCheck to use inline BR functions

* convert CalcForce to use inline BR functions

* partial support for demo content

* harness interface tidy up

* cleaner platform handing
2021-10-04 12:37:23 +13:00
Jeff Harris 4608bdd8ca
Feature/collision detection (#60)
* most functions implemented, car disappears on collision?
* implements friction from collision, car no longer disappears
* removes -Werror compiler flag for DETHRACE directory
2021-09-21 13:09:18 +12:00
Jeff Harris 9ac6479f34
Feature/groove animations (#59)
* implements groove animations
2021-09-14 12:00:21 +12:00
Jeff Harris 6a31e4f6a9
Fix/global vars ordering (#58)
* reordered global vars based on updated codegen, resolve duplicate symbols
2021-09-10 13:36:14 +12:00
Jeff Harris f1ed9ff522
Car control and physics attempt #1 (#57)
* correctly render track based on current view and yon factor

* some physics code

* rotate, translate, self centering steering

* Fix ordering of global variables

* ApplyPhysicsToCars

* car is moving somewhat

* fixes stumbling at low revs

* camera swings around properly when switching direction

* fix compile errors
2021-09-08 13:19:08 +12:00
Jeff Harris 3244bdbd55
Awfully complicated camera collision bits (#54)
* Awfully complicated camera collision bits
2021-07-18 22:27:08 +12:00
Jeff Harris a8f34c5815
Fixes loading regular Carma1 data directory (#53) 2021-07-17 20:10:58 +12:00
Jeff Harris 6cc2db6201
Rendering our first 3d scene! (#52)
* 3d rendering working slightly

* lighting working but looks funny

* camera swoop working somehow

* 3d rendering working down to camera

* fix linux build
2021-07-17 07:08:06 +12:00
Jeff Harris 4754aea863
Enable more compiler errors (#50)
* Fixes clever text rendering
* Adds better compile errors
2021-05-02 22:32:38 +12:00
Jeff Harris d08ab2f0e7
Adds game main loop (#49)
* Adds game main loop, 2d rendering in game mode
2021-04-21 12:25:19 +12:00
Jeff Harris b435e49f2b workflow: tag release 9 2021-04-14 08:21:00 +12:00
Jeff Harris baafd76a09
Workflow test (#47)
* Adds first test of create release when tag is pushed
* fix pixelmap read warnings
2021-04-14 06:01:19 +12:00
Jeff Harris 43f517234d
Set Initial Grid Position (#46)
* Implements SetInitialPosition, fixed prepareGroups vertices
2021-04-13 14:04:03 +12:00
Jeff Harris 1ce611e9d8
Implements load race screen and grid selection screens! (#45)
* Load Race screen
* Grid Selection screen
* Loads race objects into memory
2021-03-25 06:51:35 +13:00
OmniBlade d1232abceb Refactors CMake to allow buildings tests.
Adds running of tests to the linux and macos workflows.
Tests themselves need some refactoring to pass on windows.
2021-03-12 15:49:29 +00:00
OmniBlade a10d622943 Fixes linking issues on macOS.
macOS linker seems to have issue with linking when only symbols are default initialised globals.
2021-03-12 15:49:29 +00:00
OmniBlade aa70c9c966 Corrects the types on some pointer casts. 2021-03-12 15:49:29 +00:00
OmniBlade 50b4b4f37a Adds startup code to enable printing to cmd prompt.
If game is started from command line, debug output prints to the console.
2021-03-12 15:49:29 +00:00
OmniBlade 0d023ca25f Adds glad generated OpenGL extension loader.
Fixes building gl renderer with MSVC.
Adds additional fixes to build and link on MSVC.
2021-03-12 15:49:29 +00:00
OmniBlade efb3484b79 Applies some fixes for an MSVC build.
Casts for arithmetic on void*.
Includes SDL.h directly with no folder (Documentation suggests this is
best practice anyhow)
Provides a win32 clock_gettime implementation suitable for how it is used.
Removes braces from struct typedefs to keep msvc happy.
Other misc changes.
OpenGL implementation needs work on MSVC and does not build correctly
yet.
2021-03-12 15:49:29 +00:00
OmniBlade f2168d0db4 Initial CMake based build system implementation. 2021-03-12 15:49:29 +00:00
OmniBlade 6f64649abb
Refactors InitWobbleStuff. (#44)
Implements ClearWobbles and replaces inlined code.
Cleans up floating point optimisations to use original divisions.
2021-03-05 22:51:55 +00:00
Jeff Harris 6bc804710e
Feature/loadcar (#42)
* LoadCar
2021-01-26 21:49:35 +13:00
Jeff Harris 62d000b861
Disable cd check by default, add support for SP/Carma game modes (#41) 2020-09-24 09:50:23 -07:00
Jeff Harris dd05afea6e
Feature/loading race screen (#40)
* Adds loading splash screen, switch to single threaded mode
2020-09-23 12:03:00 -07:00
Jeff Harris f665dbf6cf
Implements Select Driver screen (#39)
* Adds driver select interface screen
2020-09-23 00:30:16 -07:00
Jeff Harris 7b7f691c45
Fix/update from new codegen (#38)
* removes duplicate comments in header files
* replaces offset, size, register comments with a single IDA format comment
2020-09-11 11:01:54 -07:00
Jeff Harris a7e588d1f8
Adds VerifyQuit screen, tidies up memory alloc/free tracing (#37)
* Adds VerifyQuit screen, tidies up very verbose memory alloc/free tracing, extra error checks on SDL calls
2020-09-09 07:41:12 -07:00