lupus
Поинтеры:
0x03B0 - первый поинтер 4 байта, указывают на адрес 0x3290, сперва идут 3 служебных байта, сама строка начинается с 0x3293
0x03B4 - второй поинтер 4 байта, указывают на адрес 0x32A9, тоже 3 служебных байта, а строка начинается с 0x32AC
0x3280 - последний поинтер 4 байта, указывают на адрес 0x016447
КОнец блока поинтеров, последние 4 байта - 0x328c непосредственно перед началом текста, который находится по адресу 0x3290
Иногда между поинтерами встречается последовательность в 4 байта 0x00730000 - её нужно игнорировать, это какие-то служебные данные, которые должны остаться без изменения на своих местах.
Кроме того, встречаются ситуации, когда несколько поинтеров указывают на одну и ту же строку, это надо как-то проследить и пометить на стадии выемки текста, чтобы потом была возможность вставить всё на свои места обратно. В идеале такую строку вынимать один раз, с пометкой всех поинтеров на неё иначе, подозреваю, в итоге при вставке можем получить глюки.
Теперь по самому тексту:
Кодировка win-1251.
Разрыв строки - 0x01
Конец строки - 0x00
НО!
В скрипте есть управляющие байты, которые тоже содержат 0x00
В начале строки, предположительно выравнивание текста:
0300
0301
0302
В середине строки:
060002 - ожидание нажатия кнопки
0600 - конец строки, в которой встречался код 060002, после 0600 всегда стоит 00, указывающий на конец данной строки
Коды указывающие на то, что в этом месте будет выводится текст переменной:
040105000400
040105000400
Пример: "Would you take %item%?" выглядит как "Would you take 040105000400?"
Вообщем реквестую помощь в разборе лангпака.
Таблица и сам файл во вложении. В идеале можно или запилить проект к крупычу, если он пережуёт все эти сложности, или совместными усилиями описать формат, чтобы можно было накодить редактор/конвертер в текст и обратно.
Ссылка:
https://dl.dropboxusercontent.co...75554/DS/REDS.7z
1. lupus - 26 Февраля, 2016 - 15:01:56 - перейти к сообщению
2. lupus - 26 Февраля, 2016 - 15:02:18 - перейти к сообщению
lupus
Глядел кто-нибудь?
Глядел кто-нибудь?
3. alex_231 - 26 Февраля, 2016 - 15:02:55 - перейти к сообщению
alex_231
Чего-то я не понял, а в чем собственно проблема? Пускай Круптар вытаскивает эти коды вместе с текстом, а потом обратно вставляет, ты их просто при переводе не трогай и всё.
Чего-то я не понял, а в чем собственно проблема? Пускай Круптар вытаскивает эти коды вместе с текстом, а потом обратно вставляет, ты их просто при переводе не трогай и всё.
4. lupus - 26 Февраля, 2016 - 15:03:20 - перейти к сообщению
lupus
Вся беда в том, что в этих кодах есть байт 0x00, который в других местах означает конец строки :/
Вся беда в том, что в этих кодах есть байт 0x00, который в других местах означает конец строки :/
5. alex_231 - 26 Февраля, 2016 - 15:03:49 - перейти к сообщению
alex_231
А если его впаять с каким(и)-нибудь кодом (кодами) в таблицу в виде двухбайтовых значений, не?
Типа h0300=[0300] и т.п.
А если его впаять с каким(и)-нибудь кодом (кодами) в таблицу в виде двухбайтовых значений, не?
Типа h0300=[0300] и т.п.
6. Anton299 - 26 Февраля, 2016 - 15:04:39 - перейти к сообщению
Anton299
lupus, тут без спец-плагина никак, ты ж знаешь...
lupus, тут без спец-плагина никак, ты ж знаешь...
7. Mefistotel - 26 Февраля, 2016 - 15:05:04 - перейти к сообщению
Mefistotel
Или если Алекс не адаптирует свою прогу под эту игру)
Или если Алекс не адаптирует свою прогу под эту игру)
8. lupus - 26 Февраля, 2016 - 15:05:37 - перейти к сообщению
lupus
В хексе забил вместо данных команд другие последовательности, чтобы не воспринимало, как стоп-байт, думал потом обратно вернуть старые, но напоролся на Ещё один подводный камень - встречаются повторения поинтеров, т.е. несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
В хексе забил вместо данных команд другие последовательности, чтобы не воспринимало, как стоп-байт, думал потом обратно вернуть старые, но напоролся на Ещё один подводный камень - встречаются повторения поинтеров, т.е. несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
9. Mefistotel - 26 Февраля, 2016 - 15:05:54 - перейти к сообщению
Mefistotel
Может, dnd1 и здесь с плагином поможет? Без него, намучаешься только.
Может, dnd1 и здесь с плагином поможет? Без него, намучаешься только.
10. lupus - 26 Февраля, 2016 - 15:06:23 - перейти к сообщению
lupus
Модет, но я не совсем уверен, что такой плагин возможен %)
Нужно учесть все системные последовательности, то, что по не колько поинтеров ссылаются на одну и ту же строку, а так же в блоке поинтеров встречаются последовательности 0x00730000, которые нужно игнорировать.
Но я был бы рад любой помощи. Более детально изучил лангпак, надо бы поправить первый пост, как с ноута вылезу в инет.
Модет, но я не совсем уверен, что такой плагин возможен %)
Нужно учесть все системные последовательности, то, что по не колько поинтеров ссылаются на одну и ту же строку, а так же в блоке поинтеров встречаются последовательности 0x00730000, которые нужно игнорировать.
Но я был бы рад любой помощи. Более детально изучил лангпак, надо бы поправить первый пост, как с ноута вылезу в инет.
11. Anton299 - 26 Февраля, 2016 - 15:06:46 - перейти к сообщению
Anton299
Если не ошибаюсь, надо в круптаре поставить PtSeekSame=TRUE.
Цитата:
несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
Если не ошибаюсь, надо в круптаре поставить PtSeekSame=TRUE.
12. lupus - 26 Февраля, 2016 - 15:07:07 - перейти к сообщению
lupus
Хм, не знал...
Спасибо, попробую.
Цитата:
несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
Если не ошибаюсь, надо в круптаре поставить PtSeekSame=TRUE.
несколько поинтеров указывают на одну и ту же строку.
Круптар справится или всё же проще софтину написать?
Если не ошибаюсь, надо в круптаре поставить PtSeekSame=TRUE.
Хм, не знал...
Спасибо, попробую.
13. lupus - 26 Февраля, 2016 - 15:07:28 - перейти к сообщению
lupus
Собрал рабочий проект, вынимается и вставляется назад, правда пришлось немного схитрить и кое-что в хексе поправить перед этим. Теперь проблема с тем, что некоторые поинтеры указывают на одно и то же место, метод предложенный Антоном не сработал
Есть ли ещё варианты?
Собрал рабочий проект, вынимается и вставляется назад, правда пришлось немного схитрить и кое-что в хексе поправить перед этим. Теперь проблема с тем, что некоторые поинтеры указывают на одно и то же место, метод предложенный Антоном не сработал
Есть ли ещё варианты?
14. Anton299 - 26 Февраля, 2016 - 15:07:43 - перейти к сообщению
Anton299
реведи это "одно и то же место" одинаково.
В круптаре это повторяющаяся строка, что ли?
реведи это "одно и то же место" одинаково.
В круптаре это повторяющаяся строка, что ли?
15. lupus - 26 Февраля, 2016 - 15:08:02 - перейти к сообщению
lupus
Да, несколько раз выводится одно и то же. Если экспорт текста сделать, то он в 2 раза больше чем оригинал получается :/
И, да, чего-то не хватает в моём проекте, т.к. даже после простой пересборки файла, без изменений лангпаки до и после сильно отличаются ((
Да, несколько раз выводится одно и то же. Если экспорт текста сделать, то он в 2 раза больше чем оригинал получается :/
И, да, чего-то не хватает в моём проекте, т.к. даже после простой пересборки файла, без изменений лангпаки до и после сильно отличаются ((
16. Mefistotel - 26 Февраля, 2016 - 15:08:31 - перейти к сообщению
Mefistotel
Выложи нынешний проект и файлы к нему. Seek Same не может не сработать. Кстати говоря, я им обычно не пользуюсь, чтобы разнообразить текст, то есть одно и тоже предложение переводится по разному. Но не во всех играх так можно делать.
Выложи нынешний проект и файлы к нему. Seek Same не может не сработать. Кстати говоря, я им обычно не пользуюсь, чтобы разнообразить текст, то есть одно и тоже предложение переводится по разному. Но не во всех играх так можно делать.
17. lupus - 26 Февраля, 2016 - 15:08:47 - перейти к сообщению
lupus
Пока бьюсь ещё над вычислением управляющих байт. Поскольку некоторые из них содержат 0x00, который круптар считает концом строки, текст вынимается не полностью. Как с этим разберусь - выложу проект, чтобы глянули.
Пока бьюсь ещё над вычислением управляющих байт. Поскольку некоторые из них содержат 0x00, который круптар считает концом строки, текст вынимается не полностью. Как с этим разберусь - выложу проект, чтобы глянули.
18. Mefistotel - 26 Февраля, 2016 - 15:09:03 - перейти к сообщению
Mefistotel
Ты отдельно этот список управляющих кодов сделай. Дальше будем смотреть.
Ты отдельно этот список управляющих кодов сделай. Дальше будем смотреть.
19. Guyver - 26 Февраля, 2016 - 15:09:22 - перейти к сообщению
Guyver
Когда у меня текст вынимается не полностью из-за 00 к примеру, я делаю так.
Текст в игре.
Фраза 1-1
Фраза 1-2
Фраза 1-3 00
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00
Текст вынется до фразы 2-2 и закончится, после неё не будет информации
И я делаю так:
Надо поставить концом строки 10 символов после самого последнего предложения, тогда текст вынется так:
1 поинтер:
Фраза 1-1
Фраза 1-2
Фраза 1-3 00
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00 (10 символов после предложения, стопбайт 10значный)
2 поинтер:
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00 (10 символов после предложения, стопбайт 10значный)
А потом при вставке я просто стираю лишние предложения, и вставляю только то, что нужно... И диапазон вставки текста я делаю на 10 символов меньше, т.е. сами символы эти не трогаю и не затираю... Вот...
Когда у меня текст вынимается не полностью из-за 00 к примеру, я делаю так.
Текст в игре.
Фраза 1-1
Фраза 1-2
Фраза 1-3 00
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00
Текст вынется до фразы 2-2 и закончится, после неё не будет информации
И я делаю так:
Надо поставить концом строки 10 символов после самого последнего предложения, тогда текст вынется так:
1 поинтер:
Фраза 1-1
Фраза 1-2
Фраза 1-3 00
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00 (10 символов после предложения, стопбайт 10значный)
2 поинтер:
Фраза 2-1
Фраза 2-2 00730000
Фраза 2-3 00 (10 символов после предложения, стопбайт 10значный)
А потом при вставке я просто стираю лишние предложения, и вставляю только то, что нужно... И диапазон вставки текста я делаю на 10 символов меньше, т.е. сами символы эти не трогаю и не затираю... Вот...
20. lupus - 26 Февраля, 2016 - 15:10:06 - перейти к сообщению
lupus
Я немного иначе делаю, в хексе меняю данные коды так, чтобы убрать в них 0х00, но чтобы других таких совпадений не было, а потом в самом проекте забиваю их как положено при помощи автозомены. Например у меня управляющий байт 00х0300, я их все перебиваю на 00х0309, а в крупыче меняю последовательность /03/09 на /03/00. Прокатывает. Ищу остальные, т.к. не все эти коды двухбайтовые.
Пока основная задача - выковырять управляющие байты в конце строк, которые заканчиваются переменной.
Я немного иначе делаю, в хексе меняю данные коды так, чтобы убрать в них 0х00, но чтобы других таких совпадений не было, а потом в самом проекте забиваю их как положено при помощи автозомены. Например у меня управляющий байт 00х0300, я их все перебиваю на 00х0309, а в крупыче меняю последовательность /03/09 на /03/00. Прокатывает. Ищу остальные, т.к. не все эти коды двухбайтовые.
Пока основная задача - выковырять управляющие байты в конце строк, которые заканчиваются переменной.
21. lupus - 26 Февраля, 2016 - 15:10:24 - перейти к сообщению
lupus
Обновил первый пост, пока накопал это. Путём хитрых манипуляций, описанных выше получилось обойти одни глюки, но дальше вылезли другие
Пытаюсь выяснить закономерность.
Обновил первый пост, пока накопал это. Путём хитрых манипуляций, описанных выше получилось обойти одни глюки, но дальше вылезли другие
Пытаюсь выяснить закономерность.
22. lupus - 26 Февраля, 2016 - 15:10:44 - перейти к сообщению
lupus
Ребята, среди вас есть программисты, поэтому снова решил поднять тему.
Недавно решил попытать счастья и спросить совета на форуме гбатемп и мне подсказали, как вынуть текст и вставить обратно.
Если с выемкой проблем не возникает, то вот со вставкой я никак не разберусь
В целом, программисту всё должно быть понятно, если проанализировать таблицу и файл с командами для программы Cartographer, взять можно здесь:
https://dl.dropboxusercontent.co....grapher_reds.7z
Таблицу, желательно оставить внешней, можно потом софтом поделиться на том же romhacking.net
Ноги у эксперимента с картографером растут из этой темы:
http://gbatemp.net/threads/need-....evil-ds.369787/
Буду премного благодарен, за любую.
Ребята, среди вас есть программисты, поэтому снова решил поднять тему.
Недавно решил попытать счастья и спросить совета на форуме гбатемп и мне подсказали, как вынуть текст и вставить обратно.
Если с выемкой проблем не возникает, то вот со вставкой я никак не разберусь
В целом, программисту всё должно быть понятно, если проанализировать таблицу и файл с командами для программы Cartographer, взять можно здесь:
https://dl.dropboxusercontent.co....grapher_reds.7z
Таблицу, желательно оставить внешней, можно потом софтом поделиться на том же romhacking.net
Ноги у эксперимента с картографером растут из этой темы:
http://gbatemp.net/threads/need-....evil-ds.369787/
Буду премного благодарен, за любую.
23. Mefistotel - 26 Февраля, 2016 - 15:11:10 - перейти к сообщению
Mefistotel
У нас програмеров два, Марат и Алекс.
М. б. посмотрят.
У нас програмеров два, Марат и Алекс.
М. б. посмотрят.
24. lupus - 26 Февраля, 2016 - 15:11:28 - перейти к сообщению
lupus
Надеюсь, получится оказать посильную помощь ))
Надеюсь, получится оказать посильную помощь ))
25. lupus - 26 Февраля, 2016 - 15:11:48 - перейти к сообщению
lupus
С софтиной помог MetLob, за что ему огромная благодарность. Есть ещё нюансы, но они, думаю, будут устранены.
С софтиной помог MetLob, за что ему огромная благодарность. Есть ещё нюансы, но они, думаю, будут устранены.
26. Mefistotel - 26 Февраля, 2016 - 15:15:01 - перейти к сообщению
Перевод можно скачать по ссылке:
Resident Evil: Deadly Silence - Русская версия
Resident Evil: Deadly Silence - Русская версия