Видеосистема БК и эмулятора


     При запуске эмулятор сразу же открывает собственный экран. Видеорежим устанавливается по умолчанию, то есть на PAL-машинах это будет PAL, а на NTSC-машинах - соответственно NTSC. Если включён режим Mode Promotion в IControl Prefs, экран будет соответственно открываться в режимах DblPAL и DblNTSC. Если у Вас NTSC-машина - я настоятельно рекомендую перед запуском установить PAL в BootMenu. В противном случае экран эмулятора (256 точек по вертикали) просто не поместится по вертикали на NTSC экране (240 точек максимум, а по умолчанию и вообще 200). Кроме того, можно воспользоваться утилитами типа MCP, позволяющими установить заданный видеорежим для заданных экранов. В принципе, если «NTSCишность» машины Вам не нравится, как таковая вообще - её можно буквально за пять минут переделать в PAL, немного поработав паяльником.

     Как известно, БК имеет два видеорежима - монохромный и цветной. Поскольку ни один из стандартных видеорежимов AMIGA OS не совпадает по разрешению ни с одним из них, были выбраны наиболее близкие - PAL 640x256 для монохромного 512х256, и PAL 320x256 - для цветного 256x256. Экран БК в обоих случаях получается не прямоугольным, а квадратным, то есть несколько сжатым по горизонтали. Как показала практика, восприятие информации от этого не ухудшается.

     Переключение из режима в режим производится либо с клавиатуры, либо автоматически - имеется возможность установить конкретный режим для каждой программы, прописав параметры M и C в комментарий соответствующего файла. По умолчанию эмулятор запускается в цветном режиме, в котором опять же по умолчанию работает ROM BASIC.

Screen Структура видеопамяти AMIGA и БК совершенно различна. В монохромном видеорежиме экран БК представляет собой как бы один битплан, но у каждого байта младший бит расположен слева, а не справа. В цветном - цвет точки задают два рядом стоящих бита, и в байте размещаются сразу четыре цветных точки (чем-то это похоже на PCишный CGA). По этой причине невозможно напрямую отобразить видеопамять эмулятора в экранную память, и приходится с заданной частотой обновлять экран, преобразуя его в нужный формат и выводя в видеопамять. Операция эта не так уж и быстра - приходится оперировать множеством битов, поэтому в эмуляторе был применён так называемый «дельта-буфер», в котором хранится копия предыдущего экрана. Во время каждого цикла обновления экрана (по умолчанию проходящего каждый обратный ход луча) эмулятор сравнивает текущее состояние экрана с предыдущим, запомненным в дельта-буфере, и найденные изменения прорисовывает как в буфер, так и на экран. Это позволило значительно снизить затраты времени на обновление по сравнению с постоянной перерисовкой. Поскольку БК не настолько быстр, чтобы изменять значительную часть площади экрана за один период кадровой частоты, изменений в большинстве случаев оказывается очень мало, и длительность цикла обновления практически не отличается от работы на «холостом ходу».
     Исключением является использование аппаратного скроллинга экрана БК. При этом количество изменений на экране может оказаться очень большим, вплоть до необходимости перерисовки всего экрана. При этом затраты времени по сравнению с «холостым ходом» значительно увеличиваются. Если эмулятор работает в режиме замедления, когда эмуляция потребляет ровно столько процессорного времени, сколько нужно для достижения заданной скорости, на процессоре 68040 или 68060 это не вызывает каких-либо проблем - будет меняться машинное время, потребляемое эмулятором в целом, но быстродействие эмуляции останется на заданном уровне. Если же эмулятор работает без замедления, что полезно на относительно медленных процессорах (68020/030) или же для достижения предельной скорости эмуляции на быстрых процессорах, быстродействие эмулятора может значительно меняться в зависимости от содержимого экрана при скроллинге - это хорошо заметно в программах просмотра текста с плавным скроллингом. С этой целью эмулятор подсчитывает количество изменений, и в зависимости от него имеет возможность «откладывать» следующее обновление, если предыдущее заняло слишком много времени. Этот алгоритм действует только при работе эмулятора без замедления.

     Эмулятор открывает свой собственный custom screen и работает с bitmap-ом экрана напрямую. Поскольку применённый алгоритм использует планарную структуру экрана, это не будет работать на экранах видеокарт! Не думаю, что это причинит кому-либо какие-либо неудобства, поскольку чипсет-то есть у всех, и работа в SVGA режимах возможна без каких-либо затруднений.


Перейти к [ Содержанию ] [ FAQ ]