Commit graph

225 commits

Author SHA1 Message Date
Boondorl
f0283a7773 Added -optfile argument
Allows specify optional files from the commandline (note: this currently isn't hooked up to the filesystem proper for marking, this is purely for the file parsing until then).
2025-07-23 01:03:02 -03:00
Marcus Minhorst
649ddd7774 Replaced uint with unsigned int 2025-07-19 11:37:24 -03:00
Marcus Minhorst
30cc12912b Added uint typedef under windows 2025-07-18 21:11:50 -03:00
Nikita
45ac7c1d9e
ZScript DAP Debug server (#3009)
* Add STL-standard type traits and functions to TMap to enable for loop iteration

* add third-party range-map library

I have e-mailed the author for clarifcation on the license, will update this when they respond

* vcpkg: Add cppdap and eventpp libraries, update baseline

* DAP implementation

* Add `FileSystem::FileHash()` to get the CRC32 hash

* add `starting_offset` param to `VMDisasm()` for debugger disassembly view

Defaults to `0`, should not change output if it's not set

* Add `VMFrameStack::HasFrames()` to prevent assertions when inspecting in the debugger

* Add `PC` field to VMFrame, ensure that it is updated whenever vm increments/decrements the pc

Does not change alignment, the offsets used in VMFrame still work
We need this for the debugger because we otherwise have no way to get the pc; it was a local in `ExecScriptFunc()`

* `ZCCCompiler::CreateClassTypes()`: ensure SourceLumpName is set for classes derived from non-native classes

* start debug server in d_main, add `vm_debug` cvars and `-debug` CLI arg

* Add documentation for `vm_debug` cvars

* vm_exec: Add debugger hooks for instruction execution events

* c_console: Add debugger hooks for logging events in `PrintString`

* add `.cache/` to gitignore

* vendor cppdap on main @ 6464cd7

Patches:
removed .gitmodules (submodules were thirdparty/json, thirdparty/googletest)
removed thirdparty/googletest, not needed
removed thirdparty/json/docs, thirdparty/json/test, thirdparty/json/benchmarks to prevent massive bloat

* vendor eventpp on master @ 1224dd6

* build: use internal cppdap and eventpp by default

* dap: fix Binary::GetFunctionLineRange()

* fix bug in range_map::find_ranges

* make Binary dap::Source dynamic

* cache source code upon retrieval

* refactor Binary into a class, cleanup PexCache

* fix ending session gracefully

* d_main: Stop debug server in D_Cleanup()

* Fix connecting to debugger when session already started

* cleanup unused stuff in ZScriptDebugger

* always send TerminateEvents on disconnect if initialized

* tweak color display

* Don't cache disassembly lines when scanning scripts

* Cache nodes when getting runtime state

* WIP display locals

* Fix display of static arrays

* Ensure names display in proper order

* dap: Fix struct locals display, add args display

* Support `start` parameter

* Support `filter` parameter

* remove struct unbound native data display

Practically useless for debugging zscript and didn't work properly anyway

* d_main: fix vm_jit and vm_jit not being disabled soon enough

* support breaking on abort exceptions

* dap: refactor game event emitter functions into seperate header

* dap: show native functions on stack

* dap: Remove "Native" from exception handling, simplify exception event emit

* dap: add instruction breakpoints

* dap: fix display of locals not in scope yet

* dap: Make disassembly view display invalid instructions for non-code addresses

* dap: remove dot initializers

* dap: fix local structs in scope

* dap: don't parse the non-used options in the launch/attach requests

* dap: fix local struct view

* dap: Fix displaying objects that aren't their actual types

* dap: Fix action and state handling

* dap: stack display view

* dap: fix object display view

* d_dehacked: set qualified name in addition to the printable name

* dap: fix displaying breakpoint errors when script isn't loaded

* dap: remove debug print

* dap: Display parameter names

* dap: Turn down verbosity of logging

* dap: fix disassembly view

* dap: fix performance problems with arrays

* c_console: emit event only if not PRINT_NODAPEVENT

* dap: improve logging

* dap: update upstream cppdap library to fix deadlocks on no bind

* dap: Fix ending session on client socket closed

* dap: prevent DebugServer.h from pulling in `dap` and `ZScriptDebugger.h`

* dap: fix pause event not being emitted on pause

* dap: remove eventpp emitters, way too slow

* Remove eventpp dependency

* dap: Display correct register names

* dap: Show special inits in registers

* dap: Add stack offset to VMLocalVariable

* dap: fix display of static arrays and local variables on stack vs. registers

* dap: fix displaying function pointers

* dap: tweak color display

* dap: fix scalar display < 4

* dap: add Globals display to debugger

* dap: unify methods to get vmvalue

* dap: rename free method to freeValue to avoid running afoul of macro defs

* fix windows builds

* fix compile on linux

* cleanup

* Fix display of function breakpoints

* dap: Don't send back binary files

* dap: include sbarinfo in script types (no debug support for anything but zscript yet, this is just for returning source info)

* dap: don't show ending session message unless initialized

* fix erroneous commit

* dap: handle evaluate requests

* Fix getting bitfield values

* Add CVars Scope and evaluation

* add running console commands from repl

* dap: disable commands via repl for now

* fix loading functions DECORATE scripts

* Add source information to Dehacked VM functions, add debugging support

* dap: cleanup

* fix resolving archive paths

* don't send source back on native stack frames

* handle `modules` request

* cleanup

* allow evaluating cvars on hover

* fix oob bpinfos

* fix restarting the game blowing out the debug server

* dap: process input events while paused to prevent deadlocks

* fix getting local state

* dap: fix LocalState alignment

* dap: fix DumpStateHelper

* update cppdap protocol version to 1.68.0

* remove cppdap from vcpkg deps

We can't use the upstream version anyway because the maintainers are not merging our patches

* dap: make named variable nodes derive from the same class

* dap: make cvar scope available in native stack frames

* handle local variables with conflicting names

* add I_GetWindowEvent() to win32 to only process window events when debugging is paused

* dap: fix evaluate

* dap: fix display of `out` variables
2025-07-18 00:01:18 -03:00
Boondorl
269689703d Clear references to map data on level change
These shouldn't be left as they'll now point towards potentially invalid memory and also cause errors with serializing. Arrays and maps holding them are cleared. Also unlinks and relinks inventory items correctly from the hashmap on traveling.
2025-07-10 14:12:31 -03:00
Ricardo Luís Vaz Silva
29b2253bdb TArray list constructor 2025-07-10 14:12:31 -03:00
Chris Cowan
ab7b1642bc Prevent buffer overflows when using streams 2025-07-10 14:11:08 -03:00
Ricardo Luís Vaz Silva
54f1f5ad9d stop stupid clamp asserts 2025-07-02 12:34:10 -03:00
Marcus Minhorst
525e6b9f99 Added _msize stub for Solaris 2025-06-24 21:22:55 -03:00
Boondorl
e7d0991798 Fixed JIT error with Conjugate/Inverse
These need to be compiler intrinsics since faux types aren't supported with self.
2025-05-30 10:58:10 -03:00
Ricardo Luís Vaz Silva
c0c4b784ca GetBoneEulerAngles 2025-05-26 07:48:01 -03:00
Ricardo Luís Vaz Silva
9e2b1f9c4c
Bone Getters Part 2/3, plus fixed warnings for MSVC
* add getters for frame poses

* fix missing joint in GetJointPose

* clean up models_iqm.cpp

* clean up usage of I_GetTimeFrac, split out matrix calculation into its own function

* clean up SetModelBoneRotationInternal

* clean up a few float <-> double and unsigned <-> signed warnings

* fix more warnings

* further clean up warnings

* split mode ObjectToWorldMatrix stuff

* initial work on bone getters, matrix hell

(the matrix/vec3 multiplications are probably wrong af, just gotta add more stuff 'till i can test it)

* clean up matrix math

* GetBone/TransformByBone

* fix GetBoneFramePose

* fix ObjectToWorldMatrix

* fix missing array resize

* raw matrix getters (for use with gutamatics/etc)

* reverse matrix mult order

* replace GetBoneLength/GetBoneDir with GetBoneBaseTRS

* fix GetBonePosition, remove GetBoneWorldMatrix as it's useless

* GetBonePosition

* deduplicate code

* rename GetBonePosition to GetBoneBasePosition to avoid confusion

* GetBoneBaseRotation

* GetBonePosition helper function

* forgot include_offsets
2025-05-09 17:06:16 -03:00
Ricardo Luís Vaz Silva
3780c5910a
Bone Manip part 1 - bone setters
* split frame info calculation from RenderFrameModels

* clean up fvec4 being used as quat in iqms

* initial work on bone setting

* implement bone setters

* clean up FindModelFrame

* refactor model overrides into its own function

* refactor frame rendering into RenderModelFrame

* split frame processing into ProcessModelFrame

* refactor BoneOverride in preparation for translation/scale overrides

* clean up macros

* SetBoneTranslation/SetBoneScaling

* GetBoneOffset

* fix compilation on linux/mac (fuck you MSVC)

* fix typo 😅

* make sure bone overrides are cleared on model switches, add ClearBoneOffsets to clear them manually

* bone info getters

* fix joint lengths, add joint dirs

* serialize bone overrides

* fix bone dir return type

* GetBoneIndex/GetBoneCount

* helper functions for working with non-quat angles

* add mode enum, add more helper functions

* fix up formatting
2025-05-01 10:15:46 -03:00
Ricardo Luís Vaz Silva
009b84bb1a print warning for deprecated uniform declarations 2025-04-23 18:49:23 -03:00
Ricardo Luís Vaz Silva
88a55be561 add TryEmplace to TMap 2025-04-16 23:45:16 -03:00
Christoph Oelckers
6481f8cce9 rewrote XY and XYZ accessors for vectors to be read-only and not use type punning. 2025-04-03 07:51:03 +02:00
James Le Cuirot
e2103d2508 Fix building with GCC 15 2025-03-10 03:06:50 -03:00
Ricardo Luís Vaz Silva
bfd9b6f720 add static function to convert ints to names 2025-02-08 16:49:00 -03:00
Rachael Alexanderson
f3b0c3ac5e
- Roll back filesystem changes. These were causing instabilities in the master branch that were interfering with development. 2025-01-04 11:27:21 -05:00
Christoph Oelckers
d1abc3eb8c renamed things in file system to reduce Doom specific terminology. 2024-11-24 18:05:11 +01:00
Christoph Oelckers
ba2800d698 renamed GetFileFullName to GetFileName 2024-11-24 17:59:15 +01:00
Jan Engelhardt
8e4080f8d1 Resolve compiler warning about destructor syntax
gcc-14 warns:

tarray.h:927:9: warning: template-id not allowed for destructor in C++20 [-Wtemplate-id-cdtor]
  927 |         ~TDeletingArray<T, TT> ()
2024-10-12 12:00:32 -03:00
dileepvr
95b264bdb6
Isometric Mode and Robin (#2618)
* Feature-complete isometric mode fork.

* Dithered transparency condition tweaks.

* Dithered transparency for non-corpse monsters only (and missiles).

* SpectatorCamera vertical shift.

* Including math.h in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).

* Defining MY_SQRT2 in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).

* Defining MY_SQRT2 in r_utility.cpp also to keep visual studio happy.

* retrigger checks

* Have correct sprite angle-frame face the camera with orthographic projection enabled.

* Dithered Transparency now works properly on 3D floors. Moved that dither-trans flag setting code within hw_bsp.cpp to handle double-processing of linedefs. Added helper functions to FRenderViewpoint class 'bool IsOrtho()' and 'bool IsAllowedOoB()' to clean up checks everywhere in the code.

* Fixed indents. Added bbox property to subsector struct and use it instead of BSP nodes and Clippers (creating a bbox around viewpoint and checking for overlap) in orthographic mode when no fog of war is active. Turns out to be much faster. Though you need really big maps (Winter's Fury MAP01) to see a difference in fps.

* Non-linux checks don't like uint. Changed to unsigned int.

* Small change of a float to camera.zs. Ignore for testing. Should make no difference.

* Update actor.h to remain mergeable

RF2_NOMIPMAP was introduced, so I had to displace RF_ISOMETRICSPRITES to next bit.
2024-08-11 10:04:40 -04:00
Boondorl
d697eafbe1 Fixed subnormal float viewpos values breaking rendering 2024-07-29 03:10:50 -04:00
Ricardo Luís Vaz Silva
87463ef36b Fix memory leak on TDeletingArray move assignment 2024-06-03 10:52:07 -03:00
Ricardo Luís Vaz Silva
ffbbe0a4c6 partial fix for FString::IsInt() 2024-05-20 16:08:13 -03:00
Ricardo Luís Vaz Silva
1006d20c13 fix CheckParmList
seems like it was checking the second char for '+' instead of the first
2024-05-04 03:17:16 -04:00
Ricardo Luís Vaz Silva
c3ac4c9c38 Handle Extra Args 2024-05-04 03:17:16 -04:00
Christoph Oelckers
81dade9ed5 fixed: for deleting files and folders on Windows we have to call the Unicode variants of these functions. 2024-05-01 09:50:19 +02:00
Ricardo Luís Vaz Silva
458d81cede Make TArray take functions by forward-reference and call them by invoke
(1. avoids copying for lambdas, and 2. allows passing methods)
2024-03-17 18:07:50 -03:00
Ricardo Luís Vaz Silva
cc88dfbe50 Unrevert two changes
* Sorted Delete for TArray
* Typed constructor for TObjPtr
2024-03-15 17:21:59 -03:00
Christoph Oelckers
520b960ca5 Reverted the path node system
Code reviews were unfavorable so better nix it before it finds wider use.
2024-03-15 20:24:39 +01:00
Ricardo Luís Vaz Silva
3348822390 ... 2024-03-05 13:44:38 -05:00
Ricardo Luís Vaz Silva
cc51b486e0 TArray Binary Search 2024-03-05 13:44:38 -05:00
Ștefan Talpalaru
b5eb8f47db GCC-13 support, when precompiled headers are off 2024-02-05 17:40:37 +01:00
Christoph Oelckers
f1db369883 moved a few things out of the common code that should be defined privately. 2024-02-04 13:54:25 +01:00
Christoph Oelckers
b37ea19f86 remove unnecessary #defines 2024-02-03 16:07:12 +01:00
Christoph Oelckers
963209e8af removed external stuff from tarray.h 2024-01-09 16:47:24 +01:00
Ricardo Luís Vaz Silva
8ae93fb87f use map instead of linear search to find texture indices for animation 2024-01-09 06:38:08 -05:00
Christoph Oelckers
0e51c5832d fix compilation 2024-01-07 10:05:03 +01:00
Christoph Oelckers
f13ae3b706 addressed a few things pointed out by static analysis
* marking move assignments noexcept
* using [[fallthrough]] consistently.
* getting rid of alloca.
2024-01-07 08:46:47 +01:00
Christoph Oelckers
83aa9388ca backend update from Raze
* moving large allocations off the stack
* use proper printf formatters for size_t and ptrdiff_t.
* adding some missing 'noexcept'.
2024-01-06 15:24:10 +01:00
Professor Hastig
c446af41ae fixed TArray::push_back 2024-01-05 16:42:40 +01:00
Christoph Oelckers
97c04357f1 fixed alternative parts of vectors.h
Not relevant for GZDoom itself but let's keep things tidy.
2023-12-21 22:11:53 +01:00
Ignacio Taranto
e572bb8db3 Fix Zip file modification timestamps
The problem was that `time_to_dos` was putting the last modification
file date first and the time second. This was causing the date to be
interpreted as the time and vice versa when reading the Zip file.

See: https://github.com/ZDoom/gzdoom/issues/2306
2023-12-20 23:26:52 +01:00
Christoph Oelckers
bae3adc89f moved writezip.cpp out of filesystem and eliminated uses of TArray. 2023-12-15 16:59:00 +01:00
Christoph Oelckers
fe106d9bfe merge FileData and ResourceData. 2023-12-14 17:22:29 +01:00
Christoph Oelckers
36d05112d5 backend update from Raze.
Mainly fixing case table for Georgian script and de-inlining M_Calloc.
2023-12-10 13:26:43 +01:00
Christoph Oelckers
41573df58f added STL compatible access functions to TArray.
This allows using them in templates made for STL containers.
2023-12-10 09:07:48 +01:00
Christoph Oelckers
d5e9783324 fixed bad parameter types in direct native functions.
bool can cause undefined behavior here, these should be int.
2023-11-07 18:06:50 +01:00