Quote: "easier and tidier way than copy and pasting the same code over and over?"
My suggestion would be a SpawnRing(x,y) function that will do all the code for creation (storing data in arrays and such for later retrieval as well as loading the images/sprites).
For positioning, if you don't want to position them by hand, it would probably be best to hide it in the level background image or something like that. It kinda depends on how you're doing it.
To prevent from having to load an image into things, you could hide a "Put a ring here" dot in the alpha channel of the game map. DBC can't do anything to display alpha channel data, but it is the 4th byte stored when you create a memblock from an image (Red, Green, Blue, Alpha). So if you were to load your level, then make a memblock from the level image, then scan through, spawning a ring at each point marked in the alpha channel, that should work.
Of course, there are other ways to do this, too. Depending on your method for creating your level, there are different tricks.
Hope this helps!
Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose