Ultimate SH-MES Recompilator by WarMaker.

Все технические проблемы с SH решаем здесь.

Модераторы: Jessica™, Ancheez

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

WarMaker
Пришедший извне
Пришедший извне
Аватара пользователя
 
Профиль
Сообщения: 48
Зарегистрирован:
20 янв 2008, 20:31
Пол: Мужской
Блог: Перейти к блогу (0)
Reputation point: 28

Ultimate SH-MES Recompilator by WarMaker.

Новое сообщение WarMaker » 29 апр 2008, 16:55 |

Наконец-то свершилось!!!
Выкладываю в свет свою программу для перевода игр серии Сайлент Хилл.

И называется она Ultimate SH-MES Recompilator by WarMaker.

Данная прога была специально разработана для тех истинных фанатов серии игр Сайлент Хилл, которые занимаются настоящими фанпереводами их текстов и стремятся сделать самый лучший перевод для души!!!

Эта программа понимает формат текстовых файлов всех трёх игр серии Silent Hill, вышедших на PC:
- Silent Hill 2: Director's Cut (далее по тексту SH2)
- Silent Hill 3 (SH3)
- Silent Hill 4: The Room (SH4)

Сам игровой текст игр особым образом записан в файлы [*.mes] в SH2/SH3 и в файлы [message_*.bin] в SH4.
В SH2 файлы лежат в папке [\data\etc\message\]
В SH3 файлы запакованы в файл [msg.arc] в папке [\data\]
В SH4 файлы лежат в папке [\data\]
Если с SH2/SH4 всё понятно, то для работы с файлами SH3 пришлось ещё делать утилиты распаковки и запаковки текстовых файлов.

Работать напрямую с игровыми текстовыми файлами невозможно, т.к. сами файлы придерживаются определённого формата и кодировка символов абсолютно другая.
Собственно для максимального облегчения работы с текстом и была сроблена сия утилита.

