Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Toggles
- local show_hud = true
- local show_elife = true -- Enemy life
- -- Player
- local px = 0x348
- local py = 0x324
- local pl = 0x80
- local ph = 0x48
- local pe = 0x46
- local pt = 0x85
- -- Enemy
- local el = 0x4C2
- local ex = 0x348
- local ey = 0x324
- local oob = 0x3C6
- local point = 0x3FC
- local xm
- local ym
- local function hex(val)
- val = string.format("%X",val)
- return val
- end
- function findbit(p)
- return 2 ^ (p - 1)
- end
- function hasbit(x, p)
- return x % (p + p) >= p
- end
- memory.usememorydomain("PRG ROM")
- local function formatstring(adr)
- local str
- if string.len(string.format("%X",mainmemory.read_u8(adr+1))) == 1 then
- str = "0" .. string.format("%X", mainmemory.read_u8(adr+1))
- else
- str = string.format("%X", mainmemory.read_u8(adr+1))
- end
- if adr == pt then
- str = str .. ":"
- end
- if string.len(string.format("%X",mainmemory.read_u8(adr))) == 1 then
- str = str .. "0" .. string.format("%X",mainmemory.read_u8(adr))
- else
- str = str .. string.format("%X", mainmemory.read_u8(adr))
- end
- return str
- end
- local function buildbox(i)
- local offset1 = mainmemory.read_u8(0x3B4 + i) * 2
- local pointer1 = memory.read_u8(0x4AC0 + offset1) + (memory.read_u8(0x4AC1 + offset1) * 0x100)
- local offset2 = mainmemory.read_u8(0x3FC + i)
- if offset2 > 0 then
- offset2 = offset2 - 1
- end
- local offset3 = memory.read_u8(pointer1 + offset2 - 0x4000)
- local offset3 = ((offset3 * 2) + offset3) % 0x100
- local box = { memory.read_s8(0x4B7E + offset3), memory.read_u8(0x4B7F + offset3),memory.read_u8(0x4B80 + offset3) } -- yoff/yrad/xrad
- return box
- end
- local function player()
- local x = mainmemory.read_u8(px)
- local y = mainmemory.read_u8(py)
- gui.drawBox(x - 6,y + 3 - 0x0A,x + 6,y + 3 + 0x0A,0xFF0000FF,0x400000FF)
- -- Whip
- if mainmemory.read_u8(0x445) == 3 then
- local wxoff = 0x16
- local wyoff = -4
- local wxrad
- local wyrad = 4
- local woff = mainmemory.read_u8(0x434)
- if mainmemory.read_u8(0x420) == 0 then
- wxoff = wxoff * -1
- end
- wxrad = memory.read_u8(0x4BDD + woff)
- gui.drawBox(x+wxoff-wxrad,y+wyoff-wyrad,x+wxoff+wxrad,y+wyoff+wyrad,0xFFFFFFFF,0x40FFFFFF)
- end
- end
- local function objects()
- local x
- local y
- local l
- local box
- local active
- local fill
- local outl
- local isoob
- local etype
- for i = 2,19,1 do
- active = mainmemory.read_u8(0x3D8 + i)
- isoob = mainmemory.read_u8(oob + i)
- etype = mainmemory.read_u8(0x3B4 + i)
- if etype > 0 and etype ~= 0x43 and etype ~= 0x1E and etype ~= 0x2A then
- box = buildbox(i)
- x = mainmemory.read_u8(ex + i)
- y = mainmemory.read_u8(ey + i)
- l = mainmemory.read_u8(el + i)
- if hasbit(active,findbit(1)) and not hasbit(active,findbit(8)) then -- Enemy
- if bit.rshift(bit.band(isoob,0xF0),4) ~= 8 and bit.rshift(bit.band(isoob,0xF0),4) ~= 4 then -- If not offscreen
- if show_elife == true then
- gui.text((x-8) * xm,(y-28) * ym,"HP: " .. l)
- end
- end
- fill = 0x40FF0000
- outl = 0xFFFF0000
- elseif hasbit(active,findbit(8)) and hasbit(active,findbit(1)) then -- Hidden enemy, no active box
- outl = 0x40FF0000
- fill = 0x00FF0000
- if bit.rshift(bit.band(isoob,0xF0),4) ~= 8 and bit.rshift(bit.band(isoob,0xF0),4) ~= 4 then -- If not offscreen
- if show_elife == true then
- gui.text((x-8) * xm,(y-28) * ym,"HP: " .. l)
- end
- end
- elseif hasbit(active,findbit(8)) and hasbit(active,findbit(2)) then -- Simon's projectiles
- outl = 0xFF00FFFF
- fill = 0x4000FFFF
- elseif not hasbit(active,findbit(8)) and hasbit(active,(2)) then -- Enemy projectile
- outl = 0xFFFFFF00
- fill = 0x40FFFF00
- elseif hasbit(active,findbit(8)) and not hasbit(active,findbit(2)) then -- Inactive box
- outl = 0
- fill = 0
- elseif hasbit(active,findbit(7)) then -- NPC
- outl = 0xFFFF00FF
- fill = 0x40FF00FF
- elseif hasbit(active,findbit(3)) then -- Item pickups
- outl = 0xFFFFA500
- fill = 0x40FFA500
- end
- if bit.rshift(bit.band(isoob,0xF0),4) ~= 8 and bit.rshift(bit.band(isoob,0xF0),4) ~= 4 then -- If not offscreen
- gui.drawBox(x - box[3],y+box[1]+box[2],x+box[3],y+box[1]-box[2],outl,fill)
- end
- end
- end
- end
- local function HUD()
- local l = mainmemory.read_u8(pl)
- local h = 0
- local e = 0
- local t = 0
- -- Hearts
- h = formatstring(ph)
- -- Experience
- e = formatstring(pe)
- -- Time
- t = formatstring(pt)
- gui.text(14 * xm, 9 * ym, l)
- gui.text((256 - 40) * xm, 9 * ym,"H: " .. h)
- gui.text((256 - 40) * xm, 17 * ym,"E: " .. e)
- gui.text((256 - 85) * xm, 9 * ym, "T: " .. t)
- end
- local function scaler()
- xm = client.screenwidth() / 256
- ym = client.screenheight() / 224
- end
- while true do
- scaler()
- if show_hud == true then
- HUD()
- end
- player()
- objects()
- emu.frameadvance()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement