Lua API reference

This section documents the Mesen-specific Lua API that is available in scripts via the script window.


To get a list of API changes between different versions of Mesen-S, take a look at the Changelog.

API References

Additional features


The Lua implementation found in Mesen-S has a version of LuaSocket (GitHub) built into it. The socket and mime packages are available and can be accessed by using local socket = require("socket.core") and local mime = require("mime.core"), respectively.

See LuaSocket’s documentation for more information on how to use this library.

Here is a tiny TCP socket sample that connects to via HTTP and downloads the page:

local socket = require("socket.core")
local tcp = sock.tcp()

--Set a 2-second timeout for all request, otherwise the process could hang!
local res = tcp:connect("", 80)
tcp:send("GET / HTTP/1.1\r\nHost:\r\nConnection: close\r\n\r\n")

local text
   text = tcp:receive()  
until text == nil

Using sockets without calling the settimeout(seconds) function (and specifying a reasonable number of seconds) first can result in the Mesen-S process hanging until the socket finishes the operation it is waiting for.
For this reason, it is highly recommended to ALWAYS call settimeout(seconds) on any newly created TCP/etc object before calling any other function on it.