Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local px = 0x38C
- local py = 0x354
- local pl = 0x45
- local ex = 0x38C
- local ey = 0x354
- memory.usememorydomain("PRG ROM")
- local function whip()
- local box = {0,0,0} -- xoff/yoff/xrad/yrad
- local wtype = mainmemory.read_u8(0x70)
- local pos = bit.band(mainmemory.read_u8(0x434),0x7F) -- Simons acting positon (jumping/crouching, etc...)
- box[1] = memory.read_s8(0x1E45D + wtype)
- wtype = wtype * 2
- box[2] = memory.read_s8(0x1E460 + pos)
- box[3] = memory.read_u8(0x1E464 + wtype)
- box[4] = memory.read_u8(0x1E465 + wtype)
- if mainmemory.read_u8(0x450) == 1 then -- Simon is facing left
- box[1] = box[1] * -1
- box[3] = box[3] * -1
- end
- return box
- end
- local function player()
- local x = mainmemory.read_u8(px)
- local y = mainmemory.read_u8(py)
- local box
- gui.drawBox(x+4,y+mainmemory.read_u8(0x5F),x-4,y-mainmemory.read_u8(0x5F),0xFF0000FF,0x400000FF)
- if mainmemory.read_u8(0x568) == 0x11 then -- Whip is active
- box = whip()
- gui.drawBox(x+box[1]+box[3],y+box[2]+box[4],x+box[1]-box[3],y+box[2]-box[4],0xFFFFFFFF,0x40FFFFFF)
- end
- end
- local function buildbox(i)
- local box = {0,0} -- xrad/yrad
- local dracform = mainmemory.read_u8(0x434 + i)
- if offset == 0x1D then
- dracform = mainmemory.read_u8(0x7A)
- if dracform == 1 then
- offset = 0x30 * 2
- else
- offset = offset * 2
- end
- else
- offset = offset * 2
- end
- box = { memory.read_u8(0x1E46A + offset),memory.read_u8(0x1E46B + offset) }
- return box
- end
- local function getcolor(x)
- local color = {0,0} -- Fill/Outline
- if x >= 0x28 and x < 0x30 then
- color = {0x40FFA500,0xFFFFA500}
- elseif x >= 0x30 and x <= 0x35 then
- return color
- elseif x == 0x17 then -- Simon subweapon
- color = {0x4000FFFF,0xFF00FFFF}
- elseif x == 0x1D then -- dracula invuln box
- color = {0x40FF0000,0xFFFFFFFF}
- else
- color = {0x40FF0000,0xFFFF0000}
- end
- return color
- end
- local function objects()
- local x
- local y
- local active
- local box
- local etype
- local c
- local oob
- for i = 3,20,1 do
- oob = mainmemory.read_u8(0x300 + i)
- if oob == 0 or oob == 0x80 then
- box = buildbox(i)
- etype = mainmemory.read_u8(0x434 + i)
- c = getcolor(etype)
- x = mainmemory.read_u8(ex + i)
- y = mainmemory.read_u8(ey + i)
- gui.drawBox(x+box[1],y+box[2],x-box[1],y-box[2],c[2],c[1])
- if etype == 0x1D then -- if dracula's invuln box
- gui.drawLine(x+box[1],y,x-box[1],y,0xFFFFFFFF)
- gui.drawLine(x,y+box[2],x,y-box[2],0xFFFFFFFF)
- end
- end
- end
- end
- while true do
- player()
- objects()
- emu.frameadvance()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement