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

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

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

Вопросы по работе с ресурсами игр

Тема в разделе "Мастерская", создана пользователем Alex2x, 10 янв 2005.

  1. Alex2x

    Alex2x

    Регистрация:
    9 июл 2004
    Сообщения:
    205
    Пишите в эту тему если вы:

    - хотите достать из игры музыку/спрайты/тексты но не знаете как,
    - сделали какую-то программку, которая достает ресурсы из какой-то старой игры, и хотите ей поделиться,
    - знаете полезную информацию о ресурсах какой-то игры,
    - хотите изменить игру так, чтобы она использовала ваши ресурсы (музыку, графику), но не можете понять как это сделать,
    - делаете редактор уровней для какой-то старой игры,
    - хотите помочь кому-то с какой-то из проблем, здесь озвученных.


    Несколько полезных ссылок для работы с ресурсами игр:

    Руководство по HEX-редакторам от reg2s

    Сайты с описаниями различных игровых форматов:

    http://wiki.xentax.com/index.php/GRAFs/All
    Category:Game Formats - MultimediaWiki
    Category:Game Intro Page - ModdingWiki
    watto studios - http://www.watto.org
    oezmen.eu > Game resources

    Multi Ripper 2.80
    Mega Ripper 5.00
    +плагин Game Archive UnPacker 0.6.0.1 PRO для Total Commander

    Шапка by Dimouse

    -------------------------------------Оригинальное сообщение---------------------------------Люди, это, конечно, не техническая проблема, но никто не знает, можно ли и как вытащить из игры миди-музыку?
    //Перенесено из темы про Alone in the Dark.

    оригинальное сообщение
     
    Последнее редактирование модератором: 3 фев 2019
    OLD-NEW Player, AndyFox и Corak нравится это.
  2.  
  3. SomeVNfan

    SomeVNfan

    Регистрация:
    29 сен 2020
    Сообщения:
    8
    Чувак, мегаогромное спасибо тебе. Я обязательно потом попробую сам, когда будет время, а пока разберусь с порядком треков как-то, пока не знаю как.
     
  4. SomeVNfan

    SomeVNfan

    Регистрация:
    29 сен 2020
    Сообщения:
    8
    Хм, я скачал EAC, но проблема в том, что при первоначальной настройке он не видит мои виртуальные CD/DVD приёмники (или как их там), ну и образы, которые на них смонтированы, тоже. На самом деле, есть реальный дисковод, но я им не пользуюсь, поэтому не знаю, работает ли он вообще, но и его тоже не видит. Ничего не видит. Я думаю, и проблема с воспроизведением музыки в играх, которые черпают BGMки с диска, тоже связана с этим. Просто хотел ещё одну игру с похожей проблемой чекнуть, но, я так понимаю, это большая проблема, разберусь с ней позже. А так ещё раз спасибо большое, теперь хотя бы приблизительно понял что к чему.
     
  5. Алексей Сафонов

    Алексей Сафонов

    Регистрация:
    18 дек 2010
    Сообщения:
    30
    Так ребята, всем привет. Долго меня не было. Вообщем сразу по делу буду, без лишних разговоров :)

    Решил я доразобрать по сильнее файл с картой в Alien Trilogy. Чтобы не запутаться, советую почитать мои посты на предыдущей странице. Там формат более расписан сильно со скриншотами.
    Сначала первый заход был с так называемым "полем", отвечающим за коллизию, а именно "коллижн-блоки".

    На данный момент структура одного такого блока. Напомню, 1 блок - это 16 байт описание.

    Код:
    - формат одного квадрата коллизии(поле с блоками физ. движка)
    -------------------------------------------------------------------------------------------------------------------------
    0x04 - порядковый номер? пока не совсем ясно как это работает, некоторые номера дают стабильный вылет. Кажись это связано как то с тем, что игра некорректно определяет два одинаковых блока в разных местах.
    
    0x02 - непонятно что это и непонятно для чего оставили. Пока просмотрел 5 разных карт и почему то везде там нули. Вполне вероятно, что там может быть что то по эффектам.
    
    0x01 - значение есть, но не ясен эффект
    0x01 - то же самое
    
    0x01 - кажись высота рендеринга потолка блока(черный туман)
    0x01 - кажись высота рендеринга пола блока(черный туман)(не точно)
    
    0x01 - высота потолка у блока?(эти значения работают и редактируются в хекс-редакторе)
    0x01 - высота пола у блока?
    
    0x01 - непонятное значение
    0x01 -хм... блок перестаёт быть неосязаемым, если туда забить простые числа. значение от 55 и ниже блочат игрока. Кажись это какая то высота для блока, только непонятно для чего оно и не совсем ясна
    логика работы этой высоты.
    
    0x01 - цвет освещения в блоке? Нашёл вот такие значения:
    FF - окрашивает в красный цвет
    64 - моргает красный цвет
    128 - синий цвет
    160 - желтый
    192 - серый?
    224 - толи оранжевый, толи красный.
    от 1 до 10 - в блоке яркий свет
    От 11 до 17 - в блоке темно?
    18 - ярко красно моргает
    20 - полный свет в блоке
    22 - оранжево моргает
    24 - моргает тёмно-оранжевым
    30 - моргает с темного на белый
    
    0x01 - походу байт, который отвечает за действия. если забить 1, то открывает стартовую дверь.
    значение:
    1 - стартовая дверь
    3 - дверь, которая открывается рубильником
    9 - конец уровня
    Из опыта с высотами блоков на первый взгляд выяснилось, что используется система пол-потолок, как в думе\дюке. Становится понятна логика работы движка. Видимо игра действительно технически поделена на "сетку из блоков" и в качестве координат у объектов принимает позицию блока(длина-строка). Остальное "считается" уже дальше.
    Такая система имеет и свои изъяны, а именно, двери и свитчи можно открывать "спиной", ведь движок по факту смотрит чисто нажатие кнопки в самом блоке. Этот прикол уже проверен и неоднократно)

    Далее я немного дорасшиффровал заголовок файла:
    Код:
    - сначала заголовок файла:
     размер   содержимое         комментарий
    -------------------------------------------------------------------------------------------------------------------------
     0x04  46 4F 52 4D        FORM
     0x04  -            размер данных файла в байтах, BIG-ENDIAN
     0x04  -            количество карт в файле текстом.(обычно нуль, т.к. больше
                  одной карты в файлах не встречал)
    
    - дальше идет информация о геометрии карты и её содержании, а именно:
     размер   содержимое         комментарий
    -------------------------------------------------------------------------------------------------------------------------
     0x04  -            Название карты, текст
     0x04  -            размер данных карты, BIG-ENDIAN(прямой порядок байт)
     0х02  -            Кол-во вершин?.LITTLE-ENDIAN(обратный порядок байт)
                   Формула - значение этих двух байт умножить на 8
                       (6 байт на 3 точки + 2 байта нули)
    
    0x02             Кол-во квадов(прямоугольников).LITTLE-ENDIAN
                  (обратный порядок байт). Формула - значение этих 2-х байт
                  умножить на 20 (16 байт индексы точкек и 4 байта информация)
    
    0x02    ------------     Длина "прямоугольника" мини карты(физ. движка)(Little-Endian)
    0х02    ------------     Ширина "прямоугольника" мини карты(физ. движка)(Little-Endian)
                    Формула для этих байт = умножить длину на ширину
                    и полученое значение умножить на 16
                       16 байт описывают одну ячейку.
    
    
    0х02   -  Стартовая позиция игрока по осиX (Здесь пишется так же )      
    0х02   -  Стартовая позиция игрока по осиY
    0х02   -  Пока не ясно что, изменения приводят к зацикливанию игры на этапе подгрузки карты,
    иногда к вылету.
    
    0х02   -          Поле описания монстров, которые просто спавнятся.
                 Формула = кол-во элементов умножить на 20
                      (20 байт на одного монстра)
    0х02   -          Поле описания пикапов, формула = кол-во элементов умножить на 8
    0х02   -          Поле описания "коробок" и подобных объектов(свитчей, бочек)
                  Формула = кол-во элементов умножить на 16
    
    0x02  -        Исправление, походу 2 байта это кол-во всех дверей на карте.
                 Формула: значение умножить на 8(8 байт один элемент)
                       Формат двери ниже.
    
    0х02  -        Пока не ясно за что отвечает.
    
    0x02  -        Похоже на стартовый угол поворота игрока, игрока на старте карты это
                         значение крутит.
    
    0x06  -        Не ясно что это, эффект постоянно случайный от изменения.
    
    0x04  -            Неизвестное значение, каким то образом влияет
                    на монстров на уровне. Если монстры на уровне есть
                    и выставить нули, то у монстров отключается рендеринг
                    спрайтов, но сами они не пропадают
    Теперь по порядку, я нашёл ещё 4 разных значения, а именно координаты игрока X и Y , стартовый угол игрока и поле с кол-вом и описанием дверей на карте.
    Формат одной двери:
    Код:
    -------------------------------------------------------------------------------------------------------------------------
     0x01  -            координата X
     0x01  -            координата Y
     0х01  -            непонятный байт
     0х01  -            время простоя двери в открытом состоянии
     0х01  -            тэг двери(для использования в коллижн блоках)
     0х01  -            непонятный байт
     0х01  -            угол поворота модели двери относительно карты
     0х01  -            индекс модели из секции D000\1\2\3...
    Пока что я не совсем понял вот такие вещи, а именно:
    - Если трёхмерная модель карты имеет координаты, то и её коллизия тоже должна иметь какие то стартовые координаты первого блока.
    - Так же я не совсем понял, что за последнее поле имеется в файле карты, после поля описания дверей. Там примерно 4000 байт.... Байты каким то образом там упорядочены, но изменения делают вообще случайные вещи(отключают двери, либо наоборот вешают другие эфффекты на "коллижн-блоки". Не могу понять логику их работы...
    - Каким образом дверям задаётся движение и их собственная коллизия(если дверь крутить, то игрок и монстры её коллизию видят).В некоторых картах есть двери, которые, видимо, вообще крутятся чисто вокруг своей оси(вроде 4 уровень в игре, где крео-камеры, сами модули имеют походу двери, которые "открываются" крутясь). В теории если это выяснить, то возможно будет вообще делать двери, которые будут открываться в стороны, а не вверх-низ, как в думе.
    Ладно, пойду спать, отпишусь по результатам, если чего выйдет))
     
    bvedargh, ZaRR и Grongy нравится это.
  6. Мигель Санчез

    Мигель Санчез

    Регистрация:
    29 июл 2021
    Сообщения:
    4
    Duke Nukem 3D ANM Files

    У меня к вам вопрос товарищи, кто-нибудь создавал анимационные ролики? Занимаюсь созданием мода и хочу сделать превьюшку как LOGO.ANM, нужные проги имею, делаю все по инструкции, размер 320X200, сохраняю в 256 цветовой дюковской палитре, но в игре откуда то лезут розовые рамки по бокам в версии eduke32 и черные в оригинале. Подскажите кто более опытный. Если данная тема где то поднималась, прошу кинуть ссылочку
     
    Последнее редактирование модератором: 30 июл 2021
  7. MuXaJIbl4

    MuXaJIbl4

    Регистрация:
    2 окт 2021
    Сообщения:
    1
    Господа какой программой редактировать файлы русификаторы формата .RUSB в игре X-Men Legends 2 Rise of Apocalypse (PC)? Вообще они открываются обычным текстовым редактором, но при внесении изменений в них, в игре перевод не отображается словно файл отсутствует вовсе. Подскажите как решить.
     
    Последнее редактирование модератором: 2 окт 2021
  8. Piastres

    Piastres

    Регистрация:
    30 окт 2021
    Сообщения:
    56
    У кого можно попросить курсоры (которые все на основе синих стрелок) из «Как достать соседа» (англ. Neighbours from Hell)
     
  9. Tigoro

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    2.900
    Скорее-всего уже искали, но - такие подойдут?

    или
    Neighbours From Hell Cursors
    еще
    Neighbours from Hell cursors for Windows by EtherealDreamCloud on DeviantArt

    Оно или нет, не знаю, не играл.
     
  10. Piastres

    Piastres

    Регистрация:
    30 окт 2021
    Сообщения:
    56
    Я тоже не играл. Но синих стрелок по этим адресам не вижу(
    --- добавлено 10 дек 2021, предыдущее сообщение размещено: 10 дек 2021 ---
    Наверно они в 3-й части только
     
  11. NeverhoodIsCool

    NeverhoodIsCool

    Регистрация:
    1 сен 2018
    Сообщения:
    5
    Решил взяться за перевод игры Earthbound Beginnings, а именно — Earthbound Zero (Demiforce v1.01 2 Hack) на NES. Есть большой вопрос по тому, как можно расширить окна в меню. У команды Chief-net уже есть свой перевод, и им каким-то образом удалось найти поинтеры для этих окон. Я хочу сделать собственный перевод, но не очень хорошо шарю в кодерстве. Прошу тех, кто в этом хорошо разбирается, хоть как-нибудь помочь или объяснить, что можно сделать.

    Что нужно знать:
    1. Оригинал/как сделали Chief-net:
    1.png 2.png

    3.png 4.png

    2. Обсуждение этой проблемы на форуме Chief-net, решение которой не до конца понятно:
    Earthbound [NES]
    Earthbound [NES]

    3. Прикрепил оригинал игры и перевод
     

    Вложения:

    Последнее редактирование: 8 мар 2022
  12. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Добрый день. Делаю вспомогательную утилиту для редактора уровней игры Duke Nukem 3D Atomic edition. Назначение: проверка карты на наличие ошибок, возможно - их исправление, дополнительная статистика по карте (aнaлиз HITAG/LOTAG зависимостей при программировании кнопок, дверей и прочей внутриигровой логики). Изначально написал в этой теме, но буду переносить материал сюда. Есть ещё идея сделать туториал по редактору уровней (от Кена или его портов, не сторонних разработок), думаю сделать отдельную тему.

    Ещё есть самодельная утилита для исправления криво переведённой игры Dungeon Keeper. Если интересно - могу поделиться. Нравится голос переводчика в этой версии, а вот остальное - ужас. Во-первых, перепутаны события, то есть текст озвучки не соответствует ситуации, во-вторых, в панели с монстрами не показывается их число, если значение больше нуля. Ну и есть проблема с мелким шрифтом если в игре выбрать высокое разрешение. Патч всё это исправляет (за мелким исключением).

    Вот еще моя тема про конвектор фонов для игры Scorched Earth (со структурой файлов MTN).

    Теперь о Duke Nukem 3D, MAP-файлы.

    Решил сделать анализатор MAP-файлов. В оригинальном редакторе (по-моему, и в его портах) есть баг, из-за которого сильно портится файл с уровнем (при схлопывании красного сектора вместо штатной функции удаления). Наткнулся пару лет назад на описание структуры MAP файла от автора движка, сделал простенькую программу, которая загружает MAP, считает примитивную статистику и выгружает обратно в файл. На днях сделал алгоритм проверки структуры файла на предмет ошибок (пока просто говорит "Да" или "Нет", сделаю в виде журнала-отчёта со временем), а также сделал экспорт в CSV-файл, который можно открыть Excel'ем (хорошо упрощает визуальный анализ стуктуры файла). Есть пара идей про дополнительный функциоонал.

    Есть редактор уровней от стороннего разработчика - LEBuild 1.0.3. Он там тоже делал анализ файла на предмет ошибок и исправление, но ту ошибку, о которой я писал выше, насколько я помню, его программа не могла исправить в автоматическом режиме.

    Структура MAP-файла (чуть упростил, выкинул комментарии).
    Код
    Список тестов в утилите в настоящий момент (это отладочная версия, будет чуть мусорить в текущей папке, F1-помощь):
    1. Любая стена принадлежит только 1му сектору; нет стен, не связанных ни с одним сектором, нет стен, связанных более, чем с 1м сектором.
    2. Проверка wallptr, wallnum: первая и последняя стена существуют, все цепочки последовательны и закольцованы
    3. Все спрайты ссылаются на существующие сектора
    4. если в секторе X есть стена с параметром
    Код:
    wall[A].nextsector
    , который указывает на сектор Y, то с другой стороны в секторе Y есть соответствующая стена с параметром
    Код:
    wall[B].nextsector
    , который указывает на сектор X (закольцованная ссылка из 2х участников).
    5. (в разработке) проверить в заголовке posx, posy, posz

    P.S. Приложил оригинальное описание SRC-doc.7z от автора движка - Кена.
    P.P.S. Если будете делать экспорт в CSV перед открытием в Excel проверьте, чтобы в настройках языка системы разделитель целой и дробной части была точка, а разделитель рядов данных - точка с запятой ";"
    Collaps_sample.7z - пример повреждения карты при схлопывании секторов (T3_.MAP - до схлопывания, T4_.MAP - после схлопывания 2х секторов).
     

    Вложения:

    • Collaps_sample.7z
      Размер файла:
      994 байт
      Просмотров:
      42
    • SRC-doc.7z
      Размер файла:
      37,9 КБ
      Просмотров:
      56
    Последнее редактирование: 5 май 2022
    Angel Of Nemesis, kirik-82, OldGoodDog и 2 другим нравится это.
  13. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Утилита начала находить ошибки в файлах оригинальной игры. Обновил версию, ссылка в предыдущем сообщении.

    Алгоритм (обновление от 14-05-2022)
    • E2L4 - при перемещении точек того сектора, на который ругается алгоритм проверки, в редакторе начинаются странные глюки.
    • E2L6 - есть дефект стены (неверный параметр nextsector)
    • E4L1 - проверил, есть дефект (не ложное срабатывание), повреждение можно удалить средствами штатного редактора, но получилось с 3й попытки (вылетает при этом часто)
    • E4L2 - проверил, есть дефект (не ложное срабатывание), повреждения значительные, удалить штатным редакторам нельзя.
    Остальные карты DN 3D Atomic Edition проходят проверку.
    Думаю, надо писать алгоритм удаления повреждённых частей карты (указывать элементы придётся вручную) и вычищать ссылки на них из других элементов.
     
    Последнее редактирование: 14 май 2022
    kirik-82, bvedargh и Grue13 нравится это.
  14. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Новая бетта утилиты (ссылка - та же, помощь - F1).
    as1.hostingkartinok.com_uploads_thumbs_2022_05_f67429f4220c532dd5c6cb1e553abed9.png as1.hostingkartinok.com_uploads_thumbs_2022_05_575bfc5d4bc2e544d46bebe2c881c0b1.png

    Изменения: F5 - теперь открывает меню с возможными алгоритмами исправления ошибок на карте:
    • "Collapsed sector(s) fix" - из предыдущей версии, восстанавливает карту после схлопывания красного сектора (вместо удаления при помощи ALT-DELETE), Алгоритм;
    • "Safe sector delete" - экспериментально (:unknw: т.к. нет у меня достаточно примеров карт с ошибками, может и есть, но не оттестировал толком ещё). Удаляет указанный сектор, подразумевает, что сектор может быть с ошибками. За сектором удаляет стены, которые за ним закреплены, если какая-либо из стен закреплена за другим сектором, то стену не удаляет дабы не портить другие сектора. ВНИМАНИЕ! Все номера последующих за удаляемым сектором (т.е. номера секторов с большим порядковым номером) автоматически сдвигаются в сторону удаляемого сектора (уменьшаются на 1), так что лучше начинать с большего номера и заканчивать меньшим, чтобы не запутаться :crazy:; к удаляемым стенам это тоже относится; объекты не удаляются, если были таковые их надо переместить в штатном редакторе (проверить ссылку на сектор, параметр sectnum) или грохнуть;
    • "Detach sector" - сектор не удаляется, просто у всех его стен рвутся связи с другими секторами (можно потом в штатном редакторе восстановить): все стены из красных становятся белыми и чуть сдвигаются;
    • "Detach wall" - то же, что и предыдущее, только можно разорвать связи у конкретной стены;
    • "Move back off-screen map" - автоматически сдвигает карту в зону, поддерживаемую штатным редактором DOS либо Windows-портов (снятие т.н. защиты от редактирования карт). Делал специально для карт Roch :victory: (ссылка2), теперь их можно легко вернуть в диапазон координат, поддерживаемых штатным редактором; проверил на проблемной карте Roch8 (в редакторе LeBuild она при перемещении портилась - вращающийся элемент корабля пришельца в самом начале при выходе из подъезда).
    Добавил возможности визуального поиска не только секторов, но и стен и спрайтов (клавиша "/"). Исправил пару мелких ошибок (в т.ч. зацикливание алгоритма прорисовки на забагованных картах), поменял иконку.

    Алгоритм исправления штатных уровней DN3D Atomic.
    В E4L2 - находим сектора 88 и 89 (нажимаем "/", вводим 88, далее - листаем номера "<" и ">", номер сектора отображается в верхней панели, желтый прицел - на карте). Они дублируют сектора 90 и 91, но в отличии от 90 и 91 сектора 88 и 89 содержат незакольцованные связи у стен. Можно исправить, как "Safe sector delete", так и "Detach sector" (последний - предпочтительнее, т.к. в первом случае никаких визуальных изменений вы не увидите да и номера секторов меняются при удалении).
    В E4L1 - сектор 41 - не удалять, "Detach sector", сектора 42 и 40 - удалить (зачем они с 2мя стенами вообще нужны, только глюки плодить), удалять начинать с большего. Потом в штатном редакторе прицепить бывший сектор 41 (должен по-идее стать вместо 40го) обоими стенами на место, проверить, чтобы спрайты в бывшем 41м ссылались на его новый номер (параметр sectnum).
    В E2L6 - не пробовал пока, но по-идее можно "Detach wall" с проблемными стенами, в редакторе прицепить потом на место.
    В E2L4 - 229й сектор забагован и лишний. Можно его "Detach sector", но осторожно, т.к. на него ссылается спрайт, что находится внутри его периметра, не трогая положения сектора вытащить в штатном редакторе спрайт куда-нибудь за периметр этого сетора, сектор отвезти в сторону, грохнуть, спрайт - вернуть на место.

    ToDo:
    • Алгоритм исправления карты E2L1 аддона TheGate, там повреждённая структура одного из секторов;
    • Поиск спрайтов вне секторов (возвращение в сектор в штатном редакторе);
    • Анализ связей событий (кнопки, двери, подстреливаемые стены/объекты, наступаемые сектора, ключи/замки и т.п.).
    • Поиск стен/объектов по критериям (№ графики, hitag, lotag)
    • Проверить, работает ли антимасштабирование окна приложения (Windows 8 и более поздние, на мониторах с большим DPI), обычно это заканчивается вылетом при старте, работает ли на Windows 10 вообще: вшил следующий файл в ресурсы своей утилиты, надеюсь это поможет manifest.xml
    P.S. Пытался сделать так, чтобы проверка карты не останавливалась на 1й найденной ошибке (по возможности), но сделал алгоритм менее стабильным. Думаю исправить к следующей версии.
     
    Последнее редактирование: 12 май 2022
    bvedargh и kirik-82 нравится это.
  15. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Нашёл у себя описание (страница уже удалена), как без модификации EXE запретить масштабирование на мониторах с высоким DPI для конкретного приложения для Windows 8-10. Приложение может виснуть или вылетать с функцией авто масштабирования (сталкивался). Может кому пригодится.
    Код:
    Как резервный вариант без модификации EXE:
    How to Fix Windows 10 DPI Scaling on 4K Screens
    https://bdmpublications.com/fix-dpi-scaling-4k-screens/
    f you’ve splashed out for a modern, higher-end laptop in recent months the chances are you now own one with a glorious 4K screen.
    
    Having a 4K screen opens up a whole new world of extreme clarity and superb visual depth. Providing the GPU within your laptop/desktop can handle it, gaming takes on a new perspective with ultra-high resolution graphics and spectacular detail. Windows 10 especially likes 4K screens, and is designed to make the maximum visual experience with the resolutions available. However, with Microsoft’s new OS design and very high DPI screens comes an extraordinarily annoying issue.
    
    Windows, from 8.1 onward, used DPI Scaling to make everything on the screen become larger when being viewed in the higher 4K resolutions; that way you don’t have to use a magnifying glass to see any of the icons or read any text. In theory, every application that’s run on a Windows 10 PC with a 4K resolution should automatically use the auto DPI Scaling. But they don’t.
    
    There are a lot of programs that were written before high DPI and 4K screens were commonplace, and as such they haven’t been updated to support or make use of the auto DPI Scaling feature in Windows 10. When you run an app that doesn’t support DPI Scaling you’ll get a severely messed up window, with the icons far too small to read, the text either far too large for the menus, or vice versa, and the window placements, if the app in question uses multiple windows for tools and so on, not in the correct order or encroaching the top toolbar, for example.
    
    Turning off DPI Scaling, or altering the resolution doesn’t do anything to help, and to further compound the problem a program can effectively declare it’s using the DPI Scaling correctly, when in actual fact it isn’t. But there is a way to fix the issue by forcing Windows to scale the program correctly regardless of whether Windows or the program thinks it already has; as you can see from our first screenshot here.
    
     
    
    For this particular example, we’re using the developer program, Code::Blocks, which messes up the DPI Scaling whenever you try and run it using a 4K screen.
    
    Step 1 – Open up the registry edit, Regedit, and navigate to:
    
    HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > SideBySide
    
    In the SideBySide entry, create a new DWORD (32-bit value) called:
    
    PreferExternalManifest
    
    With the Data Value as 1. Exit Regedit.
    
    Step 2 – Create a new text file via Notepad, and enter the following script:
    ===[Cut]===
    <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
    <assembly xmlns=”urn:schemas-microsoft-com:asm.v1″ manifestVersion=”1.0″ xmlns:asmv3=”urn:schemas-microsoft-com:asm.v3″>
        <description>eclipse</description>
        <trustInfo xmlns=”urn:schemas-microsoft-com:asm.v2″>
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel xmlns:ms_asmv3=”urn:schemas-microsoft-com:asm.v3″
                                   level=”asInvoker”
                                   ms_asmv3:uiAccess=”false”>
                    </requestedExecutionLevel>
                </requestedPrivileges>
            </security>
        </trustInfo>
        <asmv3:application>
            <asmv3:windowsSettings xmlns=”http://schemas.microsoft.com/SMI/2005/WindowsSettings”>
                <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings=”http://schemas.microsoft.com/SMI/2005/WindowsSettings”>false</ms_windowsSettings:dpiAware>
            </asmv3:windowsSettings>
        </asmv3:application>
    </assembly>
    ===[/Cut]===
    Now save the script as the name of the program executable plus the EXE extension plus Manifest. So for our example of Code::Blocks, the new file would be named:
    
    codeblocks.exe.manifest
    
    Make sure that the Save as type dropdown menu in Notepad is set to ‘All Files’.
    
    Step 4 – Copy the newly created file into the same folder as the actual program executable. Again, as in our example, that would be C:\Program files (x86)\Codeblocks. You’ll probably need to confirm as an administrator that the copy to the Program Files directory is okay.
    
     
    
    Step 5 – Once the file is copied over, you should be able to load up the program without the auto DPI Scaling messing up the program’s interface. If it doesn’t work straight away, reboot the PC and try again.
    
    No more DPI issues
    
    With luck your auto DPI Scaling issues will now be fixed. All you’ll need to do is save the original .manifest file as the program that’s misbehaving on your 4K screen name.
    
    Just in case Microsoft removes the registry setting with any future updates, it’s probably also worth saving the registry string so you can easily pop it back in.
    P.S. Есть правда ньюанс, если приложение уже содержит манифест, то его замена может привести к поломке (надо не заменять манифест, а дополнить тот, что в приложении уже есть, т.е. извлечь из EXE, дописать требуемые строчки, а только потом сохранять рядом с EXE, как указано в инструкции).
     
    Последнее редактирование: 10 май 2022
    Tigoro и bvedargh нравится это.
  16. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    MapReader для DukeNukem 3D. Версия 0.0.2.0 (бетта) - новые возможности, баги (changelog внутри). Теперь можно составить карту каналов логики карты (кнопки, двери, взрывающиеся баллоны и т.п.), если какие-то события происходят вместе, но не должны, теперь можно разобраться - почему и найти всех заговорщиков.

    Обновление
    - Из последнего
    (28-05-2022) - добавлен отчёт по звуковым эффектам.
    (8-06-2022) - добавлена возможность воспроизведения звукового эффекта выделенного объекта (только настраиваемые, не стандартные), необходимо указать CON и GRP файлы игры в настройках (CFG-файл) и разрешить их использование.

    Можно уже пользоваться, есть практически весь функционал, что задумывался. Буду тестировать на наличие ошибок. Чуть позже, если не будет замечено ошибок, выложу версию без отладочной информации (не будет создавать файл debug_log_output.txt).
     
    Последнее редактирование: 8 июн 2022
    Angel Of Nemesis нравится это.
  17. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Пока разбирался, почему Allegro 4.2.1 (и 5я версия - тоже) не грузит VOC файлы, нашёл в коде 5й версии, в функции _al_load_voc_f() одну утечку памяти и несколько ошибок. :lol: Пришлось довольно сильно переписать функцию, зато теперь работает. Код от 4й - никуда не годится, сделал бекпорт исправленного кода из 5й версии в 4ю.
     
    Последнее редактирование: 8 июн 2022
  18. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Начал создавать руководство по редактору уровней игры DukeNukem3D. Пока оно практически пустое. Буду по мере возможности его писать.
     
    Последнее редактирование: 13 июн 2022
    GreenEyesMan и rendensh нравится это.
  19. GreenEyesMan Хомосапиант

    GreenEyesMan

    Регистрация:
    25 авг 2017
    Сообщения:
    2.263
    Не подскажете, есть ли на русском какие-либо руководства по работе со скриптами в GZDoom? На английском полно, но так муторно и не понятно (а на эксперименты просто нет времени).
     
  20. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Подскажите, я что-то упустил или нет порта под Windows утилиты для редактирования ART-файлов игры DukeNukem 3D?
    Разбираю потихоньку формат ART-файлов. Попытался прочитать TILES000.ART, нашёл в нём 255 ячеек (не во всех, но во многих содержится графика), вроде алгоритм работает:
    03.png 01.png 02.png
    Вроде бы всё просто:
    1. Читаем палитру из файла PALETTE.DAT (он внутри GRP), нужны первые 768 байт (RGB VGA 0-63).
    2. Открываем TILES000.ART.
    3. (32-bit long) artversion - всегда =1;
    4. (32-bit long) numtiles - по заявлению автора - не используется, просто читаем и пропускаем;
    5. (32-bit long) localtilestart и localtileend - порядковые номера картинок в этом файле, отсюда считается их кол-во: const size_t local_tiles = labs (localtileend - localtilestart) + 1;
    6. (16-bit short) tilesizx[local_tiles] и tilesizy[local_tiles] - два массива с размерами картинок;
    7. Аттрибуты (32-bit long) picanm[local_tiles] всех картинок (массив); в описании, что я прикладывал, повреждена схема, нашёл другую: Attr.png
    8. Последними идут пиксели всех картинок (8bit/pixel), развёртка идёт сначала по Y, затем - по X:
    Код:
    for (unsigned int i = 0;i < local_tiles;i++)
          {
            if (file.eof())
             return RS_unexpected_EOF;
            class BITMAP_ex &b = tile[i];
            const int w = tilesizx[i], h = tilesizy[i];
            if ((w<=0)||(h<=0)) continue;        
    
            b.create (8, w, h);
            b.clear();
            for (int x = 0;x < w;x++)
              for (int y = 0;y < h;y++)
                {
                  file.read (&pixel, 1, 1);
                  putpixel (b, x, y, pixel);
                }
          }
     
    Последнее редактирование: 2 июл 2022
  21. Angel Of Nemesis

    Angel Of Nemesis

    Регистрация:
    4 июл 2019
    Сообщения:
    662
    nick7inc и GreenEyesMan нравится это.
  22. nick7inc

    nick7inc

    Регистрация:
    2 авг 2007
    Сообщения:
    57
    Судя по всему, под Windows XP вряд ли заработает.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление