alexey.lysiuk
81cb8cb60b
Fixed applying of dynamic lights to models
...
https://forum.zdoom.org/viewtopic.php?t=60301
# Conflicts:
# src/gl/scene/gl_sprite.cpp
2019-04-25 20:48:17 +02:00
Christoph Oelckers
b3a8dcdbd4
store shadow map index in the light actor instead of a separate TMap
...
This frees another file of a direct renderer dependency and generally also should be faster
2019-04-25 20:14:00 +02:00
drfrag
e335a48009
- Fixed bad merge of "- changed handling of attenuated lights in the legacy renderer to be adjusted when being rendered instead of when being spawned.".
2019-04-25 19:11:40 +02:00
Christoph Oelckers
99dd234d10
- exported all native components of APlayerPawn.
...
Only the class definition itself remains and needs to be taken care of.
# Conflicts:
# src/g_statusbar/sbarinfo_commands.cpp
# src/hu_scores.cpp
# src/scripting/thingdef_data.cpp
# Conflicts:
# src/actorinlines.h
# src/hu_scores.cpp
2019-04-25 17:42:11 +02:00
Christoph Oelckers
94eb0ecdda
- scriptified the remaining PlayerPawn methods.
2019-04-25 17:35:44 +02:00
Christoph Oelckers
b28faa6793
- took several methods out of the native PlayerPawn implementation, either by scriptification or moving them to other places.
2019-04-25 17:34:56 +02:00
Christoph Oelckers
6f2a32ecbe
- scriptified PlayerPawn.ResetAirSupply.
2019-04-25 17:34:53 +02:00
Christoph Oelckers
1c577e4c97
- scriptified APlayerPawn's DamageFade handling.
2019-04-25 17:34:51 +02:00
Christoph Oelckers
cf890a24c3
- scriptified P_CalcHeight.
...
This was the only code using the ViewBob member variable.
This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
2019-04-25 17:34:49 +02:00
Christoph Oelckers
8e376754fc
- did some more lightening on the PlayerPawn class. 4 more properties and one native member function have been handled.
2019-04-25 17:34:47 +02:00
Christoph Oelckers
c762757aca
- initialize the PlayerPawn members only used by scripts through the script variable interface.
...
The goal here is to eliminate the native PlayerPawn class, after all, so this will be needed anyway.
2019-04-25 17:34:45 +02:00
Christoph Oelckers
cb2e46a4fe
- scriptified A_SkullPop and ObtainInventory.
...
These were the last relevant items to access PlayerPawn.InvFirst.
2019-04-25 17:34:43 +02:00
Christoph Oelckers
08e2a86f64
- made ColorRangeStart and ColorRangeEnd meta properties of APlayerPawn.
...
These are only used during initialization and they should have been readonly from the start.
2019-04-25 17:34:41 +02:00
Christoph Oelckers
51499e167d
- scriptified useflechette CCMD's item finding code.
2019-04-25 17:34:39 +02:00
Christoph Oelckers
4be9217215
- scriptified the declaration of AmbientSound
...
Most of the code is still native, but this means that PlayerPawn is the last remaining child of AActor.
# Conflicts:
# src/g_shared/a_dynlight.cpp
2019-04-25 17:34:37 +02:00
alexey.lysiuk
70e7f9f853
- added missing range checks to level compatibility handler
...
# Conflicts:
# src/compatibility.cpp
2019-04-25 16:50:28 +02:00
Christoph Oelckers
990aad3b0c
- fixed: The player sound lookup would fail if a sound was only available for the last gender in the list.
...
This is an ancient bug, but it never registered before - only after making 'other' the default gender for nonsense input it became apparent.
2019-04-25 16:32:19 +02:00
Christoph Oelckers
0c1fc45df8
- fixed A_Chase default detection.
2019-04-25 16:31:58 +02:00
Christoph Oelckers
96d40ac403
- fixed the direct native variant of DynamicLight.SetOffset.
2019-04-25 16:26:40 +02:00
Major Cooke
2e6382f55e
- Fixed: NODAMAGE was not accounted for with pain.
2019-04-25 13:10:51 +02:00
Timo Myyrä
b561b72fd0
fix Unix builds without backtrace functions in their libc
...
backtrace functions are not present in all libc implementations. Cmake has
module to add external libraries into build if needed so use it to fix build on
Unix systems without backtrace in libc.
2019-04-25 13:10:47 +02:00
Christoph Oelckers
1669e10f6e
- fixed memory leaks in network code.
...
ReadString allocates a buffer, so saving it in a local variable and then forgetting it will not free the buffer afterward.
(This should probably be refactored to use some safer methods to read the string than this old-school method...)
2019-04-25 13:10:39 +02:00
player701
77633415f9
- Fixed settings_controller not updating properly when a player becomes the new arbitrator in a netgame.
2019-04-25 13:03:47 +02:00
Christoph Oelckers
6371d3f88b
- added missing return in P_RemoveThing.
2019-04-25 13:03:45 +02:00
Christoph Oelckers
d54ef75311
- added missing null pointer check to SBarInfo's inventory bar drawer.
2019-04-25 13:03:42 +02:00
Christoph Oelckers
08dd81ed36
- use a TArray to store the sprite model hash to get rid of one atterm call.
2019-04-25 12:55:22 +02:00
Christoph Oelckers
7259cd44ee
- reworked the lock code to remove the 255 locks limit and to allow it to automatically deinitialize.
...
# Conflicts:
# src/fragglescript/t_func.cpp
2019-04-25 12:55:19 +02:00
Christoph Oelckers
e4bf84b015
- treat non-existent arrays in the savegame as zero length.
2019-04-25 12:55:13 +02:00
Christoph Oelckers
8c38a7c05f
- fixed precaching of switches.
...
The backwards animation accessed the wrong array which in case of sequences with different length could crash
2019-04-25 12:52:02 +02:00
Major Cooke
5e183d8718
Fixed: IsFakePain received the modified damage instead of the raw, preventing ALLOWPAIN from working as intended.
2019-04-25 12:51:46 +02:00
Christoph Oelckers
f00ec3bfb9
- use TArrays for all local allocations in the map loader.
...
# Conflicts:
# src/p_setup.cpp
2019-04-25 12:44:28 +02:00
drfrag
df251be921
- Fixed compilation of previous commit.
...
# Conflicts:
# src/textures/textures.h
2019-04-18 20:16:30 +02:00
Christoph Oelckers
f29408e199
- fixed precaching to consider animations and switches
2019-04-18 20:13:35 +02:00
Ijon
50d8993e6e
NOFRICTION now applies to Z friction when flying or swimming
2019-04-18 19:57:44 +02:00
alexey.lysiuk
33067deb86
- fixed crash in Actor.Warp() with null destination
...
https://forum.zdoom.org/viewtopic.php?t=63031
2019-04-18 19:57:30 +02:00
Christoph Oelckers
e4f5160f66
- remove some obsolete bit of cruft from the class type system.
...
This was a remnant of putting the meta data directly into the class descriptor which turned out to be an unworkable approach
2019-04-18 19:57:28 +02:00
Christoph Oelckers
a82d60bb71
- fixed 3D floor initialization for actor spawning.
...
Since actors are being spawned before the renderer gets set up this needs to fully initialize the list before spawning the actors, then take it down again for creating the vertex buffer and then recreate it.
2019-04-18 19:57:09 +02:00
Major Cooke
0635dc1416
Reduced redundancy by putting all function aftermath handling in a subfunction.
2019-04-18 19:56:40 +02:00
Major Cooke
662b2ed759
Split off pain chance triggering from ReactToDamage into its own function and gave ZScript access to it.
...
- TriggerPainChance(Name mod, bool forcedPain)
- One exception: PainThrehold is only checked in ReactToDamage, since this function does not require checking damage amount.
2019-04-18 19:56:38 +02:00
Major Cooke
f98c194431
DamageMobj Refactor
...
- Split off all reactive functionality (pain, infighting, etc) into its own function, ReactToDamage.
- Refactored all DamageMobj's damage <= 0 values.
- Any unconditional cancellations now return -1. ReactToDamage will not be called if values < 0.
- All pain/wound/target changing allowances return 0.
2019-04-18 19:56:36 +02:00
Ijon
49dd94f65a
Add NOFRICTION and NOFRICTIONBOUNCE flags
...
NOFRICTION disables all friction effects on the thing it's set on
(including the speed cap from water/crouching), and NOFRICTIONBOUNCE
disables the "bounce off walls on an icy floor" effect on the thing
it's set on.
2019-04-18 19:56:33 +02:00
Rachael Alexanderson
286eacb088
- set vid_scalefactor to 1 when using vid_setscale
2019-04-18 19:20:28 +02:00
drfrag
708952e615
- initialize the index field for particles.
...
This won't contribute to sort order so it should be the same for all particles, which it wasn't because it was never set.
(patch by Graf)
2019-04-18 19:02:29 +02:00
Christoph Oelckers
cd8791d68c
- fixed sprite sorting in the hardware renderer.
...
This did no longer sort sprites in the same position reliably since the feature to render sprites which only partially are inside a sector was added.
With this, sprites in the same position are no longer guaranteed to be added to the render list in sequence.
Fixed by adding an 'order' field to AActor which gets incremented with each spawned actor and reset when a new level is started.
The software renderer will also need a variation of this fix but its data no longer has access to the defining actor when being sorted, so a bit more work is needed here.
# Conflicts:
# src/hwrenderer/scene/hw_drawlist.cpp
# src/hwrenderer/scene/hw_sprites.cpp
2019-04-18 18:53:10 +02:00
Magnus Norddahl
14f7efece7
- improve softpoly 3d floor drawing somewhat
...
# Conflicts:
# src/polyrenderer/scene/poly_plane.cpp
2019-04-18 17:49:41 +02:00
Christoph Oelckers
e6af596af0
- removed the redundant GetOffsetPosition export and added direct native support to its existing variants
2019-04-18 17:01:17 +02:00
Christoph Oelckers
15f78039c3
- fixed the decal translation handler truncated the translation ID
...
This was yet another of those old misguided 16 bit space 'optimizations'.
2019-04-18 17:01:11 +02:00
Christoph Oelckers
89a17d4257
- fixed: The random sound handler was using 16 bit storage throughout
...
Changed to use 32 bit and also fixed the random number call which was using the byte value variant of the access operator, effectively limiting the number of choices to 256.
2019-04-18 17:01:09 +02:00
Christoph Oelckers
fcacb80db5
- a few more explicit local buffer allocations removed.
...
# Conflicts:
# src/gl/data/gl_setup.cpp
2019-04-18 17:00:20 +02:00
alexey.lysiuk
82d05dce13
- fixed lost settings controller state upon new game
...
https://forum.zdoom.org/viewtopic.php?t=62959
2019-04-18 16:31:20 +02:00
alexey.lysiuk
25a6ba0e51
- cleaned up player reinitialization upon new game
2019-04-18 16:31:18 +02:00
Magnus Norddahl
a399ce48a9
- fix decals looking blackened due to low lookup table precision when alpha is zero
2019-04-18 16:26:18 +02:00
Cacodemon345
fdd6e3cec9
Export P_GetOffsetPosition and ADynamicLight::SetOffset to ZScript
2019-04-18 16:23:01 +02:00
drfrag
dcdb381f73
- Deleted unused variable.
2019-04-18 15:26:54 +02:00
Christoph Oelckers
91c8177406
- added missing null pointer checks to cheat code.
2019-04-18 15:01:12 +02:00
Christoph Oelckers
f91b24f505
removed the unused DefaultExtension variant taking a char *.
2019-04-18 14:59:34 +02:00
Magnus Norddahl
4d160c8cd1
- fix missing line number for the function throwing the exception and remove the duplicate call stack line
2019-04-18 14:59:32 +02:00
Christoph Oelckers
d80d4bb228
- moved P_OpenMapData and related content out of p_setup.cpp.
...
# Conflicts:
# src/g_levellocals.h
# Conflicts:
# src/g_levellocals.h
2019-04-18 14:52:24 +02:00
Christoph Oelckers
b1452c928a
- moved all shutdown handling for sound related resources to I_ShutdownSound instead of registering separate atterm handlers.
2019-04-18 14:34:25 +02:00
Christoph Oelckers
dae3d68cce
- added an option to GAMEINFO to either force or disable loading of the default lights and brightmaps.
...
The mod which prompted me to add this is "The Chosen" which is a Dehacked-based TC and repurposes many original actors for something entirely different.
The stock lights are not usable for this and would make it impossible to add a GAMEINFO lump to it because then there is no way to disable loading of lights in the startup screen.
2019-04-18 14:34:23 +02:00
Magnus Norddahl
f216b42790
- avoid creating labels when they are not used
...
- remove variable from class as it is only used locally
- set default values in the class
- remove unused field
2019-04-18 14:22:21 +02:00
Magnus Norddahl
640464ad65
- removed marked code for how to create GDB/LLDB debug info as it will probably never be implemented
2019-04-18 14:22:19 +02:00
Magnus Norddahl
837b3d8bd2
- add missing parameter on unix
2019-04-18 14:22:17 +02:00
Chronos Ouroboros
e0d3a5acae
Add line numbers to JIT stack traces. ( #667 )
2019-04-18 14:22:15 +02:00
Magnus Norddahl
bfccfb5e1b
- don't include the native frames per default
2019-04-18 14:22:13 +02:00
Magnus Norddahl
175b67c088
- fix linking and some linux things
2019-04-18 14:22:11 +02:00
Christoph Oelckers
d2a86a7051
- fixed misnamed macros.
...
# Conflicts:
# src/p_mobj.cpp
2019-04-18 14:22:09 +02:00
Chronos Ouroboros
218b7e95ca
Added a function for triggering use/push specials for usage in custom monster AI.
2019-04-18 14:22:07 +02:00
Chronos Ouroboros
803cb16d99
Exported P_CheckFor3DFloorHit and P_CheckFor3DCeilingHit to ZScript.
2019-04-18 14:22:05 +02:00
drfrag
38e682a267
- Fixed compilation of previous commit.
2019-04-18 14:22:03 +02:00
Christoph Oelckers
4d7e945dc1
- fixed: A powered up weapon which shares its ready state with the parent but is currently in a firing sequence may not force-switch the weapon, because that will cause the sequence to run in the wrong weapon's context.
2019-04-18 14:22:02 +02:00
Christoph Oelckers
0c5ca922ba
- fixed: 'frame' in GLDEFS light definitions was case sensitive.
2019-04-18 14:00:39 +02:00
drfrag
ecf1402274
- Fixed linking with MinGW-w64.
2019-04-18 14:00:37 +02:00
alexey.lysiuk
9aeeb0dc0f
- fixed compilation of POSIX targets
...
Making callstack resolving operational will require a little bit more effort
src/scripting/vm/jit_runtime.cpp:900:31: error: use of undeclared identifier 'frames'
src/scripting/vm/jit_runtime.cpp:903:23: error: use of undeclared identifier 'cnt'
2019-04-18 14:00:35 +02:00
Magnus Norddahl
a01a468ef8
- add support for writing the native call stack
2019-04-18 14:00:34 +02:00
Magnus Norddahl
e1ed87a64f
- improve the stack trace when the jit is active
2019-04-18 14:00:31 +02:00
Christoph Oelckers
77c00d7670
- replaced several explicit allocations with TArrays.
...
# Conflicts:
# src/r_data/models/models_voxel.cpp
# src/textures/formats/jpegtexture.cpp
# src/textures/formats/pcxtexture.cpp
# src/textures/formats/tgatexture.cpp
# Conflicts:
# src/r_data/voxels.cpp
# src/r_data/voxels.h
2019-04-18 13:58:37 +02:00
drfrag
846f53ba1e
- Fixed compilation with MinGW-w64 64 bit.
2019-04-18 13:51:17 +02:00
Christoph Oelckers
f702f6e19e
- use TArrays for MD3 storage.
...
# Conflicts:
# src/r_data/models/models_md3.cpp
2019-04-18 13:15:00 +02:00
Christoph Oelckers
a9ad3a1e52
- fixed two broken ScriptUtil calls in FraggleScript.
2019-04-18 13:14:51 +02:00
Christoph Oelckers
e87d04d843
- added a 'forceworldpanning' map flag.
...
Since unfortunately this cannot be set as a general default, let's at least make it as easy as possible to disable that panning+scaling madness without having to edit the texture data.
# Conflicts:
# src/swrenderer/textures/r_swtexture.h
# src/textures/texture.cpp
# Conflicts:
# src/textures/texture.cpp
2019-04-18 13:14:32 +02:00
Christoph Oelckers
c0e9530fd0
- fixed: The light defaults were not fully deleted on an engine restart.
2019-04-18 13:12:55 +02:00
Christoph Oelckers
7e2540732d
- store UnchangedSpriteNames in Dehacked in a less hacky manner.
2019-04-18 13:12:53 +02:00
Christoph Oelckers
71e77defa3
- use a TArray to store the particles and remove all 16 bit global variables.
...
This means one less exit function to deal with - and these days 16 bit variables are a pointless attempt at saving space.
2019-04-18 13:12:51 +02:00
Christoph Oelckers
cee9f52f2f
- improved error reporting for badly defined translations.
...
This needs to be handled by the caller for all use cases because the translation parser lacks the context to do a proper error report.
# Conflicts:
# src/textures/multipatchtexture.cpp
2019-04-18 13:07:39 +02:00
Christoph Oelckers
ce6b24308e
- fixed: sidedef-less GLWalls may not apply per-sidedef render properties.
...
These always come from open-sector render hacks where the renderer tries to fill in some gaps
# Conflicts:
# src/hwrenderer/scene/hw_walls.cpp
# Conflicts:
# src/gl/scene/gl_walls_draw.cpp
2019-04-18 13:05:44 +02:00
Christoph Oelckers
988e8042bb
- two more places where explicit allocations could be replaced.
2019-04-18 13:02:23 +02:00
Christoph Oelckers
d4611683a6
- let FxNop have a value type, even if it's just TypeError.
2019-04-18 13:02:21 +02:00
Magnus Norddahl
bafc5e6a3c
- add vanilla lightmode that behaves exactly as Doom's original light did
...
# Conflicts:
# src/hwrenderer/scene/hw_drawinfo.cpp
# src/hwrenderer/scene/hw_renderstate.cpp
# src/hwrenderer/scene/hw_renderstate.h
# src/hwrenderer/scene/hw_skyportal.cpp
# src/hwrenderer/scene/hw_weapon.cpp
# Conflicts:
# src/g_level.cpp
# src/gl/compatibility/gl_20.cpp
# src/gl/renderer/gl_lightdata.cpp
# src/gl/renderer/gl_renderstate.h
# src/gl/scene/gl_skydome.cpp
# src/gl/scene/gl_weapon.cpp
# src/hwrenderer/scene/hw_weapon.cpp
# src/hwrenderer/utility/hw_lighting.cpp
2019-04-18 12:50:03 +02:00
Rachael Alexanderson
f442d4bd54
- split gl_texture_hqresize into two variables - one for mode, one for multiplier.
...
# Conflicts:
# src/textures/hires/hqresize.cpp
# Conflicts:
# src/gl/textures/gl_hqresize.cpp
# src/r_videoscale.cpp
2019-04-17 21:04:41 +02:00
Rachael Alexanderson
301246236c
- added normal5x and normal6x
2019-04-17 20:59:20 +02:00
drfrag
96f996d8aa
Revert "Revert "- update xBRZ upscaler to version 1.6""
...
This reverts commit 285791622d
.
# Conflicts:
# src/gl/textures/gl_hqresize.cpp
# wadsrc/static/menudef.txt
Goodbye to TDM-GCC.
2019-04-17 20:33:41 +02:00
Christoph Oelckers
c47549c009
- code simplification.
2019-04-17 20:00:29 +02:00
Christoph Oelckers
4cdfd7ff33
- fixed incorrect alignment of scaled world panned textures combined with per-sidedef scaling in the hardware renderer
...
This particular case incorrectly factored in the sidedef's scaling factor for how to calculate the offset.
Fortunately this is a very rare case - a quick check yielded no maps depending on it.
Should any map surface that depends on this bug a compatibility option may be needed but it doesn't seem likely that this may be the case.
2019-04-17 20:00:28 +02:00
alexey.lysiuk
a93807833a
- disable music playback if WinMM stream cannot be opened
...
https://forum.zdoom.org/viewtopic.php?t=62888
2019-04-17 19:59:16 +02:00
alexey.lysiuk
ec432beea0
- print VM stack trace on startup abort exception
...
https://forum.zdoom.org/viewtopic.php?t=62650
2019-04-17 19:57:22 +02:00
Christoph Oelckers
3a3ae0bcd5
- fixed deprecation warnings for member functions not checking the version.
2019-04-17 19:44:10 +02:00
Christoph Oelckers
8ad73d32b8
- fixed: The JIT compiler crashed on missing ArgFlags.
...
For ad-hoc Dehacked state functions no ArgFlags are created, in this case they can just be assumed to not be relevant here, because none of these function produces reference arguments.
2019-04-17 19:44:07 +02:00
alexey.lysiuk
e6590f6ad9
- fixed return value of native call to dynamic array's Reserve()
...
https://forum.zdoom.org/viewtopic.php?t=62841
2019-04-17 19:44:05 +02:00
alexey.lysiuk
c4aa2c5e46
- server CVARs can be changed only by settings controller
...
Initially, settings controller flag was false by default
It was not touched during construction and destruction of player_t instances though
Now, with all members initialized in class definition, this flag must be saved and restored manually
https://forum.zdoom.org/viewtopic.php?t=62830
2019-04-17 19:44:04 +02:00
Magnus Norddahl
e4502de60b
- workaround pointer truncation bug in asmjit
2019-04-17 19:44:02 +02:00
alexey.lysiuk
651dce449a
- removed erroneous assertion
...
https://forum.zdoom.org/viewtopic.php?t=62815
2019-04-17 19:44:00 +02:00
alexey.lysiuk
9b49c6777d
- fixed Actor.A_StopSound() native call
...
Wrong function overload was selected by compiler
https://forum.zdoom.org/viewtopic.php?t=62820
2019-04-17 18:44:14 +02:00
Magnus Norddahl
60a35e0bb3
- moved argsCache out of JitCompiler::CreateFuncSignature
2019-04-17 18:44:12 +02:00
Christoph Oelckers
10aea91745
- don't put mutexes into static local variables.
...
Their initialization semantics are not safe for synchronization objects.
2019-04-17 18:44:08 +02:00
Christoph Oelckers
da8686813d
- fixed crash with FraggleScript in Nimrod MAP02.
2019-04-17 18:40:00 +02:00
alexey.lysiuk
84c7a810b1
- fixed broken Z coordinate in Actor.Vec3Angle() native call
2019-04-17 18:39:56 +02:00
alexey.lysiuk
7ba1e5945f
- fixed native calls to LevelLocals.GetUDMF*() functions
...
https://forum.zdoom.org/viewtopic.php?t=62774
2019-04-17 18:39:53 +02:00
Christoph Oelckers
c90e4b773a
- this "genuine hack" was totally redundant...
2019-04-17 17:44:07 +02:00
Christoph Oelckers
a6ff1637df
- more direct native stuff, this is a week old but was almost forgotten.
...
# Conflicts:
# src/hwrenderer/postprocessing/hw_postprocessshader.cpp
2019-04-17 17:42:24 +02:00
Christoph Oelckers
013040eacd
- missed one definition for adding a direct native call.
2019-04-17 17:27:42 +02:00
Christoph Oelckers
cf4f573a25
- more direct native entry points.
...
- disallow bool as a return value for direct native calls because it only sets the lowest 8 bits of the return register.
- changed return type for several functions from bool to int where the return type was the only thing blocking use as direct native call.
2019-04-17 17:27:39 +02:00
Christoph Oelckers
082cb5b656
- scriptified P_CheckMeleeRange2.
2019-04-17 16:24:10 +02:00
Christoph Oelckers
c054389345
- fixed: Direct native functions for the JIT compiler may not return bool.
...
A bool will only set the al register on x64, but the entire eax needs to be set for the JIT code to deal with it.
2019-04-17 16:24:07 +02:00
Christoph Oelckers
15ab1fb09b
- deprecated a few functions that depend on AAPTR_* to be useful.
...
- fixed wrong name for the LineAttack action function.
2019-04-17 16:24:05 +02:00
alexey.lysiuk
3252390642
- fixed linking of optimized targets
...
CMakeFiles/zdoom.dir/r_utility.cpp.o: In function `R_SetupFrame(FRenderViewpoint&, FViewWindow&, AActor*)':
/home/travis/build/coelckers/gzdoom/src/r_utility.cpp:832: undefined reference to `AActor::GetCameraHeight() const'
CMakeFiles/zdoom.dir/g_shared/a_action.cpp.o: In function `A_Unblock(AActor*, bool)':
/home/travis/build/coelckers/gzdoom/src/g_shared/a_action.cpp:64: undefined reference to `AActor::GetDropItems() const'
2019-04-17 15:11:26 +02:00
Christoph Oelckers
61b91f4897
- fix it
2019-04-17 15:11:24 +02:00
Christoph Oelckers
792aaa5b88
Added direct native entry points to a larger number of functions.
...
# Conflicts:
# src/scripting/vmthunks_actors.cpp
2019-04-17 15:11:22 +02:00
alexey.lysiuk
ab111aa034
- fixed linking of optimized POSIX targets
...
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance2DSquared(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x6ab): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance3DSquared(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x75f): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Vec3To(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x850): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Vec2To(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x930): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_DistanceBySpeed(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0xa00): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o:vmthunks_actors.cpp:(.text+0xad3): more undefined references to `AActor::PosRelative(AActor const*) const' follow
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_PosRelative(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x1200): undefined reference to `AActor::PosRelative(sector_t*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_ClearInterpolation(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x127d): undefined reference to `AActor::ClearInterpolation()'
vmthunks_actors.cpp:(.text+0x1298): undefined reference to `AActor::ClearInterpolation()'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_GetBobOffset(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x135a): undefined reference to `AActor::GetBobOffset(double) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance2D(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x222b): undefined reference to `AActor::PosRelative(AActor const*) const'
2019-04-17 15:11:18 +02:00
Christoph Oelckers
c0c5df0e6e
- fixed: ST_FormatMapName did not clear the string it wrote to before appending text.
2019-04-17 15:11:17 +02:00
Christoph Oelckers
22b8bdc02d
fixed missing include.
2019-04-17 15:11:15 +02:00
Christoph Oelckers
1fce3298ba
- fixed definition of GetUDMFString export.
2019-04-17 15:11:14 +02:00
Rachael Alexanderson
a4e09f1947
- Enforce CheckCheatmode() for cheat-enforced CVARs, allowing them to be changed in normal single player games
2019-04-17 15:11:11 +02:00
drfrag
a235d23c94
- Missing include.
2019-04-17 15:10:11 +02:00
Christoph Oelckers
a5e16e3261
- moved a large part of the VM thunks out of p_mobj.cpp.
2019-04-17 14:55:58 +02:00
Christoph Oelckers
1e4c22f8d4
- more direct native entry points.
2019-04-17 14:55:56 +02:00
Christoph Oelckers
3fb3831843
- fixed: SBar_SetClipRect had a superfluous argument resulting in incorrect behavior
2019-04-17 14:32:19 +02:00
Christoph Oelckers
89e6c400af
- missed the header...
2019-04-17 14:32:17 +02:00
Christoph Oelckers
93dedcfd4b
- the native APlayerPawn::PlayAttacking2 function is not needed anymore.
2019-04-17 14:32:16 +02:00
Christoph Oelckers
54d1ee2244
- fix bad return type.
2019-04-17 14:32:14 +02:00
Christoph Oelckers
d52889e71e
- handle JIT errors in a more user-friendly fashion than aborting.
...
* use I_Error instead of I_FatalError to abort. I_FatalError is only for things that are not recoverable and should not be handled outside of error cleanup and rethrowing.
* only catch CRecoverableError in JitCompile. Everything else should fall through to the outermost catch block.
* Do not I_FatalError out after handling the exception locally. Just print an error and return null, indicating failure.
2019-04-17 14:32:12 +02:00
Christoph Oelckers
f22aaca74d
- scriptified ASpecialSpot.
...
This only had two simple native methods so the class is not fully scripted.
2019-04-17 14:32:10 +02:00
Christoph Oelckers
92b245d220
- treat REGT_STRING | REGT_ADDROF just like REGT_STRING for direct native functions.
...
Both pass a reference so there's no need to treat them differently.
2019-04-17 14:32:08 +02:00
Christoph Oelckers
044b635a26
- more direct native function calls.
2019-04-17 14:32:06 +02:00
drfrag
03853930aa
- Fixed compilation.
2019-04-17 12:21:08 +02:00
Christoph Oelckers
c87724ef0a
Removed all native components from AInventory.
2019-04-16 23:57:22 +02:00
Christoph Oelckers
d40de21bae
- scriptified A_SpawnSingleItem, which was the last piece of native code still referencing AInventory
2019-04-16 23:57:19 +02:00
Christoph Oelckers
558c9b48de
- scriptified A_SelectWeapon and inlined the last remaining use of APlayerPawn::SelectWeapon.
2019-04-16 23:57:17 +02:00
Christoph Oelckers
d2225040ea
- scriptified A_SelectWeapon
2019-04-16 23:57:15 +02:00
Christoph Oelckers
b8e1218645
Removed all remaining references to AInventory
...
What remains is the class definition and one single reference that will be scriptified.
2019-04-16 23:57:12 +02:00
Christoph Oelckers
b762c0f49c
Removed more literal references to AInventory.
...
# Conflicts:
# src/hwrenderer/scene/hw_drawinfo.cpp
# src/v_draw.cpp
2019-04-16 23:57:07 +02:00
Christoph Oelckers
d173ad753f
- started removing literal references of AInventory, so far only simple stuff.
2019-04-16 23:57:02 +02:00
drfrag666
ab5e5e0389
- The GetBlend script call is needed in another place as well.
...
# Conflicts:
# src/gl/scene/gl_scene.cpp
2019-04-16 22:09:46 +02:00
Christoph Oelckers
e969e8a86b
- moved the GetBlend script call to the one single place where it is needed to get rid of one native AInventory method.
...
# Conflicts:
# src/g_inventory/a_pickups.cpp
# src/g_inventory/a_pickups.h
# src/hwrenderer/scene/hw_drawinfo.cpp
2019-04-16 22:01:08 +02:00
Christoph Oelckers
fa2e2e78b4
- removed all direct access to AInventory's members.
...
We are getting closer to make class Inventory fully scripted.
2019-04-16 22:01:04 +02:00
Magnus Norddahl
c8b5276981
- gcc/clang didn't like having this in a class
2019-04-16 22:01:01 +02:00
Magnus Norddahl
82a0acbc19
- add bool and unsigned int to the allowed types
...
- fix one case where floats were used (the JIT always calls with doubles)
2019-04-16 22:00:57 +02:00
Magnus Norddahl
89fd819926
- perform compile time validation of direct native function signatures
2019-04-16 22:00:55 +02:00
Magnus Norddahl
9e432c0c9f
- fix VM native calls containing strings and enable them again
2019-04-16 22:00:53 +02:00
Magnus Norddahl
6090e5ec24
- fix compile error
2019-04-16 22:00:50 +02:00
Magnus Norddahl
cd03a487fe
- GetInventoryIcon must return an integer for it to work for VM native calls
2019-04-16 22:00:48 +02:00
Christoph Oelckers
a42ece4fb4
- added missing min/max unsigned instructions for the VM.
2019-04-16 22:00:46 +02:00
Rachael Alexanderson
b7d22e2b1e
- always apply vid_scalefactor now, even when vid_scalemode is not 0 or 1.
...
# Conflicts:
# src/r_videoscale.cpp
2019-04-16 21:57:07 +02:00
Christoph Oelckers
e176410ab6
- fixed crash with weapons which remove themselves from the inventory but continue calling action functions.
...
This is still an error, so now this throws a meaningful exception.
2019-04-16 21:53:00 +02:00
Christoph Oelckers
d8d52f67b4
- hardened the seg integrity checks against extremely broken mods.
...
Temple of the Lizardmen 3 has segs lumps in every level that seem to use a different data format and are completely unusable, up to triggering undefined behavior.
2019-04-16 21:52:58 +02:00
Christoph Oelckers
59e0871f00
- fixed: The static variant of PClass::FindFunction may only be used for actual static variables.
2019-04-16 21:52:56 +02:00
Christoph Oelckers
c0686309fc
- removed all direct references of AInventory::Owner and AInventory::Amount from the C++ code.
2019-04-16 21:52:53 +02:00
Christoph Oelckers
fc341c901f
- fixed issues with Dehacked's ad-hoc script code generation
...
* The functions had no prototype and caused crashes.
* even after creating a prototype it didn't work because CreateAnonymousFunction was set up incorrectly for the case where a known return type was given.
2019-04-16 21:52:47 +02:00
drfrag
48c2f6451e
- disable alpha test on models if the renderstyle isn't STYLE_Normal
...
- compare against the thing renderstyle since the local copy has been modified
(patches by dpJudas)
2019-04-16 21:51:19 +02:00
Christoph Oelckers
ba0e19f2a2
- made the BUddha checks readable again.
2019-04-16 21:34:55 +02:00
Christoph Oelckers
dc29eee077
- fixed compile warning
2019-04-16 21:34:53 +02:00
Christoph Oelckers
0a36ad0182
- removed assert that got triggered in an edge case that must pass here.
2019-04-16 21:34:51 +02:00
Christoph Oelckers
1bfa1fd5a6
- implemented missing 'exact' parameter for ThinkerIterator.Next.
2019-04-16 21:34:49 +02:00
Christoph Oelckers
5043106e97
- started replacing direct references to class AInventory.
...
The easiest part was the type checks which could be changed to the name variant with a global search and replace.
# Conflicts:
# src/hwrenderer/scene/hw_sprites.cpp
# Conflicts:
# src/hwrenderer/scene/hw_sprites.cpp
2019-04-16 21:34:23 +02:00
Major Cooke
4e8d88f7df
- fixed: P_PoisonPlayer and P_PoisonDamage did not check for NODAMAGE.
...
- fixed: P_PoisonDamage's check for Buddha2 and the Buddha powerup were inverted.
- fixed: P_PoisonDamage checked the modified damage instead of the raw, allowing amplifiers to boost the damage beyond telefrag and circumventing regular buddha.
2019-04-16 21:28:39 +02:00
Christoph Oelckers
9f2b62c99c
- scriptified AInventory::Tick.
...
This was the last bit of code standing in the way of making AInventory a fully scripted class.
All that's left to sort out is some variable accesses - the vast majority of them in SBARINFO.
2019-04-16 21:28:37 +02:00
Magnus Norddahl
abc4406d18
- ptest is a SSE 4.1 instruction
2019-04-16 21:28:35 +02:00
Christoph Oelckers
bdd6d31a63
- scriptified the AutoUseHealth feature.
...
This again is a piece of code that reads and even writes to inventory items' properties, so better have it on the script side.
2019-04-16 21:28:34 +02:00
Christoph Oelckers
80e3ce735b
- scriptified the decision making of the invuseall CCMD.
...
Custom items had no way to adjust to this - and it also was the last native access to ItemFlags.
2019-04-16 21:28:32 +02:00
Christoph Oelckers
9ff5257ce9
- scriptified P_DropItem.
2019-04-16 21:28:30 +02:00
Christoph Oelckers
17862639a1
- scriptified the no-spawn flag check for armor and health items.
2019-04-16 21:28:29 +02:00
Christoph Oelckers
e9dd8f3e4f
- consolidated the check for "is actor an owned inventory item" into a subfunction.
...
This check occured 9 times in the source, better have it only once.
2019-04-16 21:28:26 +02:00
Christoph Oelckers
e8a6f82682
- scriptified G_PlayerFinishLevel.
...
Outside of SBARINFO this was the biggest remaining piece of code that referenced AInventory internals.
2019-04-16 21:28:24 +02:00
Christoph Oelckers
9315a217b3
- scriptified AActor::ClearInventory
2019-04-16 21:28:21 +02:00
Christoph Oelckers
a2ffe6327b
- took the last methods aside from Tick and Serialize out of AInventory.
...
# Conflicts:
# src/g_inventory/a_pickups.cpp
# src/g_inventory/a_pickups.h
2019-04-16 21:28:19 +02:00
drfrag
8ef732704c
- Missing include.
2019-04-16 19:55:28 +02:00
Christoph Oelckers
a1615457ac
- properly hook up the alt HUD with the status bar.
...
# Conflicts:
# src/d_main.cpp
2019-04-16 19:09:14 +02:00
Christoph Oelckers
0d8975ed31
- scriptified the last components of the alternative HUD.
...
- moved the ALTHUDCF parser PClass::StaticInit, so that it gets done right after creating the actor definitions.
All left to do is not to reallocate the AltHud object for each frame but store it in a better suited place.
# Conflicts:
# src/d_main.cpp
# Conflicts:
# src/info.cpp
2019-04-16 19:03:43 +02:00
Christoph Oelckers
376266b6a0
- scriptified the main drawer for the in-game HUD and removed all intermediate VM calls from the native source.
2019-04-16 19:02:01 +02:00
Christoph Oelckers
9d8dd5c529
- scriptified the AltHUD'S powerup drawer.
2019-04-16 19:01:55 +02:00
Christoph Oelckers
f509fdfdaa
- scriptified and cleaned up the AltHUD's DrawCoordinates, DrawTime and DrawLatency functions.
...
Some backing functionality was moved elsewhere because scripting should not have access to low level system information.
2019-04-16 19:01:53 +02:00
Christoph Oelckers
eb07b8e543
- scriptified the AltHUD's inventory drawer and fixed the InvPrev CCMD.
2019-04-16 19:01:51 +02:00
Christoph Oelckers
e0915877b4
- scriptified the AltHUD's weapon drawer.
2019-04-16 19:01:50 +02:00
Christoph Oelckers
045d6d4355
- added the missing TNT1A0 check for icon-less keys.
...
Since it tries to get the icon from the spawn state it also has to check if that actually has a valid sprite.
2019-04-16 19:01:48 +02:00
Christoph Oelckers
437c72a089
- AltHUD ammo drawer scriptified.
2019-04-16 19:01:46 +02:00
Christoph Oelckers
cbb92af1db
- allow %*d etc. format specifiers in ZScript, but only for numeric types.
2019-04-16 19:01:45 +02:00
Christoph Oelckers
1033dc3b10
- Alt HUD scriptification, part 1.
2019-04-16 19:01:43 +02:00
Magnus Norddahl
08f415bad9
- don't use SSE for integer min/max
2019-04-16 18:46:09 +02:00
Magnus Norddahl
1e533d726c
- Use SSE2 for min/max instead
2019-04-16 18:46:07 +02:00
Christoph Oelckers
ca67327d1c
- this was wrong...
2019-04-16 18:46:01 +02:00
Christoph Oelckers
ff9eaed1ba
- fixed script call in PickNewWeapon.
2019-04-16 18:45:58 +02:00
Christoph Oelckers
53c1614a51
- fixed: P_Massacre without a class restriction no longer worked.
2019-04-16 18:45:56 +02:00
Christoph Oelckers
d18ed18d2e
- scriptified invnext and invprev CCMDs.
2019-04-16 18:45:54 +02:00
Christoph Oelckers
081d0bbcca
- moved ValidateInvFirst to the script side because this was one of the major functions that directly reference AInventory.
2019-04-16 18:45:52 +02:00
Christoph Oelckers
d021d63d33
- moved AInventory::DoRespawn fully to the script side.
2019-04-16 18:45:49 +02:00
Christoph Oelckers
a7909c16e5
- made CallTryPickup a global function.
...
This one still gets called in too many places but stands in the way of moving Inventory fully to the script side.
2019-04-16 18:45:47 +02:00
Christoph Oelckers
9981674a27
- re-fixed the massacre fix for Dehacked-modified inventory items.
...
Instead of overriding the Massacre method it is preferable to clear the flags causing the bad behavior, most notably ISMONSTER.
# Conflicts:
# src/g_inventory/a_pickups.cpp
# src/g_inventory/a_pickups.h
2019-04-16 18:45:43 +02:00
Christoph Oelckers
be8d1c950d
- scriptified GiveAmmo and the one remaining piece of native code still using it.
2019-04-16 18:45:41 +02:00
Christoph Oelckers
f1bf1cc44e
- scriptified DropInventory.
2019-04-16 18:45:38 +02:00
Christoph Oelckers
a614f2a81e
- scriptified UseInventory and several functions using the already scriptified ones,
...
# Conflicts:
# src/g_statusbar/sbar.h
2019-04-16 18:45:36 +02:00
Christoph Oelckers
e7c798f58f
- scriptified TakeInventory, including the ACS/FS interfaces.
2019-04-16 18:45:03 +02:00
Christoph Oelckers
390f8ef209
- code consolidation in invnext and invprev.
2019-04-16 18:45:01 +02:00
Christoph Oelckers
d2741813ab
- scriptified RemoveInventory and Inventory.OnDestroy.
2019-04-16 18:44:59 +02:00
Christoph Oelckers
8609e2ba68
- scriptified GiveInventory and made the interface a bit more configurable by mods.
...
Now a child type can decide for itself how to treat 'amount'.
The scripting interfaces to this function in ACS and FraggleScript have been consolidated and also scriptified.
2019-04-16 18:44:56 +02:00
Christoph Oelckers
2a192cde92
- scriptified AddInventory.
2019-04-16 18:44:53 +02:00
Christoph Oelckers
de6916756b
- disabled direct native functions for now until the problems with string arguments are fixed.
2019-04-16 18:44:50 +02:00
Christoph Oelckers
057604a7b1
- added direct native variants to nearly all status bar function.
...
I skipped ValidateInvFirst because that one will have to be scriptified soon.
2019-04-16 18:44:49 +02:00
Magnus Norddahl
b6737c0cd3
- minor code cleanup now that it is working
2019-04-16 18:18:30 +02:00
Christoph Oelckers
712b85fc61
- removed the no longer needed exception prevention hack.
...
# Conflicts:
# src/scripting/vm/vmframe.cpp
# Conflicts:
# src/scripting/vm/vmframe.cpp
2019-04-16 18:18:16 +02:00
Christoph Oelckers
fc4b757b17
- fixed: V_FindFontColor is not suitable for direct calls from JIT code, thanks to its FName parameter.
2019-04-16 18:17:32 +02:00
Christoph Oelckers
4049b56d50
- a bit of code reordering for adding direct native entry points.
...
- offloaded key list generation for alternative HUD to non-UI parts.
This change also revealed a problem with handling empty sprites in the key list so this got fixed, too.
# Conflicts:
# src/g_shared/shared_hud.cpp
2019-04-16 18:17:05 +02:00
Magnus Norddahl
c84f13829f
- fix augmentation length bug
2019-04-16 18:14:40 +02:00
Magnus Norddahl
4393684831
- unwind data is now working on macOS
2019-04-16 18:14:39 +02:00
Christoph Oelckers
56228a853b
- moved all exports from class Font to vmthunks.cpp and gave them direct native entrypoints.
...
- changed PARAM_STRING to use the passed string by reference instead of by value. The 3 instances where passing by value was needed now use PARAM_STRING_VAL.
# Conflicts:
# src/v_video.h
2019-04-16 18:14:09 +02:00
Christoph Oelckers
798cebf891
- fixed character to int conversion for UTF8-characters.
2019-04-16 17:43:33 +02:00
alexey.lysiuk
e9daf31b23
- previous fix attempts done right
...
# Conflicts:
# src/m_cheat.cpp
2019-04-16 17:43:23 +02:00
SanyaWaffles
a00a567532
Attempts to fix errors introduced by merging of asmjit branch and wea… ( #649 )
...
* Attempts to fix errors introduced by merging of asmjit branch and weapons scripting branch
* This didn't work. The others should work though.
* fix scriptutil.cpp:(.text+0x18d): undefined reference to `PClass::FindActor(FName)'
* Attempt to fix compilation on macOS
# Conflicts:
# src/m_cheat.cpp
2019-04-16 17:42:13 +02:00
Magnus Norddahl
0746784965
- implemented unwind data on Unix - does it work? no idea, there's no easy way to tell when the debugger doesn't support the interface..
2019-04-16 17:40:48 +02:00
Christoph Oelckers
f2ac0f4c53
- removed the longjmp based exception catch/rethrow mechanism and instead force-terminate in case a user exception is thrown while the VM is executing JITed code on a non-Windows system
...
On Windows none of this is needed, because we can generate a proper unwind frame for the JITed functions, but even on Linux, it would require manual additions to each single piece of native code that ever gets called from inside a JIT compiled function.
This is an utterly prohibitive proposition because it makes direct native calls a virtual impossibility
So, in order to get the thrown error properly presented both I_Error and ThrowAbortException will now forward to I_FatalError if it is called from inside a JIT context.
# Conflicts:
# src/scripting/vm/vmframe.cpp
2019-04-16 17:32:32 +02:00
Christoph Oelckers
bd4e41d6cb
-add a dummy definition for vm_jit in 32 bit.
2019-04-16 17:28:36 +02:00
Christoph Oelckers
a7913e9ba9
- fixed: the direct native GetTextureSize used the wrong calling convention.
2019-04-16 17:28:35 +02:00
Player701
e5fa48ae79
- Added a flag to make bouncing objects disappear when hitting sky surfaces
2019-04-16 17:28:33 +02:00
Christoph Oelckers
5c91df5c73
- let FOBJModel::ParseVector actually use its templated size parameter
...
In this setup the array can be statically updated because the size is always constant per instantiation
2019-04-16 17:28:31 +02:00
Christoph Oelckers
94424aeed8
- Changed a few allocations into usin TArrays
...
S_SoundCurve in particular looked like a candidate for leaking memory.
2019-04-16 17:28:30 +02:00
drfrag
999f6f6920
- Fixed warning.
2019-04-16 17:25:08 +02:00
Magnus Norddahl
7c1730f221
- fix native call crash and assertion error
2019-04-16 17:14:31 +02:00
Magnus Norddahl
f65b7fb1be
- hook up unix unwind info (still not working)
2019-04-16 17:14:30 +02:00
Magnus Norddahl
d65298e929
- fix WriteSLEB128
2019-04-16 17:14:28 +02:00
Magnus Norddahl
14bb291901
- fix compile errors
2019-04-16 17:14:26 +02:00
Magnus Norddahl
fd0104bc71
- implemented unwind info for Linux and macOS - now to fix the bugs that cannot be fixed when the documentation is as useless as it is for those platforms..
2019-04-16 17:14:25 +02:00
Christoph Oelckers
2f68a0681d
- fixed code generation for dummy results.
2019-04-16 17:10:39 +02:00
Christoph Oelckers
ebf368ffc6
- fixed compilation warnings.
2019-04-16 17:10:35 +02:00
Christoph Oelckers
4bffe69912
- direct native methods for dynamic arrays.
2019-04-16 17:10:33 +02:00
Christoph Oelckers
3758e3e1fa
Add direct native calls to TexMan's native methods.
...
# Conflicts:
# src/textures/texturemanager.cpp
2019-04-16 16:37:37 +02:00
Christoph Oelckers
09f4c7e4a9
Made all virtual base functions for the event handler scripted
...
This was by far the largest block of native virtuals, and they were only native to be able to allow checking if the event was implemented for the current handler. This can easily be done by looking at the byte code, just like VMCall also does but in turn it removes more than half of the existing native virtuals from the interface.
2019-04-16 15:26:14 +02:00
Christoph Oelckers
76ac8bf27c
Direct native functions for SBarInfo
...
Mostly pointless because they all get used only once and aren't even virtual overrides, but I only realized this after everything was complete…
2019-04-16 15:26:13 +02:00
Christoph Oelckers
b033fd3d52
Added direct native functions to the remaining content of vmthunks.cpp
2019-04-16 15:12:47 +02:00
Christoph Oelckers
3c11090d09
- more direct native functions for sector utilities.
2019-04-16 15:12:45 +02:00
Magnus Norddahl
e4ce93382b
- Emit DW_CFA_advance_loc and DW_CFA_def_cfa_offset codes
2019-04-16 15:12:43 +02:00
Christoph Oelckers
4ac866aedc
- added a few more direct native entry points.
2019-04-16 15:12:41 +02:00
Christoph Oelckers
03b7d84058
- added a direct native function for NextHighestCeilingAt to test multiple return values.
2019-04-16 15:12:37 +02:00
Magnus Norddahl
29e051a36a
- fix typo in macro
2019-04-16 15:12:34 +02:00
Magnus Norddahl
48d211c79b
- add .eh_frame generation code except for building the actual CIE and FDE instructions
2019-04-16 15:12:31 +02:00
Christoph Oelckers
d5f4f93dd2
- allocate storage for all of a function's return values
2019-04-16 14:58:41 +02:00
Christoph Oelckers
179f5720cd
- moved the remaining exports from p_sectors.cpp to vmthunks.cpp
2019-04-16 14:58:39 +02:00
Magnus Norddahl
c8c671bbe0
- pass additional return values as the last args to a direct native call
2019-04-16 14:58:37 +02:00
Magnus Norddahl
0f27d0cd66
- use the OP_PARAM and OP_RESULT opcodes to build the function signature
2019-04-16 14:58:35 +02:00
Magnus Norddahl
4e5415d371
- fixed missing setRet call for REGT_POINTER return types
2019-04-16 14:58:34 +02:00
Magnus Norddahl
a557042bcc
- fix compile error
2019-04-16 14:58:32 +02:00
Magnus Norddahl
7c75776273
- annotate which function we are calling for better dumpjit info
2019-04-16 14:58:30 +02:00
Magnus Norddahl
ee7d6abdd3
- move the jit runtime to its own file
2019-04-16 14:58:27 +02:00
Christoph Oelckers
f3171c95cc
- fixed: Any direct native function may not use struct values as parameters, not even something as simple as an FName.
2019-04-16 14:58:25 +02:00
Christoph Oelckers
c0a26afab9
- free everything.
2019-04-16 14:58:24 +02:00
Christoph Oelckers
7c649a9f0c
- delete JIT data when shutting down.
2019-04-16 14:58:21 +02:00
Magnus Norddahl
8fc8dee090
- fix: float constants got their move instructions inserted after the call instruction
2019-04-16 14:58:19 +02:00
Christoph Oelckers
29eee14549
- declare builtins as static.
2019-04-16 14:58:18 +02:00
Christoph Oelckers
3f1c7bdbe8
- added a direct native variant for A_PlaySound because this function is relatively easy to test.
2019-04-16 14:58:15 +02:00
Magnus Norddahl
6289e0ad3d
- fix macro expansion error on gcc and clang
2019-04-16 12:41:21 +02:00
Christoph Oelckers
5efa21ad31
- finished adding direct native functions to vmthunks.cpp.
2019-04-16 12:40:48 +02:00
Christoph Oelckers
63575d22c0
- all sector exports done.
2019-04-16 12:40:46 +02:00
Christoph Oelckers
7f4ed65123
- another batch of direct native functions.
2019-04-16 12:40:43 +02:00
Christoph Oelckers
10588add9c
- continued work on adding direct native support.
2019-04-16 12:40:40 +02:00
Christoph Oelckers
178c1a41a6
- moved VM thunks from p_sectors.cpp to a separate file and started adding direct native implementations.
...
For a few larger functions I took them out of sector_t and made them global functions to avoid creating more unnecessary stubs.
# Conflicts:
# src/p_sectors.cpp
2019-04-16 12:37:04 +02:00
Christoph Oelckers
c01981d08a
- define the built-in functions defined in codegen.cpp through the regular interface instead uf just hacking them into the symbol table with incompletely set up data.
...
- added direct native variants to these builtins and fixed problems with builtin processing.
2019-04-15 22:30:01 +02:00
Christoph Oelckers
20ec6ddce4
- removed AStateProvider from native code.
...
The only place still referencing it was CallStateChain, so this has been made a static function now instead of a class method.
2019-04-15 22:29:58 +02:00
Christoph Oelckers
376c47bef6
- fixed handling of dummy flags.
2019-04-15 22:29:55 +02:00
Christoph Oelckers
96e9dbd967
- removed all remaining native components of the weapon class.
2019-04-15 22:29:52 +02:00
Christoph Oelckers
d871072f28
- allow defining flags in the script declaration of a class and do that for Weapon.
2019-04-15 22:29:47 +02:00
Christoph Oelckers
309cc57504
- removed all direct access to AWeapon's members to prepare moving this class fully to the script side.
...
Disregarding UI-side and setup-related calls there's unfortunately still 6 places in the native game code which require direct access.
2019-04-15 22:29:43 +02:00
Christoph Oelckers
ce5792242c
- moved the 'Finalize' methods back into a single function in the parser code.
...
It has been like this initially but was changed when ZDoom gained an overly complicated polymorphic class descriptor object that required a lot of support code. All these complications have long been removed but these methods remained. Since they prevent a class from being moved to the script side entirely they had to be removed.
This was the last major blocker to make Weapon a purely scripted class, the only remaining native method is Serialize which is of no concern for the coming work.
2019-04-15 22:29:39 +02:00
Christoph Oelckers
7caa6a922d
- moved MarkPrecacheSounds completely to the script side and added native support to make this a usable feature.
...
# Conflicts:
# src/g_inventory/a_pickups.cpp
2019-04-15 22:29:35 +02:00
Christoph Oelckers
ac754b5e96
- some cleanup on the weapon slot interface.
...
This really shouldn't make any decisions from directly reading weapon class defaults.
2019-04-15 22:29:32 +02:00
Christoph Oelckers
f9dfdace16
- scriptified cht_Takeweaps.
2019-04-15 22:29:30 +02:00
Christoph Oelckers
dadf0394c0
- removed the less-parameters versions of P_SpawnPlayerMissile, because there was only one native call left to them.
2019-04-15 22:29:28 +02:00
Christoph Oelckers
94b0338c31
- scriptified ApplyKickback.
2019-04-15 22:29:26 +02:00
Christoph Oelckers
2145db9fbd
- moved the kickback code in P_DamageMobj into a subfunction.
...
This is a first attempt to reduce the complexity of that 600+ lines monstrosity, and also a good first target for scriptification.
2019-04-15 22:29:24 +02:00
Christoph Oelckers
59bffe2f55
- scriptified A_WeaponReady and its subfunctions.
2019-04-15 22:29:22 +02:00
Christoph Oelckers
951ed466b3
- scriptified P_BobWeapon as a virtual function on PlayerPawn.
2019-04-15 22:29:19 +02:00
Christoph Oelckers
04cd432159
- a little bit of cleanup on some code that repeatedly accessed some fields in AWeapon and produced far too many search results when looking for this.
2019-04-15 22:29:17 +02:00
Christoph Oelckers
0515af2bd3
- removed the bot related properties from AWeapon.
...
This stuff is now kept locally in the bot code so that it doesn't infest the rest of the engine.
And please don't read the new botsupp.txt file as some new means to configure bots! This was merely done to get this data out of the way.
The bots are still broken beyond repair and virtually unusable, even if proper data is provided for all weapons.
2019-04-15 22:29:15 +02:00
Christoph Oelckers
d31f67cb43
- consolidated the 3 nearly identical code fragments handling the weapon's YAdjust for the different renderers into a utility function in DPSprite.
...
# Conflicts:
# src/hwrenderer/scene/hw_weapon.cpp
# src/polyrenderer/scene/poly_playersprite.cpp
# src/swrenderer/things/r_playersprite.cpp
2019-04-15 22:07:45 +02:00
Christoph Oelckers
681009e1ea
- exported the blood spawning part of P_LineAttack as a virtual ZScript function.
2019-04-15 21:59:08 +02:00
Christoph Oelckers
82ffdd5e6b
- moved the weapon selection logic to PlayerPawn as overridable virtual functions.
2019-04-15 21:59:07 +02:00
Christoph Oelckers
af4c37471e
- took the weapon selection logic out of the WeaponSlots data and blocked all direct access to the weapon slots internals
...
This seriously needs to be independent from the data store and better abstracted. More work to come to move this to its proper place.
# Conflicts:
# src/g_inventory/a_pickups.cpp
2019-04-15 21:59:05 +02:00
Christoph Oelckers
27c67716df
- change teleport freeze handling to a player property plus virtual override on PlayerPawn for increased configurability.
...
# Conflicts:
# src/g_inventory/a_pickups.cpp
2019-04-15 21:59:03 +02:00
Christoph Oelckers
7c1416cb6f
- scriptified BecomeItem and BecomePickup
...
# Conflicts:
# src/g_inventory/a_pickups.cpp
2019-04-15 21:59:01 +02:00
Christoph Oelckers
08059f718b
- scriptified FilterCoopRespawnInventory.
2019-04-15 21:59:00 +02:00
Christoph Oelckers
1ecada388c
- scriptified some simple sound functions.
2019-04-15 21:58:58 +02:00
Christoph Oelckers
d123230fb1
- scriptified APlayerPawn::Die and fixed a few things I encountered while doing it.
2019-04-15 21:58:56 +02:00
Christoph Oelckers
0eec8b293a
- scriptified ModifyDropAmount as a virtual function hierarchy for Inventory and children.
2019-04-15 21:58:54 +02:00
Christoph Oelckers
f1c7815b16
- scriptified A_Explode and relatives.
2019-04-15 21:58:52 +02:00
Christoph Oelckers
e234d450aa
- scriptified GetDefaultInventory.
2019-04-15 21:58:50 +02:00
Christoph Oelckers
864796a6a2
- removed MeleeWeapon flag from the tomed PhoenixRod and the fighterhammer.
...
In both cases, having this flag on will render the monster-backing-off-check for melee attacks ineffective because it would misinterpret these weapons as close range only - which they aren't. Even for the PhoenixRod the range is longer than what gets checked here.
As a consequence, the bot's check for missile shooting melee weapons has also become pointless because no such weapon is defined anymore.
2019-04-15 21:58:48 +02:00
Christoph Oelckers
beae232f83
- exported one FraggleScript function for testing.
2019-04-15 21:58:46 +02:00
Christoph Oelckers
c326c4c521
- exported a few more weapon handling functions so that the native GetDownState stub could be removed.
2019-04-15 21:58:45 +02:00
Christoph Oelckers
53b41cf32f
- let player_t::Resurrect use P_BringUpWeapon to raise the weapon again instead of doing it directly.
...
This seems a bit safer.
2019-04-15 21:58:43 +02:00
Christoph Oelckers
c1442fae0d
- scriptified P_BringUpWeapon because this was the only native function still referencing AWeapon::GetReadyState.
2019-04-15 21:58:41 +02:00
Christoph Oelckers
8c2c888d82
- scriptified A_SpawnItem(Ex) and A_ThrowGrenade.
...
These were the last native functions referencing AWeapon::DepleteAmmo, so that function is now exclusively on the scripting side.
2019-04-15 21:58:39 +02:00
Christoph Oelckers
1b225588d1
- scriptified 3 more functions in stateprovider.
2019-04-15 21:58:37 +02:00
Christoph Oelckers
05e8a6c62d
- scriptified A_RailAttack.
2019-04-15 21:58:35 +02:00
Christoph Oelckers
394d8e414f
- scriptified A_CustomPunch
2019-04-15 21:58:33 +02:00
Christoph Oelckers
54ba5b4829
- scriptified A_FireProjectile
2019-04-15 21:58:31 +02:00
Christoph Oelckers
d99b46c861
- scriptified A_FireBullets and A_CustomBulletAttack.
2019-04-15 21:58:30 +02:00
Christoph Oelckers
f794cab92f
- deleted redundant native ActivateMorphWeapon method.
2019-04-15 21:58:28 +02:00
Christoph Oelckers
4c7096ffac
- started with a ScriptUtil class which will allow moving function implementations for ACS and FraggleScript to zscript.txt
...
So far 3 functions for testing implemented.
# Conflicts:
# src/p_acs.cpp
2019-04-15 21:58:26 +02:00
Christoph Oelckers
1b6af10f38
- scriptified Weapon.CheckAmmo and Weapon.DepleteAmmo
2019-04-15 21:56:30 +02:00
Christoph Oelckers
9e6279ed5b
- scriptified the rest of the morph code.
2019-04-15 21:56:28 +02:00
Christoph Oelckers
5f5410e35f
- fixed: Since out types cannot be marked as such in a function prototype (as it'd cause parameter mismatches in the resolving pass) it is necessary to check the argflags as well when determining the register type.
2019-04-15 21:56:26 +02:00
Christoph Oelckers
b886219f53
- scriptified P_MorphMonster.
2019-04-15 21:56:23 +02:00
Christoph Oelckers
d4ff49e110
- fixed message output.
2019-04-15 21:56:22 +02:00
Christoph Oelckers
02f785f794
- testing and cleanup of scripted morph code.
2019-04-15 21:56:20 +02:00
Christoph Oelckers
9b1e96262c
- P_UndoPlayerMorph scriptified.
...
Not tested yet and still missing a new native interface.
2019-04-15 21:56:18 +02:00
Christoph Oelckers
395413fc9a
- scriptified P_MorphPlayer and dependencies.
...
It still needs its counterpart scriptified as well before it can work.
# Conflicts:
# src/gi.cpp
# wadsrc/static/zscript/base.txt
2019-04-15 21:56:16 +02:00
Christoph Oelckers
8669dbdcfe
- removed test and debug code.
...
# Conflicts:
# src/gl/scene/gl_scenedrawer.h
2019-04-15 21:50:57 +02:00
drfrag
60e667f732
- Fixed compilation.
2019-04-15 21:48:55 +02:00
Magnus Norddahl
5f7aeb3186
- fix missing include statement
2019-04-15 16:09:14 +02:00
Christoph Oelckers
1fd23f5228
- fixed initialization of default parameters in dynamically created function calls like in the MENUDEF parser
2019-04-15 16:09:13 +02:00
Magnus Norddahl
31f524fd6b
- inline VBTL opcode
...
- remove old META and CLSS implementations
2019-04-15 16:09:11 +02:00
Magnus Norddahl
d4e3bee7c6
- add return type to CreateFuncSignature
2019-04-15 16:09:10 +02:00
Magnus Norddahl
1aebbfb3b5
- fix typo
2019-04-15 16:09:08 +02:00
Magnus Norddahl
815b7d8b7e
- add support in the jit compiler to do direct native calls using the x64 calling convention
2019-04-15 16:09:07 +02:00
Christoph Oelckers
f00892e06d
- exported ADecal to ZScript as a non-native class.
...
Its one function is still native but this was by far the easiest of the remaining actor classes to export.
2019-04-15 16:09:05 +02:00
Christoph Oelckers
cc8e390dce
removed the quite redundant GetStateForButtonName function
...
Since it forwards directly to FindState and has no script bindings there is no need to keep it, it'd only complicate the full scriptification of the weapon class if it stuck around.
2019-04-15 16:09:04 +02:00
Christoph Oelckers
95767fb63a
- fixed some issues with the bodyque and moved this variable into FLevelLocals
...
* it was never saved in savegames, leaving the state of dead bodies undefined
* it shouldn't be subjected to pointer substitution because all it contains is old dead bodies, not live ones.
# Conflicts:
# src/r_data/r_translate.cpp
2019-04-15 16:08:18 +02:00
Christoph Oelckers
edfe8b36c6
- cleaned up the PointerSubstitution code
...
Since the only thing it gets used for is swapping out PlayerPawns it can safely skip all global variables that never point to a live player, which allowed to remove quite a bit of code here that stood in the way of scriptifying more content
2019-04-15 16:06:22 +02:00
Christoph Oelckers
f2fe079ddb
- fixed the reginfo checks for the Draw... functions.
...
They need to be offset by the same amount as the arguments so that the values are properly matched.
# Conflicts:
# src/v_draw.cpp
2019-04-15 16:03:51 +02:00
Christoph Oelckers
5e63252fdc
- moved the type infomation entirely out of VMValue.
...
For the varargs functions that used the Type field to validate their parameters, now a hidden additional argument is passed which contains a byte array with the type info for the current call's arguments. Since this is static per call location it can be better prepared once when the code is being compiled instead of being put in a runtime created array for each invocation. Everything else uses the per-function instance of the same data.
The only thing that still needed the type field with a VMValue is the defaults array, so this uses a different struct type now to store its data.
# Conflicts:
# src/v_draw.cpp
2019-04-15 16:02:17 +02:00
Christoph Oelckers
cb9c1f021c
- generate register type info for the parameter lists of all functions.
...
Currently used for loading parameters into registers.
For checking parameters of native functions some more work is needed to get the info to the function. Currently it doesn't receive the function descriptor.
2019-04-15 15:52:22 +02:00
Magnus Norddahl
a277137d85
- add missing CheckVMFrame call
2019-04-15 15:52:21 +02:00
Magnus Norddahl
0fe213765b
- only allocate stack space for vmframe and call returns when we need them
2019-04-15 15:52:20 +02:00
Magnus Norddahl
03258d1334
- improve dumpjit output slightly
2019-04-15 15:52:19 +02:00
Magnus Norddahl
ec3b491f19
- don't emit VMValue.Type information when we know the receiver isn't going to read it anyway
2019-04-15 15:52:18 +02:00
Magnus Norddahl
fe64de28d4
- delay emitting PARAM and VTBL instructions until CALL/CALL_K
2019-04-15 15:52:16 +02:00
alexey.lysiuk
5d0bf48e22
- use custom offsetof() macro
...
src/scripting/vm/jit_call.cpp:164:38: warning: offset of on non-standard-layout type 'VMScriptFunction' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:87:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:96:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:257:53: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
2019-04-15 15:52:15 +02:00
alexey.lysiuk
4edcb06a9d
- fixed compilation of POSIX targets
...
src/scripting/backend/vmbuilder.h:169:19: error: no member named 'function' in namespace 'std'
2019-04-15 15:52:14 +02:00
Christoph Oelckers
b33fd19fa2
- missed one OP_RESULT.
2019-04-15 15:52:13 +02:00
Christoph Oelckers
6727301330
- moved all code related to function calls into the helper class so that all future work on the calling convention is in one place only.
2019-04-15 15:52:12 +02:00
Christoph Oelckers
a900390683
- moved all handling for the simple calls into EmitterArray to have it in one place only.
...
The main case of FxVmFunctionCall is not done yet, though.
2019-04-15 15:52:11 +02:00
Christoph Oelckers
054640ce41
- removed OP_TAIL.
...
The amount of support code for this minor optimization was quite large and this stood in the way of streamlining the VM's calling convention, so it was preferable to remove it before moving on.
2019-04-15 15:52:10 +02:00
Magnus Norddahl
33bef2183e
- fix compile errors
2019-04-15 15:52:08 +02:00
Christoph Oelckers
ab689c0984
- fixed TArray's Append methods.
...
I mistakenly assumed that Grow would incease the array's reserved space.
2019-04-15 15:52:07 +02:00
Christoph Oelckers
e9a5f094c9
- changed OP_PARAM handling so that all registers remain allocated until the call instruction and reordered instruction emission so that the param instructions all directly precede the call instruction.
2019-04-15 15:48:37 +02:00
Christoph Oelckers
9380ccb922
- completed the Dehacked fix.
...
I missed some arguments that were specified but set to 'not given'.
2019-04-15 15:48:35 +02:00
Christoph Oelckers
f10c927850
- fixed: The Dehacked function wrappers now need full parameter lists.
2019-04-15 15:48:32 +02:00
Magnus Norddahl
783adc7be1
- disabled code that shows how a thunk function and native setup would look like
2019-04-15 15:48:31 +02:00
Christoph Oelckers
03001991f1
- fixed IJMP code generation for the JIT compiler.
...
With a proper count value available this can be done properly. The only relevant targets are the jumps immediately succeeding the IJMP instructions, nothing else.
2019-04-15 15:48:30 +02:00
Christoph Oelckers
f557c77602
- do not use instructions from too recent instruction set extensions.
...
andn is part of BMI1 which was introduced in 2012, which is far too recent to be used unchecked.
2019-04-15 15:48:29 +02:00
Christoph Oelckers
9456c877d4
- deconstruct A_Jump with multiple labels into A_Jump(chance, RandomPick(label1, label2, label3,...)) to remove this ugly special case from the VM calling convention.
...
This also adds the number of available choices to OP_IJMP.
2019-04-15 15:48:27 +02:00
Magnus Norddahl
44b89bba96
- inline ReadBarrier, GetClass and GetClassMeta
2019-04-15 15:48:25 +02:00
Christoph Oelckers
05fd4d8b62
- fixed RNG setup in FxRandom.
2019-04-15 15:48:24 +02:00
Christoph Oelckers
9d126954d1
- removed the default parameter handling from all native script functions because it is no longer needed.
...
# Conflicts:
# src/p_actionfunctions.cpp
# Conflicts:
# src/hwrenderer/postprocessing/hw_postprocessshader.cpp
# src/v_2ddrawer.cpp
2019-04-15 14:59:00 +02:00
Christoph Oelckers
6d8cf38cef
- fixed FxFRandom setup which used a path in FxRandom that is no longer supported.
2019-04-15 14:37:46 +02:00
Magnus Norddahl
075a666c75
- stop using lambda functions for CreateCall because MSVC lambas use a different calling convention and "converts" them to the right one by generating a thunk function
2019-04-15 14:37:44 +02:00
Magnus Norddahl
51900d5d98
- removed the SetupSimpleFrameMissingArgs logic as the number of args are now guaranteed
2019-04-15 14:37:43 +02:00
Magnus Norddahl
66a970059b
- add warning text when falling back to the VM
2019-04-15 14:37:41 +02:00
Christoph Oelckers
7d2c4a05e2
- removed the unused 'no arguments' cases from the BuiltinRandom functions and split off BuiltinRandom2 into its own function.
...
This removes the last non-vararg cases where a native VM function checks 'numparam'. As of this commit all function calls will pass the complete list of arguments.
2019-04-15 14:37:40 +02:00
Magnus Norddahl
ac01af3ef0
- make functions using too many registers (more than 200) fall back to the VM
2019-04-15 14:37:38 +02:00
Christoph Oelckers
a0b4f5ad68
- always pass complete argument lists in the VM.
2019-04-15 14:37:37 +02:00
Christoph Oelckers
44eee13aa7
- build full argument lists for action function calls.
...
This uses one static global array to avoid frequent reallocations.
2019-04-15 14:37:35 +02:00
Christoph Oelckers
a371a8456a
- implemented VMCallWithDefaults and used it for all calls with variable arguments.
...
This isn't used for the 3 action function calls because it requires an array allocation which would be a bit too costly for something as frequently called as action functions.
They will need a different approach.
2019-04-15 14:37:34 +02:00
Christoph Oelckers
29d7e11937
- fixed last commit.
2019-04-15 14:37:31 +02:00
Christoph Oelckers
28461de6ec
- marked all places where an incomplete parameter list may be passed to the VM by a native call by redirecting VMCall to an intermediate VMCallWithDefaults. This function must later fill in the missing arguments from the default.
2019-04-15 14:37:30 +02:00
Christoph Oelckers
7fe33d336c
Avoid using argument count for any kind of decision making in native VM functions.
...
This allows retaining the functionality, even if for the JIT compiler's benefit all default arguments are pushed onto the stack instead of reading them from the defaults array.
# Conflicts:
# src/r_data/r_sections.h
2019-04-15 14:37:28 +02:00
Magnus Norddahl
2dd03270b2
- remove unused argument
2019-04-15 14:37:26 +02:00
Magnus Norddahl
fd955249fd
- avoid calling VMFillParams for simple stack frames
...
- split Setup into more functions
2019-04-15 14:37:24 +02:00
Magnus Norddahl
5181106264
- add dword store to memset code
2019-04-15 14:37:23 +02:00
Magnus Norddahl
43cfedbd23
- disable jit in 32-bit builds
2019-04-15 14:37:21 +02:00
Magnus Norddahl
18258c6cd5
- fix wrong offsets
2019-04-15 14:37:20 +02:00
Magnus Norddahl
c9a20d56d1
- generate a memset for the allocated stack memory because that's what the VM does
...
(this really shouldn't be done by the VM either - the compiler backend should clear its registers if it wants them to be zero!)
2019-04-15 14:37:19 +02:00
Magnus Norddahl
8fd2bd1d51
- fix operand size mismatch error
2019-04-15 14:37:17 +02:00
Chronos Ouroboros
104f49e589
Fix the code for MODF_RK in the JIT compiler.
2019-04-15 14:37:16 +02:00
Chronos Ouroboros
c8e56f4dda
Fixed the Vector2/3 != operator.
2019-04-15 14:37:14 +02:00
Chronos Ouroboros
c3c100bf9f
Added support for CMP_APPROX to EQV_R and moved the code to a template.
2019-04-15 14:37:13 +02:00
Magnus Norddahl
b4db05a7ff
- modify exception checks to jump ahead if the exception is to be thrown as it limits static misprediction
2019-04-15 14:37:11 +02:00
Magnus Norddahl
3504f48bfa
- fix a typo
2019-04-15 14:37:10 +02:00
Magnus Norddahl
3f952e94cd
- fix the throw messages
2019-04-15 14:37:09 +02:00
Christoph Oelckers
74d02811c7
- fixed vector math instructions to use the same order of operations as the VM.
2019-04-15 14:37:07 +02:00
Magnus Norddahl
64387abcce
- add vm_jit cvar to control JIT compilation
2019-04-15 14:37:05 +02:00
Magnus Norddahl
87744b22ab
- update JIT PARAM handling to match the VM instruction change
2019-04-15 14:37:04 +02:00
Magnus Norddahl
43a6fc7227
- RUNTIME_FUNCTION only exists in 64-bit Windows
2019-04-15 14:37:02 +02:00
Magnus Norddahl
a54dbec73a
- fix wrong shift direction
2019-04-15 14:37:01 +02:00
Magnus Norddahl
bd1f529574
- build enough of the unwind opcodes for visual studio's debugger to produce the correct call stack
2019-04-15 14:36:59 +02:00
Magnus Norddahl
ea8725f03b
- construct our own runtime as the one provided by asmjit is too primitive
2019-04-15 14:36:58 +02:00
Magnus Norddahl
89bf3f0455
- add more names to asmjit objects
2019-04-15 14:36:56 +02:00
Magnus Norddahl
7e9e823674
- remove the frameX registers as they were just constant offsets to vmframe that could be merged into other constant offsets
2019-04-15 14:36:55 +02:00
Magnus Norddahl
475510c8ea
- give the remaining virtual registers names
2019-04-15 14:36:53 +02:00
Magnus Norddahl
68c05a424b
- give temp registers names and reuse the FString object for formatting names
2019-04-15 14:36:52 +02:00
Magnus Norddahl
d48738437b
- skip RESULT opcodes when outputting assembly
2019-04-15 14:36:51 +02:00
Magnus Norddahl
77850c1ec5
- clean up assembly output slightly by only generating labels for the opcodes jumped to
2019-04-15 14:36:49 +02:00
Magnus Norddahl
316010378d
- fix CASTB opcode implementation
2019-04-15 14:36:48 +02:00
Magnus Norddahl
2c89d1e694
- fix missing convert from float to double in LSP and LSP_R opcodes
...
- fix missing convert from double to float in SSP and SSP_R opcodes
2019-04-15 14:36:46 +02:00
Magnus Norddahl
9b9113d0c4
- fix debug build compile error
2019-04-15 14:36:44 +02:00
Magnus Norddahl
7230974c1e
- remove the need to do any VARF_Native runtime checks by making native functions use the same calling convention as the script version
2019-04-15 14:36:43 +02:00
Magnus Norddahl
ae6c7e541c
- do script calls directly from asmjit without using a lambda wrapper
...
- do VARF_Native check at compile time when possible
2019-04-15 14:36:41 +02:00
Magnus Norddahl
37dfbba232
- add -dumpjit command line parameter that dumps the JIT log for all functions to dumpjit.txt
...
# Conflicts:
# src/scripting/backend/vmbuilder.cpp
2019-04-15 14:36:39 +02:00
Magnus Norddahl
a60ac7b47d
- fix return warning
2019-04-15 14:33:49 +02:00
Magnus Norddahl
e7f0b7a0bd
- switch to using setjmp/longjmp for exception handling
2019-04-15 14:33:47 +02:00
Magnus Norddahl
b24ec1f9cc
- add disabled code that attempts to load registers directly from function arguments
2019-04-15 14:33:46 +02:00
Magnus Norddahl
04ba3ede16
- add missing include statement
2019-04-15 14:33:44 +02:00
Magnus Norddahl
6db9b1394c
- allocate VMFrame on the stack for simple functions with no strings
2019-04-15 14:33:43 +02:00
Magnus Norddahl
84d2de34f0
- remove argument not used anymore
2019-04-15 14:33:41 +02:00
Magnus Norddahl
f0c059678b
- move VM creation into the jitted function. this will allow the jit compiler to skip vm frame creation when possible
2019-04-15 14:33:39 +02:00
Magnus Norddahl
baaed0920a
- create ScriptCall function pointer on VMScriptFunction
2019-04-15 14:33:37 +02:00
Magnus Norddahl
03689cf004
- modify the VM calling convention so that the callee sets up its own VM frame
2019-04-15 14:33:35 +02:00
Magnus Norddahl
992c097ad1
- fix wrong registers getting saved when passing parameters by reference
2019-04-15 14:33:34 +02:00
Magnus Norddahl
19ae43be17
- removed CanJit as all opcodes are now implemented
...
- fix some store bugs
2019-04-15 14:33:32 +02:00
Magnus Norddahl
b3aeb37189
- fix 32 bit compile errors
2019-04-15 14:33:31 +02:00
Magnus Norddahl
e2dcca611c
- catch and rethrow c++ exceptions
2019-04-15 14:33:29 +02:00
Magnus Norddahl
22e60d74ad
- reuse temp virtual registers
2019-04-15 14:33:28 +02:00
Magnus Norddahl
80cda43370
- workaround bug in asmjit's register allocator for calls where the return register is already allocated in a physical register needed by one of the call arguments
2019-04-15 14:33:26 +02:00
Magnus Norddahl
bb3d0021d6
- switch ToMemAddress to imm_ptr where allowed
2019-04-15 14:33:25 +02:00
Magnus Norddahl
f90019561d
- switch from ASMJIT_ARCH_X64 to ASMJIT_ARCH_64BIT when checking if we need to use 64-bit pointers
2019-04-15 14:33:23 +02:00
Magnus Norddahl
e0f0511d29
- create a very basic OP_IJMP implementation
2019-04-15 14:33:22 +02:00
Magnus Norddahl
812a4290b1
- create CreateCall helper to get rid of a lot of the cc.call boilerplate
2019-04-15 14:33:20 +02:00
Magnus Norddahl
ff6317d6f4
- implement OP_TAIL and OP_TAIL_K
2019-04-15 14:33:19 +02:00
Magnus Norddahl
be6637dd17
- use the ParamOpcodes array for finding the OP_PARAM's used by a call
2019-04-15 14:33:17 +02:00
Magnus Norddahl
f1f2dca792
- implement string version of OP_CAST
2019-04-15 14:33:16 +02:00
Magnus Norddahl
0cf5f3704b
- implement string part of OP_CASTB
2019-04-15 14:33:14 +02:00
Magnus Norddahl
097de74510
- implement OP_LFP
2019-04-15 14:33:13 +02:00
Magnus Norddahl
7f996b5334
- read the parameters and registers directly off the stack
2019-04-15 14:33:11 +02:00
Jonathan Russell
ff421eda63
- changed a bunch of manual address additions in string opcodes to leas
2019-04-15 14:33:10 +02:00
Magnus Norddahl
b6521467f3
- more load fixes
2019-04-15 14:33:08 +02:00
Magnus Norddahl
e28389ad12
- fix truncated load addresses due to a bug in asmjit
...
- change ToMemAddress to use uint64_t
2019-04-15 14:33:06 +02:00
Magnus Norddahl
db0c516693
- avoid certain x86::ptr overloads as the last argument is not always an offset
2019-04-15 14:33:05 +02:00
Jonathan Russell
0da351bfea
- fixed typo in last commit
2019-04-15 14:33:03 +02:00
Jonathan Russell
2dd2344e80
- implemented SS_R, LCS_R, and LKS_R
2019-04-15 14:33:02 +02:00
Magnus Norddahl
fb7df75011
- fix bug in LKF_R
2019-04-15 14:33:00 +02:00
Magnus Norddahl
d74cc3e49e
- fixed OP_VTBL bug
2019-04-15 14:32:59 +02:00
Magnus Norddahl
e93d9570dc
- fix crash in OP_RET handling
2019-04-15 14:32:57 +02:00
Magnus Norddahl
378e58731a
- simplify some code
2019-04-15 14:32:56 +02:00
Jonathan Russell
b342dbc8db
- added string PARAM and RET
2019-04-15 14:32:54 +02:00
Magnus Norddahl
608f49a4a8
- fix clang errors and warnings
2019-04-15 14:32:53 +02:00
Jonathan Russell
06780bf228
- added OP_MOVES, OP_CONCAT, OP_LENS, OP_CMPS
2019-04-15 14:32:52 +02:00
Magnus Norddahl
a4b3536caf
- fix opcodes not being listed in jit debug assembly
2019-04-15 14:32:50 +02:00
Magnus Norddahl
c328f9c85c
- move EmitRESULT to jit_call
2019-04-15 14:32:49 +02:00
Magnus Norddahl
ff8d21b2ec
- minor cleanups in header file
2019-04-15 14:32:47 +02:00
Magnus Norddahl
9d970a1acb
- split JitCompiler into multiple files
2019-04-15 14:32:46 +02:00
Jonathan Russell
8905701df7
- added strings and a few string opcodes
2019-04-15 14:32:44 +02:00
Magnus Norddahl
f3ca96373a
- fix CALL_K and disable CALL
2019-04-15 14:32:43 +02:00
Magnus Norddahl
56fe7af9d3
- implement OP_CALL and OP_CALL_K
2019-04-15 14:32:41 +02:00
Magnus Norddahl
60ee2c91a4
- fix misc integer opcodes and remove mov statements when they have no effect
2019-04-15 14:32:40 +02:00
Jonathan Russell
279e97fcc9
- changed the way EmitComparisonOpcode works to get rid of the temporary register that was used previously
2019-04-15 14:32:38 +02:00
Magnus Norddahl
c248fad17f
- implement PARAM and PARAMI
2019-04-15 14:32:37 +02:00
Magnus Norddahl
53b11dd0d8
- fix missing zero extend
2019-04-15 14:32:36 +02:00
Magnus Norddahl
29f6258d33
- fix that the code for META and CLSS was swapped
2019-04-15 14:32:34 +02:00
Magnus Norddahl
c2669d3a03
- some jump fixes
2019-04-15 14:32:33 +02:00
Magnus Norddahl
f7dd6a1313
- fix jump direction in EmitComparisonOpcode
2019-04-15 14:32:31 +02:00
Jonathan Russell
9530a2e43c
- more spelling mistakes...
2019-04-15 14:32:29 +02:00
Jonathan Russell
a770b3af16
- fix minor spelling error
2019-04-15 14:32:28 +02:00
Jonathan Russell
821c336c5e
- add vector comparison opcodes
2019-04-15 14:32:26 +02:00
Magnus Norddahl
14d6aa8cac
- remove some macros and add functions checking if a register needs to be copied
2019-04-15 14:32:25 +02:00
Magnus Norddahl
35a8162022
- implemented LBIT, SBIT, VTBL, SCOPE, NEW, NEW_K, THROW, EQA_R and EQA_K
2019-04-15 14:32:23 +02:00
Magnus Norddahl
4cab630871
- implement emitter functions for LKP_R, META, CLSS, LO, LO_R, LP, LP_R, SO, SO_R, SP, SP_R
...
- add emit code for throwing exceptions on null pointers
2019-04-15 14:32:22 +02:00
Magnus Norddahl
2efaa7846d
- improve jit debug output slightly
2019-04-15 14:32:20 +02:00
Magnus Norddahl
f0dbc8414a
- fix offsetting bug when loading address registers
2019-04-15 14:32:19 +02:00
Magnus Norddahl
db78d02d79
- fix swapped operands in EmitSUBF_KR
2019-04-15 14:32:17 +02:00
Magnus Norddahl
ede8c6d86b
- implement MODF_RR, MODF_RK and MODF_KR
2019-04-15 14:32:16 +02:00
Magnus Norddahl
708362b31f
- fix mul using wrong instruction
2019-04-15 14:32:14 +02:00
Magnus Norddahl
c46a4d4483
- implement BOUND opcodes and add logging the resulting assembly code if asmjit throws an exception
2019-04-15 14:32:13 +02:00
Magnus Norddahl
c2938926a7
- implement a few more opcodes and fix some bugs
2019-04-15 14:32:11 +02:00
Magnus Norddahl
9427e22d7c
- implemented pow, min, max
2019-04-15 14:32:10 +02:00
Magnus Norddahl
f4181be6b8
- implement ATAN2 and FLOP
2019-04-15 14:32:08 +02:00
Magnus Norddahl
77fe376eca
- implement DYNCAST*, TEST, TESTN and JMP opcodes
2019-04-15 14:32:07 +02:00
Magnus Norddahl
9474a2554d
- convert JitCompile's switch into a class to enable easier code reuse
2019-04-15 14:32:05 +02:00
Magnus Norddahl
9889d2fbb6
- fix clang compile error
2019-04-15 14:32:03 +02:00
Magnus Norddahl
976a7fab3a
- implement throwing by storing exception information in a struct, then return from the jitted function and throw from c++
2019-04-15 14:32:02 +02:00
Jonathan Russell
45bc0d266e
- removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked
2019-04-15 14:32:00 +02:00
Jonathan Russell
197b20af5d
- add first draft of abort exceptions
2019-04-15 14:31:58 +02:00
Magnus Norddahl
c65b7076eb
- call play sqrt when calculating lengths
2019-04-15 14:31:57 +02:00
Magnus Norddahl
50d0049460
- fix 8 and 16 bit store
2019-04-15 14:31:55 +02:00
Magnus Norddahl
76c08bf725
- destroy the jit runtime when all script functions are destroyed
2019-04-15 14:31:54 +02:00
Magnus Norddahl
4820c32794
- disable all unimplemented opcodes in the switch to ensure 'Unknown VM opcode' fatal error is generated if CanJit has a bug
2019-04-15 14:31:52 +02:00
Magnus Norddahl
e9914f38af
Fix compile errors on macOS
2019-04-15 14:31:51 +02:00
Jonathan Russell
601c492cf2
- added remaining int arithmetic opcodes (and fixed float loading offset issue)
2019-04-15 14:31:49 +02:00
Jonathan Russell
e771064657
- forgot to turn off debug switch in last commit
2019-04-15 14:31:47 +02:00
Jonathan Russell
4228891da2
- made absMaskInt const
2019-04-15 14:31:46 +02:00
Jonathan Russell
8306815292
- implemented CMP_APPROX for OP_EQF_*, making ~== work for doubles
2019-04-15 14:31:44 +02:00
Chronos Ouroboros
e07af1428c
Updated CanJit's supported opcodes list.
2019-04-15 14:31:43 +02:00
Chronos Ouroboros
63cda1c13d
Pointer addition opcodes must leave NULL pointers as they are.
2019-04-15 14:31:41 +02:00
Chronos Ouroboros
3c8aa9f641
Changed binary int ops to use a temporary register, fixed some opcodes.
...
For some reason, binary ops might reuse one of the input registers as the output register.
This is a problem for very obvious reasons.
2019-04-15 14:31:39 +02:00
Jonathan Russell
62ece01c0a
- made CMP_CHECK checking compile time
2019-04-15 14:31:37 +02:00
Jonathan Russell
f897f2bfd3
- added exact floating point comparison opcodes
2019-04-15 14:31:36 +02:00
Jonathan Russell
5846357268
- implemented all integer comparison operators
2019-04-15 14:31:34 +02:00
Jonathan Russell
166ce87a86
- adds OP_EQ_R, the first instruction using jumps
2019-04-15 14:31:33 +02:00
Magnus Norddahl
5c3ef8ac15
- add misc float opcodes
2019-04-15 14:31:31 +02:00
Jonathan Russell
b242ffdbbe
- added most vector maths opcodes
2019-04-15 14:31:29 +02:00
Chronos Ouroboros
73892f4a6e
Fix floats and implement some more opcodes.
2019-04-15 14:31:27 +02:00
Magnus Norddahl
113714990e
- copy initial register values from the VM frame
2019-04-15 14:31:26 +02:00
Magnus Norddahl
10a6ab4d56
- implement most of the integer math opcodes
2019-04-15 14:31:24 +02:00
Magnus Norddahl
d651c02b17
- embed and use asmjit to JIT ZScript VM functions
2019-04-15 14:31:22 +02:00
drfrag
2039a306ae
- Disable HRTF by default, it's slow on weak CPUs with many ambient sounds.
2019-04-15 13:30:21 +02:00
drfrag666
eafac3db33
- Fixed bad merge of "- more options for Doom 64 style gradients on walls".
2018-12-08 10:07:51 +01:00
drfrag666
6eca20a592
- Bumped version number for a new beta.
2018-12-04 18:54:17 +01:00
drfrag666
825a720b09
- Default gender for sound classes should be male and not other since it could be undefined in SNDINFO.
2018-12-03 20:19:46 +01:00
Player701
d72d820bba
- Exported AActor::Grind to ZScript.
2018-11-30 10:18:43 +01:00
drfrag666
cdb60486c7
- Fixed compilation of previous commit.
2018-11-30 10:16:55 +01:00
Magnus Norddahl
e76a9c3085
- forgot to set the light level
2018-11-29 11:26:32 +01:00
Magnus Norddahl
20d5b904b2
- use psprite renderstyle on HUD models
2018-11-29 11:26:20 +01:00
Christoph Oelckers
7600b65810
- fixed: P_Recalculate3DFloors may not be called before the vertex buffer has been set up.
...
Since this function creates dynamic copies for 3D floors that need to be split it requires the vertex buffer index to be set up.
In older versions this did not produce errors because there was a fallback render path that was less efficient.
Now with that fallback removed this resulted in temporary 3D floors being created without valid vertex data.
# Conflicts:
# src/p_setup.cpp
# Conflicts:
# src/p_setup.cpp
2018-11-29 11:26:08 +01:00
Christoph Oelckers
0ddb5038c3
- fixed the mapping of additive translucency to color-based translucency.
...
The destination mode sould be 'One', not 'InvSrcColor'.
Now both of these are available as explicit modes, not just through the optional mapping.
# Conflicts:
# src/hwrenderer/scene/hw_sprites.cpp
# src/r_data/renderstyle.cpp
# src/r_data/renderstyle.h
With additional render styles from " - abstraction of render style in render state.". drfrag
# Conflicts:
# src/r_data/renderstyle.cpp
# src/r_data/renderstyle.h
With additional render styles from "- made the screen blend work for the software renderer.". drfrag
2018-11-28 14:39:54 +01:00