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

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

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

IDA Pro, Watcom C, DOS4GW. Воссоздание исходного кода игры

Тема в разделе "Мастерская", создана пользователем Gradius, 15 июл 2021.

  1. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Добрый день!

    Необходимо воссоздать(рекомпилировать) исходный текст одной DOS-игры с целью переноса её на другие платформы.

    Инструменты: IDA Pro 7.5 (китайская), тулчейн Watcom C 10.0, эмулятор DOSBox. Всё это в Win7.

    При открытии exe-файла игры, IDA определяет его как LE-executable, FLIRT детектит стандартную сишную либу "Watcom 9.5".

    Проблема: отладочная информация (она ли?) в конце exe-шника игры не видится IDA-ой.

    Пробовал использовать wdump, получил описание переменных и функций в программе и их адреса.

    Написал свой парсер для IDA и успешно загрузил имена переменных-функций в IDA. Но этого оказалось мало.
    Необходимо больше - параметры функций, их тип, размер.

    Мне не удалось идентифицировать тип-формат отладочной инфы.
    Выкусил её с помощью wstrip.

    Прилагаю её в сообщение.

    Прошу помочь идентифицировать данный файлик - чья эта отладочная информация?

    Можно ли заставить ИДУ как-то её загрузить и применить?

    Создал проект в Watcom 10.0 и ставил три типа генерации отладочной инфы - Default, DWARF и Codeview.
    При бинарном просмотре все три типа отличаются внешне от типа инфы как в игре.

     

    Вложения:

    • info.zip
      Размер файла:
      67,9 КБ
      Просмотров:
      35
    WERTA, dSidr и AndyFox нравится это.
  2.  
  3. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.626
    Последнее редактирование: 16 июл 2021
  4. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Первый не понимает LE, а второй не тянет защищённый режим и чисто 16-битный
     
  5. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.626
  6. 8street

    8street

    Регистрация:
    30 май 2021
    Сообщения:
    14
    @Gradius, привет. Я тут примерно этим же занимался в соседней теме. Мне удалось открыть досовский экзешник, который как раз написан на С++ с компилятором watcom, с dos4gw. Псевдокод работает и удалось даже перекомпилировать ассемблерные команды обратно в экзешник. Все имена функции пришлось ручками править и догадываться, что они делают.

    По поводу файла, очень похоже на .lib расширение. Типа как kernel32.lib, только для кастомной длл-ки или экзешника. Вряд ли IDA понимает это. С помощью этого можно скомпилировать другую программу, с экспортом функции из кастомной длл-ки или экзешника.
     
    MrFlibble и Gradius нравится это.
  7. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Рад поделиться хорошими новостями!
    После нескольких недель мозгового штурма в жаре - я получил исходный текст игры на Си, которую хотел!

    Тема-дневник: Дизассемблер IDA Pro 7.5 для восстановления исходного кода игры (C/C++) (7 стр) / Программирование / Форум / Флейм / GameDev.ru — Разработка игр

    Там расписан весь мой путь, как инженера-реверсёра. Вначале было много неудачных попыток, которые заводили в тупик. Сейчас я создал свою стратегию реверса 32-битных DOS DPMI-приложений.

    По игре. Осталось прикрутить музыку и звуки.
    Музыка будет через эмулятор OPL/Adlib.
    Звуки - через оцифровку.
     
    bvedargh, AxXxB и Dimouse нравится это.
  8. 8street

    8street

    Регистрация:
    30 май 2021
    Сообщения:
    14
    @Gradius, Все не только ради эмулятора GameBoy затевалось ведь, какие игры планируется портировать?
     
  9. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Вы поверхностно читаете.
    Эмулятор был раньше в качестве разогрева.

    Реверсю игру, на которую нет исходников.
     
  10. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.563
    Ммм, интрига! Обожаю такие проекты, но за отсутствием технических знаний ничем практическим подсобить не могу. В любом случае, удачи! Примеры успешно разреверсенных игр уже есть, так что всё получится!
     
    Gradius нравится это.
  11. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    @Gradius, почитал наискосок дневники, так и не понял, что за игра.
    Понял только что-то досовское 3д. Это случаем не секрет?

    Зачем именно через эмулятор? Не знаю, до какой степени он кросс-платформенный, но на неискушенный взгляд кажется, навеняка можно найти что-то более универсальное. Как со звуками, например.
    Но вообще сложно что-то обсуждать, не до конца понимая о чем речь.
     
    Gradius нравится это.
  12. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Всем спасибо за внимание!!!

    Завершил работу над проектом реверса игры.

    agamedev.ru_files_images_156583_1628586702_s4.png agamedev.ru_files_images_s4_result.png agamedev.ru_files_images_s5_result.png


    Сделал порт под Web. Поиграть в игру в браузере: tube by clobberasm

    Выложил исходный код игры на GitHub: GitHub - rep-stosw/tube-game-dos: My first reverse engineering game

    Там же и готовые сборки для Windows/Linux.

    Управление(сохранено с оригиналом):


    • 1,2 - Player Select
    • Esc - Exit
    • Q - Forward / Accelerate
    • A - Backward / Reverse
    • O - Left
    • P - Right
    • Spacebar - Shoot
    • Enter - Bomb

    Видео с моим геймплеем:

     
    AndyFox, Pyhesty, AxXxB и 9 другим нравится это.
  13. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    @Gradius, круть :good:
    Это тренировка перед чем-то большим? Какие планы на будущее?
    --- добавлено 10 авг 2021, предыдущее сообщение размещено: 10 авг 2021 ---
    @Gradius, как минимум в веб-версии в звуке присутствуют артефакты в виде непрерывного треска, которого судя по ролику на сайте (и твоему тоже) быть не должно.
     
    AndyFox, Gradius и MrFlibble нравится это.
  14. ZaRR

    ZaRR

    Регистрация:
    18 ноя 2015
    Сообщения:
    1.626
    @Gradius, Вот уж не думал что именно она! Респект! Я один раз как-то баловался с ней и испоганил текстуры или что-то такое.
    А другие портанёшь под веб? Могу предложить всякие мелкие размером! :)
    CJ's Elephant Antics (1993, DOS)
    Joust (1983, DOS)
    Ice Kiss (1997, DOS)
     
    Последнее редактирование: 10 авг 2021
    Gradius и MrFlibble нравится это.
  15. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.563
    @Gradius, поздравляю! Достижение нешуточное!
     
    AndyFox, Gradius и ZaRR нравится это.
  16. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Браузер? ОС?

    Было гудение в браузерах Google Chrome. Избавился от него, переделав вывод звука.

    Вёб-версия - это побочка. Слишком низкий уровень привилегий, нет гарантий что вызов аудио будет идти точно и в срок.

    Видеоролик записывался с Windows-версии игры.

    Перезалил игру на itch.io и обновил исходники.

    Скачать готовую игры для Windows и Linux можно с репозитория: tube-game-dos/TubePCWEB/bin at main · rep-stosw/tube-game-dos
    Всё содержимое папки "bin" будет достаточно.

    В ближайшее время - портировать эту игру на свои игровые консоли.

    Мне нравится игра "Tube", я много лет ждал, пока не выложат на неё исходники, чтобы её портировать. Но потом мне надоело ждать, и я решил сам попробовать заняться декомпиляцией.

    После как ознакомился с проектом "Raptor", я заразился идеей реверса: Раптор вернулся! Ура!!! :) / Железо / Форум / Флейм / GameDev.ru — Разработка игр

    Проглядел эти игры. Не зацепили.
     
    AndyFox, MrFlibble, dSidr и ещё 1-му нравится это.
  17. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    А повышение разрешения не планируется?
     
  18. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    Да в хроме под виндой.
    В убунте с файрфоксом все нормально.
    --- добавлено 11 авг 2021, предыдущее сообщение размещено: 11 авг 2021 ---
    @Gradius, глянул ради интереса исходники, там конечно сплошь магические числа и переменные v1, v2, v3, но местами вполне читаемо. Ты сам расковырял или удалось воспльзоваться какой-то отладочной информацией?
    В любом случае объем проделанной работы впечатляет:good:
    Ну и наличие инструментов, позволяющих преобразовать ассемблер во что-то более высокоуровневое тоже, немножко. Мнеб такое когда выковыривал алгоритмы из спектрумовских игр :)
     
  19. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Нет. Это чисто реверс - получение максимально точной работы игры. К тому же, в игре текстуры низкого разрешения. Понадобится художник.

    Это выхлоп Hex-rays с IDA, приправленный моими скриптами, которые дали имена функциям и некоторым глобальным переменным. В самом первом посте здесь я приложил файлик с отладочной информацией. IDA отказался понимать эту информацию, пришлось курить ваткомовские утилиты - снял весь перечень имён функций и переменных. И относительные адреса где они лежат и в каких сегментах. Потом написал свой парсер, который создал скрипт для IDA и вставил эти имена по нужным адресам. Реальные физические адреса сегментов , где они были в памяти вычислил инжектором.

    Всё есть в этой теме, нет смысла дублировать десятки страниц: Дизассемблер IDA Pro 7.5 для восстановления исходного кода игры (C/C++) / Программирование / Форум / Флейм / GameDev.ru — Разработка игр

    По большому счёту мне безразлична читаемость кода, достаточно только названий основных функций и переменных. Главное, чтобы компиляторы собирали этот код на другие платформы.

    Конечно, информация о структурах и локальных переменных будет потеряна! Её нет! Это ассемблер. Тут только ячейки данных и никаких абстракций в привычном для человека виде!
     
    MrFlibble и dSidr нравится это.
  20. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    Наверное разрешение текстур можно повысить какими-нибудь умными фильтрами. Реалистично не будет, но приятно для глаз, скорее всего.
    Тут тогда бы еще звуки проапгрейдить и музыку, а то какое-то шипение сплошное.
    Но если цель - максимальное соответствие оригиналу, то может быть это и не нужно.
    Иногда алгоритмы важнее результата :)
     
  21. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Единственно, в чём с вами согласен, что на больших разрешениях (>2x) смотрится не айс. Была идея поставить SaI2x фильтр, но потом передумал. Доминирует желание пользоваться исходной версией игры.

    Изображение игры отлично смотрится именно в масштабе 1:1. Вот на экране такой консоли отлично выглядит:

    bpp.jpg


    Ну ещё вторая консоль для телека - там фильтр получится автоматически:

    cube.png
     
    AndyFox нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление