106 lines
2.8 KiB
Lua
106 lines
2.8 KiB
Lua
--Author Pasky13
|
|
|
|
--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,x-9,y-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-yrad,x+0x20,y-yrad+0x10,0xFFFFFFFF,0x60FFFFFF)
|
|
else
|
|
gui.drawBox(x,y-yrad,x-0x20,y-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,x-9,y-yrad,0xFFFFFF00,0x60FFFF00)
|
|
end
|
|
end
|
|
gui.drawLine(x,y,x,y-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,x-xrad,y-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 + offset)
|
|
local yrad = memory.readbyte(0x3400 + offset)
|
|
gui.drawBox(x+xrad,y,x-xrad,y-yrad,0xFFFF0000,0x60FF0000)
|
|
gui.drawLine(x,y,x,y-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,x,y-0x10,0xFF00FFF0)
|
|
gui.drawBox(x-0x0C,y,x+0x0C,y-0x10,0xFF00FFF0,0x6000FFF0)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
while true do
|
|
Ryu()
|
|
weapons()
|
|
enemies()
|
|
objects()
|
|
emu.frameadvance()
|
|
end |