User Tag List

Страница 138 из 224 ПерваяПервая ... 134135136137138139140141142 ... ПоследняяПоследняя
Показано с 1,371 по 1,380 из 2231

Тема: ZXMAK2 - Виртуальная машина ZX Spectrum

  1. #1371

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

    По умолчанию

    думаю прикрутить запись видео в MP4, в отладочном варианте уже работает
    Пишет в реальном времени очень даже неплохо и проц не особо жрет
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  2. #1372

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    думаю прикрутить запись видео в MP4, в отладочном варианте уже работает
    Пишет в реальном времени очень даже неплохо и проц не особо жрет
    Можно сделать как в анрыле, через ffmpeg, чтобы с кодеками не геморроиться.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  3. #1373

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,396
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Заметил, что при синхронизации от звука можно таскать окно с эмулем или заниматься иной активной деятельностью и эмуль не тормозит, а при синхронизации от видео или таймера - при таскании окна или иной активности в винде - сразу тормозит и заикается звук.

  4. #1374

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Поделись методикой)
    при синхронизации по VBlank, ScanLine используется как таймер с частотой FPS * DisplayMode.Height для прогнозирования времени которое осталось до VBlank. Когда время вычислено, если его достаточно, то делается Thread.Sleep
    Кроме того момент VBlank засекается по системному таймеру и если на следующем ожидании кадра окажется что прошло время равное или большее чем frequency / FPS, то обновляется время последнего VBlank и производится немедленный возврат, чтобы попытаться успеть.

    Идея с прогнозированием времени для Thread.Sleep подсмотрена в unreal Только в unreal для прогнозирования используется ненадежный RDTSC. А у меня системный таймер.

    Может возникнуть проблема, если DirectX говорит одну частоту FPS, а на самом деле другая. Или если реальный FPS сильно отличается от той, которую дает DirectX. Тогда время неточно прогнозироваться будет. Думаю можно сделать адаптивный алгоритм для коррекции реального fps путем замера реального времени между VBlank.

    Кстати интересный вопрос - можно как-то узнать количество ScanLines для текущего режима? Я сейчас тупо беру Height дисплея, что естественно не очень правильно, т.к. реальное число ScanLines больше Height, т.е. частота ScanLines вычисляется меньше реальной.

    ---------- Post added at 14:55 ---------- Previous post was at 14:45 ----------

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Можно сделать как в анрыле, через ffmpeg, чтобы с кодеками не геморроиться.
    я именно на ffmpeg и сделал, с помощью AForge.Video прикручивание заняло минут 15-20, включая загрузку библиотек

    Проблемное место с видео - как писать видео, если меняется разрешение экрана. На лету разрешение видеофайла не поменяешь. Думаю в таких случаях можно начинать писать следующий файл после каждой смены разрешения, например test.mp4, test.1.mp4, test.2.mp4, test.3.mp4 и т.д. Или просто прекращать запись.
    Последний раз редактировалось ZXMAK; 15.01.2015 в 15:51.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  5. #1375

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,396
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    при синхронизации по VBlank, ScanLine используется как таймер с частотой FPS * DisplayMode.Height для прогнозирования времени которое осталось до VBlank. Когда время вычислено, если его достаточно, то делается Thread.Sleep
    Только дискретность Thread.Sleep не лучше 1мс, так ведь?

  6. #1376

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Заметил, что при синхронизации от звука можно таскать окно с эмулем или заниматься иной активной деятельностью и эмуль не тормозит, а при синхронизации от видео или таймера - при таскании окна или иной активности в винде - сразу тормозит и заикается звук.
    хм, интересная особенность, можно будет поисследовать почему так происходит. Если с VBlank можно списать на то что Highest приоритет ставится, то для синхры по времени приоритет не меняется и таскание не должно сильно влиять на поток который с UI не связан.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  7. #1377

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,396
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Кстати интересный вопрос - можно как-то узнать количество ScanLines для текущего режима? Я сейчас тупо беру Height дисплея, что естественно не очень правильно, т.к. реальное число ScanLines больше Height, т.е. частота ScanLines вычисляется меньше реальной.
    Посмотрю чуть позже, как я это делаю в EmuStudio - отпишусь.

  8. #1378

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Только дискретность Thread.Sleep не лучше 1мс, так ведь?
    с дискретностью вопрос интересный, я вообще считал что Sleep минимум через 10 мс управление возвращает, на деле оказалось что и через 1 мс возвращает. Но это возможно от версии Windows зависит.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  9. #1379

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,396
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    с дискретностью вопрос интересный, я вообще считал что Sleep минимум через 10 мс управление возвращает, на деле оказалось что и через 1 мс возвращает. Но это возможно от версии Windows зависит.
    Я тоже читал, что в XP (или даже 98) дискретность 10мс, поэтому принудительно в эмуле ставил дискретность самую маленькую 1мс. И на всех виндах от XP до 7 это прокатывало, она была действительно 1мс.

    И все же, если дискретность 1мс, не топорно ли засыпать на время с такой грубой дискретностью? Ибо можно промахнуться от начала VBlank на порядка 10%.

  10. #1380

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я тоже читал, что в XP (или даже 98) дискретность 10мс, поэтому принудительно в эмуле ставил дискретность самую маленькую 1мс. И на всех виндах от XP до 7 это прокатывало, она была действительно 1мс.

    И все же, если дискретность 1мс, не топорно ли засыпать на время с такой грубой дискретностью? Ибо можно промахнуться от начала VBlank на порядка 10%.
    там запас 5 мс вычитается, оставшиеся 5 мс эмуль опрашивает VBlank и крутит Thread.SpinLock. Если частоту процессора правильно вычислить, то можно попробовать остаток времени в Thread.SpinWait отдавать, но это не очень надежно, т.к. частота может гулять плюс минус лапоть на всяких Turbo Boost и т.п. новомодных технологиях
    Последний раз редактировалось ZXMAK; 15.01.2015 в 17:19.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

Страница 138 из 224 ПерваяПервая ... 134135136137138139140141142 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 06.04.2012, 21:37
  2. Машина Тьюринга для Z80
    от ZXMAK в разделе Эмуляторы
    Ответов: 4
    Последнее: 15.08.2011, 03:26
  3. Продвинутая Мелко Машина 1
    от Black_Cat в разделе Зарубежные компьютеры
    Ответов: 74
    Последнее: 03.03.2009, 09:05
  4. Что за машина такая??? Commodore 128...
    от ILoveSpeccy в разделе Commodore 16/64/128
    Ответов: 5
    Последнее: 31.10.2007, 10:25
  5. Java-машина
    от Error404 в разделе Программирование
    Ответов: 2
    Последнее: 15.01.2007, 15:11

Ваши права

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