Sonic 2 Hacking Guide
Binary - Debug Mode

This will allow you to change the objects available in each of level when using debug mode. Each object uses 8 bytes to reference it in debug mode. Here are the notes you need to modify these references.

#1 #2 #3 #4 #5 #6 #7 #8

1 - Object value
2 - ??? (usually 01)
3 + 4 - Size of selection
5 - Object type
7 +8 - Sprites for selection

You can use #3, #4, #7, and #8 for porting a selection sprite. Now, you need to know how the game understands how many sprites to read for a level. Each set of objects has a 2 byte header. Together, both bytes define how many objects should be available in debug mode. The first byte should probley stay 00 unless you want more than 255 objects! Now, you just need to know where the section is that tells what sprite set is used for what level.

041D0C - 16-bit address pointers for each level

Here are some of the objects that are listed and their locations

041D30 - Ring
041D38 - Warp Monitor

Emerald Hill
041D42 - Ring
041D4A - Warp Monitor
041D52 - Starpost