Перевод 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 |
|
| |
DrWho | Сообщение # 406 Четверг, 11.07.2013, 18:31 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (aleksusklim) Что хочу сказать – Платину можно взломать. Но я пока не стану этим заниматься. Когда дойдём до перевода Платины – вернусь к взлому. Либо если кому интересно, можете сами попробовать снять libcrypt, или хотя бы проверить гипотезу о полном удалении ксора отовсюду. Взломать можно, но уже смысла нет, ибо выпилена эта самая проверка со всеми последствиями и теперь платиновая версия проходима, хоть конвертируй в ISO или в MDF/MDS. Кто выпилил - сами знаете/узнаете кто.
Цитата (aleksusklim) Откуда берётся Зоя при загрузке подставной сохранёнки с карты памяти? Ещё не знаю, но во-первых я не уверен что это вообще связано с libcrypt, а во-вторых я не буду убирать Зою, мы же хотим в ней послание оставить! Зоя, которая говорит, что у тебя неправильно-хакнутая версия?
Продублирую два вопроса, что выше оставил:
Цитата (steeldragon) Во всех субфайлах хранится информация и помимо этой. (Окружение уровня, текстуры, и так далее. Подробнее: Энциклопедия - Структура субфайлов WAD). А в котором можно шрифт извлечь и вставить в GH? Я хочу просто потестировать этот момент в атласе, меню пауза? субтитрах и катсценах. И чем, я пробовал тайловым (как-то там) штукой сделать - но там даже эксешника нет - а расписанный метод я не понял совсем. Ну и вопрос на засыпку: чем можно поковырять STR файл? Хочу попробовать озвучку перенести от Вектора в STR от GH.
|
|
| |
steeldragon | Сообщение # 407 Четверг, 11.07.2013, 19:14 |
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
|
Вообще-то, в заголовке цитаты есть ссылка на сайт... Раз уж спросили, всё, что мне известно по данному вопросу: http://consolecopyworld.com/psx/psx_libcrypt_tutorial.shtml http://redump.org/guide/libcrypt/ ... Цитата (aleksusklim) В итоге есть три способа обойти libcrypt на Платине: Libcrypt в Платине выпилил brill. Вот SCUS, с оригиналом в архиве: https://dl.dropboxusercontent.com/u....z Могу выложить остальное, если надо. ... Цитата DrWhoА в котором можно шрифт извлечь и вставить в GH?В любом_001_субфайле_субфайла_уровня.wad. Шрифт Атласа в 180 субфайле основного WAD. ... Цитата Ну и вопрос на засыпку: чем можно поковырять STR файл? Вилкой Тут где-то рядом есть алгоритмы и программы для извлечения/записи звука. В Энциклопедии, например. А в недавнем мега-тексте - программа для нахождения треков.
|
|
| |
DrWho | Сообщение # 408 Четверг, 11.07.2013, 19:26 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (steeldragon) В любом_001_субфайле_субфайла_уровня.wad. Шрифт Атласа в 180 субфайле основного WAD. Ок, только чем извлекать и заменять? Цитата (DrWho) я пробовал тайловым (как-то там) штукой сделать - но там даже эксешника нет - а расписанный там метод я не понял совсем.
|
|
| |
steeldragon | Сообщение # 409 Четверг, 11.07.2013, 19:35 |
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
|
Цитата (DrWho) Ок, только чем извлекать и заменять? PGG2. Ссылка - https://dl.dropboxusercontent.com/u....GG2.rar Инструкция где-то рядом...
|
|
| |
DrWho | Сообщение # 410 Четверг, 11.07.2013, 22:11 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Буду пробовать. Благодарю за ссылку.
Цитата (steeldragon) Инструкция где-то рядом... Глянем.
Сообщение отредактировал DrWho - Четверг, 11.07.2013, 22:13 |
|
| |
aleksusklim | Сообщение # 411 Суббота, 13.07.2013, 19:23 |
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
|
Цитата (DrWho) Взломать можно, но уже смысла нет, ибо выпилена эта самая проверка со всеми последствиями и теперь платиновая версия проходима, хоть конвертируй в ISO или в MDF/MDS.
Неужели!? Что ж, я этого не знал. Сам Yams просил меня когда-нибудь её взломать…
Цитата (DrWho) Зоя, которая говорит, что у тебя неправильно-хакнутая версия?
Да, система защиты отключена, но не удалена из GH, поэтому её можно заставить включится, причём для этого не нужно воздействие извне – достаточно загрузить игру с особой сохранёнки с карты памяти через игровое меню. В чём «особенность» сохранёнки я пока не выяснил, но у меня таковая есть, и глюков она плодит сразу массу, исключая лишь псевдоуровни четвёртого мира, вечнозелёного Спаркса и главный вылет на Колдунье. Зойка + нелепый Толстосум продающий несуществующих животных + пустые таблички на порталах присутствуют!
Цитата (DrWho) А в котором можно шрифт извлечь и вставить в GH? Я хочу просто потестировать этот момент в атласе, меню пауза? субтитрах и катсценах.
Не путайте игровой шрифт и шрифт в атласе. Второй пока не взломан, и лично я его не исследовал и в глаза через PVV не видал…
Цитата (DrWho) И чем, я пробовал тайловым (как-то там) штукой сделать - но там даже эксешника нет - а расписанный метод я не понял совсем.
Ну чувак…
Это JAVA, а её можно двойным щелчком запускать!
Попробуйте либо этот BAT либо этот EXE: http://klimaleksus2.ucoz.ru/Files/2/TmExe.rar Основной JAR файл переименуйте в «tm.jar»
Цитата (DrWho) Ну и вопрос на засыпку: чем можно поковырять STR файл? Хочу попробовать озвучку перенести от Вектора в STR от GH.
Если LBA не совпадают, то вам придётся долго мучиться…
В любом случае, НЕ конвертируйте в XA те MP3, который вам выдал jPSXdec.
Цитата (steeldragon) Вообще-то, в заголовке цитаты есть ссылка на сайт...
Поэтому я и предусмотрительно сказал «А можно полную ссылку на источник?»
Цитата (steeldragon) Раз уж спросили, всё, что мне известно по данному вопросу:
Да, всё то же, ничего нового. Но по второй ссылке советуют-таки эмулировать субканал, а не взламывать код.
Цитата (steeldragon) Libcrypt в Платине выпилил brill.
А он рассказал, КАК это сделал? Наверное нет – вполне в его стиле – ни тебе исходного кода, ни описаний…
Хм… А на кой он ужал его через UPX !? Типа чтоб никто не докопался до самих изменений?
Цитата (steeldragon) Могу выложить остальное, если надо.
Хе-хе, нет уж, это я выложу остальное.
Итак, вначале я решил сэмулировать фикс и посмотреть, реально ли он работает. Да! Тогда я сдампил память и восстановил из него несжатый EXE. Поскольку тот забит мусором, я сравнивал его с оригинальным и подчистил структуру. Даже заголовок оставил: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_01.png
Файл по сути отличался лишь в двух местах, и вот второе: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_02.png
Я потестил и оказалось, что даже без этих изменений защита не активируется. Тогда я срезал и копирайт из заголовка, и вот эту ерунду в конце. Осталось всего 24 различных байта…
Дизассемблировал и посмотрел, что же там за код: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_03.png
На самом деле это шифровка! На скриншоте показан алгоритм, который её расшифровывает. Видите огромные синие цифры выше строки «80067b3c»? Это не код, это полный бред. Код начинается ниже, и в нём:
В «t0» загружается указатель на начало (точку входа) шифрованной функции. В «v0» загружается ключ для шифрования. В «v1» загружается некое число, служащее вторым ключом. В «t6» загружается адрес, с которого нужно расшифровывать. В «t7» заносится размер шифрованной области в квартетах (размер в байтах делённый на 4).
Далее (выделено красным слева) начинается процедура расшифровки: В «t2» считывается квартет по «t6». Из «t7» вычитается единица. «t2» ксорится с ключом «v0» (t2=t2 xor v0) «t2» сохраняется по «t6». К «t6» прибавляется четыре (один квартет). (Далее две строки меняются местами из-за запоздалого прыжка) «v0» приравнивается разности «v1» и «v0» (v0=v1-v0), то есть изменяется сам ключ, вычитаясь из неизменного вторичного ключа. Если «t7» не равно нулю, то процедура расшифровки повторяется. Иначе происходит прыжок в «t0».
Чтобы увидеть, что на самом деле скрывается в шифрованной функции и что там изменил brill, мне пришлось дословно повторить процедуру расшифровки функции:
Получается, что XOR шифрует сразу двумя ключами, которые через раз чередуются. Но в итоге я получил расшифрованную функцию: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_04.png
…Знаете, это самый красивый ассемблер, который я видел.
Что делается в самом верху не так важно. Видите выделенную строку? Это прыжок обратно в функцию расшифровки!! Перед ним лишь меняется значение «t0» – прыжка выхода.
Другими словами, после расшифровки кода система прыгает в только что раскодированную функцию, исполняет её, потом выбирает дальнейший адрес выхода (а это регистр «ra», скорее всего в нём значение PC, которое было перед первым прыжком, как если бы вместо «jr t0» было «jr ra») и ещё раз исполняет функцию расшифровки! Которая теперь, естественно, закодирует секретную функцию обратно. И как будто ничего не было!
…Это просто гениально. Секретная функция невидима, не дизассемблируема, и даже если вы сдампите память игры в любой момент – вы её всё равно не найдёте и не дизассемблируете. Потому что она расшифровывается, выполняется и тут же зашифровывается обратно…
Вот так в двоичном виде выглядит то, что поменял brill: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_05.png
Бред? Конечно, она же зашифрована. Но если раскодировать, то: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_06.png
Ха, видали? Банальное зануление… Но давайте выясним, что там был за код: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_07.png
Три прыжка после выделенной строки. Все ведут на нижнюю сроку с меткой. Все три ветки перепрыгивают через такой код: Считать один байт в «a0» по адресу «a1». Загрузить в верхнюю часть «a2» константу «1f00». Сложить «a2» с «a0» (хоть там и «or», это просто сложение).
А вот что brill сделал с кодом: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_08.png
Прыжков нет! «a0» всегда загружается из «a1», но и эту строчку можно было удалить, ибо значение «a0» просто игнорируется – он явно прописал в «a2» не просто «1f000000 + xxxx», а константу «1f00dd11». Видимо в ней и кроется результат проверки диска libCrypt, и это число обозначает что диск лицензионный.
Другой же вопрос, как он к этому пришёл и как выудил это значение… А что сам код – так его можно было переписать тысячью способов, например не удалять прыжки, а просто направить их ближе или вообще загружать магическую константу ниже по коду.
В самих прыжках сравниваются некоторые биты в нескольких регистрах, определённые должны быть единичными, другие нулевыми. Без тотального изучения этой функции, а также всех, что вызывает она и вызывают её, я не могу сказать ничего больше, и главное – как же именно работает LibCrypt.
Но функция явно очень странная: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_09.png
Она вызывает некую процедуру «60698» подряд несколько раз с разными аргументами. Причём возврат из неё происходит не через «ra» (возможно чтобы не использовать стек вовсе), а явно через другой регистр, обозначающий точку входа в продолжение этой же функции (выделен красным).
И да, здесь есть загадочная команда «mtc0», о которой говорилось в статье, которую показал steeldragon: http://klimaleksus2.ucoz.ru/Files/REPEAT/lib_10.png
Ну почему я никак не могу найти справку по всем ключевым словам дизассемблера!? Я же вообще не в курсе, что дает «mtc0 a1, EntryLo1» или «mfc0 a0,Count» – я даже не соображу, это присваивание регистров или их выгрузка …
Ну всё, анализ закончен. Не дало пока ничего практического, то есть я ещё не смогу сходу взломать LibCrypt любой другой игры… Единственное, что я пока понял – надо всегда искать подозрительный XOR !
Выкладываю все версии файлов, которые я получил: http://klimaleksus2.ucoz.ru/Files/2/xor.rar
Там в «SCES_028.35\» : «Original» – оригинальный файл; «Brill» – тот, который вы мне дали (был ужат через UPX); «Decoded» – он же, но уже распакованный и подогнанный под оригинал, но ещё с копирайтом хакера и непонятной модификацией в конце. «Clean» – оригинальный файл, в который встроены только нужные изменения 24 байт шифрованной функции. Именно это главное – его надо прожигать! «Original_xor» – оригинальный файл с расшифрованной функцией (для исследований, прожигать бесполезно!) «Clean_xor» – изменённый файл с расшифрованной функцией.
В папке «xor\» есть программа «platinum.exe» – перетащите на неё оригинальный или изменённый (но не ужатый UPX !) файл, и получите вместо него версию с расшифрованной функцией (*_xor). Перетащите ещё раз, и она закодирует её обратно. Все параметры (ключи, смещения и алгоритм) я захардкорил, так что ни для чего другого её использовать не получится, но зато рядом есть исходный код!
Эй, а полноценный патч нужен? И не так как с Вихрем, а чтобы все контрольные суммы соблюдались! Так я же могу сделать: http://klimaleksus2.ucoz.ru/Files/2/LibCrack.rar
Там всё, инструкция внутри. Quick&Smart патчеры + возможность патчить только SCES. Сделано для конечного юзера, полученный образ можно без ошибок эмулировать на виртуальных дисководах или даже прожечь на PlayStation!
Надеюсь это не точная копия моего архива? А то ведь ещё заплатка нужна…
Цитата (steeldragon) Инструкция где-то рядом...
Ух-ты, может в перевод и это вставим? Поближе к Агенту9 или Хантеру с овцами на НЛО ! «Яйца где-то рядом…» – ну не круто ли?
but nobody came
|
|
| |
steeldragon | Сообщение # 412 Суббота, 13.07.2013, 19:54 |
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
|
Цитата (aleksusklim) главный вылет на Колдунье. Который срабатывает, когда я роюсь в WAD 001 (конечно, не заметить потерю 50 килобайтов из 100-килобайтного файла сложно...)
Цитата (aleksusklim) А он рассказал, КАК это сделал? Наверное нет – вполне в его стиле – ни тебе исходного кода, ни описаний… В точку.
Цитата (aleksusklim) загадочная команда «mtc0» Цитата (aleksusklim) Ну почему я никак не могу найти справку по всем ключевым словам дизассемблера!? Ну не знаю... Отсюда: http://vhouten.home.xs4all.nl/mipsel/r3000-isa.html "mfc0 - Move from coprocessor register" #EDIT: Извиняюсь, нужна была информация про "mtc0"... #EDIT2: Теперь отсюда: http://cgi.cse.unsw.edu.au/~cs3231/10s1/os161/man/sys161/mips.html "The MIPS-161 has 10 supervisor registers in coprocessor 0. These may be accessed with the MFC0 (move from coprocessor 0) and MTC0 instruction, as follows: mfc0 $4, $12loads the contents of supervisor register 12 (STATUS) into general-purpose register 4 (a0), and mtc0 $4, $12 does the reverse." По-простому, mtc0 загружает содержимое основного регистра в регистр сопроцессора, а mfc0, с которым я это ключевое слово перепутал - наоборот, из регистра сопроцессора в основной. Цитата Надеюсь это не точная копия моего архива? А то ведь ещё заплатка нужна… Заплатка в архиве.
Сообщение отредактировал steeldragon - Суббота, 13.07.2013, 21:04 |
|
| |
DrWho | Сообщение # 413 Воскресенье, 14.07.2013, 12:34 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (aleksusklim) Эй, а полноценный патч нужен? И не так как с Вихрем, а чтобы все контрольные суммы соблюдались! Конечно нужен, вихрь так будет не только эксклюзивом GH, но и платиновой версии.
Цитата (aleksusklim) Если LBA не совпадают, то вам придётся долго мучиться… Они вряд ли совпадают там, просто хотел поэксперементировать и реплики от Вектора в GH засунуть попробовать. Жаль все-таки никто из пиратов за GH не брался, потому что если бы хоть кто-то из студий выпустили перевод полноценный в GH, вот тогда проблем меньше было бы. И можно было бы задействовать вихрь уже в русской версии.
Цитата (aleksusklim) Неужели!? Что ж, я этого не знал. Сам Yams просил меня когда-нибудь её взломать… Ну как, я сначала попросил brill'а выпилить защиту, он отказался. Потом ему SquareFun объяснил ситуацию и в итоге он убрал защиту из игры.Добавлено (14.07.2013, 12:34) ---------------------------------------------
Цитата (aleksusklim) Зойка + нелепый Толстосум продающий несуществующих животных + пустые таблички на порталах присутствуют! Крайне желательно оставить только Зою, ибо есть вероятность случайно задеть яйца, которые начнут пропадать, в том числе и недобор камней драгоценных. Вы когда-то пытались с вихрем эксперимент провести, а можно сделать клон Зои и ее расположить ближе к началу уровня (только не там, где стоит зоя, говорящая об управлении)?
Сообщение отредактировал DrWho - Суббота, 13.07.2013, 20:01 |
|
| |
aleksusklim | Сообщение # 414 Понедельник, 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 | Сообщение # 415 Понедельник, 15.07.2013, 01:18 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (aleksusklim) Гляньте-ка, вам это ничего не напоминат? Это откуда? Платиновая версия? По-подробнее, если можно.Добавлено (15.07.2013, 01:18) ---------------------------------------------
Цитата (aleksusklim) Откуда арена -- Dino Mines, скрытый подуровень, есть везде. Я знаю что это за арена, просто дизайн арены по-другому построен был, отсюда и спросил.
Цитата (aleksusklim) Ну так это я вытащил модель мира себе в 3DsMax... Пока криво, но уже многообещающе! Босса хотите создать?
|
|
| |
aleksusklim | Сообщение # 416 Среда, 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 | Сообщение # 417 Среда, 17.07.2013, 10:45 |
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
|
Действительно - здорово! aleksusklim, а моделей букв вы не встречали во вторых субфайлах уровня? Просто с этими моделями всё не так просто. Я пересмотрел почти все субфайлы, но не в одном из них букв нет. Могут эти буквы быть, как и двумерный шрифт, в каждом файле уровня?
|
|
| |
DrWho | Сообщение # 418 Среда, 17.07.2013, 13:12 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (steeldragon) Могут эти буквы быть, как и двумерный шрифт, в каждом файле уровня? Поскольку там же находится шрифт текста (по идее), видимо там и золотые буквы должны быть. Либо надо проверять домашние миры, ибо буквы могут быть там.
|
|
| |
steeldragon | Сообщение # 419 Пятница, 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 | Сообщение # 420 Суббота, 20.07.2013, 15:27 |
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
|
Цитата (steeldragon) Проблема в том, что искать их там сложновато... Кстати, а в 1м Спайро как, также структура устроена золотых букв на порталах?
|
|
| |