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

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

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

Metaltech: Battledrome

Тема в разделе "Мастерская", создана пользователем Talking_Sword, 18 янв 2025.

  1. Talking_Sword

    Talking_Sword

    Регистрация:
    2 авг 2013
    Сообщения:
    462
    Не знаю, подходящий ли это раздел для таких вопросов.

    Есть игра - Metaltech: Battledrome, сама игра мне не очень интересна, но очень понравилась музыка. К сожалению, в игре нет Sound Test, чтобы можно было послушать музыку.

    Захотелось попытаться разобраться, можно ли запустить музыку отдельно от игры. В старых играх музыка часто работала через драйвер, который часто представлял из себя исполняемый файл. У меня сразу пало подозрение на SOUNDPLY.EXE. При запуске без аргументов ничего не происходит, программа ничего не пишет. Разобрался, музыка лежит в папке "SOUND", файлы с расширением "*.HMP". Попробовал открыть файл HMP при помощи SOUNDPLY, то есть, написал в командной строке "soundply sound\rock2.hmp", снова ничего не произошло.

    Решил проверить в HEX-редакторе SOUNDSET.EXE - она играет музыку при проверке настроек звуковой карты. Поискал там упоминания "SOUNDPLY". По адресу 0xF4CA нашлось такое: "soundply.exe %s %s %s %s %s %s", похоже на какие-то аргументы, похоже их должно быть 6 штук. Попробовал выполнить "soundply 1 2 3 4 5 6" (да, аргументы взял просто "от балды") - программа выдала ошибку, уже какой-то прогресс. Была надежда, что какой-то один из аргументов - путь к файлу с музыкой. Честно говоря, не знаю как в DOS посмотреть, с какими аргументами там запущена программа, поэтому написал простенькую программу, которая выводит на экран, с какими аргументами она запущена. Заменил SOUNDPLY.EXE на свою программу. Получились такие аргументы: E016 220 1 7 A002 388. В принципе, смысл понятен, E016 - тип драйвера для воспроизведения звуков (есть такая строчка в RESOURCE.CFG), 220 - адрес Sound Blaster, 1 - DMA, 7 - IRQ, A002 - тип драйвера для воспроизведения музыки (опять же, из RESOURCE.CFG), 388 - адрес OPL2.

    Попробовал запустить SOUNDPLY с такими аргументами - заиграла ту же музыку, что в SOUNDSET. Заметил еще, в RESOURCE.CFG есть строчка "midiFile=sound\rock1.hmp", если ее поменять, то начинает воспроизводится другая музыка (та, к которой указан путь).

    Вывод: SOUNDPLY играет только ту музыку, что указана в RESOURCE.CFG. SOUNDPLY используется только для проверки настроек в SOUNDSET - при удалении\переименовании файла SOUNDPLY.EXE в самой игре звук\музыка не пропадает.

    Можно слушать музыку через SOUNDPLY, но для того, чтобы послушать другую музыку, нужно отредактировать RESOURCE.CFG. А сложно ли модифицировать программу так, чтобы она брала имя файла из аргументов коммандной строки, а не из файла?

    Конечно, можно сделать костыльно-колхозное решение - написать программу, которая будет принимать в качестве аргумента коммандной строки имя файла, записывать это значение в RESOURCE.CFG, затем запускать SOUNDPLY. Но все-таки хотелось бы нормальное решение, чтобы не приходилось вносить каждый раз изменения в файл.
     
  2. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.423
    @Talking_Sword, это действительно самый простой вариант.
    Либо подменять файл музыки или файл конфига на правильный каждый раз, перезаписью. Движок нестандартный, поэтому как самое простое - в батнике все это описать.

    Тут HMP audio playback with custom soundbank?? \ VOGONS некто пытался хакнуть музыку, все иные варианты воспроизведения у него были неудачные.

    "I'm running into some issues trying to playback the audio files from the game Metaltech Battledrome.

    They seem to be HMP format, and have the accompanying melodic.bnk and drum.bnk however I cannot get them to playback correctly on any tools Ive been able to find.
    I can playback the .HMP files themselves in Foobar2000 using Foo_MIDI, however the plugin doesn't seem to load the accompanying soundbank files.
    AdlMIDI (standalone or in Foo_MIDI) doesn't have an existing preset for Battledrome, and doesn't have a way to load the soundbank files either.
    I tried converting the .HMP files to MIDI using Foo_MIDI, and try converting the soundbank to something more usable like .WOPL (using OPL3BankEditor) but the drum tracks don't play correctly in PGE Mus Play.
    The audio files also seem to be playing at 2x the speed they do in-game for some reason regardless of the tool used. (might just need to edit the tempo of the file slower somehow??)"

    Формат музыки HMP - Video Game Music Preservation Foundation Wiki

    Можно взять готовый OST в mp3 (кажется в General MIDI).
    Metaltech Battledrome (MS-DOS) (gamerip) (1994) MP3 - Download Metaltech Battledrome (MS-DOS) (gamerip) (1994) Soundtracks for FREE!

    Можно сконвертировать музыку (потеряв цифровые ударные) используя
    https://www.jades.org/files/hmp2mid.zip
    либо взять готовые мидишки
    Game music base - database of Games, Games music and soundtracks
    (для FM звучания нужны плееры типа gxscc, htsfms, synth, fmtone, опять же будет ни как в оригинале; всеядный плеер hoot с этими извращениями похоже не работает, игру не поддерживает)

    Ещё можно вспомнить о Winamp и foobar, с плагинами читают HMP, хотя в этом нестандартном случае возможно тоже будет проблема.

    RTCM - Files - TekWar Tools
    разные утилиты по этому формату музыки
     
    Последнее редактирование: 19 янв 2025
  3. Talking_Sword

    Talking_Sword

    Регистрация:
    2 авг 2013
    Сообщения:
    462
    Там музыка воспроизведена как простое MIDI, поэтому звучание неправильное.
    Я это попробовал в первую очередь, начал искать информвцию о формате музыки в интернете. Узнал, что foobar2000 может воспроизводить HMP. Но он воспроизводит их с каким-то "левым" банком инструментов, поэтому звучание получается не такое. Та и семплы ударных он тоже не умеет воспроизводить.
    Ничего не нашел подходящего.

    У меня же вопрос был о другом. Насколько сложно как-то модифицировать программу SOUNDPLY, чтобы она брала имя файла не из конфигурационного файла RESOURCE.CFG, а из коммандной строки?
     
  4. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.423
    @Talking_Sword, гораздо сложнее, чем сделать набор бантиков для подмены файлов конфигурации или файла музыки и запуска плеера (либо один большой батник с выбором музыки). Если выбор банка ударных зависит от имени файла, то проще менять файл конфига.
     
    Последнее редактирование: 19 янв 2025
  5. Talking_Sword

    Talking_Sword

    Регистрация:
    2 авг 2013
    Сообщения:
    462
    Это будет вариант "на самый худой конец". Есть какие-нибудь отладчики для DOS? Есть какая-нибудь методология для поиска места в программе, где она считывает значение из файла? Есть какой-то метод, которым можно подменить это считывание значения из файла на получение его из аргументов коммандной строки?
    Вроде он там один на всю игру.
     
  6. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.423
    "Это будет вариант "на самый худой конец"
    Исходя из вопросов - это единственный вариант, если только кто-то другой не захочет это сделать.
    Отладчиков существует много, дебагер даже для dosbox есть встроенный, только без знаний они бесполезны, не всё возможно методом тыка решить, читать нужно много (например, полезно почитать Blog. Just Blog, но он в основном с win32 давно работает). Методом тыка наверное nocd можно только сделать (если нужно обойти участок кода, а не дописать что-то своё), как более-менее шаблонный пример Carmageddon 1997 - NoCD.

    С учетом того что эта приблуда (аудиодвижок игры) работает в защищённом режиме, то двойная печаль.
     
  7. TBAPb MIA

    TBAPb

    Legacy

    Регистрация:
    26 сен 2005
    Сообщения:
    2.073
    Не, там патчи с digitized звуком, в треках TECHOx прямо сразу слышно.

    В целом, не стоит изобретать велосипед, если можно не изобретать.

    В аттаче OGDBL версия шкатулки batteries included.

    JUKEBOX.PS1:
    Код:
    <#
    .Synopsis
       Create Metaltech Battledrome Jukebox
    .DESCRIPTION
       Create Metaltech Battledrome Jukebox helper files so the individual music files
       from the game could be listened outside of the game
    .EXAMPLE
       Place the file in the Battledrome directory and run it
       .\JUKEBOX.PS1
    .NOTES
       Made by TBAPb for Talking_Sword
       https://www.old-games.ru/forum/threads/metaltech-battledrome.114129/
    #>
    
    if (Test-path (Join-Path $PSScriptRoot .\SOUNDSET.INI)) {
    
    $p = $PSScriptRoot
    
    pushd $p -ErrorAction Stop
    
    'Working in {0}' -f $p
    
    $SOUNDSETINI = Get-Content .\SOUNDSET.INI
    
    if ($MUS = gci -Path SOUND -Filter *.HMP) {
        'Found {0} *.HMP files' -f $MUS.Count
        }
    else {
        throw ('ABORT: no HMP files found in the SOUND subdir at {0}' -f $p)
        }
    
    
    'JUKEPLAY.BAT is set to defaults, suit it for your needs'
    
    '..\..\SOUNDPLY.EXE E016 220 1 7 A002 388' | Set-Content JUKEPLAY.BAT
    
    
    
    mkdir JUKEBOX  -ErrorAction SilentlyContinue
    pushd JUKEBOX
    
    foreach ($hmp in $mus) {
    
        mkdir $hmp.basename -ErrorAction SilentlyContinue
        pushd $hmp.basename
        #digiFile=.\..\..\sound\BUTTON.SFX
    $here = @"
    [SoundSet]
    pathSoundPlay=.\..\..\
    pathDrivers=.\..\..\sound\
    digiFile=.\NOTEXIST.RAW
    digiName=Digital Sample
    midiFile=.\..\..\sound\{0}.hmp
    midiName=Midi Song {0}
    "@ -f $hmp.basename  | Set-Content RESOURCE.CFG
    
    $SOUNDSETINI | Set-Content SOUNDSET.INI
    '..\..\JUKEPLAY.BAT' | Set-Content PLAY.BAT
    popd
    }
     popd
     popd
    
     
    }
    else {
    
    throw 'Sanity check did not pass. Place the script in the Metaltech Battedrome directory'
    
    }
    
     

    Вложения:

    Gamerun, Talking_Sword и Tigoro нравится это.
  8. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.423
    "Не, там патчи с digitized звуком, в треках TECHOx прямо сразу слышно."
    Ну... Вообще-то как я и думал, "midisf2 Corak2013 v0.18" и "0.19" :-)
    Здесь попалось Metaltech OST - скачать mp3, слушать музыку онлайн

    А здесь то, что считается из лучших примеров Adlib музыки, треки Adlib Gold (карта более чем с модулем, судя по звуку) - adlib gold - скачать mp3, слушать музыку онлайн

    Вложение - подправил архив под себя (в т.ч. убрал нерабочий трек FOOTFALL, не используемые файлы и комментарий плеера об отсутствии тест-семпла; запуск справки через START.BAT, на экран выводится только информация о треке без рабочих комментариев).
     

    Вложения:

    • MBJC.7z
      Размер файла:
      279,8 КБ
      Просмотров:
      14
    Последнее редактирование: 20 янв 2025
    Gamerun и Talking_Sword нравится это.
  9. Talking_Sword

    Talking_Sword

    Регистрация:
    2 авг 2013
    Сообщения:
    462
    Спасибо. О таком решении не догадался. Думал придется сделать программу, которая бы каждый раз записывала в RESOURCE.CFG имя нужного файла. А оказывается можно все решить при помощи относительных путей. Правда все равно метод костыльный, так как много одинаковых файлов PLAY.BAT и много почти одинаковых RESOURCE.CFG, нужно делать CD в каждую папку. Но как костыльный вариант на худой конец сойдет.

    От файла SOUNDSET.INI в каждой папке можно избавиться - в SOUNDPLY.EXE нужно заменить "SOUNDSET.INI" на "..\..\ET.INI", сам файл переместить в папку с SOUNDPLY.EXE, переименовать в "ET.INI".
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление