This is absolute beta, because I never investigated this game. A bunch of situations are not accounted or wrong, and you'll see. The width and height are arbitrary.
Language: lua
local abe_semi_width, abe_semi_height = 8, 24
while true do
local abe_x = mainmemory.read_u16_le(0x1f6112)
local abe_y = mainmemory.read_u16_le(0x1f6116)
local camera_x = mainmemory.read_u16_le(0x08abe6)
local camera_y = mainmemory.read_u16_le(0x08abea)
local x_offset = 203 + abe_x - camera_x
local y_offset = 124 + abe_y - camera_y
gui.text(0, 64, string.format("Abe (%d, %d)", abe_x, abe_y), "black", "yellow")
gui.text(0, 80, string.format("Cam (%d %d)", abe_x - camera_x, abe_y - camera_y), "black", "yellow")
gui.drawRectangle(x_offset - abe_semi_width, y_offset - 2*abe_semi_height, 2*abe_semi_width, 2*abe_semi_height, "blue")
gui.drawPixel(x_offset, y_offset)
emu.frameadvance()
end
Further development would be better in the Oddysee thread.