-- hacks for FCEUX being dumb. local _error = error local _assert = assert error = function(msg, level) if level == nil then level = 1 end print() print(debug.traceback(msg, 1 + level):gsub("\n", "\r\n")) _error(msg, level) end assert = function(cond, msg) if cond then return cond end msg = msg or "nondescript" print() print(debug.traceback(msg, 2):gsub("\n", "\r\n")) _error("assertion failed!") end -- be strict about globals. local mt = getmetatable(_G) if mt == nil then mt = {} setmetatable(_G, mt) end function mt.__newindex(t, n, v) error("cannot assign undeclared global '" .. tostring(n) .. "'", 2) end function mt.__index(t, n) error("cannot use undeclared global '" .. tostring(n) .. "'", 2) end local function globalize(t) for k, v in pairs(t) do rawset(_G, k, v) end end return globalize