Maybe it's just my browser, but I don't see any entries for your new zone in LevelOrder. That could explain why dynscrresizeload is loading invalid data, because you've entered an invalid zone. I don't have a disassembly on hand to look at, but you should be able to tell by the contents of d0 or one of the other registers, which is used as an index into the offset table. EDIT: It was my browser, it was hiding the last few lines. EDIT2: Darn, if I'm looking at the right routine, d0 gets overwritten with the offset.