Новая реальность - информационный игровой портал

ClrMamePro

Утилита ClrMamePro в среде эмуляторщиков является одной из самых востребованных. Это набор инструментов для управления образами игр.

В настоящее время DAT-файлы для неё выпускают все серьёзные коллекционеры, такие как No-Intro, TOSEC, MAME, и другие, за исключением Cowering, имеющий собственные утилиты для аудита образов игр. И это несмотря на то, что каждый коллектив использует свои правила именования игр!

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

Отдельно стоит упомянуть алгоритмы "слияния" файлов, когда, в одном случае, если несколько файлов в коллекции 100% одинаковые, то на диске сохраняется только один из них, а в базе данных отмечается где его можно найти. Во втором случае в один архив упаковывается несколько похожих по структуре файлов, например, версии одного и того же файла для разных регионов, что делает сжатие игр ещё более эффективным.

Самые известные, и проверенные временем утилиты аудита образов игр это ClrMamePro и RomCenter.

Историческая справка

Исторически clrmamepro это перерождение clrmame. Где-то между ними была выпущена утилита clrmame For Windows.

ClrMame задумывалась как утилита для очистки каталогов с играми для эмулятора M.A.M.E. На тот момент, по мнению автора, ничего другого, серьёзного, для автоматической очистки не существовало. Первоначально это была небольшая консольная утилита, работающая под MS-DOS/Windows. С её помощью можно было провести аудит существующих образов игр, выявить недостающие, лишние, битые, либо неверно названные образы, чтобы потом, по желанию пользователя, привести коллекцию в порядок.

Надо вспомнить, что в конце 90-х с эмуляцией 8-16 бит всё было достаточно сносно, техника даже позволяла замахнуться на эмуляцию 32-х бит. Коллекционеры уже набили руку на домашних системах и компьютерах. Открылись сотни эмуляторских сайтов, многие из которых стали легендарными. Процесс освоения аркадного мира совершался более систематически и с использованием всех наработок в эмуляции последних лет. Необходимость в инструментах для коллекционеров уже назрела.

Программу бессменно пишет и улучшает Roman Scherzer, житель Бонна, что в Германии. Стартовал он будучи студентом, и первые версии утилиты выкладывались на его университетском сайте http://titan.cs.bonn.edu/%7Escherzer/

Первоначальный релиз версии 1.0 состоялся 3-го сентября 1997-го года, в виде 32-х битной консольной утилиты для Windows. Поскольку, в сети была найдена версия 2.2, имеется возможность проследить начальную эволюцию программы.

  • 2.0 (23.09.1997) - исходный код (Си) полностью переписан, добавлены коды ошибок, обработка других игр (не только MAME), новый компилятор (DJGPP/GNU C), поддержка DOS (с помощью cwsdpmi.exe)
  • 2.1 (8 октября) - серьёзно приведены в порядок фильтры, а так же сильно дополнен функционал по очистке/исправлению.
  • 2.2 (22 октября) - поддержка M.A.M.E. 0.29 и выше, добавлена возможность проверки контрольных сумм. В версии 2.21 были исправления.

Благодаря сайту verycomputer.com, можно проследить дальнейшую эволюцию, правда, даты теперь будут соответствовать датам новостей на сайте.

  • 2.3 (4 ноября) - функции автоматического резервного копирования и восстановления.
  • 2.4 (10 декабря) - создание/поддержка DAT-файлов, увеличение скорости обработки в 10 раз.
  • 3.0 (21.01.1998) - поддержка M.A.M.E. 0.30, код на 90% переписан с нуля, улучшена работа с каталогами
  • 3.1 (10 февраля) - поддержка упакованных игр (ZIP)
  • 3.2 (17 февраля) - возможность наращивать функционал утилиты благодаря запуску пакетных файлов (BAT)
  • 3.3 (29 апреля) - поддержка M.A.M.E. 0.31.
  • 3.31 (1 мая) - в основном исправления.

Если верить автору, то clrmame For Windows, оконная версия утилиты, появилась ещё в 1997-м году, а clrmamepro в 1998-м. Скорее всего, в своих подсчётах он ошибся на год, потому как, в дальнейшем приводит другие даты.

Ещё немного про оконную версию. 05.06.1999: ClrMame For Windows 1.36, вероятно, последняя версия в этой линейке. В принципе, чего-то кардинально нового, кроме оконного интерфейса не было, в основном утилита развивалась параллельно MAME, ну, и была добавлена возможность слияния игр для Neo-Geo (очевидно, раньше это уже было возможно и для MAME).

В конце 1999-го года сайт переехал на http://titan.cs.uni-bonn.de/~scherzer/
Помимо нового "белого" дизайна, можно отметить работу над новой утилитой ClrMame Pro. Кроме расширения функционала, надо упомянуть про "притирку" с другими эмуляторами, вроде Raine.

Для ClrMame Pro автор указывает следующие цифры: первая бета-версия clrmamepro стартовала 29.08.1999, а версия 1.00 вышла 20.01.2000. Она уже умела открывать DAT-файлы главного конкурента - ROMCenter. В это время вообще идёт активное создание и заполнение DAT-файлов, во-многом благодаря Logiqx и другим активистам эмуляторского движения.

На рубеже тысячелетий завязалось сотрудничество с сайтом MameWorld и даже был выделен персональных хостинг под проект. 21.02.2000 сайт MameWorld отпочковался от retrogames.com, и сайт ClrMamePro сменился с http://mameworld.retrogames.com/clrmame/ на www.mameworld.net/clrmame

Более современная история уже не так интересна, к тому же, требует много времени. Вспомним, лишь, что весной 2002-го года утилита переехала на собственный домен clrmamepro.com.

Из не найденного: дата, когда Logiqx "подружил" двух грандов, создав уницифированный XML-формат для DAT-файлов, который бы понимали оба конкурента.

Из конкурентов ClrMamePro можно назвать RomCenter от Eric Bole-Feysot, говорят, он проще для новичков. Это тоже весьма древняя утилита. О версии 1.1 стало известно 9-го марта 1999-го года, а в подвале официального сайта можно найти счётчик посетителей, который тикает, начиная с 17-го июня 1998-го года.

Достоверно известно, что уже в самом начала 2000-х обе утилиты использовались на равных, и DAT-файлы выпускались одновременно для обеих.

Из нового:

  • Romulus Rom Manager от F0XHOUND, разработка начата 8 февраля 2010-го года и продолжается до сих пор.
  • RomVault от GordonJ: 12.04.2010 - настоящий день.
  • Для HyperSpin так же было выпущено несколько похожих утилит.
  • Более специализированные утилиты: Rominator, DSFCC, RToolDS.
       

Форматы DAT-файлов

Свои DAT-файлы утилита стала поддерживать начиная с версии 2.4. Формат был простым, посему, его можно было заполнять даже вручную, хотя, вероятность ошибиться была высока. Пример:

clrmamepro (
    name Calice
    description "Calice v0.3.2"
    category "Capcom CPS-1 and CPS-2"
    version 20010531
    author "Logiqx, http://www.logiqx.com/"
)
game (
    name invaders
    description "Space Invaders"
    year 1978
    manufacturer "Midway"
    rom ( name invaders.h size 2048 crc 734f5ad8 )
    rom ( name invaders.g size 2048 crc 6bfaca4a )
    rom ( name invaders.f size 2048 crc 0ccead96 )
    rom ( name invaders.e size 2048 crc 14e538b0 )
)

Несмотря на все свои положительные качества, этот формат требовал специального парсера, что усложняло работу с ним. Поскольку этот формат и его последователь сильно похожи, нет смысла останавливаться на нём детально. Кому интересно, проходим сюда: http://www.logiqx.com/DatFAQs/CMPro.php

С какого-то момента Logiqx предложил универсальный формат для хранения информации об играх. Он основывался на, тогда очень популярном, формате XML, предлагая строгое структурирование данных в сочетании с универсальностью.

Расшифровка XML DAT-формата для ClrMamePro и RomCenter

Полный XML:

<datafile build="CDATA" debug="(yes|no) no">
    <header>
        non-obligatory
        <name>DATNAME</name>
        <description>DESCRIPTION</description>
        <category>non-obligatory</category>
        <version>VERSION</version>
        <date>non-obligatory</date>
        <author>AUTHOR</author>
        <email>non-obligatory</email>
        <homepage>HOMEPAGE</homepage>
        <url>non-obligatory</url>
        <comment>non-obligatory</comment>
        <clrmamepro header="non-obligatory" forcemerging="(none|split|full) split" 
                  forcenodump="(obsolete|required|ignore) obsolete" forcepacking="(zip|unzip) zip">
            non-obligatory
        </clrmamepro>
        <romcenter plugin="non-obligatory" rommode="(merged|split|unmerged) split" 
                  biosmode="(merged|split|unmerged) split" samplemode="(merged|unmerged) merged" 
                  lockrommode="(yes|no) no" lockbiosmode="(yes|no) no" locksamplemode="(yes|no) no">
            non-obligatory
        </romcenter>
    </header>
    <game name="required" sourcefile="non-obligatory" isbios="(yes|no) no" cloneof="non-obligatory" 
                  romof="non-obligatory" sampleof="non-obligatory" board="non-obligatory" 
                  rebuildto="non-obligatory">
        one or more games allowed
        <comment>COMMENT; zero or more comments allowed</comment>
        <description>DESCRIPTION</description>
        <year>non-obligatory</year>
        <manufacturer>non-obligatory</manufacturer>
        <release name="required" region="required" language="non-obligatory" date="non-obligatory" 
                  default="(yes|no) no">
            zero or more releases allowed
        </release>
        <biosset name="required" description="required" default="(yes|no) no" >
            zero or more biossets allowed
        </biosset>
        <rom name="required" size="required" crc="non-obligatory" sha1="non-obligatory" 
                  md5="non-obligatory" merge="non-obligatory" 
                  status="(baddump|nodump|good|verified) good" date="non-obligatory">
            zero or more roms allowed
        </rom>
        <disk name="required" sha1="non-obligatory" md5="non-obligatory"
              merge="non-obligatory" status="(baddump|nodump|good|verified) good">
            zero or more disks allowed
        </disk>
        <sample name="required">zero or more samples allowed</sample>
        <archive name="required">zero or more archives allowed</archive>
    </game>
</datafile>

Несмотря на то, что формат в своё время считался универсальным, со временем разработчики стали по личной инициативе дополнять его под свои нужды. Например, коллекции от Trurip содержат много дополнительных данных, таких как жанр игры, количество игроков, и так далее. В коллекциях от Redump у каждой игры есть category.

<datafile>

Корневой элемент datafile содержит два важных элемента: header и game. Тег header не является обязательным и хранит информацию описательного характера. Теги game описывают образы игр, и их следует заполнять с особой тщательностью.

Заявленные атрибуты build, debug в дикой природе никогда не встречались.

<header>

Тег header по спецификации не является обязательным. По-сути, это набор описаний DAT-файла: название, содержимое, автор и прочая информация. В этот набор тегов входит и несколько обязательных: name, description, version, author.

  • name - название DAT-файла без его версии, например, MAME, MAME - CHDs, Nintendo - Nintendo DS Parent-Clone, Nintendo Famicom Disk System - Games. По первоначальной спецификации это название эмулятора, правда, это правило в случае не-аркадных машин почти никогда не применяется.
  • description - как правило, это полное название DAT-файла без расширения, например: MAME v0.140, MAME - CHDs (v0.180), Nintendo - Nintendo DS Parent-Clone, Nintendo Famicom Disk System - Games (TOSEC-v2014-06-30). По спецификации это название эмулятора с его версией - то, что ClrMamePro отображает. Поскольку не существует чёткого предписания, description не всегда совпадает с названием DAT-файла. Если говорить в общем, то это описание DAT-файла.
  • category - категория. Весьма противоречивое поле, поскольку различные коллекционеры заполняют его как хотят, либо, как в случае No-Intro, не заполняют вовсе. Примеры: Multi Game Arcade Emulator, Arcade, TOSEC, TOSEC-ISO. По спецификации это главный комментарий об эмуляторе (или типах поддерживаемых игр).
  • version - версия. Тоже заполняется абы как, либо не заполняется вовсе (хотя и является обязательным).
    Часто повторяет содержимое даты, посему, может опускаться в пользу последней. Примеры: 20101027, 0.180, 2014-06-30. По спецификации рекомендуются форматы YYYYMMDD, поскольку такие версии легко поддаются правильной сортировке.
  • date - дата. Необязательное значение, иногда опускается в пользу версии. На удивление, не имеет строго определённого формата. Примеры: 2010-10-27, 20161108-105112.
  • author - автор DAT-файла. Примеры: Logiqx, ARMAX, kazumi213, Cassiel - Yori Yoshizuki. Ранее по спецификации тут указывались емэйл и сайт разработчика. Сейчас для них есть соответствующие записи.
  • email - не обязательный емэйл автора.
  • homepage - домашняя страница. Логика подсказывает, что это текстовое описание для тега url. Часто опускается. Примеры: Logiqx Home Page, TOSEC.
  • url - ссылка на сайт разработчика.
  • comment - комментарий к DAT-файлу. Как правило, комментарий попросту не нужен, опускается, либо заполняется автоматически утилитами, работающими с ROM'ами. Но встречаются и грамотные комментарии: Please report any data file issues at http://forum.logiqx.com/.
  • clrmamepro - специализированный тег для ClrMamePro. Описывается ниже.
  • romcenter - специализированный тег для ROMCenter, Описывается ниже.

<clrmamepro>

Этот необязательный тег может содержать следующие атрибуты:

  • header - не обязательное определение заголовка. Что это такое? У многих образов игр имеются заголовки. Фактически, эти заголовки создавались теми, кто дампил игры, чтобы как-то идентифицировать образы игр или описывать внутреннее содержимое. Так что информация самой игры начиналась немного позднее. Например, в случае NES, первые 16 байт это заголовок, который начинается с букв NES. Автор ClrMamePro придумали специальный XML формат для идентификации заголовка и фактического образа игры. Несколько таких файлов идёт в комплекте с утилитой. Что интересно, в них предусмотрено выполнение определённой операции. Вероятно, даже имеется возможность удалять заголовки, либо менять поведение утилиты в зависимости от содержимого/типа заголовка.
  • forcemerging - принудить утилиту выполнить слияние одинаковых файлов, либо не выполнять его совсем.
    Допустимые значения: none, split, full. По умолчанию: split. Стоит немного остановиться на этих параметрах. В случае none файлы для каждой игры сохраняются в своём, индивидуальном каталоге, либо ZIP-файле. Вариант split подразумевает, что "родительская" игра имеет все файлы, а, так называемые "клоны" только те файлы, которые отличаются от родительских. Наконец, в случае full слияния, все файлы родительской игры, а так же все файлы клонов сохраняются в одном каталоге/ZIP-файле. При этом достигается ещё большая экономия места, поскольку, даже если какие-то файлы различаются, эти отличия могут заключаться в нескольких байтах, что благотворно сказывается на степени сжатия данных.
  • forcenodump - определить, что делать с не задампленными образами. Допустимые значения: obsolete, required, ignore. По умолчанию obsolete.
  • forcepacking - определить стратегию упаковки образов. Допустимые значения: zip (по умолчанию), либо unzip. В старом формате имелась похожая инструкция,forcezipping, позволявшая ClrMamePro использовать ZIP-файлы либо директории.

Любые не предопределённые значения отключают соответствующий атрибут.

Детали на странице утилиты: http://mamedev.emulab.it/clrmamepro/docs/htm/datfile.htm

<romcenter>

RomCenter не столь популярен, к тому же, представленные настройки, в целом, дублируют аналогичные для ClrMamePro, поэтому, детально заострять на них внимание не будем.

  • plugin - аналог header, правда, выполняемый в виде dll-плагинов. Плагин имеет неограниченную власть над образами игр, например, может посчитать контрольную сумму без учёта заголовка, или с учётом порядка байт в словах.
  • rommode: (merged|split|unmerged). По-умолчанию: split.
  • biosmode: (merged|split|unmerged). По-умолчанию: split.
  • samplemode: (merged|unmerged). По-умолчанию: merged.
  • lockrommode: (yes|no). По-умолчанию: no.
  • lockbiosmode: (yes|no). По-умолчанию: no.
  • locksamplemode: (yes|no). По-умолчанию: no.

Страница утилиты: http://www.romcenter.com

<game>

Тег game, как правило, повторяется многократно. Среди DAT-сборок для MAME бывает, что этот тег заменяется тегом machine или set. В каждом DAT-файле тег game должен встречаться хотя бы раз. Каждый тег описывает один образ игры, состоящий из одного файла, либо из набора файлов. У game имеется несколько атрибутов, включая один обязательный - name.

Доступные атрибуты:

  • name - название игры. Или в общем, название. В общем случае, это название архива, в который упаковывается игра, без расширения. В частных случаях название приближено, либо совпадает с полным названием игры, или, как это сделано в случае MAME, напротив, сильно сокращённое название, почти аббревиатура. Примеры: 10yard, 2spicy, 007 - Blood Stone (Europe), Adian no Tsue (1986)(Sunsoft).
  • sourcefile - плохо задокументированный атрибут. Судя по-всему, это имя файла с исходным кодом. Свойство встречалось в сборках MAME (тех, что с machine), и указывало на файл с исходным кодом, который обрабатывает данное железо. Например, segag80r.cpp для систем Sega G-80.
  • isbios - является ли образ BIOS'ом (yes|no). По умолчанию no.
  • cloneof и romof - очень интересные свойства, связанные с процессом слияния образов игр (для уменьшения занимаемого места на дисках). По смысловой нагрузке они очень похожи. Свойство cloneof представляет собой условную, логическую связь между двумя играми. То есть, по нему можно выявить, является ли образ игры основным, или всего лишь какой-то версией, клоном. Свойство romof говорит о том, что образы игр могут использоваться совместно. То есть, оно говорит о физической связи между двумя играми. При обработке DAT-файла, одинаковые файлы не дублируются а используется только одна-единственная версия. Экономия места на диске приличная. По факту-же, CMPro игнорирует значение свойства romof, и, для определения совместно используемых образов полагается на свойство cloneof. Впрочем, автор стандарта настоятельно рекомендует использовать оба свойства одновременно, дабы не было несовместимости при переводе данных из формата CMPro в RomCenter и наоборот. Есть ещё один момент. По спецификации может существовать только одна родительская игра, и у неё большое количество клонов. У клонов, же своих клонов быть не может. Посему, например, в базе данных WinKawaks, даже родительские игры могут иметь свойство romof, хотя, клонами не являются. Так достигается 3 уровня зависимости вместо традиционных двух.
  • sampleof - свойство, позволяющее совместное использование сэмплов. Тут указывается название игры, например invaders, в которой следует искать недостающие сэмплы.
  • board - не документированное свойство. Очевидно, тут указывается материнская плата аркадной системы, но на практике применение этого свойства не найдено.
  • rebuildto - это инструкция для ClrMamePro - перенести игру в указанный каталог, например namco/english.

Доступные теги:

  • comment - один либо несколько комментариев. Фактически, они не нужны, но, применяются, например, в файле Daphne v0.99.7.dat: Notes for astronp:, ROM from astron: 5284.
  • description - описание игры. В отличие от атрибута name, это действительно полное описание игры. Примеры: 10-Yard Fight (World, set 1), 2 Spicy, 007 - Blood Stone (Europe), Adian no Tsue (1986)(Sunsoft).
  • year - год выпуска. Самое забавное, что в TOSEC этот тег не используется, и год выпуска указывается только в названии игры. Хотя этот тег не является обязательным, ClrMamePro использует его при выводе данных на экран, так что, значение рекомендуется указывать. Пример: 1987.
  • manufacturer - производитель (очевидно, аркадного автомата). Видимо, это синоним издателя. Пример: Namco.

release - свойство, указанное в спецификации, но фактически используемое только командой No-Intro. Это описание одного, либо нескольких релизов игры. Такой пример - образ игры мог неизменным использоваться в Европе и США. В таком случае у игры будет два релиза, один для Европы, второй для США, и для каждого описана своя специфика. Имеется несколько атрибутов, первые два являются обязательными. Пример: <release name="007 - Blood Stone (Europe)" region="EUR"/>.

  • name - название релиза.
  • region - регион.
  • language - язык.
  • date - дата выпуска.
  • default: (yes|no). По умолчанию no.

biosset - обычно используется с тегом machine, и указывает один или несколько BOIS'ов для каждой конкретной машины. Пример с двумя обязательными атрибутами: <biosset name="kick13" description="Kickstart 1.3 (34.5)"/>. Атрибут default как правило не используется.

rom - спецификация каждого конкретного ROM'a. У игры их может быть 0 и более, хотя, на практике, rom почти всегда встречается хотя бы один раз. Доступные атрибуты (name и size - обязательные):

  • name - название образа игры, включая расширение. Игра на диске хранится под этим названием. Примеры: yf-a-3p-b, 007 - Blood Stone (Europe).nds, Adian no Tsue (1986)(Sunsoft).fds.
  • size - размер образа в байтах.
  • crc - контрольная сумма образа игры по алгоритму CRC-32. Так же этот тег можно встретить и в виде crc32. Это 8 букв или цифр. Утилиты допускают, что перед контрольной суммой можно указывать 0x, но на практике эти данные избыточны. CRC32 не самый достоверный способ определения различия между файлами, однако, он активно используется в архиваторах (так что, для получения, достаточно взять значение из архива), контрольных суммах CD-ROM и многих других сферах, поэтому исторически очень распространён. Пример: fbe0d501. Значение 00000000 использовалось прежде для указания не сдампленных образов, но теперь в ClrMamePro имеется специальное свойство nodump.
  • sha1 - контрольная сумма образа игры по алгоритму криптографического хеширования SHA-1. Наиболеее достоверный из представленных. Пример: bfa277689790f835d8a43be4beee0581e1096bcc.
  • md5 - контрольная сумма образа игры по алгоритму MD5. Это 128-битный алгоритм хеширования. Используется не так часто, как предыдущие. Пример: F7F5A87552D41FE1682F70FDA66DBF3B.
  • merge - свойство, управляющее процессом слияния файлов. Бывают случаи, когда файлы на 100% одинаковые, но различаются названиями. Для таких случаев указывается атрибут merge. Пример: name="yf-s-3b.3b" merge="yf-s.3b". Естественно, для игры были указаны следующие свойства: cloneof="10yard" romof="10yard". Теперь утилита обработки образов игр знает, что образ yf-s-3b.3b идентичен образу yf-s.3b из игры 10yard и корректно проведёт слияние. ClrMamePro обладает продвинутой логикой и может успешно произвести слияние даже при отсутствии данного свойства. Однако, для других менеджеров ROM'ов и наглядности его рекомендуется указывать в любом случае.
  • status - состояние ROM'а: (baddump|nodump|good|verified). По-умолчанию: good.
  • date - дата создания образа игры. На практике не используется, хотя, стоило бы, например, для образов NES. Пока известен следующий формат записи даты: 2007/01/31 19:46:20.

disk - Данные о подключаемых образах дисков, как правило, для MAME. Всё, что было выше написано про rom, справедливо и для disk. Примеры: <disk name="mda-c0004a_revb_lindyellow_v2.4.20_mvl31a_boot_2.01" merge="mda-c0004a_revb_lindyellow_v2.4.20_mvl31a_boot_2.01" sha1="e13da5f827df852e742b594729ee3f933b387410" region="cf"/>, <disk name="99bottles" sha1="0b874178c8dd3cfc451deb53dc7936dc4ad5a04f" region="cdrom"/>. В обоих случаях использовался не стандартный атрибут region, указывающий, как ни странно, тип образа диска, например, CD-ROM, DVD, GD-ROM или даже ide:0:hdd:image.

sample с единственным атрибутом name - указатель на файлы сэмплов. Некоторые игры, для идеальной эмуляции, нуждаются в дополнительных файлах, часто, в аудио записях. Например, в игре для воспроизведения звука использовались механические средства, либо звук с кассеты. В таком случае, разумно записать этот звук на качественный микрофон и выложить как есть. Как и образы игр, сэмплы можно эффективно упаковывать (merge). Пример: <sample name="dropbomb"/>.

archive с единственным атибутом name, вероятно, служит для аналогичных целей, но указывает на архивы данных.

Ссылки

Замечания, рекомендации

Редакция от 13.01.2017 12:06