ZX Time
#04
17 ноября 2001 |
|
Кодерам - "Сага о бордюре продолжается!" (программирование эффектов на бордюре).
Кодерам "Сага о бордюре продолжается!" ──────────────────────────────────────── Николай Витенко Сегодня я хочу рассказать вам о том, как эти два паразита (DWT и Golden Max), заставили меня сделать подвухпиксельный горизонтальный индикатор уровня громкос- ти AY (который будет рассмотрен в данной статье) на BORDER'е. Прибегает как-то ко мне DWT и так, между прочим, говорит, что Golden Max сделал на бордюре индикатор, который "нарастает" со смещением в один пиксел. Так как я бордюром занимаюсь довольно- таки давно и то, что сместить там что- либо меньше чем на два пиксела невозмож- но, я знаю также хорошо, как и то, что Max на бордюре рисует только командой BORDER 0...7. И меня, естественно, это крайне удивило и я, конечно, не поверил в эту лабуду. Но Денис настаивал и доказывал, что видел это своими глазами. Тогда пришлось мне идти к Max'у, и что вы думаете? Дей- ствительно "бегает", но как потом выяс- нилось это сервисная возможность эмуля- тора (Unreal Speccy). НО!!!!! Меня это заело. И в результате появилось то, что вы вероятно видели в "интро" к этому но- меру. Короче, Денис с Максом решили с меня посмеяться, а в итоге посмеялся я над ними, когда они увидели сделанный мною аналогичный эмуляторному индикаторик. :) Приступим. Надеюсь, вы читали статью о том, как нарисовать "ZX" на бордюре. Индикатор создаётся аналогичным образом. Создаётся определённый буфер, в котором находятся задержки-"смещения". То есть, считываем значение с каналов AY'ка, об- ращаемся к этому буферу, который "вы- даёт" число тактов, на которое необходи- мо 'смещать' индикатор. Затем высчиты- ваем то, на сколько нам надо произвести ещё одну задержку, чтобы перейти на сле- дующую строчку, а затем и на следующий канал. Сведём всё к следующему алгоритм- ику: ┌────────────────────────────────────┐ │ Считывание значения с канала AY'ка │ └─────────────────┬──────────────────┘ │ ┌─────────────────┴──────────────────┐ │ Расчёт задержки в соответствии │ │ со значением, считанного с канала │ └─────────────────┬──────────────────┘ │ ┌─────────────────┴──────────────────┐ │ Задержка │ └─────────────────┬──────────────────┘ │ ┌─────────────────┴──────────────────┐ │ Прорисовка линии цвета X │ └─────────────────┬──────────────────┘ │ ┌──────────────────┴───────────────────┐ │Задержка, дополняющая 'линию', то есть│ │ до 224 тактов, фоновым цветом │ └──────────────────────────────────────┘ И так для каждого канала... Но для работы этого индикатора, необ- ходимо иметь быстрый и "ровный" проигры- ватель музыки. В примере исходника, ко- торый находится в приложении к газете, используется уже разложенная музыка с очень быстрым проигрывателем. Второй исходник - это то, что вы виде- ли в нижней части бордюра в интро. Это я лет пять назад написал, но до сих пор сам не пойму как оно работает. По идее он должен "рисовать" на бордюре совсем другое Но что есть, то есть. Может кто- то из вас сможет все это действо объяс- нить? И напоследок просьба и предложение. Просьба: Помогите найти плату(ы) для General sound и DMA. Только с возмож- ностью получения у нас, в Украине. Предложение: Кодеры занимающиеся эф- фектами на бордюре, может обменяемся опытом? На этом всё. Исходники - в приложении! * * *
Другие статьи номера:
Похожие статьи:
В этот день... 5 октября