MCPcopy Create free account
hub / github.com/TASEmulators/fceux / memory_setregister

Function memory_setregister

src/lua-engine.cpp:2033–2063  ·  view source on GitHub ↗

DEFINE_LUA_FUNCTION(memory_setregister, "cpu_dot_registername_string,value")

Source from the content-addressed store, hash-verified

2031}
2032//DEFINE_LUA_FUNCTION(memory_setregister, "cpu_dot_registername_string,value")
2033static int memory_setregister(lua_State *L)
2034{
2035 const char* qualifiedRegisterName = luaL_checkstring(L,1);
2036 unsigned long value = (unsigned long)(luaL_checkinteger(L,2));
2037 lua_settop(L,0);
2038 for(size_t cpu = 0; cpu < sizeof(cpuToRegisterMaps)/sizeof(*cpuToRegisterMaps); cpu++)
2039 {
2040 cpuToRegisterMap ctrm = cpuToRegisterMaps[cpu];
2041 int cpuNameLen = strlen(ctrm.cpuName);
2042 if(!strnicmp(qualifiedRegisterName, ctrm.cpuName, cpuNameLen))
2043 {
2044 qualifiedRegisterName += cpuNameLen;
2045 for(int reg = 0; ctrm.rpmap[reg].dataSize; reg++)
2046 {
2047 registerPointerMap rpm = ctrm.rpmap[reg];
2048 if(!stricmp(qualifiedRegisterName, rpm.registerName))
2049 {
2050 switch(rpm.dataSize)
2051 { default:
2052 case 1: *(unsigned char*)rpm.pointer = (unsigned char)(value & 0xFF); break;
2053 case 2: *(unsigned short*)rpm.pointer = (unsigned short)(value & 0xFFFF); break;
2054 case 4: *(unsigned long*)rpm.pointer = value; break;
2055 }
2056 return 0;
2057 }
2058 }
2059 return 0;
2060 }
2061 }
2062 return 0;
2063}
2064
2065// Forces a stack trace and returns the string
2066static const char *CallLuaTraceback(lua_State *L) {

Callers

nothing calls this directly

Calls 2

luaL_checkintegerFunction · 0.85
lua_settopFunction · 0.85

Tested by

no test coverage detected