Архив трехканальных версий

Архив трехканальных версий эмулятора

Эмулятор представляет собой прошивку для 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 или с сайта разработчика

Схема подключения усилителя к трехканальной версии

outputcircuit3ch

Данные RC фильтры обрезают частоты ниже 20 Гц и выше 48 кГц, так что вы можете спокойно подключить эту схему к звуковой карте или усилителю, в оригинальной схеме RC фильтр был построен неправильно.

 

Соответствие контактов эмулятора и AY-3-8910

pinmap3ch

[ad name=»HTML»]

Архив трехканальных версий: 6 комментариев

  1. 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

    1. 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)

Добавить комментарий для Serg Отменить ответ

Ваш адрес email не будет опубликован.