PDA

Просмотр полной версии : Новый эмулятор ZX Spectrum - Спектрамин



Spectramine
22.09.2017, 18:29
Выкладываю первый релиз своего эмулятора Спектрамин, с минимальным функционалом, для публичного тестирования качества эмуляции и совместимости с играми и демками.


Приоритеты при разработке:
1) удобство использования;
2) точность эмуляции - z80, задержки, порты, недокументированные особенности.
Из периферии, кроме кэмпстон-джойстика на стрелках+TAB и ULAplus, на данный момент ограниченно поддерживается TR-DOS (trd, scl и hobeta файлы) и +3DOS (dsk файлы), в рамках возможностей dll-ек от эмулятора SpecEmu (Mark Woodmass разрешил их использовать, за что ему большое спасибо).
Эмулируется плавающая шина +2А/+3, и остальных фирменных компьютеров.

Самый новый апдейт Спектрамина (v.1.06b): https://files.fm/u/q5wjvqhtk

Скачать первые версии можно здесь: http://www.emu-land.net/computers/zx_spectrum/emuls/windows?act=showonly&id=4238

Точно работает под Windows 7 32 и Windows XP 32, под другими ОС не проверял, но, судя по сообщениям пользователей, работает и под Windows 10 64, а также в Wine под Linux и MacOS. Не работает в ReactOS.


Принимаются пожелания по функционалу и интерфейсу, багрепорты, указания на несовместимость и т.п.

ZX_NOVOSIB
22.09.2017, 19:03
Стрелочки (курсор) на клавиатуре должны работать из коробки! :)
И хотелось бы, чтобы выбранная модель компьютера запоминалась.

Black Cat / Era CG
22.09.2017, 19:13
Ага. А еще удобно, когда : - это :, а <> - <>, а не чета заточенное под одну отдельно взятую игру (не то чтобы, ну просто весьма странное и неожиданное решение, хотя конечно понятно откуда оно) :)

Bedazzle
22.09.2017, 19:55
На окно эмулятора можно драгндропнуть файл, но программа его не воспринимает, после ресета с ленты загружается предыдущий.

ZEman
22.09.2017, 20:22
хороший эмулятор и довольно удобный.

а как его в полно-экранный режим перевести ?
окно тоже нельзя растягивать ?
и ещё кажется что бордюр сильно большой.

marinovsoft
22.09.2017, 20:28
SinNews #5 http://zx-pk.ru/threads/27752-sibnews.html?p=928392&viewfull=1#post928392 почему-то автозапускаются "осьминожки", а не сам SinNews.

ZEman
22.09.2017, 21:19
первая ошибка.
при открытии больших wav файлов (содержит несколько игр в одном wav файле) - эмуль просто зависает.

- - - Добавлено - - -

да, за поддержку дельтовских загрузчиков, причём сразу в первой версии, отдельное СПАСИБО !

Bedazzle
23.09.2017, 00:15
Быструю загрузку можно будет отключать?
Сейчас красоты загрузки Insult и Ahh... The Tape Loading Era! пролетают.
Всякие мультиколоры вроде работают. :)

Spectramine
23.09.2017, 00:19
Быструю загрузку можно будет отключать?
Сейчас красоты загрузки Insult и Ahh... The Tape Loading Era! пролетают.
Всякие мультиколоры вроде работают. :)

Так её и сейчас можно отключать же)

- - - Добавлено - - -

Забыл Ahh добавить в демки... Кстати, люди, зацените картинки под ULAplus, особенно мультиколорные под TC2048. Не мои, конечно)

Bedazzle
23.09.2017, 00:25
Так её и сейчас можно отключать же)

Ой, я похоже, уже сплю...
Сорри за невнимательность...

Spectramine
23.09.2017, 00:30
Ой, я похоже, уже сплю...
Сорри за невнимательность...

Я иногда медитирую на ленточную загрузку с прорисовкой экрана, так что отключение быстрой загрузки не мог не предусмотреть :)

ZEman
23.09.2017, 06:51
та-же самая фигня, обожаю кассетные загрузки, а всякие тыр-досы мне как-то...

несколько пожеланий по развитию эмулятора.

1) полно-экранный режим.
2) растягивание окна эмулятора мышкой по собственному желанию.
3) ускорение эмулятора на максимум (нажимаешь кнопку какую-нибудь и эмулятор работает с максимально-возможной скоростью).
4) нужны остальные типы джойстиков (Sinclair I, II, Cursor, q,a,o,p и.т.д.).
5) ОЧЕНЬ нужен кассетный менеджер чтобы например выбирать нужный блок для загрузки.

Spectramine
23.09.2017, 08:16
По растягиванию окна - с изменением пропорций и некратным увеличением? Т.е. я лично сторонник оригинальных пропорций и кратного увеличения размеров, т.к. при этом не появляются искажения в режиме без сглаживания.

ZEman
23.09.2017, 08:55
ну как вариант можно сделать Хкратное увеличение окна - 1х, 2х, 3х...

ZX_NOVOSIB
23.09.2017, 09:55
Гляжу тр-дос из коробки работает в режимах фирменных спектрумов - это не может не радовать! Ещё бы мультифейсы добавить ;-)


полно-экранный режим
Да, по-любому нужен.


2) растягивание окна эмулятора мышкой по собственному желанию.
Лучше кратное увеличение. Удобно сделано в спекуляторе! Там по Alt+1/2/3/4 экран меняется на соответствующий кратный размер. Я обычно трёхкратный юзаю. А если сделать кратное изменение размера по "Ctrl+колесико мышки", то будет вообще здорово.



ускорение эмулятора на максимум (нажимаешь кнопку какую-нибудь и эмулятор работает с максимально-возможной скоростью)
Ни в коем разе! Это ж смертоубийство какое-то. Вон в унреале есть это максимальное ускорение - замучаешься ловить нужный момент, всё слишком резко ускоряется, к тому же надо кнопку нажать и тут же ещё раз нажать, это не удобно. В спекуляторе чуть удобней, там скорость меняется плюсом-минусом, но всё равно, чтобы включить нужную степень ускорения, а потом убрать её, приходится постоянно эти кнопки дрючить - неудобно.

Мне видится такой идеальный вариант:
Нужна кнопка ускорялка, работающая по-принципу "нажал - ускорение работает, отпустил - нормальная скорость". А сам коофициент ускорение задавать в настройках, выбирая из нескольких вариантов (х2 , х4 , х8 , х16)

- - - Добавлено - - -

Хотя в некоторых случаях нужно фиксированное ускорение, а значит нужно ввести две кнопки, одна работает "нажал - вкл ускорение, отпустил - выкл", а вторая кнопка - как в унреале (нажал - вкл, а чтобы выключить надо ещё раз нажать)

Spectramine
23.09.2017, 12:10
Гляжу тр-дос из коробки работает в режимах фирменных спектрумов - это не может не радовать! Ещё бы мультифейсы добавить ;-)


Вот меня всегда интересовало - зачем в эмуле мультифейсы? Ну, то есть, на реальной машине они делают то, что в эмуле делают сейвы (сейчас в релизе их нет, но они запланированы, конечно). Так вот, зачем в этом случае в эмуле мультифейс?

Shiny
23.09.2017, 12:49
Так вот, зачем в этом случае в эмуле мультифейс?

чтобы было.

Дебагер тоже не помешал бы

ZX_NOVOSIB
23.09.2017, 13:57
Вот меня всегда интересовало - зачем в эмуле мультифейсы? Ну, то есть, на реальной машине они делают то, что в эмуле делают сейвы (сейчас в релизе их нет, но они запланированы, конечно). Так вот, зачем в этом случае в эмуле мультифейс?
Так исторически сложилось! ) В спекуляторе есть, в ZXSpin есть, в RealSpectrum есть. Значит так надо. Правда в вышеперечисленных эмулях не удается сэмулировать тр-дос и мультифейс одновременно, у твоего эмуля есть шанс стать первым! (в RealSpectrum можно одновременно, но с помощью бубна)

+ввод POKE надо.
+режим моно для звука, ибо во всех фирменных спеках звук - моно.

Spectramine
23.09.2017, 15:10
Исторически сложилось для меня не катит, в этих эмулях есть поддержка кучи разной периферии, которую я добавлять не собираюсь, я просто не понимаю, зачем её эмуляция нужна, кроме шоб було. Зачем мне тратить время на её поддержку, если результат на выходе почти нулевой? То же, например, с поддержкой pzx формата ленты. Я знаю, что такой есть, но мне ни разу не попадались файлы этого формата (я даже не знаю, где их вообще можно найти), так зачем он нужен? И с файлами микродрайва - ну да, есть такие, но зачем они нужны в эмуляторе? Лента была у всех, +3дос и трдос - у многих, микродрайвы - у единиц. Реальный агрегат - ценность для коллекционеров, а в эмуле - ну зачем? Чтобы бывшие обладатели микродрайвов могли насладиться командами работы с микродрайвом в эмуле, разве что. Но опять же, таких единицы даже в Англии.

- - - Добавлено - - -


Правда в вышеперечисленных эмулях не удается сэмулировать тр-дос и мультифейс одновременно, у твоего эмуля есть шанс стать первым! (в RealSpectrum можно одновременно, но с помощью бубна)

Почему-то другие авторы эмулей считают, что BDI и TR-DOS - фишка исключительно наших моделей, хотя они пришли из Англии. Никаких сложностей в поддержке эмуляции BDI с другими моделями, включая +3, нет.

NEO SPECTRUMAN
23.09.2017, 15:52
добавь скриншотов(штуки 2) в первый пост

как я люблю...
Your browser seems a bit outdated

Spectramine
23.09.2017, 16:39
Добавил скриншоты с ULAplus мультиколором)

shurik-ua
23.09.2017, 16:45
"Нам этот ваш микродрайв и нахрен не нужОн" (ц)

А дебаггер - вещь полезная, но это "если у пана будет время и вдохновение" )

Shiny
23.09.2017, 17:08
Не нужно гнаться за "сделать все разом". пофиксить баги и постепенно добавить фичи.

ZEman
23.09.2017, 17:38
нашёл ошибку в эмуляторе при просмотре демы "RAGE" под pentagon 128.
скрины: обратите внимание на самую нижнюю полосу:

Spectramine
23.09.2017, 17:46
нашёл ошибку в эмуляторе при просмотре демы "RAGE" под pentagon 128.
скрины: обратите внимание на самую нижнюю полосу:

Это не ошибка, включите полный бордюр на Спектакуляторе, картинка будет та же.

- - - Добавлено - - -

Это из-за того, что на реальных тв весь программно адресуемый бордюр не отображался, а демомейкеры ориентировались на картинку на тв. Вообще, с размером бордюра как-то точных данных нет. Изначально я делал 40 строк бордюра внизу, так как прочитал где-то, что так на реальных машинах. Но потом увидел на видео, что на +3 точно отображается больше 40 строк нижнего бордюра, так что решил сделать внизу те же 48 строк, что и вверху.

NiKa
23.09.2017, 18:07
А как в меню то войти?

Spectramine
23.09.2017, 18:10
Клик правой кнопкой мыши на окне эмуля) Я ж специально сообщение при запуске вывожу в шапке окна.

NiKa
23.09.2017, 19:00
Спасибо, что то я затупил, буду теперь тестить.

NEO SPECTRUMAN
23.09.2017, 19:22
Клик правой кнопкой мыши на окне эмуля) Я ж специально сообщение при запуске вывожу в шапке окна.
лучше сделать опциональное всегда отображаемое меню как в эмузвин
со всеми паузами\перемотками магнитофонов\сбросами\

и не нужна эта менюшка (и бесит она меня)
и как будешь эмулиовать мышь?
когда ее кнопка уже занята

"запустить F3" как по мне лучше переименовать в открыть
и по хорошему нужно впилить драгндром (на случай когда у тебя в папке 70050 файлов и их надо быстро пересмотреть)
так же должно быть отключение сброса и автозапуска
на случай когда нужно кудато в рабочую программу загрузить другую тап-ку
...обычно начинается поиск эмулятора который это умеет и вспоминание аффтаров всеми возможными словами в таких случаях

все rom-ы лучше переместить в свою папку
возможно даже в roms\spectrum\ (вдруг потом захочешь эмулировать zx81\самком\пылесос)
у меня в унриале так насыпано их 250 штук (тк разных ромов много)
и найти unreal.exe можно только отсортировав файлы по размеру или нажимая U

для чернобелого режима можно использовать палитру electroscale
http://zxart.ee/rus/grafika/top/border:1/palette:electroscale/mode:mix/
если покрутить контрастностью и насыщеностью можно получить цвета очень даже интересные

зы 2 подозрительных антивируса virustotal-a считают эмуль подозрительным

3ы3ы
благодаря чьим то кривым ручкам
уже есть 2 варианта трактования установки младшего бита синего цвета в улеплюс
лучшо в настройках впилить и 2-й кривой вариант

- - - Добавлено - - -


нашёл ошибку в эмуляторе при просмотре демы "RAGE" под pentagon 128.
уже всплывали даже фотки железного пентагона
на которых в этой демке не все идеально и косит на "пол пикселя"

можно влепить несколько вариантов отображения бордюра
без
с пару вариантов
полный бордюр (как у ts labs-а в угриале (полезная таки функция))

Spectramine
23.09.2017, 21:10
так же должно быть отключение сброса и автозапуска
на случай когда нужно кудато в рабочую программу загрузить другую тап-ку
...обычно начинается поиск эмулятора который это умеет и вспоминание аффтаров всеми возможными словами в таких случаях
Прочитай About, он же и краткий мануал, в начале.


зы 2 подозрительных антивируса virustotal-a считают эмуль подозрительным Ага, к инсталляторам 5 прицепились, русскую версию экзешника один считает ансейф, а английскую - уже два. Я пытался найти неподозрительный инсталл-мейкер, а потом забил, на все ругаются.


3ы3ы
благодаря чьим то кривым ручкам
уже есть 2 варианта трактования установки младшего бита синего цвета в улеплюс
лучшо в настройках впилить и 2-й кривой вариант


А зачем? Ну на полтона ниже синий местами, делов-то. Вроде как в новой редакции картинки выглядят лучше. Она и объективно делит диапазон синего более ровно.

NEO SPECTRUMAN
24.09.2017, 00:03
А зачем? Ну на полтона ниже синий местами, делов-то. Вроде как в новой редакции картинки выглядят лучше. Она и объективно делит диапазон синего более ровно.
ну как знаешь
а то что он там ниже
картинка уже не синит а желтит...
может мы говорим о разных вещах?
пример пока не могу привести


Ага, к инсталляторам 5 прицепились, русскую версию экзешника один считает ансейф, а английскую - уже два. Я пытался найти неподозрительный инсталл-мейкер, а потом забил, на все ругаются.
у меня это на zip версию

rasmer
24.09.2017, 08:10
Билд под LINUX будет?

Spectramine
24.09.2017, 14:42
Вряд ли.

Matador
26.09.2017, 12:17
Дема scroller by demarche не работает.

https://www.zxaaa.net/view_demo.php?id=2256

Spectramine
26.09.2017, 12:44
Дема scroller by demarche не работает.

https://www.zxaaa.net/view_demo.php?id=2256

Проверил, на Пентагоне работает ок, на других глючит (128 - вплоть до сброса, +3 - работает, но криво), но она на Пентагон настроена, как и большинство дем.

Matador
26.09.2017, 16:20
Unreal Megademo сбрасывается после 2 второй части. Видимо нужна задержка когда обращеется с диском.

https://www.zxaaa.net/view_demo.php?id=1236

Spectramine
26.09.2017, 17:08
Unreal Megademo сбрасывается после 2 второй части. Видимо нужна задержка когда обращеется с диском.

https://www.zxaaa.net/view_demo.php?id=1236

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

- - - Добавлено - - -

upd. обновил файлы релиза до v.1.01b и ссылки в заглавном посте.

Spectramine
28.09.2017, 22:00
А есть тут 8битные меломаны? По качеству эмуляции звука AY кто-то что-то может сказать?

goodboy
28.09.2017, 22:32
решил проверить как звучит SidPlayer https://enterpriseforever.com/sound/sid-lejatszo/?action=dlattach;attach=17532
а эмуль похоже когда встречает бейсик файл в новом выбраном TAPфайле делает сброс ???
ну и грузит что выбрали.

а так явно слышу какие-то мимолётные похрипывания (когда играет AYмелодия) win8.1

Spectramine
28.09.2017, 22:57
Эмуль делает сброс перед загрузкой любого файла, если не выбрана загрузка без автозапуска (с нажатым Alt при нажатии на кнопку Открыть в диалоге выбора файла). А что с этим файлом (по ссылке) вообще нужно делать? Там пачка коротких файлов, которые не запускаются сами по себе.

- - - Добавлено - - -

Всё, получилось. Надо запустить SIDbasicSP.tap (в 128 конечно), а потом выбрать любой другой файл - без автозапуска (с нажатым Alt во время открытия), и нажать Enter. Для другого файла надо запускать SIDbasicSP.tap заново, я так понял.

- - - Добавлено - - -

Почему-то TZX версия не работает, причем и в Spectaculator тоже.

goodboy
28.09.2017, 23:04
Почему-то TZX версия не работает, причем и в Spectaculator тоже.
там тип данных PureData, (возможно нет поддержки)

Spectramine
28.09.2017, 23:18
Есть поддержка, но он вроде как виснет после загрузки плейера.

- - - Добавлено - - -

Понял, там дело в ускорителях загрузки и автозапуске ленты, не срабатывает автозапуск, похоже. Надо отключать ускорение загрузки и автозапуск ленты для TZX версии в Spectaculator. В Спектрамине это не получится, ускорение можно отключить, автозапуск пока нет.

- - - Добавлено - - -

В общем, жду ещё отзывы меломанов на AY звук в эмуле.

ZEman
29.09.2017, 17:10
weiv, пожалуйста, сделайте хороший кассетный редактор.
чтоб было видно загружаемые блоки и выбирать любой нужный блок для загрузки.
подобное сделано например в эмуляторе zx spin.
без этого практически НЕВОЗМОЖНО загружать некоторые игры, программы (например игры с подзагрузкой уровней и прочего).

ZX_NOVOSIB
30.09.2017, 10:25
Стесняюсь спросить
Не стесняйся - все свои! )


держаться?
Держись! )))


донатить
в любом случае донат надо открывать, не важно будут или не пожертвования. И обязательно нужно как можно лучше засветится на основных буржуйских ресурсах, как англоязычных, так и испаноязычных. Платёжоспособность потому что несравнима, особенно после всех событий 2014-2015 годов (падение цен на углеводороды, санкции и т.п.) Токо надо правильно позиционировать эмуль, чтобы сразу видны были его особенности (а не просто "ещё один эмуль")


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

Spectramine
30.09.2017, 15:47
Донат вообще-то открыт изначально:
Эмулятор распространяется как донейшнваре, то есть бесплатный, но если есть желание поддержать разработку донейтом, реквизиты в About эмулятора., но, видимо, что-то пошло не так)

Bedazzle
30.09.2017, 18:06
Стесняюсь спросить - а донатить кто-нибудь будет, или мне чисто на голом энтузиазме держаться? В общем, в дальнейшем пожелания по функционалу рассматриваются исключительно от донаторов (причем строго в форме пожеланий). Есть ведь куча других эмулей, хороших и разных.

Хоть сейчас, если пэйпалом можно перевести.

s_kosorev
30.09.2017, 18:19
2) Но он будет платным (и, соответственно, защищенным).
он вообще стоит того что бы за него платить?

что-то типа фрейм-ресемплера для качественного отображения гигаскрина; монитор, браузер кассеты и т.п., а также кое-что ещё.
не забудь процент, чьи идее были, а то мало ли, будут покупать из за браузера кассеты, а чел который идею подкинул, мимо кассы

abelenki
30.09.2017, 18:32
weiv, планируется ли:

* full screen desktop mode (без смены разрешения текущего видео-режима) + сохранение пропорций + без какого-либо фильтеринга
* поддержка turbo sound / fm
* поддержка general sound
* поддержка ula+

меня полностью на данный момент устраивает ZXMAK2, кроме последних трёх пунктов.

а так, готов поддержать финансово, по мере возможности (пока сижу без работы, кормлюсь шабашками).

Spectramine
30.09.2017, 18:46
weiv, планируется ли:

* full screen desktop mode (без смены разрешения текущего видео-режима) + сохранение пропорций + без какого-либо фильтеринга
* поддержка turbo sound / fm
* поддержка general sound
* поддержка ula+

меня полностью на данный момент устраивает ZXMAK2, кроме последних трёх пунктов.

а так, готов поддержать финансово, по мере возможности (пока сижу без работы, кормлюсь шабашками).

1 - да.
2, 3 - вряд ли, точно не сразу, мало инфы по эмуляции, слабая программная поддержка. Разве что если найдутся желающие написать фришные dll-ки по их эмуляции, тогда можно будет их поддержку добавить сразу.
4 - уже есть же в тестовой версии.

Спасибо за поддержку.

abelenki
30.09.2017, 18:56
4 - уже есть же в тестовой версии.
пока даже не запускал твой эмулятор. :) но, почитав ветку, впечатлился.

просто, разработка ZXMAK2 закончена, что есть печально.

UnrealSpeccy до сих пор не умеет сохранять пропорции ZX-экрана на широкоформатах (16:9 и т.д.) + убирать фильтеринг (данные двухлетней давности; далее забросил этот эмулятор; хотя, понятно, в плане эмуляции экзотического ZX-оборудования - он впереди планеты всей).

соответственно, есть желание перейти на что-то новое, более актуальное и поддерживаемое автором (иностранные поделки даже не рассматриваются в виду их убогости; ZX Spin был неплох, но поддержка, опять же, закончена 100 лет назад; а в MAME дела обстоят ещё более печальней).

Bedazzle
30.09.2017, 19:21
Пэйпала у меня нет, в Украине он всё ещё работает только на вывод денег, и, боюсь, это изменится нескоро. Яндекс-деньги вообще теперь закрыты. Кроме как через обменники, не получится. В любом случае, спасибо за поддержку.

Пару лет назад пробовал с вебманями возиться, другу нужно было перевести беларусу что ли. Я переплевался и поседел, пока обменял бабло на вебмани, и потом перевёл получателю. :(
Сейчас уж и пароль от кошелька забыл. :(
Но учитывая, что коллега часто болтается на Украину и обратно, думаю, можно что-то придумать. :)

Spectramine
30.09.2017, 19:30
У меня выбора особо и нет, не считая криптовалют) Надеялся, что пэйпел сюда пробьется, но пока подвижек к этому особых нет.

NEO SPECTRUMAN
30.09.2017, 22:53
2, 3 - вряд ли, точно не сразу, мало инфы по эмуляции, слабая программная поддержка. Разве что если найдутся желающие написать фришные dll-ки по их эмуляции, тогда можно будет их поддержку добавить сразу.
2203 конечно да
а поддержать теплый и ламповый TS по стандарту nedopc или любому другому стандарту не сложно

нужно только ємулировать два Ау-ка...
http://www.nedopc.com/TURBOSOUND/ts_c.zip

Spectramine
01.10.2017, 01:23
Я правильно понял, что выбор текущего чипа в TS делается выводом FE/FF в порт выбора регистра AY - #FFFD?
Т.е. LD A,#FE/#FF : LD BC,#FFFD : OUT (С),A ?

И в оригинальной документации по ссылке, и на спеккивики эта информация подана как-то неоднозначно:
"Выбор текущего чипа происходит путем задания адреса внутреннего порта, неиспользуемого звуковым чипом. #FE – выбор первого чипа; #FF – выбор второго чипа." ???
"Выбор второй микросхемы производится выводом значений в неиспользуемые регистры AY через штатные порты." ???

Только английский вариант документации наталкивает на какое-то понимание.

s_kosorev
01.10.2017, 02:39
Нужна правильная модель монетизации. Микроплатежи. Хочеш poke сделать, посмотри спонсорское видео. Хош сейв, заплати 10 центов или купи пак сейвов с скидкой. Хоч браузер тапок, купи функцию

- - - Добавлено - - -



"Выбор второй микросхемы производится выводом значений в неиспользуемые регистры AY через штатные порты." ???

Только английский вариант документации наталкивает на какое-то понимание.

Правильный ответ за донат

NEO SPECTRUMAN
01.10.2017, 03:38
"Выбор второй микросхемы производится выводом значений в неиспользуемые регистры AY через штатные порты." ???
да через порт выбора регистра Ак-ка
nedopc-шний ТС никаких новых портов не добавляет
он вообще ставится вместо обычного Ак-ка в любой спек
http://www.nedopc.com/TURBOSOUND/ts.jpg

в других реализациях ТС он уже висит на других своих портах
но софта под них вообще нет в принципе...

- - - Добавлено - - -


Т.е. LD A,#FE/#FF : LD BC,#FFFD : OUT (С),A ?
до
далее после этого мы уже работаем стандартным способом с другим чипом

- - - Добавлено - - -

в TSFM все по тому же принципу
но там задействованы еще дополнительные биты FFFD для управления

krt17
26.10.2017, 22:53
Загрузил версию в очередной раз проверить, виндовый антивирь перестал ругаться на трояна, удалось посмотреть.
Нужно и есть
- быстрый старт, на вин10 спекулятор грузиться дольше винды, остальные быстрее но не настолько как хотелось бы, тут все ок
- нет убогих менюшек, яж врос в анрил
- как говорят правильный медленный 48, я не маньяк но в фикшеное под пентагон стараюсь не играть, единственное чем не устраивает анрил
Нету но очень надо (базовые вещи для игрового эмуля)
- конечно фулскрин
- браузер кассеты. Так и не получилось поиграть в двухсторонние игры, наверное можно но не понял где
- опции командной строки и конфиг файл, нормально отношусь к настройке в текстовом редакторе, все равно надо только 1 раз
Мне лично на всякие свистелки пофиг, даже трдос не нужен с нашими клонами и всякими звуковыми картами, для этого анрила хватает, на крайняк можно fuse запустить для экзотики. Остальные эмули не совсем подходят по разным мелочам, у суперского xpeccy при запуске/закрытии жуткий стук в динамик, уже забодался проверять новые версии, ZXSpin запускается как автокад и бесит уродскими иконками снизу, у всех что то не так. Анрил идеален для всего кроме оригиналов.
Про донат не могу сказать что мне подходит платить что бы другие пользовались бесплатно, но заплатил бы за готовую версию, при условии ее платности на общих условиях до 500 р, за больше я потерплю мелкие неудобства в перечисленных эмулях :) Возможно таких как я мало, но для статистики думаю пригодится.

- - - Добавлено - - -

ух ты, понаписал и заметил что автор самовыпилил топик, то есть уже не актуально:) Качал с воса

Titus
26.10.2017, 23:19
Кстати, да, куда и зачем дели эмулятор? )

Spectramine
27.10.2017, 00:02
Эээ, ну скажем, чёт накатило) Это была тестовая версия, свою роль она отыграла, так что не жалко. Тем более что она уже осела в недрах инета, найти не сложно.

BobrovS
04.11.2017, 21:40
weiv
Большое спасибо за разработку эмулятора! По звуку AY, на мой слух, он просто лучший из всех! :v2_walkm: Да, есть недоработки (например, в режиме Пентагона не работает вариант демки Shock, заточенный именно под Пентагон: http://vtrdos.ru/demoz/demozimp/SHOCKPEN.ZIP), а также не хватает некоторых функций, о чем здесь уже подробно писали. Но для первой, да еще тестовой, версии - более чем хорошо. Большой респект и пожелание не останавливаться на достигнутом!

Spectramine
04.11.2017, 23:56
BobrovS, спасибо за отзыв и за багрепорт. Если есть ещё какие-то программы/игры/демки, которые не работают, или работают неправильно, пожалуйста, напишите и о них тоже. Рад, что вам нравится эмуляция AY, пока по этому поводу почти никто не отозвался.

- - - Добавлено - - -

А как именно у вас не идет эта версия Shock? И под какой ОС запускаете эмуль? У меня вроде она работает нормально.

BobrovS
05.11.2017, 00:37
А как именно у вас не идет эта версия Shock? И под какой ОС запускаете эмуль? У меня вроде она работает нормально.

Сначала показывает вот такой скрин:
http://ipic.su/img/img7/fs/SHOCKPENT.1509831017.png

Затем, если нажать пробел, сбрасывается в 48-й Basic. В режимах Scorpion надпись о несовместимости не появляется, но сброс после нажатия пробела происходит. Та же самая история с демкой Insult: http://vtrdos.ru/demoz/demozrus/INSULT.ZIP
Может, я не самую новую версию эмулятора использую (1.01b)?

Spectramine
05.11.2017, 01:18
Да нет, я на той же версии проверял, всё идет вообще без проблем. И картинка эта от демки Hercules. Очень странно.

BobrovS
05.11.2017, 21:17
Да, у меня Windows 10. Перезагрузка не помогает. Временный каталог "Спектрамин" появлятся в TEMP винды на время работы эмулятора, после закрытия исчезает. И, действительно, не открывается ни один SCL-файл. Нашел обходное решение проблемы - конвертация SCL-образов в TRD, с ними проблем нет.

Spectramine
05.11.2017, 21:51
Да, у меня Windows 10. Перезагрузка не помогает. Временный каталог "Спектрамин" появлятся в TEMP винды на время работы эмулятора, после закрытия исчезает. И, действительно, не открывается ни один SCL-файл. Нашел обходное решение проблемы - конвертация SCL-образов в TRD, с ними проблем нет.

Кажется, разобрался. Вот фикс (только экзешники): http://www92.zippyshare.com/v/iYIQ2ogK/file.html
Должно помочь.

BobrovS
05.11.2017, 23:46
Спасибо, помогло!
А звук действительно шикарный! Сплошное удовольствие слушать и ностальгировать :v2_dizzy_punk:

Alex Rider
06.11.2017, 02:30
weiv, чтобы не падать на удалении или перезаписи своих залоченных файлов (их может в неподходящий момент зоховать, например, антивирь или ОСь) надо делать так:
1. Генертиь уникальное имя временного файла каждый раз (например, добавлять в него GUID). Временные файлы по достижении ненужности, разумеется, удалять.
2. При запуске эмулятора на всякий случай пытаться чистить временную папку. Если не выходит - не расстраиваться и работать дальше.

- - - Добавлено - - -

UPD: Эти советы почти работают и в случае, если запускается 2 эмулятора и пытаются создать один и тот же временный файл. "Почти" - это значит, что на запуске эмуля чистить временную папку в этом случае нельзя, но при падении или срубании эмуля во временной папке останется мусор.

Spectramine
07.11.2017, 22:43
Спасибо, помогло!
А звук действительно шикарный! Сплошное удовольствие слушать и ностальгировать :v2_dizzy_punk:

BobrovS, благодарю за донейшн! Очень приятно и мотивирует. Если дойдет до следующей версии эмулятора, вы получите её до официального релиза как бета-тестер и зарегистрированный пользователь.

NiKa
18.12.2017, 04:33
Ну вот Новый эмулятор превратился в какую то приватно распространяемую программу.
Столкнулся с тем, что эмулятор открывает не все образы дисков +3DOS.

Bedazzle
07.05.2019, 06:55
В Украине можно будет перевести деньги на карту Приватбанка, из России через вк, вебмани, яндекс-деньги, TransferWise, из других стран тоже через TransferWise.

А крипта - не?

Spectramine
07.05.2019, 08:29
А крипта - не?

Да, наверно, я просто от крипты далекий, но, насколько я знаю, проблем с нею пока нет.

SoftLight
07.05.2019, 09:05
Если не ради собственного интереса, то вангую, что ничего не выйдет

Titus
07.05.2019, 12:14
Упор, как обычно, на удобство работы с эмулятором и точность эмуляции ULA поддерживаемых моделей (набор моделей почти не изменился, добавлена частичная эмуляция Timex TC2068). Могу сказать, что по суммарной точности эмуляции всех моделей, исключая TC2068, рабочая сборка впереди всех известных мне эмуляторов.
Хорошо бы все же подробнее обозначить основные пункты, чем этот эмулятор лучше и/или удобнее всех других.

Titus
07.05.2019, 13:52
глитчи Пентагона (их эмулирует EmuStudio, но она крайне сырая, плюс неправильно эмулирует команду PUSH).
Поподробнее - чего пентагоновеское не эмулируют другие эмули, и что за проблема с PUSH?
И что это за эмулятор такой EmuStudio? Может EmuZWin? )

Spectramine
07.05.2019, 14:20
Поподробнее - чего пентагоновеское не эмулируют другие эмули, и что за проблема с PUSH?

Ну есть одна известная, но малоэмулируемая особенность Пентагона - он каждый такт читает попеременно пиксели/атрибуты следующей выводимой восьмерки пикселей, приостанавливаясь на тактах обращения z80 к ОЗУ. Соответственно, возможна ситуация, когда на один и тот же такт от начала прерывания будет выводиться пара пиксели/атрибуты из разных экранных областей (если в районе этого такта произойдет переключение экранов), причем на разных кадрах по-разному - на одних кадрах пиксели 1го экрана/атрибуты 2го, на других - наоборот. Этот глюк можно заметить на реалах в деме EyeAche2 во время вывода скроллируемых картинок, и в деме Краски во время вывода движущейся змейки из ромбов, в самой правой колонке знакомест. Соответственно, эмуляция этой особенности дает возможность отследить такие малоприятные нюансы.

- - - Добавлено - - -

Проблема с PUSH - ZX DevStudio (не EmuStudio, я ошибся), эмулятор от Lion17, эмулирующий вышеописанную особенность Пентагона, при этом неправильно эмулирует команду PUSH Z80, она в нем кладет в память сначала младший байт, а потом старший, а надо наоборот.

sergio78
07.05.2019, 17:19
а для этого эмуля CORE I9 хватит вообще, под такую описанную здесь особенно повышенную точность? или будет пилиться из расчета новых интеловских 16 ядерников, которые вот вот скоро выйти на рынок должны. я конечно понимаю, эмулируется каждая отдельная снежинка на экране, причем даже возможно с точностью до номера каждой отдельной мелкосхемы, а то ведь у каждой какие то погрешности неповторимые есть, и все их можно точно проэмулировать.

NEO SPECTRUMAN
07.05.2019, 17:50
Ну есть одна известная, но малоэмулируемая особенность Пентагона
и про нею по моему писал алоний еще фиг знаит когда
а воз и ныне там


не забудь заэмулировать вертикальные столбики на границах атрибутов
или фтопку такой эмуль :)

- - - Добавлено - - -


Глюки фирменной ULA в виде четырех градаций яркости и флэш-полосок эмулируют только SpecEmu и ZXSpin, причем флеш-полоски плохо.
можно подробности?
как то попадалось про яркость?
но я оно потерял
непрочитав...

Spectramine
07.05.2019, 17:59
можно подробности?
как то попадалось про яркость?
но я оно потерял
непрочитав...
Ну вкратце - яркость пикселя (точнее, его толщина) зависит от того, инк это или папер, даже если цвет пикселя один и тот же. И от цветов рядом стоящих пикселей. Вот пример: https://www.worldofspectrum.org/forums/discussion/comment/313802#Comment_313802

Насчет флеш-полосок - у флеш-атрибутов с одинаковым цветом инк/папер могут появиться мигающие полоски на вертикальных краях этих атрибутов: https://www.worldofspectrum.org/forums/discussion/comment/313950/#Comment_313950

Это только у синклеровских моделей, у амстрадовских такого нет.

NEO SPECTRUMAN
07.05.2019, 18:04
Кстате на всякий напомню про вертикальную полосу на границе бордюра и экрана
которая есть на некоторых клонах
на которой виднеется не то состояние шины в данный момент
не то еще что то
не уверен есть оно в пентагоне

- - - Добавлено - - -


Ну вкратце - яркость пикселя (точнее, его толщина) зависит от того, инк это или папер, даже если цвет пикселя один и тот же. И от цветов рядом стоящих пикселей. Вот пример: https://www.worldofspectrum.org/foru...Comment_313802
Крута
так это можно использовать! :v2_dizzy_roll:

NEO SPECTRUMAN
07.05.2019, 18:11
Ну кривые клоны мне эмулировать смысла нет)
так может такое есть в пентагонах собранных на к555 серии
вертикальные полоски на границах знакомест описывались и для пентагона
тут скорей всего примерно то же

- - - Добавлено - - -


И оно даже используется, вроде бы в той теме были демо-примеры, с шагающим маник-минером, и 4х брайтовой картинкой.
ну как раз его я и помню
а потом найти так и не смог...

Spectramine
07.05.2019, 18:14
ну как раз его я и помню
а потом найти так и не смог...
Инджой: https://zx-pk.ru/threads/23797-testirovanie-emulyatorov.html?p=958611&viewfull=1#post958611

Bedazzle
08.05.2019, 07:04
Возможно, кому-то это поможет оценить перспективы нового релиза.

Если дебаггер вменяемый (по возможностям на уровне EmuzWin), то уже стою в очереди.

Titus
08.05.2019, 12:41
Ну есть одна известная, но малоэмулируемая особенность Пентагона - он каждый такт читает попеременно пиксели/атрибуты следующей выводимой восьмерки пикселей, приостанавливаясь на тактах обращения z80 к ОЗУ. Соответственно, возможна ситуация, когда на один и тот же такт от начала прерывания будет выводиться пара пиксели/атрибуты из разных экранных областей (если в районе этого такта произойдет переключение экранов), причем на разных кадрах по-разному - на одних кадрах пиксели 1го экрана/атрибуты 2го, на других - наоборот. Этот глюк можно заметить на реалах в деме EyeAche2 во время вывода скроллируемых картинок, и в деме Краски во время вывода движущейся змейки из ромбов, в самой правой колонке знакомест. Соответственно, эмуляция этой особенности дает возможность отследить такие малоприятные нюансы.

Интересно, на пентеве этот глюк есть, или же только на классическом Пентагоне?

Точная эмуляция - это не только возможность отследить всякие 'малоприятные нюансы'. Это так же переносит на PC абсолютно точную копию реала, что дает возможность этот самый реал убрать на антресоли или же не иметь его вовсе.

Spectramine
08.05.2019, 12:52
Интересно, на пентеве этот глюк есть, или же только на классическом Пентагоне?
На пентеве нету, насколько я знаю, по крайней мере пока. Но реализовать, скорее всего, несложно.



Точная эмуляция - это не только возможность отследить всякие 'малоприятные нюансы'. Это так же переносит на PC абсолютно точную копию реала, что дает возможность этот самый реал убрать на антресоли или же не иметь его вовсе.

Абсолютно точной копии реала не получится. Эмулятор есть эмулятор, реал есть реал - он имеет форму, дизайн, теплоламповость. В плане эмуляции тоже всегда есть куда расти обычно. Вот вчера я узнал, что вроде бы у Пентагона тоже возможны полоски на границах знакомест при одинаковых цветах пикселей слева/справа. Тоже можно сэмулировать, если озадачиться. А завтра ещё какая-нибудь особенность может всплыть. Неподдерживаемые 50Гц на многих современных мониторах тоже ограничивают точность эмуляции.

Но да, я тоже считаю, что хороший эмулятор дает возможность убрать реал на антресоли, или не иметь его вовсе.

Titus
08.05.2019, 13:11
Вот вчера я узнал, что вроде бы у Пентагона тоже возможны полоски на границах знакомест при одинаковых цветах пикселей слева/справа.
Да, у моего пентагона такое было. И не только у моего. Поэтому, когда релизили игры, картинки преобразовывали так, чтобы не было двух соседних по горизонтали знакомест, у которых взаимоинверсные атрибуты. После этого преобразования всякие вертикальные полосы на границах знакомест пропадали.

- - - Добавлено - - -


Абсолютно точной копии реала не получится. Эмулятор есть эмулятор, реал есть реал - он имеет форму, дизайн, теплоламповость.
Кому-то нужен дизайн корпуса для аутентиности, а кому-то и нет.
Лично мне нужен абсолютно точный функционал. А уж какая там клавиатура - без разницы.

Да, и, заметь, реверсинжениринг ВГ93 еще так никто и не доделал. А без него о точной эмуляции TR-DOS можно пока забыть.

inozemcew
08.05.2019, 13:26
Билд под LINUX будет?

Вряд ли.

Что-то поменялось, или такого ждать нинужно™?

Spectramine
08.05.2019, 15:39
Лично мне нужен абсолютно точный функционал. А уж какая там клавиатура - без разницы.
Абсолютная точность эмуляции - вещь хорошая, но, насколько я понял в процессе разработки, она как ассимптота - к ней можно приближаться бесконечно близко, но достигнуть невозможно. Всплывают новые детали работы реалов, появляются более сложные тесты, и т.п., код эмуляции дополняется, и т.д. Но всегда можно поставить планку достаточной точности эмуляции.




Да, и, заметь, реверсинжениринг ВГ93 еще так никто и не доделал. А без него о точной эмуляции TR-DOS можно пока забыть.
Возможно, но тем не менее, ВГ93 как-то эмулируется, более или менее точно. С каждым годом точнее) 90+% софта работает ок, если всплывает неработающий, эмуляция фиксится.

Кроме ВГ93, есть масса другой периферии, и ожидать абсолютно точной эмуляции всей этой периферии, я считаю, неправильно. Есть достаточная точность эмуляции, и ок. Выкрутасы с недокументированными возможностями дело интересное, но времяёмкое, и малополезное, я не думаю, что сейчас кто-то будет писать демы, программируя напрямую ВГ93. Приходится ведь учитывать и эмуляторщиков при разработке софта.

- - - Добавлено - - -


Что-то поменялось, или такого ждать нинужно™?

Ну что сказать. Теоретически в Эмбаркадеро Делфи код можно перекомпилить и под Linux, и под MacOS. Практически я пока не вижу тенденций для выхода релиза даже под винду.

Titus
08.05.2019, 16:23
Абсолютная точность эмуляции - вещь хорошая, но, насколько я понял в процессе разработки, она как ассимптота - к ней можно приближаться бесконечно близко, но достигнуть невозможно. Всплывают новые детали работы реалов, появляются более сложные тесты, и т.п., код эмуляции дополняется, и т.д. Но всегда можно поставить планку достаточной точности эмуляции.
Вот тут я с тобой не соглашусь. Если есть точный реверс Z80, ВГ93, AY, то при грамотном эмуляторописателе можно получить эталонный эмулятор, в котором все будет эмулироваться идеально. Это в случае Пентагона, сехма которого проста и доступна. Про Юлу не знаю, не интересовался.

Кстати, обрати внимание на то, как сделан эмулятор ZXMAK2. Там есть целых 3 (если я точно помню) режима синхронизации с кадровой разверткой и звуком, и один из них дает очень хороший результат на 60Гц мониторе, при том, что эмулируется, скажем, пентагон с его 48Гц. Всякие там Spectaculator'ы и т.д. при таком биении частот ощутимо дергаются.

Spectramine
08.05.2019, 18:27
Вот тут я с тобой не соглашусь. Если есть точный реверс Z80, ВГ93, AY, то при грамотном эмуляторописателе можно получить эталонный эмулятор, в котором все будет эмулироваться идеально. Это в случае Пентагона, сехма которого проста и доступна. Про Юлу не знаю, не интересовался.
Теоретически да. Теоретически можно любое устройство разложить по полочкам и сэмулировать детально. Практически эмуляторы часто пишут программисты, не особо близкие к железу, на основании спецификаций и экспериментов.


Кстати, обрати внимание на то, как сделан эмулятор ZXMAK2. Там есть целых 3 (если я точно помню) режима синхронизации с кадровой разверткой и звуком, и один из них дает очень хороший результат на 60Гц мониторе, при том, что эмулируется, скажем, пентагон с его 48Гц. Всякие там Spectaculator'ы и т.д. при таком биении частот ощутимо дергаются.
Попробовал, на своем 60гц мониторе особой разницы не заметил на всех трех режимах.

MetalliC
08.05.2019, 18:36
Возможно, но тем не менее, ВГ93 как-то эмулируется, более или менее точно. С каждым годом точнее) 90+% софта работает ок, если всплывает неработающий, эмуляция фиксится.
хреново оно эмулируется.
я даже больше скажу - нормальной эмуляции FD17xx-подобных контроллеров еще не существует в природе, и это доставляет проблемки при эмуляции множества самых разных компьютеров, в которых они использовались.

суть в том, что FDC это такой простенький процессор / стейтмашина / DSP, работающий по внутренней микропрограмме, шагает по ней как и обычный проц.
ну а имеющиеся реализации являются "HLE уровня комманд" разной степени паршивости, основанные на имеющейся документации, довольно скудной, уровня "для пользователей", не раскрывающей детали внутреннего устройства.

Spectramine
08.05.2019, 18:43
Ну а что делать - что есть, то есть, а чего нет, того нет. Может, кто-то озаботится реверсом, рано или поздно. Эмулировать по микропрограмме всяко проще и удобнее, чем на основе скудной документации.

Titus
08.05.2019, 19:30
Ну а что делать - что есть, то есть, а чего нет, того нет. Может, кто-то озаботится реверсом, рано или поздно. Эмулировать по микропрограмме всяко проще и удобнее, чем на основе скудной документации.
Реверсом много кто озабочивался на нашем форуме. Только до финала вроде так и не довели.

- - - Добавлено - - -


HLE
Что такое HLE?

Spectramine
08.05.2019, 19:34
High Level Emulation, я так понимаю.

MetalliC
08.05.2019, 21:46
Реверсом много кто озабочивался на нашем форуме. Только до финала вроде так и не довели.
к сожалению, не так и много - на этом форуме пару человек ВГ93 занимались вроде, но больше года как ни слуху и духу.
плюс, еще один знакомый француз (Olivier Galibert) разбирал фотки импортных FD17xx (или WD17/WD27 ?), и тоже медленно и печально, сколько лет прошло а прогресса нет.

и всё, больше заинтересованных вроде не было...

troosh
08.05.2019, 23:19
один знакомый француз (Olivier Galibert) разбирал фотки импортных FD17xx (или WD17/WD27 ?), и тоже медленно и печально, сколько лет прошло а прогресса нет.

Реверсить ему ямаховские чипы звуковых модулей и прокручивать их эмуляцию в MAME куда интереснее, чем возиться с чипами флоппиков. Я его хорошо понимаю, там есть где развернуться, - непаханное поле...

Titus
09.05.2019, 10:34
К сожалению, судя по фидбеку на сегодняшний день, знакомое мне русскоязычное сообщество в новом релизе Спектрамина особо не заинтересовано.
Ты предлагаешь в какой-то мере кота в мешке. С чего обычному пользователю вдруг вдохновиться каким-то новым эмулятором и поверить, что он будет на голову выше и удобнее? И за это заплатить денюшки вперед.
Вот если бы ты его сперва выпустил, все поняли, какой он крутой, и если бы захотели задонатили тебе денюшку после.

Titus
09.05.2019, 12:29
Такой вариант меня не устраивает по результатам предыдущего релиза. Я не выпущу новый релиз без пледжей, мне нужен стимул.
Разве может быть стимулом платеж от 3-х с половиный форумчан. Даже от 10. Ну копейки же это по сравнению с тем временем, которое ты тратишь. Тут стимул может быть от полезности и востребованности твоего софта.

Spectramine
09.05.2019, 15:33
Только что нашелся ещё один человек, с этого форума, заинтересованный в новом релизе Спектрамина, который даже не стал заморачиваться с пледжем, а просто задонатил, причем довольно крупную сумму.
Спасибо ещё раз! Это мотивирует) Ник не указываю (не знаю, как на это посмотрит донатор), но это земляк)

Titus
09.05.2019, 15:46
Я не помню, обсуждалось то или нет - как ты синхронизируешь видео и звук?

shurik-ua
09.05.2019, 15:48
Такой вопрос - планируется ли какой нибудь дебаггер в новых версиях - знаю это довольно большой объём работ, но думаю это очень полезная фича в эмуляторах (для меня по крайней мере).


Ник не указываю

да ладно чё уж там - можно называть ))

Spectramine
09.05.2019, 16:15
Такой вопрос - планируется ли какой нибудь дебаггер в новых версиях - знаю это довольно большой объём работ, но думаю это очень полезная фича в эмуляторах (для меня по крайней мере).

Да, конечно - планируемый интерфейс монитора можно увидеть на скриншоте в правом верхнем углу здесь: https://zx-pk.ru/threads/28130-novyj-emulyator-zx-spectrum-spektramin.html?p=1011452&viewfull=1#post1011452
Мощный монитор для меня изначально был одним из стимулов к разработке своего эмуля.
Я же даже тему открывал здесь: https://zx-pk.ru/threads/25563-sponsirovanie-razrabotki-emulya-s-krutym-otladchikom).html


да ладно чё уж там - можно называть )) Ну собственно shurik-ua и есть этот щедрый донатор)

shurik-ua
09.05.2019, 16:21
Отладчик я пишу чисто для реализации мечты со школы о крутом отладчике для спека, правда, тогда я его хотел сделать под реал, под орелевское теневое ОЗУ. У меня был, переделанный из чужого отладчика, загружавшегося в экран, но обычный, на уровне существующих. Но тогда это было для меня актуально, а сейчас - чисто реализация мечты, без особого практического применения.
это просто здОрово )

Titus
09.05.2019, 16:22
Да, конечно - планируемый интерфейс монитора можно увидеть на скриншоте в правом верхнем углу здесь: https://zx-pk.ru/threads/28130-novyj...=1#post1011452
Слишком заблюрено. Непонятно, что к чему.

shurik-ua
09.05.2019, 16:36
не знаю как там в эмузвине - но лучший дизайн отладчика это x64dbg - https://github.com/x64dbg/x64dbg/releases - имхо
хотя идея с отдельными окнами выглядит неплохо

shurik-ua
09.05.2019, 17:38
видимо - sprite-finder или font-finder - чтото в этом духе

shurik-ua
09.05.2019, 18:03
довольно интриги - колись уже )

Titus
09.05.2019, 18:50
Такие детали я пока озвучивать не готов. В любом случае с 60Гц мониторами любые способы синхронизации помочь не помогут, нужны дополнительные ухищрения, вроде нофлика.
Вот тут я тебя прям не понял) Но, если не готов, то что делать)

Spectramine
09.05.2019, 19:44
Вот тут я тебя прям не понял) Но, если не готов, то что делать)

Что именно не понял, почему не готов, или насчет 60Гц мониторов? Напиши, кстати, плиз, какой из режимов синхронизации ZXMAK2 ты считаешь самым удачным? Потому что я на своей конфигурации компа особой разницы между ними не вижу.

Titus
09.05.2019, 21:20
Что именно не понял, почему не готов, или насчет 60Гц мониторов? Напиши, кстати, плиз, какой из режимов синхронизации ZXMAK2 ты считаешь самым удачным? Потому что я на своей конфигурации компа особой разницы между ними не вижу.

Не понял, почему любые способы не помогут для 60Гц. И какой нофлик поможет.

Пока что я на даче, не могу посмотреть. Как приеду, напишу.

Titus
10.05.2019, 12:13
Потому что хорошая синхронизация больше всего нужна для гигаскрина, а при несовпадении частот эмулируемого вывода на экран, и частоты обновления экрана монитора, биения картинки гигаскрина будут заметны при любом способе синхронизации, и придется идти на ухищрения, вроде нофлика, для более-менее приятного отображения гигаскрина.
Про гигаскрин я вообще молчу.
Нужна плавность скроллов и всего такого прочего пофреймового. Спектакулятор, например, такое не может. А тот же ZXMAK2 справляется гораздо лучше. И это именно в случае 50Гц спек, 60Гц моник.
А есть еще проблема синхронизации, когда и спек, 50, и моник, 50, а все равно хорошей синхронизации видео и звука нет, т.к. всплывает много раз обсуждаемая тут проблема точного подсчета проигранных семплов за кадр.

Spectramine
10.05.2019, 13:48
Не знаю. Возможно я не настолько гурман, но я особо не замечал проблем с плавностью скроллов у большинства нормальных эмуляторов.
И проблем синхронизации видео со звуком тоже особо не замечал. За один кадр эмуляции выводится одна картинка и один звуковой отрезок, какие проблемы?
Плюс-минус один звуковой сэмпл в кадре вроде бы не мешает.

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

Titus
10.05.2019, 14:02
Если не трудно, озвучь названия дем/игр, на которых заметны вышеописанные проблемы, и ссылку на обсуждения точности подсчёта проигранных сэмплов за кадр.
В любой деме, интре, где есть плавный скролл, будет заметна эта самая неплавность.

- - - Добавлено - - -


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

Это огромная проблема)
Сложно все пересказать. Почитай темы про это на нашем форуме, там очень долго все это мусолили и эксперементировали.

Если очень кратко, то, невозможно знать точно, сколько аудиосемплов выведено звуковой картой за время одного видеокадра. Это только в теории кажется, что если, допустим, частота семплов 48000Гц, а частота кадров, 60Гц, то за один кадр будет выведено 800 семплов. Но на практике это будет не 60Гц, а, скажем, 60.01Гц, и число выведенных семплов будет какое-нибудь 799.8. Таким образом, начнется рассинхрон. И, самое главное, узнать точно, сколько семплов у тебя в кадре - практически невозможно, т.к. звуковая карточка дает информацию о числе выведенных за определенное время семплов только в эксклюзивных режимах типа WASAPI Exclusive.

Spectramine
10.05.2019, 14:30
В любой деме, интре, где есть плавный скролл, будет заметна эта самая неплавность.
Возможно, но тогда я не замечаю разницы между неплавностями на разных эмуляторах, и разных режимах синхронизации ZMAK2.
Неплавность скроллов, мне кажется, всё так же обусловлена наложением 50Гц эмуляции на 60Гц монитора.
(Странно, но с фрейм-ресамплером неплавность скроллов в анриале возрастает в разы).


Если очень кратко, то, невозможно знать точно, сколько аудиосемплов выведено звуковой картой за время одного видеокадра. Это только в теории кажется, что если, допустим, частота семплов 48000Гц, а частота кадров, 60Гц, то за один кадр будет выведено 800 семплов. Но на практике это будет не 60Гц, а, скажем, 60.01Гц, и число выведенных семплов будет какое-нибудь 799.8. Таким образом, начнется рассинхрон. И, самое главное, узнать точно, сколько семплов у тебя в кадре - практически невозможно, т.к. звуковая карточка дает информацию о числе выведенных за определенное время семплов только в эксклюзивных режимах типа WASAPI Exclusive.

Даже не знаю. Синхронизация звука с видео важна для воспроизведения видеофайлов. А на играх/демо обычно музыка не особо завязана с картинкой, и даже если музыка вдруг по какой-то причине начнет отставать, этого никто на слух не заметит. Потом, даже у дем, где анимация завязана с звуковыми эффектами, я никогда не замечал рассинхронизации.

Похоже, это актуально для суперточной эмуляции, где идет подвязка синхронизации кадров эмулируемого Спектрума к кадрам монитора, у которого есть 50Гц. Тогда постепенно может накапливаться рассинхрон видео со звуком, за счет погрешностей частот звуковой карты и монитора. Но если не париться с привязкой кадра Спектрума к кадру монитора (а это малополезно для 60Гц мониторов), рассинхрона не будет. А неплавность будет в любом случае (для не 50Гц мониторов), только она будет чуть более неравномерной.

Titus
10.05.2019, 16:01
Но если не париться с привязкой кадра Спектрума к кадру монитора (а это малополезно для 60Гц мониторов), рассинхрона не будет. А неплавность будет в любом случае (для не 50Гц мониторов), только она будет чуть более неравномерной.
В том-то и дело, что я, и многие другие спектрумисты юзают 50Гц.
Когда я писал свой эмулятор EmuStudio, мне было принципиально важна абсолютная плавность 'скроллов' и полный синхрон звука. Звуковая карточка у меня была Audigy, которая позволяла отслеживать текущую позицию в аудиобуфере с точностью до семпла, и я привязывал кадровую Пентагона (или УКНЦ) к кадровой своего монитора (50Гц), а звук в реальном времени натягивал на эти самые 960 сеплов, которые были на самом деле дробные, схождение-расхождение которых вычислялось каждый кадр.
Однако на Win7 и старше, стандартная аудиосистема уже не давала возможности отслеживать позицию в буфере с точностью до семпла, а только с кратностью до 480 семплов (если я правильно помню). Однако, появился режим WASAPI с эксклюзивным замком, который такую возможность опять же давал.

Lethargeek
10.05.2019, 17:12
Если очень кратко, то, невозможно знать точно, сколько аудиосемплов выведено звуковой картой за время одного видеокадра. Это только в теории кажется, что если, допустим, частота семплов 48000Гц, а частота кадров, 60Гц, то за один кадр будет выведено 800 семплов. Но на практике это будет не 60Гц, а, скажем, 60.01Гц, и число выведенных семплов будет какое-нибудь 799.8. Таким образом, начнется рассинхрон. И, самое главное, узнать точно, сколько семплов у тебя в кадре - практически невозможно, т.к. звуковая карточка дает информацию о числе выведенных за определенное время семплов только в эксклюзивных режимах типа WASAPI Exclusive.
например, в SDL2 можно запросить размер (https://wiki.libsdl.org/SDL_GetQueuedAudioSize) очереди еще не отправленных на карточку сэмплов для подгонки числа сэмплов нового кадра
что-то схожее можно навелосипедить и самому; минус - дополнительная задержка, но в принципе работать должно везде?

Titus
10.05.2019, 18:33
например, в SDL2 можно запросить размер очереди еще не отправленных на карточку сэмплов для подгонки числа сэмплов нового кадра
Думаю, что ответ от SDL будет с дискретностью 480 сэплов) Если он не обращается опять же через WASAPI Exclusive)

Lethargeek
10.05.2019, 19:01
Думаю, что ответ от SDL будет с дискретностью 480 сэплов) Если он не обращается опять же через WASAPI Exclusive)
ё-моё, ну читай же ты внимательно, что каментишь, там курсивом даже выделено нарочно :v2_frown:

Titus
10.05.2019, 20:49
ё-моё, ну читай же ты внимательно, что каментишь, там курсивом даже выделено нарочно :v2_frown:
Именно на твой курсив я и ответил. Что число неотправленных семплов будет кратно 480.

Lethargeek
10.05.2019, 23:42
число неотправленных семплов будет кратно 480.
нет, не будет, перечитывай до полного просветления:

размер очереди еще не отправленных на карточку сэмплов
ИЗ этой программной очереди сэмплы могут уходить с кратностью, зависимой от железа, но В НЕЁ можно добавлять произвольно

Titus
11.05.2019, 01:26
ИЗ этой программной очереди сэмплы могут уходить с кратностью, зависимой от железа, но В НЕЁ можно добавлять произвольно
Что тебе даст произвольное добавление, если уходить они будут все равно фиксированными пакетами?

Lethargeek
11.05.2019, 03:10
Что тебе даст произвольное добавление, если уходить они будут все равно фиксированными пакетами?
так во времени же это не совпадает, и так плавную коррекцию проще делать, даже для непостоянной и непредсказуемой длины кадра
во всяком случае, на практике длина очереди в сэмплах иногда бывает даже нечётная, а не то что кратная "круглым" числам

Titus
11.05.2019, 08:59
так во времени же это не совпадает, и так плавную коррекцию проще делать, даже для непостоянной и непредсказуемой длины кадра
во всяком случае, на практике длина очереди в сэмплах иногда бывает даже нечётная, а не то что кратная "круглым" числам
В общем, сомневаюсь, что SDL позволяет сделать точную синхронизацию звука и видео, т.к. является просто библиотекой-надстройкой. А штатно Win7 и выше при совместном использовании аудиоресурсов такого не позволяет.

Проще всего проверить - это написать тест)

Titus
11.05.2019, 15:32
Возможно, но тогда я не замечаю разницы между неплавностями на разных эмуляторах, и разных режимах синхронизации ZMAK2.
Посмотрел, какие режимы синхронизации в ZXMAK2 самые 'плавные'.
Режим синхронизации по звуку и по таймеру выглядят похоже.
Режим синхронизации по видео - дергается больше. Примерно так же неприятно, как и Spectaculator, хотя визуально немного иначе.

В твоем эмуляторе 1.0 (который в первом посту) дергается примерно так же, как и в Spectaculator'е. Т.е. самым заметным образом.

Lethargeek
11.05.2019, 16:35
В общем, сомневаюсь, что SDL позволяет сделать точную синхронизацию звука и видео,
что значит "точную"? эмуляция любая будет с задержкой даже для осей реального времени
но хотя бы накопления ошибки избежать можно, а человеческому уху без разницы периодически плюс-минус десяток сэмплов


Проще всего проверить - это написать тест)
есть такая партия такой тест!
https://zx-pk.ru/threads/27710-zx-ulax.html
f2, f3 - переключение скорости на ходу

Titus
11.05.2019, 18:55
а человеческому уху без разницы периодически плюс-минус десяток сэмплов
Десяток? Что ты с ними делаешь? Выкидываешь?
Это очень много и на слух слышно.

- - - Добавлено - - -


есть такая партия такой тест!
https://zx-pk.ru/threads/27710-zx-ulax.html
f2, f3 - переключение скорости на ходу
На моем компьютере (Win8.1) примерно раз в несколько секунд слышен щелчок. Видимо, как раз твое несхождение аудиобуфера корректируется.

Spectramine
11.05.2019, 19:04
Посмотрел, какие режимы синхронизации в ZXMAK2 самые 'плавные'.
Режим синхронизации по звуку и по таймеру выглядят похоже.
Режим синхронизации по видео - дергается больше. Примерно так же неприятно, как и Spectaculator, хотя визуально немного иначе.

В твоем эмуляторе 1.0 (который в первом посту) дергается примерно так же, как и в Spectaculator'е. Т.е. самым заметным образом.
У тебя 50Гц монитор?

Titus
11.05.2019, 19:07
У тебя 50Гц монитор?
Нет, эти все тесты были на 85Гц мониторе.

ZXMAK
11.05.2019, 19:22
Однако на Win7 и старше, стандартная аудиосистема уже не давала возможности отслеживать позицию в буфере с точностью до семпла, а только с кратностью до 480 семплов (если я правильно помню). Однако, появился режим WASAPI с эксклюзивным замком, который такую возможность опять же давал.

в Win7 прекрасно приходят нотификации проигрываемой позиции. В ZXMAK2 они используются для подкидывания новой порции данных в циркулярный буфер. Правда верить им нельзя, видимо на нижнем уровне у системы есть своя буферизация, поэтому нотификации могут приходить по две штуки сразу не равномерно во времени.

Зачем отслеживать текущую позицию до байта не совсем понятно, т.к. произвести синхронизацию потоков с достатой скоростью (1/44100 = 0.0000226 сек) не получится.

- - - Добавлено - - -



Меня устраивает легкое подергивание скроллов на 60Гц, я его почти не замечаю. Так что в этом плане на мой эмулятор можно не рассчитывать, по крайней мере пока. Появится 50Гц монитор, посмотрим.

многие хорошие жк дисплеи могут работать с развёрткой 75 Гц. В этом режиме 50 Гц скролы гораздо лучше работают, чем с 60 Гц или 85 Гц. У меня например работает 75 Гц. Правда режим 75 Гц виден только если выключить галку "не показывать режимы, которые не поддерживаются дисплеем".

С частотой дисплея есть ещё такой прикол, что в системе может быть несколько дисплеев, с разной частотой развёртки. Например одна область рабочего стола обновляется с частотой 100 Гц, вторая с частотой 75 Гц, а третья с частотой 60 Гц. И окошко можно прямо во время работы перемещать по пространству рабочего стола.

Т.е. часть окна эмулятора может обновляться с частотой 60 Гц, а другая часть с частотой 75 Гц, при этом много подводных камней возникает. Если интересно, можете глянуть как эти вещи ZXMAK2 обрабатывает. Смотреть с включенным логом, там будут сообщения появляться о переключении на другой дисплей/частоту развёртки во время перемещения окна по пространству рабочего стола :)


Нет, эти все тесты были на 85Гц мониторе.

85 Гц - это очень неудачная частота для 50 Гц развёртки

Spectramine
11.05.2019, 19:23
многие хорошие жк дисплеи могут работать с развёрткой 75 Гц. В этом режиме 50 Гц скролы гораздо лучше работают, чем с 60 Гц или 85 Гц. У меня например работает 75 Гц. Правда режим 75 Гц виден только если выключить галку "не показывать режимы, которые не поддерживаются дисплеем"
Это да, буквально только что сам проверил это дело, скролл намного плавнее. На 2 кадра спектрума ровно 3 кадра монитора.

ZXMAK
11.05.2019, 19:49
так во времени же это не совпадает, и так плавную коррекцию проще делать, даже для непостоянной и непредсказуемой длины кадра

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

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

- - - Добавлено - - -


ИЗ этой программной очереди сэмплы могут уходить с кратностью, зависимой от железа, но В НЕЁ можно добавлять произвольно

кратность не имеет смысла. Железо проигрывает циркулярный буфер, писать в него можно порции любого размера (в пределах размера буфера разумеется). Главное помнить, что при наложении записи на текущую позицию воспроизведения, будут возникать артефакты воспроизведения. Поэтому некоторый участок, где сейчас примерно идёт воспроизведение лучше не трогать.

Titus
11.05.2019, 20:21
в Win7 прекрасно приходят нотификации проигрываемой позиции. В ZXMAK2 они используются для подкидывания новой порции данных в циркулярный буфер. Правда верить им нельзя, видимо на нижнем уровне у системы есть своя буферизация, поэтому нотификации могут приходить по две штуки сразу не равномерно во времени.
Не видимо, а точно есть. У системы буфер размером в 10мс (при частоте семплов 48кГц - 480 семплов, соответственно).
Его размер и загрубляет возможность точной синхронизации.

- - - Добавлено - - -


Зачем отслеживать текущую позицию до байта не совсем понятно, т.к. произвести синхронизацию потоков с достатой скоростью (1/44100 = 0.0000226 сек) не получится.
В системе до Win7 на аудиокарточке Audigy, которая поддерживала информацию о позиции с точностью до семпла, у меня идеально получалось синхронизироваться.

- - - Добавлено - - -


Если интересно, можете глянуть как эти вещи ZXMAK2 обрабатывает. Смотреть с включенным логом, там будут сообщения появляться о переключении на другой дисплей/частоту развёртки во время перемещения окна по пространству рабочего стола
Лучше расскажи словами, интересно)

- - - Добавлено - - -


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

- - - Добавлено - - -


85 Гц - это очень неудачная частота для 50 Гц развёртки
Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)

Spectramine
11.05.2019, 20:30
Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)
Я бы сказал, какой эмулятор дружественнее к 85Гц. Как я уже сказал, у меня на 60Гц подергивания примерно одинаковые на всех эмулях (и всех режимах синхры у ZXMAK2).

Lethargeek
11.05.2019, 22:00
Десяток? Что ты с ними делаешь? Выкидываешь?
не выкидываю! а меняю между сэмплами промежутки, получая в разных фреймах разное количество сэмплов


Это очень много и на слух слышно.
меньше 2% и ничего ты не услышишь - волна-то та же, звук не потерялся, просто сжат немного или растянут


На моем компьютере (Win8.1) примерно раз в несколько секунд слышен щелчок. Видимо, как раз твое несхождение аудиобуфера корректируется.
нет, проверено, причина - в кривых дровах (известная проблема винды 7+, даже на системных звуках щелчки бывают)
ну, либо антивирь в песочнице запускает, но это вряд ли (тогда постоянно бы трещало, скорей всего)

- - - Добавлено - - -


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


Тут уж надо выбирать что пропускать при критическом набегании ошибки - либо звуковой, либо видеокадр. Поэтому в ZXMAK2 сделан выбор источника синхронизации. При синхре от звука пропускаются видеокадры, а звук поддерживается стабильным. При синхре от видео наоборот. При синхре от времени выпадает и то и другое, в зависимости от того где частота больше уходит от системного таймера.
еще раз - ПРОПУСКАТЬ ничего НЕ НАДО, вместо этого динамически слегка меняем частоту оцифровки (не воспроизведения!)


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

Titus
11.05.2019, 23:07
нет, проверено, причина - в кривых дровах (известная проблема винды 7+, даже на системных звуках щелчки бывают)
ну, либо антивирь в песочнице запускает, но это вряд ли (тогда постоянно бы трещало, скорей всего)
Почему же тогда все остальные эмули у меня играют хорошо?

- - - Добавлено - - -


меньше 2% и ничего ты не услышишь - волна-то та же, звук не потерялся, просто сжат немного или растянут
2% - это гигантская погрешность. По музыкальным меркам - это четверть тона.

Хотел бы и на некоторые другие твои тезисы возразить, но чувствую, что завязну в болоте несостыковок понимания проблем эмуляторописания)

Lethargeek
12.05.2019, 05:28
Почему же тогда все остальные эмули у меня играют хорошо?
мало пробовал "остальных" или не прислушивался; я вот слышал даже в системных звуках; RVM проверь, говорят, что он трещит точно так же
мб дело в том, что SDL вызывает кривую функцию, так как на проблемном компе у меня треск был даже при проигрывании тишины из очень длинного буфера
помогло там переключение частоты динамиков на 44100гц (это при том, что в эмуляторе 48000гц)) - сразу перестало трещать везде


2% - это гигантская погрешность. По музыкальным меркам - это четверть тона.
во-1, "меньше 2%" (и на практике, опять же, много меньше 1/10)
во-2, нихрена ты не услышишь и не поймёшь за "гигантский" промежуток в пару-другую фреймов, на которых будет коррекция


Хотел бы и на некоторые другие твои тезисы возразить, но чувствую, что завязну в болоте несостыковок понимания проблем эмуляторописания)
а ты рискни, не сдерживай себя :D

Titus
12.05.2019, 06:08
во-1, "меньше 2%" (и на практике, опять же, много меньше 1/10)
во-2, нихрена ты не услышишь и не поймёшь за "гигантский" промежуток в пару-другую фреймов, на которых будет коррекция
То, что для одного приемлемо, для другого - нет)

Для меня нужно идеальное схождение. И оно у меня было в EmuStudio)

ZXMAK
12.05.2019, 12:59
Неудачная, но весьма показательная. Сразу видно, какой эмулятор дружественнее скроллам)

это не может быть показателем, т.к. тут дело в физических свойствах волн.
Сигнал с дискретностью 50 Гц физически невозможно перевести в 85 Гц дискретность без побочных эффектов.

Артефакты можно уменьшить за счёт фильтров, но это уже будет не совсем то. Чтобы понять разницу можно вспомнить как выглядит прямая линия и линия под углом на пиксельном дисплее. Прямая линия всегда будет выглядеть идеально, а вот линия под углом будет с алиасами. Алиасы можно убрать с помощью фильтра и изображение будет выглядеть лучше, но результат будет отличаться от прямой линии.

Не знаю, есть ли эмуляторы которые делают полноценную передискретизацию видеопотока вверх до нужной частоты с восстановлением сигнала по sinx/x (для каждого пикселя по отдельности). Это можно сделать на шейдерах.

Но в любом случае результат будет отличаться от оригинала с 50 Гц разверткой.

- - - Добавлено - - -



нет проблемы, набегать ничего не будет, разве что винда затупит очень надолго, но тогда уже и видео тормозит


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

- - - Добавлено - - -



еще раз - ПРОПУСКАТЬ ничего НЕ НАДО, вместо этого динамически слегка меняем частоту оцифровки (не воспроизведения!)

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

Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.

Titus
12.05.2019, 13:47
Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.
Проблема решаема, и, как я уже говорил неоднократно, прекрасно решалась мною на практике в EmuStudio, когда был доступ к позиции буфера воспроизведения с точностью до семпла. Но с переходом на Win7 - это все накрылось, а до новой точной синхронизации через WASAPI Exclusive еще у меня руки не дошли, однако тесты, проверяющие, поддерживает ли она точный указатель буфера воспроизведения, я делал. Все работает хорошо.

- - - Добавлено - - -


это не может быть показателем, т.к. тут дело в физических свойствах волн.
Сигнал с дискретностью 50 Гц физически невозможно перевести в 85 Гц дискретность без побочных эффектов.

Артефакты можно уменьшить за счёт фильтров, но это уже будет не совсем то. Чтобы понять разницу можно вспомнить как выглядит прямая линия и линия под углом на пиксельном дисплее. Прямая линия всегда будет выглядеть идеально, а вот линия под углом будет с алиасами. Алиасы можно убрать с помощью фильтра и изображение будет выглядеть лучше, но результат будет отличаться от прямой линии.
Однако, в твоем эмуляторе в двух режимах из трех артефакты 50Гц/85Гц практически сведены на нет.
А во всех остальных протестированных мною эмулях - дерганье очень заметное.

Сомневаюсь, что стоит пропускать пиксельную матрицу через фильтры. Мне кажется, получим какое-нибудь мыло.

ZXMAK
12.05.2019, 14:51
Проблема решаема, и, как я уже говорил неоднократно, прекрасно решалась мною на практике в EmuStudio, когда был доступ к позиции буфера воспроизведения с точностью до семпла.

нет, подстройка частоты сэмплирования источника ведёт к плавающему частотному искажению звука.
Это не решение. Это попытка спрятать проблему путём добавления новых артефактов.



Однако, в твоем эмуляторе в двух режимах из трех артефакты 50Гц/85Гц практически сведены на нет.
А во всех остальных протестированных мною эмулях - дерганье очень заметное.

у меня просто заполнение кадров поддерживается по возможности равномерным, а не случайно куда кадр попадёт.



Сомневаюсь, что стоит пропускать пиксельную матрицу через фильтры. Мне кажется, получим какое-нибудь мыло.

не совсем так. Суть в том, чтобы восстановить форму изменения сигнала каждого пиксела по sinx/x интерполяции, а затем по полученной форме пересчитать новые точки дискретизации для другой частоты.

ВЧ составляющие спектра пикселя после такой передискретизации конечно точно восстановить не получится. Но надо попробовать, по идее должно неплохо смотреться. Проблема только в большом количестве вычислений. По сути апсемплинг 76800 сигналов в реалтайме (320x240 пикселей), так что без шейдеров тут пожалуй не обойтись :)

omercury
12.05.2019, 15:05
проблема есть. Видеокарта и звуковая карта тактируются от разных кварцевых генераторов, никак не синхронизированных.
Ошибка эта будет обусловлена начальным несоответствием и нестабильностью частот от температуры и времени.
Причём ошибка эта во времени может гулять, как в одну сторону так и в другую, в зависимости от температуры и фазы Луны :)
По этой-же причине подстроиться под неё невозможно, потому что эта ошибка постоянно меняется во времени.
Монитор (телевизор) тоже тактируется от своего отдельного генератора, частота которого не совпадает с клоком источника видеосигнала.
В этом можно быть уверенным на 147%, однако Вас почему-то не смущает его ресинхронизация с источником каждую строку.
Кстати, эффект называется "джиттер"



эффект от подобной подстройки может быть даже хуже, чем пропуск при накоплении ошибки.
Во первых будет проблема с динамической подстройкой, её не так просто расчитать из-за отсутствия точных и стабильных временных меток.
Во вторых небольшое изменение частоты дискретизации исходного сигнала приведёт к плаванию тональности звука. Это уже будет совсем не то пальто :)
Вот Вы очень удачный пример привели про прямую линию с углом расположения кратным 90 градусов и с углом не кратным этому значению.
На матрице 8х8 выглядеть будет ужасно, а на экране 4к уже вроде как бы и ничего... ;)



Эта проблема без артефактов технически не решаема. Не потому что никто не придумал как. А потому, что это невозможно вследствие волновых свойств. Единственный способ её избежать - тактировать звуковую карту и видеокарту от одного опорного генератора.
В итоге: Земля - блин, книга судеб давно написана, можно идти стреляться.
:v2_dizzy_angel:

ZXMAK
12.05.2019, 15:21
Монитор (телевизор) тоже тактируется от своего отдельного генератора, частота которого не совпадает с клоком источника видеосигнала.
В этом можно быть уверенным на 147%, однако Вас почему-то не смущает его ресинхронизация с источником каждую строку.
Кстати, эффект называется "джиттер"

монитор синхронизируется от входного видеосигнала.

Джиттер это из другой темы, это по сути нестабильность частоты относительно эталонного сигнала, т.е. когда длительность периода немного гуляет относительно эталона, но в среднем за длительное время число периодов получается правильное.




Вот Вы очень удачный пример привели про прямую линию с углом расположения кратным 90 градусов и с углом не кратным этому значению.
На матрице 8х8 выглядеть будет ужасно, а на экране 4к уже вроде как бы и ничего... ;)

чтобы получить тот-же эффект, прийдётся использовать дисплей с развёрткой 25000 кадров в секунду, вместо 60-100.
При 25000 кадрах в секунду, изображение тоже будет очень близким к родному 50-герцовому :)

А вот вы попробуйте растянуть картинку 8x8 на дисплей 9x9 пикселов, да так, чтобы смотрелась она также как на дисплее 8x8 ;)
Это и будет тот самый случай передискретизации из 50 Гц в 60/75/85

Titus
12.05.2019, 16:07
нет, подстройка частоты сэмплирования источника ведёт к плавающему частотному искажению звука.
Это не решение. Это попытка спрятать проблему путём добавления новых артефактов.
Нет, это именно решение. Так как колебания частоты были менее десятых (а может и сотых, точно сейчас не помню) процента, что никаким образом уже на слух не фиксируется.

- - - Добавлено - - -


у меня просто заполнение кадров поддерживается по возможности равномерным, а не случайно куда кадр попадёт.
Каким именно образом?

omercury
12.05.2019, 16:15
монитор синхронизируется от входного видеосигнала.
Ага, уже лучше.
Посмотрел ДШ на несколько звуковых кодеков, у всех есть вход синхронизации 48kHz (какая знакомая частота! к чему бы?...) фиксированное значение.
Вывод: все остальные частоты дискретизации - в чистом виде ресемплинг.
...и совсем нет буферизации...
то есть "циркулярный буфер" есть понятие эмпирическое, существующее в воспалённом мозгу аудиодрайвера.



Джиттер это из другой темы, это по сути нестабильность частоты относительно эталонного сигнала, т.е. когда длительность периода немного гуляет относительно эталона, но в среднем за длительное время число периодов получается правильное.
Относительно себя (того, что должно быть), но не суть, аудиофилы на него очень сильно обижены.



чтобы получить тот-же эффект, прийдётся использовать дисплей с развёрткой 25000 кадров в секунду, вместо 60-100.
При 25000 кадрах в секунду, изображение тоже будет очень близким к родному 50-герцовому :)
На 100Гц всё шоколадно, на 75 тоже хорошо - кадр1 -> кадр1+кадр2 -> кадр2.
60Гц - очень поганая частота в наших широтах...


А вот вы попробуйте растянуть картинку 8x8 на дисплей 9x9 пикселов, да так, чтобы смотрелась она также как на дисплее 8x8 ;)
Это и будет тот самый случай передискретизации из 50 Гц в 60/75/85
*9 и /8
Линии будут - закачаешься... :)

В нашем случае кратность таки побольше (3-4-6-8 раз), да и видеокарточки позволяют использовать свои ресурсы почти как заблагорассудится.
А если учесть, что ресемплинг и сглаживание их основное предназначение...

Lethargeek
12.05.2019, 17:30
То, что для одного приемлемо, для другого - нет)
то есть для тебя неприемлем спектрум-128 :v2_dizzy_aaaaa: потому что даже (960+10)/960 = 1.0104 < 1.0134 = 3.5469/3.5 :v2_dizzy_fear:
что, по твоим словам, является "ГИГАНТСКОЙ погрешностью", притом постоянной, но почему-то никого особенно не волнует
при том, что типичная (и далеко не каждый кадр) корректировка только "1-2 сэмпла", и большие выбросы можно сглаживать


Причём ошибка эта во времени может гулять, как в одну сторону так и в другую, в зависимости от температуры и фазы Луны
По этой-же причине подстроиться под неё невозможно, потому что эта ошибка постоянно меняется во времени.
да и пускай гуляет на временных отрезках порядка фрейма, человек не сможет это заметить, у него у самого сильней гуляют характеристики


эффект от подобной подстройки может быть даже хуже, чем пропуск при накоплении ошибки.
Во первых будет проблема с динамической подстройкой, её не так просто расчитать из-за отсутствия точных и стабильных временных меток.
Во вторых небольшое изменение частоты дискретизации исходного сигнала приведёт к плаванию тональности звука. Это уже будет совсем не то пальто
см. выше: значит, спек-128 - "не то пальто" :v2_dizzy_biggrin2: хотя вряд ли и его на слух получится отличить, не говоря уже о намного менее заметной корректировке

- - - Добавлено - - -

и да, динамичный звук некорректно сравнивать с растянутой статичной картинкой, в промелькнувшем кадре хрен вы подсчитаете, сколько точек

ZXMAK
12.05.2019, 19:55
Нет, это именно решение. Так как колебания частоты были менее десятых (а может и сотых, точно сейчас не помню) процента, что никаким образом уже на слух не фиксируется.

изменение на доли герца прекрасно фиксируются на слух, например по биениям с эталонным сигналом. На этом принципе работает настройка с помощью камертона.

Короче тот способ, что Вы предлагаете - это есть по сути нелинейное искажение сигнала. Причём постоянно меняющееся. Что есть очень плохо.

- - - Добавлено - - -


Ага, уже лучше.
Посмотрел ДШ на несколько звуковых кодеков, у всех есть вход синхронизации 48kHz (какая знакомая частота! к чему бы?...) фиксированное значение.
Вывод: все остальные частоты дискретизации - в чистом виде ресемплинг.
...и совсем нет буферизации...
то есть "циркулярный буфер" есть понятие эмпирическое, существующее в воспалённом мозгу аудиодрайвера.

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




аудиофилы на него очень сильно обижены.

и правильно делают. Джиттер при тактировании ЦАП-а приводит к росту нелинейных искажений. Но это совсем другая история :)



На 100Гц всё шоколадно, на 75 тоже хорошо - кадр1 -> кадр1+кадр2 -> кадр2.
60Гц - очень поганая частота в наших широтах...

это кажется что хорошо.
Да, 100 Гц кратная частота, поэтому проблем с алиасами не будет, но визуально 100 Гц развёртка воспринимается всётаки несколько иначе, чем 50 Гц. На 100 Гц ЭЛТ дисплее 50 Гц обновление выглядит немного дёрганным :)
Чтобы устранить этот эффект, нужен полноценный апсэмплинг пикселов. Для 100 Гц промежуточные кадры должны заполняться усреднённым значением между двумя кадрами.

На 75 Гц тоже есть проблемы с отображением - выражается в неправильном восприятии цвета в мультиколорных демах.
А 60 и 85 Гц - это вообще не кратные частоты, поэтому с ними получается постоянно меняющаяся ошибка.

- - - Добавлено - - -



Каким именно образом?

эмулятор находит основной дисплей, на котором в данный момент отображается, вычитывает его частоту обновления и расчитывает отношение частот с 50 Гц. На основе отношения ведёт учёт 50 Гц кадров в координатах реальной частоты развёртки. Номера кадров при этом получаются дробными, а реальное переключение происходит только при переходе на следующее целое значение. Т.е. по сути как бы накладывается одна координатная сетка на другую и таким образом находятся точки во второй координатоной сетке относительно первой.

- - - Добавлено - - -



да и пускай гуляет на временных отрезках порядка фрейма, человек не сможет это заметить, у него у самого сильней гуляют характеристики

при динамической подстройке на отрезках порядка фрейма стабилизировать частоту не выйдет, не получится измерить реальную частоту обновления с достаточной точностью за один кадр. Поэтому скорость воспроизведения звука будет заметно гулять. Я помню, кажется Titus выкладывал эмулятор с такой подстройкой, в нём реально на слух было слышно изменение тональности звука.

- - - Добавлено - - -



и да, динамичный звук некорректно сравнивать с растянутой статичной картинкой, в промелькнувшем кадре хрен вы подсчитаете, сколько точек

тут вроде уже смешались кони люди... :D
Мы про какой вопрос говорим? Про вывод 50 Гц видео на 60/75/85/100 Гц дисплее? или про синхронизацию звуковой и видео карт?

В указанной вами цитате речь шла про звук с динамически изменяющейся частотой дискретизации. Другими словами скорость магнитофонной ленты со звуком подстраивается под частоту кадров кинопроектора. За счёт меняющейся скорости воспроизведения тональность звуков меняется. И это легко заметить. Я считаю это намного хуже, чем единичный щелчёк или пропуск видеокадра (в зависимости от чего синхронизироваться) раз в час или реже.

В большинстве случаев синхронизации от звуковой карты более чем достаточно, при этом также минимальные требования к производительности. Звук при этом звучит без пропусков и щелчков. А редкий пропуск видеокадра абсолютно не заметен. К тому-же под Win драйвер nVidia сам грешит таким, особенно когда параллельно какая-то графика в Chrome работает.

Lethargeek
13.05.2019, 00:05
при динамической подстройке на отрезках порядка фрейма стабилизировать частоту не выйдет, не получится измерить реальную частоту обновления с достаточной точностью за один кадр. Поэтому скорость воспроизведения звука будет заметно гулять
что значит "достаточной"? насколько "заметно"? гуманитарщина... :v2_dry:


Я помню, кажется Titus выкладывал эмулятор с такой подстройкой, в нём реально на слух было слышно изменение тональности звука.
"таких" много, подобрать параметры можно разные


тут вроде уже смешались кони люди...
Мы про какой вопрос говорим? Про вывод 50 Гц видео на 60/75/85/100 Гц дисплее? или про синхронизацию звуковой и видео карт?
лично я - про эффекты передискретизации вообще


В указанной вами цитате речь шла про звук с динамически изменяющейся частотой дискретизации.
где, какой? я в добавке ничего не цитировал и говорил о динамической природе звука как такового
любой звук корректней сравнивать с гигаскрином и анимацией, а не со статическими картинками


Другими словами скорость магнитофонной ленты со звуком подстраивается под частоту кадров кинопроектора
никак нет - под среднюю (за обозримый период) реальную скорость обработки звука системой


За счёт меняющейся скорости воспроизведения тональность звуков меняется. И это легко заметить. Я считаю это намного хуже, чем единичный щелчёк или пропуск видеокадра (в зависимости от чего синхронизироваться) раз в час или реже.
Это голословное заявление :v2_dizzy_stop: и притом в противоречии с практикой - повторю, на разницу в звучании спектрумов 48 и 128 до сих пор особо никто не жаловался, а вот щелчки немедленно замечают, как видим выше. А почему? Полагаю, потому что человеческий организм - измерительный инструмент аналоговый, неточный, да еще с плавно изменяющейся чувствительностью. Ему резкий перепад сигнала проще заметить.


В большинстве случаев синхронизации от звуковой карты более чем достаточно, при этом также минимальные требования к производительности. Звук при этом звучит без пропусков и щелчков
...и потому нас должно интересовать большинство из меньшинства случаев, когда синхронизации недостаточно :D


А редкий пропуск видеокадра абсолютно не заметен.
еще как заметен на бегущих строках и гигаскринах, и даже "редкий"

Titus
13.05.2019, 01:24
изменение на доли герца прекрасно фиксируются на слух, например по биениям с эталонным сигналом. На этом принципе работает настройка с помощью камертона.

Короче тот способ, что Вы предлагаете - это есть по сути нелинейное искажение сигнала. Причём постоянно меняющееся. Что есть очень плохо.

Не на слух они фиксируются, а вычленяются с помощью камертона или другого эталонного источника.
Никто не будет сравнивать звук с эмулятора с каким-то эталоном, чтобы зафиксировать отклонение.
Я, как человек, пишущий музыку, и имеющий все-таки какой-то музыкальный слух, скажу, что звук был идеальный.


при динамической подстройке на отрезках порядка фрейма стабилизировать частоту не выйдет, не получится измерить реальную частоту обновления с достаточной точностью за один кадр. Поэтому скорость воспроизведения звука будет заметно гулять. Я помню, кажется Titus выкладывал эмулятор с такой подстройкой, в нём реально на слух было слышно изменение тональности звука.
Выйдет и получится. Не будет она гулять на слух вообще.
Я выкладывал всякие релизы для тестов, чтобы понять, какие у народа звуковухи. Оказалось, что таких, как у меня, дающих информацию о позиции воспроизведения с точностью до семпла, практически нет. Поэтому все гуляло.

omercury
13.05.2019, 03:00
Ага, уже лучше.
Посмотрел ДШ на несколько звуковых кодеков, у всех есть вход синхронизации 48kHz (какая знакомая частота! к чему бы?...) фиксированное значение.
Вывод: все остальные частоты дискретизации - в чистом виде ресемплинг.
...и совсем нет буферизации...
то есть "циркулярный буфер" есть понятие эмпирическое, существующее в воспалённом мозгу аудиодрайвера.мне Ваш вывод не понятен :) Звуковая карта живёт своей жизнью, видеокарта своей. У обоих свои источники синхронизации и они друг о друге ничего не знают. Как будет происходить синхронизация видео и звука - это проблема софта.
Попробуем на пальцах.
Только что, путём несложного анализа схемотехники было доказано, что частота дискретизации не зависит от тактовой звукового чипа. И от косорукости программиста тоже (хотя именно в этом я могу и ошибаться, внутреннее построение чипсета мне неизвестно).
Ибо синхронизация внешняя, аппаратная, от южного моста чипсета.
Тон, да, зависит, но сэмплрейт никак (в пределах такта клока 1/24,56М).
И что-то мне подсказывает, что точно также я найду синхронизацию видеокарты.
Либо ОТ видеокарты.
Как минимум IRQ там точно присутствует.




На 100Гц всё шоколадно, на 75 тоже хорошо - кадр1 -> кадр1+кадр2 -> кадр2.
60Гц - очень поганая частота в наших широтах...
это кажется что хорошо.
Да, 100 Гц кратная частота, поэтому проблем с алиасами не будет, но визуально 100 Гц развёртка воспринимается всётаки несколько иначе, чем 50 Гц. На 100 Гц ЭЛТ дисплее 50 Гц обновление выглядит немного дёрганным :)
Чтобы устранить этот эффект, нужен полноценный апсэмплинг пикселов. Для 100 Гц промежуточные кадры должны заполняться усреднённым значением между двумя кадрами.
Вычислить, например, из пяти реальных кадров четыре кадра (первый и шестой остаются исходными) со сдвигом (50 -> 60Гц) не такая уж тривиальная задача.
ЯТД :)
С соответствующей задержкой, разумеется.

ZXMAK
13.05.2019, 09:53
Это голословное заявление :v2_dizzy_stop: и притом в противоречии с практикой - повторю, на разницу в звучании спектрумов 48 и 128 до сих пор особо никто не жаловался

при чём тут спектрум 48 и 128? И у того и у другого тактовая частота стабильная и не меняется.
А тут речь идёт о том чтобы сделать частотную модуляцию тактовой частоты, т.е. частота будет постоянно меняться в зависимости от текущей ошибки между опорными генераторами звуковой и видео карт. А также от ошибки измерения этой ошибки :)

- - - Добавлено - - -



Как минимум IRQ там точно присутствует.


при чём тут IRQ?! Видели в спектруме есть такой элемент - кварцевый осциллятор, который даёт опорную частоту, от которой вырабатываются остальные частоты? Вот такой-же осциллятор стоит на звуковой карте и на видео-карте. Частоты и фазы этих осцилляторов плавают от начального несоответствия и от температуры. Из-за этого несоответствия получается небольшая ошибка. Она очень маленькая, но со временем накапливается.

Если привести обе частоты к 50 Гц, то эта ошибка составит менее 0.001 Гц, может даже меньше. Но она есть и со временем накапливается.

!dx
13.05.2019, 10:10
Поколению мало эмуляторов. &(Нехай делать ?). Напиши лучше Качественный C/C++(+LLVM Z80) компилятор для Z80 - ПОЛЬЗы БуДЕТ БоЛЬШЕ !

s_kosorev
13.05.2019, 10:24
Вот такой-же осциллятор стоит на звуковой карте и на видео-карте.
В 99% компьютеров, нет звуковой карты, есть микросхема умеющая DAC, просто микросхема которая преобразовывает цифровое значение в регистре в напряжение на выходе. Все остальное программно, макс с использованием DMA контролеров в процессоре или южном мосту, зависит от поколения и производителя.

- - - Добавлено - - -

Типичный представитель, 10 летней давности, не особо отличается от того что сейчас
https://www.rockbox.org/wiki/pub/Main/DataSheets/WM8731_8731L.pdf

- - - Добавлено - - -

У современных будет не 2 канала а 8 + еще какие то доп фильтры итд

ZXMAK
13.05.2019, 10:25
В 99% компьютеров, нет звуковой карты, есть микросхема умеющая DAC, просто микросхема которая преобразовывает цифровое значение в регистре в напряжение на выходе.

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

s_kosorev
13.05.2019, 10:28
На плате стоит синтезатор частот, который из кварца на 26мгц делает всю сетку частот

ZXMAK
13.05.2019, 10:29
Типичный представитель, 10 летней давности, не особо отличается от того что сейчас
https://www.rockbox.org/wiki/pub/Main/DataSheets/WM8731_8731L.pdf


вы дали ссылку на кодек. Ему нужна частота сэмплирования, в случае данного кодека она подаётся на вывод DACLRC. А вырабатывается она на синтезаторе, тактируемом от кварца.

s_kosorev
13.05.2019, 10:31
У даков в ац97 нет клока, уровень сигнала меняется после поступления порции данных, можно данные подавать с частотой 17кгц или 35кгц, тут уже больше от ОС зависит

- - - Добавлено - - -


в случае данного кодека она подаётся на вывод DACLRC.
Это строб данных, там последовательный интерфейс, аля I2S

ZXMAK
13.05.2019, 10:32
На плате стоит синтезатор частот, который из кварца на 26мгц делает всю сетку частот

если это встроенная звуковуха, то возможно тактирование от одного из осцилляторов на материнке. Отдельные платы (вставляемые в PCI или PCIE слот) имеют свой осциллятор и синтезатор.

s_kosorev
13.05.2019, 10:34
Отдельные звуковые это большая редкость и в 90% случаев, это китайская USB Audio 7.1 Super stereo HI FI 3D, за 1$, а там еще USB свои нюансы добавляет

ZXMAK
13.05.2019, 10:39
Это строб данных, там последовательный интерфейс, аля I2S

из него или из BCLK (это не суть важно) кодек вырабатывает частоту сэмплирования, которая обязательно нужна для DAC и эта частота должна быть достаточно чистой, чтобы минимизировать нелинейные искажения.

Зачем лезть во внутренности кодеков? Любой из них использует DAC, которому нужна опорная частота. И эта частота вырабатывается из опорной частоты, формируемой кварцем. Если это материнка, то для формирования частоты может использоваться её синтезаторы. А могут и не использоваться, т.е. будет свой кварц для звукового модуля. Если это отдельная плата, у неё свой опорник, в особенности если она высококачественная.

Как бы там ни было, звуковая карта и видеокарта будут тактироваться от отдельных опорников. Независимо от того встроенная это звуковая карта или нет. У меня на пример звуковая встроенная и тактируется от отдельного опорника, поэтому есть ошибка между видео развёрткой и частотой сэмплирования звуковухи.

Более того, могу сказать что моя звуковуха видимо тактируется от отдельного опорника, т.к. если привести частоту сэмплирования к 50 Гц, то при измерении относительно таймера материнки получается частота 49.999. А вот если привести частоту видеоразвёртки к 50 Гц, то при измерении относительно того-же таймера материнки получается 50.015 Гц (погрешность большая из-за низкой частоты развёртки, но среднее значение стабильно колеблется на уровне 50.015...50.020 Гц). Сама частота видеоразвёртки измеренная относительно таймера материнки также колеблется на уровне 75.020 Гц. Частота таймера материнки 2'742'919 Гц.

s_kosorev
13.05.2019, 10:57
Еще раз нет и нет.
Там опорная частота интерфейса данных кодека, она под мегагерц в старых компах.
И частота дискретизации по факту это чисто программное явление, на какую частоту настроили DMA (у которого базовая частотам может быть 66мгц, если это какой то BX440 или 200мгц в каком то атлоне на ам3 сокете) а DMA еще будет соперничать за шину, что бы послать байтики

А может быть вообще программно, пересылает данные в порт AC97 по IRQ.

В целом AC97 по определению имеет очень косвенное отношение к качественному звуку.

- - - Добавлено - - -

Звук и в видео разбегаются из за самой природы, многозадачной ос, она не может выдержать точно кванты, задача может спать в тот момент, когда тебе нужно отреагировать, вот и все, рилтайм приоритеты и прочие вещи не помогут, там как могла быть обработка прерывания от DMA который питал AC97 или работал с SATA винтом.

ZXMAK
13.05.2019, 11:04
Звук и в видео разбегаются из за самой природы, многозадачной ос, она не может выдержать точно кванты

ос тут ни при чём. Разбегаются аппаратные ивенты (прерывания от звуковой карты и сигнал обратного хода луча видеокарты). Но ошибка там такая маленькая, что это нужно часами сидеть и мониторить её.

s_kosorev
13.05.2019, 11:09
ос тут ни при чём.
Обработка прерывания в ОС это тоже целая история, тот же VSync от видеокарты, если ОС находилась в ядре, это одно время реакции, в юзер процессе - другое, потом она кинет сигнал в какую то очередь ядра, дальше какой то Poll цикл заметит его и либо пошлет сообщение процессу, либо разблокирует ожидающий процесс, а это опять же зависит, сколько процессов ждало что то, сколько хотело отреагировать а это событие,
а мож SSD задумалось, блоки переставлял в этот момент и не отпускало критическую задачу ядра, по свапу страниц памяти (а мы же знаем, что этот процесс происходит даже при 90% свободной памяти)
Может кеш вытеснили, может память в булк регенерации была, может отработали самые высоко приоритетные события подсистемы питания (аля выключили парочку бездевствующих ядер или включили)

В общем тыщу если

ZXMAK
13.05.2019, 11:12
Обработка прерывания в ОС это тоже целая история, тот же VSync от видеокарты, если ОС находилась в ядре, это одно время реакции, в юзер процессе - другое, потом она кинет сигнал в какую то очередь ядра, дальше какой то Poll цикл заметит его и либо пошлет сообщение процессу, либо разблокирует ожидающий процесс, а это опять же зависит, сколько процессов ждало что то, сколько хотело отреагировать а это событие,


на измерение частоты это заметно не влияет, т.к. измеряется среднее значение за длительные промежуток. Те задержки о которых Вы говорите, они могут создать джиттер для измерения одного фрейма, но на измерение средней частоты это не повлияет. Точно также как джиттер не влияет на результат измерения частотомера. Хотя на спектроанализаторе видны эти случайные отклонения.

s_kosorev
13.05.2019, 11:17
DMA инициализирует OC, по системному вызову или в каком то ISR, все нюансы с таймингами, но меньшей степени (где были юзер/ядро), касаюстя и ISR
И это гораздо большая проблема чем плавающая на 20ppm частота кварца

NEO SPECTRUMAN
13.05.2019, 11:35
Но ошибка там такая маленькая, что это нужно часами сидеть и мониторить её.
ну это у кого как

ZXMAK
13.05.2019, 12:04
DMA инициализирует OC, по системному вызову или в каком то ISR, все нюансы с таймингами, но меньшей степени (где были юзер/ядро), касаюстя и ISR
И это гораздо большая проблема чем плавающая на 20ppm частота кварца

Эти задержки мало на что влияют (пока они достаточно короткие конечно). Для программы не нужна большая точность.
Железо инициализируется один раз, дальше всё происходит аппаратно. Программе нужно только периодически пополнять буфер по прерываниям. А вот рассинхронизация за счёт тактирования от разных опорников приведёт к тому, что со временем ошибка между видео и аудиофреймами может накопиться и произойдет потеря одного из фреймов.

s_kosorev
13.05.2019, 12:12
Железо инициализируется один раз, дальше всё происходит аппаратно.
Нет желаза! AC97 и иже с ним, софтовые звуковухи, это раньше были, с аппаратными буферами, своими DMA, сейчас такое есть только в проф карточках

- - - Добавлено - - -

Самое железное, что сейчас можно взять, это USB верещалки от китайцев

ZXMAK
13.05.2019, 12:15
Нет желаза! AC97 и иже с ним, софтовые звуковухи

железо есть. Windows физически не способна прерываться 192000 раз в секунду на то, чтобы подкинуть следующий байт. Даже 1000 раз в секунду и то будет проблема. Софтовость звуковухи проявляется в том, что вся сигнальная обработка происходит программно. А вывод звука идёт аппаратно. Раньше звуковухи умели сами накладывать цифровые фильтры, микшировать несколько каналов и производить другую обработку звука с помощью DSP. Сейчас это делает винда. А вывод звука из буфера всё также аппаратно происходит, основной процессор в этом не участвует.

s_kosorev
13.05.2019, 12:31
Windows физически не способна прерываться 192000 раз в секунду на то, чтобы подкинуть следующий байт.
Но она
а. способна настроить один из dma каналов, что бы послать порцию (судя по коментам выше на 480 выборок)
б. протормозить, когда закончилась порция, так как к примеру обрабатывала другое irq, и эти тормоза будут поболее чем погрешность кварца

ZXMAK
13.05.2019, 12:44
а. способна настроить один из dma каналов, что бы послать порцию (судя по коментам выше на 480 выборок)

те 480 выборок - это чисто программная фишка. Т.к. аудиопоток от приложения еще микшируется и производится сигнальная обработка системой, прежде чем он попадёт в звуковую карту.



б. протормозить, когда закончилась порция, так как к примеру обрабатывала другое irq, и эти тормоза будут поболее чем погрешность кварца

если система протормозит и не пополнит порцию буфера, то звуковая карта будет по кругу играть то, что ей дали до этого. Эту ситуацию можно наблюдать например во время BSOD'а, когда система перестаёт обновлять звуковой буфер и звуковуха играет последнюю порцию по кругу.

Titus
13.05.2019, 13:15
Самое железное, что сейчас можно взять, это USB верещалки от китайцев
Вот как раз внешние USB звуковухи и самые проблемные для точной синхронизации. Они - единственные, которые в WASAPI Exclusive не давали точной позиции воспроизведения.

s_kosorev
13.05.2019, 15:12
те 480 выборок - это чисто программная фишка.
конечно программная, драйвер набивает буфер, потом на него натравливает дма, весь ac97 программный, уже несколько раз говорил

если система протормозит и не пополнит порцию буфера, то звуковая карта будет по кругу играть то, что ей дали до этого.
это на карточках с полноценными звуковыми чипами (было некоторое время на материнаках, ставили pci чипы с звуковых карт), ас97 в теории возможно, на практике очень сильно сомневаюсь

- - - Добавлено - - -


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

Lethargeek
13.05.2019, 19:16
при чём тут спектрум 48 и 128? И у того и у другого тактовая частота стабильная и не меняется.
при том, что "гигантскую разницу" в звуке 48 и 128 почему-то никто не замечает
а раз на стабильной не замечают, то тем более не заметят меньшей разницы в соседних долях секунды


А тут речь идёт о том чтобы сделать частотную модуляцию тактовой частоты, т.е. частота будет постоянно меняться в зависимости от текущей ошибки между опорными генераторами звуковой и видео карт.
постоянно изменяться она НЕ будет, есть ряд чисел 0 < u < w < x < y < z
пока размер очереди болтается между w и y - никакой коррекции не требуется
если выходит за эти пределы - начинаем понемногу плавно корректировать к x
и лишь если размер резко вышел за (u...z) разница может стать больше долей %
что на мой взгляд всё равно будет предпочтительнее щелчка


А также от ошибки измерения этой ошибки
здесь её нет, качество реализации определятся подбором констант u-z

NEO SPECTRUMAN
13.05.2019, 19:42
вставлю свои 5 копеек


гигаскрин
упоминавшийся раннее
так же как и плавные скроллы
юзается в 99% случаев в демках

в демах же
в 97% случаев
не требуется активное взаимодействие с пользователем
(включил и смотришь)

и что я предлагаю

режим эмулятора для просмотра демок

пишем 2 секунды(может прокатит и фреймов 10-20) работы эмулятора в буфер (кадры и звук)
а потом через время начинаем выводить кадры с всинком + фреймоверсемплинг
и ресемплируем записанный звук до нужного количества семплов и тожо выводим

изза гигантского размера буфера
описанные выше алгоритмы сплющевания звука
будут давать минимальное количество искажений
да и число семплов в секунды должно быть более стабильным

при этом всегда будут кадры и звук в запасе для...

- - - Добавлено - - -


Даже 1000 раз в секунду и то будет проблема
ASIO как то выводит
да и при этом еще и вводит

Titus
13.05.2019, 20:12
при том, что "гигантскую разницу" в звуке 48 и 128 почему-то никто не замечает
а раз на стабильной не замечают, то тем более не заметят меньшей разницы в соседних долях секунды
Человек как раз хорошо замечает то, что может сравнить.
Если ты покажешь на мониторе картинку размером в 100см шириной, а завтра покажешь эту же картинку, но она будет уже 99см шириной, никто не заметит разницы. Не с чем сравнить.
А если ты на мониторе покажешь картинку 100см шириной, которая каждую секунду будет меняться местами с картинкой 99.9см шириной, то это сразу заметят.
Так и со звуком. Если в реальном времени частота будет плавать хотя бы на 1% - это будет весьма заметно. А на 2% и больше - это вообще труба.

NEO SPECTRUMAN
13.05.2019, 20:16
Так и со звуком. Если в реальном времени частота будет плавать хотя бы на 1% - это будет весьма заметно. А на 2% и больше - это вообще труба.
к сожалению
некоторым на ухо наехал паровоз
и они вообще ничего не могут отличить
...и при этом еще считают что могут кимпизиторить...

если что это я про некоторых знакомых людей ИРЛ

Lethargeek
13.05.2019, 20:39
Человек как раз хорошо замечает то, что может сравнить.
и с чего ты взял, что человек способен хорошо замечать разницу в 1% частоты?
особенно не скачком и слушая не монотонный вой, а сложную музыку


Если ты покажешь на мониторе картинку размером в 100см шириной, а завтра покажешь эту же картинку, но она будет уже 99см шириной, никто не заметит разницы. Не с чем сравнить.
нет, просто разница в 1% - НЕ "гигантская" :v2_dizzy_biggrin2:


А если ты на мониторе покажешь картинку 100см шириной, которая каждую секунду будет меняться местами с картинкой 99.9см шириной, то это сразу заметят.
смотря как и где показать - на двухметровом мониторе, если картинка еще будет быстро перемещаться или вращаться - хрен кто заметит :v2_tong2:


Так и со звуком. Если в реальном времени частота будет плавать хотя бы на 1% - это будет весьма заметно. А на 2% и больше - это вообще труба.
в моём эмуле почему тогда никто не заметил? иногда жаловались только на треск
и ты сам треск заметил сразу, а "весьма заметный плавающий звук" не заметил
я не рассказал бы - и ты, небось, до сих пор не подозревал бы даже об этом

ZXMAK
13.05.2019, 20:49
при том, что "гигантскую разницу" в звуке 48 и 128 почему-то никто не замечает
а раз на стабильной не замечают, то тем более не заметят меньшей разницы в соседних долях секунды

не замечают потому что частота стабильная и не меняется. Если включил тон 1000 Гц, то он и звучит чисто и стабильно.
Сама тональность у 48 и 128 немного отличается, но она стабильна и не меняется.
А вот при плавающей тактирующей частоте тональность звука будет постоянно плавать, т.е. тон сигнала будет меняться, грубо говоря включил чистый сигнал "ииииииииии", а он звучит как "виуууууииииув" :) ухо эти изменения частоты и улавливает.

Titus
13.05.2019, 20:52
и с чего ты взял, что человек способен хорошо замечать разницу в 1% частоты?
особенно не скачком и слушая не монотонный вой, а сложную музыку
На фоне сложной музыки, конечно, различить сложнее.
Но сама по себе разница в 1% - гигантская.

Послушай, Фома Неверующий) Тут 990Гц, затем слитно 1000Гц.
https://dropmefiles.com/R25Eg

- - - Добавлено - - -


в моём эмуле почему тогда никто не заметил? иногда жаловались только на треск
и ты сам треск заметил сразу, а "весьма заметный плавающий звук" не заметил
я не рассказал бы - и ты, небось, до сих пор не подозревал бы даже об этом
Мне уже треска было достаточно)

ZXMAK
13.05.2019, 20:59
постоянно изменяться она НЕ будет, есть ряд чисел 0 < u < w < x < y < z
пока размер очереди болтается между w и y - никакой коррекции не требуется


это уж как повезёт с частотой кварцевых резонаторов. Если попались достаточно точные и одинаковые (что редко бывает, обычно разброс до 2 кГц), с одинаковой температурной зависимостью и установленные в корпусе компа так, что температура звуковой карты и видеокарты одинакова, то вполне возможно, что коррекции не потребуется.

- - - Добавлено - - -



ASIO как то выводит
да и при этом еще и вводит

ASIO выводит не по одному семплу, а тоже буфером. Смысл ASIO в том, чтобы сократить задержки обработки этого буфера до какого-то лимита. Суть сводится к тому, что подход "пусть этот звук тут пол секунды полежит, а потом дальше можно отправлять" не годится, задержка лимитирована.

- - - Добавлено - - -


и с чего ты взял, что человек способен хорошо замечать разницу в 1% частоты?


Разницу 0.1% частоты для 1 кГц тона практически все люди без проблем различают.

omercury
13.05.2019, 23:09
Типичный представитель, 10 летней давности, не особо отличается от того что сейчас
https://www.rockbox.org/wiki/pub/Main/DataSheets/WM8731_8731L.pdf
Здесь I2S шина, не так показательно, как в старых чипах, где за синхронизацию отвечает отдельный пин.


это уж как повезёт с частотой кварцевых резонаторов. Если попались достаточно точные и одинаковые (что редко бывает, обычно разброс до 2 кГц), с одинаковой температурной зависимостью и установленные в корпусе компа так, что температура звуковой карты и видеокарты одинакова, то вполне возможно, что коррекции не потребуется.
о5-25
Клок нужен для интерфейса.
Ну и для дельта-сигма АЦП/ЦАП, если они есть.
Не надо догадок и предположений, читайте лучше документацию, её есть в интернетах.
69003

- - - Добавлено - - -

Нашел кой-какие доки по знаменитой Аудиджи.
Ибо поискал))) (источник) (http://emu10k1.tripod.com/hardware.htm)
Если честно, я несколько смущён...
http://emu10k1.tripod.com/images/fig_3A.gif
Тактовая берётся от кодека AC97, всё синхронизироутся через PLL (ФАПЧ), что просто гарантирует джиттер.
Ну принцип работы у него такой...
:v2_blink:

NEO SPECTRUMAN
14.05.2019, 01:08
пол секунды
конечно с пол секунды проржал...

Lethargeek
14.05.2019, 06:00
На фоне сложной музыки, конечно, различить сложнее.
не "сложнее", а "практически невозможно", например
fairlight - всплески на 1% незаметны, northstar - даже и при 2% не слышно разницы
на чистом тоне - да, всплеск 1% можно различить, особенно если знать, когда ждать
слышится как небольшой провал громкости (что наводит на мысли о компенсации)
но 0.1-0.2% (типичные 1-2 сэмпла) и на чистом тоне уже не слышно


Послушай, Фома Неверующий) Тут 990Гц, затем слитно 1000Гц.
это смена ноты, а не коррекция


это уж как повезёт с частотой кварцевых резонаторов. Если попались достаточно точные и одинаковые (что редко бывает, обычно разброс до 2 кГц), с одинаковой температурной зависимостью и установленные в корпусе компа так, что температура звуковой карты и видеокарты одинакова, то вполне возможно, что коррекции не потребуется.
да при чём тут разница частот резонаторов, когда частота дискретизации вычисляется по средней скорости забора сэмплов системой
и незаметная периодическая коррекция на плюс-минус сэмпл нужна только при ненулевой дробной части этой величины
целая же часть изменяется только при серьёзных взбрыках системы, но и тогда корректировка может и не понадобиться
хотя даже если и понадобится, всё равно это будет выгоднее варварских методов пропуска и отсечения звука

Titus
14.05.2019, 07:32
это смена ноты, а не коррекция
Какой ноты?

Это смена частоты на 1% на чистом тоне.

- - - Добавлено - - -


но 0.1-0.2% (типичные 1-2 сэмпла) и на чистом тоне уже не слышно
0.1-0.2% вполне различаются, но это уже на грани, и только на чистом тоне.

- - - Добавлено - - -


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

Да, кстати, как ты выбрасываешь звуковой фрагмент при синхре от видео, чтобы не было щелчка на склейках звука? Через фильтр какой-то пропускаешь?

NEO SPECTRUMAN
14.05.2019, 11:31
Да, кстати, как ты выбрасываешь звуковой фрагмент при синхре от видео, чтобы не было щелчка на склейках звука? Через фильтр какой-то пропускаешь?
ну а с какого там будет щелчок?

выбрасываемый фрагмент достаточно короткий
сигнал уже ресемплирован до частоты звуковухи

это если на 3,5 МГц выпадет короткий импульс
то биперное шим-ление
издаст посторонний треск

а тут можно выкидывать приличное время
будет заметно только если поставить рядом генератор с той же частотой
при выпадении семплов будет постоянно уезжать фаза
и будут заметны биения

ну и это дополнительное растройство сверх низких частот
но от потери пары семплов
ничем не измеримое и не заметное

или можно просто продублировать несколько семплов
и тоже треска не будет

у меня в ау48 в ковокс версии
вообще тактов 2000 не обновлялось значения на ковоксе
так никаких щелчков и не было
было слышно модулирование 50 герцами

ZXMAK
14.05.2019, 16:45
и незаметная периодическая коррекция на плюс-минус сэмпл нужна только при ненулевой дробной части этой величины


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

Lethargeek
14.05.2019, 20:46
Какой ноты?
воспроизводимой :D когда сперва одна играет долго, потом другая
а коррекция - это когда частоты фреймов n,n,n...n,n+1,n,n...


0.1-0.2% вполне различаются, но это уже на грани, и только на чистом тоне.
не гони, хрен ты различишь на чистом фоне отдельные фреймы с нечётным сэмплом


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

ZXMAK
15.05.2019, 11:37
снова лирика, так-то звук "ухудшается" при любой дискретизации, вопрос - насколько
особенно в свете предлагаемых чудесных альтернатив типа выбрасывания кадров

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

NEO SPECTRUMAN
15.05.2019, 20:29
А если условие по спектру выполняется, то сигнал прекрасно восстанавливается (без искажений) независимо от частоты дискретизации.
ага
при условии бесконечности сигнала

да и посмотрел бы как эти умники востановят синусоиду
22050Гц при частоте дескритизации в 44100
и как они отличат ее от треугольника

из кратной частоты ничего не востановишь

- - - Добавлено - - -


Дискретизация звук никак не ухудшает, а ограничивает его полосу.
так что это ахинея сферическая в вакууме

ZXMAK
16.05.2019, 02:31
да и посмотрел бы как эти умники востановят синусоиду
22050Гц при частоте дескритизации в 44100

22050 Гц синусодида при частоте дискретизации 44100 Гц восстанавливается идеальной формы. Правда вы выбрали частоту на самой границе первой зоны Найквиста. Малейший джиттер или неточность частоты и получим выход частоты за пределы 22050 Гц и как следствие - появление имиджа.


и как они отличат ее от треугольника

для идеального треугольника с частотой 22050 Гц полосы 22050 Гц не хватит, спектр сигнала треугольной формы бесконечен, как и у меандра. На практике можно ограничиться частотой дискретизации 4.4 МГц. Впрочем ухо всеравно не слышит частоты выше 20 кГц, поэтому смысла иметь треугольную волну с частотой 22 кГц нет, можно урезать её фильтром до синуса 22050 Гц. :)

NEO SPECTRUMAN
16.05.2019, 02:40
восстанавливается идеальной формы.
ага
а если исходный сигнал меандр или пила или треугольник
а востановит синусоиду

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

а если исходный сигнал такой формы будто меандр с алиасингом?
и записалася он просто идеально без потерь
а ты на оно натривишь шенона
то это будет не востановление
а только порча исходного сигнала
...

херня это все
после оцифровки
ничего нельзя востановить
можно попытаться вытянуть чуть больше информации
или сгладить ступеньку
но не более того

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

omercury
16.05.2019, 18:02
это не лирика, а физика. Дискретизация звук никак не ухудшает, а ограничивает его полосу.
...
А если условие по спектру выполняется, то сигнал прекрасно восстанавливается (без искажений) независимо от частоты дискретизации.
Теоретически таки да, если будет пищать на одной ноте.
Только, какое отношение теорема Котельникова имеет к нашему случаю, немного непонятно.



тем более в природе НЕТ бесконечных, постоянных и неизменных сигналов
чтоб их как то востанавливать после задескритизации...
в сферическом вакууме есть
но на то он и сферический
пушонепремениминахнамнену жен
Стробоскопические осциллографы, основанные на этом эффекте, весьма неплохо себя зарекомендовали,
Частотомеры, опять же с использованием того же эффекта (reciprocal counter), дают высокую точность измерений на любой частоте (в пределах полосы пропускания, разумеется), в отличие от классических методов.

Такшта очень даже применимо. ;)
Но... для стационарных сигналов.

NEO SPECTRUMAN
17.05.2019, 00:29
Частотомеры
как бы стробоскопические осциллографы основанны на стробоскопическом эффекте
да и вообще при этом соверешенно противоположный принцип
тк как раз создают алиасинг
и видят им резонансные кратные частоты

так же как и частотомеры

- - - Добавлено - - -


Только, какое отношение теорема Котельникова имеет к нашему случаю, немного непонятно.
никакое

ZXMAK
17.05.2019, 01:54
ага
а если исходный сигнал меандр или пила или треугольник
а востановит синусоиду


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

NEO SPECTRUMAN
17.05.2019, 03:40
синусоида - это форма сигнала с минимальной частотой. И максимально узкой полосой.
да я в курсе
а меандр и тд своими гармониками растут в бесконечность
и требуют бесконечной частоты дискретизации итд..

вопрос где в спектруме можно встретить синусоиду...

а так предлагаю вернутся к обсуждению синхронизации звука и видео
192КГц+ по дефолту в ПЦ еще нет (хотя в спектруме оно всегда был :) )
хотя это ничего толком и не даст
проблема таки остается

ZXMAK
21.05.2019, 16:01
192КГц+ по дефолту в ПЦ еще нет (хотя в спектруме оно всегда был :) )

на многих материнках встроенная звуковуха поддерживает 192 кГц 24 бит

NEO SPECTRUMAN
21.05.2019, 16:03
на многих материнках встроенная звуковуха поддерживает 192 кГц 24 бит
А венда нормально переваривает
или нужон аудифильский плеер и драйвера?

BobrovS
19.08.2019, 22:49
Всем доброго времени суток!
Столкнулся с проблемой при использовании эмулятора: автозагрузочный Quick Commander c вот этого (https://vtrd.in/demoz/demoz/F20.zip) образа диска после запуска не показывает каталог диска с выводом сообщения "No disk". В Spectaculator все работает, но качество звука хуже, поэтому хотелось бы запустить эти демки в Спектрамин. Кстати, этот Quick Commander активно используется авторами сайта Virtual TR-DOS при сборке образов дисков со свежими демками, поэтому приведенный образ далеко не единственный.

Spectramine
19.08.2019, 23:14
Всем доброго времени суток!
Столкнулся с проблемой при использовании эмулятора: автозагрузочный Quick Commander c вот этого (https://vtrd.in/demoz/demoz/F20.zip) образа диска после запуска не показывает каталог диска с выводом сообщения "No disk". В Spectaculator все работает, но качество звука хуже, поэтому хотелось бы запустить эти демки в Спектрамин. Кстати, этот Quick Commander активно используется авторами сайта Virtual TR-DOS при сборке образов дисков со свежими демками, поэтому приведенный образ далеко не единственный.

Да, есть такое. Предыдущий релиз Спектрамина использует библиотеку эмуляции дискового интерфейса BDI wd1793.dll от Mark Woodmass, автора эмулятора SpecEmu, а она не очень точная. Аналогично часть образов дисков +3 не работают из-за использования библиотеки эмуляции дискового интерфейса +3 fdc765.dll. (Соответственно, в эмуляторах SpecEmu и ZXSpin, использующих эти библиотеки, те же проблемы.) Пока, увы, могу только порекомендовать поискать альтернативные образы нужных дем на сайте https://zxaaa.ru/view_demos.php , или на https://zxart.ee .

BobrovS
20.08.2019, 12:23
weiv, Спасибо за развёрнутый ответ! В нем есть упоминание предыдущего релиза эмулятора, в связи с чем возникает вопрос: а есть ли более свежий релиз? И если да, то реализована ли в нем более точная эмуляция дискового интерфейса?

Spectramine
20.08.2019, 12:58
weiv, Спасибо за развёрнутый ответ! В нем есть упоминание предыдущего релиза эмулятора, в связи с чем возникает вопрос: а есть ли более свежий релиз? И если да, то реализована ли в нем более точная эмуляция дискового интерфейса?

Нет, более свежего релиза пока нет.

ZEman
27.03.2021, 18:38
weiv, можно узнать, какая версия эмулятора на сегодня самая последняя и где её можно скачать ?

Spectramine
27.03.2021, 23:27
Новых версий не было с 2017го года. Скачать релиз эмулятора со всеми сопутствующими файлами можно здесь: http://www.emu-land.net/computers/zx_spectrum/emuls/windows.
Публичный апдейт 1.02 можно скачать здесь: https://drive.google.com/file/d/1fg4MTYFhzvEIcbDZgMgQxMpJr2iGjzl7/view?usp=sharing

ZEman
27.03.2021, 23:34
после 1.03b не было обновлений ?

Spectramine
27.03.2021, 23:52
Публичных не было.

ZEman
28.03.2021, 06:44
А если не публичная, тогда как, куда и сколько будет стоить?

Spectramine
28.03.2021, 12:08
Пока, увы, никак, никуда и нисколько. Нет мотивации заниматься релизом.

Misha Pertsovsky
11.05.2022, 03:27
Понятно, что невозможно найти аргументов, которые бы убедили автора продолжить разработку этого эмулятора. А эмулятор шикарный -- он, единственный из всех, что я смог найти, загрузил эту игрушку (Alt+Q, F3). Сама игрушка довольно обычная, но вот загрузка её уникальна! Это такая загрузка, что дико жалеешь, что этого метода не было в стандартном ПЗУ Спектрума -- картинка загружается не до основного блока, а во время его, причем построчно. Получается, что дождавшись загрузки картинки, фактически сразу и начинаешь игру -- т.е. картина одновременно является и прогресс-баром загрузки! Шикарная технология и только Спектрамин смог загрузить этот файл -- ну разве это не повод хоть немножко продолжить развитие этого уникального продукта? Было бы классно! :-)

https://disk.yandex.ru/d/VgubumISzuHUfA

Xela
11.05.2022, 15:21
А эмулятор шикарный -- он, единственный из всех, что я смог найти, загрузил эту игрушку (Alt+Q, F3).[/URL]

Эмулятор и правда шикарный, но если говорить про игру, то Hall of the Things грузится совершенно нормально и в Unreal и в Spectacultor.

кстати, в вашем tzx-файле нет бейсик загрузчика...

Misha Pertsovsky
14.05.2022, 05:13
Ты несомненно прав! И особенно замечательно, что это не помешало данному эмулю запустить загруженный кодовый блок, что часто очень полезно при разработке программ (хотя и не критично).

(Что касается игры, прикол в том, что этот tzx я качал с крупного сайта, в разных вариантах (от разных издателей) в форматах и tzx и tap.. И загрузка там была разной, но везде не было бейсик-загрузчика.. Было бы интересно поглядеть лицензионную кассету -- может и там нет бейсик-загрузчика, а в инструкции просто написаны соответствующие команды? Это было бы вдвойне необычно -- в т.ч. как своеобразная защита от копирования, в т.ч. даже напрямую с ленты на ленту! Может даже гениальная защита! Такая же уникальная, как и загрузка этой игры -- не удивился бы! :-) )

creator
14.05.2022, 07:11
Такое впечатление, что все не читали (https://zx-pk.ru/threads/31696-spisok-firmennykh-igr-s-nestandartnoj-zagruzkoj-ekrana-vyvodom-opisaniya-v-protsesse.html?p=1062561&viewfull=1#post1062561) "тайники" или "спектрум изнутри":


Другим интересным способом способом запуска блоков машинного кода
является считывание программы в область машинного стека. Этим способом
можно запускать блоки машинного кода, загружая их просто через LOAD ""
CODE. Этот метод показан схематично на рисунке 8.

Машинный Стек
┌───────────┐
65356 │ │
65357 │ ... │
Per SP ─────> │ 1343 │
65359 │ │
65360 │ 2053 │
65361 │ ╔═╧═══════╗
65362 │ 7030 ║ 65535 ║
65363 │ ║ ║
65364 │ 4867 ║ ? ║
65365 │ ║ ║
65366 │ ? ║ ? ║
RAMTOR ─────> │ 62 ║ 62 ║
65368 │ ║ LD IX ║
65369 │ ║ ... ║
65370 │ ║ LD DE ║
└─────────╢ ... ║
╚═════════╝

Рис.8 Схема автозапуска блока кодов.

Указатель стека (регистр SP) принимает показанное на рисунке 8
состояние в процессе выполнения процедуры 1366 (вызванную из БЕЙСИКа
через LOAD "" CODE). Способ запуска программы весьма прост. Адрес
считывания блока рассчитан так, что блок считывается на машинный стек
именно с того места, в котором находится (записанный интерпретатором
БЕЙСИКа) адрес возврата из инструкции LOAD "" CODE (он тогда равен
значению системной переменной ERRSP-2) или прямо из процедуры
LOAD-BYTES (равный ERRSP-6). Тогда два первых байта программы
обозначают адрес ее запуска. Этот способ очень похож на предыдущий, за
исключением того, что там подменялась процедура загрузки, а здесь -
адрес считывания блока кодов, микропроцессор считывает содержимое
стека и переходит по прочитанному адресу (который только что появился
в памяти). По этому адресу в программе находится начало процедуры
загрузки ее последующих блоков. Это видно на рисунке 8.
Метод обхода такой защиты также весьма прост, достаточно заменить
RAMTOR на соответственно низкое значение, а затем прочитать блок
кодов, который благодаря этому не запуститься.




В этом разделе был описан способ запуска машинного кода путем
считывания в область машинного стека. Чтобы такой блок запустить
достаточно ввести инструкцию LOAD "" CODE, которая запустит его. Чтобы
убедиться в этом на практике введите программу с листинга 5.

Листинг 5. Пример автозапуска машинной программы.

10 CLEAR 65361: LET s=0
20 FOR n=65362 TO 65395: READ a: POKE n,a: LET s=s+a: NEXT n
30 IF s<>3437 THEN PRINT "OSIBKA V STROKE DATA": STOP
40 SAVE "beep" CODE 65362,34
50 DATA 88,255,3,19,0,62,221,229,6,8,197,17,30,0,33,112,5, 205
60 DATA 181,3,33,0,8,43,124,181,32,251,193,16,235,221,225, 201

Она запишет на ленте короткий блок машинного кода, который будет
запускаться самостоятельно. После записи этого блока освободите память
с помощью RANDOMIZE USR 0 или <RESET> (по возможности переставьте
RAMTOR на нормальное значение с помощью CLEAR 65367) и загрузите его с
помощью LOAD "" CODE. Цель этого блока проинформировать о том, что он
запустился - он делает это несколькими звуковыми сигналами. Вы
услышите их сразу после считывания программы, как только с рамки
исчезнут красно-желтые полосы.

Я специально выделил место про изменение RAMTOP на другое значение и код не запустится.

Но в "Halls Of The Things" применён ещё более железобетонный метод запуска — код грузится в область системных переменных, а конкретно в

ERR_SP 23613/14 IY+3 (#5C3D/3E)
Адрес, на который устанавливается указатель стека при запуске программы обработки ошибок. Изменив значение переменной, можно подключить собственные процедуры обработки ошибок (см. «Использование подпрограмм ПЗУ»).

Совершенно неудивительно что он автоматически запускается после загрузки. И заслуги эмулятора, что он это умеет, здесь нет.

Xela
14.05.2022, 14:30
Такое впечатление, что все не читали "тайники" или "спектрум изнутри":
дело не в том, что читали или нет, или просто не помнят. Я, например, нашел у себя в архивах эту игру в виде сборника (хоть и фирменного) - там, в tzx у нее есть бейсик загрузчик, а дальше ровно такой же кодовый блок. поэтому удивился его отсутствию в приложенной версии.
удивлялся ровно до тех пор, пока не увидел официальную инструкцию к оригинальному изданию:

https://i.postimg.cc/YjC5mcB2/Halls-Of-The-Things-2.jpg (https://postimg.cc/YjC5mcB2)

...and load with LOAD "" CODE



И заслуги эмулятора, что он это умеет, здесь нет.
об этом я и говорил - прекрасно грузится и в других эмуляторах

creator
14.05.2022, 15:08
нашел у себя в архивах эту игру в виде сборника (хоть и фирменного) - там, в tzx у нее есть бейсик загрузчик, а дальше ровно такой же кодовый блок
Интересно, что там внутри этого бейсик-загрузчика.

Xela
14.05.2022, 15:49
Интересно, что там внутри этого бейсик-загрузчика.
это сарказм?)

1 LOAD "" CODE

я думаю сделан он ровно для того, что б в составе сборника писать LOAD "HOTT" что проще, чем LOAD "Fruit Cake" CODE

creator
14.05.2022, 18:35
это сарказм?)
1 LOAD "" CODE
Нет, не сарказм, я ожидал именно это, просто хотелось быть 100% уверенным.

drbars
17.05.2022, 07:11
Интересно, что там внутри этого бейсик-загрузчика.
Загружается поверх системных переменных бейсика, что вызывает автозапуск. Хорошая защита, необычная. Против MERGE "" например.

Bedazzle
17.05.2022, 14:54
Загружается поверх системных переменных бейсика, что вызывает автозапуск. Хорошая защита, необычная. Против MERGE "" например.

Так если только код, зачем merge?

Можно так:
1) clear 24999: load "" code 25000
2) сохраняем кусок кода от 25000 до 65535
3) снова грузим тот же кусок кода, но чтобы начало загрузилось в ram, потом кусок в rom, и хвост - в экран
4) сохраняем хвост из экрана
5) творим что хотим с двумя полученными кусками

Xela
17.05.2022, 15:05
творим что хотим с двумя полученными кусками
а что мешает творить что хотим с одним куском кода сразу? ну там в sts или еще куда?

Bedazzle
01.06.2022, 00:27
а что мешает творить что хотим с одним куском кода сразу? ну там в sts или еще куда?

и как загрузить в стс, если блок длиной 49152?

Xela
01.06.2022, 16:30
и как загрузить в стс, если блок длиной 49152?
в данном случае он длинной всего 24575 байта. потом, STS разве не в 128ой памяти сидит? я сейчас без наезда спрашиваю - последний раз запускал больше 20 лет назад, могу что-то путать.
и в третьих.. мне кажется мы тут уже совсем заоффтопили)

Sandro
01.06.2022, 19:48
и как загрузить в стс, если блок длиной 49152?

COPYCOPY (я не ошибся?) специально для этого имеет режим, когда при загрузке он пропускает кусочек длиной сколько-то там байт и прячет в этом месте модуль записи.

Bedazzle
02.06.2022, 19:04
STS разве не в 128ой памяти сидит? я сейчас без наезда спрашиваю - последний раз запускал больше 20 лет назад, могу что-то путать.

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


и в третьих.. мне кажется мы тут уже совсем заоффтопили)

Согласен. Но пока вроде никто не ругается. :)

- - - Добавлено - - -


COPYCOPY (я не ошибся?) специально для этого имеет режим

В кассетные времена много слышал про него, но т.к. доступ к системным программам был весьма ограниченный, вживую пощупать не удалось.
А чем подмена куска будет принципиально отличаться от разрезания большого блока на две части?

Sandro
02.06.2022, 19:11
А чем подмена куска будет принципиально отличаться от разрезания большого блока на две части?

Не надо ничего менять в загрузчике. Просто скопировал и всё. Ну, зато попортил картинку, если какой-нибудь дырки в программе не нашлось -- под стек, например.

dj--alex
13.07.2022, 06:03
Эмулятор полностью не работает
Wine 7.12 не удалось завести на Linux mint 19.3 x64
Обновил драйвер Нвидия до 510 и поставил новейшее ядро Jądro systemu Linux 5.17.11-xanmod1 x86_6
не помогло

user@PC1:/media/user/F/Games/Emuzwin/spektramin$ wine Spectramine
01a8:err:module:import_dll Library wd1793.dll (which is needed by L"F:\\Games\\Emuzwin\\spektramin\\Spectramine.exe") not found
01a8:err:module:import_dll Library fdc765.dll (which is needed by L"F:\\Games\\Emuzwin\\spektramin\\Spectramine.exe") not found
01a8:err:module:LdrInitializeThunk Importing dlls for L"F:\\Games\\Emuzwin\\spektramin\\Spectramine.exe" failed, status c0000135
01a0:fixme:ver:GetCurrentPackageId (000000000068FDB0 0000000000000000): stub
user@PC1:/media/user/F/Games/Emuzwin/spektramin$

Откуда брать эти дллки неясно

Spectramine
13.07.2022, 09:54
Откуда брать эти дллки неясно
Вы, похоже, скачали апдейт, в котором одни экзешники. Надо скачать полную версию 1.01, и заменить в ней экзешники из апдейта.

dj--alex
13.07.2022, 12:38
не ясно какой именно качать и с какого сайта.
Я скачал с какого попало.
Никакой более новой публичной версии после 1.01 значит не было?
http://www.emu-land.net/computers/zx_spectrum/emuls/windows?act=showonly&id=4238

Spectramine v.1.01b.zip, только экзешники (846 KiB)
Установщик русской версии Спектрамин 1.0b (7.6 MiB)
Установщик английской версии Spectramine 1.0b (7.6 MiB)
Полный zip-архив с обеими версиями Spectramine 1.0b (8.1 MiB)
Облегченный zip-архив со Spectramine 1.0b (1.1 MiB)

Spectramine
13.07.2022, 14:58
Была пара апдейтов, 1.02 можно скачать, 1.03 похоже утерян.

Подружить его с геймпадом напрямую не получится, если что, только с помощью сторонних приложений, транслирующих кнопки геймпада в кнопки клавиатуры.

ZEman
16.07.2022, 20:53
не утерян.
https://disk.yandex.ru/d/b7iLwSadH7754A
1.03b версия.

Spectramine
21.10.2022, 09:55
Новый апдейт Спектрамина (v.1.05b), с правильным снегом и т.п.: https://files.fm/u/r7cymnn9m

ZX_NOVOSIB
21.10.2022, 13:56
Новый апдейт Спектрамина
https://zx-pk.ru/threads/10817-zxm-videocard.html - сделай плиз эмуляцию вот этой штуки

Spectramine
07.11.2022, 20:58
Новый апдейт Спектрамина (v.1.06): https://files.fm/u/q5wjvqhtk

Изменения:
v.1.06b 07/11/2022
- Исправлены тайминги команд Z80 INIR/INDR
- добавлена эмуляция матричного эффекта клавиатуры и времени изменения её состояния
- окно эмулятора теперь всплывает после драг-н-дроп
- окно эмулятора теперь стабильно всплывает при старте



v.1.05b 21/10/2022
- Исправлена эмуляция эффекта снега
- Исправлен время INT Пентагона
- Исправлено поведение блочных команд Z80 в момент прерывания
- Исправлена команда Z80 HALT
- Добавлена эмуляция утечки DRAM
- Исправлено горячее переключение поздних таймингов и сдвига таймингов Пентагона
- Исправлена ULA+
- Исправлено время подтверждения прерывания для IM 0
- отключено ускорение пауз между загрузкой блоков ленты

Spectramine
20.02.2023, 21:23
Новая версия Спектрамина (v.2.01b Try) доступна для ранее делавших донаты и тесты на реале по моей просьбе по запросу на e-mail spectramine@tuta.io .

ZX_NOVOSIB
20.02.2023, 23:18
Spectramine, мой +2B всегда к твоим услугам :v2_dizzy_pirate:

newart
21.02.2023, 17:05
Новая версия Спектрамина (v.2.01b Try) доступна для ранее делавших донаты и тесты на реале по моей просьбе по запросу на e-mail spectramine@tuta.io .

под OSX работает?

Spectramine
21.02.2023, 17:33
под OSX работает?

Пока нет.