1. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

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

[песочница] I Have no Mouth, and I Must Scream

Тема в разделе "Переводы своими руками", создана пользователем jack7277, 20 май 2013.

  1. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    картинка

    Шрифт от 21h до FFh, игра использует dos4gw. Текст титров лежит в файле SCRIPTS.RES в открытом виде, проблема - найти и перерисовать шрифт. Текст в файле заканчивается нулем, длина строки фиксирована. Где квадратики, 33 шт, размер 11x16. Остальные размеры плавают.
    Использую CD версию с этого сайта.
    I Have No Mouth, and I Must Scream (1995, DOS)

    ---------- сообщение от kirik-82
    открыт проект перевода на нотабеноиде.

    Комикс
    I-Have-No-Mouth-and-I-Must-Scream.rar
    Художник John Byrne
    Обложка Michael Whelan
     

    Вложения:

    Последнее редактирование модератором: 8 июн 2013
    OldGoodDog, Ygol, Турбо и 6 другим нравится это.
  2.  
  3. kirik-82 DOSтойным играм достойный перевод

    kirik-82

    Переводчик

    Регистрация:
    19 дек 2007
    Сообщения:
    1.997
    неожиданно.
    а с переводом текстов проблем нет?
     
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    kirik-82, перевод текста - это просто какой-то объем работы. Вынуть его и вставить назад - не проблема.
    А вот найти шрифт для меня проблема.
     
    compart нравится это.
  5. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.194
    Правильно ли понимаю, что при таком подходе текст "axe\0cow\0" будет переведён как "тпр\0крв\0" соответственно?
     
  6. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    iunnamed, пока что эксперименты со сдвигом строк окончились плачевно, поэтому да, размер строк фиксированный. И "axe\0cow\0" можно перевести только как "тпр\0крв\0".

    Нашел в scream.res кучу изображений из игры, а шрифт с ходу не нашел. И даже пока не знаю как его искать.
    Игра использует dos4gw расширитель и idados с ним пока не работает, а классические методы из dosbox debugger и ida+vmware пока что не получаются. Хотел потренироваться с переводом, думал игра легкая, текст в открытом виде. Ага.
     
    Последнее редактирование: 20 май 2013
  7. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.194
    Может быть тогда вместо того чтобы гнать коней и хвататься за шрифт стоит сначала разобраться с текстом?

    Во-первых, res-файлы представляют из себя псевдоархивы:
    Во-вторых, после распаковки тексты тоже представляют из себя некий псевдоархив:
    К тому же там есть ещё один формат, где идут большие куски данных перед строками-названиями.

    Наконец, текст есть не только в файле "SCRIPTS.RES", хотя там его и больше всего.

    Как это часто бывает, то что текст виден невооружённым глазом совсем не значит, что его можно вот так просто взять и перевести.
     
    ThisSuXX, Newbilius, compart и 2 другим нравится это.
  8. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    iunnamed, Если проводились какие-то эксперименты с ресурсами игры (я на форуме и в гугле не нашел), выложи тогда их.

    Вот эти данные я не вижу:
    А вот дальше вижу, но структура немного не так:
    Вот я сделал пометки на картинке:
    hex scripts.res

    PS:
    Хотя цепочка пока такая:
    в 4 байте от начала файла скриптов написан адрес 981Ch, по адресу [981Ch] находится указатель 9A58h, а по адресу [9A58h] видна строка Dummy с нулем на конце. Все смещения от 0, начала файла scripts.res
    В самом начале идут 2 DWORD - это (размер блока*4) и смещение блока.
    Видимо в старых играх у каждого программиста было своим долгом написать псевдо-файловую-систему.
    Что такое ХХХХ пока хз.

    В теорию укладываются начальные 8 байт:
    8F000000h (143) 1C980000

    но следующие уже нет
    00005B93h (2 472 214 528) 1A00001Ch (469 762 074), при размере файла 493 597 байт.

    Появилась идея, поглядеть Process Monitor процесс dosbox.exe, он открывает и читает файлы ресурсов при запуске игры. Поглядеть какие блоки и какие смещения читаются. Затем начать портить данные и найти шрифт.
    У меня пока заморочка - где-же шрифт.
     
    Последнее редактирование: 21 май 2013
    Dimouse и compart нравится это.
  9. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Пытаюсь прикинуть размер блока со шрифтом, чтобы всю простыню чтений файлов не проверять. Видимых символов 222. Если прикинуть их размер где-то 10х15, то получаем грубо по 150 байт на шрифт, если они никак не сжаты и не спрятаны, получается нужно 150*222 = 33300 байт, в общем 30-40 килобайт.


    чтение файлов
     
    Последнее редактирование: 22 май 2013
  10. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.194
  11. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    iunnamed, скрипт отличный, но где шрифты все еще непонятно.
    Про объем шрифтов я похоже неверно думаю.

    Игра при запуске вызывает int 10h 3 раза, с условием ah=11h:
    1) int 10h, ah=11h, al=30h, bh=03 - это получение справочной информации о шрифтах. Функция получает адрес области памяти, содержащей описание символов для шрифтов разного размера.
    bh=3 - адрес шрифта 8х8

    2) bh=02, адрес шрифта 8х14
    3) bh=06, адрес шрифта 8х16

    Что дальше делать непонятно. Или не туда копаю, хз.

    А еще пока непонятно как добраться до 32 битного кода. В ida грузится только 16 битный код, который подготавливает переход. Затем ему передается управление. Знаний мало как сделать трассировку хз.
    В досбокс пробовал 10 команд log 100000 но до показа экрана главного не добрался и это после миллиона команд. Ох ох ох.
     
    Последнее редактирование: 22 май 2013
  12. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.194
    Гугл подсказывает, что игру поддерживает ScummVM - см. исходные коды, папка /SAGA/ - алгоритмы декодирования изображений и шрифтов на C++.
     
  13. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Никаких новых светлых идей не пришло в голову, поэтому просто сделал камменты к скрипту в виде одной картинки, для меня так сразу всё встало на свои места. Но это всё не то.
    А сишный код свободно читать из исходников scummvm мне слабо.

    94956447a92b422c105d787287fa05ce.png
     
  14. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Заполнение сначала рандом, потом 2Fh.
    Смещение в scream.res - 5FFCh начало графики, где-то должны быть указаны размеры шрифта, они все разной ширины.
    Каждый байт - это одна строка всех символов. Высота 16 пикселей.

    5FFCh - это байт первой строки восклицательного знака " ! " (первый символ в таблице после пробела)
    610Ah - это байт второй строки восклицательного знака " ! "

    Разница 270 байт ? хм, разница байт не постоянна, ширина каждого символа, кажется, хранится по адресу 5D1Dh.
    Попробую подтянуть SteelRat с его утилитой UTT, так как он автор, то я надеюсь, что на основе приведенных данных он быстро напишет редактор шрифтов.

    c61ecd0ad7aa70037cc7b9c8ac7b91a0.png

    В картинках более понятно как искал шрифт в игре, долго тупил был режим 8 бит, а шрифты старые обычно 1 бит, тут почему-то 2 бита.

    a4a8a4b5328d81cce97ca738561dd784.png
     
    Последнее редактирование: 25 май 2013
  15. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.263
    Не могу сейчас, к сожалению. Работаю.
     
  16. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Тогда буду свой велосипед писать на делфи.

    Что нужно.
    1. Отредактировать шрифт, английские буквы думаю не трогать, в таблице куча умляутов их должно хватить. Нужен или готовый какой-нибудь софт или самому.
    2. Вынуть весь текст со смещениями, попробовать поиграть длиной строки с корректировкой смещений. Если все удачно то выложить на нотабеноид. Народ поможет перевести.
    3. Вставить текст назад.

    Может кто из бывалых с опытом подтянется тогда веселее пойдет.
     
    Последнее редактирование: 24 май 2013
    compart и Steel Rat нравится это.
  17. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Steel Rat, по utt документация есть ? Там много писать надо? Проблема пока в том, что некоторые буквы 1 байт шириной, а некоторые 2 байта. Получается шрифт от 2x16 или даже 18 в высоту, а ширина от 2х пикселей до 15 пикс.
    Короче странный плавающий шрифт.
     
  18. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.263
    Нет, но есть примеры. Наиболее полный пример - модуль для xcom.
    Нет.
    Если действительно нигде нет структуры с параметрами сиволов, то скриптовый редактор будет идеальным вариантом.
    Главная проблема в том, что UTT ещё сыр, а не торт.
     
  19. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Структура шрифта (почему-то у второй игры подряд опять заморочки со структурой ресурсов, я снова ненавижу разработчиков):
    Шрифт высотой 18 строк, ширина указана в таблице с 5D1Dh.

    5FFCh +
    0 байт - первая строка, 1 байт
    270 байт - вторая строка, 1 байт
    0+270+270 - третья строка, 1 байт
    ...
    0+270*17 - 18 строка, 1 байт

    Если ширина >8, тогда следующая группа будет вторая половина шрифта, причем значимыми битами будут старшие (длина-8) бит. Хотя, всё равно второй байт занят весь и значимых нет, просто второй байт.
    1 байт - первая строка правой половины шрифта, 1 байт
    270+1 - вторая строка етс
    ...
    1+270*17 - 18 строка

    Шрифт перечислен с кодов 21h до FFh.
    Смещение в scream.res 5D1Dh, начиная с ! (21h код) таблица из первого поста, перечислены ширины шрифта.

    Сперва надо вывести нормально каждую букву, потом думать о редакторе или типа.
     
    Последнее редактирование: 25 май 2013
  20. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.263
    За что?
     
  21. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.007
    Steel Rat, Сделали закрытый черный ящик, разработчики уже все разбежались, игры эти никому особо не нужны.
    Нельзя сделать редактор карт, нельзя сделать без геморроя перевод. Да практически ничего нельзя сделать.
    И исходники не выложили, как собаки на сене.
    Вот за это всё вместе.
    Для них это был проект, зарплата, а для меня это лучшие воспоминания детства.
     
    compart нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление