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. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Ну, это как раз необязательно, Doom до сих пор растягивают до современных разрешений, и смотрится неплохо.
     
    MrFlibble нравится это.
  2. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    @MisterGrim, на гитхабе к исходникам прицеплен текст gpl2.0 :whistling:
     
  3. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.563
    Надеюсь, не совсем не в тему будет упомянуть проект пользователя gabonator, который разрабатывает набор инструментов для автоматизации обратного анализа игр для DOS, но у него в основном программы в реальном режиме:
    GitHub - gabonator/Projects: Finished projects
     
    dSidr и Dimouse нравится это.
  4. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Я понимаю, о чём речь, сделай сам)
    Но я лишь задал вопрос.
     
  5. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    Я всего лишь хотел аккуратно прозондировать серьезность твоих намерений
    Мало ли, вдруг попутно получится перевести это дело на dx9 хотя бы :)

    Но тут вроде можно понять, человек хочет чтобы все было аутентично. Ну или может быть я могу такое понять, хотя я в общем случае сторонник прогресса.
     
  6. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.563
    Насколько могу судить, графика в игре сделана с расчётом на коррекцию изображения до пропорций 4:3, поэтому в теории было бы неплохо отрисовывать экран в разрешении 640x480 с растягиванием по вертикали, как в авторском порте Cylindrix или Crispy Doom.
     
    Gradius нравится это.
  7. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Игра получила жизнь на новой платформе ARM (плата LeecheePi Zero, Allwinner CPU V3s), а новая платформа - обзавелась новой игрой :lol:

    Были проблемы при портировании, которые разрешились. Подробно здесь:

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



    Есть такая игра под ДОС: Hi-Octane. Её внутренний рендерер заточен под 640x480. Но отрисовывает она в кадр 320x200 или в 640x480. Если в Tube сделано аналогично, то будет 640x400.

    Hi-Octane (1995, DOS)

    Если же нет, то оставлю как есть. У меня нет времени реализовывать чужие хотелки. И у всех здесь, наверное, тоже. Правда?:yes:
     
    MrFlibble и ZaRR нравится это.
  8. dSidr

    dSidr

    Регистрация:
    21 май 2009
    Сообщения:
    1.072
    Насколько я понял, он имеет ввиду, что пиксели на выходе имеют не квадратную форму. Что видно и по форме сечения трубы.
    Но корректировать только это, изменив разрешение на 5 копеек наверное бессмысленно.
     
  9. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    1. Почитал про Vanilla Doom. Там рендерер 320x200. Для растягивания применяется обычный фильтр. Я так тоже умею. Но мыло делать не стану.

    2. Провёл ревизию рендерера Tube. Чудес, увы, там нет. Рендерер намертво прошит в разрешении 320x200. Особенно это касается спрайтов - они не растягиваются. Удалось только увеличить сами 3D-объекты (кораблик, противники, айтемы). Туннель остаётся таким же.

    Сделал порт на вторую свою приставку, на базе DSP TMS320C6745. Пришлось повозиться, так как этот процессор не поддерживает прозрачный доступ к невыровненным данным. Только через спец-инструкции. Пришлось писать свой класс-обёртку и перегружать операторы для корректирования операций с невыровненными данными.

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

    Видео с полным прохождением игры на TMS320C6745 + в конце снято ограничение на FPS игры (в оригинале игры искуственно введено ограничение на 17 FPS).



    Начиная с 12:57 заснял ход игры на 60 FPS (снято ограничение искуственной задержки):



    Итого, программа компилируется и выдаёт рабочий код уже в 6 средах:

    1. Open Watcom C 1.9 (DOS+DPMI)
    2. MinGW (Win32)
    3. GCC (Linux x86)
    4. Emscripten (Web, wasm)
    5. ARM GCC (Cortex-A7, ARM) - высокие требования к строгому алиасингу, требования к выравниванию данных - опционально
    6. TI C6000+ (TMS320C6745) - высокие требования к строгому алиасингу и выравниванию данных

    Позже залью обновлённые сорцы - с пофикшенным алиасингом и корректному доступу к невыровненным данным. Нужно ещё одну идею попробовать сделать...
     
    Dimouse и dSidr нравится это.
  10. Gradius

    Gradius

    Регистрация:
    15 июл 2019
    Сообщения:
    46
    Перезалил: GitHub - rep-stosw/tube-game-dos: My first reverse engineering game

    Работу над проектом завершил.
    Всё, что хотел - получил.
     
    Dimouse нравится это.
  11. Gradius

    Gradius

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

    Проект получил название "Tube64" и является отдельным ответвлением от основной 32-битной версии.

    logo.png

    Сделал второй репозиторий для 64-битной версии игры Tube: GitHub - rep-stosw/tube64: 64-bit vesion of DOS game Tube (Bullfrog, 1994)


    Собранные билды для Windows и Linux лежат в этой папке:

    tube64/Tube64/bin at main · rep-stosw/tube64

    В основе адаптации кода для 64 бит, лежит концепция "коротких" указателей (Short Pointers, Broken Pointers, 32-bit Pointers, e t.c.).

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

    И здесь: Short pointers в C++ на архитектуре 64-bit. Покритикуйте идею! / Общее / Форум / Программирование игр / GameDev.ru — Разработка игр
     
    MrFlibble и ZaRR нравится это.
  12. Чёрный Думер и все виды материала

    Чёрный Думер

    Регистрация:
    17 мар 2010
    Сообщения:
    2.434
    О, а если не секрет, где Вы Watcom 10.0 сумели откопать?
    Нам просто тоже нужен, но именно 10.0, которая НЕ так называемая "Limited Edition" и НЕ из серии 10.0x (как 10.0a / 10.0b).
    Цель у нас тоже похожая - восстанавливаем исходники старого DOS'ового Doom 2D с точностью компиляции байт-в-байт. :)
     
    MrFlibble нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление