Разработка и ромхакинг > Переводы игр
[NES] Haja no Fuuin - как перевести ром с японского?
Ojisun:
Здравствуйте.
Меня интересует игра Haja no Fuuin это RPG версия для Famicom.
Хотелось бы для удобства игры перевести хотя бы меню во время битвы и меню продажи предметов и т.д. в городах.
Сначала я переводил через гугл переводчик , но потом я нашёл сайт где все почти фразы из игры переведены на английский:
https://docs.google.com/spreadsheets/d/1Qa-RjytH7HaTS1_W4-xDFdeqPSY3NjI4-HVF4iiZH7I/edit?pli=1#gid=0
Сначала я перерисовывал буквы чтобы выходили близкие по смыслу слова , но в итоге получились надписи страшные из пираток нулевых годов для дримкаста.)))
Я решил разобраться как делают норм переводы и вот загвостка в HEX редакторах не отображается японский текст, я вижу кучу букв кирилицей что делать? :neznayu:
На сайтах японские буквы и иероглифы читабельны и норм видны а в самих редакторах не понятка. Помогите, хотелось бы перевести хотя бы несколько меню.
PS. Я научился перерисовывать шрифты и графику(спрайты) благо там всё в открытом виде. На третьем скрине перерисован замок и фишка игрока , вместо игры шлемом теперь по карте ходит человечек. :)
Пример:
bugmenot:
Версия для Sega Master System выходила на английском
https://www.emu-land.net/consoles/sms/roms?act=showonly&id=204
Ojisun:
Это я знаю :)
Они отличаются, на сеге покрасивее будет.
У меня трабла с японскими буквами , они не отображаются в редакторах! :neznayu:
SeregaZ:
по идее они и недолжны. виндовс жеж русский :) японские шрифты здесь, я бы сказал, отсутствуют. а второе - наврядли они там прям буква к букве. думаю они там нарисованы в виде графики. то есть не тайл-буква, а несколько тайлов = какое-то слово. хотя если буква к букве - то класс :) в японском вроде как два раза по 46 букв, а значит не придется сидеть и плеваться, как с английским, выкручиваясь используя ноль как букву О, как Ч и 4, как 8 и В и так далее и тому подобное...
Ojisun:
Да, ну я же вижу японские надписи на сайтах и в названии видео на ютубе например.
Вы правы , что было написано тайлами я перерисовал :lol:
В игре использованы две азбуки , а это дофига букв и весь русский алфавит влезет 2 раза :wow:
Чего же я и позарился переводить. :)
Я могу читать и хирагану и катакану и переводить через гугл переводчик. Конечно перевод будет ещё тот но близкий по смыслу. Хотя бы меню перевести нормально!
Как же переводят ромы с японского на инглиш тогда если не отображаются буквы в хексах?
Ладно версия этой игры есть на мастер систем ну есть куча рпг и стратегий для фамиком в которых я хотел бы разобраться и перевести хоть что то :(
Sharpnull:
--- Цитата: Ojisun от 25 Июль 2023, 19:50:28 ---Я решил разобраться как делают норм переводы и вот загвостка в HEX редакторах не отображается японский текст, я вижу кучу букв кирилицей что делать?
--- Конец цитаты ---
Нужно смотреть код, переводчики используют Kruptar, но код всё равно нужно уметь разбирать, а скорее всего придётся изменять. В Mesen в PPU Viewer можно посмотреть индексы тайлов и поставить breakpoint (точку остановки, можно добавить условие value==$xx, где xx - индекс тайла) на запись конкретного индекса тайла, потом в коде видно откуда читается индекс и уже перехватывать запись туда. В данной игре, например, первый диалог, наверху индексы тайлов 60 83 70 69 36 98, в отладчики видим запись из RAM $3DC, туда запись из кода CPU $E853, выше вызов JSR $E9BC, где из изначального значения символа получился индекс тайла. Подпрограмма $E9BC вычитает 0x10 и использует замену по таблице с CPU $E9F0, там ещё какие-то специальные символы, но изначальные значения мы видим с RAM $3A0: 6D 90 7D 76 37 10, которые и превращаются в 60 83 70 69 36 98. В Memory Tools в Mesen можно найти 6D 90 7D 76 37 10 в роме, их несколько, но последние прочтённые байты подсвечиваются и значит этот текст хранится с PRG $9A28. Также находим для текста рядом с ножиком и бронёй: было 6A 1B 9E 76 > индексы тайлов 5D 58 62 69. Вставляем кириллицу в CHR ROM и меняем таблицу как удобно, избегая специальных символов. UPD: Исправил опечатки.
UPD2:
--- Цитата: Ojisun от 25 Июль 2023, 22:05:22 ---Как же переводят ромы с японского на инглиш тогда если не отображаются буквы в хексах?
--- Конец цитаты ---
Программы как Kruptar. Я бы написал скрипт на Python, который сохраняет текст в текстовый файл.
Rumata:
Там есть и графика и текст.
А вот кодировка абсолютно своя.
Ojisun:
--- Цитата: Sharpnull от 25 Июль 2023, 22:09:03 --- В Mesen в PPU Viewer можно посмотреть индексы тайлов и поставить breakpoint UPD: Исправил опечатки.
UPD2:Программы как Kruptar. Я бы написал скрипт на Python, который сохраняет текст в текстовый файл.
--- Конец цитаты ---
Я уже выписал все индексы букв. У меня эмуль fceux.Счас надо переварить всё что вы написали :lol:
Хорошо бы конечно иметь читабельный текст и отыскивать по фразам, но увы видит хекс только инглишь.
[/quote]
--- Цитата: Rumata от 25 Июль 2023, 22:15:03 ---Там есть и графика и текст.
(Ссылка на вложение)
А вот кодировка абсолютно своя.
--- Конец цитаты ---
Да да я знаю. Первая фраза тайлами Тут что -то есть. вторая тут кто -то есть. Звучало скучно и я написал : Я кого-то вижу.
SeregaZ:
под кодировкой должно пониматся примерно такое:
символ_из_хекса = номер_тайла
и предположил бы поискать то место, где 0, 1, 2, 3, 4... полагаю там в хексе значения совпадают.
Ojisun:
--- Цитата: SeregaZ от 25 Июль 2023, 22:48:00 ---под кодировкой должно пониматся примерно такое:
символ_из_хекса = номер_тайла
и предположил бы поискать то место, где 0, 1, 2, 3, 4... полагаю там в хексе значения совпадают.
--- Конец цитаты ---
Но я не знаю в какой строке в хексе искать ЭТО слово. Например надпись возле ножика и брони это имя персонажа 5D 58 62 69 индексы букв.
Но как мне это в хексе найти?В какой строке? Если игра на инглише вводишь слово в хексе и он находит его и в какой оно строке, а там потом колдуй переписывай эти цифры под стать перерисованному алфавиту.
А вот как мне найти это имя я не понимаю , сори я не всё догнал из поста выше , что это за значения RAM $3DC CPU $E853, JSR $E9BC? :neznayu:
SeregaZ:
даааа не слушай их :) они из высшей касты... на своем каком-то языке разговаривают :)))
по поводу индекса буквы - я бы сказал это не индекс, а номер в таблице. сейчас дай собразить... по поводу имени персонажа: 5D 58 62 69 а есть начертание японского из этих 4 букв?
вобще 3 часа ночи... мне давно спать пора. но я попробую посмотреть.
а стоять. не посмотрю. я думал речь про мегадрайв :)
Ojisun:
--- Цитата: SeregaZ от 26 Июль 2023, 00:06:51 ---даааа не слушай их :) они из высшей касты... на своем каком-то языке разговаривают :)))
по поводу индекса буквы - я бы сказал это не индекс, а номер в таблице. сейчас дай собразить... по поводу имени персонажа: 5D 58 62 69 а есть начертание японского из этих 4 букв?
вобще 3 часа ночи... мне давно спать пора. но я попробую посмотреть.
а стоять. не посмотрю. я думал речь про мегадрайв :)
--- Конец цитаты ---
Да не всё правильно говорят, просто это я не сразу догоняю :lol: Всё это можно посмотреть через эмуль я понимаю индексы букв и значение в Tools т.д.
Ну я не могу найти слово имя персонажа из кусков кракозябры то есть по цифрам в хексе открывает такие символы ] X d i но в какой строчке это слово поиск не находит такое ваще. :neznayu:
5D 58 62 69 это индексы букв в имени персонажа , это длинное тире не буква это для протяжного звука символ кароче правила джапы языка надо читать я учу по книжкам джапу :) .
Кароче его зовут Агасу но надо 4 буквы делать на пять места нету))))) Можно просто назвать ВОИН. Его имя вот на скрине напротив ножика и доспехов написано. Дальше 200 переводиться слово вверху как выносливость можно написать жизнь рядом опыт так и оставить там 4 буквы. Что король трындит я не перевёл типо зло какое то зародилось в нашем королевстве бла бла бла!!! Феечка у героя над плечом говорит шагай шагай :lol:
SeregaZ:
пусть станет Агат делов то :)
так. это кароче не то... так как нужна таблица, а не номер тайла. хотя подсказка может быть в порядке букв. они на этой картинке идут как в алфавите друг за другом? или все-же рандомно разбросаны? хотя меня смущает что 1,2,3... в два ряда написаны, вместо 1234567890...
Добавлено позже:
ахаха, чтобы запустить этот галимый эмулятор... надо скачать всякие нетфреймворки чуть ли не на 200 метров. увы. до эксперементальной части я не дошел. свалил спать кароче.
кто афтор этого месена - гори в аду. каким это надо быть упоротым, чтоб лепить свои поделки на сраных фреймворках, которые скорей всего начнут матерится на всяких виндовс хп и прочих.
Добавлено позже:
замысел был в том, чтобы найти таблицу, загрузить её, после составляя нужное имя или слово, кликая мышкой, чтобы формировалась текстовая хекс строчка для поиска в роме. сейчас это номер тайла для примера. но ежели найдется таблица - это мы легко исправим.
*старое вложение удалил
Sharpnull:
--- Цитата: Ojisun от 25 Июль 2023, 23:54:53 ---А вот как мне найти это имя я не понимаю , сори я не всё догнал из поста выше , что это за значения RAM $3DC CPU $E853, JSR $E9BC?
--- Конец цитаты ---
RAM - ОЗУ, CPU - пространство процессора (данные ROM обычно $8000-FFFF), JSR - инструкция вызова подпрограммы (функция), PRG - это код и данные без CHR (графики) и заголовка рома.
--- Цитата: Ojisun от 25 Июль 2023, 23:54:53 ---Например надпись возле ножика и брони это имя персонажа 5D 58 62 69 индексы букв.
Но как мне это в хексе найти?
--- Конец цитаты ---
Я это пытался объяснить, в роме есть изначальный байт символа, от него вычитается 0x10 (16), байт заменяется по таблице и получается индекс тайла, который у вас есть. Таблица в файле с 1EA00 (PRG $1E9F0) размером 174 байта:
--- Код: ---98 0B 0C 0D 0E 0F 1B 1C 1D 1E 1F 58 5B 5C 9C 06
07 08 09 0A 16 17 18 19 1A 24 25 26 27 28 29 2A
2B 2C 2D 2E 2F 34 35 36 37 38 39 3A 3B 3C 3D 3E
3F 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 54 55 56
57 16 17 18 19 1A 24 25 26 27 28 29 2A 2B 2C 2D
37 38 39 3A 3B 37 38 39 3A 3B 5D 5E 5F 60 61 62
63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72
73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82
83 84 85 86 87 90 91 92 93 94 95 96 8C 5F 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 76 77 78
7A 76 77 78 7A 97 BC AB AC 8D 9D 8A 9A 8B
--- Конец кода ---
Если в роме байт символа 0x10, то 0x10 - 0x10 = 0x00, значит по таблице = 0x98, у ножика "6A - 10 = 5A", находим порядковый байт 0x5A в таблице с нуля = 5D. Проблема в том, что таблица имеет повторы, значит обратное преобразование не всегда верно.
Можно сделать так, открываете в Mesen Debugger, в списке Breakpoints > ПКМ > Add: CPU Memory, [v] Execution, Specific: E870. Теперь отладчик останавливается после декодирования символов, но до записи на экране (можете проматывать время назад для удобства), для продолжения F5, для отключения остановок снять галочку в списке Breakpoints. Когда будет остановка, смотрите в Debugger выше жёлтой строки CPX $AA, после = размер строки текста, например = $0A, в окне Memory Tools с выбранным CPU Memory смотрите байты с $3A0, например, 44 28 2A 3D 33 47 32 61 45 4B, это байты в роме, а индексы тайлов с $3DC, например, 47 1A 25 3C 2E 4A 2D 38 48 4E, т. е. то, что вы знаете и что вам нужно превратить в байты в роме (с $3A0) для поиска.
UPD: Для некоторых экранов нужно ставить E83A вместо E870, как на статусе на Select, там например 6A 1B 9E 76, которые на самом деле превращаются в 5 символов на экране. Для поиска конкретно этих байтов, удобно в Memory Tools (PRG ROM) искать после остановки, байты будут синими (недавно прочитаны).
UPD2: Можно ещё Lua-скрипт написать, который будет выводить все пары значений.
Вам нужно найти ромхакера желающего переводить эту игру, если сами не хотите изучать код.
SeregaZ:
чот не получилось у меня это самое -$10... не находит :)
и почему-то заячьи ушки не считает как символ. его нет в таблице получается. хотя в тексте он вроде как есть. точнее там видимо текст в две строки, то есть я бы предположил что там два или три пробела и потом заячьи ушки, потом опять пробелы... но этих ушек нет в таблице получается :) хотя тайл есть. ушки выше - есть в таблице. а вот ниже - нету... бред кароче :)
Ojisun:
--- Цитата: SeregaZ от 26 Июль 2023, 01:04:31 ---пусть станет Агат делов то :)
так. это кароче не то... так как нужна таблица, а не номер тайла. хотя подсказка может быть в порядке букв. они на этой картинке идут как в алфавите друг за другом? или все-же рандомно разбросаны? хотя меня смущает что 1,2,3... в два ряда написаны, вместо 1234567890...
--- Конец цитаты ---
Rumata постом выше сделал скрин как идут буквы, они идут не друг за другом. Я использую эмулятор FCEUX . В эмуляторе заходим в замок говорим с Королём и в это время в эмуляторе вверху выбираю Debug>PPU Viewer открывается скрин с графикой и поочерёдно тыка на каждую букву мы видем индекс или как это назвать? Так и узнал цифры имени перса 5D 58 62 69 на скрине я выбрал букву А японскую внизу пишется 5D . Так я узнаю индексы букв что дальше то делать с хексом? Можно найти соответствующий символ краказябр этим цифрам индексам но я не могу найти само слово в хексе
Ojisun:
--- Цитата: SeregaZ от 26 Июль 2023, 10:56:28 ---чот не получилось у меня это самое -$10... не находит :)
и почему-то заячьи ушки не считает как символ. его нет в таблице получается. хотя в тексте он вроде как есть. точнее там видимо текст в две строки, то есть я бы предположил что там два или три пробела и потом заячьи ушки, потом опять пробелы... но этих ушек нет в таблице получается :) хотя тайл есть. ушки выше - есть в таблице. а вот ниже - нету... бред кароче :)
--- Конец цитаты ---
Эти ушки ваще надо закрасить. нам нужна буква без ушек она под четвёртым человечком на скрине это буква КА если добавить ушки она читается как ГА . Ушки в редакторе закрашиваем и будет чёрный экран все ушки кружочки и запятые и т.д. рядом с буквами идут дополнительно нам нужны буквы в чистом виде. Перерисовать её в букву Г смотрите скрин я тупо перерисовал по смыслу буквы но поскольку буквы встечаются в других словах текст естественно будет как с багом я и сделал себе такой кривой перевод для удобства. Поэтому в слове Бой две Б))))Незнал как по другому сделать. Вы не те ушки кстате смотрите смотрите ушки ниже возле картинки счита то ушки к верхней азбуке а нам надо нижняя Катакана имя героя Катаканой диалоги написаны Хираганой
SeregaZ:
не правильно ты дядя Федор бутерброды ешь :)
то что ты находишь - это номер тайла в памяти приставки, где изображена буква. по этому номеру надо обратиться к таблице, которую тебе скинули несколько постов выше. номер в таблице уже ближе к телу, но надо еще + $10 прибавить. и подобное надо сделать со всем словом - со всеми буквами в слове. и только потооооооом полученное значение искать в роме. нооооо у меня не получилось :) в роме чот не находит такое... где-то у меня ашипка :) может на единичку где-то я что-то напутал...
Ojisun:
Я про ушки выше написал может не находит потому что не те.)))
SeregaZ:
я не искал ушки, я возмущаюсь почему их нет в таблице :)
чтобы понять о чем я говорю - смотри во вложении в том моем посте. первая строчка - там складываются номера тайлов. вторая графическое изображение слова, буквы которого ты выбрал из всего тайл-сета, третья строчка номера из таблицы + $10, четвертая - чистые номера из таблицы.
угу. ошибку допустил. ща перезалью :)
Добавлено позже:
то есть искать в роме по идее надо 3 строчку, там где + $10 приписано. ноооо она не находится. хотя я может быть неверно слово составляю... по идее там Рубль, минус, Пэ, и Зю. но может начертания не те и поэтому ненаходит. или текст в игре запакован.
Навигация
Перейти к полной версии