--Use with Snex9x 1.43-RR or 1.51-RR --Player local px = 0x000AF6 local py = 0x000AFA local plife = 0x0009C2 --Camera local camx = 0x000911 local camy = 0x000915 local cx = 0 local cy = 0 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() cx = memory.readword(camx) cy = memory.readword(camy) end local function Samus() local x = memory.readword(px) - cx local y = memory.readword(py) - cy local xrad = memory.readbyte(0x7E0AFE) local yrad = memory.readbyte(0x7E0B00) gui.box(x + (xrad * -1), y + (yrad * -1), x+xrad,y+yrad,"#0000FF35","#0000FFFF") -- HP Cheat memory.writebyte(0x7E0C92,0x63) memory.writebyte(0x7E0A06,0x63) memory.writebyte(0x7E0A12,0x63) --infinite shine spark memory.writebyte(0x7E0A68,0x63) end local function powerbomb() local x = memory.readword(0xCE2) - cx local y = memory.readword(0xCE4) - cy local v1 local v2 local xrad local yrad xrad = bit.band(memory.readbyte(0xCEB),0xFF) yrad = ((xrad / 2) + xrad) / 2 gui.box(x + (xrad * -1), y + (yrad * -1),x+xrad,y+yrad,"#00FFFF35","#00FFFFFF") end local function Samus_Projectiles() local x local y local xrad local yrad local oend = 8 local projxbase = 0xB64 local projybase = 0xB78 local projxrbase = 0xBB4 local projyrbase = 0xBC8 for i = 0, oend, 1 do x = memory.readword(projxbase + (i*2)) - cx y = memory.readword(projybase + (i*2)) - cy xrad = memory.readbyte(projxrbase + (i * 2)) yrad = memory.readbyte(projyrbase + (i * 2)) gui.box(x + (xrad * -1), y + (yrad * -1), x+xrad,y+yrad) end if bit.band(memory.readword(0xCEB),0xFF) > 0 then powerbomb() end end local function drawmhitbox(bank,offset) local rom = bank * 0x10000 local x1 = memory.readword(rom + 0x187A) + memory.readbytesigned(rom + offset) - cx local x2 = memory.readword(rom + 0x187A) + memory.readbytesigned(rom + 4 + offset) - cx local y1 = memory.readword(rom + 0x187C) + memory.readbytesigned(rom + 2 + offset) - cy local y2 = memory.readword(rom + 0x187C) + memory.readbytesigned(rom + 6 + offset) - cy gui.drawbox(x1,y1,x2,y2,"#FF000035","#FF0000FF") end local function drawphitbox(bank,offset) local rom = bank * 0x10000 local x1 = memory.readword(rom + 0x1A4B + offset) + memory.readbyte(rom + 0x0E20) - cx local x2 = memory.readword(rom + 0x1A4B + offset) - memory.readbyte(rom + 0x0E20) - cx local y1 = memory.readword(rom + 0x1A93 + offset) + memory.readbyte(rom + 0x0E22) - cy local y2 = memory.readword(rom + 0x1A93 + offset) - memory.readbyte(rom + 0x0E22) - cy gui.drawbox(x1,y1,x2,y2,"#FF000035","#FF0000FF") end local function EnemyBoxes() local etype local oend = 39 local base = 0xF7A for i = 0, oend, 1 do if i > 0 then base = 0xF7A + (i * 0x40) else base = 0xF7A end etype = memory.readword(base - 2) if hasbit(memory.readword(base + 0xC),findbit(14)) then local draw_multi = memory.readword(base + 0xE) local x = memory.readword(base) - memory.readword(camx) local y = memory.readword(base+ 4) - memory.readword(camy) local hp = memory.readword(base + 0x12) local xrad = memory.readbyte(0x0F82 + (i * 0x40)) local yrad = memory.readbyte(0x0F84 + (i * 0x40)) local romd = memory.readbyte(base + 0x2C) -- Check for multiple hitbox enemies if memory.readbyte(0x7E18A8) == 0 then -- Samus can be hurt if hasbit(draw_multi,findbit(3)) == true then memory.registerexec(0xA09B11, 1, function() drawmhitbox(memory.getregister("db"),memory.getregister("x")) end) if etype == 0xE13F or etype == 0xE17F then --Ridley's tail tx = memory.readword(0x7E20A4) - cx ty = memory.readword(0x7E20A6) - cy gui.box(tx + 0xE, ty + 0xE, tx - 0xE, ty - 0xE,"#FF000035","#FF0000FF") end else gui.box(x + (xrad * -1),y + (yrad * -1),x+xrad,y+yrad,"#FF000035","#FF0000FF") --gui.text(x-5,y-5,"HP: " .. hp) end end --HP display gui.text(x-5,y-5,"HP: " .. hp) --Check for enemy projectiles memory.registerexec(0xA098F3, 1, function() drawphitbox(memory.getregister("db"),memory.getregister("x")) end) end end end local function enemy_projectiles() local projxbase = 0x1a4b local projybase = 0x1a93 local x local y end while true do camera() Samus() EnemyBoxes() Samus_Projectiles() emu.frameadvance() end