If it helps, the X/Y addresses (for the very first room, at least) are in "Combined WRAM" in BizHawk, and they are
00B944 - 4 byte unsigned - X
00B948 - 4 byte unsigned - Y
Unfortunately, every time I go up and down stairs, the address changes by -0x128, so it becomes something like
00B948 -> 00B820 -> 00B6F8 -> 00B5D0 -> 00B380
00B4A8 is skipped for some reason.
Not very informative, sorry. Never played this game.
Edit: I think I found how it moves. All in Combined Wram:
042118
043358
043380
All seem to point at an address minus 0x02000000 near the X/Y values.
Uh...In fact here's a lua script that displays X/Y at the very top, plus the pointer just in case
Download Harry.luaLanguage: lua
memory.usememorydomain("Combined WRAM")
local Harry = {ptr = 0x042118, x = 0x000000, y = 0x000000}
function update()
local char = memory.read_s32_le(Harry.ptr) - 0x02000000
Harry.x = char + 0x2C
Harry.y = char + 0x30
end
while true do
local pointer = memory.read_s32_le(Harry.ptr)
if (pointer ~= Harry.x-0x2c+0x02000000 and pointer ~= 0) then --this will happen if changed rooms or just started script
update() --placing this here as to not lag my computer :P
end
gui.text(0,0,string.format('%.6f',memory.read_u32_le(Harry.x)/65536.0)..","..string.format('%.6f',memory.read_u32_le(Harry.y)/65536.0))
gui.text(0,90,"Pointer: 0x"..bizstring.hex(memory.read_s32_le(Harry.ptr))) --debug
emu.frameadvance()
end
Tested in BizHawk 1.11.6. Please post if something goes wrong.