Четверг | 21.11.2024 |13:33
Приветствую Вас Гость Мира Спайро | RSS
  • Страница 38 из 38
  • «
  • 1
  • 2
  • 36
  • 37
  • 38
Модератор форума: nihonjin, aleksusklim, alteya, Томас  
Перевод Spyro 3: Взлом и программы
aleksusklimСообщение # 1 Воскресенье, 26.06.2011, 14:19
Аватар aleksusklim
фдулыгылдшь
Редактор
«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Сообщение # 556 Суббота, 12.11.2016, 16:33
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
http://klimaleksus.narod.ru/Files/4/SpyroTAS0V1.rar

Можете считать, что начало для Spyro: Tool Assistant Speedrun официально положено!

Это пробный очень бесполезный, но с огромным нераскрытым потенциалом плагин для Epsxe v1.7.x. Разумеется, под остальные эмуляторы и игры это дело можно доработать.
Проверял только на XP.

Короче, всё что он может – «записать» последовательность нажатий клавиш (пока что только стрелок направления) в игре, и в точности воспроизвести её.
Работает покадрово, и по идее должен восстанавливать историю игры ПОЛНОСТЬЮ, это очень важно.

На данный момент он очень глупый и ограниченный, но мне важен сам факт, что он пашет как надо.

Установка:
– вытащить из архива «gpuroute.dll» и положить его в папку «plugins\» эмулятора.
– скопировать файл «plugins\gpuPeteD3D.dll» (или «gpu.dat», или любой другой видеоплагин) в корневую папку эмулятора (рядом с epsxe.exe), переименовать его в «gpuroute_gpuplugin.dll»
– открыть эмулятор, выбрать в настройках графическим плагином тот, что начинается словами «gpuroute.dll: »
– настроить в управлении на клавиши-стрелки движение (либо, если хотите, пусть две из них будут крестом и квадратом, например…), ну то есть записываются только четыре стрелки. Также, пусть на кнопки «WASD» и «Enter» НЕ будет ничего забиндено.

Использование:
– откройте в эмуляторе игру (она будет идти примерно в 30 fps).
– перейдите в нужный уровень, встаньте в желаемое место и сохраните savastate в нулевой (по умолчанию) слот через F1.
– перезапустите эмулятор, отключите кадровый лимит (F4), и загрузитесь через F3;
– теперь! Теперь нажимайте W-A-S-D – это будут те кнопки, которые забиндены на стрелочки. Пройдите куда-нибудь, сделайте что-то весёлое. Не управляйте игрой никак, кроме WASD.
– наконец, нажмите Enter, и плагин полностью воспроизведёт все записанные действия.

Ну, проверяйте ^^

Далее планируется всё по фен-шую: возможность настроить, выбрать клавиши, запись до 15 кнопок контроллера, откат по истории, ограничение запоминаемых и воспроизводимых действий (то есть многократная запись одного участка), окно с управлением.

Как это работает:
Плагин ставится как графический, и перехватывает функцию GPUupdateLace, которая вызывается эмулятором примерно на каждый VSync. Но на деле она работает 2-3 раза за кадр, правда, я это просто игнорирую, и притворяюсь, что один вызов равен одному кадру.
Ещё плагин читает нажатые клавиши (особенно во время своей же задержки), и умеет симулировать нажатие и отпускание других.
Когда он хочет симулировать кнопку, он посылает keydown событие, но при следующем кадре – сделает keyup (и может быть, опять же keydown).
То есть эмулятор (или может быть в будущем – любой существующий плагин контроллера) когда пытается ответить игре, какие клавиши нажаты – получает симулированные события. А поскольку он также делает его покадрово – последовательность всегда та же самая, если конечно пользователь сам не прикасался к симулируемым клавишам.

А чтобы отследить, когда там сделана загрузка, и не промахнуться ни на кадр (оказалось, что симулирование F3 загружает игру не мгновенно, а через примерно 7 кадров спустя), плагин трогает 4 байта в RAM памяти игры, записывая в них и постоянно увеличивая номер текущего кадра, нагло и по своей воле.
Тогда, savastate и loadstate сохранят и это число. А значит, если его новый номер вдруг стал меньше текущего (хотя у меня пока даже это не проверяется – он тупо записывает всё в массив, и помечает как «прошедшая история»), то клавиши надо не считывать, а воспроизводить.

Насколько я смог протестировать – это РАБОТАЕТ.

Возможности открываются ну просто безграничные, и всё это без нужды разбираться в бесконечных PADpoll в попытке сразу сделать кастомный плагин контроллера…


but nobody came
 
devdokiСообщение # 557 Понедельник, 14.11.2016, 14:33
Аватар devdoki
Яйцо
Житель Города
«47»
Где: Не в городе Драконов
Всем доброго времени суток. 
Проекту еще нужны программисты? Увидела пост в ВК и захотелось попробовать принять участие.

P.S. Имеются базовые знания языка C++

P.P.S Ну и давно же меня тут не было, хех. Кто-нибудь помнит меня? :D
 
aleksusklimСообщение # 558 Пятница, 09.12.2016, 18:55
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
http://www.gamasutra.com/view....bay.php

– Мы как бы об этой статье просто не знали? Или «забыли»? Или меня за всё время никто не просвещал?..
 
steeldragonСообщение # 559 Воскресенье, 17.05.2020, 00:34
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Н-да, тема взлома тут совсем брошена...
Ну перепишу сюда про goldmod.

