Сайт Влада

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 Режим игры
  • $00 - Sega Screen
  • $04 - Title Screen
  • $08 - Demo Mode
  • $0C - Normal Level
  • $10 - Special Stage
  • $14 - Continue Screen
  • $18 - Ending Sequence
  • $1C - Credits
$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'ах