Research / Sonic 2 / Rings placement

Rings placement:


*By Sonic Hachelle-Bee on May 16 2005.*

Advices about rings placement:


Here, I will tell you some advices to make your rings placement looking good in the game, as a real Sonic game.

First, keep in mind that in a row or column of rings, usually, rings are separated by 24 pixels each other. Rings are usually 12 pixels up the floor, or only 6 pixels up the floor if you are going fast at this location (loops or springs). In addition, rings are also placed 8 pixels besides a wall. To make your rings placement even better, they mustn't enter in collision with a badnick, and you must put 3 rings (or sometimes 4) at the beginning of every act, so that you can see them before the title card disappear entirely: this only to have a good start.

Rings placement format:


Rings placement works almost exactly the same as sprites placement:

XXXX FYYY

X: X coordinate of the ring.
Y: Y coordinate of the ring.
F: Ring flag.

In the rings placement, you don't need to write the object type. Only write the coordinates (4 bytes) and write the number of rings you want to be placed after this coordinate in game: usually, the first nybble of the Y coordinate is 0. This nybble is used as a flag for sprites placement. Here, this nybble will define how many rings to display in a row or column, separated by 24 pixels each other. For example, writing 1 instead of 0 will place one ring at the specified coordinate, and another 24 pixels to the right, on the same row. Here is what each number do:

Ring flagEffect on screen
0Place one ring
1Place 2 rings on the same row
2Place 3 rings on the same row
3Place 4 rings on the same row
4Place 5 rings on the same row
5Place 6 rings on the same row
6Place 7 rings on the same row
7Place 8 rings on the same row
8Place one ring
9Place 2 rings on the same column
APlace 3 rings on the same column
BPlace 4 rings on the same column
CPlace 5 rings on the same column
DPlace 6 rings on the same column
EPlace 7 rings on the same column
FPlace 8 rings on the same column


This way, you can place a large amount of rings without too much work. You haven't to place them one by one. As for sprites, for each act of the game, there is a huge list in the ROM file where every rings placement are stored. Each 4 bytes is a new set of rings. At the end of the list, you have FF FF written.

One last thing, you can only place no more than 256 rings in the same act. This is for the perfect counter that takes only a one byte value in RAM. One more and the game will crash.

Rings addresses:


As sprites placement, rings placement have their own lists.
There is an offset index for each level (2 bytes for an act) located at $E4300.

LevelActAddress for the list of rings
Emerald Hill zoneAct 1$E4344
Act 2$E456A
Metropolis zoneAct 1$E47B8
Act 2$E4A2A
Act 3$E4C48
Wing Fortress zone$E6154
Hill Top zoneAct 1$E4D74
Act 2$E4EAA
Hidden Palace zoneAct 1$E50E8
Act 2$E525A (empty)
Oil Ocean zoneAct 1$E5260
Act 2$E5422
Mystic Cave zoneAct 1$E5598
Act 2$E570E
Casino Night zoneAct 1$E5944
Act 2$E5B7E
Chemical Plant zoneAct 1$E5E2C
Act 2$E5F9E
Death Egg zone$E6150
Aquatic Ruin zoneAct 1$E6294
Act 2$E642E
Sky Chase zone$E6684
Unused space that you can use$E66D8 to $E67FF


Back | Printer friendly
<< 3. Sprites and objects reference

© 2004, 2005 drx, www.hacking-cult.org. Don't copy without permission yadda yadda yadda.