This zip file contains the following: A Sonic 2 ROM, with all level-specific code and data removed, and modifications to load level data from data added to the end of the ROM (s2lockon.bin) A prebuilt level file for Emerald Hill Zone Act 1 (EHZ1.bin) A binary of s2lockon.bin+EHZ1.bin (s2lev.bin) All code and data needed to build EHZ level (EHZ1.asm et al) The format is documented at the bottom of s2.constants.asm in the LevelHeader struct, and at the top of EHZ1.asm. All offsets in the header are unsigned (no backwards references). For those of you who would want to make levels with this, all your object code will have to use position-independent code. That means all data accesses within the level must be pc-relative, all branches within the level must be short or word-sized, all references to code or data in the base ROM must be longword addresses, and you must use the proper "rel" or "abs" macro for PLCs and debug object list entries. I know a single-level demo that doesn't have many apparent changes from stock Sonic 2 isn't very exciting, but I didn't feel like going to the trouble of extracting the necessary code and data for another level, and converting its object layout to new IDs.