аддитивный синтезатор по тем временам был очень прогрессивным.
Суммирующий (аддитивный) синтез, в котором используется принцип суперпозиции (наложения) нескольких волн простой (обычно синусоидальной) формы с различными частотами и амплитудами. По аналогии с электроорганами эти волны называются регистрами и обозначаются, как 16' (тон на октаву ниже взятого), 8' (исходный тон), 4' (тон на октаву выше взятого) и т. д. (цифра представляет собой длину трубы соответствующего регистра органа в футах). В чистом виде встречается у электроорганов (Hammond, Farfisa) и их цифровых эмуляторов (Korg CX-3, Roland VK-8 и т. д.). Звучание инструмента тем богаче, чем большее количество регистров использовано в конструкции.
Не так давно очень популярны были гранулирующие синтезаторы, в которых использовались «гранулы звука» — части исходной звуковой волны. используя различные lfo и прочее, выбирались разные части исходной волны в процессе воспроизведения, что приводило к появлению нового звука.
Я просто напомню, что тег z80 делает страничку веселее:
loop:
org 0xd1xx
cp (hl) ; random byte (random CY)
dec l ; . . .
sbc a,a ; -> a=FF or 00
and h ; h=2d -> a=2d or 00
sub b ; b=d1 -> a+=2f
rst 0x10 ; a=2f or 5c
jr loop
если исключать читерство, то… а что такое читерство?:) имхо, самый чит в этих 7 6 5 байтах — команда зацикливания — она создается на стеке, когда пользователь вводит RUN . именно поэтому там нет автозапуска. ок, предположим, мы не можем юзать такой «сложный и неустойчивый» подход. но регистры-то реюзать можем? если да, то вот вариант 8 байт (работает даже на каком-то SE Basic ROM):
loop:
org 0xd1xx
cp (hl) ; random byte (random CY)
dec l ; . . .
sbc a,a ; -> a=FF or 00
and h ; h=2d -> a=2d or 00
sub b ; b=d1 -> a+=2f
rst 0x10 ; a=2f or 5c
jr loop
Длинами кодовых блоков логично меряться, когда в них весь исполняемый код. Иначе получается мерялка — кто круче извратится, либо надо меряться длиной TAP-файла.
На комоде, например, печатать весь лабиринт заставляют ПЗУ, хитро запатчив ему область память с переменными и небольшими кусочками кодов.
Каждая из 7b, 6b и 5b требует определённых манимуляций с бейсиком, после чего в области памяти #FFxx (где стек) появляются некоторые байтики, которые, будучи исполненными, оказываются подходящими, чтобы закрутить процедуркам цикл и как-то модифицировать регистры. Вопрос — включать ли это в длину кода, или нет, и почему? Если включаем, то тогда далеко не 7 байт будет, если нет и меряемся только длиной части с данными кодового блока, то 0б (1б) — победитель, ведь трюки-то любые никто не запрещал.
1. Из длины комодоровских процедур надо вычитать 2. Т.е. настоящая длина 11 и 9 байт соответственно. И ещё, эти блоки грузятся в 0ую страницу по адресу $7С. Там, в основном, лежат системные переменные биоса и бейсика, но и кусочки кода тоже. Судя по всему, они хитро патчат эти кусочки. Основной цикл, кстати, крутится в ПЗУ! Глубже не копал.
2. Оказывается, чуть раньше Gasman'овского threadzx на пц появился Maze 8b. Правда, лабиринт там неклассический, если судить по скриншоту.
Сравнения имели бы смысл, если бы это было какое-то компо с зафксированными правилами. А так у alone прикольный хак и у psb прикольный хак, но совершенно другого плана.
Суммирующий (аддитивный) синтез, в котором используется принцип суперпозиции (наложения) нескольких волн простой (обычно синусоидальной) формы с различными частотами и амплитудами. По аналогии с электроорганами эти волны называются регистрами и обозначаются, как 16' (тон на октаву ниже взятого), 8' (исходный тон), 4' (тон на октаву выше взятого) и т. д. (цифра представляет собой длину трубы соответствующего регистра органа в футах). В чистом виде встречается у электроорганов (Hammond, Farfisa) и их цифровых эмуляторов (Korg CX-3, Roland VK-8 и т. д.). Звучание инструмента тем богаче, чем большее количество регистров использовано в конструкции.
Не так давно очень популярны были гранулирующие синтезаторы, в которых использовались «гранулы звука» — части исходной звуковой волны. используя различные lfo и прочее, выбирались разные части исходной волны в процессе воспроизведения, что приводило к появлению нового звука.
Я теперь знаю своего персонального бомбисту. Кисакуку! :-D
Raspberry Pi (Linux, 700MHz)
armv6/vfp: x1.94/x1.91
3Q RC9731C (Android, 1.6GHz):
armv5te/soft-float/thumb: x0.58/x0.55
armv7-a/vfpv3-d16/thumb: x4.88/x4.77
В общем, неюзабельно в реалтайме.
«47 voters: 38 online + 9 at partyplace»
Каждая из 7b, 6b и 5b требует определённых манимуляций с бейсиком, после чего в области памяти #FFxx (где стек) появляются некоторые байтики, которые, будучи исполненными, оказываются подходящими, чтобы закрутить процедуркам цикл и как-то модифицировать регистры. Вопрос — включать ли это в длину кода, или нет, и почему? Если включаем, то тогда далеко не 7 байт будет, если нет и меряемся только длиной части с данными кодового блока, то 0б (1б) — победитель, ведь трюки-то любые никто не запрещал.
2. Оказывается, чуть раньше Gasman'овского threadzx на пц появился Maze 8b. Правда, лабиринт там неклассический, если судить по скриншоту.
1) на других платформах так же были хаки?
2) если не было, то какие все таки честные объемы рабочих процедур на ZX?
А сравнивать их, это как теплое и мягкое.