|
Перевод 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 |
| |
| |
| olejika | Сообщение # 481 Понедельник, 09.09.2013, 10:15 |
|
Стрекоза
 Новопоселенец
«0»
Где: Не в городе Драконов
|
Раз уже давно можно скачать 3D-модели букв из Spyro the Dragon, то почему так и никто не сделал по ним ttf-формат шрифта?
нескажу
|
| |
| |
| gitgeg | Сообщение # 482 Понедельник, 09.09.2013, 15:47 |
Взрослый Дракон
 Житель Города
«408»
Где: Не в городе Драконов
|
ttf это, я так понимаю, просто печатный шрифт? Вроде есть такой, Lithos Pro называется. Некоторые буквы похожи на буквы из 1 части. http://www.identifont.com/samples/adobe/LithosProBlack.gif
|
| |
| |
| steeldragon | Сообщение # 483 Четверг, 12.09.2013, 13:32 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата (aleksusklim) ЧТО МНЕ ДЕЛАТЬ!? Хм. Посмотрите этот документ, может, там есть ответ, почему ваш код на реальной Playstation не работает?
Сообщение отредактировал steeldragon - Четверг, 12.09.2013, 13:34 |
| |
| |
| aleksusklim | Сообщение # 484 Четверг, 12.09.2013, 23:28 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Знаете, а я понял, в чём проблема. Потому что исполнение кода просто не поддавалось логическому объяснению, вот я и стал перепроверять выполнение практически каждой строки. Я собирался считать три новые координаты и записать их в координаты Спайро. Делал это примерно так:
lw s1, … sw s1, … lw s1, … sw s1, … lw s1, … sw s1, …
, то есть получал новое значение и тут же записывал его по нужному адресу. Используются только три регистра (два для отсчёта адресов новых координат и места записи, и один для пересылки). Но в XEBRA координаты были явно не теми, которые я задавал.
Тогда я попробовал просто считать три числа из памяти и сохранить их рядышком, чтобы понять, работает ли вообще LW-SW, и откуда появляются непонятные числа вместо моих. Так оказалось, что вместо второй координаты записалась первая, вместо третьей вторая, а на месте первой содержимое было непредсказуемо, и менялось при смене регистра для пересылки (s1 в примере выше). Из чего я сделал вывод, что при выполнении команды SW предыдущая команда LW ещё не успела выполнится, и поэтому значение регистра ещё не изменено. То есть как бы SW исполняется ДО соответствующего LW.
Очень похоже на прыжки, после которых ставится NOP, чтобы не путаться в коде. А выходит, что не только одни прыжки! То что «lw» (и любые другие команды чтения из памяти) тормозят на один такт – это уже без сомнений. Насчёт «sw» не знаю, но скорее всего она тоже тормозит, но это не так важно (не будешь же считывать только что записанное число без какого-то особого повода?) Кажется, сложение и прочая чисто регистровая арифметика так не пробуксовывает, но я на всякий случай всю свою ассемблерную функцию заново переписал и сделал так, чтобы НИГДЕ не стояло двух команд подряд, вторая из которых обращалась бы к регистру, изменяемому первой. А присвоение координат надо было делать так:
lw s1, … lw s2, … lw s3, … sw s1, … sw s2, … sw s3, …
, когда код дойдёт до «sw s1», в это время регистр «s1» уже точно будет прочитан командой «lw s1», ибо между ними стоят две другие команды (одной тоже хватило бы). Или можно вообще не париться с перемешиванием кода (то есть распараллеливания всей работы на независимые шаги, исполняемые «одновременно» без влияния друг на друга – то есть при каждой тактовой «паузе» (на LW, J/B да и вообще везде…) надо находить какую-то другую команду, которую тоже нужно где-то выполнить, и заполнить ею эту дыру), а просто ставить «nop» между строчками везде, где идёт запись и чтение одного и того же регистра двумя подряд стоящими командами.
Я решительно не понимаю двух вещей: почему НИГДЕ это не описано, и почему нормальные эмуляторы не повторяют «дословно» этот процесс?
Но теория-таки похожа на правду: http://klimaleksus2.ucoz.ru/Files/1/lw.png Это отрывок игровой функции (обработки состояния Спаркса), в котором видно аж четыре «nop» (один выделен), и каждый из них, сдаётся мне, стоит там неспроста: либо когда в «v0» считывается через «load …», либо после прыжка (но не каждого).
Ну в результате да, хорошие новости: мой код пошёл и на Xebra, и на PlayStation. Можно не переживать… Образ весит 9 Мб. Надуюсь я смогу залить его на свой сайт…
Цитата (steeldragon) Посмотрите этот документ
Есть уже скаченная копия? Мне выдаёт «403 Forbidden on File: 127»
but nobody came
|
| |
| |
| steeldragon | Сообщение # 485 Пятница, 13.09.2013, 16:59 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата (aleksusklim) ...почему нормальные эмуляторы не повторяют «дословно» этот процесс? А на PCSX-Reloaded тоже проверяли?
Цитата (aleksusklim) Есть уже скаченная копия? Мне выдаёт «403 Forbidden on File: 127» Да, вот: https://dl.dropboxusercontent.com/u....%29.txt
|
| |
| |
| MrModez | Сообщение # 486 Пятница, 13.09.2013, 18:33 |
Дракон Подросток
 Житель Города
«611»
Где: Не в городе Драконов
|
Ребят, всех с Днём Программиста! :)
I'm MrModez Мои новые треки в стиле Спайро: Desolate Forest Skate Park - Spyro Custom Track Lofty Farms - Spyro Custom Track Gleaming Coast - Spyro Custom Track
|
| |
| |
| aleksusklim | Сообщение # 487 Воскресенье, 06.10.2013, 00:23 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Цитата (steeldragon) может, там есть ответ, почему ваш код на реальной Playstation не работает?
Не-а. Сказано только про задержку на jump.
Цитата (steeldragon) А на PCSX-Reloaded тоже проверяли?
Ух-ты, эмулятор мне понравился. Его можно заставить вести себя как Epsxe, но при включении «интерпретации» (или чего там) его поведение на моём коде подчинялось рассудку ещё меньше. Короче, результаты отличаются даже от XEBRA. И далеки от реального PlayStation. На версии с исправленным кодом работает безошибочно.
Цитата (MrModez) Ребят, всех с Днём Программиста! :)
Всё, выкладываю свой CastleSkatepark: http://klimaleksus2.ucoz.ru/Files/2/castleskatepark1v1.rar
Работы в него вложено нереально много. Если соберусь с духом, то попробую описать хоть что-нибудь, что пока не забыл…
but nobody came
|
| |
| |
| DrWho | Сообщение # 488 Вторник, 15.10.2013, 14:57 |
Мудрый Дракон
 Почетный Житель
