-- The Adventures of Batman and Robin
-- 2013, feos and r57shell
function EnemyPos(Base)
x1 = memory.readwordsigned(Base+0x12)-xcam
y1 = memory.readwordsigned(Base+0x14)
x2 = memory.readwordsigned(Base+0x16)-xcam
y2 = memory.readwordsigned(Base+0x18)
hp = memory.readwordsigned(Base+0x1E)
end
function PlayerPos()
sbase1 = memory.readword(0xFFAD5C)+0xFF0000
sbase2 = memory.readword(0xFFADB6)+0xFF0000
p1speedx = memory.readlongsigned(sbase1+0x18)/0x10000
p1speedy = memory.readlongsigned(sbase1+0x1C)/0x10000
p2speedx = memory.readlongsigned(sbase2+0x18)/0x10000
p2speedy = memory.readlongsigned(sbase2+0x1C)/0x10000
end
function Collision()
wx1 = memory.getregister("d6") - xcam
wy1 = memory.getregister("d7")
wx2 = memory.getregister("d4") - xcam
wy2 = memory.getregister("d5")
gui.box(wx1,wy1,wx2,wy2,"#ff000000")
end
function Hitbox(address)
i = 0
base = memory.readword(address)
while (base~=0) do
base = base+0xFF0000
if (memory.readword(base+2) == 0) then
break
end
EnemyPos(base)
if (address == 0xFFDEB2) then
gui.box(x1,y1,x2,y2,"#00ff0000")
elseif (address == 0xFFDEBA) then
gui.box(x1,y1,x2,y2,"#00ffff00")
gui.text(x1+2,y1+1,hp,"#ff00ff")
if (x2< 0) then gui.text(x1+2,y2-7,"x:"..x1 ) end
if (x1>=320) then gui.text(x1+2,y2-7,"x:"..x1-320) end
if (y2< 0) then gui.text(x2+2,y2-7,"y:"..y2 ) end
end
base = memory.readword(base+2)
i = i+1
if (i>400) then
break
end
end
end
function Main()
xcam = memory.readwordunsigned(0xFFDFC4)
ycam = memory.readwordunsigned(0xFFCD70)
--X1 = memory.readlongsigned(0xFFAD92)/10000
X1 = memory.readword(0xFFAD92)
X1sub = memory.readbyte(0xFFAD94)
--Y1 = memory.readlongsigned(0xFFAD96)/10000
Y1 = memory.readword(0xFFAD96)
Y1sub = memory.readbyte(0xFFAD98)
--X2 = memory.readlongsigned(0xFFADEC)/10000
X2 = memory.readword(0xFFADEC)
X2sub = memory.readbyte(0xFFADEE)
--Y2 = memory.readlongsigned(0xFFADF0)/10000
Y2 = memory.readword(0xFFADF0)
Y2sub = memory.readbyte(0xFFADF2)
wpn1 = memory.readbyte(0xFFF64D)
wpn2 = memory.readbyte(0xFFF67B)
PlayerPos()
Hitbox(0xFFDEB2)
Hitbox(0xFFDEBA)
gui.text( 81,210,string.format("Pos : %d:%d\nSpeed: %.5f",X1,X1sub,p1speedx),"#AAAAAA")
gui.text(153,210,string.format("/ %d:%d\n/ %.5f",Y1,Y1sub,p1speedy),"#AAAAAA")
gui.text(196,210,string.format("Pos : %d:%d\nSpeed: %.5f",X2,X2sub,p2speedx),"#00BB00")
gui.text(268,210,string.format("/ %d:%d\n/ %.5f",Y2,Y2sub,p2speedy),"#00BB00")
end
gui.register(Main)
memory.registerexec(0x8C9A, Collision)