-- Y's III (SNES) Collision box viewer -- Bizhawk -- Author: Pasky local camx local camy function findbit(p) return 2 ^ (p - 1) end function hasbit(x, p) return x % (p + p) >= p end local function hex(val) val = string.format("%X",val) if string.len(val) == 1 then val = "0" .. val end return val end local function camera() camx = mainmemory.read_u16_le(0x12D8) camy = mainmemory.read_u16_le(0x12E0) end memory.usememorydomain("CARTROM") local function player() local x = mainmemory.read_u8(0x1274) local y = mainmemory.read_u8(0x1276) local x1 = x local y1 = y local x2 = 0 local y2 = 0 if mainmemory.read_u8(0x1273) == 3 then x1 = x1 - 4 x2= x1 + 0x18 y1= y1 + 0x12 y2= y1 + 0x10 else x2 = x1 + 0x10 y1 = y1 + 0x08 y2 = y1 + 0x18 end gui.drawBox(x1,y1,x2,y2,0xFF0000FF,0x300000FF) -- cheat -- memory.writebyte(0x1294,0x90) -- infinite hp -- memory.writeword(0x1299,0x400) -- experience -- Attacking if mainmemory.read_u8(0x1283) ~= 0 then local offset1 = bit.band(mainmemory.read_u8(0x1287),0x3) offset1 = offset1 + mainmemory.read_u8(0x1278) + mainmemory.read_u8(0x127A) - 0x10 offset1 = bit.lshift(offset1,1) local offset2 = bit.band(mainmemory.read_u8(0x127C),0x40) offset2 = bit.rshift(offset2,6) offset2 = bit.bor(offset2,offset1) offset2 = bit.lshift(offset2,2) local ax1 = bit.band(x + memory.read_u8(0xBA4BE + offset2),0xFF) local ay1 = bit.band(y + memory.read_u8(0xBA4BF + offset2),0xFF) local ax2 = bit.band(x + memory.read_u8(0xBA4BC + offset2),0xFF) local ay2 = bit.band(y + memory.read_u8(0xBA4BD + offset2),0xFF) gui.drawBox(ax1,ay1,ax2,ay2) end end local function enemies() local start = 0x17FB - 0x22 for i =0,15,1 do local base = start + (i * 0x22) local x = mainmemory.read_u16_le(base) - camx local y = mainmemory.read_u16_le(base + 2) - camy local facing = mainmemory.read_u8(base + 0xf) local offset = mainmemory.read_u8(base + 0xD) * 2 local pointer = memory.read_u16_le(0xB9A25 + offset) local hp = mainmemory.read_u8(base + 0x8) local active = mainmemory.read_u8(base + 0x1D) if active ~= 0 then if bit.band(facing,0x40) ~= 0 then -- left pointer = pointer + 4 else -- right end local x1 = x + memory.read_u8(0xB9A26 + pointer) local y1 = y + memory.read_u8(0xB9A27 + pointer) local x2 = x + memory.read_u8(0xB9A28 + pointer) local y2 = y + memory.read_u8(0xB9A29 + pointer) gui.text(x,y,"HP: " .. hp ) gui.drawBox(x1,y1,x2,y2,0xFFFF0000,0x30FF0000) end end end while true do camera() player() enemies() emu.frameadvance() end