PDA

Просмотр полной версии : Вектор-06Ц: Эмуляция - AY-3-8910 (YM2413)



ivagor
13.07.2009, 22:22
До 1 апреля ждать слишком долго, поэтому можете заценить следующий изврат уже сейчас:Бейсик 2.5 (http://sensi.org/~svo/scalar/ware/469/), в котором оператор PLAY играет не через таймер, а через Sound Tracker (AY). Функционал PLAY не изменялся, дополнительные возможности AY (громкость, огибающие, шум) не используются, зато вроде работает.

Пара игрушек, чтобы послушать
12524
Еще Business (http://sensi.org/~svo/scalar/ware/505/)

Удобно пробовать в эмуляторе b2m, т.к. у него есть перехват загрузки с кассеты в бейсике (CLOAD"" дальше выбираем CAS файл). Можно было бы, конечно, и дисковый бейсик модифицировать, но смысла не вижу.

ivagor
14.07.2009, 10:04
Забыл написать - переделать с ВИ53 на AY поточным методом теоретически можно и остальные программы (в т.ч. игрушки) использующие Драйверы устройств (http://sensi.org/~svo/scalar/ware/575/), но звук от этого автоматически не улучшится.

Ramiros
15.07.2009, 10:09
ivagor, в VV звука нет
хм.. странно, при повторном запуске звук появился

ivagor
15.07.2009, 11:28
ivagor, в VV звука нет
хм.. странно, при повторном запуске звук появился
Попробовал в 5.85
10 PLAY"CDA"
20 GOTO 20
звук есть.
Попробовал игрушку HOUSE - звук есть.
Даже не знаю, что могло быть не так, а как ты проверял?

Ramiros
15.07.2009, 12:35
Попробовал в 5.85
10 PLAY"CDA"
20 GOTO 20
звук есть.
Попробовал игрушку HOUSE - звук есть.
Даже не знаю, что могло быть не так, а как ты проверял?

Запустил бейсик в режиме i8080
написал следующее:
color 7
cls
screen 2,7
himem 40959
cload""
загрузил игру ( игра в 16 килобайт немного неукладывается, поэтому требуется расширить ОЗУ).
игра запустилась нормально, но первый раз я в himem адрес по ошибке больше указал, и видимо стек затер и бейсик возможно сглючил,
игра запустилась но вместо звука слышны были только редкие щелчки.

больше этот глюк ненаблюдался :)

---------- Post added at 14:35 ---------- Previous post was at 14:32 ----------

Есть небольшое замечание, если проигрывать одну и ту же ноту несколько раз подряд, то она звучит как одна длинная, а не как несколько коротких.

ivagor
15.07.2009, 15:44
Есть небольшое замечание, если проигрывать одну и ту же ноту несколько раз подряд, то она звучит как одна длинная, а не как несколько коротких.
Записал я звук с ВИ53 и AY и увидел следующее:
ВИ53 в режиме 3 (да и в других тоже) при загрузке значения счетчика начинает счет заново (в звуковом файле эти моменты можно описать как "места изменения скважности"), что соответствует книжке, которая у меня есть.
AY, как я понял, при изменении значения регистров 0-5 не перезапускает счет (эти моменты в звуковом файле, в отличие от варианта ВИ53, не видны)? В доках, которые у меня есть, этот вопрос не разъяснен. Можно как-нибудь принудительно "перезапустить" счетчик AY?

ivagor
15.07.2009, 16:35
упоминавшиеся звуковые файлики

Ramiros
16.07.2009, 10:34
Записал я звук с ВИ53 и AY и увидел следующее:
ВИ53 в режиме 3 (да и в других тоже) при загрузке значения счетчика начинает счет заново (в звуковом файле эти моменты можно описать как "места изменения скважности"), что соответствует книжке, которая у меня есть.
AY, как я понял, при изменении значения регистров 0-5 не перезапускает счет (эти моменты в звуковом файле, в отличие от варианта ВИ53, не видны)? В доках, которые у меня есть, этот вопрос не разъяснен. Можно как-нибудь принудительно "перезапустить" счетчик AY?

простого способа нет, если только записать в R0,R1(R2-R5) нули, а потом записать новое значение, тогда произойдет перезапуск счета

ivagor
16.07.2009, 13:04
Ramiros, спасибо за идею, но пока она сработала не на 100%
12563
Ирония в том, что в VV вобще не получилось "перезапуска счетчика" :) а в b2m видны 2 "перезапуска" (первого нет, есть 2й и 3й, можно сравнить с ранее выложенными вариантами с ви53) вместо 3х (4 ноты). Наверно нужно сделать побольше паузу между обнулением и занесением нужных значений, но вопрос такой - а сколько можно сделать min паузу? Пауза то сама по себе даст "стаккато", но не хотелось бы тратить на это время. Можно конечно сделать задержку в прерывание (получили ноту, но сразу не начали ее играть, а подождали до следующего прерывания), но это IMHO слишком длинная пауза. Есть еще какие-нибудь идеи?

Ramiros
16.07.2009, 13:57
Ramiros, спасибо за идею, но пока она сработала не на 100%
12563
Ирония в том, что в VV вобще не получилось "перезапуска счетчика" :) а в b2m видны 2 "перезапуска" (первого нет, есть 2й и 3й, можно сравнить с ранее выложенными вариантами с ви53) вместо 3х (4 ноты). Наверно нужно сделать побольше паузу между обнулением и занесением нужных значений, но вопрос такой - а сколько можно сделать min паузу? Пауза то сама по себе даст "стаккато", но не хотелось бы тратить на это время. Можно конечно сделать задержку в прерывание (получили ноту, но сразу не начали ее играть, а подождали до следующего прерывания), но это IMHO слишком длинная пауза. Есть еще какие-нибудь идеи?

В эмуляторе записав нули необходимо выждать минимум 27 тактов (непутать с циклами), чтобы регистры успели обновится, т.к. внутренняя частота AY=1.77 MHz / 16.
наверное это условие справедливо и для реалного чипа.

ivagor
16.07.2009, 14:29
В эмуляторе записав нули необходимо выждать минимум 27 тактов (непутать с циклами), чтобы регистры успели обновится, т.к. внутренняя частота AY=1.77 MHz / 16.
наверное это условие справедливо и для реалного чипа.
У меня уже было больше 27 тактов между обнулением регистров и заданием новых значений, но добавил еще
12569
в b2m ничего не изменилось. В VV теперь видны моменты обнуления регистров, но перезапуска не происходит (это видно если сравнить с ВИ53, там после записи в счетчик начинается новый период, а тут ненадолго прерывается и продолжается).
С вариантом бейсика для AY пока непонятно что делать, зато узнал больше о различиях AY и ВИ53.

Ramiros
17.07.2009, 10:32
У меня уже было больше 27 тактов между обнулением регистров и заданием новых значений, но добавил еще
12569
в b2m ничего не изменилось. В VV теперь видны моменты обнуления регистров, но перезапуска не происходит (это видно если сравнить с ВИ53, там после записи в счетчик начинается новый период, а тут ненадолго прерывается и продолжается).
С вариантом бейсика для AY пока непонятно что делать, зато узнал больше о различиях AY и ВИ53.

Да, щас глянул исходники, все верно, перезапись регистров R0..R5 неперезапускает, счетчик. счетчик перезагружается только по окончанию счета т.е. при обнулении.
Единственный способ, это затыкать канал через регистр R7 после чего выдержать паузу может быть равную одному прерыванию.

ivagor
17.07.2009, 13:02
Единственный способ, это затыкать канал через регистр R7
я через громкость (до 0) делал, код несколько короче получается (при знании номера канала).


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

---------- Post added at 15:02 ---------- Previous post was at 13:33 ----------

Сделал задержку примерно 5000 тактов - на слух стало восприниматься практически как на ВИ53. Но задержка 5000 тактов при каждой смене ноты - это не здорово. Еще не хватает пары байт, чтобы громкость нормальную установить.

ivagor
18.07.2009, 18:03
Ramiros, если будет время взгляни на журнал "Радиолюбитель. Ваш компьютер", 2000/11, стр. 33-35.
Ссылки есть здесь

Выложил все номера за 2000 год:
или можно скачать сборник статей Ивана Рощина отсюда
http://ivr.webzone.ru/articles/index.htm
статья там называется mus_sopr

Ramiros
19.07.2009, 11:38
Ramiros, если будет время взгляни на журнал "Радиолюбитель. Ваш компьютер", 2000/11, стр. 33-35.
Ссылки есть здесь

или можно скачать сборник статей Ивана Рощина отсюда
http://ivr.webzone.ru/articles/index.htm
статья там называется mus_sopr

Прочитал, но я с автором несколько несогласен, выход генератора тона меняет свой уровень сигнала на противоположный не при обнулении и перезагрузке счетчека, а путем сравнения счетчика с теме же регистрами делителя (R0,R1 для канала А), что и приведет к искажениям при их перезаписи, а если согласиться с автором то частота на выходе генератора должна делится еще на 2, либо необходимо выполнить внутреннее деление делителя на 2 перед загрузкой в счетчик, в чем я очень сомневаюсь, т.к. это приведет к искажениям тона на высокой частоте. Либо внутренний предделитель частоты для генераторов тона болжен быть не 16, а 8.

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

ivagor
19.07.2009, 11:46
Хорошо бы на реальном AY или YM проверить.
Tim0xA, может эту дискуссию в железо или в новую тему перенести?

Ramiros
19.07.2009, 11:54
кто то тут нетак давно хвалился своим самопальным вектором с AY, вот его и надо попросить.
http://zx.pk.ru/showthread.php?t=9457

Tim0xA
15.10.2009, 01:54
Прикрутил к своему Вектору омский вариант музыкального сопроцессора (http://www.sensi.org/~svo/scalar/ware/518/) :v2_yahoo:
У меня чип YM2149F, имелась оригинальная печатная плата. Что удивительно, заработал сразу, обычно так не везет ;)
Сначала загрузил Tank Battalion (http://www.sensi.org/~svo/scalar/ware/2), а сейчас слушаю музон из рекламы диззи (http://www.sensi.org/~svo/scalar/ware/95/).

Открываем тему "Точность эмуляции AY-8-8910 и YM2149F"? ;)

---------- Post added at 00:04 ---------- Previous post was at 00:02 ----------

clrslow.rom от b2m ничо так звучит, такое стерео прикольненькое :)

---------- Post added at 00:09 ---------- Previous post was at 00:04 ----------

Не нашлось под рукой кварца на 14МГц, поставил 14.31818МГц (значит звук не совсем честный) и вместо ЛИ6 пришлось поставить ЛА1 (но т.к. других устройств на ВУ нет, это не проблема).

---------- Post added at 00:54 ---------- Previous post was at 00:09 ----------

Запись (http://rapidshare.de/files/48522560/m_color.mp3.html) из демки Multicolor (http://www.sensi.org/~svo/scalar/ware/32)

ivagor
15.10.2009, 06:54
Похоже, вчера был удачный день для вектористов :)

ivagor
15.10.2009, 08:58
Tim0xA, попробуешь basic с play через AY (http://sensi.org/~svo/scalar/ware/469/)?
В этой ветке
Эмуляция AY с Ramirosом несколько умозрительно обсуждали вопрос о перезагрузке счетчика AY. Если сделать
10 PLAY"L4CCCC" (или любую другую ноту, но подряд несколько раз)
20 GOTO 20
на ВИ53 они слышны раздельно, на AY в эмуляторе слитно, а на реальном AY?

Ramiros
15.10.2009, 14:25
Tim0xA, немогу я с рапида скачать, у нас на всю сеть один IP

Кстати было бы неплохо довести до ума эмулятор AY на ATMega

Rindex
15.10.2009, 14:37
немогу я с рапида скачать, у нас на всю сеть один IP

А тебе надо это?:

Запись (http://rapidshare.de/files/48522560/m_color.mp3.html) из демки Multicolor (http://www.sensi.org/~svo/scalar/ware/32)

Тогда держи ссылку (http://narod.ru/disk/14156198000/m_color.mp3.html) на народе. Хотя такого, как с главной рапиды, проблем скачки с немецкой не возникало. Просто файлы там долго не живут.

Tim0xA
15.10.2009, 16:37
Кстати было бы неплохо довести до ума эмулятор AY на ATMega
Перекомпилируй последнюю версию для Atmega8515.

---------- Post added at 15:37 ---------- Previous post was at 15:36 ----------


Tim0xA, попробуешь basic с play через AY?
Ок.

Tim0xA
16.10.2009, 10:23
Так как у меня теперь на Векторе появился "музыкальный сопроцессор", пожелания дали крен в сторону звука.
Хотелось бы видеть в эмуляторах:
1) Режимы подключения выходов для AY/YM: mono, stereo: A-B-C, A-C-B, B-A-C(?)
2) AY-3-8910 и YM2149F имеют различия - отразить их в эмуляции, если возможно.
3) Реализовать режимы подключения выходов таймера КР580ВИ53 (аналогично AY/YM): mono, stereo: Out0-Out1-Out2, Out0-Out2-Out1, Out1-Out0-Out2.
4) Для стереорежимов возможность поменять левый-правый каналы местами.
5) для b2m: раздельные выкл/вкл для ВИ53 и AY/YM.

Добавил статью про стереорежим ВИ53 в картотеку http://www.sensi.org/~svo/scalar/ware/776/

Tim0xA
20.10.2009, 12:29
В новой версии VV 5.92 (см. на сайте) поддерживаются различные стереорежимы AY. Также обновился конвертер Rom2Wav.

Tim0xA
04.11.2009, 11:47
b2m, в твоем эмуляторе не реализовано чтение регистров AY через порт 14h, из за чего в демках Man (http://www.sensi.org/~svo/scalar/ware/315) и Indiana Jones (http://www.sensi.org/~svo/scalar/ware/107) нет индикаторов.

По информации из Вектор-USER 26-27.

b2m
04.11.2009, 12:16
Я бы не стал так категорично утверждать. Попробуй в отладчике. Не реализовано чтение регистра через порт 15h.

Tim0xA
04.11.2009, 13:10
b2m, значит у тебя не "кировская" и не "омская" схема подключения AY, ктож мог подумать.
Получается, эти демки уже кто-то пропатчил под "омский" вариант.

Тем не менее, исправить это надо - чтение должно быть по обоим портам 14h и 15h.

А в VV нужно добавить чтение порта 14h, если его нет.