From d942c680863155aedd4b532e433e5c1700a13d63 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 2 Sep 2012 03:24:36 +0000 Subject: [PATCH] Add Paskys Ninja Gaiden lua script to lua scripts folder --- .../output/Lua/NinjaGaiden_Hitbox.lua | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua diff --git a/BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua b/BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua new file mode 100644 index 0000000000..7a4ae5b539 --- /dev/null +++ b/BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua @@ -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 \ No newline at end of file