local TILE_ADDR = 0x00A0
-- drawing
local CANVAS_WIDTH = 600
local CANVAS_HEIGHT = 450
local ROOM_SIZE = 12
local ROOM_GAP = 0
local TILE_SIZE = ROOM_SIZE * 2 + ROOM_GAP * 1
local X_OFFSET = 6
local Y_OFFSET = 50
local DRAW_POS = {
[1] = { x = 0, y = 0 },
[2] = { x = 1, y = 0 },
[3] = { x = 0, y = 1 },
[4] = { x = 1, y = 1 }
}
-- colors
local HM = 0xC0B8A8 -- houses
local HC = 0xA89868 -- hyrule castle
local AT = HC -- aga's tower
local EX = 0x706890 -- escape
local SY = 0x204020 -- sanctuary
local CV = 0x684830 -- caves
local EP = 0x80A870 -- eastern palace
local DP = 0x807838 -- desert palace
local TH = 0x987870 -- tower of hera
local PD = 0x909090 -- palace of darkness
local SP = 0x7890F8 -- swamp palace
local SW = 0x605030 -- skull woods
local TT = 0x787888 -- thieves town
local IP = 0xA8E0E8 -- ice palace
local MM = 0x408068 -- misery mire
local TR = 0x583028 -- turtle rock
local GT = 0xA09058 -- ganon's tower
local GE = 0x984848 -- empty gt TILEs
local EM = 0x606060 -- empty TILEs
local COMPLETE = 0xFFFF0000
local VISITED = 0xFFFFFF00
local UNVISITED = 0xFFAAAAAA
local CURRENT = 0xFF00FFFF
local BLACK = 0xFF000000
local WHITE = 0xFFFFFFFF
local OPAQUE = 0xFF000000
local TRANS = 0x99000000
local function get_color(color, opacity)
return bit.bor(color, opacity)
end -- end get_color
-- room number from quadrant variables
local R1, R2, R3, R4 = 1, 2, 3, 4
local TILES_TO_VALS = {
['RX'] = {
R1 = { A9 = 0x00, AA = 0x00 },
R2 = { A9 = 0x01, AA = 0x00 },
R3 = { A9 = 0x00, AA = 0x02 },
R4 = { A9 = 0x01, AA = 0x02 }
},
['A9AA'] = {
[0x00] = {
[0x00] = R1,
[0x02] = R3
},
[0x01] = {
[0x00] = R2,
[0x02] = R4
}
}
}
local function stop_running()
running = false
end -- stop_running
local function end_thing()
the_canvas.Dispose()
stop_running()
end -- end_thing
local function initialize()
running = true
memory.usememorydomain("WRAM")
the_canvas = gui.createcanvas(CANVAS_WIDTH, CANVAS_HEIGHT)
the_canvas.set_TopMost(true)
the_canvas.SetTitle("Map completion")
the_canvas.add_FormClosing(stop_running)
the_canvas.set_TopMost(true)
event.onexit(end_thing)
end -- end initialize
--[==[
Format:
[0x##] = { -- room id
c = XX -- color
p = AABA -- room pattern
r = { p } -- pattern as table
v = 0100 -- rooms reachable without glitches
x = { v } -- reachability as table; no dupes
}
]==]
local TILE_DATA = {
[0x00] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0x01] = { c = HC, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1100, x = { A = 1, B = 0 } },
[0x02] = { c = SY, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x03] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x04] = { c = TR, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x05] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x06] = { c = SP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x07] = { c = TH, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x08] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0011, x = { A = 0, B = 0, C = 1, D = 1 } },
[0x09] = { c = PD, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1100, x = { A = 1, B = 1, C = 0, D = 0 } },
[0x0A] = { c = PD, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x0B] = { c = PD, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x0C] = { c = GT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x0D] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x0E] = { c = IP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x0F] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x10] = { c = GT, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x11] = { c = EX, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x12] = { c = SY, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x13] = { c = TR, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x14] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x15] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x16] = { c = SP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x17] = { c = TH, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x18] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0x19] = { c = PD, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x1A] = { c = PD, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x1B] = { c = PD, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1110, x = { A = 1, B = 1, C = 0 } },
[0x1C] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x1D] = { c = GT, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1100, x = { A = 1, B = 0 } },
[0x1E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0111, x = { A = 0, B = 1, C = 1, D = 1 } },
[0x1F] = { c = IP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x20] = { c = AT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x21] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x22] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 0011, x = { A = 0, B = 1 } },
[0x23] = { c = TR, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0x24] = { c = TR, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x25] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x26] = { c = SP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x27] = { c = TH, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x28] = { c = SP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x29] = { c = SW, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0x2A] = { c = PD, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x2B] = { c = PD, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1011, x = { A = 1, B = 0, C = 1 } },
[0x2C] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x2D] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x2E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0x2F] = { c = CV, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1011, x = { A = 1, B = 0, C = 1 } },
[0x30] = { c = AT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1010, x = { A = 1, B = 0, C = 1, D = 0 } },
[0x31] = { c = TH, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x32] = { c = EX, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x33] = { c = DP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x34] = { c = SP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x35] = { c = SP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x36] = { c = SP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x37] = { c = SP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x38] = { c = SP, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0x39] = { c = SW, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x3A] = { c = PD, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x3B] = { c = PD, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0x3C] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x3D] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x3E] = { c = IP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 0111, x = { A = 0, B = 1, C = 1 } },
[0x3F] = { c = IP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x40] = { c = AT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1011, x = { A = 1, B = 0, C = 1 } },
[0x41] = { c = HC, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x42] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1100, x = { A = 1, B = 0 } },
[0x43] = { c = DP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1101, x = { A = 1, B = 0, C = 1 } },
[0x44] = { c = TT, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x45] = { c = TT, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x46] = { c = SP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x47] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x48] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x49] = { c = SW, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x4A] = { c = PD, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x4B] = { c = PD, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x4C] = { c = GT, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x4D] = { c = GT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x4E] = { c = IP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1100, x = { A = 1, B = 1, C = 0 } },
[0x4F] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0x50] = { c = HC, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x51] = { c = HC, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x52] = { c = HC, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x53] = { c = DP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x54] = { c = SP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x55] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x56] = { c = SW, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x57] = { c = SW, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x58] = { c = SW, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x59] = { c = SW, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x5A] = { c = PD, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0x5B] = { c = GT, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x5C] = { c = GT, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1101, x = { A = 1, B = 0, C = 1 } },
[0x5D] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1110, x = { A = 1, B = 1, C = 1, D = 0 } },
[0x5E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0111, x = { A = 0, B = 1, C = 1, D = 1 } },
[0x5F] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x60] = { c = HC, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x61] = { c = HC, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x62] = { c = HC, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x63] = { c = DP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1010, x = { A = 1, B = 0, C = 1 } },
[0x64] = { c = TT, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x65] = { c = TT, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0x66] = { c = SP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x67] = { c = SW, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x68] = { c = SW, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x69] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x6A] = { c = PD, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x6B] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x6C] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1011, x = { A = 1, B = 0, C = 1, D = 1 } },
[0x6D] = { c = GT, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1010, x = { A = 1, B = 0, C = 1 } },
[0x6E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0x6F] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x70] = { c = EX, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1000, x = { A = 1, B = 0, C = 0, D = 0 } },
[0x71] = { c = EX, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1011, x = { A = 1, B = 0, C = 1, D = 1 } },
[0x72] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x73] = { c = DP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x74] = { c = DP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0x75] = { c = DP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x76] = { c = SP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x77] = { c = TH, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x78] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x79] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x7A] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x7B] = { c = GT, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x7C] = { c = GT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x7D] = { c = GT, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x7E] = { c = IP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 0111, x = { A = 0, B = 1, C = 1 } },
[0x7F] = { c = IP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1010, x = { A = 1, B = 0, C = 1 } },
[0x80] = { c = EX, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1100, x = { A = 1, B = 0 } },
[0x81] = { c = EX, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x82] = { c = EX, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x83] = { c = DP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x84] = { c = DP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x85] = { c = DP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x86] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x87] = { c = TH, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x88] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x89] = { c = EP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1100, x = { A = 1, B = 0 } },
[0x8A] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x8B] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x8C] = { c = GT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0x8D] = { c = GT, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x8E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0x8F] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x90] = { c = MM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0x91] = { c = MM, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x92] = { c = MM, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x93] = { c = MM, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x94] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x95] = { c = GT, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0x96] = { c = GT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1011, x = { A = 1, B = 0, C = 1 } },
[0x97] = { c = MM, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x98] = { c = MM, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 0011, x = { A = 0, B = 1 } },
[0x99] = { c = EP, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 0111, x = { A = 0, B = 1, C = 1 } },
[0x9A] = { c = GE, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0x9B] = { c = GT, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x9C] = { c = GT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0x9D] = { c = GT, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0x9E] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0111, x = { A = 0, B = 1, C = 1, D = 1 } },
[0x9F] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0xA0] = { c = MM, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1100, x = { A = 1, B = 1, C = 0 } },
[0xA1] = { c = MM, p = 'AABA', r = { 'A', 'A', 'B', 'A' }, v = 1101, x = { A = 1, B = 0 } },
[0xA2] = { c = MM, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xA3] = { c = MM, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0xA4] = { c = TR, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0xA5] = { c = GT, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xA6] = { c = GT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xA7] = { c = TH, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1000, x = { A = 1, B = 0, C = 0 } },
[0xA8] = { c = EP, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xA9] = { c = EP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xAA] = { c = EP, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xAB] = { c = TT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0xAC] = { c = TT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0xAD] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xAE] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0xAF] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1000, x = { A = 1, B = 0, C = 0, D = 0 } },
[0xB0] = { c = AT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0xB1] = { c = MM, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xB2] = { c = MM, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xB3] = { c = MM, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1010, x = { A = 1, B = 0, C = 1 } },
[0xB4] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xB5] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xB6] = { c = TR, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0xB7] = { c = TR, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0xB8] = { c = EP, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0xB9] = { c = EP, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xBA] = { c = EP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1100, x = { A = 1, B = 1, C = 0, D = 0 } },
[0xBB] = { c = TT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xBC] = { c = TT, p = 'ABCB', r = { 'A', 'B', 'C', 'B' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xBD] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xBE] = { c = IP, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 0101, x = { A = 0, B = 1, C = 1 } },
[0xBF] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0110, x = { A = 0, B = 1, C = 1, D = 0 } },
[0xC0] = { c = AT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xC1] = { c = MM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0xC2] = { c = MM, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xC3] = { c = MM, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xC4] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xC5] = { c = TR, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0xC6] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xC7] = { c = TR, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xC8] = { c = EP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0xC9] = { c = EP, p = 'AABB', r = { 'A', 'A', 'B', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xCA] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xCB] = { c = TT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xCC] = { c = TT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xCD] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xCE] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0xCF] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xD0] = { c = AT, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
[0xD1] = { c = MM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1111, x = { A = 1, B = 1, C = 1, D = 1 } },
[0xD2] = { c = MM, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xD3] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xD4] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xD5] = { c = TR, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1010, x = { A = 1, B = 0 } },
[0xD6] = { c = TR, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xD7] = { c = EM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xD8] = { c = EP, p = 'ABAC', r = { 'A', 'B', 'A', 'C' }, v = 0101, x = { A = 0, B = 1, C = 1 } },
[0xD9] = { c = EP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0011, x = { A = 0, B = 1, C = 1 } },
[0xDA] = { c = EP, p = 'AABC', r = { 'A', 'A', 'B', 'C' }, v = 0010, x = { A = 0, B = 1, C = 0 } },
[0xDB] = { c = TT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xDC] = { c = TT, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xDD] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xDE] = { c = IP, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0100, x = { A = 0, B = 1, C = 0, D = 0 } },
[0xDF] = { c = CV, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 0011, x = { A = 0, B = 0, C = 1 } },
[0xE0] = { c = AT, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 1110, x = { A = 1, B = 1, C = 1, D = 0 } },
[0xE1] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xE2] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xE3] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0111, x = { A = 0, B = 1, C = 1, D = 1 } },
[0xE4] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xE5] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xE6] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xE7] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xE8] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xE9] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xEA] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xEB] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0xEC] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xED] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 1111, x = { A = 1, B = 1 } },
[0xEE] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xEF] = { c = CV, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 0111, x = { A = 0, B = 1, C = 1 } },
[0xF0] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xF1] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xF2] = { c = HM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0xF3] = { c = HM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0xF4] = { c = HM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0001, x = { A = 0, B = 0, C = 0, D = 1 } },
[0xF5] = { c = HM, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0010, x = { A = 0, B = 0, C = 1, D = 0 } },
[0xF6] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xF7] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xF8] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xF9] = { c = CV, p = 'ABBB', r = { 'A', 'B', 'B', 'B' }, v = 0111, x = { A = 0, B = 1 } },
[0xFA] = { c = CV, p = 'AAAA', r = { 'A', 'A', 'A', 'A' }, v = 1111, x = { A = 1 } },
[0xFB] = { c = CV, p = 'ABBB', r = { 'A', 'B', 'B', 'B' }, v = 0111, x = { A = 0, B = 1 } },
[0xFC] = { c = CV, p = 'ABCD', r = { 'A', 'B', 'C', 'D' }, v = 0000, x = { A = 0, B = 0, C = 0, D = 0 } },
[0xFD] = { c = CV, p = 'ABAA', r = { 'A', 'B', 'A', 'A' }, v = 1111, x = { A = 1, B = 1 } },
[0xFE] = { c = CV, p = 'ABAB', r = { 'A', 'B', 'A', 'B' }, v = 0101, x = { A = 0, B = 1 } },
[0xFF] = { c = CV, p = 'ABCC', r = { 'A', 'B', 'C', 'C' }, v = 1111, x = { A = 1, B = 1, C = 1 } },
}
-- room tracking
local prev = nil
local prev_quad = nil
local check_map = false
-- drawing
local function draw_tile(tile, quad_id)
if tile == nil then return end
local x = (bit.band(tile, 0x0F) * TILE_SIZE + 1) + X_OFFSET
local y = ((bit.band(tile, 0xF0) / 16) * TILE_SIZE + 1) + Y_OFFSET
the_canvas.DrawRectangle(x, y, TILE_SIZE, TILE_SIZE, BLACK, BLACK) -- clear only this section
local d = TILE_DATA[tile]
local r = d.r
local room_completion_colors = { 0, 0, 0, 0 }
for i=1, 4 do
room_completion_colors[i] =
quad_id == TILE_DATA[tile].r[i] and CURRENT
or UNVISITED and OPAQUE or TRANS
the_canvas.DrawRectangle(
x + (ROOM_SIZE) * DRAW_POS[i].x,
y + (ROOM_SIZE) * DRAW_POS[i].y,
ROOM_SIZE,
ROOM_SIZE,
nil,
room_completion_colors[i]
)
if TILE_DATA[tile].x[r[i]] == 0 then
--[[the_canvas.DrawText(
x + (ROOM_SIZE) * DRAW_POS[i].x + 1,
y + (ROOM_SIZE) * DRAW_POS[i].y - 1,
"X",
0x55FFFFFF,
0
)]]
end
end
local C0
if quad_id then
C0 = CURRENT
else
C0 = UNVISITED
end
-- vertical separators
local C1 = r[1] == r[2] and room_completion_colors[1] or C0
local C2 = r[3] == r[4] and room_completion_colors[3] or C0
the_canvas.DrawLine(x + ROOM_SIZE + ROOM_GAP, y + ROOM_GAP,
x + ROOM_SIZE + ROOM_GAP, y + ROOM_SIZE,
C1)
the_canvas.DrawLine(x + ROOM_GAP + ROOM_SIZE, y + ROOM_GAP + ROOM_GAP + ROOM_SIZE,
x + ROOM_GAP + ROOM_SIZE, y + ROOM_SIZE + ROOM_SIZE,
C2)
-- horizontal separators
local C3 = r[1] == r[3] and room_completion_colors[1] or C0
local C4 = r[2] == r[4] and room_completion_colors[2] or C0
the_canvas.DrawLine(x + ROOM_GAP + ROOM_GAP, y + ROOM_GAP + ROOM_SIZE,
x + ROOM_SIZE, y + ROOM_GAP + ROOM_SIZE,
C3)
the_canvas.DrawLine(x + ROOM_GAP + ROOM_GAP + ROOM_SIZE, y + ROOM_GAP + ROOM_SIZE,
x + ROOM_SIZE + ROOM_SIZE, y + ROOM_GAP + ROOM_SIZE,
C4)
local C5 = d.p == 'AAAA' and C1 or C0
the_canvas.DrawPixel(x + ROOM_GAP + ROOM_SIZE, y + ROOM_GAP + ROOM_SIZE, BLACK)
the_canvas.DrawPixel(x + ROOM_GAP + ROOM_SIZE, y + ROOM_GAP + ROOM_SIZE, C5)
the_canvas.DrawRectangle(x, y, TILE_SIZE, TILE_SIZE, C0, nil)
end -- end draw_tile
local function draw_all()
the_canvas.Clear(BLACK)
for i=0, 0xFF do
draw_tile(i)
end
the_canvas.Refresh()
end -- end draw_all
local function draw_minimap()
the_canvas.DrawRectangle(405, 5, 150, 150, BLACK, BLACK)
the_canvas.DrawRectangle(419, 19, 128, 128, CURRENT, BLACK)
local linky = memory.read_u16_le(0x20) % 0x200
local linkx = memory.read_u16_le(0x22) % 0x200
the_canvas.DrawRectangle(420+(linkx/4), 20+(linky/4), 4, 4, VISITED)
end
-- main
local function do_main()
while running do
emu.frameadvance()
local uw_flag = memory.readbyte(0x00A1)
local ow_flag = memory.readbyte(0x001B)
if not (uw_flag == 0x00 and ow_flag == 0x01) then
if check_map and prev ~= nil then
draw_tile(prev)
prev = nil
end
check_map = false
else
if memory.readbyte(0x0010) == 0x07 then
check_map = true
else
check_map = false
draw_tile(prev)
prev = nil
end
end
if check_map then
local tile = memory.readbyte(TILE_ADDR)
local A9 = memory.readbyte(0xA9)
local AA = memory.readbyte(0xAA)
local quadrant = TILES_TO_VALS.A9AA[A9][AA]
local quad_id = TILE_DATA[tile].r[quadrant]
if quadrant ~= prev_quad or tile ~= prev then
prev_quad = quadrant
end
draw_tile(tile, quad_id)
if tile ~= prev then
draw_tile(prev)
prev = tile
end
end
draw_minimap()
the_canvas.Refresh()
end
end -- end do_main
initialize()
draw_all()
do_main()