Commit graph

259 commits

Author SHA1 Message Date
Christoph Oelckers
1717ff47b2 add GetChars() accessors to many FString uses where const char* is wanted.
By no means complete, it's just a start to get rid of that automatic type conversion operator.
2023-10-03 14:27:39 +02:00
Christoph Oelckers
81fb9a26b2 - backend update from Raze.
* add QualifiedName to VMFunction and allocate these static names from the class data memory arena instead of using FStrings.
* null pointer type checks in the VM added to avoid crash on bad codegen.
2023-07-22 09:55:49 +02:00
Christoph Oelckers
77d74a11d1 - removed most templates.h includes. 2021-10-30 10:49:12 +02:00
Christoph Oelckers
a8ea5bef00 - removed unused static array. 2021-10-06 14:10:22 +02:00
Christoph Oelckers
c3772fe203 - changed FString API to use ptrdiff_t instead of long for signed size arguments. 2021-08-12 00:45:59 +02:00
Christoph Oelckers
565a5acd85 - changed order of identifier types to be checked to what it was in 4.3 2020-10-17 15:13:14 +02:00
Christoph Oelckers
a28182fe35 - moved the script compiler's backend to 'common'. 2020-04-11 20:20:55 +02:00
Christoph Oelckers
3454314bb1 - separated the Doom specific parts from the compiler backend into a separate file, these parts now get invoked via callback hooks. 2020-04-11 20:20:55 +02:00
Christoph Oelckers
64dc9ac456 - moved around some bits of code. 2020-04-11 20:20:54 +02:00
Christoph Oelckers
f8ac9a2662 - moved DObject and core parts of the VM to 'common'.
# Conflicts:
#	src/common/objects/dobject.h
2020-04-11 20:20:51 +02:00
Christoph Oelckers
f8e9cb8fbc - major dependency reduction of the texture system. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
1479e3a1c3 - CVAR cleanup, in particular decoupling from game internals, which now get handled via callbacks. 2020-04-11 14:00:22 +02:00
Christoph Oelckers
c713850dac - moved sc_man and palettecontainer to the 'common' folder. 2020-04-11 14:00:21 +02:00
Christoph Oelckers
05d8856fe0 - moved file system implementation to 'common'. 2020-04-11 14:00:20 +02:00
Christoph Oelckers
80c6d5b276 - renamed more stuff and also moved the Strife teaser voice handling out of the file system. 2020-04-11 14:00:19 +02:00
Christoph Oelckers
6bccde3b51 - renamed the file system related classes to actually use the term "FileSystem". 2020-04-11 14:00:18 +02:00
Christoph Oelckers
ace3e29473 - removed the implicit conversion operators from FName.
These were creating dangerous interdependencies. It is better to do explicit conversions when needed.
As an added plus, this means that zstring.h no longer depends on name.h which was very annoying.
2020-04-11 14:00:13 +02:00
Christoph Oelckers
b0ecb02d6b - move SuperFastHash to its own set of files, instead of having this tied to the console.
- replace swapvalues with std::swap globally.
- added some additions to utility code from Raze, mainly to reduce file content differences.
- reduced some unused utilities
2020-04-11 14:00:10 +02:00
alexey.lysiuk
dd54c14380 - fixed code generation for very special if+switch combination
CheckReturn() must be called before emitting code, otherwise it will always return false for switch statements
Redundant jump instruction added because of that will point right after the end of function's code when if statement is the last one in the given function
This wasn't a problem for VM because bytecode in question was unreachable
JIT compiler tries to generate native code for a bogus jump destination, and this leads to out-of-bounds read from labels array

https://forum.zdoom.org/viewtopic.php?t=67149
2020-01-30 18:01:52 +02:00
alexey.lysiuk
a05a5a8f00 - fixed calling a function on string CVar
https://forum.zdoom.org/viewtopic.php?t=66768
2020-01-19 16:49:51 +01:00
alexey.lysiuk
5a19010699 - added ability to filter VM disassembly dump
Use '-dumpdisasm something' to output functions with 'something' in their printable names
Open and close output file only once when processing code generated by Dehacked, and calculate its sizes as well
2020-01-19 16:48:35 +02:00
Christoph Oelckers
b9582cc98e - continued refactoring on sound code.
The game independent part of the code has been mostly isolated.
2019-12-08 21:22:53 +01:00
alexey.lysiuk
6ad965abb5 - improved handling of return value mismatches
Prohibit returning more values than declared in function
The exception is a void function returning one value, but only for compatibility with old scripts

https://forum.zdoom.org/viewtopic.php?t=66341
2019-11-10 11:14:08 +02:00
Player701
8c05816378 - Fixed erroneous "Return type mismatch error" when returning value of derived type 2019-11-10 09:58:25 +02:00
Chronos Ouroboros
3071723a67 Fixed dynamic arrays as function arguments. 2019-10-23 18:38:41 -03:00
alexey.lysiuk
94e7b6f3b5 - do not accept read-only variable as out argument
https://forum.zdoom.org/viewtopic.php?t=66179
2019-10-22 11:11:22 +03:00
alexey.lysiuk
9a727f6c2f - fixed variable's stack offset for implicit dynarray clearing
https://forum.zdoom.org/viewtopic.php?t=66187
https://forum.zdoom.org/viewtopic.php?t=66189
https://forum.zdoom.org/viewtopic.php?t=66198
2019-10-22 10:40:45 +03:00
Chronos Ouroboros
4fa6678fc5 Fixed Vector2/3 out parameters in the ZScript compiler. 2019-10-21 16:30:05 -03:00
alexey.lysiuk
ce8b235d0b - implicitly clear local dynamic arrays
https://forum.zdoom.org/viewtopic.php?t=62710
2019-10-20 12:20:18 +02:00
alexey.lysiuk
98128d9fa3 - added ability to specify deprecation messages in ZScript
It's an optional extension of deprecated keyword:
    deprecated("2.4", "use ModernFunction instead") int OldFunction();
    deprecated("3.5", "use ModernVariable instead") int OldVariable;

