diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index af523130f7..96253545db 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -12,10 +12,17 @@ namespace BizHawk.MultiClient { Lua lua = new Lua(); LuaWindow Caller; + public static string[] MemoryFunctions = new string[] { + "readbyte", + "writebyte"}; public LuaImplementation(LuaWindow passed) { Caller = passed.get(); lua.RegisterFunction("print",this, this.GetType().GetMethod("print")); + for (int i = 0; i < MemoryFunctions.Length; i++) + { + lua.RegisterFunction(MemoryFunctions[i], this, this.GetType().GetMethod(MemoryFunctions[i])); + } } public void DoLuaFile(string File) { @@ -23,7 +30,28 @@ namespace BizHawk.MultiClient } public void print(string s) { - Caller.AddText(s); + Caller.AddText(string.Format(s)); + } + public string readbyte(object lua_input) + { + + byte x; + if (lua_input.GetType() == typeof(string)) + { + x = Global.Emulator.MainMemory.PeekByte(int.Parse((string)lua_input)); + return x.ToString(); + } + else + { + double y = (double)lua_input; + x = Global.Emulator.MainMemory.PeekByte(Convert.ToInt32(y)); + return x.ToString(); + } + + } + public void writebyte(object lua_input) + { + Global.Emulator.MainMemory.PokeByte((int)lua_input, (byte)lua_input); } } } diff --git a/BizHawk.MultiClient/tools/LuaWindow.cs b/BizHawk.MultiClient/tools/LuaWindow.cs index dff41d94c2..66abcd4761 100644 --- a/BizHawk.MultiClient/tools/LuaWindow.cs +++ b/BizHawk.MultiClient/tools/LuaWindow.cs @@ -26,7 +26,7 @@ namespace BizHawk.MultiClient.tools { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Title = "Open Lua Script"; - fdlg.InitialDirectory = @"c:\"; //Switch this to a better default directory + fdlg.InitialDirectory = @".\"; //Switch this to a better default directory fdlg.Filter = "Lua files (*.lua)|*.lua|All files (*.*)|*.*"; fdlg.FilterIndex = 1; fdlg.RestoreDirectory = true;