-- Author Pasky13 local camx = 0x38F local camy = 0x3CF local plife = 0x440 local px = 0x370 local py = 0x3A0 local ex = 0x370 local ey = 0x3A0 --Configurable player box local pxrad = 6 -- Only use multiples of 2 and no higher than 6 local function hex(val) val = string.format("%X",val) return val end local function draw_axis(x,y,color) gui.line(x,y-4,x,y+4,color) gui.line(x-4,y,x+4,y,color) end local function lookup(etype,i) -- this is really messy GIANT if else statement incoming local box = {0,0,0,0} -- xoff,yoff,xrad,yrad if etype == 0xF then box = {0x06,0x18,0x0C,0x18} elseif etype == 0x4A then box = {0x1C,0x0C,0x38,0x18} elseif etype == 0x1B then box = {0x08,0x08,0x10,0x10} elseif etype == 0x13 then box = {0x08,0x10,0x10,0x20} elseif etype == 0x3F then box = {0x0C,0x38,0x18,0x38} elseif etype == 0x40 then box = {0x07,0x07,0x0E,0x0E} elseif etype == 0x12 then box = {0x04,0x04,0x08,0x08} elseif etype == 0x36 then box = {0x10,0x10,0x20,0x20} elseif etype == 0x30 then box = {0x0C,0x10,0x18,0x18} elseif etype == 0x2C then box = {0x04,0x08,0x08,0x08} elseif etype == 0x2B then box = {0x08,0x08,0x10,0x18} elseif etype == 0x24 then box = {0x08,0x08,0x10,0x10} elseif etype == 0x25 then box = {0x04,0x08,0x08,0x08} elseif etype == 0x46 then box = {0x18,0x20,0x28,0x20} elseif etype == 0x1E then box = {0x08,0x08,0x10,0x08} elseif etype == 0x50 then box = {0x10,0x00,0x40,0x60} elseif etype == 0x51 then box = {0x08,0x0A,0x10,0x0A} elseif etype == 0x32 then box = {0x08,0x10,0x10,0x10} elseif etype == 0x33 then box = {0x04,0x04,0x08,0x08} elseif etype == 0x42 then box = {0x04,0x04,0x08,0x08} elseif etype == 0x26 then box = {0x09,0x0D,0x15,0x15} elseif etype == 0x27 then box = {0x10,0x18,0x20,0x20} elseif etype == 0x28 then box = {0x04,0x04,0x08,0x08} elseif etype == 0x53 then box = {0x0C,0x20,0x18,0x28} elseif etype == 0x54 then box = {0x03,0x18,0x08,0x18} elseif etype == 0x48 then box = {0x0C,0x18,0x18,0x18} elseif etype == 0x49 then box = {0x08,0x08,0x08,0x08} elseif etype == 0x4A then box = {0x1C,0x0C,0x38,0x18} elseif etype == 0x4B then box = {0x05,0x04,0x08,0x08} elseif etype == 0x3D then box = {0x06,0x06,0x0C,0x0C} elseif etype == 0x3E then box = {0x06,0x06,0x0C,0x0C} elseif etype == 0x38 then box = {0x10,0x34,0x20,0x20} elseif etype == 0x57 then box = {0x00,0x00,0x48,0x60} elseif etype == 0x4D then box = {0x10,0x00,0x20,0x38} elseif etype == 0x59 then box = {0x0C,0x10,0x18,0x18} elseif etype == 0x58 then box = {0x08,0x08,0x10,0x10} elseif etype == 0x5E then box = {0x08,0x10,0x10,0x10} elseif etype == 0x37 then box = {0x10,0x28,0x24,0x50} elseif etype == 0x5D then box = {0x04,0x04,0x08,0x08} elseif etype == 0x5C then box = {0x08,0x08,0x10,0x10} elseif etype == 0x5B then box = {0x0C,0x00,0x18,0x10} elseif etype == 0x4C then -- Mutating projectile o = mainmemory.read_u8(0x470 + i) dt = {0x08,0x0C,0x10,0x10,0x18,0x20} box = {0x04,0x08,dt[1+o],dt[4+o]} end return box end local function player() local pos = mainmemory.read_u8(0x300) local cx = mainmemory.read_u8(camx) + (mainmemory.read_u8(camx + 0x10) * 256) local cy = mainmemory.read_u8(camy) + (mainmemory.read_u8(camy + 0x10) * 256) local x = mainmemory.read_u8(px) + (mainmemory.read_u8(px + 0x10) * 256) - cx local y = mainmemory.read_u8(py) + (mainmemory.read_u8(py + 0x10) * 256) - cy local pyrad = 0x1C if pos == 0x03 or pos == 0x06 then pyrad = 0x13 end gui.drawBox(x - (pxrad / 2), y, x + (pxrad / 2), y - pyrad,0xFF0000FF,0x350000FF) end local function enemy() local cx = mainmemory.read_u8(camx) + (mainmemory.read_u8(camx + 0x10) * 256) local cy = mainmemory.read_u8(camy) + (mainmemory.read_u8(camy + 0x10) * 256) local etype local box = {0,0,0,0} for i = 6, 14, 1 do etype = mainmemory.read_u8(0x300 + i) local fill = 0x40FF0000 local outl = 0xFFFF0000 if etype ~= 0xFF then local x = mainmemory.read_u8(ex + i) + (mainmemory.read_u8(ex + i + 0x10) * 256) - cx local y = mainmemory.read_u8(ey + i) + (mainmemory.read_u8(ey + i + 0x10) * 256) - cy box = lookup(etype,i) gui.drawBox(x - box[1],y-box[2],x-box[1]+box[3] - pxrad,y-box[2]+box[4],outl,fill) if etype == 0x3F then-- 1st boss --Draw his vuln box local fill = 0x40FFFF00 local outl = 0xFFFFFF00 box = {0x0C,0x38,0x18,0x18} gui.drawBox(x - box[1],y-box[2],x-box[1]+box[3] - pxrad,y-box[2]+box[4],outl, fill) end end end end while true do player() enemy() emu.frameadvance() end