Crystalis collision box viewer
This commit is contained in:
parent
a4a88ff139
commit
72b78e8dc9
|
@ -0,0 +1,101 @@
|
|||
local camx
|
||||
local camy
|
||||
local HPDISPLAY = true
|
||||
|
||||
memory.usememorydomain("PRG ROM")
|
||||
|
||||
local function camera()
|
||||
camx = mainmemory.read_u8(0x02)
|
||||
if mainmemory.read_u8(0x03) > 0x7F then
|
||||
camx = mainmemory.read_s8(0x02)
|
||||
else
|
||||
camx = camx + mainmemory.read_u8(0x03) * 256
|
||||
end
|
||||
camy = mainmemory.read_u8(0x04)
|
||||
if mainmemory.read_u8(0x05) > 0x7F then
|
||||
camy = mainmemory.read_s8(0x04) + 17
|
||||
else
|
||||
camy = camy + mainmemory.read_u8(0x05) * 239
|
||||
end
|
||||
end
|
||||
|
||||
local function player()
|
||||
local x = mainmemory.read_u8(0x70) + mainmemory.read_u8(0x90) * 256 - camx
|
||||
local y = mainmemory.read_u8(0xB0) + mainmemory.read_u8(0xD0) * 239 - camy
|
||||
local x2 = mainmemory.read_u8(0x5C0)
|
||||
local y2 = mainmemory.read_u8(0x5E0)
|
||||
local invuln = mainmemory.read_u8(0x71A)
|
||||
|
||||
if bit.band(mainmemory.read_u8(0x3A1),0xF0) ~= 0 and invuln == 0 then -- If box exists
|
||||
local off1 = bit.band(mainmemory.read_u8(0x3A1),0xF) * 4
|
||||
local off2 = bit.bor(bit.band(mainmemory.read_u8(0x421),0x40),off1)
|
||||
|
||||
local xoff = memory.read_s8(0x35691 + off2)
|
||||
local xrad = memory.read_u8(0x35692 + off2)
|
||||
local yoff = memory.read_s8(0x35693 + off2)
|
||||
local yrad = memory.read_u8(0x35694 + off2)
|
||||
|
||||
gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,0xFF0000FF,0x300000FF)
|
||||
end
|
||||
|
||||
|
||||
--Player's attacks
|
||||
for i = 2,4,1 do
|
||||
|
||||
if mainmemory.read_u8(0x4A0 + i) ~= 0 and i ~= 3 then
|
||||
x = mainmemory.read_u8(0x70 + i) + mainmemory.read_u8(0x90 + i) * 256 - camx
|
||||
y = mainmemory.read_u8(0xB0 + i) + mainmemory.read_u8(0xD0 + i) * 239 - camy
|
||||
x2 = mainmemory.read_u8(0x5C0 + i)
|
||||
y2 = mainmemory.read_u8(0x5E0 + i)
|
||||
|
||||
off1 = bit.band(mainmemory.read_u8(0x3A0 + i),0xF) * 4
|
||||
off2 = bit.bor(bit.band(mainmemory.read_u8(0x422),0x40),off1)
|
||||
|
||||
xoff = memory.read_s8(0x35691 + off2)
|
||||
xrad = memory.read_u8(0x35692 + off2)
|
||||
yoff = memory.read_s8(0x35693 + off2)
|
||||
yrad = memory.read_u8(0x35694 + off2)
|
||||
|
||||
gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function enemies()
|
||||
for i = 5,0x1F,1 do
|
||||
|
||||
if mainmemory.read_u8(0x4A0 + i) ~= 0 then
|
||||
local x = mainmemory.read_u8(0x70 + i) + mainmemory.read_u8(0x90 + i) * 256 - camx
|
||||
local y = mainmemory.read_u8(0xB0 + i) + mainmemory.read_u8(0xD0 + i) * 239 - camy
|
||||
local x2 = mainmemory.read_u8(0x5C0 + i)
|
||||
local y2 = mainmemory.read_u8(0x5E0 + i)
|
||||
local hp = mainmemory.read_u8(0x3C0 + i)
|
||||
|
||||
if x < 256 and x > 0 and y < 239 and y > 0 then
|
||||
if bit.band(mainmemory.read_u8(0x3A0 + i),0xF0) ~= 0 then -- If box exists
|
||||
local off1 = bit.band(mainmemory.read_u8(0x3A0 + i),0xF) * 4
|
||||
local off2 = bit.bor(bit.band(mainmemory.read_u8(0x420 + i),0x40),off1)
|
||||
|
||||
|
||||
local xoff = memory.read_s8(0x35691 + off2)
|
||||
local xrad = memory.read_u8(0x35692 + off2)
|
||||
local yoff = memory.read_s8(0x35693 + off2)
|
||||
local yrad = memory.read_u8(0x35694 + off2)
|
||||
|
||||
gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,0xFFFF0000,0x30FF0000)
|
||||
|
||||
if HPDISPLAY == true then
|
||||
gui.text(x,y,"HP: " .. hp)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
camera()
|
||||
player()
|
||||
enemies()
|
||||
emu.frameadvance()
|
||||
end
|
Loading…
Reference in New Issue