Usage of such members will produce the following report:
    Script warning, ":zscript.txt" line 123:
    Accessing deprecated function OldFunction - deprecated since 2.4.0, use ModernFunction instead
    Script warning, ":zscript.txt" line 456:
    Accessing deprecated member variable OldVariable - deprecated since 3.5.0, use ModernVariable instead
2019-08-28 13:37:48 +02:00
alexey.lysiuk
28ea567c22 - fixed doubling of deprecation warnings for ZScript code
https://forum.zdoom.org/viewtopic.php?t=65617
2019-08-15 16:31:50 +03:00
alexey.lysiuk
07a2331ca3 - exposed Append() method to ZScript dynamic array
https://forum.zdoom.org/viewtopic.php?t=65570
2019-08-10 16:37:40 +03:00
alexey.lysiuk
d27a7cd84b - removed explicit self null tests from dynarray native wrappers
They are useless since d3e6ed3c9b in which generation of implicit self null pointer check was added to JIT
2019-06-09 10:27:21 +03:00
alexey.lysiuk
4a2ae357a2 - report implicitly initialized variable in code generator once
Vectors are no longer reported several times
Previously, warnings were issued per every register
2019-06-08 11:12:34 +03:00
alexey.lysiuk
6f1df5b5ab - added implicit initialization of reused register variables in ZScript 2019-06-07 13:43:51 -04:00
Chronos Ouroboros
87c426dcfd Really fixed arrays of dynarrays this time. 2019-06-05 08:24:56 +02:00
Alexander
380398bcd6 added native double round(double) function 2019-06-03 19:48:45 +02:00
alexey.lysiuk
d9c619c800 - adjusted condition for ZScript global variable deprecation warning
The message is always printed for any use of deprecated global variable
If such variable is accessed inside a deprecated function from a core script lump, the message is printed only when verbosity level is set to highest

https://forum.zdoom.org/viewtopic.php?t=64830
2019-05-30 10:20:49 +03:00
alexey.lysiuk
249e658f8b - fixed missing deprecation warnings for ZScript global variables
https://forum.zdoom.org/viewtopic.php?t=64830
2019-05-29 17:37:31 +03:00
alexey.lysiuk
d336a83355 - fixed code generation for ternary operator with vector result types
https://forum.zdoom.org/viewtopic.php?t=64831
2019-05-29 13:24:03 +03:00
alexey.lysiuk
5c86a1e6b5 - fixed crash with push/insert to null dynarray when JIT is on
https://forum.zdoom.org/viewtopic.php?t=64148
2019-04-04 13:23:08 +03:00
Chronos Ouroboros
8dea4f9523 Fixed arrays of dynamic arrays causing a compilation error. 2019-03-13 12:42:45 +01:00
Chronos Ouroboros
7165b40657 Fixed nested dynamic array indexing causing a compilation error. 2019-03-13 10:23:06 +01:00
Christoph Oelckers
5e7fb16d05 - preparation work for substituting the menu and intermission screen text graphics for localization 2019-02-19 01:22:12 +01:00
Christoph Oelckers
aa550310f6 - allow the language table to supersede the title patches, if appropriate
For the Doom IWADs the provided font looks almost identical to the characters used on the title patches. So, for any level name that got replaced in some language, it will now check if the retrieved name comes from the default table, and if not, ignore the title patch and print the name with the specified font.

This also required removing the 'en' label from the default table,  because with this present, the text would always be picked from 'en' instead of 'default'. Since 'en' and 'default' had the same contents, in any English locale the 'default' table was never hit, so this won't make any difference for the texts being chosen.

Last but not least, wminfo has been made a local variable in G_DoCompleted. There were two places where this was accessed from outside the summary screen or its setup code, and both were incorrect.
2019-02-15 00:29:24 +01:00
Christoph Oelckers
64685705d0 - made the console Unicode-capable.
This also necessitated some character remapping in the console font to move the Windows-1252 extra characters to their proper Unicode code points.
2019-02-16 13:05:19 +01:00
Rachael Alexanderson
20a9587bb7 Merge remote-tracking branch 'origin/master' into HEAD 2019-02-06 08:05:38 -05:00
alexey.lysiuk
78c0b7f230 - changed type of Nop expression to void
Control flow statements with constant condition no longer cause misleading fatal errors in ZScript

https://forum.zdoom.org/viewtopic.php?t=63566
2019-02-06 12:09:14 +02:00
Christoph Oelckers
979f1df281 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-02-05 13:49:07 +01:00
alexey.lysiuk
2765159fc6 - disabled VM JIT completely on unsuported platforms 2019-02-04 15:53:35 +02:00