Softate Visual Basic Соник Блог
Новости Хаки Гиды Справочники Развод ASM-Team

Страница не найдена

Страница, которую вы запрашиваете, не существует.

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'ах

Структуры объектов

Перевод на русский язык и исправление: vladikcomper
Оригинальнал: «SCHG:Sonic the Hedgehog/RAM Editing»

Структуры объектов начинаются с адреса $FFFFD000, каждая структура занимает $40 байт.

БайтТипОписание
$00 byte Номер объекта
$01 byte Флаги рендеринга.
  • Бит 0 - отражение по горизонтали. Если включен, объект будет отражен по горизонтали.
  • Бит 1 - отражение по вертикали.
  • Бит 2 - система координат. При 0, координаты объекта будут относительно экрана (onscreen), используется, например, для HUD. При 1 объект будет координироваться относительно уровня (playfield).
  • Бит 3 - в игре не используется, если Бит 2 установлен на 1 и этот бит включен, объект каким-то образом будет приурочен к фону уровня. Это использовалось для НЛО из MZ в ранних прототипах игры.
  • Бит 4 - флаг учета высоты. При прорисовке объектов, игра проверят, попадает ли объект в область экрана, учитывая его высоту. Если флаг выключен, высота объекта условно берется за $20, иначе высота будет браться из байта $16.
  • Бит 5 - если включен, BuildSprites обработает только первые 5 байт мапингов. Используется, например стенами GHZ, рассыпающимися на кусочки.
  • Бит 6 - переключатель планов. Используется только Obj01 (т.е. Соником). Используется, чтобы менять приоритет Сониковкого спрайта при прохождении кругов (loops) в GHZ.
  • Бит 7 - устанавливается, когда объект на экране и его нужно отрисовать.
$02 word Арт-поинтер.
  • Использует формат $XYYY, где X - строка палитры, которая будет использована для спрайта, YYY - порядковый номер тайла в VRAM.
$04 long Оффсет мапингов.
$08 word
  • X-координата.
$0A word
  • При координировании относительно уровня, X подпиксель.
  • При координировании относительно экрана, Y координата.
$0C word
  • При координировании относительно уровня, Y координата.
  • При координировании относительно экрана не используется.
$0E word
  • При координировании относительно уровня, Y подпиксель.
  • При координировании относительно экрана не используется.
$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 Состояние объекта:
БитОписание
0X-ориентация. 0 = лево, 1 = право
1Y-ориентация. 0 = вверх, 1 = вниз
2Не используется
3Включен, если Соник стоит на объекте
4Не используется
5Включен, если Соник толкает объект
6Не используется
7Не используется
Эти биты имеют другое значение у Соника (см. чуть ниже).
$23 byte Относительный адрес к объекту в списке уничтожаемых объектов (начинается с $FC00). Используется кольцами, мониторами, бадниками и другими, если нужно, чтобы объект после уничтожения не создавался снова.
$24 byte Счетчик роутины.
$25 byte Счетчик вторичной роутины. Используется более сложными объектами.
$26 word Градус наклона.
$28 byte Тип объекта. Например, содержимое монитора или цвет и наклон пружины.
$29-$3F Неиспользуемые многими объектами байты.
Используемые Соником байты
БайтТипОписание
$22 byte Состояние Соника:
БитОписание
0Ориентация. 0 = право, 1 = лево.
1Включен, если Соник в воздухе.
2Включен, если прыгает или свернут в клубочек.
3Включен, если Соник в воздухе, но не должен падать. Например, если он стоит на каком-нибудь объекте.
4Включен, если Соник прыгает в свернутом в клубок состоянии.
5Включен, если что-то толкает.
6Влючен, если Соник под водой.
7Не используется.
$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--
08LZБрызги воды
09-Соник в Special Stage
0ALZМаленькие пузырики и цифры оставшегося воздуха
0BLZОткрывающийся и закрывающийся проем
0CLZПодвижная дверь
0DSingpost
0E-Соник на тайтл скрине
0F-"PRESS START BUTTON" и "TM" на тайтл скрине
10--
11GHZМост
12SYZПрожектор
13MZ/SLZНевидимый объект, выстреливающий шарики лавы
14MZ/SLZШарики лавы
15GHZ/MZ/SLZКачающиеся на цепи платформы
SBZКачающийся на цепи колючий шар
16LZГарпун
17GHZКолючка, вращающаяся вокруг бревна (в игре не использовано)
18GHZ/SYZ/SLZПлатформы
19--
1AGHZРассыпающийся островок
1BLZПоверхность воды
1CGHZОпора моста
SLZШтука, стреляющая шариками лавы
1D-Переключатель, который активируется после нажатия (в игре не использовано)
1ESBZBallhog
1FGHZ/SYZCrabmeat
20SBZВзрывающиеся шары, которые бросает Ballhog
21HUD
22GHZ/MZ/SYZBuzz Bomber
23GHZ/MZ/SYZЛазерный шар, который выстреливает Buzz Bomber
24Взрыв от уничтоженного монитора
25Кольца
26Мониторы
27Взрыв от уничтоженных бадников
28Животные
29Очки, вылетающие из уничтоженных объектов
2ASBZДвери
2BGHZChopper
2CLZJaws
2DLZBurrobot
2EСодержимое мониторов
2FMZБольшие подвижные платформы
30MZБольшие зеленые колонны
31MZПадающие металлические блоки на цепях
32MZ/SYZ/LZ/SBZПереключатели
33MZ/LZБлоки, которые можно толкнуть
34Названия зон (Title Cards)
35Огненные шары, появляющиеся на тонущих платформах
36Шипы (Spikes)
37Кольца, которые вылетают когда Соника ранили
38Shield и Invincibility Stars
39Надписи "GAME OVER" и "TIME OVER"
3AЭкран "SONIC GOT THROUGH" в конце уровней
3BGHZКамень
© 2004-2018, Vladikcomper
E-Mail: [email protected]