This function (add it to whatever framely function you run) will read object configs for the current room and show all that will be used. First line is at what block it will spawn. Second line is position: left nibble is Y, right nibble*15 is X. Third line is ID. When the screen is at the same block where there is an object in config, it will get colored in green. Note that once the screen is at that block, the new object instantly spawns.
Under the "ENEMY" there is a display of the current block. But it's tricky. Subpixel (third value) is normal, pixel (middle value) is ANDed with 0xF (showing only the right nibble). One would assume that block number increases whenever pixel overflows, but nope. After pixel overflows, there's an interrupt, loading the new block set into RAM. So the value is written to the current block only after that interrupt.
Language: lua
function Spawns()
local SubCur= memory.readbyte(0x50)/25.6
local PosCur= AND(memory.readbyte(0x51),0xF)
local BlCur = memory.readbyte(0x4E)
local Blptr = memory.readword(0x96)
local Yptr = memory.readword(0x98)
local IDptr = memory.readword(0x9A)
local Count = memory.readbyte(0xB4)
local Interrupt = AND(memory.readbyte(0x4C),0x40)
if (memory.readbyte(0x1FC) == 0x87) then
for i = 0,Count-1 do
block = memory.readbyte(Blptr+i)
ypos = memory.readbyte(Yptr +i)
id = memory.readbyte(IDptr+i)
if (block == BlCur) then color1 = "green" else color1 = "white" end
if (Interrupt > 0) then color2 = "red" else color2 = "#44ffffff" end
gui.text(i*16%256+1,57+math.floor(i/16)*30,
string.format("%X\n%X\n%X",block,ypos,id),color1)
gui.text(128,49,string.format("B: %X.%02d.%d",BlCur,PosCur,SubCur),color2,"#000000ff")
end
end
end
Will figure out the spawn differences tomorrow.