Added contra force (NES) collision box viewer.
This commit is contained in:
parent
a0ea09a226
commit
ae9b791844
|
@ -0,0 +1,128 @@
|
|||
----------TOGGLES----------
|
||||
|
||||
DISPLAY_ENEMY_HP = true
|
||||
--------END TOGGLES--------
|
||||
|
||||
xbase = 0x64E
|
||||
ybase = 0x668
|
||||
abase = 0x682
|
||||
hpbase = 0x796
|
||||
offscreen = 0x600
|
||||
xm = 0
|
||||
ym = 0
|
||||
--P1X
|
||||
-- animation 0x61A
|
||||
|
||||
local proj_fill = 0xFF00FF00
|
||||
local proj_outl = 0x3000FF00
|
||||
|
||||
local enemy_fill = 0xFFFF0000
|
||||
local enemy_outl = 0x30FF0000
|
||||
|
||||
local player_fill = 0xFF0000FF
|
||||
local player_outl = 0x300000FF
|
||||
|
||||
local pproj_fill = 0xFFFFFFFF
|
||||
local pproj_oult = 0x30FFFFFF
|
||||
|
||||
memory.usememorydomain("System Bus")
|
||||
|
||||
local function hex(val)
|
||||
val = string.format("%X",val)
|
||||
return val
|
||||
end
|
||||
|
||||
local function player()
|
||||
local active = mainmemory.read_u8(abase)
|
||||
if active > 0 then
|
||||
local offset = bit.band(mainmemory.read_u8(0x720),0x3F) * 2
|
||||
local xrad = memory.read_u8(0xF94A + offset)
|
||||
local yrad = memory.read_u8(0xF94B + offset)
|
||||
local hp = mainmemory.read_u8(hpbase)
|
||||
local x = mainmemory.read_u8(xbase)
|
||||
local y = mainmemory.read_u8(ybase)
|
||||
gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, player_fill, player_outl)
|
||||
end
|
||||
end
|
||||
|
||||
local function player_proj()
|
||||
for i = 10,11,1 do
|
||||
local active = mainmemory.read_u8(abase + i)
|
||||
local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0)
|
||||
|
||||
if oscr == 0x20 then
|
||||
oscr = -255
|
||||
elseif oscr == 0x10 then
|
||||
oscr = 255
|
||||
end
|
||||
|
||||
if active > 0 then
|
||||
local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2
|
||||
local xrad = memory.read_u8(0xF94A + offset)
|
||||
local yrad = memory.read_u8(0xF94B + offset)
|
||||
local x = mainmemory.read_u8(xbase + i) + oscr
|
||||
local y = mainmemory.read_u8(ybase + i)
|
||||
gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, pproj_fill, pproj_outl)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local function enemy()
|
||||
for i = 2,8,1 do
|
||||
local active = mainmemory.read_u8(abase + i)
|
||||
local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0)
|
||||
if oscr == 0x20 then
|
||||
oscr = -255
|
||||
elseif oscr == 0x10 then
|
||||
oscr = 255
|
||||
end
|
||||
if active > 0 then
|
||||
local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2
|
||||
local xrad = memory.read_u8(0xF94A + offset)
|
||||
local yrad = memory.read_u8(0xF94B + offset)
|
||||
local hp = mainmemory.read_u8(hpbase + i)
|
||||
local x = mainmemory.read_u8(xbase + i) + oscr
|
||||
local y = mainmemory.read_u8(ybase + i)
|
||||
gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, enemy_fill, enemy_outl)
|
||||
if DISPLAY_ENEMY_HP == true then
|
||||
gui.text(x * xm,y * ym,hp)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function e_proj()
|
||||
local pbase = 0x720
|
||||
for i = 18,22,1 do
|
||||
local active = mainmemory.read_u8(abase + i)
|
||||
local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0)
|
||||
if oscr == 0x20 then
|
||||
oscr = -255
|
||||
elseif oscr == 0x10 then
|
||||
oscr = 255
|
||||
end
|
||||
if active > 0 then
|
||||
local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2
|
||||
local xrad = memory.read_u8(0xF94A + offset)
|
||||
local yrad = memory.read_u8(0xF94B + offset)
|
||||
local x = mainmemory.read_u8(xbase + i) + oscr
|
||||
local y = mainmemory.read_u8(ybase + i)
|
||||
gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, proj_fill, proj_outl)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function scaler()
|
||||
xm = client.screenwidth() / 256
|
||||
ym = client.screenheight() / 224
|
||||
end
|
||||
|
||||
while true do
|
||||
scaler()
|
||||
player()
|
||||
enemy()
|
||||
e_proj()
|
||||
player_proj()
|
||||
emu.frameadvance()
|
||||
end
|
Loading…
Reference in New Issue