Releases: niv/neverwinter.nim
1.6.1
[1.6.1] - 2023-07-19
Script Compiler
With 1.6.0, the official nwscript compiler source code has been added to the repository, licenced as GPL-3.0. This release builds on this:
- Parser now understands floating point values such as
0f
,.0
and.42f
. - For loops can now take non-integer expressions in the first and third part of a loop statement. (e.g. floating point values now work).
- Constant folding:
const
declarations can now contain any constant expression (such as arithmetics), including previously defined consts. - Instruction melding: A second pass over the generated bytecode will now meld some redundant instructions together.
- Where possible, expressions are now evaluated at compile time (instead of runtime).
- The CLI utility can now utilise all CPU cores to compile scripts in parallel.
- The script compiler will ensure no outdated .ndb remains when re/compiling scripts without debugging support enabled.
- Fixed structures passed using the
?:
operator causing a bad compiler state. - The script compiler has gained support for enabling optimisations. Currently available:
-O0
Turn off all optimisations-O2
: Turn on all optimisations:- Constant folding
- Instruction melding
- Removing all dead/unused code
Bytecode Disassembler
nwn_asm
can now decode DE_STRUCT instructions.nwn_asm
can now disable loading .ndb with a cli flag, if no per-function disassembly is desired.nwn_asm
now prints global offsets in addition to per-function offsets when .ndb is enabled.nwn_asm
can now optionally weave the originating source code into the disassembly, if both source code and .ndb is available.
Other utilities
- Fixed regression introduced with 1.6.0 that resulted in GFF files failing to compile with a integer out of range error.
- All cli utilities now support the flag
--silent
to hide all output, even errors. Errors can be detected by checking the process exit code. - Performance improvements on internal data structures to make utilities start up faster.
- Added some legacy (currently unused) restypes: .res, .wfx
Note: [Windows only!] Still unsure about amd64 windows binaries. Mingw fseek bug probably persists and I have no time to look into it. To be safe, or if you run into stream exceptions on known-good data, pick the i386 variant.
1.6.0
[1.6.0] - 2023-07-06
Added
- First public release of the game script compiler source code.
- New CLI utility: nwn_script_comp.
Fixed
- Builtin resman will no longer warn about missing _loc keytable on startup (they're optional for some languages).
Note: [Windows only!] Still unsure about amd64 windows binaries. Mingw fseek bug probably persists and I have no time to look into it. To be safe, or if you run into stream exceptions on known-good data, pick the i386 variant.
1.5.9
[1.5.9] - 2023-03-01
Changed
- TwoDA library now considers
""
cells empty and transforms them into****
. - CLI utils:
compressedbuf
,gff
,ssf
,tlk
,twoda
now read input stream fully before writing to it, allowing write back to same file.
Fixed
- ExoLocStr legacy codepath reader now correctly reads in
id
field.
1.5.8
- Fixed a regression with regards to adding erf/dirs to resman utilities introduced in 1.5.7
- Removed all support for loading 1.69 keybif layouts, as they were bitrotting anyways. If you want to use these utilities with NWN Diamond Edition, use earlier versions of these utilities.
- Fix divining user root folder on linux and windows @mtijanic
Note: [Windows only!] Still unsure about amd64 windows binaries. Mingw fseek bug probably persists and I have no time to look into it. To be safe, or if you run into stream exceptions on known-good data, pick the i386 variant.
1.5.7
NWN_HOME
env var is now the primary variant for userdir detection- added helper to quickly stand up a ResMan instance that should behave identical to game variant (moved out of shared.nim)
- copied over manifest reader/writer code from nwsync.nim and made it available in
neverwinter/nwsync
. - Added a simple ncs disasm (not functional yet)
- gffjson: retcon the strref "id" field of cexolocstr to behave as the game does (where I messed up the nesting, so the lib now needs to follow both data formats)
- gff: be more verbose about duplicate field errors
- Cleaned up some stray debug printing
- Removed all traces of progressbar support - all it managed to do was break terminals
I think mingw amd64 build is still broken. Use with care/use 32bit variant if you run into file/stream issues.
1.5.6
1.5.5
1.5.4
1.5.3
- Added RESTYPE_JUI.
- nwn_erf will now error out when the resulting file would exceed 2GB.
- Attempted fix for windows DLLs.
- Nim 1.6.0.
1.4.5
Added the missing restypes from the previous game builds.