ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Не надо так воспринимать задачи 'в лоб'. У всего есть адекватные по времени методы.
Впрочем, еще раз повторюсь - сейчас я не тестирую качество фильтров, качество эмуляции Z80. Это вторично.
Сейчас я тестирую только движок эмулятора на разных машинах.
Хотя, похоже, мы своим флудом всех распугали и актуальный пост уехал слишком далеко.
Последний раз редактировалось ZXMAK; 10.03.2025 в 12:48.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Я понимаю, что тебя в твоем эмуляторе сейчас интересует именно эта тема, но меня нет. И я даже заморачиваться пока не хочу над этим) Придет время писать фильтр, тогда и посмотрю, как сделать лучше)
- - - Добавлено - - -
Кстати, если мне будет не хватать для чего-то вычислительной мощности процессора (что вряд ли), можно перенести вычисления на вычислительные шейдеры графического процессора.
Как раз фильтры хорошо на нем делаются.
Вернее, дать пользователю выбор в настройках, на чем вычислять, на CPU или на GPU.
Например, сканлайны у меня сейчас считаются на шейдерах, что разгрузило процессор.
если плавает частота дискретизации, то будет странным, если частота волны сигнала будет оставаться неизменной. Конечно она тоже будет плавать. В среднем она будет плавать в небольшом диапазоне, например если частота звуковухи плавает в пределах 500 Гц, то частота 1 кГц сигнала будет плавать в пределах 10 Гц.
Если системный таймер лишний, то относительно чего измеряются частоты дискретизации звуковой карты и видеоадаптера? Без него точно измерить не получится...
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Продублирую.
Windows 10, монитор Viewsonic vp930
Окно консоли на 50 hz :
Скрытый текст
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX(tm)-8120 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 3100MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5072)
Multimedia timer resolution: 2057 mks
Multimedia timer resolution: 1997 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce 9800 GT : VP930 Series
Mode: 1280 x 1024, 60.020000Hz
Frequences set: 60.02Hz, 75.03Hz
Hardware composition: not supported
Adapter[0]: Direct3D feature level 10.0
Allow tearing (variable framerate): supported
Shader model 5.0 not supported!
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Наушники (High Definition Audio Device)
WASAPI endpoint format: 48000 Hz, 16 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 2 ms
Audio Buffer Size: 1056 samples (22.0 ms)
480, 0, 0, 0, 480, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Audiobuffer padding: 29.1 ms
Total audio delay: 48.4 ms
Audio buffer is empty
Video thread priority = 1
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 2
Resync
*********@.@SoundProfiler: End
****.......*
[свернуть]
На 100 Hz
Скрытый текст
EmuStudio 0.9 test 1 (ZX-Mode)
Written by dr.Titus 2006,2025
CPU: AMD FX(tm)-8120 Eight-Core Processor
Support: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
Logical CPU cores: 8
Current CPU #0 frequency: 3100MHz
DWM Composition: Enabled
Powered from AC
Power scheme already exist
Low CPU AC threshold = 90%
Low CPU DC threshold = 20%
Power scheme activated
WM_CREATE
Windows version: 10 (10.0.19041.5072)
Multimedia timer resolution: 1962 mks
Multimedia timer resolution: 1950 mks
Desktop DPI: 96 dpi (scale: 100%)
DXGI version 1.6
Direct2D version 1.3
Monitor[0] - NVIDIA GeForce 9800 GT : VP930 Series
Mode: 1280 x 1024, 60.020000Hz
Frequences set: 60.02Hz, 75.03Hz
Hardware composition: not supported
Adapter[0]: Direct3D feature level 10.0
Allow tearing (variable framerate): supported
Shader model 5.0 not supported!
WASAPI system mix format: 48000 Hz, 32 bits, 2 channels, float
Endpoint name: Наушники (High Definition Audio Device)
WASAPI endpoint format: 48000 Hz, 16 bits, 2 channels, PCM
Audio system: WASAPI Shared
Audio format: 48000 Hz, 32 bits, 2 channels
Device minimum period: 2 ms
Audio Buffer Size: 1056 samples (22.0 ms)
480, 0, 0, 0, 480, 0, 0, 0,
Process priority: 128
Main thread priority: 0
High resolution timer: 10000000Hz
CPU Mode: Pure
WMI thread priority = -15
Emulation thread priority = 2
Audio thread priority = 15
Audiobuffer padding: 58.3 ms
Total audio delay: 85.9 ms
Audio buffer is empty
Video thread priority = 1
Class name WIND_0000
Init: Pentagon
Snapshot snapshot.z80 loaded
SoundProfiler: Init
Viewport size changed: 812 x 572
Frames lost: 2
Resync
***@********SoundProfiler: End
***
[свернуть]
Скрин:
Скрытый текст
[свернуть]
100 Hz
Скрытый текст
[свернуть]
Моё железо
Скрытый текст
ZX_Evolution rev.b + NEO_GS + TSFM
Ленинград-128/256kb + AY + TR_Dos
Delta_micro /repair status/
Москва_48кb /repair status/[свернуть]
Titus(10.03.2025)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А почему-бы ей не плавать? Рубидиевые стандарты частоты в звуковухи вроде не ставят
Осциллятор с печкой тоже не ставят - он дорогой и кушает несколько Ампер. TCXO имеет большие фазовые шумы, что для звуковухи плохо.
А обычные китайские кварцы гуляют так, что с телеграфным 500 Гц фильтром - попробуй еще поймай, а поймаешь - через пару минут уже уйдет из полосы приёма.
- - - Добавлено - - -
это в настройках драйвера можно менять, в Windows была какая-то утилита в ней можно было все эти параметры менять, не помню точно уже название, помоему rivatuner. Можно также установкой переменной среды управлять, имя перменной зависит от драйвера.
Последний раз редактировалось ZXMAK; 10.03.2025 в 13:24.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Да ну даже близко нет такого даже с самыми отбитыми китайскими кварцами, чтобы оно из полосы 500 Гц за пару минут вылезло. Даже если частота кварцевого генератора уведена от центральной при помощи LC-цепочки, всё равно максимум до десятки герц может уехать. Для какого нибудь WSPR/FT8 это критично, но уши не услышат.
может у вас осциллятор с термостабилизацией? У меня в тестах на обычном кварце 32 МГц частота за 1 минуту уплывала больше чем на 2 кГц (за счет нагрева платы). Это порядка 60 ppm. Отклонение у обычных кварцев допускается порядка 200-400 ppm.
А сейчас вместо кварцев могут и MEMS осцилляторы ставить для экономии, у них вообще частота гуляет как ... в проруби - подносишь руку и частота легко на 100 кГц улетает![]()
Последний раз редактировалось ZXMAK; 10.03.2025 в 14:14.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)