Воскресенье | 09.08.2026 |14:11
Приветствую Вас Гость Мира Спайро | RSS
Модератор форума: 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Сообщение # 106 Воскресенье, 22.01.2012, 14:15
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Ну всё правильно! Таблица перекодировки по умолчанию является исходной (то есть, А=А, Б=Б и.т.д). Чтобы получить настоящее перекодирование, следует применить к программе ini-файл от предыдущей версии. Наша таблица не включена в этот дистрибутив (поскольку, я полагаю, сопоставление претерпит ещё много изменений)

Добавлено (22.01.2012, 14:15)
---------------------------------------------
Во! Я залил «У ручья»! На пути к цели… А то увидел пост, очень точно характеризующий мои действия:

Quote (CubeStudio (Новый год приходит))
В этом году (дракона) я запланировал своё поистине грандиозное драконье творчество. Какое – скажу, только если человек пятнадцать поинтересуется ((не хочу, чтоб получилось, как с Dragon Eclipce)(разрекламировали, а до релиза ещё ой-ой как далеко)). Но если что – моё грандиозное драконье творчество я надеюсь закончить к весне.
Всех с наступающим! Тем более этот новый год всем Рилмовцам запомнится – ведь это год дракона, а значит, и год Спайро.


Вот и у меня то же самое. Вроде «на пути к цели», именно «разрекламировал» а без результата выгляжу (наверно) просто хвастуном! Вот и моё «поистине грандиозное драконье творчество» (ДА!) будет готово… скоро? Я не знаю… Сначала я хотел сделать всё быстро, но чувствую, что вдруг «теряю интерес». Это плохо, но вернуться к работе сильно мешает нависшая дипломная работа для колледжа, которую тоже нужно сделать как можно быстрее. Ощущаю себя так, будто «много на себя взял»! А выкладывать половину результата совершенно не хочется – нужно сразу всё, и чтоб работало!

Кстати, такой ход мыслей относится также и ко всей нашей задумке перевести игру: «читабельных – полноценных» результатов у нас пока 0%. Самой работы по сути сделано уже очень много, но пользы от этого пока нет. Она проявится в полную силу только когда мы закончим. А чем дольше длится ожидание, тем меньше стремления, «запала», «задора» завершить начатое. Выход – установить срок окончания. Я предлагаю назначить дату «релиза» нашей полноценно переведённой игры на середину этого года (21 июня). Просто если выбрать меньше – не успеем, если больше – совсем обленимся…

Ладно… вот ссылка на видео «У ручья», разбито по архивам через WinRar без сжатия, 2% информации восстановления:

http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part1.rar
http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part2.rar
http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part3.rar
http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part4.rar
http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part5.rar
http://klimaleksus.narod2.ru/site/Graphic/avi/creek/creek.part6.rar

Полностью в 3DsMax. Звук воды – из «ауры леса». Всё остальное – моё (ну отдельные текстурки я конечно же не сам рисовал) + по стиху. Описания на моём сайте нет (но когда-нибудь появится) и информации тоже никакой (зато результат!).
Вот так! Если кого-то заинтересовало – скачайте видео (точный размер: 22 991 034 байта, длина – 1 минута). Сжато через «ImTOO 3GP Video Converter» в mpeg4 поток со звуком в mp3 и разрешением в 480х360 – короче, стандартным Windows Media ни за что не откроется. Испытано на Winamp и KMplayer!
Насчёт YouTube – думаю, нет. Не стану я его туда загружать по нескольким причинам. Во-первых, я там не зареган. Во-вторых, я не знаю, как закачивать. В-третьих, у меня слишком медленный интернет как на само закачивание, так и для решения первых двух причин! Даже через FileZilla я смог загрузить «У ручья» только с по частям… Нет, ну там вообще идитотизм был… Произошло так: жду, когда же завершиться закачка файла на сервер, было уже 98%, как вдруг смотрю: файл удалился и начал передаваться заново!! Какой отстой! Но я настойчивый, и передал его ещё раз. Но процентах эдак на 92, выскочила ошибка «Could not write to transfer socket: ECONNRESET - Connection reset by peer» – «Соединение закрыто сервером». А по идее всегда можно продолжить загрузку файла. Вот я снова захожу, а файла нет!! В третий раз обломилось на 50%! Впервые такая ерунда случилась. Пробовал через TotalCommander – вообще не заходит на мой сайт. Пробовал через FAR – заходит, но пока я добираюсь до нужной папки, соединение обрывается. Пробовал «активный режим» – не грузит список каталогов. А FTP-команды для копирования файла не существует (то есть, я не могу загрузить, скажем, половину, потом скопировать её и грузить дальше; если файл вдруг удалится – использовать копию). Хоть бы когда я буду грузить «Партию», ничего подобного не произошло.

…Надеюсь, что всё это хоть кому-нибудь интересно, и меня за оффтоп не поругают…

P.S. Хм… подумал-подумал, и решил ещё и скриншотик выложить, чтобы окончательно убедить заинтересованных посмотреть видео. Ну пусть будет вот этот (не настоящий кадр из видео, а материал из раннего исходника в более высоком качестве, 640х480, 80Кб):


И вопрос ко всем: а это, вообще, очень ли неудобно скачивать файл по многим частям? Просто если файл «Партии» я расколю ещё мельче, это как-то затруднит его скачивание вами?


but nobody came
 
OLEG778Сообщение # 107 Понедельник, 30.01.2012, 17:32
Аватар OLEG778
Маленький Дракон
Житель Города
«203»
Где: Не в городе Драконов
Так... Наконец-то я разгребся в реале, и у меня теперь есть время заходить сюда и продолжать работу.
Че-то у вас тут совсем дела вяло. Прочитав последние две страницы сообщений, я так и не понял что мы сейчас делаем, какой этап работы. Кто-нибудь еще "живой" остался? Кто-нибудь что-нибудь делает? Что за видео делаем?
aleksusklim, отличная идея насчет даты релиза. Только почему именно 21 июня?

Еще переводы кроме уже сделанных появились? Если нет, то я возьмусь продолжать работу над переводом. Если да, то скажите какие уровни переведены, какие нет.


Скорость: 128 кбит/с
 
aleksusklimСообщение # 108 Суббота, 04.02.2012, 05:49
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Quote (OLEG778)
Так... Наконец-то я разгребся в реале, и у меня теперь есть время заходить сюда и продолжать работу.


Вернее говоря, «безделье»… Отлично, может дело пойдёт вперёд, а то после зимних каникул мы все во временном (надеюсь) ступоре. Замёрзли, наверно!

Quote (Mostcus)
Ого, молодцы. Слежу за проектом и готов переводить. Но с озвучкой вы зря, на мой взгляд.


Зря что? Мы же даже не начали…

Quote (OLEG778)
Че-то у вас тут совсем дела вяло.


Я всё жду, когда (хотя бы) мне ответят о результате тестирования моих последних программ. Надо бы ещё Текст-О-Вытаскаватель переделать (а то в самом деле непонятно, как он вообще может работать – самая неустойчивая из всех моих программ для перевода!)

Quote (OLEG778)
Прочитав последние две страницы сообщений, я так и не понял что мы сейчас делаем, какой этап работы.


Вау, мои сообщения ещё хоть кто-то читает!
А что же мы делаем? Ну я лично планирую следующими ходами переписать весь наш Паскаль на C# (если к тому времени MrModez не сделает это под Delphi). Но сейчас я полностью поглощён своей дипломной работой, а причины закончить её как можно быстрее появляются каждый день.

Ещё «мы» ждём результатов взлома звуковых дорожек от кого-нибудь, кто взламывает звуковые дорожки…

Yams куда-то пропал.

Текстуры шрифта я взломать не смог. Я старался! Но там по-моему дело обстоит намного сложнее, нежели с логотипом. Логотип-то мы уже взломали, и я выложил подробную инструкцию. А шрифт ГЛЮЧИТ! Не получается просто выбрать карту сопоставления цветов, нарисовать наш шрифт и засунуть его. Во-первых, используется намного меньше байт, чем 255 (остальные просто не встречаются в текстуре). Во-вторых, некоторые из них используются очень мало раз (1-10), в то время как другие – от 50 до 400 совпадений по всему объёму. Самый значимый из них – цвет тени от букв, всюду одинаковый. А вот сами буквы…
Ну я пробовал использовать считанное количество цветов (<10), и наляпать их поверх букв, чтобы понять, за какой цвет отвечает конкретный байт. Потом увидел, что РЕАЛЬНЫХ цветов ещё меньше – 3 штуки + тень. А когда я попытался только их использовать, то они выдали вертикальные полосы градации жёлто-оранжевого, что и их исключило. Таким образом, я остался лишь с безотказной тенью.
В-третьих, некоторые байты монотонно заполняют символы кнопок X O /\ [] и не встречаются в простых буквах. Причём если нагло их применять, то цвет останется жёлтым (а не красным, синим, зелёным или розовым), но будет (возможно) подвержен «полосатым» глюкам. В-четвёртых, мы знаем, что последовательности символов с «@» могут изменять цвет шрифта, а также шрифт может отображаться выделенным или затенённым. Значит, текстура определяет не цвет, а оттенок насыщенности. В-пятых, на всех буквах градиент. А в кишках текстуры – рандомизированный шум вместо аккуратного слияния! Наводит на мысли об автоматическом сглаживании… НО! Тень от букв никуда не сглаживается и не смешивается с градиентом. Значит, пиксели однозначно должны определять цвет и не смешиваться. НО! Мои полосатые глюки свидетельствуют об обратном. Следовательно, пиксели как-то взаимодействуют друг с другом. И просто так рисовать одним цветом по текстуре нельзя, потому что «цвет» – работает только в сочетании с соседними пикселями, которые в свою очередь тоже не имеют собственного цвета (исключение – тень). Как же они сами создали шрифт? Их «студия-среда разработки» имела совместимый графический редактор. Они нарисовали шрифт, а программа автоматически скомпилировала его в понятный игре формат. Для нас это равносильно ковырянию EXE файла «Блокнотом»…
Тогда как же русские пираты перевели буквы? Да они просто «исказили» английский шрифт так, чтобы символы стали русскими. Отражали и обрезали. Но я так не хочу! Наш шрифт должен быть ЛУЧШИМ! И мы не можем использовать шрифт ЭТИХ пиратов. Можно поискать другой шрифт…
Итак, задание всем. Первое: вытащить шрифт из Spyro2. Второе: вытащить шрифт из всех русских версий Spyro3! Получим антологию русских букв. Может быть даже где-нибудь будут переведены символы нижнего регистра. Тогда мы если не создадим свой шрифт, то хоть «соберём» его из разных версий.
Либо нужен TimTool. А ещё лучше – среда-создатель игры!

Quote (Earls)
я может чего-то пропустил
но почему никто не юзает офф development kit ?
http://psxworld.ru/load/55-1-0-3143.


MegaUpload сдох? Или кто-то успел скачать?

Quote (OLEG778)
Кто-нибудь еще "живой" остался? Кто-нибудь что-нибудь делает? Что за видео делаем?


В Google Code я пока не вник, и жду Йамса для реализации одной идеи.
… Ну, видео. Я ещё и стихи потихоньку пишу в тему про стихи…

Quote (OLEG778)
отличная идея насчет даты релиза. Только почему именно 21 июня?


На середину года! К весне вряд ли успеем. Но возможно, что летние каникулы нам тоже понадобятся, поэтому можно и на первое сентября назначить (и наша игра просуществует только три месяца до конца света).

Quote (OLEG778)
Еще переводы кроме уже сделанных появились?


Честно: понятия не имею.

Quote (OLEG778)
Если нет, то я возьмусь продолжать работу над переводом. Если да, то скажите какие уровни переведены, какие нет.


Знаю только, что Зазеркалье проигнорировало мой призыв помочь нам в переводе игры. Плюс ко всему, они удалили тамошнюю ветку форума с моими революционерскими сообщениями и отказываются (вернее, не соглашаются) принимать мои новые переводы песен. Значит и там с администрацией менё ещё ждёт долгий напряжённый разговор…

И ко всем:

Худшее, что может случиться с проектом перевода – если он останется незаконченным.

Quote (OLEG778)
Что за видео делаем?


…«Партию» не выкладывать?..

P.S Перезалил CreatingLogos с 2% информации восстановления, на всякий случай:
http://klimaleksus.narod2.ru/Files/CreatingLogos.rar_


but nobody came
 
gitgegСообщение # 109 Суббота, 04.02.2012, 11:57
Аватар gitgeg
Взрослый Дракон
Житель Города
«408»
Где: Не в городе Драконов
Неплохо...Я,может быть,мог бы озвучивать,но нужен текст mmmm .Если конечно.озвучка ещё нужна smile

 
CubeStudioСообщение # 110 Среда, 08.02.2012, 17:23
Аватар CubeStudio
Маленький Дракон
Житель Города
«318»
Где: Не в городе Драконов
gitgeg, я бы тоже мог озвучивать, но им нужно сначала нужно закончить обработку шрифтов, а затем вырезать оригинальные реплики. Но и это не всё! Им также нужно суметь как-то ЗАПИЛИТЬ нашу речь в игру. Так что до озвучки они (и мы) не скоро доберёмся.

По-настоящему оценить может лишь тот, кто досмотрел презентацию до конца.
 
n1x64Сообщение # 111 Четверг, 09.02.2012, 01:00
Новорожденный Дракон
Житель Города
«168»
Где: Не в городе Драконов
Quote (aleksusklim)
MegaUpload сдох? Или кто-то успел скачать?

Есть и альтернативные источники:
http://www.emuparadise.me/sdk/ (Предпоследняя ссылка)
http://snesorama.us/board/showthread.php?t=18779 — тред на Снесораме. И последний пост для загрузки.

Хотя есть ли смысл его качать? Весит оно ~80 мб, но я не могу его опробовать, так как использую 64-битную систему. Возможно, у Insomniac Games были еще собственные инструменты для дополнительной запаковки звуковых и т.п. файлов и ценности от офф. SDK будет ноль.



 
aleksusklimСообщение # 112 Четверг, 09.02.2012, 11:16
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Quote (n1x64)
Есть и альтернативные источники:


? По-моему это не совсем тот же архив…

Quote (n1x64)
http://www.emuparadise.me/sdk/ (Предпоследняя ссылка)


А… Это?

Sony:
Sony Playstation 1 SDK ( http://www.emuparadise.me/sdk/Sony/PlayStation%201.7z ) [Size: 89M]
Sony Pocketstation SDK ( http://www.emuparadise.me/sdk/Sony/PocketStation.7z ) [Size: 360K]


Так размер же не…

Quote (n1x64)
http://snesorama.us/board/showthread.php?t=18779 — тред на Снесораме. И последний пост для загрузки.


(PSX) Sony Playstation Software Development Kit - Official w/ Docs (347MB)

А на http://psxworld.ru/load/55-1-0-3143 было:

Sony Playstation Software Development Kit - комплект средств разработки под платформу Sony Playstation.rar 367.3 MB

Quote (n1x64)
Хотя есть ли смысл его качать? Весит оно ~80 мб…


А разве не 380? Архивы явно разные.

Quote (n1x64)
…но я не могу его опробовать, так как использую 64-битную систему. Возможно, у Insomniac Games были еще собственные инструменты для дополнительной запаковки звуковых и т.п. файлов и ценности от офф. SDK будет ноль.


Движок игры эквивалентен движку Crash. А значит, ресурсозапаковыватель был универсальным и неэксклюзивным.

…А мой Wad Manager хоть кто-нибудь проверил?


but nobody came
 
n1x64Сообщение # 113 Четверг, 09.02.2012, 18:22
Новорожденный Дракон
Житель Города
«168»
Где: Не в городе Драконов
aleksusklim, архив на emuparadise при распаковке весит более 300 мб. 7z дает возможность очень сильно сжимать архивы.
Quote
…А мой Wad Manager хоть кто-нибудь проверил?

Похоже, что пока никто.



 
MrDarkСообщение # 114 Понедельник, 13.02.2012, 09:00
Аватар MrDark
Магистр-генералиссимус оригинальной трилогии
Почетный Житель
«498»
Где: Не в городе Драконов
Я знаю английский на отлично, так что я хотел бы быть переводчиком.

Добавлено (13.02.2012, 09:00)
---------------------------------------------
Что нужно перевести на данный момент?

 
aleksusklimСообщение # 115 Четверг, 08.03.2012, 07:35
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Что осталось переводить? Хм… первый мир вроде бы частично переведён. Со второго мира переводы наверно есть на нашем Google Code. Следовало бы кому-нибудь выложить сюда более-менее готовые варианты переведённых уровней.
По-моему, проще сказать, что ещё точно не переводились уровни третьего мира.
Технология перевода уже описана в этой теме.

По поводу Wad Manager. Я придумал, как можно сделать ещё одно значительное улучшение. Модуль Concatenator может работать в потоковом режиме доступа. При этом все файловые операции копирования будут происходить практически мгновенно. И я хочу переписать Delphi с такой функцией. А параллельно переименовать программу (в «AllWadMngr – AWM») и исправить в ней все ошибки, которые кто-то должен был найти… Поэтому я до сих пор надеюсь, что хоть кто-нибудь опробует её на деле.
Очень удобно для вытаскивания подуровней, чтобы извлекать антологию русских шрифтов. Путь любой, у кого есть хоть одна любая русская версия Spyro3, предоставит нам шрифт из неё. Обрабатывать файл по-прежнему через паскаль.

Перепись Pascal на C# поставила меня перед неприятным фактом. Оказывается, ни одна готовая исполняемая программа на нём (семейство Microsoft Visual Studio) не будет работать на операционной системе без .NET Framework v2.0. А это сильно ограничит их использование…
Плюс к этому, модуль замораживания потоков тоже использует C# и выдаёт ошибку при запуске (но продолжает работу после нажатия ОК). Значит мне следует либо забить на это и продолжить писать на C#, либо полностью от него отказаться.

Добавлено (08.03.2012, 07:35)
---------------------------------------------
Вот он я нашёл множество ошибок во всех моих программах, создал их новые версии, перепроверил всё, экспериментировал с текстом – и долбился странных, но интересных результатов.

Поздравляю всех женщин с их днём! И вопрос: сколько процентов покажет соотношение пользователей этого сайта по формуле { (кол-во. Драконессы) / (кол-во. Драконы) * 100% } ?

А я сейчас залью все новые версии программ, включая великолепный Текст-О-Вытаскиватель v 2.1 (скриншот), и подробно опишу проведённые опыты.

Мы продвинемся немного вперёд! Ждите…







Добавлено (11.03.2012)
---------------------------------------------

Serlutin, спасибо.

____________________







Ну что, друзья! Вот я и совершил множество великих деяний в пользу нашего перевода игры. Может они и не выведут проект на новый уровень, но толчок к развитию дадут однозначно.

Мой коммент будет длинный… но чрезвычайно полезный. Начну с модулей и программ, а закончу глюками и шрифтом. Поехали…

Мои модули – пакеты расширения.

Вот готов Concatenator v1.2. В нём произошли следующие изменения:
«Теперь конкатенация файлов с защищённых носителей и файлов только для чтения проходит всегда успешно. В обычных функциях использован новый потоковый сверхбыстрый метод доступа. Отныне первичное извлечение в пустой файл корректно вызывает функцию ядра, вместо стандартной file_copy. Исправлены ошибки возвращаемого значения. Изменено поведение некоторых функций. Уменьшены зависимости модуля и упрощён gml-код. Удалена скрытая функция проверки вызовов. DLL откомпилирован с дополнительными директивами и обрезан после построения. Осуществляется проверка на ошибочное чтение и запись в один и тот же файл как на уровне GML, так и внутри DLL.» – из моей справки к модулю. Вообще, я просто запарился справки писать! Хоть бы кто прочитал…

Sound Thread v1.2 также значительно похорошел:
«Главная модернизация – полностью удалено ядро C# и все связанные с ним программы. Теперь не требуется .NET Framework! В связи с этим ещё более ускорена загрузка приложения, а также отныне модуль нормально работает и в отладочном режиме! Добавлены функции проверки состояния и работоспособности модуля. DLL откомпилирован с директивами и урезан. Значительно уменьшены зависимости, и полностью удалено обращение к реестру. Также убрана GML инициализация.» – вот такую версию модуля я буду внедрять во все свои будущие программы (которые не используют звуки), потому что ошибок с ним я ещё не замечал. Надеюсь, всё будет работать, плюс меня радует размер – 12 Кб! (в сравнении, Конкатенатор весит 52 Кб).

Ещё я создал один полезный модуль Dialog Async v1.0, который содержит EXE написанный на AutoIt (знакомы?) и отображает различные диалоги, сообщения и окошки. Но основная суть в том, что во время показа диалога главная программа на Game Maker остаётся рабочей – не ожидает ответа пользователя, а продолжает выполняться. Это особенно выгодно для сетевых игр/программ: если они постоянно пингуют друг друга – то никак нельзя зависать на диалогах. При ответе пользователя, AutoIt передаёт результат через реестр для Game Maker, а тот уже обрабатывает его и генерирует нужное событие. Плюс ко всему, AutoIt может присваивать таймаут для окошек сообщений (походу, MessageBoxA из user32.dll), по истечении которого окошко самозакрывается (смотрите как удобно: например, копируем что-нибудь. Потом минут через пять выскакивает вопрос о замене существующего файла. Так ведь копировать ещё полчаса осталось! Поэтому окошко через некоторое время, например минуту, само отвечает «Да» и продолжает копирование – было бы очень полезно, разве нет?). То есть, кроме асинхронных диалогов можно задавать ещё и синхронные. Только всё равно удобнее, чем встроенными средствами от Game Maker – например, в окошко выбора каталогов можно задать папку, выбранную по умолчанию (что отсутствует во всех моих предыдущих программах – приходилось каждый раз идти от корня дерева). Но, в итоге, необходимость применения этого модуля для НАС под большим вопросом, ведь мои программы призваны ковырять ресурсы, а не выдавать красивые диалоги. Ну и что? Модуль экспериментальный, и я считаю, что могу его применить к своим программам для перевода игры, чтобы, так сказать, испытать его в полевых условиях. Одна беда – размер на 220 Кб, хотя я и урезал, и через UPX сжимал…

Кто-то наверно задастся вопросом, зачем, дескать, я публикую сюда информацию о модулях, если они сами по себе не имеют никакого отношения к проекту перевода. Ведь нам нужны только EXE, а уж из чего они состоят – не важно. Как бы ни так! Важно!! И я в любом случае описал бы работу каждого модуля (кстати, у них у всех есть подробные справки). Где угодно. Могу на своём сайте, могу зарегаться на форуме по Game Maker, могу завести блог на Твиттере и писать туда… Но что толку? Сюда, на этот форум, я в любом случае поставлю ссылку на то место, где описал работу модулей. Так может и не париться? Не заморачиваться со ссылками, а писать всё здесь? А если захочу показать их кому-то ещё, то просто сошлюсь сюда, на форум. Так разве это плохо?

Все мои модули структурированы так: в папке лежит RTF справка, GED исходник пакета расширения, GEX сам готовый скомпилированный пакет, TXT поля модуля, GML код функций на Game Maker, DPR делфи код, AU3 скрипт Autoit, EXE от AutoIt, DLL от Delphi и TXT каждая gml функция отдельно + списки функций для импорта в Extension Maker. Но, разумеется, три разных пакета расширения имеют разные наборы файлов отсюда.

Я это всё говорю на тот случай, если кому-нибудь нужно будет модифицировать GMK моих программ. Для этого сначала необходимо проинсталлировать пакеты расширения в сам Game Maker (файлы GEX). Но для обычного запуска любой моей программы никакие пакеты расширения не требуются, только самодостаточный (stand-alone, говоря по-русски) EXE-файл.

Вот Extension Maker, через который я компилировал модули (оригинальный, неизменённый):
http://klimaleksus.narod2.ru/Files/extmaker.zip (817 Кб)

Теперь перехожу к самим программам.

All Wad Manager v2.2! «Изменения третьего издания:

– Использование новой версии Конкатенатора позволило производить все операции с файлами за очень короткие промежутки времени – то, что раньше происходило за час, теперь пройдёт за минуту!
– Из-за ошибок в Конкатенаторе в предыдущей версии было невозможно работать с WAD, находящимся на защищённом от записи носителе (извлечённые файлы были пусты). Теперь это возможно.
– Новый модуль Sound Thread V1.2 значительно уменьшил потребление ресурсов.
– Добавлена кнопка получения адресов субфайла относительно WAD.
– Исправлена серьёзная ошибка, возникающая при задании абсолютного виртуального адреса доступа, из-за которой не закрывался рабочий файл, что в конечном итоге приводило к парализации всех функций.
– В этом же установлении виртуального адреса доступа «От … до …» исправлена оплошность ошибочного определения адресов по нажатию кнопки «Войти» вложенной структуры WAD – как для консольного режима, так и для графического.
– Ошибка перехода внутрь вложенного WAD после явной установки адреса… Вообще-то, такое даже и не планировалось (и никак в консольном), но оказалось реализуемым. Глюк появлялся при возврате, когда обрезалось «WAD:\?». Теперь используется «WAD:\?\», но технология всё равно стрёмная.
– Доработан консольный режим для использования в пакетных файлах. Никаких ошибок больше не возникает.
– Добавлен новый ключ командной строки /F, удаляющий пустые файлы.»

В общем, версия улучшенная, советую использовать только её. Плюс уже описанная добавленная кнопка получения адресов субфайла относительно WAD поможет скопировать местонахождение субфайла для нового Текст-О-Вытаскивателя. Я проверял режим командной строки для AWM – работает чётко. Справка по ключам не изменялась, команды те же. И я провёл абсолютную сборку с нуля нашего (моего) WAD3.WAD. Сначала распаковал по файлам. Потом создал новый WAD (не оригинальный, а холостой!) на 256 субфайлов (2048 байт заголовок) и добавил в него все распакованные оригинальные субфайлы через промежуток – ноль, кратный на – ноль. Всё дело заняло для All Wad Manager v2.2 не более пары минут (притом как Wad Manager v2.1 делал это за полчаса, а Wad-Xtractor v1.2 – вообще часа за три) и MD5-хеш полностью совпал! Я могу с уверенностью сказать, что нормальный софт для распаковки и внедрения текстов у нас теперь есть:
http://klimaleksus.narod2.ru/Files/AWM_2V2.rar (1,78 Мб)

Symbols Changer v1.3 – улучшенный Перетасовщик Символов. MrModez, думаю, прога совершенна. Лучше неё уже просто не пригодится! Вот изменения новой версии:

« – Создан режим командной строки.
– Применена новая более совершенная версия экспериментального модуля.
– Также использована новая версия Конкатенатора, что не влияет на результат.
– Исправлена серьёзная ошибка при загрузке сохранённой таблицы: файл больше не самоуничтожается!
– При обработке папок программа теперь нормально закрывает используемые дескрипторы поиска и всегда отпускает директорию.
– При сохранении таблицы автоматически дописывается расширение .ini ».

Ссылка:
http://klimaleksus.narod2.ru/Files/SYM_1V3.rar (1,83 Мб)

Да, улучшения незначительны. Но главная цель релиза v1.3 – избавление от старой версии Sound Thread v1.1, которая требовала .NET Framework. Больше таких амбиций нет. А чтобы не выпускать её «просто так», а создал режим командной строки. Парсер (а именно так я предлагаю «переводить» слово «Parse», обозначающее что-то вроде «обработка аргументов и ключей командной строки» или «подбор имён файлов по маске», ибо в русском языке такого слова просто нет, и оно переводится косвенно, типа «делать грамматический разбор». Ну вы поняли, парсер!) очень лёгок в использовании:
SYM.exe "Table" "Source" "Desten"
, где Table – ini-файл таблицы соответствия, Source – исходный файл, Desten – файл для сохранения результата. Они также могут быть каталогами, в этом случае обработке подвергнуться все файлы из папки Source\* . Проверено – работает. Только загрузка программы от Game Maker зачастую отбирает больше времени, чем сама обработка и выполнение, но это уже не ко мне, а создателям GML. Кстати, они как-то обещали в начале 2011-го, что скоро выйдет Game Maker 9, написанный на C# (надеюсь, что хоть он во framework не упрётся!). Я тут поискал… Обнаружил только комментарии, датированные началом 2011-го, в которых говорится, что скоро выйдет GM9… Но пока что текущая версия – 8.1. Не думаю, что стану её скачивать, потому что кряк, скорее всего, появится только к началу 2013-го…

Самое важное! Textus-Reader Текст-О-Вытаскиватель V 2.1! Это просто супер! Скачивать всем без исключения, если хотите переводить тексты игры:
http://klimaleksus.narod2.ru/Files/TXTRDR_2V1.rar (2,06 Мб)
(Во всех трёх архивах программ содержание такое: EXE – исполняемый файл, для работы нужен только он. Остальное – GMK и папки с исходниками используемых модулей – только для поддержания статуса open source, да для всех, кому интересно.)

И справку прочитайте. Но она длинновата получилась… Чем дублироваться и пояснять принцип работы, выложу сюда саму суть из неё:

« Единственная цель программы – вытаскивание текста из сложных структурированных файлов. Важную роль играет последовательность алгоритма поиска, который основывается на пяти массивах символов.
Это даже не символы, а их коды от «0» до «255». Вам нужно сначала определить эти пять массивов, а затем анализировать интересующий файл.
Вот как происходит поиск строк. Вообще-то, это могут быть не обязательно текстовые строки, а любые двоичные последовательности:
РАН – [ НАЧ – СЕР – КОН ] – ВЫХ
Таким образом, из файла выделяется последовательность байт, в которой первый символ содержится в массиве НАЧ, последний – в массиве КОН, всё между ними существует в массиве СЕР, а предшествует последовательности символ, имеющийся в РАН, притом, что следующий за последовательностью символ есть в массиве ВЫХ. Но только в том случае, если длина полученной последовательности не меньше минимального, но и не больше максимального значения.
Для большей ясности вот внутренний механизм поиска. Он работает в двух режимах: ожидание начала и ожидание конца. Каждый следующий символ читается и обрабатывается, основываясь на предыдущем символе.
Сперва читается всё подряд, до тех пор, пока не встретится символ из массива НАЧ. Тогда предыдущий символ обязан быть в массиве РАН (либо не существовать, когда это самый первый обрабатываемый байт). Если это так, то происходит переход в режим ожидания конца, а иначе – читается следующий символ и снова сравнивается.
Режим ожидания конца сложнее, здесь происходят такие вычисления:
– Если взятый очередной символ принадлежит массиву ВЫХ притом, что предыдущий был из КОН (либо из НАЧ, если текущая длина равна единице), то это место определяется как разрыв, и программа переходит обратно в режим ожидания начала.
– Если взятый символ принадлежит СЕР или КОН, то продолжает ожидание конца, считывая следующий символ.
– Иначе, при несоблюдении ни одного из условий, программа выбрасывается в режим ожидания начала без определения области, потому что получен невостребованный символ, который не может находится в строке.
Также валидация предыдущего символа на наличие в КОН проходит при достижении конца файла. Если при определении области её размеры не укладываются в рамки, то программа переходит в режим ожидания начала и считывает следующий байт, без запоминания неверной строки.
Таким образом, основную роль переключателей играют массивы НАЧ и ВЫХ.
Промежуточная текущая таблица сохраняется в реестре.
Вначале работы определите файл, с которым будете производить действия. Искать, извлекать и внедрять. Потом (если таблица уже создана или загружена), проверьте адрес доступа и пределы длины строк.
Теперь нужно начинать поиск.
Индексация файла хранится в памяти. Индекс сохраняется и загружается в текстовые файлы «.TextusReaderIndex», а таблица с массивами – в двоичные файлы «.TextusReaderTable».
Дальше перед вами встаёт выбор, в какой форме получить результаты поиска. Вы можете разбить рабочий файл так, чтобы он весь был разделён на две группы последовательных файлов – со строками и с промежутками между ними. Тогда для сборки обратно уже не понадобится ни оригинальный файл, ни индексация (именно так работала старая версия программы).
Ещё вы можете нарезать все найденные части по разным файлам. Но тогда для склейки будет нужен как рабочий файл, так и индексация. Аналогично, можно слепить всё найденное подряд в единый файл, либо разместить это построчно в текстовый документ. Причём для корректной работы построчного метода, все найденные части должны состоять только их текстовых печатных символов. Восстановление из строк и разлепление из одного файла, разумеется, тоже требуют оригинальный файл и индексацию, по которой он был расфасован. ».

Итог такой: в отличие от предыдущей версии, которая сразу кромцала файл, эта версия сначала анализирует его, а потом применяет или сохраняет части. И кстати, Файлострочник нам теперь определённо не нужен… нисколечко… (даже обидно, чувствую себя как создатель пейджера, глядящий на сотовый телефон… хотя со мной такое всё чаще происходит… ведь В-Ад-Перемещатель теперь тоже излишен…). Не нужен, потому что новый Текст-О-Вытаскиватель сам следит (благодаря прокрустиану Конкатенатора) за длиной строки. Нам больше не страшны пробелы на концах строчек или лишние буквы – они будут обрезаны. Также не страшно отсутствие нескольких символов: внедрено будет просто только то, что есть. Получается, что мы не «заново собираем разбитый файл», а вносим изменения в исходный – и его объём уже никак не измениться (а то раньше – на байт ошибся – коту под хвост 500 файлов…). И алгоритм поиска совершенно другой, который меньше «мусорит». Плюс, я избавился от звёздочек перед английскими фразами, об этом позже.

Всё. Работу над софтом для текстовой части перевода можно считать законченной (…что там остаётся? Графика да звук… расплюнуть!), потому что все действия сводятся к таким шагам:
– Через AWM извлечение нужного суб-субфайла уровня (чётные уровни с 98 по 170 и чётные подуровни от 4 до 10). Хотя можно даже не извлекать, а воспользоваться новой кнопочкой получения абсолютного адреса.
– Через TXTRDR обработать по нашей-заданной-экспериментальной (ну это пока… да хотя наверное она итак сгодится!) таблице массивов этот подуровень, или весь WAD по извлечённому абсолютному адресу.
– Перевести выходной построчный текстовый документ на русский язык.
– Обработать его через SYM по таблице соответствия (похоже, пока что от _русских_пиратов_, потому что шрифт у нас ещё не свой).
– Залить результат обратно в TXTRDR, а подуровень – в WAD через AWM (либо сразу в ад WAD, если использовался абсолютный адрес без выгрузки).

Рутинная работа может быть выполнена автоматически через интерфейс командной строки и batch файлы сценариев. Ведь TXTRDR также умеет перехватывать параметры! Его парсер совершенно отличается от обработчиков двух других программ как внешне, так и внутренне. Ключи (а их немало – читайте справку) могут следовать в любом порядке и количестве. Можно даже задавать саму таблицу через перечисление байт нужного массива. Абсолютно все функции Текст-О-Вытаскивателя могут быть реализованы автоматически без показа графического окна. Мало того, они ещё и дублированы для консольного режима отдельно (то есть, не как в AWM, где парсер просто вызывает эмуляцию нажатий по кнопкам скрытого окна) – весь результирующий код находится в одном объекте.

Надо только продумать правильные команды BAT файла, чтобы быстро извлекать, конвертировать, внедрять, прожигать и проверять игру!

О поиске пяти символьных массивов.








*Продолжение в комментарии ниже*


but nobody came

Сообщение отредактировал aleksusklim - Воскресенье, 11.03.2012, 22:43
 
SerlutinСообщение # 116 Воскресенье, 11.03.2012, 21:52
Аватар Serlutin
Взрослый Дракон
Летописец
«2343»
Где: Не в городе Драконов
↓↓↓
 
aleksusklimСообщение # 117 Воскресенье, 11.03.2012, 22:52
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
*Начало в комментарии выше*








О поиске пяти символьных массивов.

Текст-О-Вытаскиватель работает по новому принципу, и теперь возникла необходимость отыскать такие настройки для работы, которые не упустят ни одну строку, но при этом захватят как можно меньше двоичного мусора. Для этого мне нужно точно знать, какие символы присутствуют в строке, каких там никогда нет, какие предвосхищают строку, и на каких она заканчивается (пять массивов). И главное решение пришло мне интуитивно…
Game Maker плохо работает с двоичными файлами. Но здорово с текстовыми. Я могу собрать несколько строк в одну, разделяя их CRLF – chr(13)+chr(10), и тогда при единственном вызове функции записи строки в файл, я на самом деле запишу сразу несколько строк. И считываться они будут по очереди. Потому что «строка» в Game Maker – это любая последовательность любых байт любой длинны. Там могут быть и непечатаемые символы от 0 до 30. То есть через строки было бы удобнее читать и писать в двоичные файл, если заранее определить количество «символов», которые я хочу прочесть…
Ну я и попытался написать DLL на делфи, который принимал бы строку и писал её в файл. Или читал заданное количество байт в строку и возвращал её в Game Maker. Но появилась проблема… PChar! Строки приходят в DLLтолько как PChar, а это нуль-строка (null-terminated), у которой на конце всегда стоит 0х00 (NUL, нулевой байт). И она обрезается по дороге на месте первого встречного нулевого байта. Передачу строк в других форматах не поддерживает сам Game Maker…
Ну я ещё попытался автозаменить все «нули» на какую-нибудь другую случайную последовательность байт, чтобы DLL автозаменил её обратно в «нули», но как выяснилось, функция gml автозамены (string_replace_all) просто гонит на строках с непечатаемыми символами! Подсчёт подстрок канает, вычисление позиции первой катит, а замена – полный крах! Видимо, это ещё одна ошибка Game Maker.
Я тогда ещё попытался передавать данные через реестр, но единственный поддерживаемый тип «REG_SZ» тоже null-terminated…
…И вы все вопрошаете, зачем же я всё это рассказываю? А моя неудача подсказала мне предположение, что все строки в Spyro3 могут быть тоже null-terminated! Это значительно бы упростило их обнаружение и получение.

Проверил – да!! Но не только 00h, ещё и FFh (255 – строчная русская «я») – то есть, строки кончаются либо на NUL, либо на DWORD «-1» (FFFFFFFF), который часто встречается как разделитель объектов.
Итак, массив ВЫХ состоит из 0 и 255.
Как найти остальные массивы? Есть отличная функция WinHex > Specialist > Gather Text… , которая извлекает всё, что похоже на строки. О-о-очень сильно мусорит… Но зато 100% вытащит все строчки. Тогда я придумал такую схему:
1) Предположить пять массивов «на глаз»
2) Извлечь ими ВСЕ строки из игры
3) Обработать их Перетасовщиком Символов, чтобы превратить в звёздочки («*» – 42 в десятичной)
4) Загрузить строки обратно в WAD (вернее туда, откуда брал)
5) Gather Text – и посмотреть, какие строки остались.
6) Если что-то осталось незаменённым, то вручную просмотреть его, и перейти к пункту с улучшенной таблицей.
7) Если извлеклось всё, то вручную удалить весь мусор из файла с чистыми строками.
8) Через WinHex утроить содержимое файла (копировать и вставлять всё в конец)
9) Добавить часть файла TextusReaderTable, которая отвечает за массив СЕР (между вторым и третьим блоком 01–00, выступающим в качестве разделителя массивов)
10) «Анализировать» утроенный-модифицированный файл через WinHex (Tools > Analyze File), сохранить отчёт.
11) Посмотреть в этом отчёте все байты, которые повторяются один раз (отсутствуют в извлечённом тексте, но существуют в таблице)
12) Удалить их из массивов и вернуться к пункту 2.

И так до тех пор, пока не останется «идеальная» таблице, извлекающая всё, что нужно, но ни более того. И я это сделал! Однако мой пиратский WAD3.WAD может слегка отличаться от WAD.WAD из Greatest Hits, поэтому её нужно будет слегка обтесать. Вот сведения о массивах:
РАН. Чаще всего – 00h. Но бывает и 1, и 2, и 3… Даже 10 (0Ah), 12, 14… и 13, 15, 20… Да мне надоело!! Ставлю сразу всё от 0 до 31 (0x00 0x1F) – все непечатаемые символы. Но это ещё не всё! Иногда встречается «ю» и «я» (FE и FF), также «з» – 231. И почему-то кавычка типа «„» – 132.
СЕР. Все допустимые символы для игры: « !&'()+,-.0123456789:<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\^abcdefghijklmnopqrstuvwxyz{}к». Только они встречаются в моих пиратских строках.
Вопрос первый: где звёздочка? Она допустима… И если её ставить, то в игре появляется звёздочка. Но по непонятной мне причине, ни в одной фразе, ни в одной строке ни одного уровня, ни атласа и ни менеджера карт памяти, звёздочка не встречалась! Зато постоянно в мусоре… Вот я и принял решение убрать её из таблицы.
Вопрос второй: что это за кирильская «к» (234) на конце? А это русские пираты так обозначали твёрдый знак… Но вместо него появлялась «В». Не знаю, как в GH, но в моей версии без «к» никак. (в рифму!)
РАН ещё раз. Многие стоки начинались со звёздочки, которая не отображается в игре. Значит это никакая не звёздочка, а двоичный байт, начинающий строку! Тогда добавляем его в РАН. Обнаруживаются строки, начинающиеся с «+*»… Ладно, добавляем туда ещё и плюс. И с «;» тоже… Хорошо, точку с запятой также.
НАЧ. Это доработанная версия СЕР, из которой удалены «+» и «;».
КОН. Это тот же СЕР, только без «@», потому что собачка + цифра определяют цвет шрифта, и @ никак не может быть последним символом. Может и что-нибудь ещё, надо просто поэкспериментировать.

А сейчас задумайтесь: как я извлёк ВСЕ строки из огроменного WAD? А я хитёр и находчив! Я использовал BAT сценарий, который выполняет такие шаги:
1) Извлекает из WAD субфайлы 2 и 179 (менеджер карт памяти и атлас).
2) Извлекает суб-субфайлы с 4 по 10 из чётных субфайлов от 98 до 170.
3) Забрасывает их по группам в новые WAD, группы строятся так: в первой – четвёртые подуровни (сам мир) уровня 98 (Sunrise Spring Home), 100, 102 и так до 170; во второй – шестые подуровни (первая мини-игра, если она есть) из уровней 98, 100, 102 и так до 170; в третий – восьмые подуровни, и в четвёртый – десятые.
4) Получает текст из файла атласа по адресу от 0 до 5000, заливая его подряд в один файл (вообще-то, весь текст игры находится не только в этом атласе, карте памяти и уровнях, а ещё довольно много где. Следует потом поискать всё тщательнее…)
5) Создаёт ещё один большой WAD, закидывает туда субфайл карт памяти, текст из атласа и четырё сборных WAD с подуровнями всех уровней.
6) Производит поиск текста по таблице и извлекает его (я взял нижний предел длины на 10 символов, что бы получить чистые строки и НИСКОЛЬКО мусора, ведь такое чревато повреждением. Это лишь эксперимент, для нормального перевода потребуется 3 или даже 2 буквы в строке. Но я сразу обезопасил себя десятком!)
7) Обрабатывает текст, превращая все символы в звёздочки (ну кроме 13h и10h, чтобы CRLF переносы строк не нарушить)
8) Восстанавливает эти звёздные строки в наш большой WAD (потому что Gather Text не считает ******* за строки и не отобразит их. А если бы я брал другие символы, то просматривать конечные результаты поиска WinHex было бы сложнее)
9) Извлекает из нашего WAD всё, что в нём было до изменения: менеджер карт памяти, текст из атласа и 4 WAD с уровнями.
10) Восстанавливает строки из изменённого файла строк атласа в оригинальный субфайл атласа.
11) Хитро-хитро перенумеровывая достаёт из четырёх изменённых WAD последовательно все подуровни всех уровней.
12) Внедряет обратно в оригинальный WAD готовенькие субфайлы атласа и меню карт памяти (179 и 2)
13) По одному вставляет все изменённые подуровни всех уровней игры (через двойной цикл FOR с включенной отложенной обработкой переменных и объединением операторов… наверное, это и есть «сердце» всего файла сценария, я горжусь этой строкой:
cmd /V:ON /C "for /L %%j IN (4,2,10) DO for /L %%i IN (1,1,37) DO (set /A cnt=2*%%i+96&%awm% %wad% Put %pat%res_%%j_%%i.txt %%j /H /P !cnt!)"
весь остальной BAT я выложу ниже ссылкой, потому что в виде текста он тут не будет иметь смысла. Но эту строчку я показал, чтобы всем стало ясно, что писать досовские сценарии даже для моих собственных программ не так-то просто!)

После всего это мы получаем, во-первых, файл с чистыми строками для экспериментов по качеству таблицы, а во-вторых – оригинальный WAD3.WAD, в котором ВСЕ строки заменены на «*»! Не пора ли его опробовать?

Эх, Спайро! Что с тобой случилось?

После прожига образа игры, она… запустилась! И даже нормально отображала буквы. Все строки, которые были длиннее 10-ти символов, состояли полностью из звёздочек! Тогда я запустил новую игру.
Всё ОК, Хантер убегает, я подхожу к Sunny Villa, чтобы «поболтать» с Бианкой… И тут игра срывается, переходит к видео #4 «Слабые чувства» («No Hard Feelings»), где Кошельков Толстосум отпускает Шейлу. После этого я оказываюсь перед открытым порталом в Альпы Шейлы, где, почему-то всё ещё стоит наш медведь-мошенник. Но прикол был в другом! Порталы Котика и Роки-Тики были уже открыты. Я заглянул в атлас:
http://klimaleksus.narod2.ru/Files/STARS/Stars_1.jpg
Да я миллионер!! Пошёл к воздушному шару, где меня встретила назойливая Зоя (хм, «назойливая Зоя» – ей идёт!), предупреждающая о пиратском диске:
http://klimaleksus.narod2.ru/Files/STARS/Stars_2.jpg
И это притом, что в моей версии она вообще никогда не появлялась! А за ней – ракета вместо шара (но с палками). В меню:
http://klimaleksus.narod2.ru/Files/STARS/Stars_3.jpg
Лечу к Полуночной Горе. Попадаю к третьему боссу. Замечаю, что вместо прицела стоит огромный нолик:
http://klimaleksus.narod2.ru/Files/STARS/Stars_4.jpg
Дальше я много носился по мирам, и точной хронологии действий не помню. В атласе деньги перекочёвывали из уровня в уровень при каждом удобном случае:
http://klimaleksus.narod2.ru/Files/STARS/Stars_5.jpg
http://klimaleksus.narod2.ru/Files/STARS/Stars_6.jpg
Почему имена уровней видимы, а миров – нет? Почему я уже могу перелетать автоматом на посещённые уровни, а Спаркс – бить бочки? Самому хотелось бы знать…
При разговорах звёздочки заполоняли одну строку в несколько слоёв:
http://klimaleksus.narod2.ru/Files/STARS/Stars_7.jpg
По углам раскидывались части больших цифр. Ещё такой глюк: если прервать разговор нажатием «Старт» или «Крест», то игра просто зависала – панель разговора не исчезала, управление недоступно. Но если дать собеседнику «выговориться» до конца, то всё отпускало меня без проблем. Пытался перезагрузить игру:
http://klimaleksus.narod2.ru/Files/STARS/Stars_8.jpg
Много же процентов мне зачислили! Через ArtMoney при новой игре попробовал обойти Бианку, и сразу пролететь к воздушному шару, чтобы посмотреть на него. Всё как при обычной игре, порталы закрыты:
http://klimaleksus.narod2.ru/Files/STARS/Stars_9.jpg
Но при приближении к уровню Шейлы, игра опять вызывало ролик, а возвращала уже с открытыми порталами. Но причём не всеми, а только двумя, рядом с которыми стояли жители:
http://klimaleksus.narod2.ru/Files/STARS/Stars_10.jpg
Видно, что уровень спидвея закрыт, а Берег Ракушек – уже открыт, хотя у меня нет яиц вообще!
Проверил демку:
http://klimaleksus.narod2.ru/Files/STARS/Stars_11.jpg
Потом стало интересно, можно ли убить Колдунью. Ворота оказались открыты (хотя многие порталы – нет. Это похоже опять связано с тем, что их открывает Бианка при разговоре, который со звёздочками не может состояться). Но нет, Колдунья всё равно выбрасывает в первый мир, где опять случается глюк с видео и появлением ракеты. Вот я и попробовал сходить к Колдунье несколько раз подряд. Ничего особого не произошло, и Спайро-Буддой я тоже не стал, к сожалению…
Прикольнее выглядит портал Супер-Бонуса:
http://klimaleksus.narod2.ru/Files/STARS/Stars_12.jpg
Не то чтобы закрыт… но и не совсем открыт, однако войти можно. Внутри все двери под замком (что странно, учитывая «открытость» большинства всего). Через ArtMoney прихожу ко второй Колдунье – её побеждаю без проблем.
Глюк зелёного Спарска, кстати, появляется сразу при достижении четвёртого мира. Он никак не связан с сохранением игры. Пока я с золотым Спарксом первый раз дрался со Скорчем, Бентли просто морил меня голодом, я то и дело проигрывал! А когда уже переколесил по всем мирам пока у меня все уровни не позакрывались и не попроподали миры – в ещё одной вынужденной битве со Скорчем Бентли решил меня, наверное, закормить до смерти курятиной! (вечнозелёный Спаркс, как вы знаете, предпочитает быть на диете…)
Рамки «паузы» также из цифр:
http://klimaleksus.narod2.ru/Files/STARS/Stars_13.jpg
Бентли уже отпущен (и доступны его мини-игры), но Толстосум чего-то хочет всё равно:
http://klimaleksus.narod2.ru/Files/STARS/Stars_14.jpg
Пока летал по мирам, видел сломанную ракету:
http://klimaleksus.narod2.ru/Files/STARS/Stars_15.jpg
И всем знакомый ракетошар:
http://klimaleksus.narod2.ru/Files/STARS/Stars_16.jpg
Ещё появлялись странные ломаные текстуры на картинках заставки уровней при самом-самом их исчезновении:
http://klimaleksus.narod2.ru/Files/STARS/Stars_17.jpg
http://klimaleksus.narod2.ru/Files/STARS/Stars_18.jpg
Пытался отследить, куда уходят деньги:
http://klimaleksus.narod2.ru/Files/STARS/Stars_19.jpg
Но в уровне всё нормально, все бриллианты на месте, притом что в атласе:
http://klimaleksus.narod2.ru/Files/STARS/Stars_20.jpg
А ещё у меня иногда не плюсовалось к моему общему количеству камней то, что я набрал в уровне (когда Спайро летит на локацию, и самоцветы сыпятся сверху вниз). Да что там «не плюсовалось»! Мне иногда ОТНИМАЛИ камни из мешка (написано было, мол, набрано «-100» – и сотню забирали…)

Что ж, глюки я списал на факт наличия «звёздочки» вначале или конце строки, где её не должно быть, потому что это может быть что-то вроде флага указателя игре о достижении каких-то целей. Тогда я перестроил все действия с файлами, уже заменяя все буквы не на звёздочки, а на латинские «A». Потому что это – обычная буква, и ничего не может случиться:
http://klimaleksus.narod2.ru/Files/STARS/Stars_21.jpg
Стартую новую игру, сразу бегу к Бианке, но поговорить с ней мне опять не дают «Слабые чувства». Вываливаюсь и сразу заглядываю в атлас:
http://klimaleksus.narod2.ru/Files/STARS/Stars_22.jpg
Да я уже мультимиллиардер! И такое одинаково для всех непосещённых уровней:
http://klimaleksus.narod2.ru/Files/STARS/Stars_23.jpg
Страница взята в момент перелистывания, иначе не видно всего числа:
http://klimaleksus.narod2.ru/Files/STARS/Stars_24.jpg
Тогда я делаю два предположения о происхождении глюков:
1) Они вызваны тем, что я задел двоичный мусор, когда заменил все фразы, что привело к повреждению логики игры.
2) Всё только из-за того, что слова не могут быть перенесены на следующую строку по причине отсутствия пробелов между ними, ведь все предложения действительно записаны «в одно слово».

Чтобы убить сразу двух зайцев, я повышаю предел минимальной длинны до 15-ти символов, а замену теперь выполняю целиком на пробелы:
http://klimaleksus.narod2.ru/Files/STARS/Stars_25.jpg
Глюков нет! Разговоры не зависают, видео не показывается, Бианка злится, переходные картинки не ломаются, ракета не появляется, денег нет… Даже скучно немного… Атлас:
http://klimaleksus.narod2.ru/Files/STARS/Stars_26.jpg
«Миры Спарска» видимы, потому что не захвачены пределом в 15 символов. Пора проверить, в чём же именно была причина глюков. Перестраиваю файлы, восстанавливая минимум опять на десятку, но оставляя пробелы:
http://klimaleksus.narod2.ru/Files/STARS/Stars_27.jpg
Глюков нет. Значит, во всем были виноваты именно переносы строк. Следует «разбавлять» буквы пробелами, чтобы игру не швыряло на ровном месте, но это не будет интересно. Атлас чист:
http://klimaleksus.narod2.ru/Files/STARS/Stars_28.jpg
Порталы закрыты:
http://klimaleksus.narod2.ru/Files/STARS/Stars_29.jpg
И шар в порядке, и пауза (словно я вообще ничего не заменял):
http://klimaleksus.narod2.ru/Files/STARS/Stars_30.jpg
На этом глючные опыты были закончены.

Честно говоря, от всех этих глюков я ждал разукрашенную ракету, вихрь перед замком Колдуньи и Спайка на арене Скорча! Со мной такого не случилось, но может повезёт вам? Скачайте мой bat сценарий из этого архива (читайте «Actions.bat» сперва Блокнотом, ведь внутри – инструкция):
http://klimaleksus.narod2.ru/Files/MyBatch.zip (7 Кб)
А в этом архивчике есть ещё и всё остальное! Наша таблица для извлечения текста, сопоставление символов для русских пиратов, таблица звёздочек и пробелов, да последовательнобайтный файл таблицы ACSII. Плюс – файл «artmoney.amkey», который я, кажется, забыл добавить в архив ArtMoney, что не позволяет запускать программу… Странно, что мне об этом никто не сказал! Вот этот файл, скопируйте в папку ArtMoney и попробуйте: либо заработает, либо он привязан только к моему компу (что вряд ли).

Пора взламывать шрифт!

Чтобы раз и навсегда определить, какой байт отвечает за какой цвет в шрифте, можно сделать так:
1) Замазать все буквы единым цветом в градациях серого, например, RGB(1,1,1)
2) Внедрить, прожечь, запустить.
3) Отскриншотить надпись.
4) Изменить цвет букв на RGB(2,2,2)
5) Перейти к пункту 2.
6) Продолжать увеличивать цвет до белого RGB(255,255,255).
7) Выкачать из всех скриншотов попиксельно 256 вариантов цвета (0 – чёрный прозрачный) в полоску или квадрат для 8-Bit-Master.
8) На его основе собрать, наконец, таблицу цветов.

Работка долгая и утомительная… Нужно придумать, как ускорить процесс.
А пока я попытался поработать с таблицей ASCII, чтобы узнать, можно ли променять ещё какие-либо байты, кроме букв английского алфавита и специальных знаков, цифр и всего того, что уже нами исследовано. Как выяснилось, игра «перетерпит» любые вмешательства в строки и «на пофиг» отобразит результат. Конечно, NUL и FF я не применял… Начал со всей таблицы от пробела до строчной «ю». Лучше место для исследований – начальная гневная речь Бианки, так как это самая длинная строка всей игры (ясно из результатов выкачки текста):
http://klimaleksus.narod2.ru/Files/STARS/Stars_31.jpg
Вы спросите, что это? Я не знаю, но так отобразились последовательные байты. Причём я их сразу разделил пробелами между собой, чтобы не было глюков с переносами (нечто вроде «! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B »…). После нажатия «Крест» стало хуже:
http://klimaleksus.narod2.ru/Files/STARS/Stars_32.jpg
Следующие нажатия «Крест» или «Старт» вызывали перепечатывание заново букв из предыдущего скриншота, и так до бесконечности. Игра зависла. Тогда я немного видоизменяю строку, удаляя оттуда самые «опасные» байты – 127, <32, «з» и «ю». Несколько экспериментов:
http://klimaleksus.narod2.ru/Files/STARS/Stars_33.jpg
Начало неплохое, но потом:
http://klimaleksus.narod2.ru/Files/STARS/Stars_34.jpg
…Странный нимб, вы не находите? Может, это часть её радуги? Но во всех случаях были зависания:
http://klimaleksus.narod2.ru/Files/STARS/Stars_35.jpg
Тогда я удалил проценты «%», амперсанд «&», собачку «@», решётку «#», нижнее подчёркивание «_», точку с запятой «;» и всю ASCII после 127:
http://klimaleksus.narod2.ru/Files/STARS/Stars_36.jpg
Теперь всё нормально. Но почему бы не попробовать наоборот – оставить только неизвестные знаки и русский алфавит > 127? А получилось вот это, очень шокирующее:
http://klimaleksus.narod2.ru/Files/STARS/Stars_37.jpg
http://klimaleksus.narod2.ru/Files/STARS/Stars_38.jpg
…А я ведь хотел просто выяснить, какой символ отвечают за чёрточки над европейскими буквами… Да-а, выяснишь тут…

Поэтому просьба ко всем, у кого есть Spyro2 или Spyro3 с неанглийским и нерусским языком! Не знаю, там – французским, итальянским… Или как вообще, в GH язык один? Или Спайро не бывает на других языках? Короче, найдите символ, отвечающий на надбуквенные апострофы! Очень нужен, для «Й» и «Ё»!




Если что-то непонятно – спрашивайте! А то эта тема как-то зависает в безмолвие…

И, надеюсь, хоть теперь-то никто не будет против, если я в скором времени уже наконец выложу свою «Партию»?

P.S. Оказывается, можно набрать в FileZilla команду «MD5 filename», и мой сайт выдаст мне хеш указанного файла! Так ведь я так могу легко проверять, передался ли файл без ошибок. Почему же FileZilla не делает это автоматически?


but nobody came
 
DrWhoСообщение # 118 Суббота, 17.03.2012, 16:03
Аватар DrWho
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
Нехитрые вопросы, но:
1. Когда примерно будет готов перевод?
2. Какая версия игры будет использоваться для этого?

Добавлено (17.03.2012, 16:03)
---------------------------------------------
Посмотрел, есть версия GH, которая вышла только на английском. Её собираетесь переводить?




Сообщение отредактировал DrWho - Понедельник, 12.03.2012, 23:20
 
Doki-sanСообщение # 119 Понедельник, 19.03.2012, 22:21
Стрекоза
Новопоселенец
«0»
Где: Не в городе Драконов
Добрый день! Могу помочь в переводить!!))

Сообщение отредактировал Doki-san - Вторник, 20.03.2012, 15:22
 
devdokiСообщение # 120 Вторник, 20.03.2012, 15:35
Аватар devdoki
Яйцо
Житель Города
«47»
Где: Не в городе Драконов
Всем ку. Очень хотелось бы принять участие в озвучивании любимой игры!! ^_^
У меня хороший микрофон, есть опыт в озвучивании. Думаю, мой голос похож на голос Бианки.
____________________________
Скажите пожалуйста, а много голосов на озвучку набралось?


Сообщение отредактировал devdoki - Понедельник, 26.03.2012, 19:26
 
Поиск:

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

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