turn memory lua libraries into their own objects

This commit is contained in:
adelikat 2013-10-31 16:10:20 +00:00
parent 6db76dd265
commit 18f0704a7c
3 changed files with 131 additions and 107 deletions

View File

@ -4,10 +4,74 @@ using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
public partial class EmuLuaLibrary
//TODO: this needs a major refactor, as well as MemoryLuaLibrary, and this shoudl inherit memorylua library and extend it
public class MainMemoryLuaLibrary : LuaLibraryBase
{
public MainMemoryLuaLibrary(Lua lua)
: base()
{
_lua = lua;
}
public override string Name { get { return "mainmemory"; } }
public override string[] Functions
{
get
{
return new[]
{
"getname",
"readbyte",
"readbyterange",
"readfloat",
"writebyte",
"writebyterange",
"writefloat",
"read_s8",
"read_u8",
"read_s16_le",
"read_s24_le",
"read_s32_le",
"read_u16_le",
"read_u24_le",
"read_u32_le",
"read_s16_be",
"read_s24_be",
"read_s32_be",
"read_u16_be",
"read_u24_be",
"read_u32_be",
"write_s8",
"write_u8",
"write_s16_le",
"write_s24_le",
"write_s32_le",
"write_u16_le",
"write_u24_le",
"write_u32_le",
"write_s16_be",
"write_s24_be",
"write_s32_be",
"write_u16_be",
"write_u24_be",
"write_u32_be",
};
}
}
private Lua _lua;
#region Main Memory Library Helpers
private static int U2S(uint u, int size)
{
int s = (int)u;
s <<= 8 * (4 - size);
s >>= 8 * (4 - size);
return s;
}
private int MM_R_S_LE(int addr, int size)
{
return U2S(MM_R_U_LE(addr, size), size);
@ -66,13 +130,7 @@ namespace BizHawk.MultiClient
Global.Emulator.MainMemory.PokeByte(addr, (byte)v);
}
private int U2S(uint u, int size)
{
int s = (int)u;
s <<= 8 * (4 - size);
s >>= 8 * (4 - size);
return s;
}
#endregion

View File

@ -4,10 +4,68 @@ using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
public partial class EmuLuaLibrary
public class MemoryLuaLibrary : LuaLibraryBase
{
public override string Name { get { return "memory"; } }
public override string[] Functions
{
get
{
return new[]
{
"getcurrentmemorydomain",
"getcurrentmemorydomainsize",
"getmemorydomainlist",
"readbyte",
"readfloat",
"usememorydomain",
"writebyte",
"writefloat",
"read_s8",
"read_u8",
"read_s16_le",
"read_s24_le",
"read_s32_le",
"read_u16_le",
"read_u24_le",
"read_u32_le",
"read_s16_be",
"read_s24_be",
"read_s32_be",
"read_u16_be",
"read_u24_be",
"read_u32_be",
"write_s8",
"write_u8",
"write_s16_le",
"write_s24_le",
"write_s32_le",
"write_u16_le",
"write_u24_le",
"write_u32_le",
"write_s16_be",
"write_s24_be",
"write_s32_be",
"write_u16_be",
"write_u24_be",
"write_u32_be",
};
}
}
private int _current_memory_domain; //Main memory by default
#region Memory Library Helpers
private static int U2S(uint u, int size)
{
int s = (int)u;
s <<= 8 * (4 - size);
s >>= 8 * (4 - size);
return s;
}
private int M_R_S_LE(int addr, int size)
{
return U2S(M_R_U_LE(addr, size), size);
@ -30,7 +88,9 @@ namespace BizHawk.MultiClient
{
uint v = 0;
for (int i = 0; i < size; ++i)
{
v |= M_R_U8(addr + i) << 8 * (size - 1 - i);
}
return v;
}
@ -42,7 +102,9 @@ namespace BizHawk.MultiClient
private void M_W_U_LE(int addr, uint v, int size)
{
for (int i = 0; i < size; ++i)
{
M_W_U8(addr + i, (v >> (8 * i)) & 0xFF);
}
}
private void M_W_S_BE(int addr, int v, int size)
@ -132,7 +194,6 @@ namespace BizHawk.MultiClient
return false;
}
public int memory_read_s8(object lua_addr)
{
int addr = LuaCommon.LuaInt(lua_addr);

View File

@ -8,7 +8,6 @@ namespace BizHawk.MultiClient
{
private Lua _lua = new Lua();
private readonly LuaConsole _caller;
private int _current_memory_domain; //Main memory by default
private Lua currThread;
public LuaDocumentation Docs = new LuaDocumentation();
@ -107,87 +106,6 @@ namespace BizHawk.MultiClient
"textbox",
};
public static string[] MainMemoryFunctions = new[]
{
"getname",
"readbyte",
"readbyterange",
"readfloat",
"writebyte",
"writebyterange",
"writefloat",
"read_s8",
"read_u8",
"read_s16_le",
"read_s24_le",
"read_s32_le",
"read_u16_le",
"read_u24_le",
"read_u32_le",
"read_s16_be",
"read_s24_be",
"read_s32_be",
"read_u16_be",
"read_u24_be",
"read_u32_be",
"write_s8",
"write_u8",
"write_s16_le",
"write_s24_le",
"write_s32_le",
"write_u16_le",
"write_u24_le",
"write_u32_le",
"write_s16_be",
"write_s24_be",
"write_s32_be",
"write_u16_be",
"write_u24_be",
"write_u32_be",
};
public static string[] MemoryFunctions = new[]
{
"getcurrentmemorydomain",
"getcurrentmemorydomainsize",
"getmemorydomainlist",
"readbyte",
"readfloat",
"usememorydomain",
"writebyte",
"writefloat",
"read_s8",
"read_u8",
"read_s16_le",
"read_s24_le",
"read_s32_le",
"read_u16_le",
"read_u24_le",
"read_u32_le",
"read_s16_be",
"read_s24_be",
"read_s32_be",
"read_u16_be",
"read_u24_be",
"read_u32_be",
"write_s8",
"write_u8",
"write_s16_le",
"write_s24_le",
"write_s32_le",
"write_u16_le",
"write_u24_le",
"write_u32_le",
"write_s16_be",
"write_s24_be",
"write_s32_be",
"write_u16_be",
"write_u24_be",
"write_u32_be",
};
public static string[] SaveStateFunctions = new[]
{
"load",
@ -207,6 +125,8 @@ namespace BizHawk.MultiClient
new ConsoleLuaLibrary().LuaRegister(lua, Docs);
new InputLuaLibrary(_lua).LuaRegister(lua, Docs);
new JoypadLuaLibrary(_lua).LuaRegister(lua, Docs);
new MemoryLuaLibrary().LuaRegister(lua, Docs);
new MainMemoryLuaLibrary(_lua).LuaRegister(lua, Docs);
new MovieLuaLibrary(_lua).LuaRegister(lua, Docs);
new NESLuaLibrary().LuaRegister(lua, Docs);
new SNESLuaLibrary().LuaRegister(lua, Docs);
@ -225,21 +145,6 @@ namespace BizHawk.MultiClient
Docs.Add("emu", t, GetType().GetMethod("emu_" + t));
}
lua.NewTable("memory");
foreach (string t in MemoryFunctions)
{
lua.RegisterFunction("memory." + t, this, GetType().GetMethod("memory_" + t));
Docs.Add("memory", t, GetType().GetMethod("memory_" + t));
}
lua.NewTable("mainmemory");
foreach (string t in MainMemoryFunctions)
{
lua.RegisterFunction("mainmemory." + t, this,
GetType().GetMethod("mainmemory_" + t));
Docs.Add("mainmemory", t, GetType().GetMethod("mainmemory_" + t));
}
lua.NewTable("savestate");
foreach (string t in SaveStateFunctions)
{