Add Paskys Ninja Gaiden lua script to lua scripts folder
This commit is contained in:
parent
f519fa0e2d
commit
d942c68086
|
@ -0,0 +1,107 @@
|
|||
--Ninja Gaiden Hitbox Viewer
|
||||
--Author: Pasky
|
||||
|
||||
--Player
|
||||
local px = 0x0086
|
||||
local py = 0x008A
|
||||
|
||||
local projxbase = 0x4BB -- Object X speed base is 0x4C1
|
||||
local projybase = 0x4BE -- Object Y speed base ix 0x4C4
|
||||
|
||||
--Enemies
|
||||
local ex = 0x0460
|
||||
local ey = 0x0480
|
||||
local efacing = 0x440
|
||||
local etype = 0x0438
|
||||
|
||||
--Objects
|
||||
local ox = 0x4D9
|
||||
local oy = 0x4E1
|
||||
|
||||
memory.usememorydomain("PRG ROM")
|
||||
|
||||
local function Ryu()
|
||||
local x = mainmemory.read_u8(px)
|
||||
local y = mainmemory.read_u8(py)
|
||||
local yrad = mainmemory.read_u8(0x90)
|
||||
local act = mainmemory.read_u8(0x83)
|
||||
local subwep = mainmemory.read_u8(0xC9)
|
||||
local flip = 0
|
||||
local swdactive = mainmemory.read_u8(0x83)
|
||||
|
||||
if bit.band(mainmemory.read_u8(0x84),0x40) == 0x40 then
|
||||
flip = 1
|
||||
end
|
||||
--Spin slash check
|
||||
if subwep == 0x85 then
|
||||
if mainmemory.read_u8(0x83) >= 0x0C and mainmemory.read_u8(0x83) <= 0x0F then
|
||||
gui.drawBox(x+9,y-8-8,x-9,y-8-yrad,0xFFFFFF00,0x60FFFF00)
|
||||
end
|
||||
end
|
||||
--Check if Ryu is attacking with sword 7 = stand/jump, A = crouching
|
||||
if swdactive == 7 or swdactive == 0x0A then
|
||||
if flip == 0 then
|
||||
gui.drawBox(x,y-8-yrad,x+0x20,y-8-yrad+0x10,0xFFFFFFFF,0x60FFFFFF)
|
||||
else
|
||||
gui.drawBox(x,y-8-yrad,x-0x20,y-8-yrad+0x10,0xFFFFFFFF,0x60FFFFFF)
|
||||
end
|
||||
end
|
||||
-- Check spinning flame subweapon
|
||||
if subwep == 0x84 then
|
||||
if mainmemory.read_u8(0x4C8) > 0 then
|
||||
gui.drawBox(x+9,y-8-8,x-9,y-8-yrad,0xFFFFFF00,0x60FFFF00)
|
||||
end
|
||||
end
|
||||
gui.drawLine(x,y-8,x,y-8-yrad,0xFF0000FF)
|
||||
end
|
||||
|
||||
local function weapons()
|
||||
for i = 0,2,1 do
|
||||
active = bit.band(mainmemory.read_u8(0xC8),memory.read_u8(0x1E66F + i))
|
||||
if active > 0 then
|
||||
local wtype = bit.band(mainmemory.read_u8(0xC9),0x7F)
|
||||
local x = mainmemory.read_u8(projxbase + i)
|
||||
local y = mainmemory.read_u8(projybase + i)
|
||||
local xrad = memory.read_u8(0x1E605 + wtype)
|
||||
gui.drawBox(x+xrad,y-8,x-xrad,y-8-xrad,0xFFFF00FF,0x60FF00FF)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function enemies()
|
||||
for i = 0,8,1 do
|
||||
local active = bit.band(mainmemory.read_u8(0x73),memory.read_u8(0x1E66F + i))
|
||||
if active > 0 then
|
||||
local offset = mainmemory.read_u8(etype + i)
|
||||
local x = mainmemory.read_u8(ex + i)
|
||||
local y = mainmemory.read_u8(ey + i)
|
||||
local xrad = memory.readbyte(0x3300)
|
||||
local yrad = memory.readbyte(0x3400)
|
||||
gui.drawBox(x+xrad,y-8,x-xrad,y-8-yrad,0xFFFF0000,0x60FF0000)
|
||||
gui.drawLine(x,y-8,x,y-8-yrad,0xFFFFFF00)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function objects()
|
||||
for i = 0,3,1 do
|
||||
local active = bit.band(mainmemory.read_u8(0xC0),memory.read_u8(0x1E66F + i))
|
||||
if active > 0 then
|
||||
active = bit.band(mainmemory.read_u8(0x4D1 + i),8)
|
||||
if active == 0 then
|
||||
x = mainmemory.read_u8(ox + i)
|
||||
y = mainmemory.read_u8(oy + i)
|
||||
gui.drawLine(x,y-8,x,y-8-0x10,0xFF00FFF0)
|
||||
gui.drawBox(x-0x0C,y-8,x+0x0C,y-8-0x10,0xFF00FFF0,0x6000FFF0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
Ryu()
|
||||
weapons()
|
||||
enemies()
|
||||
objects()
|
||||
emu.frameadvance()
|
||||
end
|
Loading…
Reference in New Issue