«1371»
Где: Не в городе Драконов
|
Извиняюсь, что спрашиваю не в тему, но вопрос такой: можно ли выдрать из игры музыку? Вопрос не про Спайро, а про Arkanoid R 2000, я хотел саундтреки в игре послушать, а их нигде нет.
|
| |
| |
| steeldragon | Сообщение # 489 Вторник, 22.10.2013, 13:07 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата DrWho (  ) можно ли выдрать из игры музыку? Можно, наверное... jpsxdec или PSound (гугл в помощь) должны справиться с задачей. |===================================================================| Я с недавних пор работаю над очередной программой. Суть её проста: максимально облегчить и убыстрить вставку текста в игру. +++TextChanger!+++ Скачать: https://dl.dropboxusercontent.com/u...._2_2.7z
Для её работы нужен всё тот же Python 3. EDIT: Обновлена до версии 1.2.2. Повышена скорость вставки текста. Добавлено изменение имён (их список загружается отдельно). ------------------------------------------------------------------------------------------------- Что TextChanger умеет сейчас: 1) Заменять шрифт. Этот процесс занимает доли секунды и не требует ничего, кроме правильно извлечённого субфайла уровня. 2) Заменять текст, но только с ограничением на длину. Слишком длинные строки автоматически укорачиваются. ------------------------------------------------------------------------------------------------- Краткая, насколько это возможно, инструкция по применению: 1. Заменить SCUS - файл на прилагаемый в архиве. 2. Отформатировать текст для вставки следующим образом: (четыре строки на одну строчку английского текста) |Оригинальный текст| (крайне важно, чтобы в нём не было ничего лишнего, такого как номер звуковой дорожки и пробелы после текста.) | *Пустая строка* | | Перевод | | *Пустая строка* |
3. Запустить программу (.py файл в архиве), перетащить субфайл уровня (извлекается и вставляется обратно с помощью AWM) и файл с текстом, когда программа спросит, после каждого нажимать Enter. Запрос дампа памяти можно пока игнорировать (просто нажмите Enter). 4. Подождать завершения процесса. Готовый файл будет в папке программы под именем output.wad. |==================================================================|
Сообщение отредактировал steeldragon - Понедельник, 04.11.2013, 15:21 |
| |
| |
| aleksusklim | Сообщение # 490 Суббота, 26.10.2013, 00:02 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
…А я вот что сделал: http://klimalekus.hol.es/forum/
|
| |
| |
| steeldragon | Сообщение # 491 Суббота, 23.11.2013, 19:19 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Хм. Чисто случайно наткнулся на таблицу соответствия "золотого" шрифта в Spyro 1. В 22-ои субфайле японизированной версии сначала идёт WAD-подобная таблица файлов, так? А вот и нет. Со смещения 16(dec) идёт таблица соответствия. Номер-4 байта, смещение файла-4 байта. Этот номер распространяется на все s3m-подобные файлы в субфайле. Номера букв меняются совершенно без побочных эффектов. Сейчас буду проверять пару вопросов, а именно: - Можно ли сменить любой объект на любой? (камень прилепить к порталу, буквы разбросать по уровню...) - Что произойдёт, если задать "незанятый" номер любому объекту? ...и так далее. О результатах напишу позднее. EDIT: Можно менять "занятые" номера и "незанятые" тоже, вылетов не наблюдается. Правда, пока непонятно, соответствуют "незанятые" номера хоть чему-нибудь, или нет.
Добавлено (23.11.2013, 19:19) --------------------------------------------- В процессе взлома указателей сломал игру... Ну, как сломал? Почти с самого начала суб-субфайла 4 идут некие куски "сильно упорядоченных данных" ( https://db.tt/2nfebW7T ). Применил на них "simulate encrypted data". Результат - не отображаемый вообще (и иногда "мигающий") кусок уровня ( https://db.tt/rSCRFLND ). Напоминаю, речь идёт о четвёртом суб-субфайле, от модели уровня это далековато. Плюс это характерное "мигание" намекает на то, что это вполне могут быть данные об углах камеры. Осталось выяснить, как это всё работает...
P.S. Я не забыл о цветах текста, чуть позже проверю и их.
Сообщение отредактировал steeldragon - Суббота, 23.11.2013, 19:21 |
| |
| |
| aleksusklim | Сообщение # 492 Понедельник, 13.01.2014, 23:19 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Взломы, эксперименты и доработки:
CreepyTrap1V0, для запуска нужен SavestateRunner1V1;
FontTable1V2, для запуска нужен PascalABCr;
FreezeCheat, для запуска нужен SmartPatcher1V2 и ArtMoney (artmoney.amkey)
Подробности в теме Текста!Добавлено (13.01.2014, 23:19) --------------------------------------------- Вспомнил: Когда внимательно взглянул на распечатку текстов Вектора: http://spyro3-rus.googlecode.com/svn....TOR.txt , заметил что там последовательность нумерации уж больно последовательная. Они научились менять длину звуковых дорожек, сортировать их и адекватно сопоставлять с игровыми объектами? Это взлом не только STR, но и XOR-расшифровка «следующийх» субфайлов. steeldragon, мне нужно взглянуть на эти файлы для сравнения. Например 099, 101, 103…
but nobody came
Сообщение отредактировал aleksusklim - Понедельник, 13.01.2014, 01:42 |
| |
| |
| steeldragon | Сообщение # 493 Суббота, 01.02.2014, 14:51 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата aleksusklim (  ) steeldragon, мне нужно взглянуть на эти файлы для сравнения. Нет, вам это совершенно не нужно. "Последовательная последовательность" - всего лишь результат разницы версий. Аналогичный векторовскому файл с текстом, но снятый с американской 1.0 версии игры. Номера треков совпадают один-в-один.
Добавлено (30.01.2014, 22:18) --------------------------------------------- Новая версия TextChanger (1.4.3): https://dl.dropboxusercontent.com/u....r1_4.7z Если у кого-то будут вопросы - задавайте.
Добавлено (01.02.2014, 14:51) --------------------------------------------- Проверил теорию - добавил килобайт к четвёртому суб-субфайлу уровня (предварительно поставив размер всего субфайла побольше). Все работает... Правда, если поставить большой черезчур размер (в моём опыте - килобайт 60), графика (текстуры) портится. Даже портальное небо.
Сообщение отредактировал steeldragon - Суббота, 01.02.2014, 14:54 |
| |
| |
| aleksusklim | Сообщение # 494 Суббота, 22.03.2014, 00:29 |
фдулыгылдшь
 Редактор
«1066»
Где: Не в городе Драконов
|
Э-э, ребят, мне лень выкладывать скриншоты поодиночке, качайте сразу архивом: http://klimaleksus.narod.ru/Files/S/dino.rar
Да, я думаю это он самый.
Добавлено (22.03.2014, 00:29) --------------------------------------------- Во, гляньте: http://klimaleksus.narod.ru/Files/1/oes.png
Как вам интерфейс? Арт-инфаркт? А справку мне стоит писать, или в нём реально будет и самим разобраться? …
UPD:
Цитата Томас Надо как минимум собрать из кусочков статую - памятник будет!
…Это самое реальное, что можно с ним сделать.
Цитата Томас А яйцо-то, яйцо!!
Я думаю, эта камень или скала. Возможно он ими кидался или они падали с неба. Ещё вероятнее, что она вообще ни причём, просто используется где-то ещё в Dino Mines, возможно в меньшем масштабе. Используется?
Цитата Томас Текстурка горная-тектоническая?
Не знаю, сама была такая натянута. Доступа к текстуре у меня пока нет, как и к самой модели. Это текстура используется где-то ещё на уровне?
В любом случае я уверен, что он должен был быть нормально текстурирован. Но пусть есть хотя б такой!
Цитата Томас Ну расскажите хоть что-нибудь, это ж нереально!
Ещё он, кажется, анимирован. Но сопротивляется при любых попытках включить анимацию, прокручивает все кадры и снова приходит с статичной модели.
Отдельно по кадрам вытащить я не могу, я думаю анимация вообще устроена сложнее. Каждый или почти каждый объект хранит не только номер текущего анимационного трека, но и номер предыдущего. По-моему из-за этого мы не видим явных скачков и нестыковок при переключении одной анимации любого объекта на другую. Там либо дополнительные анимационные связки, либо вершинки как-то плавно переходят между долей одного трека и другого.
И что-то управляет анимацией. Если не она сама, то код. А я почти уверен, что весь его КОД на месте. Логика скорее всего осталась, его теоретически даже можно оживить…
Цитата steeldragon А... это... его вообще можно собрать?
Ну работать он пока не будет, это точно. Проблема в том, что все его части – один и тот же тип объекта. Значит, они должны различаться чем-то другим, кроме самой модели. Наверняка есть его «мозг» – один объект или подвид этого, который при особых условиях создаст все остальные части тела в нужных местах и запустит в рабочем состоянии. Если логика такого центра нарушена или удалена, то воссоздать возможно будет только самим расставив и объекты и связки между ними. А для этого надо досконально проштудировать весь код этого объекта, чтобы понять, что он хочет чтобы у него было чтобы работать. …А я ещё код ни одного объекта не читал. Разве что Спаркса, и то только начало, дальше ничего не понял.
Цитата steeldragon Там все части есть?
Все какие заскринил, если конечно там нет ещё какого-нибудь подразделения.
И те разноцветные камни или уступы – что это? Тоже для него, или используется где-то ещё в Dino Mines?
but nobody came
Сообщение отредактировал aleksusklim - Воскресенье, 23.03.2014, 21:48 |
| |
| |
| steeldragon | Сообщение # 495 Воскресенье, 23.03.2014, 18:18 |
Старейшина Драконов
 Редактор
«422»
Где: Не в городе Драконов
|
Цитата aleksusklim (  ) А справку мне стоит писать, или в нём реально будет и самим разобраться? Пишите, конечно! Справка тут нужна, как воздух аквалангисту. Хотя бы краткая.
Цитата aleksusklim (  ) dino.rar Ого! Вот это да... А... это... его вообще можно собрать? Там все части есть?
|
| |
| |