Страница не найдена
Страница, которую вы запрашиваете, не существует.
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'ах |
Структуры объектов
Перевод на русский язык и исправление: vladikcomperОригинальнал: «SCHG:Sonic the Hedgehog/RAM Editing»
Структуры объектов начинаются с адреса $FFFFD000, каждая структура занимает $40 байт.
| Байт | Тип | Описание | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| $00 | byte | Номер объекта | ||||||||||||||||||
| $01 | byte | Флаги рендеринга.
| ||||||||||||||||||
| $02 | word | Арт-поинтер.
| ||||||||||||||||||
| $04 | long | Оффсет мапингов. | ||||||||||||||||||
| $08 | word |
| ||||||||||||||||||
| $0A | word |
| ||||||||||||||||||
| $0C | word |
| ||||||||||||||||||
| $0E | word |
| ||||||||||||||||||
| $10 | word | Горизонтальная скорость (X-velocity) | ||||||||||||||||||
| $12 | word | Вертикальная скорость (Y-velocity) | ||||||||||||||||||
| $14 | word | Скорость на земле (инерция) | ||||||||||||||||||
| $16 | byte | Вертикальный радиус. | ||||||||||||||||||
| $17 | byte | Горизонтальный радиус. | ||||||||||||||||||
| $18 | byte | Приоритет (00 = поверх всех, 03 = позади всех). | ||||||||||||||||||
| $19 | byte | Горизонтальный радиус видимой части объекта. | ||||||||||||||||||
| $1A | byte | Кадр в мапингах, выводимый на экран. | ||||||||||||||||||
| $1B | byte | Номер записи в сценарии анимации. | ||||||||||||||||||
| $1C | byte | Номер анимации. | ||||||||||||||||||
| $1D | byte | Флаг рестарта анимации (когда $1D не равно $1C, анимация рестартует) | ||||||||||||||||||
| $1E | byte | Время до следующего кадра в анимации. | ||||||||||||||||||
| $20 | byte | Ответ на столновение. Сообщает, что делать, если объекта коснулся Соник. Формат: TTSS SSSS. TT - действие при столкновении: 00 - уменьшить кол-во ударов, 01 - увеличить счетчик роутины, 10 - повредить Соника, а 11 специалный тип, используемый немногими объектами. SSSSSS настраивает физику столкновения. | ||||||||||||||||||
| $21 | byte | Специальный байт для взаимодействия Соником, используется по-разному некоторыми объектами, например у боссов это - счетчик ударов. | ||||||||||||||||||
| $22 | byte |
Состояние объекта:
| ||||||||||||||||||
| $23 | byte | Относительный адрес к объекту в списке уничтожаемых объектов (начинается с $FC00). Используется кольцами, мониторами, бадниками и другими, если нужно, чтобы объект после уничтожения не создавался снова. | ||||||||||||||||||
| $24 | byte | Счетчик роутины. | ||||||||||||||||||
| $25 | byte | Счетчик вторичной роутины. Используется более сложными объектами. | ||||||||||||||||||
| $26 | word | Градус наклона. | ||||||||||||||||||
| $28 | byte | Тип объекта. Например, содержимое монитора или цвет и наклон пружины. | ||||||||||||||||||
| $29-$3F | Неиспользуемые многими объектами байты. | |||||||||||||||||||
| Используемые Соником байты | ||||||||||||||||||||
| Байт | Тип | Описание | ||||||||||||||||||
| $22 | byte | Состояние Соника:
| ||||||||||||||||||
| $28 | byte | Время под водой. При погружении ставится на $1E и уменьшается с каждой секундой. На $18, $13 и $0E секундах воспроизводит звякающий звук. При $0B начинается отсчет до захлебывания. | ||||||||||||||||||
| $2B | byte | Не используется | ||||||||||||||||||
| $30-$31 | word | Оставшеся время неуязвимости. Устанавливается на $0078 после того, как Соник упал после удара, и уменьшается каждую миллисекунду, пока не достигнет $0000. | ||||||||||||||||||
| $32-$33 | word | Оставшеся время Invincibility. | ||||||||||||||||||
| $34-$35 | word | Оставшеся время Speed Shoes. | ||||||||||||||||||
| $39 | byte | Не используется. | ||||||||||||||||||
| $3A-$3B | word | Не используются. | ||||||||||||||||||
| $3C | byte | Включено при прыжке. | ||||||||||||||||||
| $3D | byte | Адрес объекта, на котором стоит Соник (чтобы получить абсолютный адрес, умножьте его на $40 и прибавьте $D000). | ||||||||||||||||||
| Переменные для боссов | ||||||||||||||||||||
| Байт | Тип | Описание | ||||||||||||||||||
| $21 | byte | Оставшееся количество ударов. | ||||||||||||||||||
| $30 | word | X-позиция | ||||||||||||||||||
| $38 | word | Y-позиция (в отличие от $C, без амплитуды - см. байт $3F) | ||||||||||||||||||
| $3E | byte | Количество раз для моргания босса после удара. | ||||||||||||||||||
| $3F | byte | Y-амплитуда. Используется для небольшого колебания вверх/вниз при полете. | ||||||||||||||||||
Список объектов
Автор: vladikcomperОсновано на данных с Hivebrain's Disassembly
У каждого объекта есть свой код, который начинается с лейбела Obj[нормер], используя эту таблицу, вы сможете найти код объекта по его номеру.
| ID | Зоны | Название |
|---|---|---|
| 01 | Соник | |
| 02 | - | - |
| 03 | - | - |
| 04 | - | - |
| 05 | - | - |
| 06 | - | - |
| 07 | - | - |
| 08 | LZ | Брызги воды |
| 09 | - | Соник в Special Stage |
| 0A | LZ | Маленькие пузырики и цифры оставшегося воздуха |
| 0B | LZ | Открывающийся и закрывающийся проем |
| 0C | LZ | Подвижная дверь |
| 0D | Singpost | |
| 0E | - | Соник на тайтл скрине |
| 0F | - | "PRESS START BUTTON" и "TM" на тайтл скрине |
| 10 | - | - |
| 11 | GHZ | Мост |
| 12 | SYZ | Прожектор |
| 13 | MZ/SLZ | Невидимый объект, выстреливающий шарики лавы |
| 14 | MZ/SLZ | Шарики лавы |
| 15 | GHZ/MZ/SLZ | Качающиеся на цепи платформы |
| SBZ | Качающийся на цепи колючий шар | |
| 16 | LZ | Гарпун |
| 17 | GHZ | Колючка, вращающаяся вокруг бревна (в игре не использовано) |
| 18 | GHZ/SYZ/SLZ | Платформы |
| 19 | - | - |
| 1A | GHZ | Рассыпающийся островок |
| 1B | LZ | Поверхность воды |
| 1C | GHZ | Опора моста |
| SLZ | Штука, стреляющая шариками лавы | |
| 1D | - | Переключатель, который активируется после нажатия (в игре не использовано) |
| 1E | SBZ | Ballhog |
| 1F | GHZ/SYZ | Crabmeat |
| 20 | SBZ | Взрывающиеся шары, которые бросает Ballhog |
| 21 | HUD | |
| 22 | GHZ/MZ/SYZ | Buzz Bomber |
| 23 | GHZ/MZ/SYZ | Лазерный шар, который выстреливает Buzz Bomber |
| 24 | Взрыв от уничтоженного монитора | |
| 25 | Кольца | |
| 26 | Мониторы | |
| 27 | Взрыв от уничтоженных бадников | |
| 28 | Животные | |
| 29 | Очки, вылетающие из уничтоженных объектов | |
| 2A | SBZ | Двери |
| 2B | GHZ | Chopper |
| 2C | LZ | Jaws |
| 2D | LZ | Burrobot |
| 2E | Содержимое мониторов | |
| 2F | MZ | Большие подвижные платформы |
| 30 | MZ | Большие зеленые колонны |
| 31 | MZ | Падающие металлические блоки на цепях |
| 32 | MZ/SYZ/LZ/SBZ | Переключатели |
| 33 | MZ/LZ | Блоки, которые можно толкнуть |
| 34 | Названия зон (Title Cards) | |
| 35 | Огненные шары, появляющиеся на тонущих платформах | |
| 36 | Шипы (Spikes) | |
| 37 | Кольца, которые вылетают когда Соника ранили | |
| 38 | Shield и Invincibility Stars | |
| 39 | Надписи "GAME OVER" и "TIME OVER" | |
| 3A | Экран "SONIC GOT THROUGH" в конце уровней | |
| 3B | GHZ | Камень |