viiri

Пользователи+
  • Количество публикаций

    55
  • Зарегистрирован

  • Посещение


Репутация

0 Обычный

О viiri

  • Звание
    Писака

Информация

  • Пол Мужчина

Активность viiri

  1. viiri добавил сообщение в теме Новые материалы   

    В смысле не купить, а в смысле того, что автор в принципе заблокировал возможность запуска после первого мая непонятно какого года. В комментариях к видео и в README он пишет, что так-как с авторскими правами не всё понятно он сделал демку первого уровня игры ограниченную по времени запуска. Как-то так. То что загружено новое на самом деле такое же как я проверял.
    • 0
  2. viiri добавил сообщение в теме Reverse Engineering   

    Наработки на базе движка love2d. Исходник:
    https://cloud.mail.ru/public/5dc6c552afe8/dave.love
    Бинарник под винды:
    https://cloud.mail.ru/public/5261c3245580/dave.zip
     
    Реализован список объектов, список состояний и частично логика зомби и игрока.
    Стрелки влево-вправо - задание направления игроку, "d" - вывод отладки. Игрок при столковении со стеной медитирует в пассивном состоянии.
    • 0
  3. viiri добавил сообщение в теме Новые материалы   

    1. Проверил Дейва на Андроид. Программа из первого архива работает, runner.zip не нужен. Программа из второго архива при запуске сообщает, что период использования истёк.
    Кстати, это не порт игры, а убогое подражание сделанное в Gamemaker.
    3. Это конвертер уровней из формата движка Keen Dreams в формат понятный редактору TED5, написан на бейсике. Запускаешь RUNTED.BAT
     и он сам делает нужную работу (В README.TXT всё довольно подробно описано). К 3, 4 Дейву имеет прямое отношение ибо движок у них как раз Keen Dreams Engine.
    • 0
  4. viiri добавил сообщение в теме Reverse Engineering   

    Тут практически полностью дизассемблированный Дейв (АХТУНГ! ТАМ МОГУТ БЫТЬ ОШИБКИ И НЕТОЧНОСТИ!):
    https://cloud.mail.ru/public/0de8da509951/davedis.zip
    Тут исполнимый файл с начальными наработками воссоздания Дейва на базе исходников Hovertank 3D (Две заставки + обработка горячих клавиш, исходники чуть позже добавлю):
    https://cloud.mail.ru/public/896bfc73bf8e/hovdd2.zip
     
    • 0
  5. viiri добавил сообщение в теме Reverse Engineering   

    Нашёл интересное отличие в структуре спрайта от других игр серии:
    word width word height word offset word location word cliprectX1 word cliprectY1 word cliprectX2 word cliprectY2 word name[5] word planesize word xoff word off Имя спрайта по идее должно быть 12 байт, но в игре последние два байта имени при загрузке спрайта в памяти перезаписываются размером плана.
    • 0
  6. viiri добавил сообщение в теме Reverse Engineering   


    Идентичные, да не совсем! Мы же не воровали чужие исходники! Мы пишем свои функции, которые по-своему реализуют похожее поведение. Реверсинг хоть и немного скользкая тема, но кто докажет, что мы не измеряли линейкой и секундомером события происходящие в игре?
     

    В моих наработках есть небольшие расхождения по этой структуре. Попозже соберу различия и покажу.
    Нет. Всё точно так же. Сам ошибся.
     

    Ага, нашёл. Спасибо! 
     

    У меня названия немного другие и ещё перепутаны были пары velX, velY и deltaX, deltaY
     

    Связаться бы и обменяться материалами. Демку можно попробовать на love2d сделать, у меня уже есть наброски. Delphi не кросплатформенное решение, не хочется ограничиваться поддержкой только одной платформы.
    • 0
  7. viiri добавил сообщение в теме Reverse Engineering   

    Не всё так просто, к сожалению, и в первую очередь проблемы начнутся с юридической точки зрения. Если мы пишем движок, то обладаем полными правами на код, потому что этот код полностью придуман из головы, а если что-то было взято за основу, то всё взято из проектов с открытыми лицензиями. В общем всё законно, а вот с ресурсами уже такое не пройдёт. Как только мы сделали bmp и wav, да ещё начали распространять, да ещё и не дай бог за денежку - всё, полчища юристов бьют копытами под нашими окнами. В общем для того, чтобы всё было законно движок придётся распространять как неофициальное дополнение требующее для работы легально приобретнееной оригинальной игры.
    Технически все эти преобразования можно делать на лету, в памяти и всё будет законно. Как я уже говорил ранее, мне интересно воссоздать оригинальную игру как можно ближе к оригиналу, но это не значит, что я против расширяемости и добавления в движок возможности загрузки внешних ресурсов.
    Поэтому все эмуляторы нужны для более точного соответствия оригиналу, вдруг мне не нравится эмуляция динамика Досбоксом?
    Эмуляторы выглядят очень просто, это код которого нет в оригинальной игре, но который реализует внутреннее устройство того железа на котором игра работала.
     
    Этот вопрос, как ни странно, очень тесно связан с эмуляцией динамика. В IBM-совместимых компьютерах в качестве системного таймера использовалась микросхема Intel 8253. Обслуживала она три независимых счётчика, первый, точнее нулевой - это системный таймер, а третий (второй) управлял динамиком.
    Этот таймер реализован мной в эмуляторе динамика. Про систему Windows сказать не смогу - она мне не интересна.
    Я пишу порт с использованием библиотеки SDL (под Windows она тоже есть) и в ней работа со звуком реализована именно в отдельном потоке. Звуковая подсистема SDL подразумевает, что программист объявляет некую функцию обратного вызова, которая заполняет буффер предназначенный для звуковой карты и которую SDL дёргает каждый раз при исчерпании буффера. Так как частоты таймера, значение делителя и частота дискретизации мне известна, я могу пересчитать частоту таймера в количество отсчётов звуковой карты, по истечении которых мне нужно обновить системный таймер. Как-то так.
    Охрененть!!!!! Все 90 байт структуры!!!! КАК???? Я на некоторых из них мозг свернул!!!!
     
    У меня вопросы по копии хитбоксов, зачем она? И координаты хитбоксов, есть координаты пиксельные, есть округлённые до тайлов, собственно зачем вторые?
    И интересуют поля 42 H_step и 44 V_step - что они из себя представляют?
     
    ЗЫ: Расскажи про свои планы по игре? Хочешь сделать клон, но с оригинальной механикой?
    • 0
  8. viiri добавил сообщение в теме Reverse Engineering   

    Примерно как-то так и хочу. Только не C++, а C, потому что оригинал написан именно на нём. Библиотеки не совсем на ассемблере, даже скорее наоборот, ассемблера в них не так много, а взять их в готовом виде я предлагаю из Hovertank 3D - там есть всё что нужно. Если делать порт, то очень много граблей будет именно с низкоуровневой частью. Я сейчас пишу эмулятор встроенного динамика, даже не знаю что хуже, динамик или EGA-адаптер. Игровую логику же придётся раскручивать в любом случае и она нужна и для воссоздания и для порта, поэтому хотелось бы сосредоточиться именно на ней. У меня сейчас возникли вопросы по структуре объекта. Есть непонятные поля. Если есть наработки по этой теме хотелось бы обсудить.
     
    ЗЫ: Если очень хочешь делать сразу порт, то предлагаю взять за основу проект omnispeak, там проделано очень много работы, но движок, используемый в Commander Keen 4-6 уже сильно ближе к Wolfenstein 3D и придётся многое адаптировать, в частности тот же встроенный динамик обрабатывается там несколько иначе, чем в DD2.
    • 0
  9. viiri добавил сообщение в теме Reverse Engineering   

     
    Всё проще. Если делать порт, то многое предстоит писать с нуля. Если делать воссоздание оригинала, то можно не отвлекаясь на низкоуровневую мишуру заниматься именно игровой логикой. После того как белых пятен не станет, можно будет заняться портированием низкоуровневых библиотек уже ничего не меняя в коде непосредственно игры. Мне хочется сделать не просто похожую игру, а точности до багов восстановить существующую. Если нет желания заморачиваться с ДОСом, то я уже портировал часть библиотечных функций, остальное могу доделать походу. Очень много мороки с эмуляцией EGA-адаптера.
    • 0
  10. viiri добавил сообщение в теме Reverse Engineering   

     
     Именно! И похоже эта структура появилась впервые именно в Дейве.
     
     
    Пользуюсь IDA, Hiew и BorlandC++ 3.1 в виртуальной машине. Кроме реверсинга так же исследую код игры Hovertank 3D - в нём много общего с Дейвом, частично портировал библиотеку idlibc и менеджер памяти из исходников Hovertank 3D. На данный момент портирование отложил до лучших времён, пытаюсь воссоздать исходник оригинального досового исполнимого файла, используя исходники Кармака. Можно связаться через скайп и договориться о подробностях.
    • 0
  11. viiri добавил сообщение в теме Dangerous Dave (Опасный Дэйв) (1,2,3,4). Всё об игре.   

    Нарыл интересную структуру в исполнимом файле:
    word sprleft word sprright word mode word delay word xoff word yoff word *thinkfunc word *colfunc word *drawfunc word *next Структура, вернее связные списки таких структур находятся по смещению 27A90, сразу за таблицей тайлов дверей, найденной Crazy Daver.
    Этот список представляет собой все состояния всех объектов и содержит указатели на функции обеспечивающие смену состояний.
    В общем этот список имеет прямое отношение к игровой логике. Если кому инетерсно, то с ним можно делать разное, например неисчезающий дым из ствола при стрельбе вверх делается заменой нулевого байта по адресу 27D37 на байт 0xA.
     
    В данный момент мною разобраны практически все служебные функции и около 30% игровой логики. В общем приглашаю всех желающих к дальнейшей разработке.
    • 0
  12. viiri добавил сообщение в теме Dangerous Dave (Опасный Дэйв) (1,2,3,4). Всё об игре.   

    Домен я не продлевал, т.к. интереса никто не высказал. В общем можно пока без сайта, тут http://www.shikadi.net/moddingwiki/Category:Dangerous_Dave_2 можно начать пополнять и исправлять существующие статьи, или поднять похожую вики у меня и писать там сразу на русском.
    • 0
  13. viiri добавил сообщение в теме Dangerous Dave (Опасный Дэйв) (1,2,3,4). Всё об игре.   

    Нет желания как-то структурировать накопленные знания о данных и форматах и выложить их в общий доступ?
    • 0
  14. viiri добавил сообщение в теме Dangerous Dave (Опасный Дэйв) (1,2,3,4). Всё об игре.   

    И правда, извиняюсь за дезинформацию. Ушёл искать в коде.
    • 0
  15. viiri добавил сообщение в теме Dangerous Dave (Опасный Дэйв) (1,2,3,4). Всё об игре.   

    Такого нет! Могу кусок листинга обработки клавиш привести!
    Счётчик тиков показывает сколько циклов игрового движка прошло между двумя кадрами, как-то так. В общем не сильно полезная информация.
    • 0