Просмотр полной версии : Фоновое проигрывание AY/YM музыки в меню Aeon
ILoveSpeccy
04.05.2009, 17:59
Есть вопрос к специалистам!
Была идейка в главное меню Aeon добавить какую нибудь AY музычку!
Сначала хотел просто записать в 8 бит моно WAV, но размер уж больно
большой получается. Потом подумал, а что если взять и записать с эмуля
все обращения к AY и просто повторить их?
Меня интересует вот что:
каким образом формируется AY музыка? Каждое /INT прерывание грузятся
регистры AY или както подругому?
Каждое /INT прерывание грузятся
регистры AY
ага. можешь в AY емуль любой музон скинуть в PSG (дамп регистров), размер будет 50-200кб.
ILoveSpeccy
04.05.2009, 22:40
ага. можешь в AY емуль любой музон скинуть в PSG (дамп регистров), размер будет 50-200кб.
Ага, дамп сделать получилось!
Только теперь осталось разобраться с форматом PSG:)
Может есть инфа какая нибудь о формате этих PSG-файлов???
Добавлено через 5 минут
Уже нашел!!!!!!!!
molodcov_alex
04.05.2009, 22:49
В AY_emul в хелпе есть описание.
Существуют как обычные PSG, так и расширенные EPSG. Кроме того, существуют PSG2-файлы, аналогичные ZX50-файлам (их описание можно найти на сайте RDOSPLAY), но поддерживать их в данном Эмуляторе автор не видит смысла. В интернете немало PSG файлов эмулятора БК, но они пока не поддержаны в Ay_Emul.
PSG
Данные файлы создаются эмулятором Speccy 'x128' by James McKay, а также эмулятором fMSX, которым пользоваться не приходилось. Что касается первого, то он при создании PSG файлов допускает ошибки. Поэтому лучше всего пользоваться эмулятором Speccy “Z80 Stealth” Кирилла Колпакова (Mr.Kirill). Кирилл в своё время охотно внедрил в свой эмулятор некоторые предложенные мной функции, сильно упрощающие процесс создания PSG файлов. Кроме того, последние версии Z80 Stealth позволяют с легкостью создавать PSG-файлы, используя возможности встроенного отладчика. Скачать эмулятор можно с http://z80.da.ru/.
Ниже предложено всё, что удалось найти в Интернете.
Смещение Число байт Описание
+0 3 Идентификатор 'PSG'
+3 1 Маркер, равный "1Ah"
+4 1 Номер версии
+5 1 Частота прерываний (для версий 10+).
+6 10 Неизвестно
Далее следуют строки байтов, начинающиеся с 0FFh или 0FEh. Байт 0FFh – маркёр начала прерывания. Если вслед за ним идёт байт от 0 до 15, то это номер регистра АY, в который произошёл вывод значения, следующего за этим байтом. Далее идёт следующая двойка байт, первый байт которой – номер регистра, а второй – значение. И так пока не встретится маркер следующего прерывания, конец файла или байт 0FEh. Байт, следующий за 0FEh, помноженный на 4 даст количество прерываний, в течении которых не было вывода на сопроцессор. Если в PSG-файле встретится номер регистра от 16 до 252 – не расстраивайтесь. Этот и следующий за ним байт можно просто проигнорировать (это вывод на другие устройства MSX).
Согласно документации RDOSPLAY, байт 253 является маркером конца музыки, но данный маркер не поддержан в данном Эмуляторе.
Немного дополнительной информации. Как удалось узнать, некоторые эмуляторы сохраняют более простой заголовок – только первые четыре байта, то есть вывод на AY начинает сохраняться уже со смещения +4. Данный же Эмулятор не приспособлен для загрузки PSG с таким заголовком, но в большинстве случаев такие PSG играются (конечно, теряются первые несколько выводов). Поэтому, если вы занимаетесь конвертированием модулей PSG, созданных с таким заголовком, в другие форматы (VTX или YM6) с помощью данного Эмулятора, вам нужно вручную подкорректировать заголовки этих PSG и привести их к описанному выше виду.
EPSG
Данные файлы создаются эмулятором Speccy “Z80 Stealth” Кирилла Колпакова (Mr.Kirill). В отличие от обычных PSG, EPSG хранит информацию не только о выводе в конкретные регистры, но и о времени вывода, в связи с чем, EPSG, также как OUT и ZXAY, может хранить вывод на AY с точностью до такта Z80.
Далее слегка отредактированный текст из z80s.faq:
Q: What is it - this EPSG format?
A: It's PSG format improved just a bit to handle output of digitized samples
Here's the description:
Offset Length Value
============================
Header
============================
0 4 'EPSG'
4 1 0x1A marker
5 1 Machine type: 0x00 - ZX Spectrum 128 0x01 – Pentagon
0xFF – Other machines
6 4 Zero for machine type 0x00 and 0x01 or
Number of Z80 tacts between interrupt markers
for other machines
10 6 zeroes
============================
AY(YM) log during 1 frame
============================
16 1 AY(YM) register number
17 1 value written to this register
18 3 T-state
.....
?? 5 0xFFFFFFFFFF - interrupt marker
а протрекер не лучшели проиграть? хотя мне кажется щас начнётся холивар по поводу обхождения стороной других трекеров
ILoveSpeccy
05.05.2009, 22:54
Мне нужен самый "простой" формат хранения AY музыки
так как проигрываться он будет не процессором а напрямую из памяти
стэйт-машиной в FPGA.
Посмотрел описания разных форматов в хэлпе AY emul.
Формат PSG на мой взгляд очень хорошо для этого подходит.
Правдя пришлось его нечного "под себя" переделать.
2 минуты музыки упаковываются в 70кб.
Подробности позже, когда идея "заработает".
PSG - очень удобный формат. В отличие от PT3 и прочих трекерных форматов его практически невозможно проиграть неправильно (например из-за неверной обработки команд плеером). К тому же не нужно делать абсолютно никаких вычислений. В противовес этому идёт только размер проигрываемого файла (хотя PSG пакуется неплохо)
я высказал своё ИМХО, что протрахер лучшее...
Не знаю насчет простоты, но в природе ходят еще и .AY и .YM форматы, размерчик небольшой, и к треккерам кажется не привязаны.
Мне нужен самый "простой" формат хранения AY музыки
так как проигрываться он будет не процессором а напрямую из памяти
стэйт-машиной в FPGA.
Посмотрел описания разных форматов в хэлпе AY emul.
Формат PSG на мой взгляд очень хорошо для этого подходит.
Правдя пришлось его нечного "под себя" переделать.
2 минуты музыки упаковываются в 70кб.
Подробности позже, когда идея "заработает".
Вообще-то 2 минуты на 70 кб это черезчур много. Это даже чистый дамп по 14 байт на фрейм выходит 82кб, а PSG намного компактнее: обычно 2 минуты в PSG занимает порядка 40-50 килобайт.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot