auto.lua now exports bytecode headers & added assert to setMode in boot.lua

This commit is contained in:
bart@bartbes.ath.cx
2010-01-01 19:34:56 +01:00
parent 7585105fdd
commit b2972d6fd6
4 changed files with 2019 additions and 1287 deletions
+20 -22
View File
@@ -1,27 +1,25 @@
-- Usage:
-- lua auto.lua <name1> <name2> .. <nameN>
--
--
-- Example:
-- lua auto.lua boot graphics
max_width = 15
function auto(name)
local src = name .. ".lua"
local dst = name .. ".lua.h"
local src = name .. ".lua"
local dst = name .. ".lua.h"
local cpp_name = name .. "_lua"
-- Read source Lua file
local src_file = io.open(src, "rb")
local src_data = src_file:read("*a")
local src_data = string.dump(loadfile(src))
local src_len = #src_data
src_file:close()
local lines = {}
local line = {}
table.insert(lines, line)
for i=1,src_len do
table.insert(line, string.byte(src_data, i))
if math.mod(i, max_width) == 0 then
@@ -29,9 +27,9 @@ function auto(name)
table.insert(lines, line)
end
end
local src_output = "const char "..cpp_name.."[] = \n{\n"
for i,line in ipairs(lines) do
local concat = {}
for j,b in ipairs(line) do
@@ -39,45 +37,45 @@ function auto(name)
end
src_output = src_output .. "\t" .. table.concat(concat, "").."\n"
end
src_output = src_output .. "};"
local include = true
-- Read dst
local dst_lines = {}
for line in io.lines(dst) do
if line == "// ["..src.."]" then
include = false
table.insert(dst_lines, line)
table.insert(dst_lines, src_output)
end
if line == "// [/"..src.."]" then
include = true
end
if include then
table.insert(dst_lines, line)
end
end
local tmp_data = table.concat(dst_lines, "\n")
-- Overwrite the old file only if they are different.
local dst_file = io.open(dst, "rb")
dst_data = dst_file:read("*a")
dst_file:close()
if tmp_data == dst_data then
print(name .. ": no change")
else
local dst_file = io.open(dst, "wb")
dst_file:write(tmp_data)
dst_file:close()
print(name .. ": updated")
end
+73 -73
View File
@@ -31,12 +31,12 @@ function love.path.abs(p)
return true
end
-- Path is absolute if it starts with a
-- Path is absolute if it starts with a
-- letter followed by a colon.
if string.find(tmp, "%a:") == 1 then
return true
end
-- Relative.
return false
@@ -52,7 +52,7 @@ function love.path.getfull(p)
local cwd = love.filesystem.getWorkingDirectory()
cwd = love.path.normalslashes(cwd)
cwd = love.path.endslash(cwd)
-- Construct a full path.
return cwd .. love.path.normalslashes(p)
@@ -62,24 +62,24 @@ end
function love.path.leaf(p)
local a = 1
local last = p
while a do
a = string.find(p, "/", a+1)
if a then
last = string.sub(p, a+1)
end
end
return last
end
-- Finds the key in the table with the lowest integral index. The lowest
-- Finds the key in the table with the lowest integral index. The lowest
-- will typically the executable, for instance "lua5.1.exe".
function love.arg.getLow(a)
local m = math.huge
for k,v in pairs(a) do
if k < m then
if k < m then
m = k
end
end
@@ -106,21 +106,21 @@ function love.arg.parse_option(m, i)
end
function love.arg.parse_options()
local last = 0
local argc = #arg
for i=1,argc do
-- Look for options.
local s, e, m = string.find(arg[i], "%-%-(.+)")
if m and love.arg.options[m] then
i = love.arg.parse_option(love.arg.options[m], i+1)
end
last = i
end
if not love.arg.options.game.set then
love.arg.parse_option(love.arg.options.game, last)
end
@@ -155,7 +155,7 @@ function love.createhandlers()
end
-- This can't be overriden.
-- This can't be overriden.
function love.boot()
-- This is absolutely needed.
@@ -163,27 +163,27 @@ function love.boot()
require("love.filesystem")
love.arg.parse_options()
local o = love.arg.options
local abs_arg0 = love.path.getfull(love.arg.getLow(arg))
love.filesystem.init(abs_arg0)
-- Is this one of those fancy "fused" games?
local can_has_game = pcall(love.filesystem.setSource, abs_arg0)
if not can_has_game and o.game.set and o.game.arg[1] then
local full_source = love.path.getfull(o.game.arg[1])
local leaf = love.path.leaf(full_source)
love.filesystem.setIdentity(leaf)
can_has_game = pcall(love.filesystem.setSource, full_source)
end
if not can_has_game then
love.filesystem = nil
love.nogame()
love.nogame()
end
end
function love.init()
@@ -199,7 +199,7 @@ function love.init()
fullscreen = false,
vsync = true,
fsaa = 0,
},
},
modules = {
event = true,
keyboard = true,
@@ -219,7 +219,7 @@ function love.init()
if not love.conf and love.filesystem and love.filesystem.exists("conf.lua") then
require("conf.lua")
end
-- Yes, conf.lua might not exist, but there are other ways of making
-- love.conf appear, so we should check for it anyway.
if love.conf then
@@ -229,37 +229,37 @@ function love.init()
-- continue
end
end
if love.arg.options.console.set then
c.console = true
end
-- Gets desired modules.
for k,v in pairs(c.modules) do
if v then
require("love." .. k)
end
end
if love.keyboard then
love.createhandlers()
end
-- Setup screen here.
if c.screen and c.modules.graphics then
if c.screen and c.modules.graphics then
if love.graphics.checkMode(c.screen.width, c.screen.height, c.screen.fullscreen) then
love.graphics.setMode(c.screen.width, c.screen.height, c.screen.fullscreen, c.screen.vsync, c.screen.fsaa)
assert(love.graphics.setMode(c.screen.width, c.screen.height, c.screen.fullscreen, c.screen.vsync, c.screen.fsaa), "Could not set screen mode")
end
love.graphics.setCaption(c.title)
end
if love.filesystem and love.filesystem.exists("main.lua") then require("main.lua") end
-- Console hack
if c.console and love._openConsole then
love._openConsole()
end
end
function love.run()
@@ -275,11 +275,11 @@ function love.run()
-- Process events.
for e,a,b,c in love.event.poll() do
if e == "q" then
if e == "q" then
if love.audio then
love.audio.stop()
end
return
end
return
end
love.handlers[e](a,b,c)
end
@@ -300,7 +300,7 @@ function love.nogame()
love.load = function()
love.graphics.setBackgroundColor(0x84, 0xca, 0xff)
names = {
"wheel_major",
"wheel_minor",
@@ -318,13 +318,13 @@ function love.nogame()
"bubble",
"love",
}
local decode = function(file)
return love.graphics.newImage(love.image.newImageData(file))
end
images = {}
for i,v in pairs(names) do
images[v] = decode(love["_"..v.."_png"])
end
@@ -372,7 +372,7 @@ function love.nogame()
Node.new = function(self, object)
local o = {
next = nil,
next = nil,
}
setmetatable(o, List)
return o
@@ -395,7 +395,7 @@ function love.nogame()
Object.new = function(self)
local o = {
image = nil,
x = 0,
x = 0,
y = 0,
dx = -400,
dy = 0,
@@ -491,7 +491,7 @@ function love.nogame()
Belt.new = function(self, n)
local o = {}
o.r = 30
o.d = o.r*2
o.half_c = math.pi*o.r
@@ -508,7 +508,7 @@ function love.nogame()
local b = { x = 0, y = 0, t = (o.total/n)*i }
table.insert(o.teeth, b)
end
setmetatable(o, Belt)
return o
end
@@ -516,12 +516,12 @@ function love.nogame()
Belt.update = function(self, dt)
for i,b in ipairs(self.teeth) do
b.t = b.t + dt
if b.t < self.th then
local t = b.t
b.x = self.x + self.w * (t/self.th)
b.y = self.y
elseif b.t < self.th + self.ta then
elseif b.t < self.th + self.ta then
local t = (self.th + self.ta - b.t)
b.x = self.x + self.w + math.cos(-math.pi*t + math.pi/2)*self.r
b.y = self.y + self.r + math.sin(-math.pi*t + math.pi/2)*self.r
@@ -529,7 +529,7 @@ function love.nogame()
local t = (b.t - self.th*2 + self.ta)/self.th
b.x = self.x + self.w * (2-t)
b.y = self.y + self.d
elseif b.t < self.total then
elseif b.t < self.total then
local t = (self.th*2 + self.ta - b.t)
b.x = self.x + math.cos(-math.pi*t + math.pi/2)*self.r
b.y = self.y + self.r + math.sin(-math.pi*t + math.pi/2)*self.r
@@ -625,15 +625,15 @@ function love.nogame()
end
lists = {
b = List:new(),
b = List:new(),
f = List:new()
}
do
local t = Bubble:new()
t:insert(lists.f)
end
do
local t = Tank:new()
t:insert(lists.f)
@@ -643,7 +643,7 @@ function love.nogame()
local t = Tree:new(50, 300)
t:insert(lists.b)
end
for i=1,2 do
local t = Knoll:new(1, 50, 100)
@@ -659,11 +659,11 @@ function love.nogame()
local t = Knoll:new(2, 100, 50)
t:insert(lists.b)
end
for i,v in pairs(lists) do
v:update(10)
end
end
@@ -676,7 +676,7 @@ function love.nogame()
for i,v in pairs(lists) do
v:update(dt)
end
love.timer.sleep(10)
end
@@ -684,18 +684,18 @@ function love.nogame()
love.draw = function()
lists.b:draw()
-- Ground
love.graphics.setColor(146, 201, 87)
love.graphics.rectangle("fill", 0, 530, 800, 70)
love.graphics.setColor(205, 227, 161)
love.graphics.rectangle("fill", 0, 520, 800, 10)
love.graphics.setColor(255, 255, 255)
lists.f:draw()
end
love.conf = function(t)
t.title = "*Tank* you for using LOVE " .. love._version_string .. " (" .. love._version_codename .. ")"
t.modules.audio = false
@@ -705,7 +705,7 @@ function love.nogame()
t.modules.native = false
t.modules.font = false
end
end
-----------------------------------------------------------
@@ -717,52 +717,52 @@ function love.errhand(msg)
if not love.graphics or not love.event then
return error_printer(msg)
end
-- Load.
love.graphics.setScissor()
love.graphics.setBackgroundColor(89, 157, 220)
local font = love.graphics.newFont(love._vera_ttf, 14)
love.graphics.setFont(font)
love.graphics.setColor(255, 255, 255, 255)
local trace = debug.traceback()
love.graphics.clear()
local err = {}
table.insert(err, "Error\n")
table.insert(err, msg.."\n\n")
for l in string.gmatch(trace, "(.-)\n") do
if not string.match(l, "boot.lua") then
l = string.gsub(l, "stack traceback:", "Traceback\n")
table.insert(err, l)
end
end
local p = table.concat(err, "\n")
p = string.gsub(p, "\t", "")
p = string.gsub(p, "%[string \"(.-)\"%]", "%1")
love.graphics.printf(p, 70, 70, love.graphics.getWidth() - 70)
love.graphics.printf(p, 70, 70, love.graphics.getWidth() - 70)
love.graphics.present()
while true do
e, a, b, c = love.event.wait()
if e == "q" then
return
return
end
if e == "kp" and a == "escape" then
return
end
end
end
+1823 -1080
View File
File diff suppressed because it is too large Load Diff
+103 -112
View File
@@ -24,118 +24,109 @@ namespace love
// [graphics.lua]
const char graphics_lua[] =
{
0x2D,0x2D,0x5B,0x5B,0x0D,0x0A,0x43,0x6F,0x70,0x79,0x72,0x69,0x67,0x68,0x74,
0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x30,0x36,0x2D,0x32,0x30,0x30,0x39,0x20,
0x4C,0x4F,0x56,0x45,0x20,0x44,0x65,0x76,0x65,0x6C,0x6F,0x70,0x6D,0x65,0x6E,
0x74,0x20,0x54,0x65,0x61,0x6D,0x0D,0x0A,0x0D,0x0A,0x54,0x68,0x69,0x73,0x20,
0x73,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x69,0x73,0x20,0x70,0x72,0x6F,
0x76,0x69,0x64,0x65,0x64,0x20,0x27,0x61,0x73,0x2D,0x69,0x73,0x27,0x2C,0x20,
0x77,0x69,0x74,0x68,0x6F,0x75,0x74,0x20,0x61,0x6E,0x79,0x20,0x65,0x78,0x70,
0x72,0x65,0x73,0x73,0x20,0x6F,0x72,0x20,0x69,0x6D,0x70,0x6C,0x69,0x65,0x64,
0x0D,0x0A,0x77,0x61,0x72,0x72,0x61,0x6E,0x74,0x79,0x2E,0x20,0x20,0x49,0x6E,
0x20,0x6E,0x6F,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,
0x74,0x68,0x65,0x20,0x61,0x75,0x74,0x68,0x6F,0x72,0x73,0x20,0x62,0x65,0x20,
0x68,0x65,0x6C,0x64,0x20,0x6C,0x69,0x61,0x62,0x6C,0x65,0x20,0x66,0x6F,0x72,
0x20,0x61,0x6E,0x79,0x20,0x64,0x61,0x6D,0x61,0x67,0x65,0x73,0x0D,0x0A,0x61,
0x72,0x69,0x73,0x69,0x6E,0x67,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,0x68,0x65,
0x20,0x75,0x73,0x65,0x20,0x6F,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6F,
0x66,0x74,0x77,0x61,0x72,0x65,0x2E,0x0D,0x0A,0x0D,0x0A,0x50,0x65,0x72,0x6D,
0x69,0x73,0x73,0x69,0x6F,0x6E,0x20,0x69,0x73,0x20,0x67,0x72,0x61,0x6E,0x74,
0x65,0x64,0x20,0x74,0x6F,0x20,0x61,0x6E,0x79,0x6F,0x6E,0x65,0x20,0x74,0x6F,
0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6F,0x66,0x74,0x77,
0x61,0x72,0x65,0x20,0x66,0x6F,0x72,0x20,0x61,0x6E,0x79,0x20,0x70,0x75,0x72,
0x70,0x6F,0x73,0x65,0x2C,0x0D,0x0A,0x69,0x6E,0x63,0x6C,0x75,0x64,0x69,0x6E,
0x67,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x72,0x63,0x69,0x61,0x6C,0x20,0x61,0x70,
0x70,0x6C,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x73,0x2C,0x20,0x61,0x6E,0x64,
0x20,0x74,0x6F,0x20,0x61,0x6C,0x74,0x65,0x72,0x20,0x69,0x74,0x20,0x61,0x6E,
0x64,0x20,0x72,0x65,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x20,
0x69,0x74,0x0D,0x0A,0x66,0x72,0x65,0x65,0x6C,0x79,0x2C,0x20,0x73,0x75,0x62,
0x6A,0x65,0x63,0x74,0x20,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x66,0x6F,0x6C,
0x6C,0x6F,0x77,0x69,0x6E,0x67,0x20,0x72,0x65,0x73,0x74,0x72,0x69,0x63,0x74,
0x69,0x6F,0x6E,0x73,0x3A,0x0D,0x0A,0x0D,0x0A,0x31,0x2E,0x20,0x54,0x68,0x65,
0x20,0x6F,0x72,0x69,0x67,0x69,0x6E,0x20,0x6F,0x66,0x20,0x74,0x68,0x69,0x73,
0x20,0x73,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x6D,0x75,0x73,0x74,0x20,
0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x6D,0x69,0x73,0x72,0x65,0x70,0x72,0x65,
0x73,0x65,0x6E,0x74,0x65,0x64,0x3B,0x20,0x79,0x6F,0x75,0x20,0x6D,0x75,0x73,
0x74,0x20,0x6E,0x6F,0x74,0x0D,0x0A,0x20,0x20,0x20,0x63,0x6C,0x61,0x69,0x6D,
0x20,0x74,0x68,0x61,0x74,0x20,0x79,0x6F,0x75,0x20,0x77,0x72,0x6F,0x74,0x65,
0x20,0x74,0x68,0x65,0x20,0x6F,0x72,0x69,0x67,0x69,0x6E,0x61,0x6C,0x20,0x73,
0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,
0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6F,0x66,0x74,0x77,
0x61,0x72,0x65,0x0D,0x0A,0x20,0x20,0x20,0x69,0x6E,0x20,0x61,0x20,0x70,0x72,
0x6F,0x64,0x75,0x63,0x74,0x2C,0x20,0x61,0x6E,0x20,0x61,0x63,0x6B,0x6E,0x6F,
0x77,0x6C,0x65,0x64,0x67,0x6D,0x65,0x6E,0x74,0x20,0x69,0x6E,0x20,0x74,0x68,
0x65,0x20,0x70,0x72,0x6F,0x64,0x75,0x63,0x74,0x20,0x64,0x6F,0x63,0x75,0x6D,
0x65,0x6E,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x77,0x6F,0x75,0x6C,0x64,0x20,
0x62,0x65,0x0D,0x0A,0x20,0x20,0x20,0x61,0x70,0x70,0x72,0x65,0x63,0x69,0x61,
0x74,0x65,0x64,0x20,0x62,0x75,0x74,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,
0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x2E,0x0D,0x0A,0x32,0x2E,0x20,0x41,
0x6C,0x74,0x65,0x72,0x65,0x64,0x20,0x73,0x6F,0x75,0x72,0x63,0x65,0x20,0x76,
0x65,0x72,0x73,0x69,0x6F,0x6E,0x73,0x20,0x6D,0x75,0x73,0x74,0x20,0x62,0x65,
0x20,0x70,0x6C,0x61,0x69,0x6E,0x6C,0x79,0x20,0x6D,0x61,0x72,0x6B,0x65,0x64,
0x20,0x61,0x73,0x20,0x73,0x75,0x63,0x68,0x2C,0x20,0x61,0x6E,0x64,0x20,0x6D,
0x75,0x73,0x74,0x20,0x6E,0x6F,0x74,0x20,0x62,0x65,0x0D,0x0A,0x20,0x20,0x20,
0x6D,0x69,0x73,0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6E,0x74,0x65,0x64,0x20,
0x61,0x73,0x20,0x62,0x65,0x69,0x6E,0x67,0x20,0x74,0x68,0x65,0x20,0x6F,0x72,
0x69,0x67,0x69,0x6E,0x61,0x6C,0x20,0x73,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,
0x2E,0x0D,0x0A,0x33,0x2E,0x20,0x54,0x68,0x69,0x73,0x20,0x6E,0x6F,0x74,0x69,
0x63,0x65,0x20,0x6D,0x61,0x79,0x20,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x72,
0x65,0x6D,0x6F,0x76,0x65,0x64,0x20,0x6F,0x72,0x20,0x61,0x6C,0x74,0x65,0x72,
0x65,0x64,0x20,0x66,0x72,0x6F,0x6D,0x20,0x61,0x6E,0x79,0x20,0x73,0x6F,0x75,
0x72,0x63,0x65,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6F,
0x6E,0x2E,0x0D,0x0A,0x2D,0x2D,0x5D,0x5D,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,
0x63,0x74,0x69,0x6F,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,
0x68,0x69,0x63,0x73,0x2E,0x6E,0x65,0x77,0x46,0x6F,0x6E,0x74,0x28,0x66,0x6F,
0x6E,0x74,0x2C,0x20,0x73,0x69,0x7A,0x65,0x29,0x0D,0x0A,0x09,0x69,0x66,0x20,
0x74,0x79,0x70,0x65,0x28,0x66,0x6F,0x6E,0x74,0x29,0x20,0x3D,0x3D,0x20,0x22,
0x6E,0x75,0x6D,0x62,0x65,0x72,0x22,0x20,0x74,0x68,0x65,0x6E,0x0D,0x0A,0x09,
0x09,0x73,0x69,0x7A,0x65,0x20,0x3D,0x20,0x66,0x6F,0x6E,0x74,0x0D,0x0A,0x09,
0x09,0x66,0x6F,0x6E,0x74,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x5F,0x76,
0x65,0x72,0x61,0x5F,0x74,0x74,0x66,0x0D,0x0A,0x09,0x65,0x6E,0x64,0x0D,0x0A,
0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,
0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x6E,0x65,0x77,0x46,0x6F,0x6E,0x74,0x31,
0x28,0x66,0x6F,0x6E,0x74,0x2C,0x20,0x73,0x69,0x7A,0x65,0x29,0x0D,0x0A,0x65,
0x6E,0x64,0x0D,0x0A,0x0D,0x0A,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,
0x68,0x69,0x63,0x73,0x2E,0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,0x20,0x3D,0x20,
0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x66,0x6F,0x6E,0x74,0x2C,0x20,
0x73,0x69,0x7A,0x65,0x29,0x0D,0x0A,0x09,0x69,0x66,0x20,0x74,0x79,0x70,0x65,
0x28,0x66,0x6F,0x6E,0x74,0x29,0x20,0x3D,0x3D,0x20,0x22,0x6E,0x75,0x6D,0x62,
0x65,0x72,0x22,0x20,0x74,0x68,0x65,0x6E,0x0D,0x0A,0x09,0x09,0x73,0x69,0x7A,
0x65,0x20,0x3D,0x20,0x66,0x6F,0x6E,0x74,0x0D,0x0A,0x09,0x09,0x66,0x6F,0x6E,
0x74,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x5F,0x76,0x65,0x72,0x61,0x5F,
0x74,0x74,0x66,0x0D,0x0A,0x09,0x65,0x6E,0x64,0x0D,0x0A,0x09,0x72,0x65,0x74,
0x75,0x72,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,
0x63,0x73,0x2E,0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,0x31,0x28,0x66,0x6F,0x6E,
0x74,0x2C,0x20,0x73,0x69,0x7A,0x65,0x29,0x0D,0x0A,0x65,0x6E,0x64,0x0D,0x0A,
0x0D,0x0A,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,
0x2E,0x70,0x72,0x69,0x6E,0x74,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,
0x6F,0x6E,0x20,0x28,0x2E,0x2E,0x2E,0x29,0x0D,0x0A,0x09,0x69,0x66,0x20,0x6E,
0x6F,0x74,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,
0x73,0x2E,0x67,0x65,0x74,0x46,0x6F,0x6E,0x74,0x28,0x29,0x20,0x74,0x68,0x65,
0x6E,0x20,0x0D,0x0A,0x09,0x09,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,
0x68,0x69,0x63,0x73,0x2E,0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,0x28,0x6C,0x6F,
0x76,0x65,0x2E,0x5F,0x76,0x65,0x72,0x61,0x5F,0x74,0x74,0x66,0x2C,0x20,0x31,
0x32,0x29,0x0D,0x0A,0x09,0x65,0x6E,0x64,0x0D,0x0A,0x09,0x6C,0x6F,0x76,0x65,
0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x70,0x72,0x69,0x6E,0x74,
0x31,0x28,0x2E,0x2E,0x2E,0x29,0x0D,0x0A,0x09,0x6C,0x6F,0x76,0x65,0x2E,0x67,
0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x70,0x72,0x69,0x6E,0x74,0x20,0x3D,
0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,
0x70,0x72,0x69,0x6E,0x74,0x31,0x0D,0x0A,0x65,0x6E,0x64,0x0D,0x0A,0x0D,0x0A,
0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x70,
0x72,0x69,0x6E,0x74,0x66,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,
0x6E,0x20,0x28,0x2E,0x2E,0x2E,0x29,0x0D,0x0A,0x09,0x69,0x66,0x20,0x6E,0x6F,
0x74,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,
0x2E,0x67,0x65,0x74,0x46,0x6F,0x6E,0x74,0x28,0x29,0x20,0x74,0x68,0x65,0x6E,
0x20,0x0D,0x0A,0x09,0x09,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,
0x69,0x63,0x73,0x2E,0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,0x28,0x6C,0x6F,0x76,
0x65,0x2E,0x5F,0x76,0x65,0x72,0x61,0x5F,0x74,0x74,0x66,0x2C,0x20,0x31,0x32,
0x29,0x0D,0x0A,0x09,0x65,0x6E,0x64,0x0D,0x0A,0x09,0x6C,0x6F,0x76,0x65,0x2E,
0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x70,0x72,0x69,0x6E,0x74,0x66,
0x31,0x28,0x2E,0x2E,0x2E,0x29,0x0D,0x0A,0x09,0x6C,0x6F,0x76,0x65,0x2E,0x67,
0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x70,0x72,0x69,0x6E,0x74,0x66,0x20,
0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,
0x2E,0x70,0x72,0x69,0x6E,0x74,0x66,0x31,0x0D,0x0A,0x65,0x6E,0x64,0x0D,0x0A,
0x0D,0x0A,
0x1B,0x4C,0x75,0x61,0x51,0x00,0x01,0x04,0x04,0x04,0x08,0x00,0x0E,0x00,0x00,
0x00,0x40,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x2E,0x6C,0x75,0x61,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x11,0x00,0x00,
0x00,0x05,0x00,0x00,0x00,0x06,0x40,0x40,0x00,0x64,0x00,0x00,0x00,0x09,0x40,
0x00,0x81,0x05,0x00,0x00,0x00,0x06,0x40,0x40,0x00,0x64,0x40,0x00,0x00,0x09,
0x40,0x80,0x81,0x05,0x00,0x00,0x00,0x06,0x40,0x40,0x00,0x64,0x80,0x00,0x00,
0x09,0x40,0x00,0x82,0x05,0x00,0x00,0x00,0x06,0x40,0x40,0x00,0x64,0xC0,0x00,
0x00,0x09,0x40,0x80,0x82,0x1E,0x00,0x80,0x00,0x06,0x00,0x00,0x00,0x04,0x05,
0x00,0x00,0x00,0x6C,0x6F,0x76,0x65,0x00,0x04,0x09,0x00,0x00,0x00,0x67,0x72,
0x61,0x70,0x68,0x69,0x63,0x73,0x00,0x04,0x08,0x00,0x00,0x00,0x6E,0x65,0x77,
0x46,0x6F,0x6E,0x74,0x00,0x04,0x08,0x00,0x00,0x00,0x73,0x65,0x74,0x46,0x6F,
0x6E,0x74,0x00,0x04,0x06,0x00,0x00,0x00,0x70,0x72,0x69,0x6E,0x74,0x00,0x04,
0x07,0x00,0x00,0x00,0x70,0x72,0x69,0x6E,0x74,0x66,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,0x02,0x00,
0x05,0x10,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x9C,0x80,
0x00,0x01,0x17,0x40,0x40,0x01,0x16,0x80,0x00,0x80,0x40,0x00,0x00,0x00,0x85,
0x80,0x00,0x00,0x06,0xC0,0x40,0x01,0x85,0x80,0x00,0x00,0x86,0x00,0x41,0x01,
0x86,0x40,0x41,0x01,0xC0,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x9D,0x00,0x80,
0x01,0x9E,0x00,0x00,0x00,0x1E,0x00,0x80,0x00,0x06,0x00,0x00,0x00,0x04,0x05,
0x00,0x00,0x00,0x74,0x79,0x70,0x65,0x00,0x04,0x07,0x00,0x00,0x00,0x6E,0x75,
0x6D,0x62,0x65,0x72,0x00,0x04,0x05,0x00,0x00,0x00,0x6C,0x6F,0x76,0x65,0x00,
0x04,0x0A,0x00,0x00,0x00,0x5F,0x76,0x65,0x72,0x61,0x5F,0x74,0x74,0x66,0x00,
0x04,0x09,0x00,0x00,0x00,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x00,0x04,
0x09,0x00,0x00,0x00,0x6E,0x65,0x77,0x46,0x6F,0x6E,0x74,0x31,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,
0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00,
0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x1A,0x00,0x00,
0x00,0x1A,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x1A,0x00,
0x00,0x00,0x1A,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x05,
0x00,0x00,0x00,0x66,0x6F,0x6E,0x74,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,
0x00,0x05,0x00,0x00,0x00,0x73,0x69,0x7A,0x65,0x00,0x00,0x00,0x00,0x00,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,
0x23,0x00,0x00,0x00,0x00,0x02,0x00,0x05,0x10,0x00,0x00,0x00,0x85,0x00,0x00,
0x00,0xC0,0x00,0x00,0x00,0x9C,0x80,0x00,0x01,0x17,0x40,0x40,0x01,0x16,0x80,
0x00,0x80,0x40,0x00,0x00,0x00,0x85,0x80,0x00,0x00,0x06,0xC0,0x40,0x01,0x85,
0x80,0x00,0x00,0x86,0x00,0x41,0x01,0x86,0x40,0x41,0x01,0xC0,0x00,0x00,0x00,
0x00,0x01,0x80,0x00,0x9D,0x00,0x80,0x01,0x9E,0x00,0x00,0x00,0x1E,0x00,0x80,
0x00,0x06,0x00,0x00,0x00,0x04,0x05,0x00,0x00,0x00,0x74,0x79,0x70,0x65,0x00,
0x04,0x07,0x00,0x00,0x00,0x6E,0x75,0x6D,0x62,0x65,0x72,0x00,0x04,0x05,0x00,
0x00,0x00,0x6C,0x6F,0x76,0x65,0x00,0x04,0x0A,0x00,0x00,0x00,0x5F,0x76,0x65,
0x72,0x61,0x5F,0x74,0x74,0x66,0x00,0x04,0x09,0x00,0x00,0x00,0x67,0x72,0x61,
0x70,0x68,0x69,0x63,0x73,0x00,0x04,0x09,0x00,0x00,0x00,0x73,0x65,0x74,0x46,
0x6F,0x6E,0x74,0x31,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,
0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
0x22,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x22,0x00,0x00,
0x00,0x22,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x23,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x66,0x6F,0x6E,0x74,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x73,0x69,0x7A,
0x65,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x00,0x00,0x03,0x04,
0x19,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x46,0x40,0xC0,0x00,0x46,0x80,0xC0,
0x00,0x5C,0x80,0x80,0x00,0x5A,0x40,0x00,0x00,0x16,0x80,0x01,0x80,0x45,0x00,
0x00,0x00,0x46,0x40,0xC0,0x00,0x46,0xC0,0xC0,0x00,0x85,0x00,0x00,0x00,0x86,
0x00,0x41,0x01,0xC1,0x40,0x01,0x00,0x5C,0x40,0x80,0x01,0x45,0x00,0x00,0x00,
0x46,0x40,0xC0,0x00,0x46,0x80,0xC1,0x00,0xA5,0x00,0x00,0x00,0x5C,0x40,0x00,
0x00,0x45,0x00,0x00,0x00,0x46,0x40,0xC0,0x00,0x85,0x00,0x00,0x00,0x86,0x40,
0x40,0x01,0x86,0x80,0x41,0x01,0x49,0x80,0x80,0x83,0x1E,0x00,0x80,0x00,0x08,
0x00,0x00,0x00,0x04,0x05,0x00,0x00,0x00,0x6C,0x6F,0x76,0x65,0x00,0x04,0x09,
0x00,0x00,0x00,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x00,0x04,0x08,0x00,
0x00,0x00,0x67,0x65,0x74,0x46,0x6F,0x6E,0x74,0x00,0x04,0x08,0x00,0x00,0x00,
0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,0x00,0x04,0x0A,0x00,0x00,0x00,0x5F,0x76,
0x65,0x72,0x61,0x5F,0x74,0x74,0x66,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x28,0x40,0x04,0x07,0x00,0x00,0x00,0x70,0x72,0x69,0x6E,0x74,0x31,0x00,0x04,
0x06,0x00,0x00,0x00,0x70,0x72,0x69,0x6E,0x74,0x00,0x00,0x00,0x00,0x00,0x19,
0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,
0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x27,0x00,0x00,
0x00,0x27,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x27,0x00,
0x00,0x00,0x27,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x29,
0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x29,0x00,0x00,0x00,
0x2A,0x00,0x00,0x00,0x2A,0x00,0x00,0x00,0x2A,0x00,0x00,0x00,0x2A,0x00,0x00,
0x00,0x2A,0x00,0x00,0x00,0x2A,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x01,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x61,0x72,0x67,0x00,0x00,0x00,0x00,0x00,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,
0x33,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x19,0x00,0x00,0x00,0x45,0x00,0x00,
0x00,0x46,0x40,0xC0,0x00,0x46,0x80,0xC0,0x00,0x5C,0x80,0x80,0x00,0x5A,0x40,
0x00,0x00,0x16,0x80,0x01,0x80,0x45,0x00,0x00,0x00,0x46,0x40,0xC0,0x00,0x46,
0xC0,0xC0,0x00,0x85,0x00,0x00,0x00,0x86,0x00,0x41,0x01,0xC1,0x40,0x01,0x00,
0x5C,0x40,0x80,0x01,0x45,0x00,0x00,0x00,0x46,0x40,0xC0,0x00,0x46,0x80,0xC1,
0x00,0xA5,0x00,0x00,0x00,0x5C,0x40,0x00,0x00,0x45,0x00,0x00,0x00,0x46,0x40,
0xC0,0x00,0x85,0x00,0x00,0x00,0x86,0x40,0x40,0x01,0x86,0x80,0x41,0x01,0x49,
0x80,0x80,0x83,0x1E,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x04,0x05,0x00,0x00,
0x00,0x6C,0x6F,0x76,0x65,0x00,0x04,0x09,0x00,0x00,0x00,0x67,0x72,0x61,0x70,
0x68,0x69,0x63,0x73,0x00,0x04,0x08,0x00,0x00,0x00,0x67,0x65,0x74,0x46,0x6F,
0x6E,0x74,0x00,0x04,0x08,0x00,0x00,0x00,0x73,0x65,0x74,0x46,0x6F,0x6E,0x74,
0x00,0x04,0x0A,0x00,0x00,0x00,0x5F,0x76,0x65,0x72,0x61,0x5F,0x74,0x74,0x66,
0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x40,0x04,0x08,0x00,0x00,0x00,
0x70,0x72,0x69,0x6E,0x74,0x66,0x31,0x00,0x04,0x07,0x00,0x00,0x00,0x70,0x72,
0x69,0x6E,0x74,0x66,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x2E,0x00,
0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,
0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2F,0x00,0x00,0x00,0x2F,0x00,0x00,0x00,
0x2F,0x00,0x00,0x00,0x2F,0x00,0x00,0x00,0x2F,0x00,0x00,0x00,0x2F,0x00,0x00,
0x00,0x2F,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x31,0x00,
0x00,0x00,0x31,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x32,
0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x00,0x00,
0x32,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,
0x00,0x61,0x72,0x67,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x11,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x1B,
0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,
0x23,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,0x00,
0x00,0x2B,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,
0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
// [/graphics.lua]