Черезвучайно редко и у 2-3 авторов, о которых и так известно в какой они раскладке писали.
Вид для печати
Ну вот, сейчас как-то так. Не судите строго - там куча упрощений и допущений. Тем не менее, имеется даже недурственная заначка по быстродействию - может даже (не буду загадывать) и та два AY хватит.
---------- Post added at 02:14 ---------- Previous post was at 02:09 ----------
Собственно код эмуляции - это всего около 30 коротких строк на Си. Плюс еще огибающая (процидурка на 102 AVR-овских байта, т.е 51 слово)- но там если не будет хватать можно и таблицу засунуть. Короче, весь колхоз должен где-то в 1,5-2K вместиться. Но это для PSG. Полновесный плеер, я думаю, выйдет раза в три побольше, минимум.
---------- Post added at 02:28 ---------- Previous post was at 02:14 ----------
И таки да, пока первые 7 секунд ужасны.
Странно... Ну тогда сейчас могу отправить только так: http://fgf1.i.ua/g/2a612f.2a612f.c00...1/test_out.mp3 - mp3-шка, 1,9M
Эмулишь AY или YM?
newart, AY.
Ramiros, музон из этой интры. Вот он же, выдранный оттуда в виде PSG.
---------- Post added at 12:08 ---------- Previous post was at 11:52 ----------
О, удалось загрузить на SoundCloud: http://snd.sc/voPShg
В arduino nano оно будет работать?
newart,А почему нет? Контроллер-то совершенно идентичный.Цитата:
В arduino nano оно будет работать?
---------- Post added at 23:57 ---------- Previous post was at 23:39 ----------
Ёкарныбабай! Мысль! А ведь у ней-то целых 6 выходов с поддержкой ШИМ! Так что по идее на трех можно сбацать аналоги A,B,C каналов AY! И не морочиться с программным микшированием! Попробую! Сейчас правда до вторника катастрофическая нехватка времени на все это, но вот через неделю иду в отпуск :D - вот тогда и поманьячу в удовольствие! :v2_dizzy_punk:
Ага. И в следущий раз выкладывай wav, а не mp3.
Вопрос к гуру эмуляции AY. У меня "внутри" AY есть 5 счетчиков, назовем их cntA,B,C,N,E. Каждый из них щелкает до заданного значения freqA,B,C,N,E (регистры AY), определяющего частоту прямоугольника/шума на данном канале, или (не знаю как это сказать, "скорость" что ли) огибающей. Короче, чем объяснять на словах, проще просто кусочек кода вставить:
if (++cntA == freqA) {
cntA == 0;
res ^= BIT_A;
}
Вопрос такой: что должно происходить при freqA = 0? Должен ли BIT_A "дергаться" с частотой AY, или при freqA = 0 счетчик должен отключиться?
Ок, разобрался. Тут уже ассемблер попёр :) Звук еще не идеал, но постепенно приближается (опять же, с рядом допущений в целях быстродействия). Кстати, на днях спаяю стерео-версию. Пока -с программным микшированием каналов.
Кстати, сорцы интересны кому-либо? Вроде чуть-чуть привел в порядок, можно и было бы и выложить. А то совсем стыдно было бы пообещать, пусть хоть какие-то исходники, и не выложить ничего.
Они под VS2010 и AVRStudio 5 (что уже по сути одно и то же), просто одним дефайном определяется, собирать либо Ардуиновскую прошивку, либо Win32-"эмулятор эмулятора", дампящий в файл результат проигрывания.
пока проект интереса не представляет.