diff --git a/plugins/Dfusion/luafiles/friendship/patch.lua b/plugins/Dfusion/luafiles/friendship/patch.lua index 6707e4155..0ae236dc5 100644 --- a/plugins/Dfusion/luafiles/friendship/patch.lua +++ b/plugins/Dfusion/luafiles/friendship/patch.lua @@ -1,6 +1,6 @@ function friendship_in.patch() pos=GetTextRegion().start - local crace=add_race --offsets.getEx("CurrentRace") + local crace=VersionInfo.getGroup("Creatures"):getAddress("current_race") hits={} i=1 repeat diff --git a/plugins/Dfusion/src/lua_Misc.cpp b/plugins/Dfusion/src/lua_Misc.cpp index be1de4a24..269f38ee9 100644 --- a/plugins/Dfusion/src/lua_Misc.cpp +++ b/plugins/Dfusion/src/lua_Misc.cpp @@ -129,7 +129,11 @@ static int GetMod(lua_State *L) st.push(pos); return 1; } +#ifdef LINUX_BUILD static size_t __attribute__((stdcall)) PushValue(size_t ret,uint32_t eax,uint32_t ebx,uint32_t ecx,uint32_t edx,uint32_t edi,uint32_t esi,uint32_t esp,uint32_t ebp) +#else +static size_t __stdcall PushValue(size_t ret,uint32_t eax,uint32_t ebx,uint32_t ecx,uint32_t edx,uint32_t edi,uint32_t esi,uint32_t esp,uint32_t ebp) +#endif { lua::state st=lua::glua::Get(); st.getglobal("OnFunction"); diff --git a/plugins/devel/memview.cpp b/plugins/devel/memview.cpp index 772eb87a7..02727a485 100644 --- a/plugins/devel/memview.cpp +++ b/plugins/devel/memview.cpp @@ -62,36 +62,43 @@ bool isAddr(uint32_t *trg,vector & ranges) return false; } -void outputHex(uint8_t *buf,uint8_t *lbuf,size_t len,size_t start,Console &con,vector & ranges) -{ - +void outputHex(uint8_t *buf,uint8_t *lbuf,size_t len,size_t start,Core *c,vector & ranges) +{ + Console &con=c->con; + const size_t page_size=16; con.clear(); - const size_t page_size=16; + for(size_t i=0;i20) + if((buf[j+i]>31)&&(buf[j+i]<128)) //only printable ascii con.print("%c",buf[j+i]); else con.print("."); - con.print("\n"); - } + //con.print("\n"); + } + con.print("\n"); + con.flush(); + } void Deinit() { @@ -104,15 +111,17 @@ void Deinit() } DFhackCExport command_result plugin_onupdate ( Core * c ) { + mymutex->lock(); if(memdata.state==STATE_OFF) { mymutex->unlock(); return CR_OK; } - Console &con=c->con; + //Console &con=c->con; uint64_t time2 = GetTimeMs64(); uint64_t delta = time2-timeLast; + if(memdata.refresh!=0) if(deltap->read(memdata.addr,memdata.len,memdata.buf); - outputHex(memdata.buf,memdata.lbuf,memdata.len,memdata.addr,con,memdata.ranges); + outputHex(memdata.buf,memdata.lbuf,memdata.len,memdata.addr,c,memdata.ranges); memcpy(memdata.lbuf, memdata.buf, memdata.len); if(memdata.refresh==0) Deinit(); @@ -137,6 +146,7 @@ DFhackCExport command_result memview (Core * c, vector & parameters) memdata.addr=convert(parameters[0],true); if(memdata.addr==0) { + Deinit(); memdata.state=STATE_OFF; mymutex->unlock(); return CR_OK; @@ -154,7 +164,7 @@ DFhackCExport command_result memview (Core * c, vector & parameters) mymutex->unlock(); return CR_OK; } - memdata.state=STATE_ON; + memdata.state=STATE_ON; } if(parameters.size()>1) memdata.len=convert(parameters[1]); @@ -165,7 +175,7 @@ DFhackCExport command_result memview (Core * c, vector & parameters) memdata.refresh=convert(parameters[2]); else memdata.refresh=0; - + uint8_t *buf,*lbuf; memdata.buf=new uint8_t[memdata.len]; @@ -176,7 +186,9 @@ DFhackCExport command_result memview (Core * c, vector & parameters) } DFhackCExport command_result plugin_shutdown ( Core * c ) { + mymutex->lock(); Deinit(); - return CR_OK; delete mymutex; + mymutex->unlock(); + return CR_OK; }