Перейти к содержимому
DeidaraNT

Помощь по ромхакингу

Рекомендуемые сообщения

можно как то настроить объект допустим из Marble Zone,что бы он работал на зоне Green Hill?

 

На самом деле объекты могут работать абсолютно в любой зоне, так как структуры объектов, форматы спрайтов и анимаций для объектов во всей игре одинаковые. Единственная проблема - тайлы, или арт. Объект рассчитывает, что в видеопамяти (VRAM) на некотором оффсете XXXX есть нужные ему тайлы. Но так выходит, что Marble Zone на оффсете XXXX есть эти тайлы, а в Green Hill Zone там совершенно другое. Объекту по большому счету наплевать, что там. Какие тайлы есть - такие и отобразятся, на самом объекте это никак не скажется. Будь колона из MZ трижды покрыта рандомными тайлами в другой зоне - она везде будет выполнять свой объектовый долг одинаково хорошо.

 

Решение проблемы довольно простое и требует минимум программирования, есть лишь одна неприятная загвоздка. Если хочешь в GHZ добавить объект из MZ, нужно найти, куда бы разместить его тайлы. Места в видеопамяти всегда не хватает. Обычно чем-то придется пожертвовать.

 

* * *

 

Для наглядности покажу, как выглядит суровая видеопамять, или VRAM:

 

VRAM.gif

Так она используется конкретно в GHZ, в MZ многие тайлы будут другими. Только HUD, мониторы, кольца и Соник есть во всех зонах и сидят на одном месте. Тайлы GHZ выглядят так, потому что на этом снимке все они носят палитру Соника (потому что в VRAM за тайлами не закреплена информация, о том, к какой палитре каждый принадлежит, это устанавливается самим спрайтами и планами).

 

VRAM, как видишь, вся почти забита. Кстати, советую хотя бы раз на это взглянуть своими глазами - скачай например, эмулятор Exodus и понаблюдай за видеопамятью - интересное зрелище, к тому же это помогает многое осознать.

 

* * *

 

Но вернемся к старой проблеме. Как поставить объект из MZ в GHZ? В свете того, что я говорил этот вопрос приобретает другую форму: как загрузить тайлы нужного объекта и заставить объект использовать именно их?

 

Для примера я возьму объект Obj30 - Большая зеленая колонна из MZ (англ. Object 30 - large green glassy blocks).

 

Позаботимся о тайлах - это пару пустяков. Открой _inc\Pattern Load Cues.asm и посмотри какой арт (тайлы) загружается в MZ - найди в файле лейбел "PLC_MZ". Пробежимся глазами по списку загружаемого арта и тут же найдем:

 

 dc.l Nem_MzGlass ; green glassy block
 dc.w $71C0

 

"Грин глэсси блок" - именно так называется наш объект, это то что нужно! Формат данных: оффсет загружаемого арта в РОМе (откуда загружать), оффсет VRAM (куда загружать).

 

Теперь перейдем к "PLC_GHZ". Нужного количества свободного места мы не найдем, так что тут к сожалению придется чем-то пожертвовать. Для примера, давай пожертвуем гигантским GHZ шариком, его использует только босс. Просматриваем список пока не найдем:

 

 dc.l Nem_Ball  ; giant ball
 dc.w $7540

 

Загрузим на это место тайлы MZ колонны. Для этого достаточно заменить "Nem_Ball" на "Nem_MzGlass".

Дело сделано!

 

* * *

 

Теперь надо заставить объект брать тайлы из нового места, но только в GHZ. Найди в sonic1.asm лейбел "Obj30".

 

Где объект указывает, какие тайлы он использует? В слове (word) 2 своей струтуры. Значит, нужно пробежаться глазами по коду и искать место, где фигурирует 2(a0), или в запущенных случаях, 2(a1).

 

Пробегаемся глазами - спустя несколько экранов кода, чуть ниже лейбела "Obj30_Load" находим:

 

  move.w #$C38E,2(a1)

 

2(a1) - запущенный случай. Дело в том, что объект сложен и загружает дочерние объекты.

 

Если объект размещен в GHZ, нужно записать в это слово другое значение. В нем указывается оффсет VRAM, правда с некоторыми преобразованиями. В нашем случае оффсет - $7540 (см. выше). Не буду вдаваться в подробности - оффсет надо разделить на $20, а еще в этом слове можно указать палитру, которую использовать.

 

Соберем все вместе, и voi-la:

 

    move.w    #$C38E,2(a1)    ; палитра и тайлы для MZ
   tst.b    ($FFFFFE10).w    ; зона = 0 (GHZ?)
   bne.s    @Skip        ; если нет, переход
   move.w    #(1<<13)+($7540/$20),2(a1)    ; палитра и тайлы для GHZ

@Skip:

 

Замени строчку выше на этот код и дело сделано. (1<<13) задает палитру, 1 можно заменить на число от 0 до 3 чтобы выбрать другую палитру.

 

Итак, теперь можно идти в SonED и размещать в GHZ объект 30. Правда палитра может преподнести сюрпризы, в GHZ она отличается. Но это уже совсем другая история ;)

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

Замечательный пост, будет жалко, если он так и затеряется в дебрях темы, поэтому внес ссылочку в Базу гайдов.

Поделиться сообщением


Ссылка на сообщение

Спасибо огромное за помощь,если просто поставишь объекты из MZ допустим в GH то палитра будет жестко глючить,поэтому и хотелось чтобы допустим к примеру лава работала с нормальной палитрой в GH (просто к примеру)

Поделиться сообщением


Ссылка на сообщение
если просто поставишь объекты из MZ допустим в GH то палитра будет жестко глючить

 

Глюком это никак не назовешь. Чтобы было все нормально, нужно лишь посмотреть, в какой строчке палитры нужной зоны (в SonEd'е) есть хотя бы близкие к нужной палитре цвета и сделать отдельный спрайт для этого объекта. Смотрим, какие цвета нам нужны в нужной строчке и запоминаем их ID:

 

0B 1B 34 30 0F 00 10 20 0F 20 10 00 0F 13 23 33

 

С помощью тайлового редактора (например, yy-chr), перекрашиваем спрайт в нужные цвета и сохраняем.

 

хотелось чтобы допустим к примеру лава работала с нормальной палитрой в GH

 

С лавой не все так просто - насколько я знаю, там замешаны циклические палитры.

Изменено пользователем Cool-Spot

Поделиться сообщением


Ссылка на сообщение

С лавой не все так просто - насколько я знаю, там замешаны циклические палитры.

Нет, там циклические тайлы. Сами тайлы обновляются через определенное время, к тому же программа их загрузки периодически "двигает" содержимое тайлов, это довольно сложный процесс, смещаются начала и концы тайлов. В результате создается эффект движения лавы, в то время как сами тайлы неподвижны.

Поделиться сообщением


Ссылка на сообщение

Вопрос: я разрабатываю, ну допустим, пауер ап, и мне надо чтоб он повышал прыжок.

Кто может помочь? (монитор)

 

Я не понимаю принцип работы д1 д0 и т.д

 

Есть ли место где собраны все хаки?

Поделиться сообщением


Ссылка на сообщение
Есть ли место где собраны все хаки?

Максимум найдешь тут: http://info.sonicret.../Category:Hacks

Изменено пользователем Razor_ua
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

Ну мне типа неловко за себя. Это музыка, которую я конвертил.

 

Ну мне типа неловко за себя, вот мною сконверченные три песенки.

В помощь.

Поделиться сообщением


Ссылка на сообщение
Ну мне типа неловко за себя. Это музыка, которую я конвертил.

 

Ну мне типа неловко за себя, вот мною сконверченные три песенки.

В помощь.

И где они?

И не ошибся ли ты, случайно, темой или постом?

Во всяком случае, я не вижу логики между двумя последними постами и не вижу сконвертированной музыки. Что ты хотел сказать?

Изменено пользователем S_T_D

Поделиться сообщением


Ссылка на сообщение

<p>

И где они?

И не ошибся ли ты, случайно, темой или постом?

Во всяком случае, я не вижу логики между двумя последними постами и не вижу сконвертированной музыки. Что ты хотел сказать?

 

Я, пока писал, (автосохранилось сообщение) подумал, может 3 песни это больно мало (тем более они не идеальны).

Изменено пользователем Suler

Поделиться сообщением


Ссылка на сообщение

Всем привет.У кого нибудь есть ссылка на гид по вставке Level Select из Sonic 2 в Sonic 1?

Поделиться сообщением


Ссылка на сообщение

Я на форуме SSRG его где то видел давно,но сейчас не могу найти.

Поделиться сообщением


Ссылка на сообщение

Я на форуме SSRG его где то видел давно,но сейчас не могу найти.

Раздел с гидами на SSRG закрыт для гостей. Чтобы увидеть его и еще почти десяток других интересных разделов нужно создать там аккаунт.

Хотя, гид который ты ищешь так же можно найти на Соник Ретро: http://info.sonicretro.org/SCHG_How-to:Sonic_2_%28Simon_Wai_Prototype%29_Level_Select_in_Sonic_1

Поделиться сообщением


Ссылка на сообщение

Раздел с гидами на SSRG закрыт для гостей. Чтобы увидеть его и еще почти десяток других интересных разделов нужно создать там аккаунт.

Хотя, гид который ты ищешь так же можно найти на Соник Ретро: http://info.sonicret...lect_in_Sonic_1

Спасибо

Поделиться сообщением


Ссылка на сообщение

Всем привет.У кого нибудь есть ссылка на гид по вставке Level Select из Sonic 2 в Sonic 1?

А ещё есть уже готовый полноценный Source Code.

Поделиться сообщением


Ссылка на сообщение

Всем привет. Можно ли расширить палитру sonic.bin или как сделать, чтобы персонаж использовал отдельную палитру ?

Поделиться сообщением


Ссылка на сообщение
Можно ли расширить палитру sonic.bin

 

Нельзя. Сега не потянет.

 

как сделать, чтобы персонаж использовал отдельную палитру

 

А разве оно не есть так?

Поделиться сообщением


Ссылка на сообщение

А разве оно не есть так?

Нет, не есть. Палитра персонажа связана с многими другими элементами игры.Как вариант - скопировать палитру, задать другое имя, подкоррэктировать код и всё.

Изменено пользователем Suler

Поделиться сообщением


Ссылка на сообщение
Как вариант - скопировать палитру, задать другое имя, подкоррэктировать код и всё.

 

Lolwut? Нужно просто задать спрайтам, использующим палитру Соника другую строчку палитры и перекрасить их в нужные цвета, как я писал тут.

Изменено пользователем Teffycom

Поделиться сообщением


Ссылка на сообщение

Кто ниубдь знает,есть ли программа,которая smps обратно в xm конвертит?

Поделиться сообщением


Ссылка на сообщение

Lolwut? Нужно просто задать спрайтам, использующим палитру Соника другую строчку палитры и перекрасить их в нужные цвета, как я писал тут.

 

Там очень много объектов, использующие спрайт соника. Неужели нельзя поставить другую строчку палитры только спрайтам персонажа, и может я ошибаюсь, но в палитре Соника только одна строчка.

 

Как вариант - скопировать палитру, задать другое имя, подкоррэктировать код и всё.

 

Я тоже так думал, перед тем как задать вопрос. Я еще новичок и плохо знаком с исходным кодом игры. Могу только ставить условия, переходы и блокирования способностей и т.п. Кроме как Pal_Sonic: incbin pallet\sonic.bin я не нашел и хочу узнать узнать кто и где использует этот Pal_Sonic. Может я и много прошу, но для меня это самый важный вопрос.

Изменено пользователем Trollface

Поделиться сообщением


Ссылка на сообщение
Там очень много объектов, использующие спрайт соника. Неужели нельзя поставить другую строчку палитры только спрайтам персонажа, и может я ошибаюсь, но в палитре Соника только одна строчка.

 

Что за бессвязный бред? Зачем ставить Сонику другую строчку палитры, если у него есть своя? Другие строчки используются другими составными уровня, и поменять что-то одно, основательно не нарушив что-то другое - невозможно. Палитру Соника используют не так много объектов. Это некоторые бадники (Баззбомбер, Мотобаг и т.д.) и предметы (например, пружины), нужно всего лишь сделать так, чтобы они использовали другую строчку палитры (не сониковскую) и перекрасить в нужные цвета.

 

Я тоже так думал, перед тем как задать вопрос. Я еще новичок и плохо знаком с исходным кодом игры. Могу только ставить условия, переходы и блокирования способностей и т.п. Кроме как Pal_Sonic: incbin pallet\sonic.bin я не нашел и хочу узнать узнать кто и где использует этот Pal_Sonic. Может я и много прошу, но для меня это самый важный вопрос.

 

Всего четыре строчки палитры по 16 цветов и они уже используются игрой на 100%, новую НИКАК не добавить, это аппаратное ограничение приставки.

Поделиться сообщением


Ссылка на сообщение

Похоже мы сначала не правильно друг-друга поняли на счет рядов палитры. Спасибо за ответ.

Поделиться сообщением


Ссылка на сообщение

Сконвертил миди в иксэм, сократил каналы, вроде мелодия в мод плаге звучала нормально, а в смпс полный гамно. Может ли это быть связанно с тем, что я задействовал Пэгээшки?

И можно ли увеличить кол-во тилей для ч-л?

Изменено пользователем Suler

Поделиться сообщением


Ссылка на сообщение
Сконвертил миди в иксэм, сократил каналы, вроде мелодия в мод плаге звучала нормально, а в смпс полный гамно. Может ли это быть связанно с тем, что я задействовал Пэгээшки?

 

Это может быть связано с тем, что ты хреново сконвертил.

 

И можно ли увеличить кол-во тилей для ч-л?

 

0_o

Поделиться сообщением


Ссылка на сообщение

Как определить, что объект коснулся земли и возможно ли определить координаты этого соприкосновения ?

Поделиться сообщением


Ссылка на сообщение

Блин, сколько уже я мучаюсь над этой проблемой (спрашиваю у высших разумов)

Как сделать, чтобы в Sonic 2 была на разных актах разная музыка и палитра. Плиз оч. надо. (музыки полно)

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×