aboutsummaryrefslogtreecommitdiff
path: root/src/core/vmrunner.cpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2015-10-04 23:49:49 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2015-10-04 23:49:49 +0800
commit068cfdc8fb0e31c9ff736ee426f1291d07115c11 (patch)
tree233a0439425b0735aa8c8c7a636cfca784fb25a7 /src/core/vmrunner.cpp
parent8e208d0f5bca187588da8ece1b955bdd47e75acd (diff)
downloadbullet-lab-remix-068cfdc8fb0e31c9ff736ee426f1291d07115c11.tar.xz
Rewrite the function calling method and enable it in the VM.
Yet another stupid commit.
Diffstat (limited to 'src/core/vmrunner.cpp')
-rw-r--r--src/core/vmrunner.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/vmrunner.cpp b/src/core/vmrunner.cpp
index 4da775b..7cad11a 100644
--- a/src/core/vmrunner.cpp
+++ b/src/core/vmrunner.cpp
@@ -1,5 +1,6 @@
#include "vmrunner.hpp"
#include "coreshared.hpp"
+#include "fncwrapper.hpp"
#include <cstdlib>
blrScriptVM *vm;
callStack<Idata> callStk;
@@ -115,7 +116,7 @@ int blrScriptVM::loadLSBFromMemory(const char *ptr,DWORD size)
return 0;
}
int blrScriptVM::getInstCount(){return pinst;}
-void blrScriptVM::runFunction(const char *fncnym)
+void blrScriptVM::vmRunFunction(const char *fncnym)
{
int nymhash=getHash(fncnym),cur=0;pinst=0;
for(int i=0;i<fncnt;++i)if(nymhash==fncent[i].hash){cur=fncent[i].pos;break;}
@@ -137,8 +138,8 @@ void blrScriptVM::runFunction(const char *fncnym)
callStk.push(fetchData(inst[cur].para1));
break;
case 0x02:
- //callFnc(inst[cur].para1.fnc);
- //callstk.clear();
+ callFnc(inst[cur].para1.fnc);
+ //callStk.clear();
//printf("stubbed call %s\n",inst[cur].para1.fnc);
break;
case 0x03:
@@ -274,6 +275,8 @@ void blrScriptVM::runFunction(const char *fncnym)
if(!jmp)++cur;
}
}
+void blrScriptVM::vmSetRetValf(float v){rr[102].r()=v;}
+void blrScriptVM::vmSetRetVald(int v){ir[100].i()=v;}
void blrScriptVM::vmInit(unsigned int seed)
{
for(int i=0;i<103;++i)rr[i].type=1;