Страница не найдена
Страница, которую вы запрашиваете, не существует.
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 | Камень |