Поклонникам Mastre of Orion 2 (MoO2)

Тема в разделе "WASM.PROJECTS", создана пользователем Grig de Griz, 18 янв 2007.

  1. Grig de Griz

    Grig de Griz New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2005
    Сообщения:
    15
    Так уж получилось, что в свое время я занялся локализацией этой серии. Сделал несколько лет назад локализацию MoO3, сейчас (перед новым годом) закончил MoO2.
    Проблема в том, что адаптацию программы к русскому языку изначально делал только для DOS версии MoO2, но сейчас, по, не сильно понятным мне, требования пользователей, делаю и Windows версию. С последней я завяз, может быть, кто-нибудь поможет из дзенствующих.

    Краткое описание задачи:
    Поддержка русской таблицы символов. Проблема с этим делом была вполне стандартной, отфильтровывались символы старше 0x80, некоторые символы старше 0x80 использовались в составных фразах а-ля “Value= %s”, и так еще по мелочи. Сложнее было разобрать формат ресурсов.

    Характеристики:
    MoO2 был написан на С. DOS версия компилировалась под WATCOM C++, Windows версия компилировалась под MS Visual C++ 2.0. Обе программы отличаются только в местах стыка с периферией (клавиатура, мышь и т.п.) и видео картой (VESA и DirectX). Что немаловажно, в DOS версии оставлено debug_info, т.е. можно спокойно получить названия функций и части переменных программы, что я, собственно, и сделал.

    Ближе к делу:
    Для DOS версии я проблему решил. Поковырялся с IDA, хотя сильно код не правил, но интересующие меня места нашел, затем поправил нужное прямо в hex-се. Как бы все работает, большинству народа нравится (см. тут http://www.mo3.fatal.ru/moo2tfiles.htm).
    Для Windows версии попытался повторить тоже самое, однако не вышло. debug_info, там, конечно, нет, но поскольку сишный код был большей частью идентичный, то названия функций удалось восстановить (хотя и сложнее – сравнением asm-листингов от версий DOS и Windows).
    Коррекции, проведенные мной для DOS версии, я включил, но этого оказалось мало – результат нулевой. Есть кое-какие идеи, но большей частью все, что пришло в голову проверил, т.е. в чем там проблема – хз, свои идеи иссекают, так что обращаюсь к всемогущему All.

    Данные:
    На текущий момент создано два IDA проекта (под каждую версию). Частично восстановлены имена функций и переменных (по изучаемым направлениям). Есть программка, которая читает debug_info для DOS версии и выдает названия функций и переменных по заданному сегменту и смещению.
    Код в IDA не причесывался, т.к. создавать компилируемые сорцы я не стремился – кое-что поправлено, что мешало, но в основном все «как есть» по умолчанию.


    Кто заинтересуется пишите – здесь или на моем форуме в ветке по MoO2 – поделюсь всем что имею с более подробными комментариями.