diff --git a/BizHawk.Client.Common/lua/EmuLuaLibrary.Bit.cs b/BizHawk.Client.Common/lua/EmuLuaLibrary.Bit.cs index f9ee97935d..c2b647cd04 100644 --- a/BizHawk.Client.Common/lua/EmuLuaLibrary.Bit.cs +++ b/BizHawk.Client.Common/lua/EmuLuaLibrary.Bit.cs @@ -19,6 +19,7 @@ namespace BizHawk.Client.Common "ror", "rshift", "check", + "signed", }; } } @@ -50,7 +51,7 @@ namespace BizHawk.Client.Common public static uint bit_rol(object val, object amt) { - return (uint)((LuaInt(val) << LuaInt(amt)) + return (uint)((LuaInt(val) << LuaInt(amt)) | (LuaInt(val) >> (32 - LuaInt(amt)))); } diff --git a/BizHawk.Client.Common/lua/EmuLuaLibrary.String.cs b/BizHawk.Client.Common/lua/EmuLuaLibrary.String.cs new file mode 100644 index 0000000000..54796e82a2 --- /dev/null +++ b/BizHawk.Client.Common/lua/EmuLuaLibrary.String.cs @@ -0,0 +1,34 @@ +using System; +namespace BizHawk.Client.Common +{ + public class StringLuaLibrary : LuaLibraryBase + { + public override string Name { get { return "string"; } } + public override string[] Functions + { + get + { + return new[] + { + "hex", + "binary", + }; + } + } + public static string string_hex(object num) + { + string hex = String.Format("{0:X}", LuaLong(num)); + if (hex.Length == 1) hex = "0" + hex; + return hex; + } + + public static string string_binary(object num) + { + string binary = Convert.ToString( LuaLong(num), 2); + binary = binary.TrimStart('0'); + return binary; + } + + } +} +