From 4c17bd65a45c49675a5347e8f68b453090477756 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 29 Apr 2015 01:03:50 +0200 Subject: [PATCH] - parameters for FRandomPick should not be added up. (I hope that this code is correct, all I can judge it by is the assert not being triggered.) --- src/thingdef/thingdef_expression.cpp | 1 + src/zscript/vmbuilder.h | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/thingdef/thingdef_expression.cpp b/src/thingdef/thingdef_expression.cpp index 9625d83eea..1ab720c352 100644 --- a/src/thingdef/thingdef_expression.cpp +++ b/src/thingdef/thingdef_expression.cpp @@ -2189,6 +2189,7 @@ ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build) { double val = static_cast(choices[i])->GetValue().GetFloat(); build->Emit(OP_PARAM, 0, REGT_FLOAT | REGT_KONST, build->GetConstantFloat(val)); + build->ParamChange(-1); // all params should use the same register here. } } else diff --git a/src/zscript/vmbuilder.h b/src/zscript/vmbuilder.h index b8b1df848c..ee15e49cf6 100644 --- a/src/zscript/vmbuilder.h +++ b/src/zscript/vmbuilder.h @@ -51,6 +51,9 @@ public: void FillAddressConstants(FVoidObj *konst, VM_ATAG *tags); void FillStringConstants(FString *strings); + // PARAM increases ActiveParam; CALL decreases it. + void ParamChange(int delta); + // Track available registers. RegAvailability Registers[4]; @@ -76,8 +79,6 @@ private: TArray Code; - // PARAM increases ActiveParam; CALL decreases it. - void ParamChange(int delta); }; #endif