Вложений: 2
riku.kh3, нет, Shift-JIS шрифт очень большой. Он содержит символы английские, русские, греческие, японские катана и фиг поймёшь что там у них. И все национальные символы имеют свой уникальный код, как задумано в Shift-JIS. Некоторые коды совпадают с UTF-8, но это так же зависит от разработчика шрифта. Разработчик мог бы добавить поддержку UTF-8, как и однобайтный 1251 русский. Английский-то по-любому почти всегда идёт первым в однобайтной области. И разработчик шрифта может сам переставлять шрифты туда, куда ему это выгодно, например, если в игре не используется русский алфавит, то он может туда забить китайские символы, либо просто использовать эти коды в качестве управляющих символов.
Почему мы видим крякозяблики вместо нормального текста? Потому что в той кодировке, в которой мы сохраняем текст, вместо необходимых букв находятся сторонние символы, например элементарно досовские символы всяких кирпичиков и уголков, либо китайских или японских иероглифов. Либо вообще там нет ничего, пустое место или совсем нет матрицы шрифтов. Взять однобайтный win1251 на PSP... Win-1251 начинается с 0xC0 по 0xFF. Вот скрин, где коды символов можно увидеть слева и сверху, как в шахматах.
Ранее на том самом месте, где русский алфавит, были как раз досовские символы. А вот так мы видим пронумерованные символы в шрифте TTF. Нумерация символов так же идёт по стандарту. В данном случае виден русский алфавит в кодировке UTF-8 = 0x0401 (буква Ё) до 0451 (маленькая ё - её здесь нет). (картинка кликабельна, читаем там внимательно мой пост по установке) Листаем тот же шрифт к самому низу и видим там ещё один алфавит Windows-1251 = 0x00C0 (буква А) до 0x00FF (маленькая я). Это уже я сам копирнул алфавит в эту область. Поэтому теперь получается, что этот шрифт поддерживает писанину в UTF-8 и Windows-1251: То есть, можно в текстовом редакторе написать текст и сохранить его в UTF-8 и он будет отображать русскую писанину, как положено. Так же, можно сохранить текст через текстовой редактор в Windows-1251 и так же, этот текст будет прекрасно выводится, как положено. Но если посмотреть на текстовые файлы, одного содержания, но в разных кодировках через хекс-редактор, то мы увидим коды символов отличающиеся. В данном случае UTF-8 будет иметь 2-байтные символы на букву, например буква "А" = 0410, то в кодировке 1251 мы увидим код символа "А" = С0 одним байтом. И один и тот же шрифт будет прекрасно отображать обе кодировки. |
Ну так в итоге и получается, что если разработчик игры не стал заморачиваться и добавлять поддержку кучи кодировок (а из двухбайтных тут помимо shiftjis, есть еще и jis, и euc, и utf-16), а только стандартную область shiftjis - то тут и облом. :scratch_one-s_head:
Я имею в виду, тот факт что shiftjis не противоречит другим двухбайтовым кодировкам, не делает ее частью юникода или utf-16. Это отдельный принятый самостоятельный от юникода стандарт. Я даже не знаю как это и проверить вообще.. имеющееся тулза у меня только с shiftjis-текстом работает. |
Вложений: 3
Тэкс, снял дамп памяти оригинального японского диалога.
В дампе всё лишнее удалил, оставил только в 1-ой строке чисто диалог, во 2-ой строке указание на шрифт. Получился такой вот текстовик: Что получается, какие символы использует PSP при выводе японского алфавита?...
|
Цитата:
Но в данном случае ты сам можешь перекидывать символы куда угодно и создать свой кастомный шрифт. Ты сам можешь сделать поддержку всех тысячи кодировок в мире и скомпилировать свой JPN0.PGF. Чем больше ты сделаешь TTF - тем больше будет размер PGF. Если твой TTF будет весить 2 Мб, то и PGF так же потяжелеет. Если ты вырежешь из шрифта TTF неиспользуемые символы, все греческие, японские и китайские, то и PGF твой будет весить копейки. Это ты сам можешь проверить. Поэтому поддержка кодировок зависит теперь только от тебя, потому что ты можешь ложить свой шрифт в образ игры или вместо оригинала в эмуляторе. P.S. Кстати, в Real Life Engine PAK editor я заметил, что можно делать переназначение шрифтов, делать сдвиг смещения. |
ErikPshat, я думаю у тебя сейчас вообще голова кругом пойдет. :D Часть текста записывается однобайтной ascii кодировкой (A1-DD) и движок игры 'конвертирует' эти символы на лету в двухбайтные:
|
riku.kh3, а если поточнее разложить по байтам? (скриншот хекса навиду)
Цитата:
|
Это:
Код:
「部活ニモ入ラず無駄ニ鍛エ上げラレタ筋肉ヲここぞトばカリニ見セツケテヤがル…」 Движок игры превращает и выводит на экран в это: Код:
「部活にも入らず無駄に鍛え上げられた筋肉をここぞとばかりに見せつけてやがる…」 |
Цитата:
Кстати, текст из конвертера можно сохранять в текстовые файлы Shift-JIS и потом проверить в хексе? У меня просто конвертер не запускается, там что-то с 4-ой версией фреймворка у меня не так. |
Вложений: 1
Если ты про RLPAKTOOL, то там уже встроена эта рутина по конвертированию необходимых ascii символов в то, что на psp фактически выводится на экран. Тут экспортировал текст в shiftjis, правда там мусора много.
|
riku.kh3, вообщем вывел я все коды символов. Догнал, что текстовой редактор показывает количество байт на символ. По этой функции и определил все коды в хексе.
В твоём текстовике нашёл ту же фразу и сосчитал так же все коды букв. Дописал их в тот же пост: https://www.pspx.ru/forum/showpost.ph...&postcount=163 Кроче, видно что во что конвертируется. По ходу конвертер все символы пишет исключительно в 2-байтовой кодировке. А вот PSP в память складывает узкие символы из 1-байтовой кодировки, а широкие символы оставляет те же 2-байтные. |
ErikPshat, да все так. Суть всей этой кутерьмы в том, что часть наиболее часто используемых символов слоговой азбуки в игровом скрипте заменили на однобайтовые, причем реализовано это на движке игры (в ps2 и ps3 версии этой игры все так же, и сам шрифт там другой) и они выводятся на экран в другом виде. Это помогает сэкономить несколько байт на каждой фразе (там кстати физический лимит поинтера 255 байт на каждую фразу). Если проводить аналогию на привычных вещах, то автоконвертер транслита на русский.. что-то в подобном духе.
Но я все-таки не уверен что это причина крэшей, т.к. русский текст все-таки отображается на экране как положено.. проблема только при попытке сейва происходит. По сути, можно взять и нарисовать русские буковки на другое безопасное место shiftjis'а вместо ненужных символов.. но, опять же, все сводится к ковырянию PGF формата в попытаках найти таблицу длины и ширины каждого символа в пикселях. |
riku.kh3, я думаю, что можно перевод сохранить в Win-1251 и шрифт использовать обычный свой или переименовать ltn0.pgf в jpn0.pgf. И должно всё выводится.
Думаю крэш в сохранении происходит не из-за шрифтов, т.к. скорее всего в перед и после текстовых диалогов должен стоять поинтер на то, что это именно текстовая секция. Поэтому не должна быть мешанина со служебным кодом. Скорее всего присутствует баг в самом конвертере. Ведь программный код и текст находятся в одном файле. Если делать перевод и пытаться сохранить текст вместе с программным кодом в какой-либо кодировке, то конечно программный код тоже перекодируется в другую кодировку. Поэтому можно только конвертировать текстовую секцию, но программный код трогать нельзя. А я чую, что там в тексте как раз присутствуют программные коды, например видел скобки {}, доллары $, буквы S, прямо посреди текста. Дело в том, что даже если ты видишь на экране те же символы, то даже при перекодировке из shiftjis в тот же самый shiftjis, ты будешь на экране видеть всё те же символы. А на самом деле, в хексе, ты увидишь уже вместо программного кода уже другие цифры, хотя в текстовике для твоих глаз будут отображаться всё те же скобки {}, доллары $, буквы S. Так что нужно проконтролировать этот момент. Цитата:
И вообще можно удалить все остальные шрифты, тогда твой PGF будет весить всего 128 байт ))) А сейчас я смотрю твой шрифт, так он весит почти мегабайт, зачем столько всего в нём. Цитата:
|
ErikPshat, RLPAKTOOL очень продуманно устроен. Этот нюанс с конвертированием японских ascii символов, во-первых, там внедрен исключительно только для отображения: чтобы было удобно читать когда переводишь (то есть в одну сторону), и, во-вторых, только для определенных символов, а не на все подряд. То есть он никак не может тут вредить.
Или может ты посмотрел исходники и увидел там код конвертирования в shiftjis? Он там нужен был автору только для конвертирования своего английского текста.. да, он затрагивает сервисные комманды в тексте и может создавать проблемы... НО! эта фича полностью отключается одной галочкой, и я ей попросту никогда не пользовался. Я просто сразу ввожу нужный мне текст в shiftjis без помощи каких-либо конвертеров. То есть проблема крэшей все-равно так и не раскрыта. riku.kh3 добавил 13.05.2014 в 22:51 Цитата:
|
Цитата:
Обрати внимание на скрин выше, там на скрине видно окошечко под названием Gliph Properties и в этом окошечке задаются все параметры шрифта. Так же, у шрифта не может быть строго закреплённой ширины и высоты, там указывается от и до. Всё аналогично, как в любом другом шрифте, пусть это shift-jis, пусть utf-8, от названия суть не меняется. Другое дело, как ты будешь портировать буквы в тексте, менять их код? В программе для этого есть какие-то кнопочки? Хорошо, если в проге можно только видеть текст наглядно, но на самом деле, чтобы буквы имели другой, необходимый тебе код. Никак не пойму, почему прога у меня на XP SP3 не запускается. |
Цитата:
Цитата:
Приложил модифицированный скрипт, там только самая первая фраза заменена на ту, что в 100% вызывает крэш. Если есть желание сдампить память и поизучать что же с ней не так - пожалуйста. |
Кстати, дай мне нормальный шрифт TTF, который ты собираешься использовать. А то тот, что у тебя в архиве, какой-то по-моему кривой. Или его использовать?
И это, есть возможность вытащить расжатый скриптпак? |
Цитата:
Цитата:
|
riku.kh3, ладно, нужно переварить все раскопки и размышления, и ещё поужинать ))). Сегодня ночью думаю потренируюсь со шрифтами и может что-нибудь полезного получится...
Ага, насчёт ширины букв в TTF я соврал. Их же конвертер регулирует TTF2PGF. И кстати, когда я конвертировал свой шрифт обычный Times New Roman, то на PSP в диалогах он выглядел маленьким, наклонным и узким. Скрин на предыдущих страницах, правда без русского и японского алфавита. Цитата:
Да там всё заменено и повырезано (Replased, Inserted and Deleted) начиная сразу с 4-го программного байта... Скрин |
Вложений: 1
Цитата:
Одну букву так просто не изменить, т.к. там некий хитрый binary invert применяется к тексту. Более наглядный пример для сравнения сделал. Здесь два скрипта: в обоих изменена только первая фраза, один скрипт крэшится на сейве, другой нет. Длина в байтах у фраз одинаковая. |
Цитата:
Кстати крэша при сохранении не заметил. Щас потестю эти 2 дампа... |
Вложений: 1
Цитата:
Размеры всех 4-ёх дампов одинаковы. Если открыть файлы в текстовом редакторе в кодировке shift-jis, то строка текста читабельна и находится почти в самом конце файлов. Прикладываю тесты всех 4 дампов, включая японский оригинал. |
Цитата:
http://s006.radikal.ru/i213/1405/d1/d12ab4f35bb5.png :scratch_one-s_head: |
riku.kh3, ну так это может так только на эмуляторе. У меня оба эмуля вообще крашатся при попытке запуска любой игры )))
На PSP-1004 у меня не крашатся. Я правда может не так сохраняю, по японски там непонимать. На этой первой фразе нажимаю :triangle: потом спускаюсь на 2-ой пункт и нажимаю :circle:, там отображается слот сейва и сохраняю на :circle:. Потом на карте памяти появляются в сейвдата 2 папки секьюре и систем. |
Вложений: 1
Цитата:
Автор порта англофикации просто жаловался на крэши.. и он с реальной PSP точно работал. Говорил что несколько раз с нуля пришлось проект переделывать и вообще от ascii отказаться и особенно 0x20 пробелов. Я был все-таки уверен что мои крэши на эмуляторе это то же самое. :scratch_one-s_head: |
Вложений: 2
riku.kh3, вот сейчас да, на этом скрине при сохранении игра потемнела и потом PSP выключилась. Но перед этим я сохранялся разок с таким же пробелом.
Собсно нормально сохранялось раз 5 в диалогах с коротким пробелом. Заметил, что крашится на длинных диалогах, где заняты все 3 строчки. Скрины P.S. В шрифтах Shift-JIS не удаётся поместить алфавит в 1-байтную кодировку C0-FF. Там жёстко закреплены 2 символа на буквах Ч и ч - символы "Умножить" и "Разделить". Ну алфавит-то перенёсся, за исключением 2-ух букв. UPDATE Хотя не, 2 символа удалось заменить, так что всё хоккей с однобайтом, ну мало ли, может пригодится. Попробуй этот шрифт, взял отсюда: http://monafont.sourceforge.net/ Только не пойму, в игре японские символы пропали, хотя они вроде есть ))) но главное проверить пробел Shift-JIS. Замени пробелы 8140 на 82B0, там я туда перенёс пробел. ![]() |
Вложений: 1
ErikPshat, заменил пробелы на 82B0 (げ), закинул шрифт, выглядит так:
http://s019.radikal.ru/i624/1405/5e/900381ec188f.png Прикрепил два скрипта с замененными пробелами, один тот с 82B0 (げ). Другой с 814B (゜) - он по ширине как обычный пробел. |
Вложений: 1
Цитата:
Сдампил память - там вместо пробела только код 0x82B0, как и полагалось, но дополнительного пробела нет. Цитата:
http://i61.fastpic.ru/big/2014/0514/...62410be756.png В общем нужно научится компилировать шрифт TTF грамотно и сам PGF. Попробую ещё как-нить зачистить пробел... А, да, с переносом всё нормально ))) Буквы переносятся и без пробела, хотя посередине слова. ![]() |
Вложений: 1
ErikPshat, попробуй с этим шрифтом. Я там в 814B (゜) потер глифы.
|
Вложений: 1
Цитата:
Кстати, отлично скомпилировался у тебя PGF, японские символы не пропали, отображаются в системных сообщениях. У меня после компиляции почему-то они пропадали и были одни прочерки. Чем компилировал? При сохранении на этом скрине игра повисла. Так что тут проблема не из-за пробела 814B. Я склонен предполагать, что это из-за длины текста, ведь на японском в таком тексте количество символов меньше наверное. |
Вложений: 1
ErikPshat, tpunix-pgftool.rar из твоей темы. Обычной командой 'ttf_pgf font.ttf jpn.pgf' он у меня таким и создается.
Я заменил каждую русскую букву в этой фразе (ascii кавычки, зяпятые и точки оставил), размер в байтах такой же, и вместо пробела все тот же $814B. http://s019.radikal.ru/i625/1405/59/3d49edd67703.png Игра у меня после замены сохраняется нормально без крэша. :scratch_one-s_head: |
riku.kh3, может переместить глифы русского алфавита в японскую кодировку и попросить в конвертере сделать автоподстановку отображаемых символов?
|
ErikPshat, если имеешь в виду перерисовать их в другую, безопасную, зону то тут старая проблема о которой я на двух страницах ранее писал.. Ширину никак не изменить! С TTF играться бесполезно (для псевдо-пробела я просто нашел один подходящей ширины). То есть это будут либо огромные широкие буквы, либо нормальные с большими интервалами между ними.. и в обоих случаях их влезать будет в окошко слишком мало.
То есть, опять же говорю, надо разбираться в PGF.. где там эти значения длины/ширины для каждого символа хранятся. :scratch_one-s_head: |
riku.kh3, попробуй вытащить распакованный скриптпак. Он не может висеть просто в воздухе. В обычном виде он запакован и нельзя его редактировать или просматривать текст в текстовом редакторе.
Понаблюдай в папке TEMP, он должен туда распаковываться. |
Вложений: 1
ErikPshat, сам он никуда не распаковывается, все в оперативке держит. Да и не запакован он по-сути, байты текста инвертированы каким-то образом (в проге галочкой Enable invert binary в читаемый вид превращается). Там есть опция извлечь все по отдельности, но по той же самой причине выше, не думаю что там есть на что смотреть.
|
riku.kh3, и как угадать, в каком файле тот диалог?
|
ErikPshat, May 13 по логике S051300.script. По оффсету 22EA эта фраза начинается (если без имени говорящего, то 22FD).
|
riku.kh3, и это ты называешь в распакованном виде ))) Ну ваще, он же не читается не в текстовике, никак )))
Каким образом можно отредактировать в текстовом редакторе диалог, чтобы сохранить его в другой кодировке или хотя бы похексить коды символов? |
Вложений: 1
Цитата:
А, понял чего надо. Текст экспортированный типа того что я ранее выкладывал? Хз конечно тоже на что там смотреть, но вот: |
Вложений: 1
riku.kh3, ну ты до этого давал файлик с чистым текстом, он же наверное прогой как-то извлекается, а значит наверное можно его обратно накатить. RLPAKTOOL никак не запускается. Фреймворк 4-ый установил всё-таки вчера с горем пополам, там в систребованиях его требуют. Но никак.
Просто комп я сюда привёз не мой. Я одному знакомому собрал новый крутой комп, а этот он хотел отремонтировать, а потом отдал мне, он полуживой P4 селерон одноядерный 2004-го где-то года выпуска. Памяти 2 по 512 стоит, но этого мало, чтобы открыть больше 3-ёх вкладок в браузере. И если что ему не нравится, так вываливается в синий экран, там память что-то глючит. Короче я с ним замучался, открывает папки по полчаса. Нажимаю "Мой компьютер" и иду заваривать кофе. В общем твой шрифт довольно кароший, вот однобайтная кодировка японская Shift-JIS, на которую конвертятся узкие шрифты A1-DF, которые на той странице вычислили. Думаю с ней можно что-то придумать полезного...
Причём там кириллический диапазон попадает Windows-1251 = C0-FF
|
Вложений: 1
Можешь портировать обратно и выложить готовый скриптпак?... файл во вложении.
Там только одна строчка в UTF-8, которая крашит на скринах выше. Если ты откроешь в UTF-8, то сможешь прочитать её, если откроешь в Shift-JIS, то она превратится в японскую абракадабру, зато остальные строчки читабельны. Я заметил, что в шрифте есть кодировка UTF-8 русская и она должна по идее отобразиться. Цитата:
А кстати, ты умеешь пользоваться tpunix-pgftool? :) Там можно в PGF добавлять только те символы, которые тебе нужны, т.е. можно чисто отсекать все ascii символы, чтобы облегчить вес файла. FAQ tpunix-pgftool
|
Текущее время: 15:56. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.