From ae9b791844abcb958c06bf7544273d3daf098183 Mon Sep 17 00:00:00 2001 From: pasky1382 Date: Thu, 10 Jan 2013 17:27:46 +0000 Subject: [PATCH] Added contra force (NES) collision box viewer. --- .../output/Lua/NES/Contra force.lua | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 BizHawk.MultiClient/output/Lua/NES/Contra force.lua diff --git a/BizHawk.MultiClient/output/Lua/NES/Contra force.lua b/BizHawk.MultiClient/output/Lua/NES/Contra force.lua new file mode 100644 index 0000000000..d419e31bdd --- /dev/null +++ b/BizHawk.MultiClient/output/Lua/NES/Contra force.lua @@ -0,0 +1,128 @@ +----------TOGGLES---------- + +DISPLAY_ENEMY_HP = true +--------END TOGGLES-------- + +xbase = 0x64E +ybase = 0x668 +abase = 0x682 +hpbase = 0x796 +offscreen = 0x600 +xm = 0 +ym = 0 +--P1X +-- animation 0x61A + +local proj_fill = 0xFF00FF00 +local proj_outl = 0x3000FF00 + +local enemy_fill = 0xFFFF0000 +local enemy_outl = 0x30FF0000 + +local player_fill = 0xFF0000FF +local player_outl = 0x300000FF + +local pproj_fill = 0xFFFFFFFF +local pproj_oult = 0x30FFFFFF + +memory.usememorydomain("System Bus") + +local function hex(val) + val = string.format("%X",val) + return val +end + +local function player() + local active = mainmemory.read_u8(abase) + if active > 0 then + local offset = bit.band(mainmemory.read_u8(0x720),0x3F) * 2 + local xrad = memory.read_u8(0xF94A + offset) + local yrad = memory.read_u8(0xF94B + offset) + local hp = mainmemory.read_u8(hpbase) + local x = mainmemory.read_u8(xbase) + local y = mainmemory.read_u8(ybase) + gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, player_fill, player_outl) + end +end + +local function player_proj() + for i = 10,11,1 do + local active = mainmemory.read_u8(abase + i) + local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0) + + if oscr == 0x20 then + oscr = -255 + elseif oscr == 0x10 then + oscr = 255 + end + + if active > 0 then + local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2 + local xrad = memory.read_u8(0xF94A + offset) + local yrad = memory.read_u8(0xF94B + offset) + local x = mainmemory.read_u8(xbase + i) + oscr + local y = mainmemory.read_u8(ybase + i) + gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, pproj_fill, pproj_outl) + end + end + +end + +local function enemy() + for i = 2,8,1 do + local active = mainmemory.read_u8(abase + i) + local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0) + if oscr == 0x20 then + oscr = -255 + elseif oscr == 0x10 then + oscr = 255 + end + if active > 0 then + local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2 + local xrad = memory.read_u8(0xF94A + offset) + local yrad = memory.read_u8(0xF94B + offset) + local hp = mainmemory.read_u8(hpbase + i) + local x = mainmemory.read_u8(xbase + i) + oscr + local y = mainmemory.read_u8(ybase + i) + gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, enemy_fill, enemy_outl) + if DISPLAY_ENEMY_HP == true then + gui.text(x * xm,y * ym,hp) + end + end + end +end + +local function e_proj() + local pbase = 0x720 + for i = 18,22,1 do + local active = mainmemory.read_u8(abase + i) + local oscr = bit.band(mainmemory.read_u8(offscreen + i),0xF0) + if oscr == 0x20 then + oscr = -255 + elseif oscr == 0x10 then + oscr = 255 + end + if active > 0 then + local offset = bit.band(mainmemory.read_u8(0x720 + i),0x3F) * 2 + local xrad = memory.read_u8(0xF94A + offset) + local yrad = memory.read_u8(0xF94B + offset) + local x = mainmemory.read_u8(xbase + i) + oscr + local y = mainmemory.read_u8(ybase + i) + gui.drawBox(x-xrad,y-yrad,x+xrad,y+yrad, proj_fill, proj_outl) + end + end +end + +local function scaler() + xm = client.screenwidth() / 256 + ym = client.screenheight() / 224 +end + +while true do + scaler() + player() + enemy() + e_proj() + player_proj() + emu.frameadvance() +end \ No newline at end of file