Архив трехканальных версий эмулятора
Эмулятор представляет собой прошивку для AVR микроконтроллера Atmega8.
Внимание! Если вы уже собрали трехканальную версию, вы можете использовать и 2-х канальную прошивку на ней.
Если вам нужна версия под нестандартный кварц (например, 26MHz) оставьте комментарий внизу страницы, сделаю как будет время.
Внимание, в версиях 15.1-16.11, 19-20 есть ошибка в генераторе огибающей!
Версия 24.0
Изменения: улучшен генератор шума, поправлена таблица громкости огибающих.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version24_0__3ch дата выхода 28.07.2016.
Версия 23.0
Изменения: исправлен генератор шума.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version23_0__3ch дата выхода 18.02.2016.
Версия 22.0
Изменения: новый принцип генерации выходного сигнала в параллельном режиме
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version22_0__3ch дата выхода 01.02.2016.
Версия 21.0
Изменения: Исправлены ошибки в генераторе огибающей и шума, код таймера перенесен в главный цикл. Параллельный режим работает очень точно, за счет того что не используется таймер. Новая таблица значений уровней громкости. Еще больше оптимизации кода. Настройки эмулятора перемещены в конфигурационный файл для EEPROM, что позволило избавиться от кучи версий, как заливать конфиг смотрите в readme.txt.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version21_0__3ch дата выхода 16.01.2016.
Версия 20.0
Изменения: еще больше оптимизирован код, улучшена работа в параллельном режиме, шум канала B теперь работает в противофазе с другими, улучшена таблица громкости. Пересчитаны все константы для точного соответствия частоте 1.75 МГц, добавлена версия для 2МГц.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!! Имеются ошибки в генераторе огибающей и шума, зависает в параллельном режиме.
AY_Emul_Version20_0__3ch (для кварцев 24MHz, 25MHz, 27MHz, 28MHz, 30MHz, 32MHz) дата выхода 03.12.2015.
Версия 19.3
Изменения: исправлен и улучшен генератор огибающей, теперь 32 уровня громкости как в YM2149F, улучшена генерация шума, улучшена синхронизация всех генераторов, звук теперь полностью идентичен оригинальному чипу! Улучшено соотношение громкости канала B с каналами A и C.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version19_3__3ch (для кварцев 24MHz, 25MHz, 27MHz, 28MHz, 30MHz, 32MHz) дата выхода 01.08.2015.
Версия 19.1
Изменения: оптимизирована большая часть кода, таймер теперь работает в 2 раза быстрее, генерация тона теперь идентична оригинальной микросхеме, немного упрощена генерация шума, но это не сказалось на его качестве, оптимизирована работа с SRAM, генератор огибающей на периоде 0 работает в 2 раза быстрее (как в оригинале). Обновление счетчиков PWM вынесено из кода таймера. Данная версия звучит как оригинальный чип! Единственный недостаток, с такой скоростью обработки кода таймера справляются кварцы с частотой не менее 25MHz. Частота генераторов в таком режиме более 200КГц !!!
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version19_1__3ch (для кварцев 25MHz, 27MHz, 28MHz, 30MHz, 32MHz) дата выхода 21.06.2015.
Версия 18.5
Изменения: исправлен и оптимизирован генератор тона, улучшен и оптимизирован генератор шума, оптимизирован микшер.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_5__3ch (для кварцев 16MHz*, 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 21.05.2015.
Версия 18.4
Изменения: внесены небольшие исправления в генераторы шума и тона, исправлена серьезная ошибка в генераторе огибающей.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_4__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 07.05.2015.
Версия 18.3
Изменения: внесены изменения в генератор тона, позволяющие получать более плавный тон исключающий щелчки возникающие в некоторых случаях, улучшен генератор шума, точнее генератор случайных чисел генератора шума, теперь шум идентичен оригинальному AY.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_3__3ch (для кварцев *16MHz, 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 27.04.2015.
Версия 18.2
Изменения: снова исправлено обновление огибающей, корректная инициализация микшера при старте, возвращена блокировка повторного вхождения в таймер (актуально для параллельного режима), вывод данных в ШИМ производится в начале прерывания таймера.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_2__3ch_nb (для кварцев *8MHz, *16MHz, 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 21.01.2015.
Версия 18.1
Изменения: новый метод обновления формы огибающей исключающий щелчки, добавлена блокировка генератора огибающей при зацикливающейся на одном значении форме, улучшена работа в последовательном режиме.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_1__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 20.01.2015.
Версия 18.0
Изменения: финальная оптимизированная версия с различными исправлениями.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version18_0__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 04.01.2015.
Версия 17.7
Изменения: исправлена некорректная начальная инициализация регистра 7 (микшера).
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_7__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 17.12.2014.
Версия 17.6
Изменения: более точное вычисление полупериода при генерации тона.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_6__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 14.12.2014.
Версия 17.5
Изменения: снова исправления в генераторе шума, надеюсь окончательные.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_5__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 13.12.2014.
Версия 17.4
Изменения: исправлена старая ошибка в генераторе шума (использовался не тот бит), улучшено качество генерации канала B.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_4__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 11.12.2014.
Версия 17.3
Изменения: улучшена генерация тона, оптимизирован код таймера, поправлен генератор шума. Полная версия.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_3__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 10.12.2014.
Версия 17.2
Изменения: улучшена работа в параллельном режиме, без зависаний в ZX-Spectrum 🙂 Добавлена версия поддерживающая только последовательный режим, версии 16 и 8 MHz только для этой версии, т.к. проверено, что в параллельном режиме они не работают.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_2__3ch_nb (для кварцев *8MHz, *16MHz, 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz) дата выхода 20.11.2014.
Версия 17.1
С этой версии все версии будут (если будут) неблокирующие прерывания.
Изменения: супер оптимизация! код эмулятора сократился до 742 байт с 914 (в параллельной версии вообще 680 байт)! удалось избавиться от дополнительного буфера для хранения регистров AY, т.е. теперь они меняются налету! Звук стал намного лучше и чище!
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version17_1__3ch_nb (для кварцев 16MHz, 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 19.11.2014.
Версия 16.2
Изменения: полностью корректная инициализация регистров при старте МК, полностью корректная обработка регистров в параллельном режиме в режиме чтения + небольшая оптимизация, исправлена ошибка в генераторе огибающей, которая была с версии 15.1. Огибающие теперь генерируются налету, без использования таблицы в памяти, причем такой метод работает даже быстрее и размер эмулятора заметно уменьшился! Скорректирована громкость канала Б (т.к. он на другом таймере, его громкость была сильно занижена), в связи с чем дополнительная версия стала более не нужна.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version16_2__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 16.11.2014.
Версия не блокирующая прерывания
Более стабильная работа в реальных схемах (например, ZX-Spectrum), вообще, на мой взгляд, работает лучше.
AY_Emul_Version16_2__3ch_nb (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz)
Версия не блокирующая прерывания + блокирующая счетчики
Блокируются счетчики тона при значении периода 0, при этом устанавливается лог 1, счетчик огибающей блокируется при зацикливающихся огибающих, улучшена громкость канала Б. Версия перезалита 17.11.2014 23:54, исправлен генератор шума.
AY_Emul_Version16_2__3ch_nb_blk_cnt (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28,332MHz)
Версия 16.11
Изменения: исправлена работа счетчиков тона и огибающей при нулевом значении.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version16_11__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 14.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 16.1
Изменения: генератор шума теперь работает как в оригинальном чипе, микшер сильно упрощен и работает как в оригинальном чипе, все счетчики теперь считаются вверх, а не вниз, т.е. при изменении регистра счетчик будет считать период уже до нового значения. Код эмулятора сократился до размера менее 1Кб !!! Так же, если период огибающей равен 0, то огибающая изменяется на 2 значения, как в реальном чипе!
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version16_1__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 11.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 15.3
Изменения: очень сильно оптимизированная предыдущая версия + исправлены проблемы с кристаллами ниже 27МГц
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version15_3__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 08.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 15.2
Изменения: еще больше оптимизированная версия по сравнению с предыдущей, звук еще качественнее
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version15_2__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 07.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 15.1
Изменения: исправлена одна небольшая оплошность из-за которой мог быть еле заметный щелчок при смене огибающих
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version15_1__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 04.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 15.0
Изменения: исправлена работа микшера, теперь как в оригинальном чипе! удалось избавиться от сохранения регистра состояния, что резко повысило быстродействие, так же очень сильно оптимизирован код и улучшена работа прерываний
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version15_0__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 04.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 14.1
Изменения: новый метод обновления счетчиков — абсолютно чистый звук без артефактов! грандиозная оптимизация! корректная инициализация порта D.
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version14_1__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 02.11.2014. Включена дополнительная версия, в которой у всех каналов одинаковый уровень громкости, для использования в качестве реальной микросхемы AY
Версия 14.0
Изменения: новый способ обновления регистров (более чистый и качественный звук!), новый протокол передачи в последовательном режиме, что позволило высвободить несколько регистров МК и увеличить скорость работы в последовательном и параллельном режиме, да и сам протокол стал проще и можно слать отдельные регистры, в отличие от старого протокола, где слались все 13 за раз. Подробности протокола в файле readme.txt
Внимание! Данная версия не совместима с AYPlayer версий ниже 6.0!!!
AY_Emul_Version14_0__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 01.11.2014
————————————————-
Версия 13.2
Изменения: ускорена работа в последовательном и параллельном режиме, улучшено прерывание таймера, прерывания по BC1/BDIR теперь не затрагивают регистр состояний, только битовые операции в условиях
AY_Emul_Version13_2__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 31.10.2014
Версия 13.0
Изменения: добавлен корректный режим чтения, оптимизирована работа в параллельном и последовательном режимах, устранены различные недочеты как и в двухканальной версии
AY_Emul_Version13_0__3ch (для кварцев 20MHz, 24MHz, 25MHz, 27MHz, 28MHz, 28.332MHz) дата выхода 29.10.2014
Версия 12.41
Изменения: исправлена проблема инициализации порта D (приводящая к шуму в параллельном режиме).
AY_Emul_Version12_41__3ch (для кварцев 24MHz, 25MHz, 27MHz) дата выхода 30.09.2014
Версия 12.4
Изменения: поддержка режима чтения (только 6 бит данных), оптимизация генератора тона, исправления в генераторе огибающей, оптимизация кода.
AY_Emul_Version12_4__3ch (для кварцев 24MHz, 25MHz, 27MHz) дата выхода 15.09.2014
Версия 12.3
Изменения: небольшая оптимизация в генераторе огибающей и в генераторах тона
AY_Emul_Version12_3__3ch (для кварцев 24MHz, 25MHz, 27MHz) дата выхода 31.08.2014
Версия 12.2
Изменения: Исправления и улучшения во всех генераторах, микшере. Огромная оптимизация и улучшение части отвечающей за прием данных в параллельном режиме.
AY_Emul_Version12_2__3ch (для кварцев 24MHz, 25MHz, 27MHz) дата выхода 28.08.2014
Версия 11.1
Изменения: Исправлено несколько ошибок в генераторе огибающей + сделана оптимизация различных участков кода.
AY_Emul_Version11_1__3ch_standard (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 17.08.2014
AY_Emul_Version11_1__3ch_surround (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 17.08.2014
Версия 11.0
Изменения: Улучшен генератор шума, переписан код генератора огибающей, сделана огромная оптимизация кода таймера, теперь ни одна мелодия не будет тормозить или рассинхронизироваться!
AY_Emul_Version11_0__3ch_standard (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 17.08.2014
AY_Emul_Version11_0__3ch_surround (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 17.08.2014
Версия 10.5
Изменения: Исправлена ошибка в генераторе огибающей, допущенная в предыдущем исправлении
AY_Emul_Version10_5__3ch_standard (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 16.08.2014
AY_Emul_Version10_5__3ch_surround (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 16.08.2014
Версия 10.4
Изменения: Исправлена работа генераторов шума и огибающей + оптимизация
AY_Emul_Version10_4__3ch_standard (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 15.08.2014
AY_Emul_Version10_4__3ch_surround (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 15.08.2014
Версия 10.3
AY_Emul_Version10_3__3ch_standard (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 14.08.2014
AY_Emul_Version10_3__3ch_surround (для кварцев 20MHz, 24MHz, 25MHz, 27MHz) дата выхода 14.08.2014
Версии до 10.3 вы можете найти на нашем форуме разработки
[ad name=»HTML»]
Прошивка прошивается с помощью avrdude и USBAsp программатора стандартным способом
Строка для запуска
Для всех кварцев, кроме встроенного
avrdude -b 19200 -p atmega8 -c USBasp -U flash:w:emul25mhz.hex -U lfuse:w:0xCE:m -U hfuse:w:0xC5:m илиavrdude -b 19200 -p atmega8 -c USBasp -U flash:w:emul25mhz.hex -U lfuse:w:0xCF:m -U hfuse:w:0xC7:m
Для кварцев с частотой до 16MHz включительно (режим энергосбережения)
avrdude -b 19200 -p atmega8 -c USBasp -U flash:w:emul16mhz.hex -U lfuse:w:0xCE:m -U hfuse:w:0xD5:m
Для внутреннего кварца с частотой 8MHZ
avrdude -b 19200 -p atmega8 -c USBasp -U flash:w:emul8mhz.hex -U lfuse:w:0x24:m -U hfuse:w:0xC5:m
AVRDUDE можно скачать здесь avrdude или с сайта разработчика
Схема подключения усилителя к трехканальной версии
Данные RC фильтры обрезают частоты ниже 20 Гц и выше 48 кГц, так что вы можете спокойно подключить эту схему к звуковой карте или усилителю, в оригинальной схеме RC фильтр был построен неправильно.
Соответствие контактов эмулятора и AY-3-8910
[ad name=»HTML»]
Здравствуйте
а можно фьюзы в полном формате выложить ?
Willem в таком формате не понимает
Спасибо
Вот тут http://www.engbedded.com/fusecalc/
выбираете Atmega8 и вводите указанные значения, вам будут показаны фьюзы
Спасибо
Hi,
Really neat stuff!!
One thing… Wouldn’t be nice to implement jumper on unused AVR pin to change clock between 2.0MHz / 1.75MHz inside _RESET vector?
Since you read byte only once…
sbic $10,5 // read PIND, 5
rjmp 2M // initialize at 2MHz
… // initialize at 1.75MHz
or something like that.
Less eeprom config files 🙂 But also one resistor and jumper needed for it.
Greetings
Thanks, but I think it’s not needed stuff, because you can use config for that. But if you want, you may use sources to make it 🙂 It is based on ICR register values.
Value is calculated as
28000000/109375/2-1
where first value is oscillator frequency
second is timer frequency for 1.75MHz AY, division by 2 because wave form generated as two cycles.
for 2MHz 125000 is used instead of 109375, this value is calculated as (AY oscillator frequency / 16)
Thanks for AY formula. Later I’ll try if 1.0MHz version works 😛
Greetings