--[[ MESHUGGAH's HUD Template
This template features an example to NES Rush'n Attack
v contains RAM addresses of position values (hexadecimal)
p positon values stored here after reading memory from location v (memory.readbyte)
pp previous position values stored here to compare with new positions on next frame
--]]
-- Variable array: P1 X, P1 Y, Camera X
local v = {
0x613,
0x61c,
0x26
}
-- Position array
local p = {} for i = 1, table.getn(v) do p[i] = 0 end
-- Previous position array
local pp = {} for k,v in pairs(p) do pp[k] = v end
-----------------------------------------------------------------------
local function objects()
-- display ID if alive
for i = 0, 15 do
if memory.readbyte(0x500+i*32) ~= 0 then
gui.text(memory.readbyte(v[1]+i*32),memory.readbyte(v[2]+i*32)+40,i,"#FFFFFFFF","#FF000080")
end
end
end
local function hud()
-- Display object's ID and a simple box around them (not actual hitbox positions)
objects()
-- Read new positions
for i = 1, table.getn(v)-1 do p[i] = memory.readbyte(v[i]) end
p[3] = memory.read_u16_le(v[3])
-- Anything else you would like to display?
gui.text(1,1,string.format("CamX %3d (%d)",p[3],pp[3]-p[3]),"#FFFFFFFF","#00000080")
-- Display positions for players
gui.text(p[1],p[2]+48,string.format("X %3d (%d)\nY %d (%d)",p[1],pp[1]-p[1],p[2],pp[2]-p[2]),"#FFFFFFFF","#00000080")
-- Store positions to compare them in next frame
for k,v in pairs(p) do pp[k] = v end
end
event.onframeend(hud)
while true do
emu.frameadvance()
end