Донат жив/здоров, только что уехал на-дачу
(предложили его мобильный, я отказался)
Донат жив/здоров, только что уехал на-дачу
(предложили его мобильный, я отказался)
Хорошо, если получится связаться, и Донат Александрович согласится ответить на вопросы. Только нужно как-то аккуратно и уважительно. Предлагаю себя в качестве "переговорщика" – напишу ему по эл. почте о статье, о сохраняющемся интересе к "Вектору" и т.д., попрошу дать заочное интервью. Но тогда важно подготовить толковые вопросы, чтобы было и интересно всем, и не отняло слишком много времени на ответы.
я вообще только недавно узнал про этот Вектор и мне он особо не-интересен.
(кому нужен тел. Доната стукнитесь в-личку)
А мне кажется, письмо здесь намного удобнее – можно спокойно подумать, вспомнить (а ведь это всё было порядка 30 лет назад – я например, некоторые интересные подробности своей работы на "Векторе" вспоминаю до сих пор) и написать ответ. Тем более, Скайп не очень-то удобен для общения с фактически незнакомыми людьми. Единственная возможная проблема – если человек не привык писать с клавиатуры, пользоваться эл. почтой и т.п. Но, я думаю, к Темиразову это не относится. И другая особенность подобных писем – можно думать и отвечать достаточно долго, а по Скайпу всё будет быстрее. Впрочем, конечно, можно предложить ему самому выбрать, как удобнее общаться. А сроки у нас, в общем-то, ничем не ограничены.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Зависть подвигла меня на внимательное прочтение статьи и нахождение некоторых неточностей:
1. Про ШИМ
число уровней=1,5 МГц (раз уж речь про ви53 в векторе)/частоту дискретизации. Могу сослаться, например, на книжку
Сергиенко А.Б. Цифровая обработка сигналов. СПб, БХВ-Петербург, 2011. (страница 560)
Кроме того, если fд низкая, то не факт, что получится соответствующее число уровней, т.к. нет возможности подогнать фильтр под fд.
2. Про горизонтальный скроллинг
Львов в данном случае не подходит в качестве примера, т.к. двукратным повтором сдвига на 1 бит мы не сдвинем строку ПК-01 на 1 точку. Навскидку могу вспомнить "Иришу", для которой такой подход подошел бы в 4х цветном режиме.
3. Мелкий момент - опечатка в мнемонике команды (я про ROR)
Отдельно - спорная формулировка, если без пояснений
И.... сколько FPS для игрового скроллинга близкому к фуллскрину ? Со спрайтами, разумеется.
"LD A, (HL) : RLA : LD (HL), A : DEC L" 22 такта на байт. "Всего лишь" на 3 такта медленее чем "RL (HL) : DEC L" у Z-80. НО! Никто в здравом уме и трезвой памяти не скроллит биты в экране.
Обьясню почему:
1) шаг 1 пиксель. Если надо любое другое количество - придется сделать несколько ротаций. А они ОООЧЕНь тормозные (тут Z-80 хихикает, зажав в кулачке инструкции RLD/RRD)
2) раз работа идёт с единственной копией изображения - перед рисованием спрайтов придётся сохранять области под спрайтами, а потом эти области восстанавливать.
3) в силу предыдущего пункта и медленной скорости ротации будет сильное мерцание. Решение ? Оно есть - скроллить будем в бекбуфере, там же накладывать спрайты. А потом бекбуфер кидать на экран. Тормозно, да. Даже ОЧЕНЬ... УПС! А где взять память под целый экран бекбуфера ?
Плюсы, правда, тоже есть - можно скроллить произвольное изображение. Хоть фото. Но, боюсь, даже 3 fps это абсолютно недостижимый для Вектора результат.
Во всех нормальных играх используют тайловые движки.
Предлагаю эксперимент: простейший скроллер игрового уровня. Героя нет. Уровень 2*2 экрана. Количество спрайтов 8-10 на уровне, на экране видимых до 3-4. Спрайты ходят вперед-назад внутри уровня. Накладываются на фон с маской. Управление скроллингом уровня с клавиатуры. Уровень скроллится в 8 направлениях с ускорением (как в марио).
Я могу сваять подобное под синклер48к. Кто готов набросать аналог на векторе для сравнения ?
>> Тогда у владельцев "Векторов" были двоякие чувства: они понимали, что их ПК намного лучше "Спектрума"
ATM-Turbo1 512k
ATM-Turbo2 1024k + TSFM
Pentagon 128к
Sinclair ZX-Spectrum 48+ (1шт), 128+ (1шт), +2А (2шт), +3 (3шт)
Благодарю за отклик и найденные неточности. Однако замечание про ШИМ мне непонятно: посмотрел ещё раз спецификацию i8253 – длительность импульса (режим 1) кратна периоду тактовой частоты (1/1.5 МГц=0,667 мкс) и она должна быть не более половины периода частоты дискретизации (если будет больше половины, то «громкость» начнёт не расти, а падать). Т.е. при частоте дискретизации, скажем, 8 кГц (период 125 мкс) получаем не более 125/2/0,667=93 уровней громкости. Частоты дискретизации реально использовались порядка 4-8 кГц – звук через обычный магнитофон или усилитель при этом был вполне качественным (насколько это возможно при таких частотах и таком типе ЦАП). В «сэмплерном» синтезаторе (пример его звучания в ролике) использовались частоты 7,2 кГц (один голос) и 3,6 кГц (два голоса) – большую частоту при выбранном функционале (с произвольными амплитудной и частотной огибающими) мне получить не удалось (не хватало скорости процессора).
А вот замечание по строению экрана у «Львова» совершенно верное – я действительно совсем забыл, что у него цвет кодируется не двумя последовательными битами (как у БК, CGA, Амстрада и т.д.), а очень редким и странным способом – со смещением в 4 бита (я даже теперь как-то сразу и не пойму – а как же можно на «Львове» сделать сравнительно быстро попиксельный скроллинг?). Так что сравнение со «Львовом» в плане горизонтального скроллинга, конечно, в статье ошибочное (но само по себе преимущество планарной организации «Вектора» от этого, конечно, не меняется). Спасибо за найденную ошибку.
ROR – это, конечно, моя опечатка, должно быть RAR.
Стабильность времени выполнения машинных команд на «Векторе» – это для меня пока загадка. Я когда-то считал, что все команды у него выполняются всегда за одинаковое время, однако как раз при работе с цифровым звуком (а это было давно – 1993-94 год, и сейчас я, конечно, всех тонкостей не помню) столкнулся с очень загадочным явлением – при вроде бы абсолютно точном выравнивании времени выполнения разных ветвей программы (что было необходимо для соблюдения равномерных интервалов дискретизации) звук воспроизводился с подозрительным треском (не очень сильным, но всё же заметным – см. ролик), которого теоретически быть не должно. И убрать этот треск у меня тогда не получилось, поэтому я и пришёл к выводу, что время выполнения команд не совсем стабильно. А при подготовке статьи наткнулся на какой-то вариант описания «Вектора», где было также написано, что иногда выполнение команд занимает всё же больше тактов, чем обычно. Если у вас есть точные данные по этому вопросу, поделитесь, пожалуйста.
- - - Добавлено - - -
Откуда же вы взяли, что "Вектор" должен быть быстрее "Спектрума" – в статье этого нет. Понятно, что при чисто программном выводе графики Z80 у "Спектрума" быстрее ВМ80А "Вектора". Единственный случай, когда скорости "Вектора" и "Спектрума" при этом сравнимы – очистка мелких тайлов или заполнение их мелкой текстурой (за счёт столбцовой видеопамяти "Вектора" и удобства в этом случае вывода через PUSH). Ну и два других случая, когда "Вектор" может быть быстрее "Спектрума" – "аппаратное" наложение спрайтов на фон (за счёт наложения планов на "Векторе") и вертикальный скроллинг (у "Вектора" он аппаратный, в отличие от "Спектрума"). А какой смысл сравнивать эти два ПК при чисто программном скроллинге или программном наложении спрайтов – итак понятно, кто здесь будет быстрее.
И зря вы опять фантазируете, выискивая недостатки "Вектора" – в статье всё достаточно подробно и честно описано (попиксельный сдвиг на "Векторе" используется довольно часто и выглядит вполне плавно, программное наложение спрайтов практически не используется (всегда применяется очень быстрое "аппаратное"), теневой буфер почти никогда не нужен (по причине достаточно быстрого скроллинга и наложения спрайтов на фон).
Если же вы хотите серьёзно сравнить "Вектор" и "Спектрум" по скорости работы с графикой – это очень интересно, но лучше уж тогда создать отдельную тему и обсуждать это в ней.
Однако, как я уже написал в статье, главное достоинство "Вектора" и отличие его от "Спектрума" – не сокращение графических возможностей до минимума, чтобы процессор мог чисто программно манипулировать графикой с хорошей скоростью, а гибкость и универсальность видеосистемы плюс хорошие аппаратные средства ускорения графики (возможность выбора количества цветов и разрешения, отсутствие атрибутных ограничений, аппаратное наложение планов (с возможностью выбора, сколько цветов будет в каждом плане), аппаратный вертикальный скроллинг, программируемая палитра, возможность программного скроллинга не всего экрана, а одной-двух плоскостей и т.д.).
PS. Ещё одно преимущество "Вектора" над "Спектрумом-48" – аппаратное переключение кадровых буферов, причём тоже гибкое. Например, если нам надо получить абсолютно плавный (без изломов и мерцаний) программный монохромный скроллинг хоть всего экрана на "Векторе", мы отводим для видимого изображения 3 плоскости (тогда на экране будет до 8 цветов), формируем любым способом сдвинутое изображение в скрытой плоскости и во время обратного хода луча меняем местами отображаемую плоскость и скрытую. И всё - будет отличный скроллинг (с аппаратным наложением спрайтов!), и не надо тратить время процессора для копирования из буфера на экран. Аналогично можно использовать два аппаратных 4-цветных буфера (по две плоскости в каждом) и сдвигать уже 4-цветный фон (но тогда нужно накладывать спрайты программно или использовать под ними однородный фон).
Последний раз редактировалось vladtru; 12.04.2016 в 11:47.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)