Важная информация

User Tag List

Показано с 1 по 10 из 598

Тема: EmuStudio-ZX

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,552
    Спасибо Благодарностей отдано 
    1,216
    Спасибо Благодарностей получено 
    1,752
    Поблагодарили
    681 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию EmuStudio-ZX

    Решил выложить для тестов звуковой подсистемы свой эмулятор Спектрума 48Кб.

    Если в кратце, то на базе EmuStudio был написан эмулятор УКНЦ, ТИА-МЦ, МС-0515. Сейчас добавил режим простого спектрума-48 с таймингами Пентагона)
    Цель - протестировать звуковую и видеосистему эмулятора.
    Коцепция EmuStudio - эмуляция железа реального времени (каждый кадр эмулируемой системы совпадает с кадром развертки PC). Таким образом (в одном из режимов) если у вас монитор с разверткой 60Hz, то эмулируемый компьютер будет тоже иметь развертку 60Hz, но работать абсолютно плавно.

    Для владельцев Win 7 - новости неутешительные. Разрешение аудиобуфера сделали очень грубое, из-за чего невозможна точная синхронизация со звуком, и звука скорее всего не будет.

    Краткая информация о теории эмуляторостроения:

    Скрытый текст


    Как делают эмуляторы:
    Все эмуляторы, которые я встречал, придерживаются сходной схемы эмуляции (авторы поправьте меня, если это не так): основная временнАя привязка идет к аудиобуферу (в более простом случае - к системному таймеру). Все остальное (видеовывод) подгоняется под эти тайминги. При таком построении эмулятора можно рассчитывать только на 'гладкость' звучания звука, но никак не на полную идентичность эмуляции видео, даже если кадровая развертка видеокарточки сопвадает с кадровой разверткой эмулируемой машины.

    Откуда такая проблема?
    В нашем не всегда горячо любимом PC каждая аппаратная, необходимая для эмуляции часть (видео, звук, клавиатура и т.д.), живут обычно сами по себе, на своих тактовых частотах, со своими форматами данных и т.д. Казалось бы, чего сложного в их обьединении? Выставим частоту монитора 50Гц, частоту аудио 48000Гц, и в каждом кадре будет ровно 960 отчетов звукового буфера, все целенько и ровненько. Все будет выводиться синхронно. Привяжемся к аудиобуферу, и каждые 960 отсчетов звука будем выводит новый видеокадр и все будет шоколадно. Но не тут-то было.
    Во-первых, каждая аппаратная часть (видео, аудио и т.д.) вполне может тактироваться собственным источником, и даже если формально частоты кратные (в нашем примере 50/48000Гц), на деле они кратными не будут никогда (скажем, 50.0001 и 47.9997Гц), ибо разные источники тактирования. Единственный случай, когда этого можно избежать - это интегрированное видео и аудио, тактируемое одним источником. Но на это рассчитывать никак не приходится.
    Во-вторых, когда мы запрашиваем у системы характеристики видеоадаптера (частоту кадров), она отвечает весьма примерненько. 50Гц может подразумевать и 50.1Гц запросто.

    Отсюда единственный логичный вывод. Если ты хочешь, чтобы в эмуляторе все было так же плавно и гладко, как на эмулируемой машине, главная привязка должна быть именно к кадровой развертке, с адаптивной привязкой к ней менее критичных к передискретизации железок.

    Как это делаю я:
    В моем эмуляторе сделано так. При запуске замеряется кадровая частота, и вычисляется примерно (а точно нельзя) сколько отсчетов аудиобуфера у нас укладывается в кадр. Допустим этих отсчетов 100. Начинается эмуляция и каждый видео кадр идет очень точный замер (если позволяет виндовс) сколько же на деле мы проиграли за кадр отсчетов. Основываясь на этих измерениях вычисляется адаптивное, но высокоточное число выводимых аудиоотсчетов за кадр (допустим, 100.001234), и на этом эмулятор синхронизируется.
    Таким образом, каждый кадр эмулируемой системы (в данном случае Спектрума) равняется кадру видеокарточки, а звук с точностью до отсчета подгоняется по реальное число семплов в кадре.
    В случае же, когда аудиосистема не может сообщить о точном положении аудиомаркера в буфере (у Win7 эта точность равна 480 отсчетам, т.е. никакая), синрхонизация звука с видео по этому алгоритму невозможна.

    p.s.: Да, пока что в этом режиме Спектрум работает на 20% (при 60Гц мониторе) и на 50%(при 75Гц мониторе) быстрее, чем обычный Спектрум. Это на текущем этапе так и должно быть.
    [свернуть]


    Краткое управление:
    Код:
    LWin + F	- Включение/выключени полноэкранного режима*
    LWin + S	- Запись остояния в файл "snapshot.sna"
    LWin + L	- Загрузка состояния из файла "snapshot.sna"
    LCtrl + RCtrl	- Сброс
    ~		- Циклическая смена палитры: Цветная, Ч/Б, Инверсная Ч/Б.
    
    * - Максимизация окна - это тоже полноэкранный режим, 
        но с рамкой окна и панелью задач Windows.
    Описание индикатора быстродействия:

    Скрытый текст



    [свернуть]


    Поддерживаются только файлы ".sna".
    Для запуска снапшота достаточно просто кинуть его в окно с эмулятором.

    На этом пока все.

    p.s.: Просьба к владельцем разных версий виндовс - позапускать и сделать скриншот консольного окна с отладочной информацией (самая верхняя страница), а так же скриншот окна эмулятора.

    p.p.s.: Да, бордюр есть, и даже мультиколор на нем. Достаточно максимизировать окно, сделать фулскрин, или просто растянуть размеры окна.
    Вложения Вложения
    Последний раз редактировалось Titus; 02.10.2013 в 23:18.

  2. Этот пользователь поблагодарил Titus за это полезное сообщение:

    NEO SPECTRUMAN (26.10.2019)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  2. Эмулятор МС-0515 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 143
    Последнее: 09.02.2023, 10:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •