1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление
    1. Если вы сделали перевод или русификацию игры, то вы можете поделиться своим творением здесь.
    2. О правилах вступления в группу переводчиков можно прочитать здесь.
    3. Русификации следует искать там.

Перевод игры Polanie

Тема в разделе "Переводы своими руками", создана пользователем Дядюшка Эль, 22 сен 2013.

  1. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    jack7277, а вы ролик смотрели? Когда русифицируют речь юнитов в стратегии, субтитры будут выглядеть нелепо. В квесте или экшне - там никаких напрягов. В стратегии - разве что устную речь в роликах, но не реакционные реплики выбранного или направленного куда-нибудь юнита.
     
  2. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Harris, я посмотрел ролик. Брифинг текстом без слов, юниты на польском кричат, интерфейс на русском. Лично мне все нравится в текущем виде. Я не спорю, просто высказал мнение.

    Музыка из брифингов прикольная, отдельно ее дернуть можно из игры?
     
  3. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    Вот я как раз об этом. Например, я не люблю польский язык в любом его проявлении за то, что он звучит как русский язык из уст человека с выбитыми зубами и надрезанным языком. А хочется понимать, что они говорят. Что такое "як кажешь", "чщэго" и "до бою", понятно, а всё остальное - не очень. Попытался перевести на русский фразу "на росказ" - не смог написать второе слово грамотно, поскольку не знаю польского.
     
  4. Дядюшка Эль

    Дядюшка Эль

    Регистрация:
    8 янв 2011
    Сообщения:
    165
    Fabricator, конечно возьмусь и за CD-версию, при условии что найдётся редактор и корректор ;)

    Harris, лично моё мнение, что переозвучание этой игры не пойдёт ей на пользу, т.к потеряется весь колорит. Поэтому если кто-то будет делать переозвучку, то это точно будет без меня. Хотя дело это пустяковое - в папке \data лежит вся озвучка, если не ошибаюсь - стандартный *.wav с изменённым расширением на *.dat.

    jack7277, а вот насчёт музыки - не знаю. Так глубоко не копал.
     
    Dimouse и Genesis нравится это.
  5. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Если кому понравилась музыка, она особо не прячется. Файлы graf.001 - graf.018 являются трекерными модулями Scream Tracker, но инструменты в них используются адлибовские, поэтому послушать их в обычных для такого случая ModPlugPlayer и OpenMPT не получится (дополнительно проверял в vlc и foobar2000 с его DUMB Module Decoder. Файлы замечательно воспроизводит AdPlug, пристёгнутый к Winamp.

    Мда... Столько ссылок в одном абзаце. Я так больше не буду.

    Выложил три архива - оригинал в s3m (слушать в Winamp с AdPlug), ape и mp3 (слушать где угодно). mp3 можно прослушать на той же странице.

    http://www.ex.ua/360279649943

    На нескольких треках AdPlug ощутимо клинит и темп зверски падает. Либо это несоответствие формата и дело в AdPlug, либо это черновики (треки 8, 9 и 10, на которых клинит, по всей видимости, не используются). Я дальше извлечения сэмплов в s3m никогда не лазил и партитуру не смотрел, но спецификация открытая и любой может посмотреть, в чём там дело. Есть преобразователи паттернов в текст, можно глянуть, если найдутся желающие.

    Некоторые дублируются, некоторые являются черновыми версиями, о чём сказано в заголовке.

    Названия оставлены такими, какими они были прописаны в s3m-файлах.
     
    Рыжий Тигра, SAS, Dimouse и 5 другим нравится это.
  6. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.379
    Воспроизводить также можно в XMPlay, используя AdPlug - http://support.xmplay.com/files_view.php?file_id=12
     
  7. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Да там и свой проигрыватель есть под уйму систем, я потому и дал ссылку на домашнюю страницу проекта.
     
  8. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    до чего же цепляющей оказалась музыка из брифинга.
    05 - history - end ver_.mp3

    Да и вся музыка - отличный дарк амбиент, а попадающиеся веселенькие мотивчики - хэппи дум.
    Напомнило почему-то по тягучести God's tower.
     
    Последнее редактирование: 12 окт 2013
    A.P.$lasH и Дядюшка Эль нравится это.
  9. Siberian_GRemlin

    Siberian_GRemlin

    Регистрация:
    22 ноя 2004
    Сообщения:
    4.050
    Выборочную установку для того и придумали, чтобы, например, кому хочется русскую речь могли её установить, а кому не хочется — оставить польскую без изменений.
     
    Genesis, Дядюшка Эль и jack7277 нравится это.
  10. zabrus Старожил

    zabrus

    Хелпер

    Регистрация:
    6 фев 2009
    Сообщения:
    1.811
    Была у меня когда-то безумная идея, перевести эту игру, но при этом племена западных славян (были правда и восточные поляне, но вряд ли поляки стали бы делать игру про них) заменить на восточных, разных там вятичей, древлян, дреговичей и т.д. а играть за русичей. И озвучка соответственно на старорусский лад.
     
    Genesis нравится это.
  11. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    zabrus, тогда пришлось бы и название Polanie менять на, как минимум, Росичей.
     
  12. Дядюшка Эль

    Дядюшка Эль

    Регистрация:
    8 янв 2011
    Сообщения:
    165
    zabrus, Harris, а заодно и полностью переписать сценарий, так как сомневаюсь что zabrus все восточно-славянские племена хотел бы представить как безжалостных и кровожадных варваров ;)
     
    Genesis нравится это.
  13. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    Дядюшка Эль, а, ну да: восточные славяне на карте Польши, да ещё такие сволочи, как поляки - это на самом деле несколько нелепо...
     
    Дядюшка Эль нравится это.
  14. Дядюшка Эль

    Дядюшка Эль

    Регистрация:
    8 янв 2011
    Сообщения:
    165
    :D Harris, кстати, теоретически можно это всё исправить. Графику перерисовать, озвучку заменить - не проблема; редактор карт (я с ним не работал, ньюансов не знаю) для этой игры существует, значит есть возможность замены оригинальных карт. Сценарий переписать - тоже плёвое дело. В итоге получится "новая" старая игра.

    И кем уж там предстанут восточные славяне - героями венценосными, варварами кровожадными, или и тем и другим вместе взятым - будет зависеть от сценариста ;)
     
    Genesis нравится это.
  15. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    Дядюшка Эль, ну, сценарии к играм мне уже приходилось писать. Но чтобы получить на выходе хорошую игру, необходимо перечитать историю восточных славян до крещения, а то и до появления на сцене Рюрика, чтобы в игре не возникла какая-нибудь казуальщина.
     
    Дядюшка Эль нравится это.
  16. Дядюшка Эль

    Дядюшка Эль

    Регистрация:
    8 янв 2011
    Сообщения:
    165
    Harris, с другой стороны, наличие магии, оборотней и прочих фантастических существ указывает на то что это игра не по истории, а историческое фэнтези, что полностью развязывает руки. Там можно сценарий писать опираясь лишь на мифологию.
     
    Genesis нравится это.
  17. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.195
    Дядюшка Эль, это ненамного меняет дело: тогда придётся обратиться к древнеславянскому эпосу.
     
    Дядюшка Эль нравится это.
  18. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Сегодня доделал титры в игре. Изначально там под музыку из титров отображается всего четыре экрана и, чтобы не заменять какой-то из них, скрывая имена хороших людей, решено было попробовать добавить пятый.

    jack7277 просил, по возможности, рассказывать о процессе. Попробую. Быть может, ещё кому-нибудь будет интересно.

    Первым делом, нужно найти вызов титров. Файл graf\level.ini, в котором они находятся, открывается в единственной процедуре, тут просто повезло, сразу нашли.

    Код:
    seg016:2FEB                 mov     si, offset aGrafLevel_ini ; "graf\\level.ini"
    Дальше чуть-чуть сложнее, т.к. сама процедура вызывается из девяти участков программы. Чтобы найти нужный, ищем загрузку фоновой музыки. Она у нас скрывается под именем Victoria и расположена в файле graf\graf.001. Здесь тоже никаких сюрпризов. Мало того, что вызов всего один, рядом сразу все 4 экрана титров обнаружились:

    Код:
    seg008:58BD                 push    ds
    seg008:58BE                 push    offset aGrafGraf_001 ; "graf\\graf.001"
    seg008:58C1                 call    sub_2A28E
    seg008:58C6                 add     sp, 4
    
    seg008:58C9                 push    large 30002h
    seg008:58CF                 call    ReadLevelIni
    seg008:58D4                 add     sp, 4
    
    seg008:58D7                 push    large 30003h
    seg008:58DD                 call    ReadLevelIni
    seg008:58E2                 add     sp, 4
    
    seg008:58E5                 push    large 30004h
    seg008:58EB                 call    ReadLevelIni
    seg008:58F0                 add     sp, 4
    
    seg008:58F3                 push    large 30005h
    seg008:58F9                 call    ReadLevelIni
    seg008:58FE                 add     sp, 4
    Чудесный код. Простой как 5 копеек. Как нам красиво добавить 5-й экран, чтобы не прыгать в соседние секции, где добыть свободное место? Мне кажется, цикл напрашивается сам собой. Перепишем этот код таким образом:

    Код:
    seg008:58C9                 mov     cx, 5   ; Количество экранов
    seg008:58CC                 mov     ax, 2   ; Начальный идентификатор, который мы передаём процедуре
    seg008:58CF
    seg008:58CF l_next_screen:
    seg008:58CF                 push    cx   ; Сохраняем счётчик
    seg008:58D0                 push    ax   ; Сохраняем ID
    seg008:58D1                 push    3   ; Число, которое передавалось в оригинале
    seg008:58D3                 push    ax   ; Наш ID для каждого экрана
    seg008:58D4                 call    ReadLevelIni
    seg008:58D9                 add     sp, 4   ; Восстановили SP
    
    Можно было бы достать AX из стека, но вдруг они его там 
    менять вздумают, а проверять лень, обойдёмся без риска
    
    seg008:58DC                 pop     ax   ; Восстанавливаем AX
    seg008:58DD                 pop     cx   ; Вспоминаем счётчик
    seg008:58DE                 inc     ax   ; ID++
    seg008:58DF                 loop    l_next_screen
    Запускаем и понимаем, что нифига не работает. Причина-то простая, но когда я с ней впервые столкнулся ещё много лет назад, она мне здорово нервы попортила. Пишешь одно, а в памяти при загрузке получается совсем другое. Какие-то левые байты, как будто она сама себя меняет, хотя никакой записи я в коде не вижу.

    Собственно говоря, примерно так всё и происходит. Кто-то наверняка уже догадался, что дело в релоках. В данном случае, в вызовах процедур нужно обновить значение сегмента, добавив к нему CS. В нашем старом коде было 4 вызова процедуры и в таблице релоков, которая находится в самом начале файла, должно быть 4 элемента со смещениями на эти позиции. У нас-то всего один вызов остался, остальные заноплены, а по старым смещениям при старте программы загрузчик всё равно CS плюсует, образуя мусор, который будет выполняться.

    Идём в заголовок и читаем релоки. Каждый элемент таблицы - unsigned short - смещение и сегмент. Формула стандартная - сегмент << 4 + смещение. К каждому полученному значению нужно прибавить начало кода. Чтобы всё это выводилось в посчитанном виде, хорошо бы разжиться нужной утилиткой. Я видел много таких, которые просто выводят таблицу, а вот чтобы сразу в виде смещений для файла - таких не видел, но и не искал, т.к. формат простенький и можно сделать самому. В результате получаем вот такую табличку:

    Код:
    001c:     1.	00002f11	(0000	0001)
    0020:     2.	00002f6e	(0000	005e)
    0024:     3.	00002fb3	(0000	00a3)
    0028:     4.	0000305f	(0000	014f)
    002c:     5.	000031a1	(0000	0291)
    0030:     6.	0000633f	(0000	342f)
    0034:     7.	000072a1	(0000	4391)
    0038:     8.	00009cd4	(0000	6dc4)
    003c:     9.	00009cfa	(0000	6dea)
    0040:    10.	00009d0a	(0000	6dfa)
    Все значения не пишу - их у нас 3003 получается. Находим те, что соответствуют четырём нашим процедурам:

    Код:
    08f8:   568.	00011512	(0000	e602) seg008:58CF   call ReadLevelIni
    08fc:   569.	00011520	(0000	e610) seg008:58DD   call ReadLevelIni
    0900:   570.	0001152e	(0000	e61e) seg008:58EB   call ReadLevelIni
    0904:   571.	0001153c	(0000	e62c) seg008:58F9   call ReadLevelIni
    Одну оставляем и исправляем смещение, остальные нужно убрать - уменьшаем в заголовке количество релоков до 3000 (3 штуки лишние), переносим оставшуюся часть таблицы вверх, а опустевшие позиции забиваем нулями, они просто для выравнивания останутся и учитываться не будут.

    Смещения необходимых нам переменных в заголовке:

    Код:
    #define MZHDR_RELOCS_COUNT      0x06
    #define MZHDR_HEADER_SIZE       0x08
    #define MZHDR_RELOCS_OFFSET     0x18
    В принципе, это всё. Надеюсь, никто не заснул. У меня все 5 экранов работают.
     

    Вложения:

    • credits.png
      credits.png
      Размер файла:
      23,6 КБ
      Просмотров:
      438
    kreol, compart, ThisSuXX и 10 другим нравится это.
  19. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    A.P.$lasH, оргазм мозгу, спасибо. Имена функций ида сама выцепила из дебаг инфы или ты подписал переименованием?
     
    A.P.$lasH нравится это.
  20. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Сам, в ней нету. Да там тех имён, на самом деле, даже если вместе с защитой, не очень много. Я ведь движок особо не копал. Это так, "на посмотреть" было.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление