Текущее время: 10 сен 2010, 14:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 03 ноя 2009, 14:06 
Не в сети
Любитель

Зарегистрирован: 27 сен 2009, 20:41
Сообщения: 10
Жаль только, что с выходом перевода Mangagamer, и, тем более, Essence+, это уже никому не пригодится... Теперь хорошо бы разобрать мангагеймеровский DSC FORMAT 1.00/BGI, используемый во всех их релизах (насколько я в курсе), сжатие (шифрование?) Essence+, и можно выпускать переведенную+расширенную SHUFFLE! и/или расцензуренную Essence+.
Лично я только начал изучение олли/ассемблера, так что у меня на подготовку патча уйдет весьма приличное время.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 03 ноя 2009, 21:13 
Не в сети
Фанат
Аватара пользователя

Зарегистрирован: 23 мар 2009, 18:45
Сообщения: 76
Откуда: Russia, Kemerovo
Награды: 2
Повелитель кода (2)
Const2k, не надо троллить. Пригодится ещё как, не только оригинальный Shuffle! был выпущен на этом движке.

Алсо, BGI имеет такое же отношение к манаткогеймеру как Microsoft Visual C++ к Winamp'у. MangaGamer просто купили себе этот движок и во всю им пользуются.

На самом деле Buriko General Interpreter давно разобран, и последние версии AnimED'а охотно "едят" его форматы (кроме скриптов). Для скриптов же написан отдельный инструмент, который пока является внутренней разработкой и не выдаётся абы кому. Ну ты понел. 8)

P.S. Разобрать Essence+ - дело 3, может 4-х дней. ^_^


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 03 ноя 2009, 22:15 
Не в сети
Любитель

Зарегистрирован: 27 сен 2009, 20:41
Сообщения: 10
dsp2003 писал(а):
Const2k, не надо троллить. Пригодится ещё как, не только оригинальный Shuffle! был выпущен на этом движке.
Троллить? Я? Даже в мыслях не было. Не надо за меня выдумывать. А "не пригодится" было сказано, т.к.переводить Navel'овский SHUFFLE! смысла нет. Объясню почему: во-первых, есть расцензоренный релиз Mangagamer, во-вторых, есть расширенный, но так же зацензоренный Essence+, из которых можно собрать одно, нечто лучшее.
В других играх Navel (Tick Tack, Really? Really!, Soul Link; за игру/игры от Lime не скажу - не интересовался) формат SHUFFLE! не используется, поэтому мне действительно интересно, какие игры на нем сделаны. Уточнишь?

dsp2003 писал(а):
На самом деле Buriko General Interpreter давно разобран, и последние версии AnimED'а охотно "едят" его форматы (кроме скриптов). Для скриптов же написан отдельный инструмент, который пока является внутренней разработкой и не выдаётся абы кому. Ну ты понел. 8)

P.S. Разобрать Essence+ - дело 3, может 4-х дней. ^_^
Вот как раз на скрипты я и намекал. Значит, поддержка всех версий SHUFFLE! появится в будущем в AnimED? Ну что ж, отлично! У Mangagamer Essence+ даже в планах нет, GamePatch от неё уже успели отказаться, так что всё оставили фанам :)

Были бы технические проблемы решены, а остальное появится. Переводчики есть на Baka-Tsuki (да и у меня свои связи в фансабе), редактор+корректор - ваш покорный слуга, плюс часть текста будет любезно предоставлена Mangagamer'ами ;)
Так что английская+русская Essence+ - не проблема, было бы желание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 03 ноя 2009, 22:45 
Не в сети
Фанат
Аватара пользователя

Зарегистрирован: 23 мар 2009, 18:45
Сообщения: 76
Откуда: Russia, Kemerovo
Награды: 2
Повелитель кода (2)
Итак, прежде чем предоставим с Ником всё необходимое, требуется уточнить пару вещей. А именно:

  • в каком порядке будет происходить работа? Сначала "доперевод" на английский и расцензуривание (имхо абсолютно бесполезная с эстетической точки зрения штука - лучше всего сделать её опциональной) Essence+, а затем на русский, или же как-то иначе?
  • следует ли предоставлять саму утилиту для разборки скриптов движка BGI или проще сразу дать готовые декомпилированные тексты?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 04 ноя 2009, 02:48 
Не в сети
Любитель

Зарегистрирован: 27 сен 2009, 20:41
Сообщения: 10
dsp2003 писал(а):
в каком порядке будет происходить работа? Сначала "доперевод" на английский и расцензуривание (имхо абсолютно бесполезная с эстетической точки зрения штука - лучше всего сделать её опциональной) Essence+, а затем на русский, или же как-то иначе?
Поскольку площадкой для перевода Essence+ будет (по ряду причин) Baka-Tsuki, предсказать прогресс английского и русского переводов достаточно сложно в силу открытости проекта. Особенно если учесть, что работа легко распараллеливается, а расцензуривание вообще не требует переведенного скрипта.
dsp2003 писал(а):
следует ли предоставлять саму утилиту для разборки скриптов движка BGI или проще сразу дать готовые декомпилированные тексты?
О переводе версии Mangagamer я говорил только потому, что лично для меня проще было бы вставить (англо-)русский перевод в (предположительно) легко русифицируемый BGI, чем в японский до мозга костей, хотя и более визуально приятный, Essence+. Но если вы действительно предоставите всё необходимое для перевода и последующей подготовки патча Essence+, то из BGI понадобятся только расцензуренные CG и английский текст (т.е. не утилиты, и не собственно скрипты), и работа с релизом Mangagamer на этом закончится. Иначе придется работать с BGI в ожидании того, как кто-нибудь (включая меня) разберёт Essence+, что может занять достаточно долгое время. Соответственно, в этом случае потребуется утилита для работы с BGI, т.к. одним из условий хостинга перевода визуальных новелл на Baka-Tsuki является подтверждение авторами проекта того, что они в состоянии достать текст из игры и вставить в файлы игры перевод.

Говоря пока только за себя, могу гарантировать хостинг скриптов Essence+ (но HE Mangagamer) на Baka-Tsuki до тех пор, пока Essence+ не будет лицензирована в США и/или в Европе. Также готов лично вкладываться в проект в качестве англо-русского переводчика, редактора и корректора. Связи в фансабе могут дать проекту переводчиков (яп-рус и яп-англ) и английского редактора. Впрочем, учитывая специфику Baka-Tsuki и то, что за перевод Essence+ ещё никто не взялся, можно ожидать подключения дополнительных участников по мере развития проекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 04 ноя 2009, 20:56 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
Сделал запаковщик. Вроде работает стабильно. исходники и экзешник в аттаче
Длина строки там указывается перед текстом на -$26 назад в байтах+41, а перед именами -$27 и +42 к длине.

Изображение

вот только как с русским быть не знаю
PUSH 204 не умещается, если добавить нопы - все зависает


Вложения:
txt2bin_v10_src.zip [3.46 Кб]
Скачиваний: 61
txt2bin_v10_bin.zip [48.52 Кб]
Скачиваний: 61
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 04 ноя 2009, 22:24 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 10 янв 2009, 09:50
Сообщения: 808
Откуда: Nsk
Цитата:
вот только как с русским быть не знаю
PUSH 204 не умещается, если добавить нопы - все зависает


204 - 0xCC в HEX, вполне умещается.
Правда если мне не изменяет память, там ещё была какая-то проблема с пропажей букв.

Код:
00407417  |. 6A 01          PUSH 1                                   ; |CharSet = DEFAULT_CHARSET

меняем на
Код:
00407417  |. 6A СС          PUSH СС                                   ; |CharSet = DEFAULT_CHARSET


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 04 ноя 2009, 23:12 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
понял, тогда получается PUSH -34

только как-то это не очень помогает. все равно что с русской локали запускать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 04 ноя 2009, 23:58 
Не в сети
Любитель

Зарегистрирован: 27 сен 2009, 20:41
Сообщения: 10
addddd писал(а):
только как-то это не очень помогает. все равно что с русской локали запускать
GamePatch несколько лет назад выпустили свой патч, переведя первые два дня. Уже не помню, как это выглядело, но читать можно было. Патч есть на их форуме, вот ссылка на MediaFire.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 05 ноя 2009, 20:03 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
Английский текст отлично отображается во всех кодировках. По-видимому они с этим там ничего и не делали.

А есть ли возможность заставить игру воспринимать все шрифты, а не только японские? По идее где-то должен быть какой-то фильтр. попробую попереставлять флаги у шрифтов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 05 ноя 2009, 22:14 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
установка неюникодных шрифтов не помогла - отображаются так же с пробелами. наверное на определенном диапазоне символов ширина устанавливается не зависимо от указанной в шрифте


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 29 ноя 2009, 01:45 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
сегодня нашел процедуру, которая определяет размер символа. Вот она:
Код:
0041A000  /$ 8A4424 04      MOV AL,BYTE PTR SS:[ESP+4]
0041A004  |. 3C 81          CMP AL,81
0041A006  |. 7C 04          JL SHORT Shuffle2.0041A00C
0041A008  |. 3C 9F          CMP AL,9F
0041A00A  |. 7E 08          JLE SHORT Shuffle2.0041A014
0041A00C  |> 3C E0          CMP AL,0E0
0041A00E  |. 7C 1A          JL SHORT Shuffle2.0041A02A
0041A010  |. 3C FC          CMP AL,0FC
0041A012  |. 7F 16          JG SHORT Shuffle2.0041A02A
0041A014  |> 3C 40          CMP AL,40
0041A016  |. 7C 04          JL SHORT Shuffle2.0041A01C
0041A018  |. 3C 7E          CMP AL,7E
0041A01A  |. 7E 08          JLE SHORT Shuffle2.0041A024
0041A01C  |> 3C 80          CMP AL,80
0041A01E  |. 7C 0A          JL SHORT Shuffle2.0041A02A
0041A020  |. 3C FC          CMP AL,0FC
0041A022  |. 7F 06          JG SHORT Shuffle2.0041A02A
0041A024  |> B8 01000000    MOV EAX,1
0041A029  |. C3             RETN
0041A02A  |> 33C0           XOR EAX,EAX
0041A02C  \. C3             RETN

насколько я понял тут проверяется: если ((AL>=80 и AL<=9F) или (AL>=E0 и AL<=FC)) то EAX=1 иначе EAX=0

для нашей кодировки в любом случае 0, заменяем на безусловный
Код:
0041A006     EB 22          JMP SHORT Shuffle2.0041A02A

есть еще одна точно такая же процедура сразу за этой. для чего не знаю.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 29 ноя 2009, 22:25 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
появилась идея с модными кавычками 「」. Раз уж процедура создания шрифта вызывается для каждого символа, то можно для некоторых вызывать ее с японской кодировкой, а для остальных с нашей. У кавычек адреса A2 и A3. В нашей таблице это какие то ненужные символы: ўЈ

Я написал процедуру сравнения на месте ненужной, про которую я говорил:
Код:
0041A030     8A8424 DC00000>MOV AL,BYTE PTR SS:[ESP+DC]  //это символ из стека
0041A037     3C A2          CMP AL,0A2
0041A039     74 1C          JE SHORT Shuffle2.0041A057
0041A03B     3C A3          CMP AL,0A3
0041A03D     74 18          JE SHORT Shuffle2.0041A057
0041A03F     C3             RETN
0041A040     90             NOP                 // дальше не используется
0041A041     90             NOP
0041A042     90             NOP
0041A043     133C40         ADC EDI,DWORD PTR DS:[EAX+EAX*2]
0041A046   . 7C 04          JL SHORT Shuffle2.0041A04C
0041A048   . 3C 7E          CMP AL,7E
0041A04A   . 7E 08          JLE SHORT Shuffle2.0041A054
0041A04C   > 3C 80          CMP AL,80
0041A04E   . 7C 07          JL SHORT Shuffle2.0041A057
0041A050   . 3C FC          CMP AL,0FC
0041A052   . 7F 03          JG SHORT Shuffle2.0041A057
0041A054   > 33C0           XOR EAX,EAX
0041A056   . C3             RETN
0041A057   > B8 80000000    MOV EAX,80      //     SHIFTJIS_CHARSET        128 (x80)             932
0041A05C   . C3             RETN

создание шрифта подправил так:
Код:
004073FB  |> 8B9424 CC00000>MOV EDX,DWORD PTR SS:[ESP+CC]  // шрифт
00407402  |. 8B4424 30      MOV EAX,DWORD PTR SS:[ESP+30]   
00407406  |. 8B4C24 2C      MOV ECX,DWORD PTR SS:[ESP+2C]  //тут вроде всегда 0
0040740A  |. 52             PUSH EDX
0040740B  |. 8B5424 24      MOV EDX,DWORD PTR SS:[ESP+24]
0040740F  |. 51             PUSH ECX
00407410  |. 51             PUSH ECX
00407411  |. 51             PUSH ECX
00407412  |. 51             PUSH ECX
00407413  |. E8 182C0100    CALL Shuffle2.0041A030          //вызов нашей процедуры
00407418  |. 50             PUSH EAX                                 ; |CharSet 
00407419  |. 51             PUSH ECX                                 ; |StrikeOut
0040741A  |. 8B8424 F400000>MOV EAX,DWORD PTR SS:[ESP+F4]            ; |
00407421  |. 51             PUSH ECX                                 ; |Underline
00407422  |. 52             PUSH EDX                                 ; |Italic
00407423  |. 50             PUSH EAX                                 ; |Weight
00407424  |. 6A 00          PUSH 0                                   ; |Orientation = 0
00407426  |. 6A 00          PUSH 0                                   ; |Escapement = 0
00407428  |. 57             PUSH EDI                                 ; |Width
00407429  |. 53             PUSH EBX                                 ; |Height
0040742A  |. FF15 48404700  CALL DWORD PTR DS:[<&GDI32.CreateFontA>] ; \CreateFontA


результат:
Изображение
правда чет шрифт для русских букв перестал менятся

а, про нашу кодировку ж забыл. перед retn нужно еще добавить mov eax,0cc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 30 ноя 2009, 19:17 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 10 янв 2009, 09:50
Сообщения: 808
Откуда: Nsk
Хорошая работа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Shuffle! - разбор
СообщениеДобавлено: 30 ноя 2009, 21:12 
Не в сети
Любитель

Зарегистрирован: 02 ноя 2009, 22:47
Сообщения: 12
спасибо


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB

Evangelion only Evangelion Not End! Всё Лучшее о Евангелион - Здесь! WinKiller Studio Zidane's Blog VNDb - Visual Novels Database