|
Перевод Spyro 3: Взлом и программы
|
|
| aleksusklim | Сообщение # 1 Воскресенье, 26.06.2011, 14:19 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Работа с текстовой частью перевода введётся на code.google.com/p/spyro3-rus, обсуждение перевода (а не взлома) В темеПеревод Spyro 3: Текст В этой теме происходит обсуждение перевода, а также создание софта для потрошения игры. Важные сообщения: Структура WAD-файлов Спец. символы и File Paint 1 | Извлечение и добавление текста | О звуке | В продолжение о звуке | Вариант перевода Buzz's Dungeon и Midday Gardens
Сообщение отредактировал aleksusklim - Среда, 29.04.2015, 19:51 |
| |
| |
| aleksusklim | Сообщение # 406 Понедельник, 15.07.2013, 00:21 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Гляньте-ка, вам это ничего не напоминает? Оу да, это оно!
(Дело за масштабом по высоте…)
UPD:
Цитата (DrWho) Это откуда? Платиновая версия? По-подробнее, если можно.
Что откуда что?
Откуда арена -- Dino Mines, скрытый подуровень, есть везде.
Откуда первый скрин? Ну так это я вытащил модель мира себе в 3DsMax... Пока криво, но уже многообещающе!
Выяснил угол обзора игровой камеры: http://klimaleksus2.ucoz.ru/Files/REPEAT/mod_01.png И он примерно 70 градусов: http://klimaleksus2.ucoz.ru/Files/REPEAT/mod_02.png (а это очень много, стандартный угол – 45, как в Контре) Потом сделаю более точное сравнение. Плюс, я так до сих пор не понимаю, какая должна быть высота (у меня два варианта, и один вдвое больше другого).
На самом деле в уровне две разных модели – одна для близких ракурсов с текстурой, другая – LOD для видов издалека и без текстуры. Ни одна не имеет нормалей, только цвета вершин. Причём на LOD версии они сближены с реальными цветами уровня, а на модели крупного плана без наложения нужных текстур (верхний скрин) расцветка неестественная.
Цвета, кстати, могут быть какие угодно: http://klimaleksus2.ucoz.ru/Files/REPEAT/mod_03.jpg 3DsMax: http://klimaleksus2.ucoz.ru/Files/REPEAT/mod_04.jpg (а здесь вдвое растянуто по высоте, и камера 45 градусов, LOD модель)
Обе модели мира различаются в кодировке полигонов, с моделью близкого ракурса у меня пока проблемы…
Скоро закончу, выложу программу и распишу формат данных! А пока: http://klimaleksus2.ucoz.ru/Files/REPEAT/mod_05.jpg Ну не круто ли?
P.S Да что ж такое, Ucoz так и норовит удалить мой сайт!! Обещают только через 40 дней, но ведь и месяца не прошло!
Цитата (DrWho) Босса хотите создать?
Да нет ещё.
UPD:
Да, забыл сказать, что уровни – не цельные модели! http://klimaleksus2.ucoz.ru/Files/SWIM/world_01.jpg Они состоят из многих кусочков, логически никак не связанных: http://klimaleksus2.ucoz.ru/Files/SWIM/world_02.jpg
Без привычной расцветки его даже не всегда можно узнать: http://klimaleksus2.ucoz.ru/Files/SWIM/world_03.jpg В этом, например, было аж 154 кусочка! http://klimaleksus2.ucoz.ru/Files/SWIM/world_04.jpg
Нормальную высоту подобрать не могу… http://klimaleksus2.ucoz.ru/Files/SWIM/world_05.jpg Первый вариант: http://klimaleksus2.ucoz.ru/Files/SWIM/world_06.jpg И второй… http://klimaleksus2.ucoz.ru/Files/SWIM/world_07.jpg
Один явно больше, а другой чуть-чуть недотягивает! Угол камеры, кажется, реально 70 градусов: http://klimaleksus2.ucoz.ru/Files/SWIM/world_08.jpg Высота не верна, но горизонт идеален: http://klimaleksus2.ucoz.ru/Files/SWIM/world_09.jpg Но низкая действительно ниже: http://klimaleksus2.ucoz.ru/Files/SWIM/world_10.jpg С углом 45 точка обзора была бы другая, как и панорама: http://klimaleksus2.ucoz.ru/Files/SWIM/world_11.jpg
…Что с высотой делать ума не приложу – либо такая, либо вдвое выше. Но нужна средняя.. не думаю, что игра бы стала просто так умножать на 1,25 или 1,5…
С основной моделью уровня новая проблема. Она перекрашивается! Подборка скринов, цвета: синий – LOD модель, красный – основной цвет главной модели, зелёный (кроме уголочка, а которому приближаюсь, тот должен быть красным) – «далёкий» цвет близкой модели: http://klimaleksus2.ucoz.ru/Files/SWIM/swim_1.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_2.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_3.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_4.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_5.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_6.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/swim_7.jpg
И что теперь делать, три модели что-ль выгружать!?
but nobody came
Сообщение отредактировал aleksusklim - Вторник, 16.07.2013, 19:07 |
| |
| |
| DrWho | Сообщение # 407 Понедельник, 15.07.2013, 01:18 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (aleksusklim) Гляньте-ка, вам это ничего не напоминат? Это откуда? Платиновая версия? По-подробнее, если можно.Добавлено (15.07.2013, 01:18) ---------------------------------------------
Цитата (aleksusklim) Откуда арена -- Dino Mines, скрытый подуровень, есть везде. Я знаю что это за арена, просто дизайн арены по-другому построен был, отсюда и спросил.
Цитата (aleksusklim) Ну так это я вытащил модель мира себе в 3DsMax... Пока криво, но уже многообещающе! Босса хотите создать?
|
| |
| |
| aleksusklim | Сообщение # 408 Среда, 17.07.2013, 00:16 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Цитата (aleksusklim) С основной моделью уровня новая проблема. Она перекрашивается!
В этом, оказывается, и была вся загвоздка. У меня ячейка с кол-во цветов занимает 1 байт. Но при этом под цвета отдано вдвое больше памяти, чем там указано. Ну я тупо множил на два и высчитывал.
Логической ошибки нет, но на некоторых моделях этот байт был больше 127 (а общее количество цветов больше 255, что тоже логически невозможно, поскольку индекс использования также однобайтовый), и тогда результат моего умножения уже не помещался в один байт и обрезался по модулю 256, и из-за чего прога отсчитывала намного меньше данных и не оттуда читала полигоны…
Цитата (aleksusklim) И что теперь делать, три модели что-ль выгружать!?
Реально пришлось выгружать три модели, и стало ясно, почему указано вдвое меньше цветов. Каждый цвет высокополигональной версии модели плавно перетекал в цвет низкополигональной версии по мере того, как исчезает текстура. А поскольку кол-во вершин в обычной и LOD моделей разное, разработчикам пришлось явно сдублировать цвета на высокополигональную модель, и они указываются подряд (если «10» цветов – то реально будет двадцать: первый десяток это освещение для текстур, а второй – фоновый цвет).
Масштаб по высоте пока остаётся загадкой…
Пока ковырял Midday Gardens, был удивлён льдом: http://klimaleksus2.ucoz.ru/Files/SWIM/world_12.jpg
Оказывается «отражение» – это не отражение, а просто сдублированный потолок! То-то я думаю, почему в нём только пещера и отражается… А по игре так просто не скажешь: http://klimaleksus2.ucoz.ru/Files/SWIM/world_13.jpg
Но «подо льдом» даже можно ходить! Это наверно не новость, но я не знал и был поражён: http://klimaleksus2.ucoz.ru/Files/SWIM/world_14.jpg
А во льду-то не всё отражается! Вампирский огонь: http://klimaleksus2.ucoz.ru/Files/SWIM/sparx.jpg И Спаркс, как видно, без своего «свечения».
Мало того, он ещё и рассинхронизирован по фазе горизонтальных колебаний. Анимация верная, координаты верные, но колебания «из стороны в сторону» у них одинаковые, а должны быть противоположными: http://klimaleksus2.ucoz.ru/Files/SWIM/sparx.3gp Это две разные стрекозы! И уж наверное, совсем другой объект.
А что до моделей миров – всё готово! Карта светотени: http://klimaleksus2.ucoz.ru/Files/SWIM/world_15.jpg Основная палитра: http://klimaleksus2.ucoz.ru/Files/SWIM/world_16.jpg Модель низкого качества: http://klimaleksus2.ucoz.ru/Files/SWIM/world_17.jpg
Awesome!
UPD:
Всё-таки открытие реально потрясающее! Оказалось я взломал даже больше, чем задумывал: http://klimaleksus2.ucoz.ru/Files/SWIM/world_18.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_19.jpg С фоном и повышенным до 110 градусов углом обзора, фронтальный ракурс: http://klimaleksus2.ucoz.ru/Files/SWIM/world_20.jpg Это повод временно поменять аватарку…
Завтра выложу саму прогу!
Не похоже, чтобы где-то рядом были золотые буквы. Хотя я даже листинг координат текстур не нашёл. Индексы есть, а распиновки на них нет…
but nobody came
Сообщение отредактировал aleksusklim - Четверг, 18.07.2013, 00:50 |
| |
| |
| steeldragon | Сообщение # 409 Среда, 17.07.2013, 10:45 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Действительно - здорово! aleksusklim, а моделей букв вы не встречали во вторых субфайлах уровня? Просто с этими моделями всё не так просто. Я пересмотрел почти все субфайлы, но не в одном из них букв нет. Могут эти буквы быть, как и двумерный шрифт, в каждом файле уровня?
|
| |
| |
| DrWho | Сообщение # 410 Среда, 17.07.2013, 13:12 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (steeldragon) Могут эти буквы быть, как и двумерный шрифт, в каждом файле уровня? Поскольку там же находится шрифт текста (по идее), видимо там и золотые буквы должны быть. Либо надо проверять домашние миры, ибо буквы могут быть там.
|
| |
| |
| steeldragon | Сообщение # 411 Пятница, 19.07.2013, 22:58 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата (DrWho) Поскольку там же находится шрифт текста (по идее), видимо там и золотые буквы должны быть. Либо надо проверять домашние миры, ибо буквы могут быть там. Я тоже так думаю. Проблема в том, что искать их там сложновато...
... aleksusklim, я тут подготовил небольшой справочник по инструкциям r3000-ассемблера (примерно на сотню инструкций), надеюсь, будет полезен: https://dl.dropboxusercontent.com/u....ons.rar (xls и ods таблица) Также рекомендую посмотреть эти ссылки, может быть, найдёте что-то нужное: http://gfaq.ru/publ....-0-1937 http://gfaq.ru/publ....-0-1938 http://gfaq.ru/publ....-0-1939 http://gfaq.ru/publ....-0-1941 http://gfaq.ru/publ....-0-1942
Это ну очень большая статья об устройстве приставки (аж в четырёх пяти частях). Если верить этой статье, то всего доступно 120 инструкций, то есть, моя таблица почти полная... ... Плюс я почти закончил конвертер OBJ в модели букв Spyro 1, но это совсем другая история...
Сообщение отредактировал steeldragon - Суббота, 20.07.2013, 08:10 |
| |
| |
| DrWho | Сообщение # 412 Суббота, 20.07.2013, 15:27 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (steeldragon) Проблема в том, что искать их там сложновато... Кстати, а в 1м Спайро как, также структура устроена золотых букв на порталах?
|
| |
| |
| steeldragon | Сообщение # 413 Суббота, 20.07.2013, 18:41 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата (DrWho) Кстати, а в 1м Спайро как, также структура устроена золотых букв на порталах? Именно, что нет! Иначе давно бы поиском по файлу нашли... (сами модели, на мой взгляд, ничуть не изменились)
Цитата (aleksusklim) Не похоже, чтобы где-то рядом были золотые буквы. Хотя я даже листинг координат текстур не нашёл. Индексы есть, а распиновки на них нет… Плохо. И где же их искать...
|
| |
| |
| DrWho | Сообщение # 414 Суббота, 20.07.2013, 21:57 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
steeldragon, какая-то странная структура файлов тогда.
|
| |
| |
| aleksusklim | Сообщение # 415 Воскресенье, 21.07.2013, 01:28 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Ух-ты, оказывается, моя программа делает гораздо больше, чем я задумывал… Она вытаскивает модели миров не только их всех уровней и подуровней, сценок, фрагментов из титров и заставок, но она ещё и без труда была перенесена на Spyro2 !
Потестил, проверял триангуляцию полигонов: http://klimaleksus2.ucoz.ru/Files/SWIM/world_21.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_22.jpg Следите за дверью вдали? Меняется полоса освещения. Более явно выглядит так: http://klimaleksus2.ucoz.ru/Files/SWIM/world_23.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_24.jpg (прямоугольник на бордюре, не смотрите на разноцветные треугольники!)
На Spyro1 (включая японскую версию) тоже удалось перенести, но там во-первых LOD полигоны задаются немного по-другому: http://klimaleksus2.ucoz.ru/Files/SWIM/world_25.jpg Там добавлена прозрачность: http://klimaleksus2.ucoz.ru/Files/SWIM/world_26.jpg И перенасыщенное смешивание: http://klimaleksus2.ucoz.ru/Files/SWIM/world_27.jpg (пришлось игнорить… хотя вряд ли она в реальности хоть где-то используется) Во-вторых нет проблемы с двойной высотой, а в-третьих небольшие расхождения в побочных параметрах (инвертирование лицевой стороны и индекс текстуры) – сделал опцию специально под Spyro1.
Кстати, текстуры тоже попытался взломать (они описываются во втором суб-субфайле непосредственно перед моделями, которые я извлекаю), но они жестоко аппроксимируются! Там не просто координаты: http://klimaleksus2.ucoz.ru/Files/SWIM/world_28.jpg (следите за рисунком на стене) А чуть ближе: http://klimaleksus2.ucoz.ru/Files/SWIM/world_29.jpg !! Полигон поделился на четыре угла, и за каждый отвечает по 8 байт (и ещё 8 за большой полигон). Но это цветочки: http://klimaleksus2.ucoz.ru/Files/SWIM/world_30.jpg Ещё ближе – и эти же (кажется) 8 байт будут показывать ещё раз по четыре подтекстуры: http://klimaleksus2.ucoz.ru/Files/SWIM/world_31.jpg Я без понятия как это выгрузить, даже если найду концы – там не просто XYWH, там задан и поворот (да не один), глубина цвета и координаты палитры в VRAM… (то есть я не смогу сохранить модель ни в один формат, ибо 3D требует одной или нескольких текстур, а каждая вершина будет иметь координаты в ней; а в нашем случае каждый полигон может использовать уникальную (да хоть за счёт той же смены палитры!) текстуру – так мне что, каждый полигончик в свою собственную текстуру заворачивать?)
И (чтоб так сказать, плоды моей работы могли наблюдать все желающие, а не только те, у кого есть Блендер или Макс) последнее что я сделал – программу 3D просмотрщик моделей. …и не такой как прошлый раз, а классный.
Навигация в нём лучше и удобнее любого 3D моделёра, ибо предназначен он для свободного «полёта» по модели. Спасибо Википедии («#Матрица поворота вокруг произвольной оси») за формулу вращения точки по вектора в пространстве… Делает неплохие скрины, но размер напрямую зависит от разрешения экрана: http://klimaleksus2.ucoz.ru/Files/SWIM/world_32.jpg Spyro1, какие кристаллы! http://klimaleksus2.ucoz.ru/Files/SWIM/world_33.jpg Кстати, сделал «режим карты» – практический ортогональный (есть незначительная погрешность) просмотр сверху: http://klimaleksus2.ucoz.ru/Files/SWIM/world_34.jpg Реально карты можно делать! Угадайте, откуда: http://klimaleksus2.ucoz.ru/Files/SWIM/world_35.jpg А иногда карты даже информативными получаются: http://klimaleksus2.ucoz.ru/Files/SWIM/world_36.jpg Spyro2: http://klimaleksus2.ucoz.ru/Files/SWIM/world_37.jpg Башенки акварии! Раз, два три.. четыре пять… шесть! Все на месте: http://klimaleksus2.ucoz.ru/Files/SWIM/world_38.jpg А это как устрашающе: http://klimaleksus2.ucoz.ru/Files/SWIM/world_39.jpg
Честно говоря, я потратил больше времени летая по мирам и изучая модели. Это так интересно! А что я искал? Что-нибудь скрытое. Какой-нибудь знак от разработчиков… Полигон вдалеке, невидимый из игры остров, что-нибудь интересное «за спиной» у камеры в сценках…
И мои надежды оправдались!! Это в Spyro1, кажется, финальное видео: http://klimaleksus2.ucoz.ru/Files/SWIM/world_40.jpg Я не хакер, если это Спайро.
(с освещением иногда весело, особенно в «туманных» уровнях, где LOD вообще нет, а основной фоновый цвет серо-голубой).
Пытался найти лучшую модель «замка» (понятно какого, который на аватарке!) между Spyro2 и Spyro3. Нашёл две практически одинаковые копии, отличающиеся лишь триангуляцией: http://klimaleksus2.ucoz.ru/Files/SWIM/world_41.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_42.jpg
…Но вообще-то я хочу ещё взломать небо. А так на простой фон смотреть: http://klimaleksus2.ucoz.ru/Files/SWIM/world_43.jpg как-то не то.
but nobody came
Сообщение отредактировал aleksusklim - Понедельник, 22.07.2013, 00:55 |
| |
| |
| DrWho | Сообщение # 416 Воскресенье, 21.07.2013, 01:55 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Точка пропущена. Скрин не работает из-за этого.
Сообщение отредактировал DrWho - Понедельник, 22.07.2013, 01:14 |
| |
| |
| aleksusklim | Сообщение # 417 Понедельник, 22.07.2013, 01:05 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Цитата (aleksusklim) так мне что, каждый полигончик в свою собственную текстуру заворачивать?
И почему это «каждый»? Там всего 256 потенциальных индексов! Если выдернуть их хотя бы в 128*128, то общий размер текстуры будет 2048*2048, а это вполне приемлемо.
Цитата (aleksusklim) Но вообще-то я хочу ещё взломать небо
Я его нашёл! В том же втором суб-субфайле, ближе к концу, видимых навскидку указателей на себя не имеет. Обнаружил, заменяя файлы уровней – сначала поменял Sunrise Spring и Sunny Villa между собой. Небо осталось родное, а вот музыка в уровнях тоже поменялась, а значит список треков на уровни не хранится в самих уровнях, а записан отдельно. Частично подтверждена теория «бонусной ракеты» псевдо-Базза (о том, что она летит в СуперБонус, хотя он не предназначен для транспортный средств) – вот эта ракета летит в Sunny Villa: http://klimaleksus2.ucoz.ru/Files/SWIM/world_44.jpg
Подменив весь второй субфайл небо тоже поменялось, я всё перерыл и нашёл его: http://klimaleksus2.ucoz.ru/Files/SWIM/world_45.jpg Отвратительный формат! На рисунке – ОДИН полигон: первая вершина красная, вторая зелёная (общая для всех), третья синяя, четвёртая белая, потом чёрная, розовая и пошло по кругу до светло серой, последняя – тёмно серая. Зависимостей ещё больше чем у LOD или двумя расцветками основного мира – здесь первая вершина хранится отдельно от двух других, причём три цвета рядом с ней + число от 0 до 7 – дополнительное кол-во вершин и их цветов, которые надо считать. Все данные следуют сплошным потоком без всяких разделителей, и стоит изменить одно число, как сдвигается вся последовательность, а на небе происходит термоядерный взрыв…
Раскусить формат оказалось лишь половиной задачи, ибо я смог-таки выгрузить всё небо так как оно лежит в ресурсах (ну с точностью до масштаба по осям, поворота или отражения). Но собрать этот паззл у меня никак не получается… Ни один скриншот не покажет всей 3D сути, так что вот видео: http://klimaleksus2.ucoz.ru/Files/SWIM/villa.avi (ставьте на паузу, чтобы рассмотреть повнимательней)
И что с этим делать!? Его словно вывернули наизнанку… Я всё надеюсь что-то вычесть или знак поменять, помножить на что-нибудь или развернуть, чтобы все осколочки чудесным образом собрались в ровненький купол, но пока лучшее, что получилось – это то, что на видео. И бесполезно выбирать точку обзора, менять поле зрения камеры или пытаться увеличить сферу до бесконечности… Хуже всего то, что я использовал абсолютно все данные, которые относятся к модели, то есть для меня нет неразгаданных областей. Осталось правильно интерпретировать имеющееся…
steeldragon, у вас здорово получается находить в интернете полезную информацию, может капнёте что-нить про небо? Вдруг где-то будет объясняться, как делалось небо в разных играх на PlayStation. Это же модель. Я например, знаю только два вида неба – сферическая текстура (неплохая панорама, но на полюсах вверху и внизу словно «пупок» растёт…), шеститекстурный SkyCube (который, типа, даёт хороший обзор, но сколько я его видел – так везде это реальный куб, все углы напоказ, как в Контре…), однако это не помешало мне для YoyoSpyrO сделать своё небо – огромная икосаэдрическая сфера, которую я размалевал разными цветами без текстуры – и на мой взгляд, это было самое красивое и правдоподобное небо, хотя без детализации и весьма расплывчатое. Но облака и солнце я хотел накладывать поверх…
Ucoz, похоже, возненавидел мой сайт и всё стремится его во что бы то не стало уничтожить! Его не волнует что файлы скачиваются, даже наоборот – я сам качал файл со своего сайта, так на 98% закачка оборвалась с ошибкой «файл отсутствует на сервере». Снова пришлось кликать по ссылке на почте. Кажется, всё реально наоборот. Чем больше скачивается файлов, тем быстрее сгорает время жизни сайта. Им обязательно нужно, чтобы посещалась основная страница (наверное). А если я на бесплатном хостинге с поддержкой PHP (а такие есть) напишу скрипт, который будет сам и через прокси-сервера открывать мою заглавную страницу (и кликать на рекламу…) один раз каждый день – Ucoz тогда успокоится?
Цитата (DrWho) Точка пропущена. Скрин не работает из-за этого.
Спасибо. И вам обратный совет: чтобы ссылки в цитатах нормально интерпретировались, ставьте пробелы после и перед ними.
but nobody came
|
| |
| |
| DrWho | Сообщение # 418 Понедельник, 22.07.2013, 01:15 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (aleksusklim) напишу скрипт, который будет сам и через прокси-сервера открывать мою заглавную страницу (и кликать на рекламу…) один раз каждый день – Ucoz тогда успокоится? Может, проще попробовать альтернативный вариант? К примеру на яндекс. диск залить файлы. Или хотя бы забэкапить куда-нибудь файлы с сайта. А то потерять столько добра жалко будет.Добавлено (22.07.2013, 01:15) ---------------------------------------------
Цитата (aleksusklim) И вам обратный совет: чтобы ссылки в цитатах нормально интерпретировались, ставьте пробелы после и перед ними. Ну, это не принципиально, но можно.
|
| |
| |
| steeldragon | Сообщение # 419 Понедельник, 22.07.2013, 11:14 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата (aleksusklim) steeldragon, у вас здорово получается находить в интернете полезную информацию, может капнёте что-нить про небо? Вдруг где-то будет объясняться, как делалось небо в разных играх на PlayStation. Это бесполезно. (по большинству запросов о взломе игр Spyro1-3 выводит обратно к нам, про небо же не объясняется ровным счётом ничего по любому запросу, который я могу придумать.)
В ходе поисков вспомнил про опцию графического плагина Line Mode. Оказывается, вы просто неудачно выбрали уровень... У Sunny Villa небо не сфера, а что-то, близкое к этому вашему "термоядерному взрыву": 1) https://dl.dropboxusercontent.com/u....pg Кусок сферы (снаружи). Середина маскируется под солнце. 2) https://dl.dropboxusercontent.com/u....pg Какая-то непонятная конструкция.
А вот у Sunrise Spring - нормальная сфера: https://dl.dropboxusercontent.com/u....pg
Цитата (aleksusklim) Если выдернуть их хотя бы в 128*128 8-битные текстуры по 32x32, 4-х битные не больше.
Сообщение отредактировал steeldragon - Понедельник, 22.07.2013, 14:10 |
| |
| |
| aleksusklim | Сообщение # 420 Суббота, 27.07.2013, 23:41 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
steeldragon, отбой, уже не нужно. Я и сам допёр, что с небом делать…
Просто там странная математика: к локальным координатам вершин в кусочке по иксу надо прибавлять глобальные координаты самого кусочка, а по игреку и зет – вычитать их! Так и думал, что мой любимый метод написания кода – наугад – работает и работает.
А насчёт многоугольных полигонов оказалось, что общая точка, к которой сходятся все новые треугольники, может меняться прямо по ходу определения этих треугольников: http://klimaleksus2.ucoz.ru/Files/SWIM/world_46.jpg Это по-прежнему ОДИН полигон.
Теперь все кусочки неба: http://klimaleksus2.ucoz.ru/Files/SWIM/world_47.jpg извлекаются идеально: http://klimaleksus2.ucoz.ru/Files/SWIM/world_48.jpg Разве что я не следил за лицевой стороной, ибо игра визуализирует обе (то есть «снаружи» небо такое же видимое, как и изнутри)
А с учётом умения собирать паззл в полусферу имею грандиозный купол: http://klimaleksus2.ucoz.ru/Files/SWIM/world_49.jpg Небо взломано! Любое: http://klimaleksus2.ucoz.ru/Files/SWIM/world_50.jpg
Фоновый цвет земли (низа неба) лежит прямо там же, так что всё почти готово. Может-таки ломануть ещё и текстурки? Хотя бы на «средней дальности» – в нормальном качестве (4 по углам), но без второго учетверения…
Цитата (steeldragon) 8-битные текстуры по 32x32, 4-х битные не больше.
Проблема в том, что игра может выхватить из VRAM хоть его целиком (512*512) и напялить это на огромный квадрат, причём качество будет соответствующее. И даже мой 128*128 его ухудшит, не говоря уже об 32*32. Но обратно же, игра может один пиксель точно так же растянуть во всю землю, но его качество будет отстойным в любом случае, хоть даже я его в 1024*1024 выгружу… Я же не буду замерять площадь всех полигонов, на которые нацеплена каждая из 256 текстур (и они не обязательно уникальные, одна может содержать другую или быть отражена/наклонена – так что резать VRAM тоже не выход, тайлы надо именно вытаскивать из него по координатам), ведь полигоны бывают ещё и треугольные и чёрти как растянутые…
Добавлено (25.07.2013, 00:48) --------------------------------------------- О, ну наконец-то я приручил небо как следует. К сожалению у небес неустранимый дефект – звёзды, планеты и прочие прелести, которые есть на некоторых небосводах, оказывается, накладываются не изнутри сферы, а снаружи. Она как бы вывернута наизнанку. Поэтому сделать хорошую визуализацию через 3DsMax не получится, но зато снаружи смотрится прикольно.
Зато Game Maker с его ущербным 3D движком поддерживает-таки «hidden» флаг, определяющий, надо ли не рисовать что-то, если оно загораживается чем-то другим. Проще говоря, если я сначала рисую стену, а потом стол за ней, то стол, естественно, нарисован не будет, хотя в последовательности рисования он идёт после него и должен как бы замазать стену. Так работает обычная 3D графика.
А небо в Spyro отрисовывается в любом случае и в первую очередь.
Небо не может загородить ни один объект (а вы думали оно какого размера? Сам уровень в несколько раз больше небосвода, но всегда рисуется поверх него), а «само себя загородить» может: сначала вырисовывается общая сфера, а в конце – все украшательства вроде звёзд. И они накладываются поверх, несмотря на то, что физически расположены с другой стороны.
К счастью, Game Maker с выключенным «hidden» поступает точно так же, и просто затирает звёздами часть основной сферы, и небо у меня выглядит 1:1 как в самой игре.
Кстати, небо Spyro1 функционально отличается от небес Spyro2 и 3, где полигоны многоугольные. Здесь же все полигоны исключительно треугольные и гораздо проще устроены. Зато индексы вершин и цветов двухбайтовые, да и по размеру всё это больше места занимает. Но я так понял, что во времена Spyro1 не было нужны особо экономить свободное пространство, да и на LOD моделях они неплохо отыгрались – те значительнее отличаются по количеству полигонов от основных моделей, чем в Spyro3, где LOD зачастую практически совпадает с моделью для текстур.
…у меня в файлах теперь бардак какой-то. Сначала это была одна программа, которая конвертировала предварительно извлечённые данные модели уровня в obj формат. Потом я нашёл LOD и нетекстурированную модель, поэтому сделал опции командной строки – какую именно модель выгружать. Потом я стал подгонять это под Spyro1, и (поскольку различия были небольшие, но зато почти везде…) весь код превратился в условия, опрашивающие эти опции – короче, код забыдлокодился окончательно, и никто кроме меня в нём бы не разобрался (я и сам с трудом). Дальше я вбухал туда поисковик моделей, который двумя способами ищет их – по указателям и просто так пропарсивая весь файл по косвенным условиям (типа «ищи FFFFFFFF, но при этом чтобы смещение делилось на 4 без остатка, а в ближайших 32 байтах впереди не было FFFFFFFF …», только сложнее) если по указателям ничего не найдено (только ради Icy Peak + всех его подуровней, а также для нескольких из Spyro2) Затем я приплюсовал код, извлекающий заданный субфайл, чтобы обрабатывать сразу WAD, а не отдельно передавать предварительно извлечённые субфайлы.
Ну а теперь я могу вытаскивать небо (и не одно! По крайней мере в Spyro1 в домашних мирах целых 6 моделей небосводов – для порталов…), и делается это совершенно не так, как модель уровня, да ещё и для Spyro1 всё по-другому. А я ведь даже текстуры не извлёк… Короче, разгромил весь код, и состряпал из него несколько отдельных программ – одна ищет модели, пропарсивая WAD или субфайл уровня, выдаёт землю и небо (можно только основное, можно все небеса сразу; если доберусь до текстур в моделях – будет и их извлекать), другая конвертирует землю в три модели (а с текстурами будет четыре…), а третья – только небо (фоновый цвет передаю элементарно – огромная пирамида из 4 треугольников, которая содержит в себе извлечённое небо и раскрашена в фоновый цвет – изнутри и не догадаться!)
Ещё раз переделал просмотрщик на Game Maker, который теперь воспринимает небо автоматически (особое имя файла… Жаль нельзя будет открывать любые модели по желанию. А только те, что лежат в правильной папке под правильным именем…) Скорость FPS значительно упала (ничего себе! Да по сложности и полигональности небосвод сравним с самим уровнем!), поэтому небо отключено (как и полигональная сетка) по умолчанию.
Пока работает лишь для Spyro1, зато идеально (долго же я парился с направлениями осей, чтобы расположить небо точно так, как оно в игре. А то часто уровень «освещён» именно с той стороны, с которой нарисовано солнце – так что неправильная ориентация неба будет хуже его отсутствия)
Да! Сравнил визуально все модели уровней между обычным и японским Spyro1. Отличий много, но они незначительные. По большей части это упрощения игры – увеличение уступов, островков, дверей. Наверное из-за ихней камеры, которая сокращала шансы на выживание в узких местах. Вот места и сделали шире! Правда некоторые изменения мне непонятны – которые затрагивают лишь декорации.
Скриншоты смотреть попарно:
Купол – раз, шарики на входе в лабиринт вдали – два: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_01s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_01j.jpg
Башни-близнецы + увеличенный ободок слева у стартовой площадки: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_02s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_02j.jpg
Распухший проход: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_03s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_03j.jpg
Удлинённый край: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_04s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_04j.jpg
А вот это.. весьма странно: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_05s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_05j.jpg
Поднятая арочка! http://klimaleksus2.ucoz.ru/Files/SWIM/jap_06s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_06j.jpg
Расширенная дверь: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_07s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_07j.jpg
Ещё пара арок: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_08s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_08j.jpg
Край. Почти вдвое просторнее! http://klimaleksus2.ucoz.ru/Files/SWIM/jap_09s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_09j.jpg
Наконец хоть что-то они опустили: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_10s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_10j.jpg
Косяк сплюснули как-то: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_11s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_11j.jpg
А вот это весело: башню ликвидировали, но арочку лишь повернули: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_12s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_12j.jpg
Наклон уступа теперь в большую сторону: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_13s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_13j.jpg
Маленький островочек стал немного крупнее! http://klimaleksus2.ucoz.ru/Files/SWIM/jap_14s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_14j.jpg
А вот это вот, чес-говоря, я вообще не могу прокомментировать, пока не узнаю, для чего в уровне служат данные шпили: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_15s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_15j.jpg
Прикольно, взяли кусок стены вытащили: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_16s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_16j.jpg
Хоть скриншоты различаются сильно (бегает пунктир сетки), на деле различия только в трёх горах вдали и на переднем плане: http://klimaleksus2.ucoz.ru/Files/SWIM/jap_17s.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/jap_17j.jpg
Пожалуй, мой взлом и формат хранения моделей надо будет обязательно расписать ещё и на английском языке. Раз до меня небо никто не взламывал…
Добавлено (27.07.2013, 23:41) --------------------------------------------- О-о-о, ну и дорвался я… до текстур. Это уже сверх-взлом какой-то. Даже не знаю, сколько времени уйдёт на то, чтобы описать всё как следует…
Ломанул Spyro1 и выяснил, как же хранятся текстурные индексы. Потом написал прогу, которая почти как PGG будет вытаскивать текстуры из VRAM (первый суб-субфайл) и сохранять их в тайловый BMP. И действительно, 32х32 ! На самом деле игра не может натянуть весь экранный буфер на один полигон. Система может, но логика игры запрещает. Да и вообще координаты не так уж и свободны. Три точки движутся вместе, расстояние меж ними либо 16, либо 32 пикселя (16 есть только у Spyro1 для аппроксимизации). Четвёртая точка может не находится в углу квадрата, тогда текстура на один угол растянется. Но четвёртая точка и не может быть где угодно: видео память логически разбивается на 16 областей (исключая ещё 16 областей в «левой» половине (где рисуются кадры) – обращаться к ним можно, но ни к чему хорошему это не приведёт), и все эти 4 угла должны быть в одной области. Скажу больше, игра НИКОДА этим не пользуется, и 4 точки всегда образуют квадрат 32х32 пикселя. А уж четыре таких квадрата формируют один высококачественный (есть ещё низкокачественная копия) тайл 64х64. Вот их я и выгрузил в 1024х1024 – все 256 штук, хотя ещё не видел, чтобы хоть в каком-то уровне даже половина использовалась.
И поворот там не такой уж сложный – 90 градусов – во все стороны с любым отражением (8 вариантов). Научился вращать байты в одномерном массиве, ибо игра часто идёт на хитрость, например если текстура полностью симметричная, то вместо всех 4 кусочков используется один и тот же, правильно отражённый.
А вот с «правильным отражением» косяк! Причём не у меня, а у самих разрабов. Я сличал в 512х512 «LOD» текстурки 32х32 с их высококачественными пазлами в 1024х1024 по 64х64. И часто обнаруживал небольшие несоответствия (цвет, яркость), но иногда куски углов текстур были неправильно ориентированы! И это не моя программа виновата, ведь в игре они тоже выглядят криво. Ходить далеко не надо: Spyro1, первый же мир: http://klimaleksus2.ucoz.ru/Files/SWIM/world_51.jpg Внимательно смотрите: розовая виляющая полоска на стене – вдали выглядит нормально, а вблизи её края перестают состыковываться, а на самой текстуре видны швы. Разработчик просто забыли поставить бит, отвечающий за отражение (для этого даже не пришлось бы менять что-то во VRAM). Я подумал, что японцы это исправили, но нет – в японской версии всё одинаково.
Быстренько прошёлся по тайлам всех уровней Spyro1 и примерно в каждом четвёртом были ляпы, но проверять их в игре было неохота. Лишь ещё один я точно зафиксировал: http://klimaleksus2.ucoz.ru/Files/SWIM/world_52.jpg Смотрите на сетку на мосте. Чуть ближе: http://klimaleksus2.ucoz.ru/Files/SWIM/world_53.jpg Чудеса!
И даже в Spyro2 есть подобное (да, я выдернул текстуры и оттуда, несмотря на то, что формат слегка различается), Гавань Бризов: http://klimaleksus2.ucoz.ru/Files/SWIM/world_54.jpg Один уголок перекрасился в другой цвет! Это они с координатами напортачили: http://klimaleksus2.ucoz.ru/Files/SWIM/world_55.jpg
Ну а теперь, когда я имею честь накладывать текстуры поверх соответствующей модели (правильно раскрашенной в первый набор цветов) земли, с режимом смешивания «spotlight» (удвоенное перемножение, «А*В*2» или «(А+А)*В») и устанавливая идеально извлечённое и раскрашенное небо, я могу делать визуализации панорам уровней потрясающего качества: http://klimaleksus2.ucoz.ru/Files/SWIM/world_56.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_57.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_58.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_59.jpg http://klimaleksus2.ucoz.ru/Files/SWIM/world_60.jpg
Прорисовка заднего плана выше, чем в самой игре, ведь тут нет сглаживания далёких текстур, поэтому они останутся яркими независимо от расстояния до камеры: http://klimaleksus2.ucoz.ru/Files/SWIM/world_61.jpg
Да уж, это куда замечательнее, чем созерцать голые модели, хоть и раскрашенные в привычные цвета.
Ну, кажется, всё. Осталось скомпоновать программы для Spyro2 и 3, завершить мой вьювер (чтоб он тоже понимал текстуры), описать форматы ВСЕГО (а это структура WAD и уровней касательно вторых суб-субфайлов, формат моделей земли LOD и общий, формат неба, формат текстур и всё это отдельно для Spyro1 и 2/3 ), и наконец выложить!!
Во, для темы Графики вытащит фото «РОЗЫСК» : http://klimaleksus2.ucoz.ru/Files/S/wanted.png
Как вставлять обратно пока не задумывался, но перерисовывать можно хоть сейчас! Насчёт палитры – там 256 цветов, но _возможно_ их делят между собой несколько текстур, в любом случае – перерисовывать в максимальном качестве.
Искал небо… небо на порталах в Spyro3. Как я сказал, у Spyro1 они все в файле домашнего мира. У Spyro3 (и я проверял это подменой субфайлов WAD) портальные небеса не хранятся в уровне, но и не вытаскиваются из других уровней. Где же они? Есть уникальная сигнатура любого неба – повторяющиеся плотные блоки не меньше чем по 32 байта, причём каждый четвёртый (старший в квартете) байт равен «30h». Это цвета неба, они обязаны кончаться на 48, но только у неба – обычные модели имеют 00h.
Так вот, оказалось, что небесами набит 97-ой субфайл! Он, кстати, большого размера и предшествует всем уровням. Там блоки, разделённые морями нулей. Последней частью каждого блока (есть указатель из шапки соответствующего блока) является небо. Первое – Sunrise Spring, второе – Sunny Villa. Похоже, там все небеса…
Резонный вопрос: зачем было дублировать их отдельно от уровней? Либо вставили бы все используемые небеса во все уровни, либо выгрузили бы совсем все (включая основные) небосводы в этот субфайл. Зачем было дубли разводить…
Проклятый Game Maker не поддерживает перемножения текстуры и цвета, только складывает, вычитает, инвертирует и ещё около ста (всего 11*11) бесполезных методов смешения альфа канала. Без смешения выгладит ужасно серо, а с дефалтным – тёмно. …Ладно, схитрил: RGB каналы предумножил на 1.3 (с обрезкой на 255…), текстуру тоже при приёме предумножил (средствами Game Maker!) на 1.3 (с такой же обрезкой) и при дефалтном наложении результат выглядит почти как в игре (или 3DsMax).
Если светлая текстура подсвечивается светлой заливкой, то в идеале она должна аж светится (эффекты освещения в игре), из-за того, что при умножении белого на белый (1*1) и ещё на 2, цвет становится «сверх-белым» и подсвечивается. А в моём случает он остаётся «так-себе-белым» без особого впечатления. Но хотя бы не серый! И текстуры передавать вьюверу я решил только 512*512. Game Maker и так страдает, бедненький, нет-нет да вылетит…
Цитата (MrModez) Мне больше нечего добавить:
…А когда выложу прогу, то каждый спайрофан сам сможет полетать по всем мирам всех трёх игр!
*перенесено ниже*
Сообщение отредактировал aleksusklim - Воскресенье, 04.08.2013, 02:10 |
| |
| |