подскажите, а чем можно вышеуказанный ayphas.ay сконвертить в PSG или EPSG формат на линуксе?
Вид для печати
подскажите, а чем можно вышеуказанный ayphas.ay сконвертить в PSG или EPSG формат на линуксе?
Он в PSG не конвертируется. Там идёт многократная перезапись одних регистров в рамках одного фрейма (а точнее - в рамках наносекунд).
хм, а я уже в ay_emul сконвертил в psg и тестирую... :D теперь понятно, почему я мелких деталей не вижу. Любопытно, что звучит на слух похоже.
А в epsg можно его сконвертить? Там-же такт записи есть...
И чем, чтото не вижу в ay_emul 2.9 сохранения в epsg, хотя где-то на сайте было написано что поддерживает.
Там есть фрагменты со сбросом таймера тона, записывается 0 в делитель, и сразу другое значение. Что такое EPSG я не в курсе. .AY/.SNA как правило хватало.
мне для тестов нужно чтобы был просто набор данных - время, номер регистра, значение, когда и что записывать в регистры, без эмуляции Z80
ZXMAK, насколько понимаю нет такого формата, в котором время бы кодировалось в условных наносекундах, а не прерываниях. А epsg нигде даже не описан.
EPSG вот тут описан: https://documentation.help/AY-3-8910...m/ay_e9zqf.htm
грубо говоря EPSG сигнатюра вначале и 5 байт на запись описывающую в какой регистр на каком такте что писать, 0xFFFFFFFFFF для прерывания. Насколько понимаю такт задается внутри фрейма (от начала прерывания), т.к. на него выделено всего 3 байта.Код: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
ZXMAK, гуглом такое не нашел (или плохо искал). В таком формате да, что угодно можно дампануть. Но формат сильно экзотический. И видимо ayemul его не особо поддерживает (для сохранения по крайней мере).
как мне кажется epsg гораздо удобнее для эмуляции AY например на контроллерах - не нужно эмулировать z80, только и знай что значения в регистры подкидывай в нужное время... странно, что он не получил широкого распространения.
Есть еще формат ZXAY: https://documentation.help/AY-3-8910...m/ay_e65a1.htm
может в него можно чем-то AY сконвертить?
Как оказалось, AY_EMUL поддерживает преобразование в ZXAY. Прилагаю файл теста в формате ZXAY в аттачменте.
Описание формата ZXAY не раскрывает всех деталей и не без приколов.
Структура соответствует описанию, файл начинается с символов ZXAY, далее идут записи по 4 байта, структура записи:
Однако время Time, как оказалось, указывается как значение глобального счетчика тактов Z80 обрезанного с помощью AND 0xFFFFF до 20 бит (довольно неожиданный подход).Код:Bit numbers Name
0–19 Time
20–23 Register
24–31 Data
Для каждого переполнения счетчика записывается специальная метка 0xFFF00000. При чтении файла такую метку следует интерпретировать как добавление +0x100000 к последующей нормальной записи, все поля такой метки следует игнорировать. Меток может быть несколько подряд, тогда к последующей нормальной записи нужно добавить соответствующее число раз 0x100000 к значению Time.
Запись значений в регистры AY, которая не меняет значение регистра, кроме регистра 13, формат игнорирует и не включает такие записи. Начальное состояние регистров как после сброса. Поэтому в этом формате идут только те записи в регистр, которые меняют содержимое регистра.