Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Rings of Power [SEGA GENESIS]
На страницу 1, 2, 3, 4, 5, 6, 7, 8, 9  След.
 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Разрабатываемые проекты
Предыдущая тема :: Следующая тема  
Автор Сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Чт Июн 24, 2004 7:52 pm    Заголовок сообщения: Rings of Power [SEGA GENESIS] Ответить с цитатой

Rings of Power - это неординарная РПГшка, загубленная ужасной реализацией на толчковом (или как там назвали-то? Smile) движке на Sega Genesis.

Не выдержал я этих ваших стенаний и снова полез в РОМку RoP. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Чт Июн 24, 2004 7:54 pm    Заголовок сообщения: Ответить с цитатой

Сразу же обнаружилась ещё одна подлянка, которую подстроили Naughty Dog. Неужели никто (Orlangoor, например) не пытался изменить пару байт в игре? Она же, зараза, чексумму проверяет программно! Twisted Evil
Вот это они зря сделали, это только злит... Пришлось посидеть в отладчике... не оригинальные ребята оказались, в плане чексумм-то. Wink
Короче, вот патчик, который убирает проверку чексуммы (ставить на bin), теперь каждый может править игру как хочет. Потому что я её переводить не собираюсь, могу только помогать советами, может ещё чего-нить взломаю, но мучаться с особенностями словарей я не собираюсь. Very confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Чт Июн 24, 2004 7:56 pm    Заголовок сообщения: Ответить с цитатой

Пара интересных адресов:

D6EBA - первое слово "An" Главного Словаря. Именно код 0001, потому что код 0000 используется для другого, это как бы код "нет слова". Слова в этом ничем не разделяются, представляют собой массив, из которого игра по Таблице Словарных Поинтеров выискивает нужное слово.

DC0C2 - Таблица Словарных Поинтеров. Стандартная таблица смещений, перевый поинтер 0000 указывает прямиком на D6EBA, то есть на слово "An". Соответственно, второй 0002 - на второе слово "unknown", 0009 - на третье, и т.д. Ну поинтеры и поинтеры, это ясно.

Скорее всего зажатый текст тоже хранится одним куском, но начало этого массива определить не так легко.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Чт Июн 24, 2004 7:56 pm    Заголовок сообщения: Ответить с цитатой

Теперь немного о методе хранения текста в игре.

1. Таблицу для текста может сотавить любой - просто посмотрите на содержимое видеопамяти, там все буквы (тайлы) идут по порядку.

2. Текст хранится целыми словами, а не слогами, как в нормальных DTE/MTE. так как разных слов в игре явно больше 256 Smile, то каждое такое слово кодируется 2 байтами. То есть всего по теории можно вместить 65536 слов, не в данном случае их гораздо меньше (читайте пункт 3) - где-то 16386 - вот почему я говорил, что для русского языка это будет весьма затруднительно - у нас одно только слово "ring" может переводиться как "кольцо", "кольца", "кольцу" и т.д., по всем падежам, то есть в словаре должно быть где-то раз в 6 больше слов. Не считал, сколько слов в оригинале (там ещё не один словарь, а несколько, это вообще маразм), но должно быть где-то 10 тысяч, то есть явно будут проблемы при переводе. Проблемы не в недостатке места - РОМ запросто можно расширить до 2 мегабайт и изменить поинтеры, но дальше 16 тысяч (или меньше, точно не знаю) не выйдешь - только если менять процедуру вывода текста, а это вообще конец света.
Да, предвижу такие варианты выкрутиться - типа, давайте в словарь заносить не целиком русские слова, а только корни, а окончания добавлять как отдельные слоги (короче, перейти от слов к слогам). Однако, это не удастся, и вот почему.

3. В тексте не используются пробелы - они ставятся игрой автоматически! Шибко умные разработчики таким образом нехило сэкономили место. В тексте почти после каждого слова есть пробел, и даже в словаре он тоже есть (слово под номером 0004), но в РОМе он встречается крайне редко - а в тексте в игре очень часто. Или не пробел, а точка (если слово в конце предложения), или вопросительный знак - это зависит от двух старших бит в коде слова (то есть, 00 - пробел, 40 - запятая, 80 - точка, C0 - ?, и ещё что-то там есть - сами проверяйте эмпирически. Хм, а может и не двух старших бит, а трех... влом проверять)
Просто игра понимает, что в словаре хранятся целые слова, и сама уже выравнивает текст, ставит пробелы между словами, либо точки (если видит код 0003, то выводит слово building (ну или то, на что ссылается третий поинтер из Таблицы Словарных Поинтеров), а за ним ставит пробел и читает РОМ дальше, а если видит 8003, то тоже выводит слово building и ставит точку).
Кстати, что хорошо - игра сама переносит слова на следующую строку, умная скотина. :twisted:

4. Процедура поиска сжатого текста в РОМе.
Слова в искомой фразе должны быть в главном словаре, то есть, если будут всякие Townsman, то эти я не искал, но принцип тот же, просто возможны глюки.
Я искал фразу "The Lobotomy Club sits atop". Кстати, чем длиннее фраза, тем меньше вариантов придётся отсеивать после Relative Search, но тем выше шанс ошибиться и ввести немного не ту последовательность, и вообще ничего не найти.
Значит у нас 5 слов, то есть 10 байт.
Смотрим по Главному Словарю - "The" лежит по адресу D6FB3. Если не уверены - лучше изменить букву и посмотреть в игре.
Считаем на калькуляторе D6FB3 - D6EBA = 00F9. По Таблице Словарных Поинтеров находим его по адресу DC11A.
Теперь надо определить какой это по счёту поинтер. Опять считаем на калькуляторе (DC11A - DC0C2) / 2 = 2C.
Значит "The" - это слово №2C, которое кодируется в РОМе как 002D (т.е. плюс единица т.к. считаем не с нуля).
Почему именно 00 2D - так как после слова идёт пробел, то будет 00, если бы была точка после слова, то было бы 802D.
Далее точно так же находим коды "Lobotomy", "Club", "sits", "atop".
Получаем строку в 10 байт: 00 2D 00 7B 00 7C 00 7D 00 7E
Тут дело такое... не факт, что мы всё учли, и в РОМе она будет лежать именно в таком виде. Вернее, насчёт 2D, 7B, 7C и других номеров слов мы уверены, а вот со старшим байтом можно ошибиться - кто знает, какую подлянку подстроят разработчики в очередной раз.
Поэтому можно сделать так - попробовать поискать простым поиском 002D007B007C007D007E, если не нашлось - относительным!
В данном случае всё нашлось и так - по адресу E0BFC.
Вариант с Relative Search - ищем:
2Dh
*
7Bh
*
7Ch
*
7Dh
*
7Eh
...и тоже что-то находим, может быть найдётся сразу несколько похожих строк, но среди них будет одна НАША! :D

Если в фразе есть слова из другого словаря, то лучше найти фразу рядом (или искать несколько слов из этого же предложения, которые есть в Главном Словаре), и посмотреть в Hexpose - как раз станет понятно, как кодируется другой словарь.

5. Ещё один прикол - строки в РОМе не отделяются спец.символом, точно так же как слова в Главном Словаре. То есть где-то есть таблица поинтеров на текст, по которой игра выуживает из массива закодированного текста нужную стоку и раскодирует её.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Чт Июн 24, 2004 8:01 pm    Заголовок сообщения: Ответить с цитатой

Ффуу..... всё на сегодня.

Насчёт взлома шрифта - постараюсь (как сессия закончится), но ничего не обещаю.

А тему я создал именно в Экстремальном ромхакинге, потому что на данный момент игру невозможно перевести стандартными методами - вот когда кто-то напишет прогу, составляющую по зажатому тексту из РОМа оригинальные строки для игры (то есть напишет распаковщик) и наоборот (запаковщик), а также когда шрифт будет перерисован, то перевод этой игры может стать вполне доступным.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Пт Июн 25, 2004 10:21 am    Заголовок сообщения: Ответить с цитатой

Вот за что я АнС'а люблю и уважаю! Very Happy Good job!... Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Orlangoor



Зарегистрирован: 09.06.2004
Сообщения: 217
Откуда: Ярославль

СообщениеДобавлено: Пт Июн 25, 2004 9:45 pm    Заголовок сообщения: Ответить с цитатой

А я теперь тебя люблю и уважаю в 100 раз больше чем Фиш Smile Smile Smile Smile !!!!!!!!! Респектище тебе огроменный!
Вот только из за такой голимой системы словарей я даже незнаю как к это игрушке подступится Sad .

Насчет проверки чексуммы - я это заметил - когда просто пытался подправить парочку слов из словарей. Однако решил это оставить на лучшие времена (то есть когда перевод будет более возможен).

К сожалению с такой системой, и таким громадным словарем, боюсь и в правду придется ждать когда кто нибудь более продвинутый в программировании напишет хоть какие нибудь вспомогательные средства.

Еще раз ОГРОМНОЕ спасибо АнСу!!!
_________________
Человек не должен зависеть от длины своего меча. Миямото Мусаси "Книга Пяти Колец"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RomaRS



Зарегистрирован: 02.07.2004
Сообщения: 225

СообщениеДобавлено: Вт Июл 06, 2004 8:44 pm    Заголовок сообщения: Ответить с цитатой

Видно - работает настоящий профессионал в своём деле. Уважаю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Вт Июл 06, 2004 9:22 pm    Заголовок сообщения: Ответить с цитатой

Вообще-то над игрой никто не работает - я же написал, что не буду её переводить, я её даже пройти не могу - специально себя настраивал - всё равно не могу. Sad
Я специально выложил все мои наработки (то, что успел за тот день, когда настроил себя, может ещё как-нить засяду - выложу патч с переведённой графикой), чтобы ЛЮБОЙ человек мог их взять (в первую очередь патч DeCheck) и попытаться перевести, если у него действительно будет такое сильное желание. Если будет желание - будут и силы для дальнейшего взлома, быть может и найдётся тот, у кого этих сил хватит для написания распаковщика, ну и так далее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Crusader
Гость





СообщениеДобавлено: Пн Окт 04, 2004 3:21 pm    Заголовок сообщения: Ответить с цитатой

ICQ: 1120060 напишу распаковщик.
Вернуться к началу
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Пн Окт 04, 2004 6:15 pm    Заголовок сообщения: Ответить с цитатой

Crusader писал(а):
ICQ: 1120060 напишу распаковщик.


Хы, outsourcing значит. Very Happy А запаковщик кто писать будет?? Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
IfritZ



Зарегистрирован: 13.11.2003
Сообщения: 40

СообщениеДобавлено: Пн Окт 04, 2004 7:26 pm    Заголовок сообщения: Ответить с цитатой

Да, АнС, ты настоящий мастер!
Но что-то мне подсказывает, что эту игру на русском никогда не увидеть... Confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Delex



Зарегистрирован: 05.01.2004
Сообщения: 284
Откуда: Челябинск

СообщениеДобавлено: Пн Окт 04, 2004 9:00 pm    Заголовок сообщения: Ответить с цитатой

Crusader писал(а):
ICQ: 1120060 напишу распаковщик.

бесплатно? Rolling Eyes
_________________
...пусть даже через сто веков в страну не дураков, а гениев...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Crusader
Гость





СообщениеДобавлено: Вт Окт 05, 2004 6:55 am    Заголовок сообщения: Ответить с цитатой

Напишу, бесплатно, т.к. в свое время играл в эту игру на SEGA и прошел. Прошел потому, что она мне понравилась.
А распоковщик, может быть общий не только для этой игры, а для всех.
Просто мне должен кто-то объяснить алгоритм запаковки(для чего я собственно и предоставил номер аськи). Просто я никогда не занимался переводом... Со слов АнС'а я примерно въехал, что нужно делать. Но без моральной поддержки сами понимаете... :)

Само собой это будет и распаковщик и запаковщик.

Вам останеться, только указать коды букв(распаковщику), перерисовать тайлы, и исправить чексумму.
Вернуться к началу
Amorpho[US]
БесФорменный


Зарегистрирован: 16.12.2003
Сообщения: 161
Откуда: Воронеж

СообщениеДобавлено: Вт Окт 05, 2004 11:05 am    Заголовок сообщения: Ответить с цитатой

Crusader писал(а):
Просто мне должен кто-то объяснить алгоритм запаковки...
ГЫ! Зная алгоритм, любой из нас напишет и то и другое.
_________________
Я вернулся!!! ...ну почти. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Вт Окт 05, 2004 3:03 pm    Заголовок сообщения: Ответить с цитатой

Amorpho[US] писал(а):
Crusader писал(а):
Просто мне должен кто-то объяснить алгоритм запаковки...
ГЫ! Зная алгоритм, любой из нас напишет и то и другое.


Да, программировать тут все умеют. Дело не в этом. Запаковщик и распаковщик написать можно, но сам алгорится таков, что русский скрипт он будет сжимать в 6 раз хуже, чем английский. Ну и ладно бы только это, расширить РОМ и всё, но дело в том, что там есть чисто физическое ограничение - в словаре не может быть больше (2^14) = 16384 слов. Подумайте, сможет ли такой большой срипт в игре в русском переводе состоять только из 16 тысяч слов? Вот только в этом моём сообщении уже примерно 80 слов, то есть вся игра (весь текст) должна будет вместиться в 200 вот таких фраз, как эта. Как вам такая ситуация? Confused Аморфус, скажи, реально ли изменить код распаковщика на более простой? Причём наверняка придётся изменять код не в одном месте...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Crusader
Гость





СообщениеДобавлено: Вт Окт 05, 2004 5:38 pm    Заголовок сообщения: Ответить с цитатой

Может я тебя плохо понял, но мне не кажеться, что это можно исправить(чем я сейчас и занимаюсь).
Пример:
слово "little" - размер 6 байт. Находиться по адресу 0x00002 следующее слово "huge", находиться по адресу 0x00008, т.е. сразу за ним.
Поинтер для "little" например 02h значит поинтер для "huge" 08h.

После того как мы переделали слово "little" в слово "маленький" мы записываем слово "huge" по адресу 0x0000B т.е. сразу за словом "маленький". И соответственно смещаем адреса остальных слов. Поинтер для "huge" мы соответственно тоже переделывам...

С выше описаным я проблем не вижу... Можно будет также добавлять свои слова. И давать им адреса.
Вернуться к началу
Crusader
Гость





СообщениеДобавлено: Вт Окт 05, 2004 6:06 pm    Заголовок сообщения: Ответить с цитатой

На данный момент готов только распаковщик... но работает пока плохо, т.к. не знаю коды всех знаков препинания. Главное текст расспаковывает...
http://bpks.ru/pakunp.rar
В командной строке давайте ему файл RoP.bin (pakunp.exe RoP.bin)
Он создаст файл RoP.bin.txt. в нем все, что ему удалось распаковать...
Вернуться к началу
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Вт Окт 05, 2004 10:35 pm    Заголовок сообщения: Ответить с цитатой

Crusader писал(а):
С выше описаным я проблем не вижу... Можно будет также добавлять свои слова. И давать им адреса.


Нет проблемы с распаковкой. Но ты подумай - в русском варианте это слово little превратится в 7 слов: маленький, маленькая, маленькое, маленьких, маленьким, маленькими, маленькие. Ну и т.д.
Особенность данного алгоритма в том, что он отличается от словарного MTE - он хранит целые слова, а не слоги, и сам расставляет пробелы и точки между этими словами. Поэтому, так как в русском языке примерно в 6-7 раз больше слов (так как однокоренные слова, отличающиеся всего на одну букву, уже считаются отдельным словом), то и переведённый скрипт сожмётся, в 6-7 раз хуже.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Crusader
Гость





СообщениеДобавлено: Ср Окт 06, 2004 7:17 am    Заголовок сообщения: Ответить с цитатой

Я уверен, что в игре должен быть обработчик (без него не обойтись), он переносит слова, ставит пробелы, запятые, точки и т.д. А это означает, что проблему, со знаками препинания, можно решить... Добавив в обработчик еще одно событие и на это событие никак не реагировать...
Например в обработчике встречаеться 00h после фразы - он ставит пробел. А если например заменить, этот байт другим - несуществующим в сравнении обработчика, вряд ли он поставит какой-то знак препинания... А если и поставит, то нужно будет присвоить ему, вот такой символ "". Следовательно следующее слово уже не будет писаться отдельно, а соединиться с предыдущим.
А это можно использовать в корыстных целях :)

Хотя возможно я сейчас сморозил глупость, и разделение, будет всеравно присутствовать, так как байт 00h например номер тайла...
Вернуться к началу
Orlangoor



Зарегистрирован: 09.06.2004
Сообщения: 217
Откуда: Ярославль

СообщениеДобавлено: Ср Окт 06, 2004 8:11 am    Заголовок сообщения: Ответить с цитатой

Цитата:
Например в обработчике встречаеться 00h после фразы - он ставит пробел. А если например заменить, этот байт другим - несуществующим в сравнении обработчика, вряд ли он поставит какой-то знак препинания... А если и поставит, то нужно будет присвоить ему, вот такой символ "". Следовательно следующее слово уже не будет писаться отдельно, а соединиться с предыдущим.


А ведь действительно может так получится... Тогда может даже моя любимая игра будет переведена! Жду результатов исследования обработчика.
_________________
Человек не должен зависеть от длины своего меча. Миямото Мусаси "Книга Пяти Колец"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Amorpho[US]
БесФорменный


Зарегистрирован: 16.12.2003
Сообщения: 161
Откуда: Воронеж

СообщениеДобавлено: Ср Окт 06, 2004 11:53 am    Заголовок сообщения: Ответить с цитатой

АнС писал(а):
Аморфус, скажи, реально ли изменить код распаковщика на более простой? Причём наверняка придётся изменять код не в одном месте...

Ну а как же! Тем более других способов не видно... Sad
_________________
Я вернулся!!! ...ну почти. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2814

СообщениеДобавлено: Ср Окт 06, 2004 4:53 pm    Заголовок сообщения: Ответить с цитатой

Crusader писал(а):
Я уверен, что в игре должен быть обработчик (без него не обойтись), он переносит слова, ставит пробелы, запятые, точки и т.д. А это означает, что проблему, со знаками препинания, можно решить... Добавив в обработчик еще одно событие и на это событие никак не реагировать...
Например в обработчике встречаеться 00h после фразы - он ставит пробел. А если например заменить, этот байт другим - несуществующим в сравнении обработчика, вряд ли он поставит какой-то знак препинания... А если и поставит, то нужно будет присвоить ему, вот такой символ "". Следовательно следующее слово уже не будет писаться отдельно, а соединиться с предыдущим.
А это можно использовать в корыстных целях :)

Хотя возможно я сейчас сморозил глупость, и разделение, будет всеравно присутствовать, так как байт 00h например номер тайла...


Там другой метод расставления пробелов и точек, я же написал о нём ещё тогда, раньше.

Каждое слово кодируется 2 байтами, то есть 16 битами, но 2 старших бита - это код знака препинания после данного слова.

Код:
AABBBBBBBBBBBBBB
 ^       ^
 |      [номер слова в словаре]
[код]


00 - пробел
01 - точка
10 - вопрос
11 - запятая
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Crusader
Гость





СообщениеДобавлено: Пт Окт 08, 2004 1:44 pm    Заголовок сообщения: Ответить с цитатой

Распаковщик, полностью готов!!!
http://bpks.ru/pakunp.rar

Можете пока переводить, текст!

Максимум через 2-е недели будет готов и упаковщик.
Вернуться к началу
Orlangoor



Зарегистрирован: 09.06.2004
Сообщения: 217
Откуда: Ярославль

СообщениеДобавлено: Пт Окт 08, 2004 3:24 pm    Заголовок сообщения: Ответить с цитатой

А как ситуация со знаками препинания?
_________________
Человек не должен зависеть от длины своего меча. Миямото Мусаси "Книга Пяти Колец"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Разрабатываемые проекты Часовой пояс: GMT + 3
На страницу 1, 2, 3, 4, 5, 6, 7, 8, 9  След.
Страница 1 из 9

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group