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

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

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

The Queen of Hearts Maze Game

Тема в разделе "Переводы своими руками", создана пользователем AndyFox, 3 мар 2014.

  1. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670

    Вложения:

    • queheart.zip
      Размер файла:
      24 КБ
      Просмотров:
      100
    Последнее редактирование: 3 мар 2014
    compart, PavelDAS, Mlegion и 3 другим нравится это.
  2.  
  3. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    Поскольку перевод был предложен для выкладывания на сайте, хотелось бы уточнить один момент.
    В игре используются карточные термины: clubs - крести (трефы), spades - пики, diamonds - бубны, hearts - черви.
    Как их лучше перевести?

    Sam Spade - Сэм Пик(а), Пиковый Сэм или транслитом, Сэм Спейд, как не переводящиеся фамилии?
    Diamond Jim - Бубновый Джим, Джим Бубей, Джим Даймонд?
    Mary Linn Club - Мэри Линн Треф, Трефовая Мэри Линн, Крестовая Мэри Линн, Мэри Линн Клаб?
    Wild Card Hitchcock - Уайлд-кард(?) Хичкок, Дикая карта Хичкок?
    "Card Shark" = "Card Sharp" - шулер? Тогда что такое "to cream the cardsharks"?

    Опять же, "Королева сердец", технически, - "Дама червей", но первый вариант красивей звучит. :)
     
    kirik-82, AndyFox и Dimouse нравится это.
  4. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Спасибо, действительно!

    Предлагаю вариант: Пиковый Сэм, Джим Бубей, Мэри Линн Треф, Дикая Карта Хикок (вероятно задумывалась отсылка к Дикому Биллу Хикоку и Альфреду Хичкоку).

    Тогда прошу помощи в поисках смещений. Как сообщили - в exe искать сложней чем в com.

    e81f5074c9a2f0e76a23ae058d3519ae.jpeg baa221904e7cad0fd4818ed9e8c63b4c.jpeg

    Сам в затруднении...

    Согласен, как по мне то пусть будет 1-й вариант. Позволяется же в локализациях вольный перевод? =)

    ---------- Сообщение добавлено в 13:37 ---------- Предыдущее сообщение размещено в 13:36 ----------

    Ещё возможно ли заменить значки врагов? Т. к. в кириллице выглядят чтоб очень так не очень!
     
    Val07og и Dimouse нравится это.
  5. kirik-82 DOSтойным играм достойный перевод

    kirik-82

    Переводчик

    Регистрация:
    19 дек 2007
    Сообщения:
    2.084
    очень на джокер похоже.
     
    Val07og и AndyFox нравится это.
  6. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    kirik-82, наверное, не подойдёт - Джокер там уже есть и так и называется - Joker.

    AndyFox, про Дикого Билла - это сильно, не догадался бы даже искать. А я всё думал, при чём тут Хичкок? :)
    Но тогда всё-таки "Дикая карта Хичкок", потому что у Хикока фамилия была Hickok, а в игре - Hitchcock.
     
    AndyFox нравится это.
  7. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Val07og, видимо exe файл по-другому организован чем com, поэтому не выходит по тому же методу делать смещения. Прошу совета.
     
    Val07og нравится это.
  8. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    AndyFox, там дело даже не в exe - игра, похоже, сделана на каком-то BASIC'е.
    Надо разобраться, какой там формат.
    Сами строки идут в файле со смещения A760h по ADF0h в таком виде:
    • длина 0 (1 байт);
    • длина N (1 байт), 0 (1 байт), смещение-9540h (2 байта), строка (N байт).
    Но если просто менять длины и смещения - выводится мусор. Значит, где-то они указаны ещё, где - пока не понял.
     
    A.P.$lasH и AndyFox нравится это.
  9. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    AndyFox, разобрался. :)
    Строки в этом экзешнике (со смещения 0xA760 по 0xADF0) идут в таком формате:

    Column 1 Column 2
    0 (2 байта) длина текста N
    1 (2 байта) адрес текста
    2 (N байт) текст


    Cтрока всегда начинается с чётного смещения (x0, x2, x4, x6, x8, xA, xC, xE), если после текста байт по нечётному адресу - его просто пропускаешь.

    Адрес текста = смещение текста в файле - 0x9540.
    Адрес строки = адрес текста - 4 = смещение текста в файле - 0x9540 - 4.

    В коде строки (вроде бы всегда в этой версии BASIC'а) адресуются через регистр BX ("mov BX, адрес_строки" = "0xBB адрес_строки"), поэтому чтобы найти адрес 0x142A, нужно искать строку BB 2A 14.
    Обрати внимание, байты меняются местами (и у адресов, и у длин строк)!

    Итак, чтобы заменить строку:
    1. Делаем копию файла. Она будет неизменной, и в ней будем искать в коде старые, исходные адреса строк на шаге 7.

    2. В старом файле находим нужный текст и вычисляем старый адрес строки = смещение текста в файле - 0x9540 - 4.
      Запоминаем старый адрес строки - он будет нужен на шаге 7.

    3. В новом файле в нужном месте пишем текст, оставив перед ним 4 пробела.
    4. Вычисляем новый адрес текста (самого текста, без учёта пробелов) = новое смещение текста в файле - 0x9540.
    5. В новой строке пишем новую длину текста (за 4 байта до текста) и новый адрес текста (за 2 байта до текста).
      Код:
      длина       "1) Ace"
      06 00 C4 15 31 29 20 41 63 65
            адрес
      
    6. Вычисляем новый адрес строки = новый адрес текста - 4.
      Запоминаем новый адрес строки - он будет нужен при замене в коде на шаге 8.

    7. В старом файле ищем ВСЕ (их может быть много) строки "0xBB старый_адрес_строки_из_шага_2".
    8. Только по тем смещениям, которые нашлись в старом файле, в новом файле заменяем "0xBB старый_адрес_строки_из_шага_2"
      на "0xBB новый_адрес_строки_из_шага_6".
    Результат - строки с нужной длиной:

    [​IMG] > [​IMG]

    Если объяснил непонятно - спрашивай.
    Вот образец с несколькими русскими строками: Посмотреть вложение HEART.EXE.Ru.7z .
     
    Последнее редактирование модератором: 19 июл 2015
    A.P.$lasH, AndyFox, AxXxB и 2 другим нравится это.
  10. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    AndyFox, ещё 2 важных момента:
    1. Код в файле заканчивается на 0xA760, поэтому если байты "BB ?? ??" найдутся после этого смещения, то их менять не надо.

    2. Всё-таки возможно, что байты "BB ?? ??" окажутся не командой "MOV BX, ????" (например, BB может относиться к другой, предыдущей команде).

      Поэтому, чтобы не испортить файл (и не переделывать 2 раза), на шаге 7 берём HIEW,открываем в нём старый файл, переходим в режим дизассемблирования ("F4" > "Decode"), идём на найденное смещение в файле (например, "F5" > 1B1E), клавишей "вверх" откатываемся на несколько команд назад (чтобы декодировались предыдущие команды, частью которых может быть найденное "BB"), и проверяем, что то, что нашли – действительно "mov bx, старый_адрес_строки_из_шага_2".

      [​IMG]

      Если нет - то в этом месте байты не меняем.
    Вообще, редактирование удобно делать целиком в HIEW, так как он позволяет и искать строки (F7), и проверять код, и менять байты.
     
    Последнее редактирование модератором: 19 июл 2015
    AndyFox и A.P.$lasH нравится это.
  11. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Добрый день

    Спасибо за столь подробные разъяснения но что-то пока не получается.

    Сделал
    Например для «Корол» - AB10 – 9540 – 4 = 15CA
    Для «Дикая Карта …» - AC5A – 9540 – 4 = 1716
    Сделал
    Например для «Корол» - BE84 – 9540 = 2944
    Для «Дикая Карта …» - BEB4 – 9540 = 2974
    Сделал
    Сделал
    Вот здесь загвоздка – ищу BB CA 15 или BB 16 17 и найти не могу.
    До этого ещё не дошло

    Брал за основу частично переведённый файл который я выложил в теме.
     
  12. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    AndyFox, внимательней посмотри, откуда начинаются строки.
    Если не догадаешься, где ошибся - подскажу.

    Проверяй, что строка всегда соответствует формату выше: длина(2) адрес(2) текст(длина).

    Да, и ещё ты неправильно посчитал, кстати: AB10 – 9540 – 4 = 15CC.
     
    AndyFox нравится это.
  13. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Спасибо

    По-прежнему не получается

    Я написал в конце файла строку "2)Король" ну и поставил перед ним длину (8) и адрес (2940 = BE84 - 9540 - 4)
    "2)Корол" (без ь) находится по смещению AB08 - 9540 = 15CA
    15CA - 4 = 15C8
    BB C8 16 (0x100 я так понимаю стандартное смещение) действительно находит в двух местах я его меняю на BB 40 29, сохраняю, запускаю ехешник и ничего не меняется строка по прежнему "2)Корол" (без ь)

    Что-то я туплю наверное...
     
  14. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    1) AndyFox, в этом EXE строки можно перемещать только в пределах того участка, который под них выделен - в 0xA760...0xADEF.
    (И в COM файлах, кстати, тоже надо смотреть, не используют ли они память после конца файла, прежде чем что-то туда вписывать).

    2) Дальше, если бы даже строку можно было поставить в конец файла, ты в неё вписал неправильный адрес – в "строке" (т. е. в конструкции "длина + адрес + текст") ставится адрес текста, а не строки: BE84 - 9540 = 2944.

    А вот в коде используется и меняется уже адрес строки, т. е. "текст - 4" = 2940.

    3) Как у тебя "2)Корол" оказался в AB08? Ещё раз внимательнее посмотри, по какому он смещению.
    Обещал же подсказать.

    4) Ты опять неправильно считаешь. AndyFox, не забывай, что ты меняешь исполняемый код, и такие ошибки при расчётах могут привести к сбоям в программе или даже в ОС.

    AB08 - 9540 = 15C8, а не 15CA.
    15CA - 4 = 15C6, а не 15C8.

    5)
    Согласно твоим (ошибочным - из-за этого и не получилось ничего) вычислениям, нужно было искать (и менять) строку 15С8, а ты нашёл и заменил в 2-х местах 16С8.

    Догадка насчёт смещения 0x100 неверна - это только для COM файлов (потому что они в DOS загружаются всегда по адресу 0x100).
    В данном EXE смещение = -0x9540 - как раз его ты использовал при расчётах.

    6) И из-за того, что ты заменил не ту строку (по смещению AC08 = 9540 + 16C8, которое ты искал и менял, находится 18, 0x16СС, "И ещё карты-акулы ") - из-за того, что ты поменял ссылки на совершенно другую строку, "2)Корол", разумеется, остался таким же, каким и был.
    Правильно должно было быть так.

    p. s.
     
    Последнее редактирование модератором: 19 июл 2015
    AndyFox нравится это.
  15. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Спасибо за столь подробные объяснения!

    Что-то я вот места не могу найти куда впихнуть аж 54 байта... может есть идеи?
     
    Val07og нравится это.
  16. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    AndyFox, а если попробовать выписать все английские строки подряд (включая все пробелы, чтобы сохранилась длина), и под ними подгонять перевод так, чтобы общая длина всех русских строк совпала с общей длиной английских.

    Тогда должно всё уместиться.

    Чтобы было видно, совпадает длина или нет, шрифт в редакторе должен быть с постоянной шириной букв. Такой, например, в Блокноте.

    Либо можно сохранять в 2 разных файла и смотреть, чтобы совпал их размер.
     
    AndyFox нравится это.
  17. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    Да, кстати, AndyFox, напиши, когда дойдёшь до строк с нулевой длиной (после "#########") - их не совсем как остальные менять.
    И в общем, если сомневаешься - лучше спроси.
     
    AndyFox нравится это.
  18. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    869 байт на английском и 843 байта на русском, итого 26 байт запаса.
     

    Вложения:

    • russian.txt
      Размер файла:
      843 байт
      Просмотров:
      561
    • english.txt
      Размер файла:
      869 байт
      Просмотров:
      524
  19. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    Прошло больше года, кто сумеет подсказать с последними штрихами к успешному окончанию перевода?
     
  20. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    3.670
    @Val07og, сожалею что покинул данный форум и теперь некому помочь завершить готовый почти полностью перевод...
     
  21. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    112.437
    @AndyFox, возможно, товарищ @beha_r сможет помочь, если ты чётко сформулируешь, что осталось сделать.
     
    AndyFox нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление