Автор Тема: Русификация Dwarf Fortress  (Прочитано 626543 раз)

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

Оффлайн Виктор Ерыгин

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2235 : 14 Сентября 2019, 18:52:24 »
С созданием доп. секции... Да ну нафиг) Мне тоже не улыбается цеплять какой-то дизассемблерный движок.
А что в EXE есть строки не заканчивающие нулём? Пример можете на вскидку привести?

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2236 : 14 Сентября 2019, 19:01:45 »
В С++ на уровне машинного кода в конструктор строки (или в ООП вариант strcat) передается указатель на начало строки, длина строки и указатель на объект-строку. В итоге имеем:

- где-то длина не указывается, там только адрес поменять.
- где-то длина указывается где-то рядом, там просто поменять
- где-то длина прописывается одной и той же инструкцией для нескольких строк (там где идет ветвление, например). Вариант с втыканием strlen прорабатывался, но оказалось что есть строки, которые не заканчиваются нулем, и универсальное решение не получилось. Но это тоже решаемо - в новой секции вставляется кусок кода с указанием длины, делается на него переход, потом переход обратно в основной код (после куска кода, прописывающего длину). Для подобных правок (и для следующего пункта) как раз нужен дизассемблерный движок.
- где-то строка собирается по кусочкам серией операций mov. Нужно этот код зачистить, заменить простым циклом. Отдельно нужно обработать случаи, когда две (или более) серии мувов пересекаются между собой.

Вариант с отдельной секцией хорош тем, что туда можно дописать и строки, и свои куски кода (тот же strlen, если его не получается
« Последнее редактирование: 18 Сентября 2019, 08:16:14 от insolor »

Оффлайн Виктор Ерыгин

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2237 : 14 Сентября 2019, 19:09:50 »
М-да, разработчик постарался.

Кстати, по поводу исходников

Дизассемблер ваш или взяли где-то?

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2238 : 14 Сентября 2019, 19:13:00 »
М-да, разработчик постарался.

Кстати, по поводу исходников

Дизассемблер ваш или взяли где-то?
Дизассемблер писал сам. Но если буду продолжать то скорее всего возьму zydis с оберткой для Python: https://github.com/zyantific/zydis-py

P.S. Не разработчик постарался, а современный оптимизирующий компилятор высокоуровневого языка программирования) Если бы писалось на чистом Си, тогда бы и машинный код был намного проще.
« Последнее редактирование: 14 Сентября 2019, 19:19:05 от insolor »

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2239 : 15 Сентября 2019, 12:15:25 »
Виктор Ерыгин, так что, берешься?)

Оффлайн Виктор Ерыгин

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2240 : 17 Сентября 2019, 18:34:51 »
Попробую по крайней мере)

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2241 : 15 Июля 2020, 23:28:55 »
Выложены тестовые сборки русификации для DF версии 0.47.04:
x64: https://bitbucket.org/dfint/downloads/downloads/df_47_04_win_s_ru_2020_07_15.zip
x32: https://bitbucket.org/dfint/downloads/downloads/df_47_04_win32_s_ru_2020_07_15.zip

Сборка тестовая (пока без графики и других "излишеств"😉), на основе нового метода русификации:
https://github.com/dfint/df-translate-hook
Т.к. метод новый, могут встречаться ошибки, вылеты и т.д.

Перевод не полный. Если есть желание поучаствовать в доработке перевода (нужно доперевести порядка 2000 текстовых строк), можете зарегистрироваться на transifex:
https://www.transifex.com/dwarf-fortress-translation/dwarf-fortress

Оффлайн MCreeper

  • Постоялец
  • ***
  • Сообщений: 168
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2242 : 17 Июля 2020, 15:08:47 »
Это кто-то уже допомогался до "бронзовый" вместо "из бронзы", или как-то по-другому так получилось?  :)
« Последнее редактирование: 17 Июля 2020, 15:15:13 от MCreeper »

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2243 : 17 Июля 2020, 15:10:00 »
Шта?

Оффлайн MCreeper

  • Постоялец
  • ***
  • Сообщений: 168
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2244 : 17 Июля 2020, 15:32:18 »
Спойлер
[свернуть]
Ну... Я про такие вот неувязочки. Спрашиваю, отчего так. Из научного интереса.  :) Или помощников вообще нет?

Багрепорт - человек-кузнечик и человек-червь на экране выбора расы в приключенце показываются как "ничто". В биографии нормально.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2245 : 17 Июля 2020, 15:53:52 »
Спойлер
[свернуть]
Ну... Я про такие вот неувязочки. Спрашиваю, отчего так. Из научного интереса.  :) Или помощников вообще нет?

Багрепорт - человек-кузнечик и человек-червь на экране выбора расы в приключенце показываются как "ничто". В биографии нормально.
Потому что бывает "из меди болт" и "из меди броня". Если заменить на прилагательное, то будет "медный болт" и "медный броня". Склонение прикрутить можно, но пока это отключено, и в любом случае не везде правильно работает.
Из разработчиков сейчас 2 человека, включая меня.

Кузнечиков посмотрю позже.

Оффлайн Rafe Bordo

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2246 : 18 Июля 2020, 01:40:52 »
Бинд на паузу с пробела слетает после патча. Это я что-то не понимаю или так быть не должно?
Было
Спойлер
[свернуть]
Стало
Спойлер
[свернуть]

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2247 : 18 Июля 2020, 01:43:00 »
Бинд на паузу с пробела слетает после патча. Это я что-то не понимаю или так быть не должно?
Было
Спойлер
[свернуть]
Стало
Спойлер
[свернуть]
Не должно быть, пока вручную можно в настройках поправить.

Оффлайн garuda1122

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2248 : 06 Августа 2020, 23:40:50 »
Всем привет, подскажите пожалуйста, а еще нет русской версии, только уже с графикой и тд.?

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2249 : 07 Августа 2020, 08:10:01 »
Всем привет, подскажите пожалуйста, а еще нет русской версии, только уже с графикой и тд.?
Для новых DF версий пока нет