From 34da5a0bb14284a2764133e617a6c0c2d42814a0 Mon Sep 17 00:00:00 2001 From: pasky1382 Date: Tue, 4 Sep 2012 23:35:59 +0000 Subject: [PATCH] Added legend of toki hitbox viewer lua script for genesis. --- .../output/Lua/Genesis/Legend of Toki.lua | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 BizHawk.MultiClient/output/Lua/Genesis/Legend of Toki.lua diff --git a/BizHawk.MultiClient/output/Lua/Genesis/Legend of Toki.lua b/BizHawk.MultiClient/output/Lua/Genesis/Legend of Toki.lua new file mode 100644 index 0000000000..56c0b9efc2 --- /dev/null +++ b/BizHawk.MultiClient/output/Lua/Genesis/Legend of Toki.lua @@ -0,0 +1,149 @@ +--Author Pasky13 + +-- Player +local pbase = 0xFF1CD4 +local px = pbase + 0x19 +local py = pbase + 0x1D + +local camx = 0xFF1BC5 +local camy = 0xFF1BC9 + +--Player projectiles + +local projbase = 0xFF1D34 + +--Enemies +local ebase = 0xFF21B4 + +--Bosses +local bbase = 0xFF35F4 + +--Text scaler +local xs +local ys + + +local function endian(address) + local result = mainmemory.read_u8(address) + (mainmemory.read_u8(address-1) * 256) + return result +end + +local function Toki() + local cx = endian(camx) + local cy = endian(camy) + local x = endian(px) - cx + local y = endian(py) - cy + local xoff = mainmemory.read_s8(pbase + 0x11) + local yoff = mainmemory.read_s8(pbase + 0x15) + local xrad = mainmemory.read_u8(pbase +0x13) + local yrad = mainmemory.read_u8(pbase +0x17) + local flip = mainmemory.read_u8(pbase +1) + if flip == 1 then + xoff = xoff * -1 + end + gui.drawBox(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,0xFF0000FF,0x300000FF) +end + +local function enemies() + local cx = endian(camx) + local cy = endian(camy) + local x + local y + local xoff + local xrad + local yoff + local yrad + local oend = 44 + local base = ebase + local flip + local hp + for i = 0,oend,1 do + if i > 0 then + base = ebase + (i * 0x60) + end + flip = mainmemory.read_u8(base +1) + if mainmemory.read_u8(base) > 0 then + hp = mainmemory.read_u8(base + 0xD) + x = endian(base + 0x19) - cx + xrad = mainmemory.read_u8(base + 0x13) + xoff = mainmemory.read_s8(base + 0x11) + yrad = mainmemory.read_u8(base + 0x17) + yoff = mainmemory.read_s8(base + 0x15) + + if flip == 1 then + xoff = xoff * -1 + end + y = endian(base + 0x1D) - cy + if hp > 0 then + gui.text((x-10) * xs,(y-10) * ys, "HP: " .. hp) + end + gui.drawBox(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,0xFFFF0000,0x35FF0000) + end + end +end + +local function boss() + local cx = endian(camx) + local cy = endian(camy) + local x = endian(bbase + 0x19) - cx + local y = endian(bbase + 0x1D) - cy + local xrad = mainmemory.read_u8(bbase + 0x11) + local yrad = mainmemory.read_u8(bbase + 0x15) + local hp = mainmemory.read_u8(bbase+ 0x0D) + + if hp > 0 then + gui.text((x-10) * xs,(y-10) * ys,"HP: " .. mainmemory.read_u8(bbase + 0x0D)) + end + gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad,0xFFFF0000,0x35FF0000) +end + +local function projectiles() + local cx = endian(camx) + local cy = endian(camy) + local x + local y + local xoff + local xrad + local yoff + local yrad + local oend = 11 + local base = projbase + local flip + + for i = 0,oend,1 do + if i > 0 then + base = projbase + (i * 0x60) + end + flip = mainmemory.read_u8(base +1) + + if mainmemory.read_u8(base) > 0 then + x = endian(base + 0x19) - cx + y = endian(base + 0x1D) - cy + xoff = mainmemory.read_s8(base + 0x11) + yoff = mainmemory.read_s8(base + 0x15) + xrad = mainmemory.read_u8(base + 0x13) + yrad = mainmemory.read_u8(base + 0x17) + + if flip == 1 then + xoff = xoff * -1 + end + gui.drawBox(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,0xFFFFFFFF,0x40FFFFFF) + end + end + +end + +local function scaler() + xs = client.screenwidth() / 320 + ys = client.screenheight() / 224 +end + + +while true do + scaler() + Toki() + enemies() + projectiles() + boss() + emu.frameadvance() +end \ No newline at end of file