Skip to content

Research iortcw engine and adding QMM support#35

Merged
thecybermind merged 13 commits into
mainfrom
dev_issue34
Mar 7, 2026
Merged

Research iortcw engine and adding QMM support#35
thecybermind merged 13 commits into
mainfrom
dev_issue34

Conversation

@thecybermind

Copy link
Copy Markdown
Owner

See issue #34.

  • Support for loading "QVM version 2" (ioQuake3). At present, the extra jump table feature is only used in ioQuake3 when compiling the QVM before running, so the only real support needed for interpreting the QVM is handling the modified magic number in the header.
  • Support for ioRTCW engine, both SP and MP (including QVM).
  • Cleaned up game detection and the supported games list.
  • Remove divide-by-zero check for QVM_OP_DIVF, as the ioRTCW multiplayer QVM does this, but the existence of inf/nan makes it not actually crash.
  • Fixed a few bugs related to G_MEMCPY, G_MEMSET, and G_STRCPY QVM syscalls. They returned the engine's return value, which is args[0]. This, however, is the real converted pointer, and it was being returned into the QVM. These calls now all manually return the un-converted args[0] directly. It doesn't appear like any of the standard SDKs actually utilized this return value.
  • Fix some missing/extra info in some log messages.

… does, but it will be a real pointer. instead of adjusting a return value, just manually return args[0]
…TRA_PROGRAMSTACK_SIZE" macro. also remove the divide-by-zero check for QVM_OP_DIVF, as the ioRTCW QVMs apparently do this. due to floating point inf or nan, this is "fine"
…tions. removed references to _WIN32, _WIN64, __linux__, and __LP64__ outside of version.h and qmmapi.h. in game_api.cpp, added some macros for games that use "x64" for 64-bit Windows DLLs (instead of "x86_64"), "_mp_" vs ".mp." or "_sp_" vs ".sp.", and the CODUO filename, and cleaned up a lot of conditional compilation within the supportedgame table. also added QVM filename for RTCWMP
…rtedgames table (which is correct for ioRTCW), or the official engine filename. also store whatever QMM's dllname is into game->dllname so that loading the mod will work correctly
…original engine (weird, but whatever. also the iortcw gamedll doesn't appear to actually use G_ALLOC right now anyway). store the malloc'd pointers in a list which is cleared at mod unload
… from a manually specified "game" config option
@thecybermind thecybermind self-assigned this Mar 6, 2026
@thecybermind thecybermind added bug Something isn't working enhancement New feature or request topic:qvm Dealing with the QVM interpreter topic:game api Dealing with the game-specific engine API research Research/test a possible new feature labels Mar 6, 2026
@thecybermind thecybermind linked an issue Mar 7, 2026 that may be closed by this pull request
@thecybermind thecybermind merged commit a1b769c into main Mar 7, 2026
2 checks passed
@thecybermind thecybermind deleted the dev_issue34 branch March 7, 2026 00:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request research Research/test a possible new feature topic:game api Dealing with the game-specific engine API topic:qvm Dealing with the QVM interpreter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Research iortcw engine and adding QMM support

1 participant