RAM-адреса
Перевод на русский язык и исправление: vladikcomperОригинальная статья: «SCHG:Sonic the Hedgehog/RAM Editing»
Для удобства, адреса памяти в таблице даются в сокращении. Чтобы получить полный адрес, который можно будет использовать в коде, допишите слева "FFFF" для адресов, больших $8000 и "FF" для адресов, меньших или равных $8000. Например: адрес максимальной скорости Соника в таблице - $F760, а в коде он должен быть - $FFFF760.
| Адрес | Описание |
|---|---|
| $0000 - $A3FF | Маппинги блоков 256х256 |
| $A400 - $A7FF | Макет уровня (1 байт на блок, $40 байт на линию, используется одновременно для планов A и B) |
| $A800 - $A9FF | Что-то необходимое для фона в Star Light Zone |
| $AA00 - $ABFF | Что-то необходимое для PLC |
| $AC00 - $AFFF | Таблица спрайтов (2 байта на спрайт + 2 байты на уровень приоритета, каждый уровень занимает по $80 байт.) |
| $B000 - $C7FF | Маппинги блоков 16х16 |
| $C800 - $CAFF | Буфер арта Соника. Sonic Dynamic Pattern Load Cues подгружает сюда тайлы, необходимые текущему спрайту, после чего все это отправляется в VRAM через DMA. |
| $CB00 - $CBFF | Массив предыдущих положений соника (используется для invincibility stars) |
| $CC00 - $CFFF | Кэш Scroll RAM (каждый кадр отсылается VRAM'у через DMA) |
| $D000 - $D7FF | Резервные структуры объектов (для HUD, Соника, Invincibility Stars и пр.) |
| $D800 - $EFFF | Структуры объектов |
| $F600 | Режим игры
|
| $F616-$F617 | Y-позиция плана А для предыдущего кадра |
| $F618-$F619 | Y-позиция плана B для предыдущего кадра |
| $F61A-$F61B | X-позиция плана A для предыдущего кадра |
| $F61C-$F61D | X-позиция плана B для предыдущего кадра |
| $F61E-$F61F | Значение $F71C для предыдущего кадра |
| $F620-$F621 | Значение $F718 для предыдущего кадра |
| $F680-$F6FF | Очередь запросов на загрузку сжатого арта, используется Pattern Load Cues. |
| $F700-$F701 | X-позиция плана A |
| $F704-$F705 | Y-позиция плана A |
| $F708-$F709 | X-позиция плана B |
| $F70C-$F70D | Y-позиция плана B |
| $F73E-$F73F | Y-позиция камеры относительно Соника (по умолчанию - $60) |
| $F744 | Флаг блокировки камеры (чтобы камера не следовала за трупом ежика, когда он умер) |
| $F754-$F755 $F756-$F757 $F758-$F759 $F75A-$F75B | Используется движком для скроллинга |
| $F760-$F761 | Соник: Максимальная скорость |
| $F762-$F763 | Соник: Ускорение (Acceleration) |
| $F764-$F765 | Соник: Торможение (Deceleration) |
| $F7AA | Флаг блокировки экрана (чтобы Соник не мог забежать за границу экрана) |
| $F7C8 | Флаг блокировки управления (блокирует управление, когда включен) |
| $FA00-$FA7F | Конечная палитра под водой |
| $FA80-$FAFF | Текущая палитра под водой |
| $FB00-$FB7F | Текущая палитра |
| $FB80-$FBFF | Конечная палитра (нужна, например для Pal_FadeTo, который плавно переходит от черной палитре к этой, пока текущая палитра не сравняется с конечной) |
| $FC00-$FD7F | Список уничтоженных объектов (используется, например кольцами, чтобы собранные не создавались снова) |
| $FE02 | Флаг рестарта уровня (включается для рестарта уровня, также для загрузки нового) |
| $FE04 | Время уровня |
| $FE10-$FE11 | Зона и акт |
| $FE12 | Жизни |
| $FE14 | Оставшийся воздух (работает под водой) |
| $FE16 | Количество пройденых спец этапов |
| $FE18 | Продолжения (Continues) |
| $FE1C | Счетик жизней (Используется для обновления в HUD'e) |
| $FE1D | Счетчик колец (Используется для обновления в HUD'e) |
| $FE1E | Счетчик времени (Используется для обновления в HUD'e) |
| $FE1F | Счетчик очков (Используется для обновления в HUD'e) |
| $FE20-$FE21 | Кольца |
| $FE22-$FE25 | Время |
| $FE26-$FE29 | Очки |
| $FE2C | Флаг Shield |
| $FE2D | Флаг Invincibility |
| $FE2E | Флаг Speed Shoes |
| $FE30 | Номер последнего чек поинта (Lampost) |
| $FE57 | Изумруды |
| $FFF4 | Номер экрана в Credits'ах |