Расписываю формат скриптов.
Для перевода всей служебной информации в текстовый вид и её обязательного сохранения в неизменном виде была придумана особая система тэгов, которая в свою очередь давала некоторое представление о том, что к чему относится. Буду называть файлы, получаемые после преобразования, скриптами.
Тэги могут быть как парные, так и непарные. Если тег имеет пару, то второй тег будет закрывающим (в нём есть символ '/'). Всё очень похоже на HTML программирование, но проще. Теги могут содержать в себе числовые данные, могут быть и без них. Если в теге присутствует двоеточие, то после него обязательно стоит число. Все числа, используемые в скриптах, имеют шестнадцатеричный вид.
При декодировании MES файлов скрипт содержит ОДНУ пару тегов {MES:0001}{/MES:0001}.
В первом записано количество кодируемых сообщений, во втором - своего рода CRC MES файла.
BIN файл представляет собой несколько объединённых MES файлов в один готовый, поэтому скрипт от BIN файла содержит ОДНУ пару тегов {BIN:0001}{/BIN} и то количество пар MES тегов, сколько используется в BIN файле.
Сообщения в общем виде заключены в пару тегов {STR}{/STR}. Между ними может быть текстовая и служебная информация. Есть некоторые разновидности:
- после открывающего тега {STR:EXT} идёт текст в двухбайтовой кодировке. Эта фишка используется в азиатских текстах (Япония, Корея, Китай). Данная прога не декодирует их, поэтому вся инфа здесь представлена числами.
- закрывающие теги могут быть и такими: {/STR:NEXT} и {/STR:END}. Первый из них означает, что это ещё не конец сообщения, и надо показать следующий за ним блок. Как правило, на экране это выглядит как несколько чередующихся сообщений, которые меняются, когда жмёшь на клавишу ДАЛЕЕ. {/STR:END} означает, что теперь уже точно конец сообщения.
Для разграничения сообщений используется тег {@:0001}. В нём указывается номер отграниченного им сообщения.
В однобайтовой кодировке частенько встречаются символы из двухбайтовой кодировки, причём текст из них может быть перемешан. Для разграничения этого безобразия весь двухбайтовый текст заключается в пару {JAP}{/JAP}. Такой двухбайтовый текст практически весь поддаётся дешифровке. Им, например, закодированы заголовки меню опций и видео в SH2.
Текст в игре довольно часто меняет свой цвет. Для этого есть теги: {WHITE}, {BLUE}, {RED}, {GREEN}, {YELLOW}, {GRAY}, {BROWN}.
Иногда игра (а в SH4 почаще) выдаёт запрос "Yes - No". Это тег {YES/NO}.
{AL:VERT} служит для выравнивания текста по центру по вертикали, и {AL:HORZ} по горизонтали.
{POSY1:00} и {POSY2:00} используются для смещения текста по вертикали.
{#} - это довольно интересная штука. Часто используется в SH2. Приведу пример:
Этот текст я вижу {#}а этот текст я не вижу{#}! Тег всегда должен быть парным, причём открывающий и завершающий одинаковы. Тект между ними в игре скрывается, вместо него рисуется прямоугольник того же цвета, что и текст.
В тексте часто используются переменные - {VAR:E0}. Именно ими закодированы коды к сейфу и на копирке в SH2. Именно их теряют корявые проги для переводов!!!
{LNX1:10}{LNX2:20} используются в паре в SH2. Ими рисуется горизонтальная двойная линия.
В SH4 используются в тексте иконки - {ICO:01}.
Для получения меню в SH2 используется непарный тег {OPT} (загадка с дощечками). После него идёт очередной пункт меню.
В SH4 используется парный тег {OPT}{/OPT}. Между ними записывается пункт меню. Опция по умолчанию отмечается тегом {DEF}.
Вот, вроде все основные теги, которые используются в получаемых при декомпиляции скриптах.

Так как исходные игровые текстовые файлы декомпилятся в скрипты, то теперь появляется некоторая свобода действий в кодинге. То есть, если всё же у кого-нибудь загорелись глаза, впринципе можно добавлять/убавлять некоторые теги.

К тегам, которыми можно свободно оперировать, относятся:
{JAP}{/JAP} - причём воспринимается латиница и остальные печатные значки клавы, НО кроме кириллицы (в японских шрифтах её нету).
{WHITE}{BLUE}{RED}{GREEN}{YELLOW}{GRAY}{BROWN} - разукрашивайте на здоровье, но желательно после раскрашенного текста добавлять тег {WHITE}.
{AL:VERT}{AL:HORZ} - по умолчанию текст форматируется по низу и по левому краю.
{POSY1:00}{POSY2:00}
{#}
{LNX1:10}{LNX2:20}
{ICO:01}
Некоторые теги правильно могут работать только в определённой части игры, а не во всех. Экперимент всё победит!

Теги, которые желательно не трогать:
{BIN:0001}{/BIN}
{MES:0001}{/MES:0001}
{STR}{/STR}
{STR:EXT}{/STR:NEXT}{/STR:END}
{@:0001}
{YES/NO}
{VAR:E0}
{OPT}{DEF}{/OPT}
При их удалении/добавлении/модификации компилятор будет матюкаться и/или игра будет повисать.

Вообще при добавлении/удалении тегов компилятор будет матюкаться насчёт CRC. Не страшно, если знаешь, что творишь.

Указываю как работать с прогой.

Впринципе особых трудностей тут нету.
Есть три папки:
- src - сюда надо копировать файлы для декомпиляции
- txt - здесь получаются файлы при декомпиляции
- dst - а здесь получаются новые игровые файлы при компиляции

Есть три кнопки:
- Деомпиль - декомпиль MES/BIN в TXT
- Компиль - компиль TXT в новый MES/BIN
- Закрыть/Отмена - закрывает прогу или отменяет операцию

Есть одна галка:
- "Конверт ASCII/ANSI" - специально требуется для переводов SH2. Там обычно текст кодируется в другой кодировке. Нажимать на неё нужно только при работе с русскими текстами SH2. В других случаях это не требуется (также и с иностранными текстами SH2).

Внизу место для логов при работе проги. Когда там чё-то мельтешит - прога надрываясь работат!

Прога работает в пакетном режиме, т.е. сколько будет в [src] файлов, столько она и обработает.

Если с SH2 и SH4 всё понятно:
- берёш и просто копируеш исходные файлы в [src], декомпилиш
- работаш с полученными скриптами в [txt]
- компилиш и забираш новые текстовые файлы из [dst]
То с SH3 так не прокатит! Надо сначала распаковать архив [msg.arc]. Для этого распаковываем архив [SH3_MSG.zip] в папку с игрой и заходим там же в папку [data]. Для распаковки пользуем прогу [sh3_unpk.exe], для запаковки пользуем [sh3_pack.exe]. Распакованные текстовые файлы будут лежать в [\data\msg\]. Новый запакованный архив будет в папке [\data\arc\]. До запаковки изменённые текстовые файлы записать поверх в ту же [\data\msg\].

Надеюсь мой труд не напрасен. Думаю эта прога намного облегчит работу с игровыми текстами Сайлент Хиллов.

C уважением ко всем присутствующим, тов. WarMaker.

Прогу брать в подписи. (т.е. тут)
Всё лежит тут! Пароль: WarMaker
Silent Hill Play Novel на русском языке - VBA_SH.zip - обновлено до версии 2.0 (под Вин7 теперь работает)
Ultimate SH-MES Recompilator by WarMaker - утилита для перевода ТРЁХ игр серии Сайлент Хилл - UltiMES.zip
SH2: Расширенная настройка ускорения звука - DXConfig.zip, Качественный русский шрифт + NoCD - sh2pc.RUS.NoCD.zip
SH3: Качественный русский шрифт - fontdata_x.zip
SH4: Нормальное разрешение экрана - sh4.VideoFix.zip, Качественный русский шрифт - fontdata_kr.zip

Silver Dragon
Пришедший извне
Пришедший извне
 
Профиль
Сообщения: 2
Зарегистрирован:
26 апр 2008, 21:41
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 0

Новое сообщение Silver Dragon » 30 апр 2008, 20:28 |

WarMaker! Родина тебя не забудет! Вот если бы тебе удалось написать прогу чтоб открывала все ресурсы Сайлента, то цены б тебе небыло а так... :grin: :grin: :grin: :grin: :grin: :grin:

sRj
Пришедший извне
Пришедший извне
Аватара пользователя
 
Профиль
Сообщения: 14
Зарегистрирован:
21 фев 2008, 11:10
Откуда: Кострома
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 1

Новое сообщение sRj » 05 май 2008, 19:50 |

Очень хорошая и полезная программа, огромное спасибо за представление управляющих кодов в виде таких тэгов, по пожеланиям: думаю, удобнее было бы, если б состояние чекбокса ASCII/ANSI где нибудь сохранялось; была бы возможность выбрать каталог, в который поместить выходные файлы, значение тоже чтоб в реестре, например, лежало, ну да и drag&drop, думаю, не помешал бы, а там уже как кинут прога бы определяла что делать, если кинули каталог, то все файлы из каталога, если файл то по расширению - если mes рас-, если txt за-пакова, ну и чекбоксик выставив который, если проге подсовывали один mes файл, она сразу открывала выходной txt в текстовом редакторе (который тоже где-нибудь указать можно было); ну или через командную строку, это я так, для идеала. Ещё раз спасибо.

WarMaker
Пришедший извне
Пришедший извне
Аватара пользователя
 
Профиль
Сообщения: 48
Зарегистрирован:
20 янв 2008, 20:31
Пол: Мужской
Блог: Перейти к блогу (0)
Reputation point: 28

Новое сообщение WarMaker » 07 май 2008, 18:50 |

За ответы спасибо.
Впринципе, все пожелания - из разряда улучшайзеров.
И особой функциональности не добавит.
Моя прога не призвана облегчать работу с различного рода манипуляциями над файлами. Моя прога призвана облегчать сам труд процесса перевода, и делать его максимально приятным.
Состояние чекбокса намеренно не сохраняю - т.к. большая часть текстов приходится на его выключенное состояние, а если брать только английские текста, то им вообще это не требо, и даже противопоказано, т.к. портятся европейские языки. Т.е. если надо, то галку ставиш.
Мне бы кто баги моей проги протестил.......
А так, будет желание что-нибудь доработаю.
Всё лежит тут! Пароль: WarMaker
Silent Hill Play Novel на русском языке - VBA_SH.zip - обновлено до версии 2.0 (под Вин7 теперь работает)
Ultimate SH-MES Recompilator by WarMaker - утилита для перевода ТРЁХ игр серии Сайлент Хилл - UltiMES.zip
SH2: Расширенная настройка ускорения звука - DXConfig.zip, Качественный русский шрифт + NoCD - sh2pc.RUS.NoCD.zip
SH3: Качественный русский шрифт - fontdata_x.zip
SH4: Нормальное разрешение экрана - sh4.VideoFix.zip, Качественный русский шрифт - fontdata_kr.zip

sRj
Пришедший извне
Пришедший извне
Аватара пользователя
 
Профиль
Сообщения: 14
Зарегистрирован:
21 фев 2008, 11:10
Откуда: Кострома
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 1

Новое сообщение sRj » 15 май 2008, 23:54 |

WarMaker, такой вот вопрос интересует - попробовал декомпильнуть и снова компильнуть оригинальные "месы" от сх2, сравнил полученный "мес" с оригиналом и он чуть попузатее вышел (конкретно, например, common_msg_e.mes на 50 байт), как я понял по структуре "месов" сперва идут offset'ы так называемых сообщений, первый word указывает на последний offset и дальше идут собственно сообщения, и вот как раз между последним offset'ом и началом сообщения появляются лишние байтики, и вот теперь вопрос, что там такое? CRC файла и какая то инфа для удобства работы проги?(если снова всё провернуть прибавки не получится, т.е. инфа уже записана); на работоспособность в игре пузатость никак не влияет.

WarMaker
Пришедший извне
Пришедший извне
Аватара пользователя
 
Профиль
Сообщения: 48
Зарегистрирован:
20 янв 2008, 20:31
Пол: Мужской
Блог: Перейти к блогу (0)
Reputation point: 28

Новое сообщение WarMaker » 18 май 2008, 07:25 |

Ну, раз не влияет, значит так надо... |8)
Всё лежит тут! Пароль: WarMaker
Silent Hill Play Novel на русском языке - VBA_SH.zip - обновлено до версии 2.0 (под Вин7 теперь работает)
Ultimate SH-MES Recompilator by WarMaker - утилита для перевода ТРЁХ игр серии Сайлент Хилл - UltiMES.zip
SH2: Расширенная настройка ускорения звука - DXConfig.zip, Качественный русский шрифт + NoCD - sh2pc.RUS.NoCD.zip
SH3: Качественный русский шрифт - fontdata_x.zip
SH4: Нормальное разрешение экрана - sh4.VideoFix.zip, Качественный русский шрифт - fontdata_kr.zip

Johnny_Doe
Пришедший извне
Пришедший извне
 
Профиль
Сообщения: 15
Зарегистрирован:
02 мар 2009, 02:16
Откуда: Не поверите...O_O
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 0

Новое сообщение Johnny_Doe » 10 июн 2009, 00:31 |

Скажи, а для пятого сайлента что-то будешь делать? Хотелось бы и его тоже перевести. :susel: Открыл текстовые файлы, а там чё-то хитрое с кодировкой - короче голову сломать можно :| . Памагите.... :7
Dying is the least of fears

Knives Out
Заглянувший за Грань
Заглянувший за Грань
Аватара пользователя
 
Профиль
Сообщения: 1603
Зарегистрирован:
15 мар 2006, 21:54
Откуда: Из Холодильника
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 270

Новое сообщение Knives Out » 10 июн 2009, 10:39 |

Johnny_Doe, у пятого сайлента другой движок же
Изображение
We lose our hair, our teeth! Our bloom, our ideals. (c)

Johnny_Doe
Пришедший извне
Пришедший извне
 
Профиль
Сообщения: 15
Зарегистрирован:
02 мар 2009, 02:16
Откуда: Не поверите...O_O
Пол: Не определен
Блог: Перейти к блогу (0)
Reputation point: 0

Новое сообщение Johnny_Doe » 01 июл 2009, 18:47 |

Понимаю, просто думал, что если умудрился разобраться с тремя частями, то может быть что-нибудь и с пятой сделать сможешь, я уже видел несколько самодельных русификаторов, но качество перевода не впечатляет, а когда знаешь, что можешь перевести качественнее, но нечем, это раздражает. Тем не менее, ещё раз спасибо за сие чудо, у меня просто слов нету. По мере возможностей постараюсь выложить свои версии переводов, но говорю сразу, что будет это не скоро, ибо на мне сейчас уже висит один проект, завалить который совсем не хочется.
Dying is the least of fears


Вернуться в О технических проблемах с Silent Hill

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron