Биперные дела #2
Немного продолжаю ковыряния с бипером и Plip Plop-подобными движками.
Решил проверить одну давнюю идею, о которой давно шли разговоры, но мало кто реализовал: сделать такой движок, в котором код синтеза будет чередоваться с логикой проигрывателя, и таким образом звук будет ровный, без треска.
Идея такая: есть макрос или подпрограмма одного цикла синтеза звука, которая занимает наименьшее количество тактов и использует только определённые регистры (у меня это IX и теневой набор), оставляя остальные для прочего кода. Макрос лучше по скорости, подпрограмма добавляет накладные расходы в 27 тактов на каждый вызов, но зато подпрограмма сильно экономит память.
Так как регистры не портятся, я просто вставляю каждые N тактов в код движка call на синтезатор, и выравниваю код по тактам между вызовами.
В псевдокоде это выглядит примерно так:
call synth ;100 тактов
..какой-то код ;100 тактов
call synth ;100 тактов
..какой-то код ;100 тактов
И так сколько-то раз, пока не кончится логика.
Show more
рабочее
1bit
Роман Соколов
стилизованный звук ментовской сирены получился )
Apr 06 20:35 (changed)
1