If it helps, I know some games such as the spongebob games I TASed had all the enemy data clumped together in fixed offsets, so once you found information on 1 NPC, as long as you know the offset of the other ones, you pretty much found them all.
Here's
the code for the lua script for that game, and the part that displays all NPC x/y/hp
--The enemies (mostly based on MUGG's Wario land 2 script :P)
for i = 0x03005608, 0x03005928, 160 do
if memory.readbytesigned(i) ~= 0 and memory.readbytesigned(i+4) ~= -1 then
local id = memory.readbytesigned(i)
local x = memory.readwordunsigned(i+88)
local y = memory.readwordunsigned(i+92)
gui.text(x+9, y, id .."("..memory.readbyte(i+7)..")")
gui.text(x, y+7, "X:"..memory.readdwordsigned(i+36))
gui.text(x, y+14, "Y:"..memory.readdwordsigned(i+40))
end
end
Edit: By the way, same happens for the player; addresses related to the player tend to all clump together. Try and open the Hex Edit and poke around the X/Y addresses you already found. :)