From 72b78e8dc915da49b7a15dcaeaf5f70baf495df0 Mon Sep 17 00:00:00 2001 From: pasky1382 Date: Fri, 14 Jun 2013 00:46:21 +0000 Subject: [PATCH] Crystalis collision box viewer --- .../output/Lua/NES/Crystalis.lua | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 BizHawk.MultiClient/output/Lua/NES/Crystalis.lua diff --git a/BizHawk.MultiClient/output/Lua/NES/Crystalis.lua b/BizHawk.MultiClient/output/Lua/NES/Crystalis.lua new file mode 100644 index 0000000000..b8684455a1 --- /dev/null +++ b/BizHawk.MultiClient/output/Lua/NES/Crystalis.lua @@ -0,0 +1,101 @@ +local camx +local camy +local HPDISPLAY = true + +memory.usememorydomain("PRG ROM") + +local function camera() + camx = mainmemory.read_u8(0x02) + if mainmemory.read_u8(0x03) > 0x7F then + camx = mainmemory.read_s8(0x02) + else + camx = camx + mainmemory.read_u8(0x03) * 256 + end + camy = mainmemory.read_u8(0x04) + if mainmemory.read_u8(0x05) > 0x7F then + camy = mainmemory.read_s8(0x04) + 17 + else + camy = camy + mainmemory.read_u8(0x05) * 239 + end +end + +local function player() + local x = mainmemory.read_u8(0x70) + mainmemory.read_u8(0x90) * 256 - camx + local y = mainmemory.read_u8(0xB0) + mainmemory.read_u8(0xD0) * 239 - camy + local x2 = mainmemory.read_u8(0x5C0) + local y2 = mainmemory.read_u8(0x5E0) + local invuln = mainmemory.read_u8(0x71A) + + if bit.band(mainmemory.read_u8(0x3A1),0xF0) ~= 0 and invuln == 0 then -- If box exists + local off1 = bit.band(mainmemory.read_u8(0x3A1),0xF) * 4 + local off2 = bit.bor(bit.band(mainmemory.read_u8(0x421),0x40),off1) + + local xoff = memory.read_s8(0x35691 + off2) + local xrad = memory.read_u8(0x35692 + off2) + local yoff = memory.read_s8(0x35693 + off2) + local yrad = memory.read_u8(0x35694 + off2) + + gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,0xFF0000FF,0x300000FF) + end + + + --Player's attacks + for i = 2,4,1 do + + if mainmemory.read_u8(0x4A0 + i) ~= 0 and i ~= 3 then + x = mainmemory.read_u8(0x70 + i) + mainmemory.read_u8(0x90 + i) * 256 - camx + y = mainmemory.read_u8(0xB0 + i) + mainmemory.read_u8(0xD0 + i) * 239 - camy + x2 = mainmemory.read_u8(0x5C0 + i) + y2 = mainmemory.read_u8(0x5E0 + i) + + off1 = bit.band(mainmemory.read_u8(0x3A0 + i),0xF) * 4 + off2 = bit.bor(bit.band(mainmemory.read_u8(0x422),0x40),off1) + + xoff = memory.read_s8(0x35691 + off2) + xrad = memory.read_u8(0x35692 + off2) + yoff = memory.read_s8(0x35693 + off2) + yrad = memory.read_u8(0x35694 + off2) + + gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad) + end + end +end + +local function enemies() + for i = 5,0x1F,1 do + + if mainmemory.read_u8(0x4A0 + i) ~= 0 then + local x = mainmemory.read_u8(0x70 + i) + mainmemory.read_u8(0x90 + i) * 256 - camx + local y = mainmemory.read_u8(0xB0 + i) + mainmemory.read_u8(0xD0 + i) * 239 - camy + local x2 = mainmemory.read_u8(0x5C0 + i) + local y2 = mainmemory.read_u8(0x5E0 + i) + local hp = mainmemory.read_u8(0x3C0 + i) + + if x < 256 and x > 0 and y < 239 and y > 0 then + if bit.band(mainmemory.read_u8(0x3A0 + i),0xF0) ~= 0 then -- If box exists + local off1 = bit.band(mainmemory.read_u8(0x3A0 + i),0xF) * 4 + local off2 = bit.bor(bit.band(mainmemory.read_u8(0x420 + i),0x40),off1) + + + local xoff = memory.read_s8(0x35691 + off2) + local xrad = memory.read_u8(0x35692 + off2) + local yoff = memory.read_s8(0x35693 + off2) + local yrad = memory.read_u8(0x35694 + off2) + + gui.drawBox(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,0xFFFF0000,0x30FF0000) + + if HPDISPLAY == true then + gui.text(x,y,"HP: " .. hp) + end + end + end + end + end +end + +while true do + camera() + player() + enemies() + emu.frameadvance() +end \ No newline at end of file