Автор оригинального сообщения - aleksusklim:
------------------------------------------------------------------------

Я подогнал программу для декодирования (XOR) «следующих» субфайлов (где код логики уровней) под SHL. В сущности, в алгоритме ничего не поменялось: (ключ ксора – число 4 байта со смещения 4, я обрабатываю им все данные от следующего такого же числа до конца файла; импорт симметричен, поэтому достаточно провести ту же операцию над раскодированным файлом, чтобы закодировать его обратно)
http://klimaleksus.narod.ru/Files/6/SpyroCodeCrypt1V1.rar
(также в этом архиве дополнительное есть все изменённые файлы – EXE и четыре мира, о которых речь пойдёт ниже)

Я попробовал выгрузить копию названий миров в ту шапку, которая «Library Programs». И нифига! Видать, права на неё всё же у Sony…
Если повредить самое начало, то игра перестаёт грузиться, а если поместить любые данные в середину – то они сотрутся нулями (или просто не скопируются с диска) после запуска игры.

Пришлось пока что использовать основную шапку. Но с ней уж точно всё хорошо, и я скопировал таблицу указателей на названия уровней на смещение 400 (dec), что в памяти – 8001B200.
После них вкопировал сами названия (сделав их в верхнем регистре, потому что буквам без разницы, а нам потом ещё отличать от основных).
Теперь как бы сдвинут весь блок, и каждый указатель нужно изменить на разницу между старым и новым размещением – хотел уже писать свою программу, но оказалось, что WinHex умет прибавлять 32-битными блоками (ещё б ксорить так умел, вообще бы класс, а то только байтами…), и отнять 23092 (dec) было очень легко.

Для обновления «следующих» субфайлов я сделал вот что.
Исходный текст «Sunrise Spring Home» находится по адресу 80010F28, указатель на него – по адресу 80069DD8. Поскольку это первый уровень, именно относительно него считается смещение к нужному уровню.

Этот указатель фигурирует в коде логики появления золотых букв, в дизассемблированном исходнике декодированного следующего субфайла домашних:
lui a0, $8007
addiu a0, a0, $9dd8

Повезло, и во всех четырёх мирах используется тот же самый регистр. В двоичном виде эти строки выглядят вот так:
0780043CD89D8424

Мне нужно, чтобы указатель показывал на мою новую таблицу указателей, которая теперь по адресу 8001B200. Код такой:
lui a0, $8001
addiu a0, a0, $b200
Двоичный –
0180043C00B28424

Теперь достаточно просто заменить единственное вхождение оригинала на вот это, и декодировать все четыре «следующих» субфайла обратно!

Изменённые файлы в папке \goldmod\ в архиве по ссылке выше.
Проверял, прожигая в образ, и затронув новые названия, чтобы убедиться, что на порталах они изменяются, а в атласе и при перелётах – нет.


Сообщение отредактировал steeldragon - Понедельник, 25.05.2020, 13:25
 
steeldragonСообщение # 560 Понедельник, 25.05.2020, 13:24
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Ещё одна важная вещица в пару goldmod:

Автор оригинального сообщения - aleksusklim:
-----------------------------------------------------------------------

Ну, кажись, получилось!

Собрал модели так, чтобы русские буквы попали на кириллицу win-1251, которая в WinHex по умолчанию на русской винде.

Буква Ё на своём (кривом) месте. На буквах «З», «О», «Ъ» – пустышки. Цифры на месте, яйцо и крест оригинальные, запятая-апостроф на всякий случай тоже где надо, но без задней стенки.

Только верхний регистр! А любой другой символ вызовет вылет эмулятора.

Ссылка на обновлённую программу (поддержка количества кадров до 254) и сами русские модели – и в .obj, и в бинарном формате:
http://klimaleksus.narod.ru/Files/6/Goldenfont2V1.rar

В папке «\1\» – модели с одной стороной, в папке «\2\» – полноценные.
В папке «\0\»:
orig.sp3_265.mdl_g3 – исходные английские буквы, 19.9 Кб;
rus.sp3_265.mdl_g3 – мои собранные русские, 19.1 Кб (можно заливать прямо поверх);
empty.obj – модель-пустышка (ой, там «f 1//1 1//1 1//1», разумеется – вершины же с единицы нумеруются);
rus.gf.gf_000.txt … rus.gf.gf_128.txt – сконвертированные текстовые кадры. Отдельно копией – просто потому что некоторые из них пропущены, и этот набор не получится обратным экспортом результата.

Если применять вкупе с моим патчем для выделения названий миров в шапку, то их можно там сразу поменять на русские, и пойти смотреть порталы. (Но если не поменять – на оригинальных названиях вылетит!)
 
steeldragonСообщение # 561 Суббота, 10.10.2020, 10:49
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
...Оказывается, Spyro 3 всё еще может переподносить сюрпризы.
Меню полёта в другой мир (на шаре и т.д.) использует свой набор указателей на текст.
Всё бы ничего, но названия арен боссов берутся из общего списка названий уровней...
В общем, адреса дополнительных указателей в SCUS:

buzz's dungeon - 370520
spike's arena - 370528
scorch's pit - 370536


Сообщение отредактировал steeldragon - Суббота, 10.10.2020, 11:02
 
  • Страница 38 из 38
  • «
  • 1
  • 2
  • 36
  • 37
  • 38
Поиск:

Кто нас сегодня посетил

Для добавления необходима авторизация