rendered paste bodyvmHeader_t *th_VM_LoadQVM(vm_t *vm, qboolean alloc) {
vmHeader_t *result = orig_VM_LoadQVM(vm, alloc);
if (!strcmp(vm->name, CGAME_STR))
cgvmHeader = *result;
return result;
}
vm_t *th_VM_Create(const char *module, intptr_t (*systemCalls)(intptr_t *), vmInterpret_t interpret) {
vm_t *vm = orig_VM_Create(module, systemCalls, interpret);
if (!strcmp(module, CGAME_STR)) {
cgame_vm = vm;
void *baseAddr = cgame_vm->dataBase + cgvmHeader.dataLength + cgvmHeader.litLength;
orig_cg = baseAddr + CGVM_OFFSET_CG;
orig_cgs = baseAddr + CGVM_OFFSET_CGS;
orig_cg_entities = baseAddr + CGVM_OFFSET_CG_ENTITIES;
}
return vm;
}