Added Congo's Caper collision box viewer
This commit is contained in:
parent
042855acac
commit
3b37b809ad
|
@ -0,0 +1,100 @@
|
|||
-- Congo Caper's Collision Box Viewer
|
||||
-- Author: Pasky13
|
||||
|
||||
camx = 0
|
||||
camy = 0
|
||||
|
||||
memory.usememorydomain("CARTROM")
|
||||
|
||||
function findbit(p)
|
||||
return 2 ^ (p - 1)
|
||||
end
|
||||
|
||||
function hasbit(x, p)
|
||||
return x % (p + p) >= p
|
||||
end
|
||||
|
||||
local function RetrieveBox(obase, switch)
|
||||
if switch == 1 then
|
||||
pointer = mainmemory.read_u8(obase + 0x19)
|
||||
elseif switch == 2 then
|
||||
pointer = mainmemory.read_u8(obase + 0x18)
|
||||
elseif switch == 3 then
|
||||
pointer = mainmemory.read_u8(obase + 0x1A)
|
||||
end
|
||||
|
||||
local pointer = bit.lshift(pointer,3)
|
||||
local base = 0x66962
|
||||
local box = {0, 0, 0, 0 }
|
||||
box[1] = memory.read_s16_le(base + pointer) -- x1
|
||||
box[2] = memory.read_s16_le(base + pointer + 4) -- y1
|
||||
box[3] = memory.read_s16_le(base + pointer + 2) -- x2
|
||||
box[4] = memory.read_s16_le(base + pointer + 6) -- y2
|
||||
return box
|
||||
end
|
||||
|
||||
local function camera()
|
||||
camx = mainmemory.read_u16_le(0x7E0427)
|
||||
camy = mainmemory.read_u16_le(0x7E0429)
|
||||
end
|
||||
|
||||
local function player()
|
||||
local x = mainmemory.read_u16_le(0x23) - camx
|
||||
local y = mainmemory.read_u16_le(0x26) - camy
|
||||
local face = mainmemory.read_u8(0x2D)
|
||||
local box
|
||||
local box = RetrieveBox(0x20,1)
|
||||
if hasbit(face,findbit(7)) then
|
||||
gui.drawBox(x - box[1],y + box[2],x - box[3],y + box[4],0xFF0000FF,0x350000FF) -- Hurt box
|
||||
box = RetrieveBox(0x20,2)
|
||||
gui.drawBox(x - box[1],y + box[2],x - box[3],y + box[4],0xFFFFFFFF,0x35FFFFFF) -- Hit box
|
||||
else
|
||||
gui.drawBox(x + box[1],y + box[2],x + box[3],y + box[4],0xFF0000FF,0x350000FF) -- Hurt box
|
||||
box = RetrieveBox(0x20,2)
|
||||
gui.drawBox(x + box[1],y + box[2],x + box[3],y + box[4],0xFFFFFFFF,0x35FFFFFF) -- Hit box
|
||||
end
|
||||
end
|
||||
|
||||
local function enemies()
|
||||
local ebase = 0x1100
|
||||
for i = 0,64,1 do
|
||||
base = ebase + (i * 0x40)
|
||||
if mainmemory.read_u8(base) > 0 then
|
||||
local x = mainmemory.read_u16_le(base + 3) - camx
|
||||
local y = mainmemory.read_u16_le(base + 6) - camy
|
||||
|
||||
|
||||
local face = mainmemory.read_u8(base + 0xD)
|
||||
local box = RetrieveBox(base,2)
|
||||
|
||||
if hasbit(face,findbit(7)) then
|
||||
gui.drawBox(x - box[1],y + box[2],x - box[3],y + box[4],0xFFFF0000,0x35FF0000) -- Hit box
|
||||
box = RetrieveBox(base,1)
|
||||
gui.drawBox(x - box[1],y + box[2],x - box[3],y + box[4],0xFF0000FF,0x350000FF) -- Hurt box
|
||||
box = RetrieveBox(base,3)
|
||||
gui.drawBox(x - box[1],y + box[2],x - box[3],y + box[4],0xFF00FF00,0x3500FF00) -- Can be jumped on box
|
||||
else
|
||||
gui.drawBox(x + box[1],y + box[2],x + box[3],y + box[4],0xFFFF0000,0x35FF0000) -- Hit box
|
||||
box = RetrieveBox(base,1)
|
||||
gui.drawBox(x + box[1],y + box[2],x + box[3],y + box[4],0xFF0000FF,0x350000FF) -- Hurt box
|
||||
box = RetrieveBox(base,3)
|
||||
gui.drawBox(x + box[1],y + box[2],x + box[3],y + box[4],0xFF00FF00,0x3500FF00) -- Can be jumped on box
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function scaler()
|
||||
xm = client.screenwidth() / 256
|
||||
ym = client.screenheight() / 224
|
||||
end
|
||||
|
||||
while true do
|
||||
scaler()
|
||||
camera()
|
||||
player()
|
||||
enemies()
|
||||
emu.frameadvance()
|
||||
end
|
Loading…
Reference in New Issue