User Tag List

Показано с 31 по 40 из 66

Тема: ZX DevStudio

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #19

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lion17 Посмотреть сообщение
    Переведи.
    В windows процессор выполняет код не непрерывно, периодически система забирает процессор на некоторое время (порядка10-50 мс), чтобы отдать его другим процессам. Время это довольно существенное для эмулятора. Если эмулятор в цикле опрашивает позицию буффера, дожидаясь нужного момента, для системы это выглядит как выполнение полезной работы и она может прервать этот процесс прямо в момент когда воспроизведение буффера подойдет к нужной позиции.
    Чтобы получить идеальную эмуляцию, процессор должен обработать фрейм и долить буффер в нужный момент, после чего сразу добровольно отдать процессор системе, чтобы она успела вернуть его к началу следующего фрейма...
    По scanline синхронизация на несколько порядков точнее, чем по позиции аудиобуффера. Но ивентов о событии vblank в windows к сожалению не предусмотрено

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

    Я вот тут выкладывал тестовый снапшот http://zx.pk.ru/showpost.php?p=705099&postcount=1183
    Если усредненный цвет мультиколора на нем периодически меняется (обычно раз в секунду-две, зависит от стабильности синхронизации), значит есть проблема синхронизации кадров.
    Включив debug info, отключая и включая vblank sync в zxmak2, по колебаниям fps можно посмотреть, насколько менее стабильна синхронизация по ивентам от позиции аудиобуффера.


    Последний тестовый билд zxmak2 умеет держать синхронизацию стабильно (при включенном vblank), но это пока работает хорошо только на многоядерных процессорах достаточной производительности. Чтобы достичь этого приходится кушать одно ядро на 100% (для отслеживания текущей scanline видеокарты, в твоем случае это GetCurrentPosition). К сожалению даже если вставить Sleep(0) сразу после начала развертки, система иногда не успевает отдать процессор назад до начала следующего кадра. Если у процессора недостаточно ядер, чтобы обслуживать остальные процессы системы, то захватить ядро на 100% не получится и с синхронизацией будут проблемы.

    Эмуляторов которые стабильно держут синхронизацию фактически нет, если не считать последнюю версию zxmak2. Ктото писал что для unreal вроде есть такой мод, но можно ли его включить на стандартной сборке не знаю. У меня не получилось.

    ---------- Post added at 03:24 ---------- Previous post was at 02:36 ----------

    PS: кстати, раз уж разобрался, можешь поподробнее описать алгоритм выборки видеобайтов в pentagon? Заранее спасибо
    Последний раз редактировалось ZXMAK; 08.05.2014 в 04:13.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

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

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

Ваши права

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