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

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

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

Первый порт Blood [BloodGDX]

Тема в разделе "Мастерская", создана пользователем M210, 19 май 2017.

  1. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Всем привет :) Довел свой source порт Blood до состояния бета релиза
    M210 Projects - Unreal, eDuke32, BloodTC, DoomTC, Serious Sam, Half-Life, maps, mods

    Порт основан на реверс-инженеринге оригинального blood.exe, поэтому использует все ресурсы и всю механику/логику оригинала.
    BloodGDX абсолютно играбелен, и уже может составить конкуренцию Dos версии, от которой отличается только отсутствием вокселей.
    Воксели, hires, mp3 и другие примочки буду добавлять в процессе разработки.
    Для запуска необходима JRE не ниже 1.6, собственно по этой причине минимальная версия Windows - 2000
    Также были небольшие тесты на Mac OS X и Linux

    P.S. Привет, VEG! Спасибо за начинания в сфере assembler :))
     
    Последнее редактирование модератором: 14 авг 2018
    Petrov-Vodkin, AxXxB, Slavaaa и 34 другим нравится это.
  2.  
  3. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Ну так это навязанный стереотип :)) Хотя, если бы порт был бы на с++, работал бы чуть побыстрее, да)
     
  4. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.565
    На сайте проекта говорится, что порт основан на версии игры 1.0 ввиду её большей "читабельности" по сравнению с версией 1.21. А в чём конкретно это различие заключается?

    Вообще, сложно было дизассемблировать/декодировать бинарник? Автор BloodXL вроде тоже использовал такой подход, если б только проект не заглох.
     
  5. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Просто представлю пример из версии 1.21
    Код:
    if ( pGameInfo.nGameType > 0 && !(BYTE1(pGameInfo.uMapCRC) & 1) )
        {
          pGameInfo.nEpisode = *&word_27B2D5 >> 24;
          pGameInfo.nLevel = *(&word_27B2D5 + 1) >> 24;
          pGameInfo.nGameType = byte_27B2D2;
          pGameInfo.nDifficulty = byte_27B2D3;
    
    А вот тот же самый код в версии 1.00
    Код:
    if ( pGameInfo.nGameType > 0 && !(pGameInfo.uGameFlags & 1) )
        {
          pGameInfo.nEpisode = byte_2414C4;
          pGameInfo.nLevel = byte_2414C5;
          pGameInfo.nGameType = byte_2414BE;
          pGameInfo.nDifficulty = byte_2414BF;
    
    Ну как бы разница очевидна...к тому-же если в коде есть "настоящее" битовое смещение, то приходится постоянно думать, что относится к смещению структуры, а что собственно к самой формуле.

    Помимо смещения, !(BYTE1(pGameInfo.uMapCRC) & 1) на самом деле является !(pGameInfo.uGameFlags & 1) ...тут конечно подсказка в виде смещения BYTE1, но все же когда нужно думать над самой декомпиляцией, загружать свой мозг дополнительно такими смещениями как то не пристало....поэтому гораздо проще полностью декомпилить в 1.00, а потом сравнивать ее с 1.21...так будет меньше ошибок
    --- добавлено 25 май 2017, предыдущее сообщение размещено: 25 май 2017 ---
    ну как бы да...я хотел бросить раза 3, но всегда находил, за что можно зацепится и разворачивал всякие byte_2414C4 в читабельное представление, по-типу этого
    Код:
    else if ( v24 <= 1 )
          {
            v16 = MirrorLower[v23];
            v17 = mirrorZ[v23];
            v18 = mirrorY[v23];
            nSector = v16;
            BYTE1(v16) |= 4u;
            DrawRooms(x + mirrorX[v23], v18 + y, z + v17, angle, horiz, v16);
            viewProcessSprites(x + mirrorX[v23], mirrorY[v23] + y, z + mirrorZ[v23]);
            LOWORD(v17) = sector[nSector].floorstat;
            sector[nSector].floorstat = v17 | 1;
            drawmasks();
            *(&sector[0].floorstat + v19) = v17;
          }
    
    
    а дальше этот код просто переписывается на нормальный
    Код:
    else if ( mirrorType[mirrorcnt] == 1 )
          {
            DrawRooms(x + mirrorX[mirrorcnt], mirrorY[mirrorcnt]+ y, z + mirrorZ[mirrorcnt], angle, horiz, MirrorLower[mirrorcnt] | 0x400);
            viewProcessSprites(x + mirrorX[mirrorcnt], mirrorY[mirrorcnt] + y, z + mirrorZ[mirrorcnt]);
            sector[nSector].floorstat |= 1;
            drawmasks();
          }
    
    

    Тут вот намного поразговаривал сам с собой :)) Можно почитать как все начиналось
    http://www.bloodgame.ru/forum/topic.php?forum=1&topic=241&start=1
     
    Последнее редактирование: 25 май 2017
    AlexDC, MAN-biker, Warmaster и ещё 1-му нравится это.
  6. sonicpro

    sonicpro

    Регистрация:
    7 апр 2008
    Сообщения:
    102
    Я впечатлен объемом проделанной работы до глубины души.

    M210
    , здесь .::Russian Blood Community Forum::. :: Декомпиляция Blood ты писал, что знание движка делает декомпиляцию более простой. Где ты получил знание движка (названия и применение основных функций), до того, как стартовал BloodGDX проект?
     
  7. Дарк Шнайдер Недопустимо инфантилен

    Дарк Шнайдер

    Регистрация:
    18 окт 2004
    Сообщения:
    22.009
    Кстати, true widescreen планируется? :)
     
  8. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Так а что тут знать, исходники движка открыты, берешь и пользуешься :) Но до BloodGDX я писал порт Tekwar, а еще раньше я вел проект BloodCM (бывший BloodTC) основанный на скриптах eDuke32 (тот же движок Build)
    --- добавлено 28 июн 2017, предыдущее сообщение размещено: 28 июн 2017 ---
    Планируется все, на что возникают естественные вопросы, вроде этого :)
     
    AlexDC и Дарк Шнайдер нравится это.
  9. Birm

    Birm

    Регистрация:
    11 июн 2010
    Сообщения:
    1.985
    А в этом порте, как и в оригинале двери - самые опасные враги? )
     
  10. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Да...опять же потому что это порт, а не ремейк
     
  11. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Сделал релиз 0.770 с исправлением некоторых багов и новым пакетом вокселей :) скачать можно на моем сайте
     
    MAN-biker, STOCK, jack7277 и 2 другим нравится это.
  12. Дарк Шнайдер Недопустимо инфантилен

    Дарк Шнайдер

    Регистрация:
    18 окт 2004
    Сообщения:
    22.009
    @M210, а музыка на данный момент каким образом воспроизводится?
     
    MAN-biker нравится это.
  13. MAN-biker

    MAN-biker

    Регистрация:
    17 авг 2008
    Сообщения:
    4.171
    Хотел задать точно такой же вопрос: музыка играет "непонятно откуда", но точно не из миди-синтезатора, установленного в системе по-умолчанию.
     
  14. AlexDC Рябь на море Дирака

    AlexDC

    Регистрация:
    30 мар 2009
    Сообщения:
    1.620
    так это же хорошо
     
  15. MAN-biker

    MAN-biker

    Регистрация:
    17 авг 2008
    Сообщения:
    4.171
    Что хорошего в том, что вместо великолепного синтезатора Роланд (на котором я хочу слушать музыку), игра пытается играть на какой-то говно-поделке, уверенно полагая, что она лучше меня знает чего мне нужно и на каком устройстве ей играть! Причем, "с-ка, что характерно", она играет НЕ НА устройстве ПО-УМОЛЧАНИЮ, как она ОБЯЗАНА БЫЛА СДЕЛАТЬ, "$лять!", а на только ей ведомом (а точнее на мне "неведомой х-не")!
    И непонятно каким образом я должен заставить ее переключиться!
    Вот такие ложки дёгтя ставят крест на массе шикарных начинаний! И бесят, шо просто пздц, потому что такое отношение к людям в последнее время кругом ("юзверь - быдло, я (программа) лучше знаю как должно работать")!
    Прошу понять, порт нравится и со всем уважением к разработчику, но блин... короче, вы понимаете!
    ЗЫ: "Каждый др-чит, как он хочет!" Так дайте мне это делать так, как я привык и как мне НРАВИТСЯ, а не так как вы "пытаетесь доставить мне удовольствие"! Зачем такая "забота", читай "медвежья услуга"?
    Это всё не автору высказываю (хотя, если он тоже прочитает и поможет как-то, будет замечательно), а в ответ на комментарий "так это же хорошо".
    НЕТ НЕ ХОРОШО! СОВСЕМ!
     
    Последнее редактирование: 18 июл 2017
    Sharp_ey нравится это.
  16. AlexDC Рябь на море Дирака

    AlexDC

    Регистрация:
    30 мар 2009
    Сообщения:
    1.620
    Направляйте свою желчь в сторону автора, который так настроил конфиг по-умолчанию, дискуссия в таком тоне мне не интересна.
    Для меня наоборот, отсутствие привязки к конкретному железу (виртуальному или реальному) - нехилый такой плюс. Я не хочу ввязываться в дискуссии на такую тему, но имхо, роландовский синтезатор далеко не идеал качества, особенно MT-32. Я вполне допускаю, что в конфиге игры есть перенаправление на системное устройство (которое у 90% играющих называется "Программный синтезатор звуковой"), просто по-умолчанию используется встроенный какой-нибудь fluidsynth или bassmidi.

    Если так заботит реальное железо, почему просто не играть на старой машине с 100% реальным звуком и всем остальным? В первую очередь сей порт, имхо, будет полезен тем, у кого современная система, и досбоксовый Блад вызывает массу проблем.
    А ещё у меня большие сомнения в том, что тот же Роланд можно без плясок с бубном запустить на чём-то новее XP.
     
  17. Дарк Шнайдер Недопустимо инфантилен

    Дарк Шнайдер

    Регистрация:
    18 окт 2004
    Сообщения:
    22.009
    Ящитаю, что автор порта нас услышал и в новой версии всё поправит :)
     
    MAN-biker нравится это.
  18. MAN-biker

    MAN-biker

    Регистрация:
    17 авг 2008
    Сообщения:
    4.171
    Ну на автора наезжать негоже, ибо он "на шАру трудится" (за что ему ОГРОМНОЕ СПАСИБО и "респект"), а его еще и носом тыкать с недовольством. Но вопрос ему задан, надеюсь ответит.
    По поводу привязки к железу - все верно, но при чем тут привязка, если в любой системе есть "устройство МИДИ по-умолчанию", которое и ДОЛЖНО использоваться, если не указывать конкретно. Это стандарт, это правильно, так должно быть и никак иначе!
    Вот в конфиге игры я как раз ничего и не нашел по этому поводу. Конечно я надеюсь, что есть что-то подобное, ждем ответа.
    Роландовский синтезатор и есть идеал качества, по крайней мере, SC-55 для старых игр GM, а MT-32 (без вариантов) для игр, рассчитанных, на... МТ-32, как ни странно, да?
    И заботит меня не "старое железо", как вы выразились, а ЗВУЧАНИЕ, а его я в состоянии получить и на новом железе (при нужном мне синтезаторе).
    И запускается он без всяких "бубнов и плясок" на ЛЮБОЙ системе, ибо это СТАНДАРТНОЕ МИДИ УСТРОЙСТВО, уж стандартней некуда.
    Но самый главный "посыл моего истеричного поста" был в том, что если не указано иное, играть должно на устройстве по-умолчанию, а неследование такому простому принципу вызывает праведный гнев, особенно, когда пытаются опровергнуть догмы, приводя сомнительные аргументы. С уважением...


    Кстати, вот BloodCM мне нравится тем, что там я могу врубить нормальное Стерео3Д и наслаждаться старой игрой с новыми ощущениями.
    Запилите мне стерео-изображение в этот порт и я буду визжать от восторга!
     
    Последнее редактирование: 18 июл 2017
    STOCK нравится это.
  19. AlexDC Рябь на море Дирака

    AlexDC

    Регистрация:
    30 мар 2009
    Сообщения:
    1.620
    @MAN-biker тот же ScummVM не использует внешние синты, хоть и рассчитан на то же самое что и BloodGDX. Он использует софтовые эмуляторы оригинальных синтов.

    Между прочим, я вполне сталкивался с таким, что использовать настоящий синтезатор невозможно по причине отсутствия оного, а без оригинального звука игра теряет значительную часть очарования. В итоге авторы порта сошлись на том, что просто записали всю музыку из игры в FLAC с оригинального железа, в результате получилось так, что музыка звучит одинаково хорошо на любом устройстве, на котором хорошо звучит обычная музыка - по мне это очень здравое решение.
    Я могу балдеть со звука синтезатора раритетного PC-9821 на Audigy 1, при этом не покупая его за 100500 денег вкупе не травя глаза, глядя на мелкую картинку на древнем CRT.

    Далее, сейчас 2017 год. На дофига моделях материнок есть миди/игровой порт? спойлер, на дофига ноутбуках есть миди порт? На дофига звуковых карт, в конце концов, есть миди - порт?

    Поэтому я ЗА сохранение оригинального хорошего звука, но с возможностью оторваться от особенностей конкретного железа.
    Кстати, если автор запилит поддержку музыки в форматах mp3/ogg/flac, было бы очень круто. Щас это практически стандарт для сорс-портов.
     
  20. MAN-biker

    MAN-biker

    Регистрация:
    17 авг 2008
    Сообщения:
    4.171
    Прикололся, чтоль? :blink:
    Он использует ЛЮБОЙ МИДИ-синтезатор, установленный в системе! И абсолютно честно как раз.

    Это ты про что? Про хаки Пикса под SCUMMVM, которые везде в официальных ветках "забанены"? Ха-ха.
    А идея да, отличная.

    Ты не пьян часом? Вроде старожил уважаемый, но несешь какую-то пургу, ИМХО, извини.
    Или это у меня с головой вообще непорядок?
     
  21. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.153
    @MAN-biker, у нас есть правила форума, и в них недвусмысленно написано "У нас на форуме запрещено непристойно выражаться, даже прикрывая слова и их части звёздочками и другими символами. Любые материалы, выложенные вами, приравниваются к прямой речи. Степень непристойности определяет модератор". Давай мы будем уважать правила и других пользователей, которые соблюдают правила, хотя, я уверен, многим частенько хочется тоже как-то посквернословить или же под воздействием эмоций у них готово что-то подобное вырваться. Но они себя сдерживают, в отличие от тебя. С тобой ведь уже говорили на эту тему, зачем испытывать терпение админов?
     
    Grongy, kreol и MAN-biker нравится это.
  22. AlexDC Рябь на море Дирака

    AlexDC

    Регистрация:
    30 мар 2009
    Сообщения:
    1.620
    Я вообще не понимаю, про что ты там говоришь, вроде я адекватно написал. Я к тому что в ScummVM по-умолчанию вроде как стоит эмулятор в качестве умолчального звука, в досбоксе тоже. Я более чем уверен что порт может понимать midi-синт,если ему его указать в конфиге или ещё где.
    А имел я в виду порт игры YU-NO с PC98 на WinXP, в который удалось встроить записанные с оригинального синтезатора мелодии, а не адаптированные под средней паршивости миди-файлы для SoundBlaster.
    Выражайся спокойнее, вроде тут поводов бомбить я вообще не вижу.
     
    MAN-biker нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление