From 3e1c28f26c770257e1d238dc1e65de0c9fc49f9f Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 29 Oct 2013 13:52:59 +0000 Subject: [PATCH] Lua - Refactor bit library to be its own class, proof of concept for the remaining libraries --- .../BizHawk.MultiClient.csproj | 1 + .../tools/Lua/Libraries/EmuLuaLibrary.Bit.cs | 53 +++++---- .../Lua/Libraries/EmuLuaLibrary.Common.cs | 20 ++++ .../Lua/Libraries/EmuLuaLibrary.Events.cs | 4 +- .../Lua/Libraries/EmuLuaLibrary.Forms.cs | 30 +++--- .../tools/Lua/Libraries/EmuLuaLibrary.Gui.cs | 50 ++++----- .../Lua/Libraries/EmuLuaLibrary.Joypad.cs | 8 +- .../Lua/Libraries/EmuLuaLibrary.MainMemory.cs | 102 +++++++++--------- .../Lua/Libraries/EmuLuaLibrary.Memory.cs | 94 ++++++++-------- .../Lua/Libraries/EmuLuaLibrary.Movie.cs | 2 +- .../tools/Lua/Libraries/EmuLuaLibrary.NES.cs | 4 +- .../tools/Lua/Libraries/EmuLuaLibrary.cs | 38 ++----- 12 files changed, 212 insertions(+), 194 deletions(-) create mode 100644 BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Common.cs diff --git a/BizHawk.MultiClient/BizHawk.MultiClient.csproj b/BizHawk.MultiClient/BizHawk.MultiClient.csproj index ffd5d33128..57782b02fc 100644 --- a/BizHawk.MultiClient/BizHawk.MultiClient.csproj +++ b/BizHawk.MultiClient/BizHawk.MultiClient.csproj @@ -445,6 +445,7 @@ + diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Bit.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Bit.cs index 74aab073a5..8a0219272b 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Bit.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Bit.cs @@ -1,45 +1,62 @@ -namespace BizHawk.MultiClient +using System; + +namespace BizHawk.MultiClient { - public partial class EmuLuaLibrary + public static class BitLuaLibrary { - public uint bit_band(object val, object amt) + public static string Name = "bit"; + public static string[] Functions = new[] { - return (uint)(LuaInt(val) & LuaInt(amt)); + "band", + "bnot", + "bor", + "bxor", + "lshift", + "rol", + "ror", + "rshift", + }; + + public static uint bit_band(object val, object amt) + { + return (uint)(LuaCommon.LuaInt(val) & LuaCommon.LuaInt(amt)); } - public uint bit_bnot(object val) + public static uint bit_bnot(object val) { - return (uint)(~LuaInt(val)); + return (uint)(~LuaCommon.LuaInt(val)); } - public uint bit_bor(object val, object amt) + public static uint bit_bor(object val, object amt) { - return (uint)(LuaInt(val) | LuaInt(amt)); + return (uint)(LuaCommon.LuaInt(val) | LuaCommon.LuaInt(amt)); } - public uint bit_bxor(object val, object amt) + public static uint bit_bxor(object val, object amt) { - return (uint)(LuaInt(val) ^ LuaInt(amt)); + return (uint)(LuaCommon.LuaInt(val) ^ LuaCommon.LuaInt(amt)); } - public uint bit_lshift(object val, object amt) + public static uint bit_lshift(object val, object amt) { - return (uint)(LuaInt(val) << LuaInt(amt)); + return (uint)(LuaCommon.LuaInt(val) << LuaCommon.LuaInt(amt)); } - public uint bit_rol(object val, object amt) + public static uint bit_rol(object val, object amt) { - return (uint)((LuaInt(val) << LuaInt(amt)) | (LuaInt(val) >> (32 - LuaInt(amt)))); + return (uint)((LuaCommon.LuaInt(val) << LuaCommon.LuaInt(amt)) + | (LuaCommon.LuaInt(val) >> (32 - LuaCommon.LuaInt(amt)))); } - public uint bit_ror(object val, object amt) + public static uint bit_ror(object val, object amt) { - return (uint)((LuaInt(val) >> LuaInt(amt)) | (LuaInt(val) << (32 - LuaInt(amt)))); + return (uint)((LuaCommon.LuaInt(val) >> LuaCommon.LuaInt(amt)) + | (LuaCommon.LuaInt(val) << (32 - LuaCommon.LuaInt(amt)))); } - public uint bit_rshift(object val, object amt) + public static uint bit_rshift(object val, object amt) { - return (uint)(LuaInt(val) >> LuaInt(amt)); + return (uint)(LuaCommon.LuaInt(val) >> LuaCommon.LuaInt(amt)); } } } diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Common.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Common.cs new file mode 100644 index 0000000000..64903abae2 --- /dev/null +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Common.cs @@ -0,0 +1,20 @@ +using System; + +namespace BizHawk.MultiClient +{ + /// + /// Generic helper functions for Lua Libraries + /// + public static class LuaCommon + { + public static int LuaInt(object lua_arg) + { + return Convert.ToInt32((double)lua_arg); + } + + public static uint LuaUInt(object lua_arg) + { + return Convert.ToUInt32((double)lua_arg); + } + } +} diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Events.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Events.cs index d6a8bb9e19..8226bcd200 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Events.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Events.cs @@ -136,7 +136,7 @@ namespace BizHawk.MultiClient } else { - _addr = LuaInt(address); + _addr = LuaCommon.LuaInt(address); } Global.Emulator.CoreComm.MemoryCallbackSystem.ReadAddr = _addr; @@ -173,7 +173,7 @@ namespace BizHawk.MultiClient } else { - _addr = LuaInt(address); + _addr = LuaCommon.LuaInt(address); } Global.Emulator.CoreComm.MemoryCallbackSystem.WriteAddr = _addr; diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Forms.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Forms.cs index e5e0f75b77..dea17c8b90 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Forms.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Forms.cs @@ -28,7 +28,7 @@ namespace BizHawk.MultiClient private LuaWinform GetForm(object form_handle) { - IntPtr ptr = new IntPtr(LuaInt(form_handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(form_handle)); return LuaForms.FirstOrDefault(form => form.Handle == ptr); } @@ -38,8 +38,8 @@ namespace BizHawk.MultiClient { if (X != null && Y != null) { - int x = LuaInt(X); - int y = LuaInt(Y); + int x = LuaCommon.LuaInt(X); + int y = LuaCommon.LuaInt(Y); control.Location = new Point(x, y); } } @@ -55,8 +55,8 @@ namespace BizHawk.MultiClient { if (Width != null && Height != null) { - int width = LuaInt(Width); - int height = LuaInt(Height); + int width = LuaCommon.LuaInt(Width); + int height = LuaCommon.LuaInt(Height); control.Size = new Size(width, height); } } @@ -78,7 +78,7 @@ namespace BizHawk.MultiClient public void forms_addclick(object handle, LuaFunction lua_event) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { foreach (Control control in form.Controls) @@ -115,7 +115,7 @@ namespace BizHawk.MultiClient public void forms_clearclicks(object handle) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { foreach (Control control in form.Controls) @@ -134,7 +134,7 @@ namespace BizHawk.MultiClient public bool forms_destroy(object handle) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -160,7 +160,7 @@ namespace BizHawk.MultiClient { try { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -191,7 +191,7 @@ namespace BizHawk.MultiClient { try { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -245,7 +245,7 @@ namespace BizHawk.MultiClient LuaForms.Add(theForm); if (Width != null && Height != null) { - theForm.Size = new Size(LuaInt(Width), LuaInt(Height)); + theForm.Size = new Size(LuaCommon.LuaInt(Width), LuaCommon.LuaInt(Height)); } if (title != null) @@ -282,7 +282,7 @@ namespace BizHawk.MultiClient public void forms_setlocation(object handle, object X, object Y) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -304,7 +304,7 @@ namespace BizHawk.MultiClient public void forms_setproperty(object handle, object property, object value) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -326,7 +326,7 @@ namespace BizHawk.MultiClient public void forms_setsize(object handle, object Width, object Height) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) @@ -348,7 +348,7 @@ namespace BizHawk.MultiClient public void forms_settext(object handle, object caption) { - IntPtr ptr = new IntPtr(LuaInt(handle)); + IntPtr ptr = new IntPtr(LuaCommon.LuaInt(handle)); foreach (LuaWinform form in LuaForms) { if (form.Handle == ptr) diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs index af63e29963..c06cad1df8 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs @@ -116,8 +116,8 @@ namespace BizHawk.MultiClient if (background == null) background = "black"; } - int dx = LuaInt(luaX); - int dy = LuaInt(luaY); + int dx = LuaCommon.LuaInt(luaX); + int dy = LuaCommon.LuaInt(luaY); int a = 0; if (anchor != null) { @@ -135,7 +135,7 @@ namespace BizHawk.MultiClient } else { - a = LuaInt(anchor); + a = LuaCommon.LuaInt(anchor); } } else @@ -178,7 +178,7 @@ namespace BizHawk.MultiClient int i = 0; foreach (LuaTable point in points.Values) { - Points[i] = new Point(LuaInt(point[1]), LuaInt(point[2])); + Points[i] = new Point(LuaCommon.LuaInt(point[1]), LuaCommon.LuaInt(point[2])); i++; if (i >= 4) break; @@ -199,10 +199,10 @@ namespace BizHawk.MultiClient { try { - int int_x = LuaInt(X); - int int_y = LuaInt(Y); - int int_width = LuaInt(X2); - int int_height = LuaInt(Y2); + int int_x = LuaCommon.LuaInt(X); + int int_y = LuaCommon.LuaInt(Y); + int int_width = LuaCommon.LuaInt(X2); + int int_height = LuaCommon.LuaInt(Y2); if (int_x < int_width) { @@ -245,11 +245,11 @@ namespace BizHawk.MultiClient { try { - g.DrawEllipse(GetPen(line ?? "white"), LuaInt(X), LuaInt(Y), LuaInt(width), LuaInt(height)); + g.DrawEllipse(GetPen(line ?? "white"), LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y), LuaCommon.LuaInt(width), LuaCommon.LuaInt(height)); if (background != null) { var brush = GetBrush(background); - g.FillEllipse(brush, LuaInt(X), LuaInt(Y), LuaInt(width), LuaInt(height)); + g.FillEllipse(brush, LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y), LuaCommon.LuaInt(width), LuaCommon.LuaInt(height)); } } catch (Exception) @@ -270,14 +270,14 @@ namespace BizHawk.MultiClient Icon icon; if (width != null && height != null) { - icon = new Icon(Path.ToString(), LuaInt(width), LuaInt(height)); + icon = new Icon(Path.ToString(), LuaCommon.LuaInt(width), LuaCommon.LuaInt(height)); } else { icon = new Icon(Path.ToString()); } - g.DrawIcon(icon, LuaInt(x), LuaInt(y)); + g.DrawIcon(icon, LuaCommon.LuaInt(x), LuaCommon.LuaInt(y)); } catch (Exception) { @@ -300,7 +300,7 @@ namespace BizHawk.MultiClient if (height == null || height.GetType() != typeof(int)) height = img.Height.ToString(); - g.DrawImage(img, LuaInt(x), LuaInt(y), int.Parse(width.ToString()), int.Parse(height.ToString())); + g.DrawImage(img, LuaCommon.LuaInt(x), LuaCommon.LuaInt(y), int.Parse(width.ToString()), int.Parse(height.ToString())); } catch (Exception) { @@ -316,7 +316,7 @@ namespace BizHawk.MultiClient { try { - g.DrawLine(GetPen(color ?? "white"), LuaInt(x1), LuaInt(y1), LuaInt(x2), LuaInt(y2)); + g.DrawLine(GetPen(color ?? "white"), LuaCommon.LuaInt(x1), LuaCommon.LuaInt(y1), LuaCommon.LuaInt(x2), LuaCommon.LuaInt(y2)); } catch (Exception) { @@ -333,11 +333,11 @@ namespace BizHawk.MultiClient { try { - g.DrawPie(GetPen(line), LuaInt(X), LuaInt(Y), LuaInt(width), LuaInt(height), LuaInt(startangle), LuaInt(sweepangle)); + g.DrawPie(GetPen(line), LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y), LuaCommon.LuaInt(width), LuaCommon.LuaInt(height), LuaCommon.LuaInt(startangle), LuaCommon.LuaInt(sweepangle)); if (background != null) { var brush = GetBrush(background); - g.FillPie(brush, LuaInt(X), LuaInt(Y), LuaInt(width), LuaInt(height), LuaInt(startangle), LuaInt(sweepangle)); + g.FillPie(brush, LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y), LuaCommon.LuaInt(width), LuaCommon.LuaInt(height), LuaCommon.LuaInt(startangle), LuaCommon.LuaInt(sweepangle)); } } catch (Exception) @@ -354,10 +354,10 @@ namespace BizHawk.MultiClient GlobalWinF.DisplayManager.NeedsToPaint = true; using (var g = GetGraphics()) { - float x = LuaInt(X) + 0.1F; + float x = LuaCommon.LuaInt(X) + 0.1F; try { - g.DrawLine(GetPen(color ?? "white"), LuaInt(X), LuaInt(Y), x, LuaInt(Y)); + g.DrawLine(GetPen(color ?? "white"), LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y), x, LuaCommon.LuaInt(Y)); } catch (Exception) { @@ -378,7 +378,7 @@ namespace BizHawk.MultiClient int i = 0; foreach (LuaTable point in points.Values) { - Points[i] = new Point(LuaInt(point[1]), LuaInt(point[2])); + Points[i] = new Point(LuaCommon.LuaInt(point[1]), LuaCommon.LuaInt(point[2])); i++; } @@ -402,10 +402,10 @@ namespace BizHawk.MultiClient { try { - int int_x = LuaInt(X); - int int_y = LuaInt(Y); - int int_width = LuaInt(width); - int int_height = LuaInt(height); + int int_x = LuaCommon.LuaInt(X); + int int_y = LuaCommon.LuaInt(Y); + int int_width = LuaCommon.LuaInt(width); + int int_height = LuaCommon.LuaInt(height); g.DrawRectangle(GetPen(line ?? "white"), int_x, int_y, int_width, int_height); if (background != null) { @@ -437,7 +437,7 @@ namespace BizHawk.MultiClient int fsize = 12; if (fontsize != null) { - fsize = LuaInt(fontsize); + fsize = LuaCommon.LuaInt(fontsize); } FontFamily family = FontFamily.GenericMonospace; @@ -471,7 +471,7 @@ namespace BizHawk.MultiClient } Font font = new Font(family, fsize, fstyle, GraphicsUnit.Pixel); - g.DrawString(message.ToString(), font, GetBrush(color ?? "white"), LuaInt(X), LuaInt(Y)); + g.DrawString(message.ToString(), font, GetBrush(color ?? "white"), LuaCommon.LuaInt(X), LuaCommon.LuaInt(Y)); } catch (Exception) { diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Joypad.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Joypad.cs index 02712c0074..4a8a9f38d6 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Joypad.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Joypad.cs @@ -16,9 +16,9 @@ namespace BizHawk.MultiClient { buttons[button] = Global.ControllerOutput[button]; } - else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaInt(controller).ToString()) + else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaCommon.LuaInt(controller).ToString()) { - buttons[button.Substring(3)] = Global.ControllerOutput["P" + LuaInt(controller) + " " + button.Substring(3)]; + buttons[button.Substring(3)] = Global.ControllerOutput["P" + LuaCommon.LuaInt(controller) + " " + button.Substring(3)]; } } @@ -28,9 +28,9 @@ namespace BizHawk.MultiClient { buttons[button] = Global.ControllerOutput.GetFloat(button); } - else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaInt(controller).ToString()) + else if (button.Length >= 3 && button.Substring(0, 2) == "P" + LuaCommon.LuaInt(controller).ToString()) { - buttons[button.Substring(3)] = Global.ControllerOutput.GetFloat("P" + LuaInt(controller) + " " + button.Substring(3)); + buttons[button.Substring(3)] = Global.ControllerOutput.GetFloat("P" + LuaCommon.LuaInt(controller) + " " + button.Substring(3)); } } diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.MainMemory.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.MainMemory.cs index 90d110dfe9..a441960b5c 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.MainMemory.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.MainMemory.cs @@ -83,14 +83,14 @@ namespace BizHawk.MultiClient public uint mainmemory_readbyte(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U8(addr); } public LuaTable mainmemory_readbyterange(object address, object length) { - int l = LuaInt(length); - int addr = LuaInt(address); + int l = LuaCommon.LuaInt(length); + int addr = LuaCommon.LuaInt(address); int last_addr = l + addr; LuaTable table = _lua.NewTable(); for (int i = addr; i <= last_addr; i++) @@ -105,7 +105,7 @@ namespace BizHawk.MultiClient public float mainmemory_readfloat(object lua_addr, bool bigendian) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); uint val = Global.Emulator.MainMemory.PeekDWord(addr, bigendian ? Endian.Big : Endian.Little); byte[] bytes = BitConverter.GetBytes(val); @@ -115,8 +115,8 @@ namespace BizHawk.MultiClient public void mainmemory_writebyte(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U8(addr, v); } @@ -124,8 +124,8 @@ namespace BizHawk.MultiClient { foreach (var address in memoryblock.Keys) { - int a = LuaInt(address); - int v = LuaInt(memoryblock[address]); + int a = LuaCommon.LuaInt(address); + int v = LuaCommon.LuaInt(memoryblock[address]); Global.Emulator.MainMemory.PokeByte(a, (byte)v); } @@ -133,7 +133,7 @@ namespace BizHawk.MultiClient public void mainmemory_writefloat(object lua_addr, object lua_v, bool bigendian) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); float dv = (float)(double)lua_v; byte[] bytes = BitConverter.GetBytes(dv); uint v = BitConverter.ToUInt32(bytes, 0); @@ -143,183 +143,183 @@ namespace BizHawk.MultiClient public int mainmemory_read_s8(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return (sbyte)MM_R_U8(addr); } public uint mainmemory_read_u8(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U8(addr); } public int mainmemory_read_s16_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_LE(addr, 2); } public int mainmemory_read_s24_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_LE(addr, 3); } public int mainmemory_read_s32_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_LE(addr, 4); } public uint mainmemory_read_u16_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_LE(addr, 2); } public uint mainmemory_read_u24_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_LE(addr, 3); } public uint mainmemory_read_u32_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_LE(addr, 4); } public int mainmemory_read_s16_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_BE(addr, 2); } public int mainmemory_read_s24_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_BE(addr, 3); } public int mainmemory_read_s32_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_S_BE(addr, 4); } public uint mainmemory_read_u16_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_BE(addr, 2); } public uint mainmemory_read_u24_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_BE(addr, 3); } public uint mainmemory_read_u32_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return MM_R_U_BE(addr, 4); } public void mainmemory_write_s8(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_U8(addr, (uint)v); } public void mainmemory_write_u8(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U8(addr, v); } public void mainmemory_write_s16_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_LE(addr, v, 2); } public void mainmemory_write_s24_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_LE(addr, v, 3); } public void mainmemory_write_s32_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_LE(addr, v, 4); } public void mainmemory_write_u16_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_LE(addr, v, 2); } public void mainmemory_write_u24_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_LE(addr, v, 3); } public void mainmemory_write_u32_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_LE(addr, v, 4); } public void mainmemory_write_s16_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_BE(addr, v, 2); } public void mainmemory_write_s24_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_BE(addr, v, 3); } public void mainmemory_write_s32_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); MM_W_S_BE(addr, v, 4); } public void mainmemory_write_u16_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_BE(addr, v, 2); } public void mainmemory_write_u24_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_BE(addr, v, 3); } public void mainmemory_write_u32_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); MM_W_U_BE(addr, v, 4); } } diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Memory.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Memory.cs index f4a82cb76b..04f3bc0028 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Memory.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Memory.cs @@ -85,13 +85,13 @@ namespace BizHawk.MultiClient public uint memory_readbyte(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U8(addr); } public float memory_readfloat(object lua_addr, bool bigendian) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); uint val = Global.Emulator.MemoryDomains[_current_memory_domain].PeekDWord(addr, bigendian ? Endian.Big : Endian.Little); byte[] bytes = BitConverter.GetBytes(val); @@ -101,14 +101,14 @@ namespace BizHawk.MultiClient public void memory_writebyte(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U8(addr, v); } public void memory_writefloat(object lua_addr, object lua_v, bool bigendian) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); float dv = (float)(double)lua_v; byte[] bytes = BitConverter.GetBytes(dv); uint v = BitConverter.ToUInt32(bytes, 0); @@ -135,183 +135,183 @@ namespace BizHawk.MultiClient public int memory_read_s8(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return (sbyte)M_R_U8(addr); } public uint memory_read_u8(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U8(addr); } public int memory_read_s16_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_LE(addr, 2); } public int memory_read_s24_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_LE(addr, 3); } public int memory_read_s32_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_LE(addr, 4); } public uint memory_read_u16_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_LE(addr, 2); } public uint memory_read_u24_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_LE(addr, 3); } public uint memory_read_u32_le(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_LE(addr, 4); } public int memory_read_s16_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_BE(addr, 2); } public int memory_read_s24_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_BE(addr, 3); } public int memory_read_s32_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_S_BE(addr, 4); } public uint memory_read_u16_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_BE(addr, 2); } public uint memory_read_u24_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_BE(addr, 3); } public uint memory_read_u32_be(object lua_addr) { - int addr = LuaInt(lua_addr); + int addr = LuaCommon.LuaInt(lua_addr); return M_R_U_BE(addr, 4); } public void memory_write_s8(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_U8(addr, (uint)v); } public void memory_write_u8(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U8(addr, v); } public void memory_write_s16_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_LE(addr, v, 2); } public void memory_write_s24_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_LE(addr, v, 3); } public void memory_write_s32_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_LE(addr, v, 4); } public void memory_write_u16_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_LE(addr, v, 2); } public void memory_write_u24_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_LE(addr, v, 3); } public void memory_write_u32_le(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_LE(addr, v, 4); } public void memory_write_s16_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_BE(addr, v, 2); } public void memory_write_s24_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_BE(addr, v, 3); } public void memory_write_s32_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - int v = LuaInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + int v = LuaCommon.LuaInt(lua_v); M_W_S_BE(addr, v, 4); } public void memory_write_u16_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_BE(addr, v, 2); } public void memory_write_u24_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_BE(addr, v, 3); } public void memory_write_u32_be(object lua_addr, object lua_v) { - int addr = LuaInt(lua_addr); - uint v = LuaUInt(lua_v); + int addr = LuaCommon.LuaInt(lua_addr); + uint v = LuaCommon.LuaUInt(lua_v); M_W_U_BE(addr, v, 4); } } diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Movie.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Movie.cs index 3bb60e268b..0d8b418587 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Movie.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.Movie.cs @@ -14,7 +14,7 @@ namespace BizHawk.MultiClient { LuaTable input = _lua.NewTable(); - string s = Global.MovieSession.Movie.GetInput(LuaInt(frame)); + string s = Global.MovieSession.Movie.GetInput(LuaCommon.LuaInt(frame)); MovieControllerAdapter m = new MovieControllerAdapter { Type = Global.MovieSession.MovieControllerAdapter.Type }; m.SetControllersAsMnemonic(s); foreach (string button in m.Type.BoolButtons) diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.NES.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.NES.cs index f6448df1a9..5f79522dc5 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.NES.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.NES.cs @@ -127,8 +127,8 @@ namespace BizHawk.MultiClient public void nes_setscanlines(object top, object bottom, bool pal = false) { - int first = LuaInt(top); - int last = LuaInt(bottom); + int first = LuaCommon.LuaInt(top); + int last = LuaCommon.LuaInt(bottom); if (first > 127) { first = 127; diff --git a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.cs b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.cs index 0ee0d6d53e..72a162cd46 100644 --- a/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.cs +++ b/BizHawk.MultiClient/tools/Lua/Libraries/EmuLuaLibrary.cs @@ -33,18 +33,6 @@ namespace BizHawk.MultiClient #region Register Library Functions - public static string[] BitwiseFunctions = new[] - { - "band", - "bnot", - "bor", - "bxor", - "lshift", - "rol", - "ror", - "rshift", - }; - public static string[] MultiClientFunctions = new[] { "closerom", @@ -313,6 +301,15 @@ namespace BizHawk.MultiClient { lua.RegisterFunction("print", this, GetType().GetMethod("print")); + lua.NewTable("bit"); + foreach (var funcName in BitLuaLibrary.Functions) + { + string libName = BitLuaLibrary.Name + "." + funcName; + var method = (typeof(BitLuaLibrary)).GetMethod(BitLuaLibrary.Name + "_" + funcName); + lua.RegisterFunction(libName, this, method); + Docs.Add(BitLuaLibrary.Name, funcName, method); + } + //Register libraries lua.NewTable("console"); foreach (string t in ConsoleFunctions) @@ -395,13 +392,6 @@ namespace BizHawk.MultiClient Docs.Add("forms", t, GetType().GetMethod("forms_" + t)); } - lua.NewTable("bit"); - foreach (string t in BitwiseFunctions) - { - lua.RegisterFunction("bit." + t, this, GetType().GetMethod("bit_" + t)); - Docs.Add("bit", t, GetType().GetMethod("bit_" + t)); - } - lua.NewTable("nes"); foreach (string t in NESFunctions) { @@ -439,16 +429,6 @@ namespace BizHawk.MultiClient return t; } - public int LuaInt(object lua_arg) - { - return Convert.ToInt32((double)lua_arg); - } - - private uint LuaUInt(object lua_arg) - { - return Convert.ToUInt32((double)lua_arg); - } - /// /// LuaInterface requires the exact match of parameter count, except optional parameters. /// So, if you want to support variable arguments, declare them as optional and pass