| Разработка и ромхакинг > Ромхакинг и программирование |
| Вопрос к ромхакерам и переводчикам. Подмена символов. |
| (1/1) |
| free.gen:
Решил внести в уже существующий перевод некоторые исправления. Подготовил такую таблицу - какая буква соответствует символу в игре: --- Код: ---А(A) Б(А) В(B) Г(б) Д(Б) Е(E) | | Ж(?) З(3) И(Ь) Й(Ь) К(K) Л(Ш) | | М(M) Н(H) О(0) П(И) Р(P) С(C) | | Т(T) У(Y) Ф(?) Х(X) Ц(?) Ч(4) | | Ш(У) Щ(?) Э(Й) Ю(?) Я(?) | -------------------------------- а(a) б(д) в(и) г(r) д(g) е(e) | | ж(й) з(т) и(u) й(ъ) к(k) л(щ) | | м(m) н(ь) о(o) п(n) р(p) с(c) | | т(t) у(y) ф(в) х(x) ц(з) ч(к) | | ш(у) щ(ц) э(ы) ю(w) я(d) ы(Яi) | | ь(Я) ъ(Я) | --- Конец кода --- Теперь чтобы в игре вывести какой либо текст, его необходимо напечатать в таком виде. Приветсвую жителей этого форума Ирuиеtctиw йuteщеъ ыtoro ворyma Вопрос заключается вот в чем - как вы это упрощаете/автоматизируете? Возможно ли как-то сделать простую подмену символов при помощи какого-нибудь Notepad++ или Sublime Text? На данный момент я ввожу исправления вручную, и хотелось бы немного упростить этот процесс... В идеале хотелось бы иметь некую софтину, в которой можно "переводить" текст по заданному шаблону в обе стороны. |
| SeregaZ:
хы... у меня как раз такое творится :) я запилил массив, где русская буква, соответствующая ей английская, а так-же сграбливание символа из картинки-шрифта по нужным координатам, а после демонстрационный вывод в окошке, чтобы юзверь видел как оно будет выглядеть в итоге. |
| Guyver(X.B.M.):
Kruptar |
| free.gen:
Guyver(X.B.M.), Рассматривал ее в самом начале, но показалась сложной и неудобной. Мне нужно просто поменять символы. Извлеченные кракозябры в русский. И обратно русский в кракозябры.)) |
| Guyver(X.B.M.):
А чем неудобная? Можно создать хоть текстовые файлы и подключить их, и там будет появляться нужный тебе текст по таблице. Удобнее некуда: Ничего не надо особо делать. Написал текст в правом окне, сохранил его в файл - и всё... Сразу он переконвертировался... |
| free.gen:
Guyver(X.B.M.), ну во первых при создании проекта она просит указать ромы. у меня psx игра и перевод вносится в отдельные уже распакованные файлы. да и это я буду делать лишь местами, исправляя ошибки. так и не понял как тут поступить. во вторых, чтобы текст интерпретировался, нужно как-то создать таблицу для этой проги, в которой будут символы. как это сделать я так и не понял. ну и в третьих - много в ней сбивающих с толку настроек про смещение, адреса и пр... |
| Cyneprepou4uk:
Можно делать через эмулятор fceux свежей сборки. Открываешь любой ром, открываешь хекс редактор, переходишь в rom file, вставляешь текст справа, подгружаешь свой файл с кодировкой, копируешь сконвертированный текст |
| Sharpnull:
--- Цитата: free.gen от 02 Февраль 2020, 15:36:36 ---при помощи какого-нибудь Notepad++ --- Конец цитаты --- Вот ответ. В замене (Ctrl+H) включаете "Регулярные выражения", в поиск (нужно продолжить таблицу): --- Код: ---(А)|(Б)|(В)|(Г) --- Конец кода --- В замену: --- Код: ---(?1A)(?2А)(?3B)(?4б) --- Конец кода --- "Заменить все" -------- Ну и на Python 3 легко пишется. Предполагается, что входной 1.txt в кодировке utf-8, как код скрипта. Здесь AБВГ меняется на 5678. --- Код: ---#!/usr/bin/env python3 from pathlib import Path def sub(txt): s1 = "АБВГ" s2 = "5678" for c1, c2 in zip(s1, s2): txt = txt.replace(c1, c2) return txt p1 = Path("1.txt") p2 = Path("2.txt") txt = p1.read_text(encoding="utf-8") new_txt = sub(txt) p2.write_text(new_txt, encoding="utf-8") --- Конец кода --- -------- Забыл, что в Python есть специальные методы maketrans и translate. Что упрощает код: --- Код: ---#!/usr/bin/env python3 from pathlib import Path def sub(txt): s1 = "АБВГ" s2 = "5678" transtab = str.maketrans(s1, s2) return txt.translate(transtab) p1 = Path("1.txt") p2 = Path("2.txt") txt = p1.read_text(encoding="utf-8") new_txt = sub(txt) p2.write_text(new_txt, encoding="utf-8") --- Конец кода --- |
| paul_met:
free.gen, Формат таблицы ты можешь видеть на скришоте круптара слева. Если Круптар для тебя слишком сложен и запутан, то бери какой-нить WindHex или Translhextion. Для них нужна только таблица, но указатели придётся считать вручную. Но, по мне, так это прошлый век. Изучай лучше Круптар - удобнее и функциональнее пока ничего не придумали. |
| lupus:
У меня есть для этого программа, которая по созданной таблицу парсит текст, на выходе получаем текстовый файл. Как этот текст вставлять - это уже другая история. Могу подкинуть завтра. Осталось не забыть ;) |
| free.gen:
Sharpnull, регулярные выражения отмел сразу, а вот по ссылочке прошел и там обнаружил wReplace - подошла идеально. 2 минуты на создание шаблона и готово. paul_met, был бы рад в этом разобраться, но он похоже не может просто менять символы (или может?), так же я не смог разобраться - как создать рабочую таблицу. нужны ей поинтеры или нет (так и не понял что это). программа заточена под замену текста непосредственно внутри рома, умеет работать с этими ромами учитывая специфику хранения текста в оных. у меня же более тривиальная задача. просто поменять символы, без заморочек на тему какой там адрес и тд, ведь отредаченный текст я буду ставить сам в hex редакторе. |
| lupus:
--- Цитата: lupus от 02 Февраль 2020, 21:41:45 ---У меня есть для этого программа, которая по созданной таблицу парсит текст, на выходе получаем текстовый файл. Как этот текст вставлять - это уже другая история. Могу подкинуть завтра. Осталось не забыть ;) --- Конец цитаты --- Парсер в приложенном архиве. |
| Sharpnull:
lupus, программа ничем не отличается от моего скрипта на Python выше, кроме способа задания таблицы, что легко исправляется. У вас кодировку (cp1251 - плохой выбор) уже не поменять в отличие от скрипта. |
| SeregaZ:
а разве эти ромы всякие понимают кодировки? там кажись одна... анси как она там. от 0 до 255 и крутись как хочешь как говорится. |
| Sharpnull:
SeregaZ, вопрос был про текстовые файлы. --- Цитата: lupus от 03 Февраль 2020, 19:41:18 ---Парсер в приложенном архиве. --- Конец цитаты --- Вот аналогично работающее на Python https://gist.github.com/infval/60c1bdd2c69f38cc81d2b175133dd07d, только по умолчанию кодировка utf-8, чтобы сменить параметр -e (cp1251 в данном случае): --- Код: ---translate.py readme.txt RU_tbl.txt 1.txt -e cp1251 --- Конец кода --- -------- Скрипт проще расширить и изменить, решил показать примером. -------- --- Цитата: Guyver(X.B.M.) от 02 Февраль 2020, 15:44:20 ---Kruptar --- Конец цитаты --- Видел, что программу забросили и исходники выложили, вы даже что-то правили в коде, есть развивающийся форк? Было бы неплохо привести в порядок, заменить иконки из win-98, улучшить внешний вид как минимум. Хотя мне лично не нужно, просто страшно смотреть на многие программы для ром хакинга (как CrystalTile2). |
| lupus:
--- Цитата: Sharpnull от 03 Февраль 2020, 19:57:52 ---lupus, программа ничем не отличается от моего скрипта на Python выше, кроме способа задания таблицы, что легко исправляется. У вас кодировку (cp1251 - плохой выбор) уже не поменять в отличие от скрипта. --- Конец цитаты --- Софтинку под мои нужды кто-то из друзей написал, не помню уже кто :( Есть похожая, но уже под utf-8 и таблица иначе создаётся. Уверен, что топикстартеру и этой с головой хватит. |
| paul_met:
--- Цитата: Sharpnull от 03 Февраль 2020, 20:31:14 ---Видел, что программу забросили и исходники выложили, вы даже что-то правили в коде, есть развивающийся форк? Было бы неплохо привести в порядок, заменить иконки из win-98, улучшить внешний вид как минимум. Хотя мне лично не нужно, просто страшно смотреть на многие программы для ром хакинга (как CrystalTile2). --- Конец цитаты --- Для этого не нужны исходники по большому счёту. Можно хакнуть через какой-нить Restorator - добавить новую иконку и XP манифест. |
| Sharpnull:
--- Цитата: paul_met от 03 Февраль 2020, 22:28:08 ---XP манифест --- Конец цитаты --- Значит манифест для "Visual Styles" можно вставить без исходного кода, спасибо. Вопрос такой пробегал в голове. --- Цитата: lupus от 03 Февраль 2020, 22:06:50 ---Уверен, что топикстартеру и этой с головой хватит. --- Конец цитаты --- ТС уже нашёл решение в лице wReplace. cp1251 - плохой выбор в смысле идентификации кодировки в текстовом редакторе, но можно представить, что файлы двоичные, тогда программа будет по замене байт (в однобайтовой кодировке вроде нет приколов со специальными байтами) и кодировка не важна. --- Цитата: SeregaZ от 03 Февраль 2020, 20:12:25 ---а разве эти ромы всякие понимают кодировки? --- Конец цитаты --- Сейчас подумал, что можно было сделать отображение "символ -> байт или несколько байт". В специальных программах как Kruptar это всё наверно учтено. ТС, наверно, вставляет из буфера обмена в HEX-редактор и там уже вставляется верно в зависимости от выбранной кодировки. |
| Навигация |
| Главная страница сообщений |