Автор Тема: Помогите с настройкой Text Hooker в FCEUX  (Прочитано 688 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« : 01 Сентябрь 2021, 22:37:30 »
Пытаюсь сделать таблицу для перевода с японского. Формат таблицы вроде понятен,
id_тайла=буква
Вопрос только в кодировке. Как получить японский текст на выходе?

В документации к FCEUX написано что главное замапить символы
DC=tenten
DD=maru
Для чего это нужно мне понятно, непонятно как задавать другие японские иероглифы.
Может для остальных японских символов тоже есть алиасы?

Пробовал сохранять tht в разных кодировках:
UTF16 не может прочитать.
UTF-8 неправильно отображает в окне.

Может кто-то настраивал и может скинуть свой tht файл для примера?

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 206
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« Ответ #1 : 01 Сентябрь 2021, 23:20:38 »
Ты не получишь японский текст, окно рассчитано только на латинские символы.

Если нужен конвертер байтов в японские символы, воспользуйся моим скриптом.

1 - открываешь translate.lua в текстовом редакторе, в таблице encoding между "" пишешь нужные япоские символы там где тебе надо, сохраняешь.
2 - в FCEUX открываешь Hex Editor -> View -> PPU Memory, проматываешь до 0x2000, копируешь оттуда байты с текстом и вставляешь в input.bin через любой хекс реактор, сохраняешь.
3 - запускаешь translate.bat, получаешь японский текст в файле output.txt.

Добавлено позже:
В идеале нужно найти где в роме хранится текст, и копировать байты оттуда, нежели копировать их из видеопамяти. Так как в японских играх встречается дополнительная конвертация байтов в тайлы, например эти 3 буквы へ べ ペ будут выглядеть в видеопамяти одинаково под одним и тем же тайлом как へ, а эти палки/кружки над буквами рисуются на 0x20 выше самой буквы. В то же время копируя байты из рома, в список байтов могут попадать всякие управляющие байты (новая строка, пауза и так далее) с дополнительными параметрами, по случайности совпадающие с номерами байтов для букв. Поэтому на всякий случай надо сверять полученный текст с тем, что ты видишь на экране.
« Последнее редактирование: 01 Сентябрь 2021, 23:43:06 от Cyneprepou4uk »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5108
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« Ответ #2 : 01 Сентябрь 2021, 23:58:40 »
Уже ответили, но всё-таки. Для открытия файла таблицы используется обычная функция fopen(), так что файл только из ASCII (UPD: 8-битная! Об этом ниже). maru и tenten имеют специальное значение, а остальные загоняются в chartable, причём не больше 3 символов, но код почему-то позволяет ввести 4, что вызовет проблему при сохранении таблицы или при отображении. В общем, Text Hooker нужно заново писать.
UPD:
Ты не получишь японский текст, окно рассчитано только на латинские символы.
Всё-таки можно, но не Unicode. fopen() в Windows открывает файлы в 8-битной кодировке, в Windows с русской локализацией кодировка Windows-1251, поэтому можно вставить русские буквы. Для японской есть https://en.wikipedia.org/wiki/Shift_JIS. Я не разбирался как менять кодировку через Windows, но у меня установлен https://github.com/xupefei/Locale-Emulator: ПКМ по fceux.exe > Locale Emulator  > Run in Japanese. Попробовал в файле .tht ввести 50=タスセ и выделить в игре тайл, потом Snap, работает :) Символов мало, но хоть что-то.
UPD2: Забыл уточнить, что сохранял .tht в Notepad++ с кодировкой Shift-JIS.
Под fopen() имел в виду обычные вызовы, а расширение Windows (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-160#unicode-support) позволяет открывать UNICODE файлы.
« Последнее редактирование: 02 Сентябрь 2021, 05:43:57 от Sharpnull »

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 206
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« Ответ #3 : 02 Сентябрь 2021, 05:23:09 »
Sharpnull, любопытно  ^_^

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« Ответ #4 : 02 Сентябрь 2021, 07:40:39 »
Спасибо за предложенные решения! Я тоже уже нашёл исходники fceux, посмотрел как всё печально с юникодом. Пробовал делать tht в utf-8, потом перекодировать то что получилось в окне из win-1251 в utf-8, не для всех символов срабатывает, т.к. для tenten и maru есть ещё простая математика (когда берётся следующий символ алфавита), которая с utf-8 не работает.


Sharpnull, спасибо за наводку на Locale Emulator.

Как всё-таки не просто распознавать в квадратике 8x8 иероглиф. Некоторые угадываются только из-за того что рядом в алфавите стоят. А с kanji вообще засада, даже рисовалка в google translate не помогает.
« Последнее редактирование: 02 Сентябрь 2021, 08:28:44 от supremacy »

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Помогите с настройкой Text Hooker в FCEUX
« Ответ #5 : 05 Сентябрь 2021, 09:52:34 »
Если запускать FCEUX через Locale Emulator то этой функцией можно пользоваться, правда она не захватывает спрайты, но зато автоматически определяет над каким иероглифом стоит дакутэн и хандакутэн и соответственно меняет иероглиф на выходе. Встроенный перевод через сайт тоже не работает.

tht файл в кодировке Shift-jis.