All pastes #809548 Raw Edit

Untitled

public text v1 · immutable
·published 2007-12-08 23:55 UTC
rendered paste body
vmHeader_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;
}