I was planning on doing a tutorial on how to add this stuff, but I decided that it would take too long and I already have other stuff I need to do, so here's a disassembly. If you want to add these features to your hack, just use a program such as ExamDiff to compare the sonic1.asm here with one from the original Hivebrain disassembly and apply the changes to your own hack. What it is Sonic 3 & Knuckles' object manager differs in that an object only spawns if the camera is close enough to it in both the x and y direction, rather than just the x direction like in Sonic 1 and 2. This keeps objects too far above or below Sonic from having their code run, which reduces processing and leads to less slowdown. Additionally, every object's status (destroyed or not) is saved rather than just specified ones. Instead you can specify if an object won't take the camera's y position into account for certain objects. This is useful for tall objects or objects that interact with objects far above or below them (LZ1's shortcut platform, for example). Rings are simple objects that require far less RAM and processing power than most objects would, and so it is more efficient to create a separate routine to load and run them than it would be to load them using the regular object loading routine. Sonic 2 added the ring manager, but Sonic 3K simplified it by treating each ring as its own object, rather than putting them in groups. This allows ring data to be read from the ROM rather than expanded it using RAM, so less RAM is used. When adding Sonic 3K's object manager to Sonic 1, adding a ring manager is required because Sonic 1's ring object won't save its status properly, resulting in rings respawning after leaving the screen. Requirements $300 consecutive bytes free for the object respawn table (note: these will be used instead of $FC00 to $FCFF so, if you reorder your RAM addresses, you only need to find $200 free bytes). This can be done by: Using a Z80 sound driver -Frees up $F000 to $F5BF (F5C0 to $F5FF are already free too) Using uncompressed chunks -Frees up $0000 to $A3FF Using 128 by 128 chunks -Frees up $8000 to $A3FF Word-sized free entry in the SST. This will be used instead of $23, so you just need to find one free one and reorder the SST to put them together. This can be done by: Using RedHotSonic’s guide for Sonic 2. Both steps are applicable to Sonic 1. 4 bytes free for Camera_X_pos_last and Camera_Y_pos_last $1F0 consecutive bytes free for ring manager $10 bytes free for various ring manager-related RAM addresses What is changed Sonic 3K's Object and Ring Managers are added The attracted ring is added as object 7 which allows the rings to attract to Sonic when he has a shield in the same way they do around the Lightning Shield does (includes it being added to "Object pointers.asm") To free up RAM, uncompressed chunks are used vladikcomper's Error Handler is added for testing Variables.asm is added, containing each new RAM address Object placements are edited to work with Sonic 3K's format The folder "rings" is added, contain the ring placements for every level in Sonic 3K's format The folder "Sonic 1 2005 INIs" is added and edited so SonLVL recognizes the objects and rings as being in Sonic 3K's format and the chunks as uncompressed Sonic's inertia SSTs are moved from $14 and $15 to $20 and $21 and the new respawning SSTs take its place. The original ring object is replaced with one that spawns a single ring for use in debug mode. Converting To convert your object placement files to Sonic 3K's object and ring formats, use MainMemory's LevelConverter to batch convert with neither boxes checked. The new object file will have monitors converted to object 1 and air bubbles converted to object 55, so they will have to be changed back manually. Credits MoDule for this Object Manager guide shobiz for this Ring Manager guide MainMemory for SonLVL and LevelConverter vladikcomper for this error handler Bugs The rings have a higher priority than they should. As a result, they can overlap the HUD. If you can find any flaws or think of any improvements, feel free to let me know. Bug fixing has allowed me to fix some bugs in my own hack and I'm really happy about that.