Вход

Просмотр полной версии : Xpeccy



Страницы : 1 2 3 4 5 6 7 8 9 [10] 11 12

shuran33
16.09.2020, 09:12
ЗЫ: Приношу извинения владельцам MacOSX до 10.9 включительно. Qt ниже 5.9 теперь не скачать из официальных репозиториев, а Qt5.9 работает начиная с версии оси 10.10.

Понятно, спасибо за попытку.


да ладно
владельцы маков и прочих ифонов должны страдать :v2_devil:

Главное, чтобы вы не страдали:v2_dizzy_punk:

Grand
21.09.2020, 05:04
Неплохой эмулятор. Запустил его под Linux.
Хорошо, если бы еще была эмуляция Scorpion с ПрофПЗУ или даже Scorpion GMX.

SAM style
21.09.2020, 07:54
эмуляция Scorpion с ПрофПЗУОна есть по умолчанию

SAM style
06.10.2020, 15:34
build 20201005


Evo Baseconf: починена яркость бордюра
Evo Baseconf: исправлено декодирование порта 7FFD
ATM2: Исправлена клавиатура в режиме ZX
Исправлена загрузка ПЗУ GS
Исправлен звук GS
Восстановлено чтение из ULA+
Улучшены цвета ULA+
i8080: исправлена команда 'out n'


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20201005) ]

BobrovS
13.10.2020, 11:12
Спасибо за эмулятор, качество эмуляции AY-звука впечатляет! Но есть пара проблемных моментов:
1) при установке опции "Keep ratio" и последующем переходе в полноэкранный режим эмулятор падает без каких-либо сообщений;
2) не получилось настроить работу TR-DOS для эмуляции Pentagon (хотя все необходимые ROM'ы вроде бы добавлены): при выборе соответствующего пункта в начальном меню выводится результат "0 OK", но запуск дисковой ОС не срабатывает, по нажатию любой клавиши происходит возврат в основное меню Пентагона. Может есть подробная инструкция по настройке ROM'ов?

SAM style
13.10.2020, 12:34
при установке опции "Keep ratio" и последующем переходе в полноэкранный режим эмулятор падает без каких-либо сообщений;
Какой размер экрана? На особо огромные буфер не рассчитан. Если так, то падать должно в любом фуллскрине. Ну, возможно ещё если несколько мониторов...

не получилось настроить работу TR-DOS для эмуляции Pentagon (хотя все необходимые ROM'ы вроде бы добавлены): при выборе соответствующего пункта в начальном меню выводится результат "0 OK", но запуск дисковой ОС не срабатывает, по нажатию любой клавиши происходит возврат в основное меню Пентагона. Может есть подробная инструкция по настройке ROM'ов?Традиционно: Опции -> Storage -> Disk -> Interface = BetaDisk. На вкладке Machine справа есть кнопка с лампочкой - она поставит в ромсет файлы, заданные для данной конфигурации. Все ромы в первом посте.

BobrovS
13.10.2020, 15:39
Какой размер экрана? На особо огромные буфер не рассчитан.
Разрешение монитора 2560x1440 (в общем-то не самое высокое по теперешним временам), в дефолтном фуллскрине не падает.
С настройкой BetaDisk Interface все получилось, большое спасибо!

SAM style
13.10.2020, 16:04
Разрешение монитора 2560x1440
Странно. Буфер как раз под такое разрешение. Воспроизвести нет возможности - у меня экран вообще 1440x900. Попробую в следующей сборке буферы увеличить.

Lethargeek
13.10.2020, 20:13
с RZX по-прежнему всё хреново :( если надо, могу подогнать пример для отладки, когда валится на первом же in

SAM style
14.10.2020, 00:41
если надо, могу подогнать пример для отладки, когда валится на первом же in
Подгони, буду рад

BobrovS
16.10.2020, 18:02
SAM style, А нет ли у Вас планов добавить такие видео-настройки как имитация ЭЛТ-экрана, например, при помощи scanlines?

SAM style
16.10.2020, 19:12
SAM style, А нет ли у Вас планов добавить такие видео-настройки как имитация ЭЛТ-экрана, например, при помощи scanlines?Только сегодня закоммитил пробную версию, но получилось не очень убедительно. В увеличении x1 вообще никак не сделать по-нормальному

Dexus
16.10.2020, 20:28
Да хрен с имитацией. Обычный scanline в 80% уже сделают картинку приятнее..
А вот то что под виндовсом всего 33фпс где-то, это хреновченко (не знаю как под линуксами). В общем gigascreen даже с нофликом хреново выглядит, а бегущие строки дергаются как сукины дети..

SAM style
16.10.2020, 21:39
А вот то что под виндовсом всего 33фпс где-то, это хреновченко
Выкидывай свой 3й пень со встроенной видяхой

NEO SPECTRUMAN
16.10.2020, 22:53
Обычный scanline в 80% уже сделают картинку приятнее..
обычно это гафно выглядит как УГ
да и не у всех на телеке был виден сканлайн как таковой и не все полезность этого гофна признают

Lethargeek
17.10.2020, 00:30
еще баг/недочёт: при зарузке снапа из дебагера не обновляется дебажное окошко с видом экрана, приходится вручную щёлкать nopix/noatr

Dexus
17.10.2020, 06:45
Выкидывай свой 3й пень со встроенной видяхой
Если бы пень... а то ведь i7 4790 + GTX1070, даже всратый Star Citizen не тормозит.
Я понимаю что дело не в "коде" скорее всего, а в не очень правильном использовании Qt.
Раз у людей в фулскрин вылеты. Я не думаю что будет так сложно подрубить GL расширения с vsync'ом.

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


обычно это гафно выглядит как УГ

Какое красноречие, владение слогом и ритмом. "Гавно как *****". Вам виднее как оно для вас выглядит. Красотка в глазах смотрящих, как говорится.
Никто же не заставляет включать все настройки разом. А иметь варианты, хотя бы начав с такого простого - уже лучше, чем не иметь вообще

Black Cat / Era CG
17.10.2020, 08:41
Странно, у меня i5 и gtx550ti и нифига не тормозит. Винда 7.

Dexus
17.10.2020, 09:50
Black Cat / Era CG, а кто сказал что тормозит? Xpeccy.exe в прыжке 5% отбирает. Но при этом треть фреймов просто не отображается. Почему? Хз. Может скипаются из-за таймера низкочастотного, может алгоритм корявый, может Qt так работает (хотя видел и плавные вещи на Qt), может просто рендерит по два кадра без паузы, может ещё что... в общем бегущие строки читать, вообще смотреть демки и плавные эффекты - боль. Хорошо что бОльшая часть спектрумовских игр от силы 10фпс дают, и эти фреймдропы не видны.

kgbplus
18.10.2020, 22:52
Почти уже год назад я спрашивал как запустить Недоось в xspeccy. Тогда у меня совсем не получалось ее запустить, бейзконфа запускалась, все работало, но недоось зависала во время запуска.
Сейчас я обновил прошивку пзу эвы, обновил эмулятор до 0.6.20201005 и обновил недоось. Теперь у меня такая картина - пзу видит содержимое образа sd карты, я выбираю загрузчик недооси, он благополучно стартует (появляется заставка с кошкой), монтирует диски, а затем на небольшое время подвисает и пишет 'loading term.com/ term.com not found'
Т.е. похоже на то, что пзу видит и читает sd карту, а вот сама недоось уже не видит. Возможно, что я неправильно сделал образ sd карты (сделал просто пустой файл размером 4 Гб с файловой системой vfat внутри).
Что может быть не так?

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

И еще вопрос - есть какой то лимит на объем файла с метками для дебаггера? Сделал файл с метками для всего пзу 48 спектрума, эмуль загружает их, но не показывает.

SAM style
18.10.2020, 23:47
Сейчас я обновил прошивку пзу эвы, обновил эмулятор до 0.6.20201005 и обновил недоось. Теперь у меня такая картина - пзу видит содержимое образа sd карты, я выбираю загрузчик недооси, он благополучно стартует (появляется заставка с кошкой), монтирует диски, а затем на небольшое время подвисает и пишет 'loading term.com/ term.com not found'
Т.е. похоже на то, что пзу видит и читает sd карту, а вот сама недоось уже не видитРабота с SD-картой в базеконф уже поправлена (но ещё не собрана). По крайней мере у меня недоось с неё запустилась. Так что ждите... HDD в baseconf всё ещё работает неправильно

Сделал файл с метками для всего пзу 48 спектрума, эмуль загружает их, но не показываетВариант 1 - не включен показ меток. Если включен, но всё равно не показывает, то вариант 2 - можно мне этот файл?

kgbplus
19.10.2020, 10:19
73742
Вот этот файл. Мне увидеть метки так и не удалось

SAM style
19.10.2020, 10:45
73742
Вот этот файл. Мне увидеть метки так и не удалось
Чем этот файл с метками сделан? Странно, что адреса начинаются с : по идее должен быть банк:адрес название

kgbplus
19.10.2020, 11:24
Чем этот файл с метками сделан? Странно, что адреса начинаются с : по идее должен быть банк:адрес название

Sjasmplus, просто собрал из исходников rom 48 (https://github.com/z00m128/zxs-rom) и записал метки. Возможно sjasmplus как то не так формирует этот файл для пзу. Т.к. не понятно, какие там должны быть страницы

NEO SPECTRUMAN
19.10.2020, 15:01
Странно, что адреса начинаются с : по идее

sjasmplus
ну sjasmplus бывает разный...

SAM style
19.10.2020, 19:33
build 20201019


Загрузка меток для ПЗУ
Что-то вроде tv-scanlines. Вкл-выкл в опциях, хоткей тоже присутствует (по умолчанию не задан). И выглядит хреново, по-моему...
Baseconf: Исправлен интерфейс SD-карты
Объём SD-карты определяется по размеру файла образа
Починен хоткей сброса, чтобы работал вместе с другими клавишами


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20201019) ]

kgbplus
19.10.2020, 20:45
Все, что я просил (недоось и метки пзу) работает! Спасибо!

zebest
19.10.2020, 22:24
Странно, что адреса начинаются с :
как бы это не совсем адреса.
Тогда вот пример:
:3600 buffer
Если думаете, что это адрес #3600, таки нет.

SAM style
19.10.2020, 23:34
Если думаете, что это адрес #3600, таки нет.
https://z00m128.github.io/sjasmplus/documentation.html#po_labelslist
ну давай, рассказывай, как сджасм скатился до такого?

zebest
20.10.2020, 00:25
ну это ужасмописателей надо спрашивать, как они до такого дошли.
вот еще хуже пример
:0076 HiScrBegin
76 - это просто число, переменная.
Видимо тут нет однозначного решения.
и да, в моем примере :3600 buffer это на самом деле вот такое выражовывание:
buffer: equ 7600h
Что с этим безобразием можно делать - хз, так то в листинге понятно что для чего.

NEO SPECTRUMAN
20.10.2020, 01:13
buffer: equ 7600h
Что с этим безобразием можно делать
обозвать global labels и включать\выключать со своей кнопки

хотя адрес то обрезанный до 16К
толку то от него?

нужно буцать сджасмописателей

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

хотя у меня такая дичь

release_mode = 0

07:0000 release_mode

при том в больших количествах

Dexus
20.10.2020, 08:53
И выглядит хреново, по-моему...
Может потому, что яркость сканлайнов (темных полосок) сильно низкая, не 80% а 40%?

kgbplus
20.10.2020, 23:40
build 20201019


Немного я поторопился. Загрузка недооси заработала на макоси, но не работает в линуксе. Причем я специально скопировал конфиги и ром файлы, а также образ sd, чтобы создать равные условия.
На линуксе все как раньше - term.com not found

SAM style
21.10.2020, 00:05
На линуксе все как раньше - term.com not foundСкорее, должно быть наоборот, потому как я на линуксе его разрабатываю и тестирую. Проверь, чтобы не был присобачен HDD (он ещё плохо работает)
http://samstyle.narod.ru/addons/xpeccy/Screenshot_20201021_000216.png

kgbplus
21.10.2020, 08:49
https://zx-pk.ru/attachment.php?attachmentid=73761&d=1603259196

Ну не знаю. HDD пробовал и диски не монтировать и контроллер полностью отключать. Может в настройках что то (я их с мака полностью перенес)

SAM style
21.10.2020, 12:22
Это какая версия недооси? У меня 722

kgbplus
21.10.2020, 22:26
Проверил - сейчас 771 ревизия

SAM style
21.10.2020, 23:06
Вот даже скачал недоось 771, ром 0.58.14 и проверил - работает, но у меня кот не выводится, зато монтируется диск M (сама sd-карточка) :|
Кинь мне твой конфиг для базеконфы, посмотрю что там не так...

kgbplus
21.10.2020, 23:25
Вот конфиг и вот тут (https://yadi.sk/d/l8yeAR9E6GZMmQ) образ sd, потому что я думаю, что скорее в нем проблема.

SAM style
22.10.2020, 00:29
Первое, что заметил - маленький размер образа и FAT12 (хотя, с ним работает). Я себе сделал образ под 100MB с FAT32.

kgbplus
22.10.2020, 10:06
Пересоздал образ на 100 Мб и все сразу завелось и на макоси и на линуксе!
Скорее всего проблема в том, что mkfs.vfat делает разные файловые системы в зависимости от размера образа.

Хотя возможно это в самой недооси что то...

SAM style
22.10.2020, 10:17
Скорее всего проблема в том, что mkfs.vfat делает разные файловые системы в зависимости от размера образа.
есть параметр -F, чтобы задавать размерность фата: mkfs.vfat -F 32 image.img

Sayman
22.10.2020, 11:33
Хотя возможно это в самой недооси что то...
да, в самой недооси, она не умеет в fat12 (спасибо обрезанному драйверу fatfs).

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


Я себе сделал образ под 100MB с FAT32.
излишество, fat16 более чем за глаза на таких размерах.

SAM style
22.10.2020, 11:59
излишество, fat16 более чем за глаза на таких размерах.
Ну это понятно, до 2 гигов можно и fat16 юзать

SAM style
26.10.2020, 19:47
build 20201026 (или 24)


Baseconf: починен конфликт портов Nemo и 7FFD (оказывается, ни хрена у него маска не 0xC002)
Объём HDD (LBA и CHS) теперь тоже рассчитывается из размера файла образа

Так-с. В Baseconf удалось запустить недоось с винта. Но тут сложнее, чем с SD-картой - винт должен быть разбит по всем правилам, т.е должен присутствовать MBR и до 4 primary-разделов. Под нужными осями это делается примерно так:
; создаём пустой образ (в примере 64М)
dd if=/dev/zero of=/path/to/image.img bs=1M count=64

; бинд образа как блочного устройства
losetup /dev/loop0 /path/to/image.img

; запуск программы разметки
fdisk /dev/loop0

; тут идут операции с fdisk, лучше читать хелп к нему
; ...

; пересканируем созданные выше разделы, теперь они доступны как /dev/loop0p1 /dev/loop0p2 итд
partprobe

; форматируем раздел в fat16 (если что, wild commander под tsconf знает только fat32)
mkfs.vfat -F 16 /dev/loop0p1
; повторить для каждого созданного раздела

; если надо - монтируем раздел, кидаем на него файлы
; ...

; отсоединяем файл-устройство
losetup -d /dev/loop0

[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20201026) ]

Lethargeek
27.10.2020, 04:25
SAM style, ты в лс послание-то увидел? а то, грят, с адблоками извещений нет

SAM style
27.10.2020, 07:40
SAM style, ты в лс послание-то увидел? а то, грят, с адблоками извещений нет
Видел, но ещё не копался с rzx

Lethargeek
08.11.2020, 03:07
SAM style, есть мнение, что флэш в эмуле мигает вдвое медленнее, чем нужно

SAM style
08.11.2020, 08:54
SAM style, есть мнение, что флэш в эмуле мигает вдвое медленнее, чем нужно
Тогда надо ещё раз схему посмотреть. Как я помню, сигнал инверсии меняется каждые 32 кадра.
ЗЫ: 16 :v2_jawdr:

Bedazzle
12.11.2020, 02:18
Подскажите, можно ли сохранить/загрузить точки останова?
Этот же вопрос про метки.

NEO SPECTRUMAN
12.11.2020, 02:32
Подскажите, можно ли сохранить/загрузить точки останова?
Этот же вопрос про метки.

метки иконка дискеты над дазасмом

точки останова
переключаемое окно снизу справа
красный знак со stop-ом
и тут своя иконка с дискетой

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

https://jpegshare.net/images/e4/30/e430e3bc4bcb9a9f50dfba3c4da30227.png

BobrovS
12.11.2020, 11:00
Кстати, в фуллскрине эмуль перестал падать с опцией Keep ratio, спасибо!

Bedazzle
12.11.2020, 13:49
метки иконка дискеты над дазасмом

Хреново без документачки. :(
Тупо не заметил.

Спасибо!

kgbplus
15.11.2020, 21:25
Что то не нашел поиском - можно как то подключать образы дисков trd через командную строку?
Тоже самое про tap файлы

SAM style
15.11.2020, 21:48
Что то не нашел поиском - можно как то подключать образы дисков trd через командную строку?
Тоже самое про tap файлы
Ну, как бэ самым очевиднейшим способом: xpeccy image.trd image.tap. Если нужно выбрать диск не-А, то xpeccy --disk b image_b.trd --disk c image_c.trd

NEO SPECTRUMAN
21.11.2020, 11:58
поклянчу еще впиливание 3-го AY-ка по стандарту некста :v2_walkm:

SAM style
21.11.2020, 15:21
поклянчу еще впиливание 3-го AY-ка по стандарту некста
Клянчишь - приводи документацию.

NEO SPECTRUMAN
21.11.2020, 16:02
Клянчишь - приводи документацию
уже приводил

вот еще раз
https://www.specnext.com/turbo-sound-next/

все так же как и в TS только для выбора чипа еще один бит

FFFD
Bit 7 = “1”
Bit 6 = Left audio (“1” enabled, “0” disabled)
Bit 5 = Right audio (“1” enabled, “0” disabled)
Bit 4 = “1”
Bit 3 = “1”
Bit 2 = “1”
Bits 1 and 0 as
“’11”: Selects the first PSG (default);
“10”: Selects the second PSG;
“01”: Selects the third PSG.

“00”: Selects the SID. если что ;)
а не 4-й AY

*****е балансировки трижды не нужны

SAM style
21.11.2020, 16:06
Bits 1 and 0 as
“’11”: Selects the first PSG (default);
“10”: Selects the second PSG;
“01”: Selects the third PSG.
А если 00?

NEO SPECTRUMAN
21.11.2020, 16:49
А если 00?
выше написал выбор SID-а
но его в нексте уже нет
но сид на этом порте есть в других девайсах!
и я таки занимаюсь его поддержкой :)
так что если захочешь прикручивать сид к комоду
можешь прикрутить его за одно и к спектруму
тк эмулятор спека с сидом сейчас только один

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

вот как было раньше
https://web.archive.org/web/20170606130644/https://www.specnext.com/turbo-sound-next/

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

для тестирования можно взять
https://dropmefiles.com.ua/ru/QLRV
https://anonfiles.com/D5w9X0rep9/3ay_rar

SAM style
22.11.2020, 17:39
build 20201122


Скорректирована скорость мигания атрибутов на экране ZX
Для всех ZX добавлен порт FF
Добавлен 3й звуковой чип и схема ZXNext для его выбора. Тест, предложенный нео, показывает 1-2-3 на разных чипах. При отсутствии одного чипа с его слота читается FF, при схеме недопц показывается 2-1-2. Отключение каналов тоже сделал, но не проверял. Звук со всех трёх тоже не проверял - нечем, а самому тест лепить лень. Вот как-то так.


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20201122) ]

NEO SPECTRUMAN
22.11.2020, 18:12
Звук со всех трёх тоже не проверял -
там в комплекте кроме sna и tap со звуком :)

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

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

в режиме zxnext если подсунуть 1 чиповое пищание оно играет

если подсунить 3-х чиповый програм на TS nono\nedopc
все работает с треском как и должно

при этом если с nonе на nedopc можно переключаться на ходу
при переключении на zxnext звук отпадает и больше не появляется если клацать обратно на nonе \ nedopc
до сброса

при всем этом бипер всегда на месте

SAM style
22.11.2020, 19:13
есть подозрение что когда выбирается 3-й чип звук отпадает вообще
ни та мелодия что с тестом
ни моя пищалка
не издает какого либо звука вообще
Похоже на то, что с отключением левого-правого канала накосячил :)
Переключение с повышенной AY-шности на никакую может вызвать тишину до сброса в случае, если в момент переключения был выбран не первый чип - он так и остаётся выбранным даже если его там не должно быть.

ЗЫ: пересобрал

NEO SPECTRUMAN
23.11.2020, 01:34
ЗЫ: пересобрал
угу теперь на вид работает

только этот satellite for 3ay chip в стерео как то странно трищит (вроде на записях оно такого нет)
в моно вроде нормально


а так же может надо поставить дефолнтую частоту ay 1,750000 ?
у нас то нет машин с 3,55\1,77 МГц
но чета во все унриалы продолжают тулить дефолтным неизвестно что...

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

не знаю как оно получено и где я оно вообще взял
вот сравни с мепетрёй
https://anonfiles.com/Rb7c2bs8p7/01-TDM-F6-Satellite_One_3x3-channels_7z
https://dropmefiles.com.ua/ru/T3URw

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

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

у тебя точно ничего при суммировании не переполняется\гейнитсо?
щас если выставить громкость Ay-ка на 70 звук становится получше

SAM style
23.11.2020, 10:07
у тебя точно ничего при суммировании не переполняется
Ясно-понятно. Скорее всего, переполняется. К следующей сборке все 4 чипа (а их там 4, только 4й не используется :D ) тоже через миксер пропущу.

NEO SPECTRUMAN
23.11.2020, 10:42
К следующей сборке все 4 чипа
и записывание wav-ов еще не приручено? :)

NEO SPECTRUMAN
26.12.2020, 22:02
SAM style, щас если нажать F5 во время биперения а потом нажать еще раз то эмуль выносит на фик
(наверно когда биперение и туда и сюда (я шлю 00 FF в FE развернутым набором out (c),h out (c),l))

это так понимаю запись на ленту
быстро и ВНЕЗАПНО в больших количествах заполняется матафонный буфер?
память тоже кушаитсо соответственно
но падает только при окончании? записи

SAM style
27.12.2020, 09:23
Слишком быстрая смена сигнала. В данном случае часто получилось, что первый сигнал был длиной в 0мкс, и это всё портило.
Чрезмерный аппетит к памяти при этом вполне объясним - внутри лента хранится не в виде высокодискретного wav, а в виде пар "длина сигнала в мкс + уровень сигнала", и чем выше частота, тем больше таких пар в секунду.

SAM style
29.12.2020, 22:48
build 20201229


Исправлен микшер для турбосаунда
Исправлено падение при записи на ленту с высокой частотой
Добавлен вывод звука в wav (44100Гц, 8бит, стерео). Сначала в настройках надо установить хоткей для начала-окончания записи.
Профили автоматически переезжают в отдельные подкаталоги в подкаталоге profiles каталога конфигов :) Со старого места они удаляются, так что возвращение на предыдущую версию будет сопряжено с перенастройкой


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20201229) ]

NEO SPECTRUMAN
29.12.2020, 23:14
SAM style, а ТЫ не горишь желанием добавить эмуляцию АТМ турба 2 (без плюс)?

ну там у него хитро мигающий в определенные такты фрейма бит на порте $FE
и хитро*****й ***** контроллер xt клавиатуры который нигде не эмулируется на данный момент
(пока есно что он выдает скан коды в определенный порт и можно попробывать имитировать оно хоть как то)

а нужон он например для запуска всяких мсхдосов с *****ми защитами
без их крякания
https://zx-pk.ru/threads/32561-msx-dos-quack-edition-dlya-atm.html
http://atmturbo.nedopc.com/load_msx.htm

как раз у тебя оно уже почти работает (в унриале полный зависон)

хотя документации дето близко к 0

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

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

идо
на дефолтной ширине экрана\бордюра
у тебя расколбашивает большой экран АТМ-а (по крайней мере в прошлой версии)
точнее это выглядит так
https://jpegshare.net/images/72/24/7224a3c3f37c0daf64315bfbb37891f0.png

SAM style
29.12.2020, 23:28
SAM style, а ТЫ не горишь желанием добавить эмуляцию АТМ турба 2 (без плюс)?
Да чёрт его знает. Отпугивает это:
хотя документации дето близко к 0

на дефолтной ширине экрана\бордюра
у тебя расколбашивает большой экран АТМ-а (по крайней мере в прошлой версии)А насчет этого - поставь бордюр побольше. Просто он рассчитывается из экрана 256x192, экран атм шире, поэтому вылезает за границы окна.

NEO SPECTRUMAN
30.12.2020, 01:22
А насчет этого - поставь бордюр побольше.
я то поставил
а говорю поставь его пискелей на 24 шире по дефолту
чтоб АТМ работал из коробке
я сначала подумал что это такая совместимость\так запустилось\криво эмулируется
а только потом полез в настройки и что то там наклацал

хотя это щас перебор
https://jpegshare.net/images/ea/91/ea91a0d43925ff29bdcba3e5929031f2.png

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


Да чёрт его знает. Отпугивает это:
это надо телепатировать Максагор-а

может он чо добавит
чтоб хотя бы не на 100% методом научного тыка а на 90% :)

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


Отпугивает это:
это я видимо преувечил

какоето описание есть тут
http://atmturbo.nedopc.com/atmdscr.htm
там есть некоторые отличия от 2+
вроде бы есть защита рамы от записи (которой нет в 2+)

но оно не описывает контроллера клавиатуры и защиты
которых как раз и не хватает для запуска

но если присмотрется это уже +2 6.40 которій уже от microART
а нужон какой то 6.2

тут есть описание именно от АТМ-а
http://atmturbo.nedopc.com/atmcpm.htm
но они усердно ссылаются на обозначения нечитаемой схемы а не на порты...


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

1556ХЛ8 проверяется так

процедура проверки в районе $02AC и $02B6



28 in a,($FE)
and $20
z = pass
nz = срабатывает защита

тут пауза на djnz $

1085 in a,($FE)
and $20
nz = pass
z = срабатывает защита

1136 in a,($FE)
and $20
nz = pass

100500 опросов


66212 in a,($FE)
and $20
nz = pass

66263 in a,($FE)
and $20
nz = pass

66314 in a,($FE)
and $20
nz = pass

дальше опросов нет



тоесть можно предположить что
0...1023t - D5 = 0 порта FE
1024...*****t - D5 = 1 порта FE

или

возможно 0...511 D5 = 0
так более логичней по времянкам
как раз переход дето посредине

или любое другое кратное число :)

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

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

keyboard ram проверяется как то странно

не знаю привязано ли определение к времянкам
тк там еще идут и out-ы




проверка в районе $02E4, $02F5
(B как счетчик)


38693 in 00FE
and $1F
z = pass


38762 in FFFE
and $1F
z = pass

...опросы


56219 in 02FE
and $1F
z = pass

56288 in 01FE
and $1F
z = pass



56352 in 00FE
and $1F
cp $1F
z = pass

56398 in FFFE
and $1F
cp $1F
z = pass

....
опросы

68035 in 02FE
and $1F
cp $1F
z = pass

68082 in 01FE
and $1F
cp $1F
z = pass

после этих проверок
оно пишет что keyboard ram installed
но при этом
keyboard error

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



скан коды клавиатуры читаются из $7DFD (можно найти процедуру по $2832)
когда ничего не нажато от туда читается $FF
судя по всему чтения из этого порта автоматически зануляет (за$FF-ифяет) содержимое
и одно и то же 2 раза подряд не прочитать
пока нашлась только однокнопочность
никаких удерживаний, отпусканий и одновременных нажатий
только факт тыкания по одной кнопке

на данный момент найдены такие кнопки
https://jpegshare.net/images/1d/88/1d88c4962c58218a93253833ccf36028.png
$xx кодами помечены скан коды которые проверяются при опросе
но что они делают не ясно

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

некоторые кнопки что то жмут
но что так и не ясно
не то восстанавливают стертое
не то печатают неизвестно что посимвольно

$B8\B9 HZ on\off еще какой то режим ввода
пока не ясно какой
тк только нашел

NEO SPECTRUMAN
02.01.2021, 01:12
SAM style, предыдущая версия иногда может начинать делать
не то pause when inactive не то mute when inactive (по статическому экрану не определить)
пока не есно когда это ВНЕЗАПНО начинает происходить

SAM style
02.01.2021, 10:58
не то pause when inactive не то mute when inactive (по статическому экрану не определить)
Не было такого :rolleyes: И как это воспроизвести? Короче, продолжайте наблюдение :D

Grand
02.01.2021, 13:05
Она есть по умолчаниюЭмулируется только "обычный" Scorpion с "обычным" ROM 64K. На вкладке "Machine", в поле "Machine" опция "ZS Scorpion" это и означает.
А вот было бы хорошо...

...если бы еще была эмуляция Scorpion с ПрофПЗУ или даже Scorpion GMX.

NEO SPECTRUMAN
02.01.2021, 15:11
И как это воспроизвести?
без понятия :)
пока поймал такой глюк только 2 раза

SAM style
02.01.2021, 22:54
Эмулируется только "обычный" Scorpion с "обычным" ROM 64K
GMX, конечно, нет, но если подсунуть ром от профпзу, скорпион вдруг и внезапно окажется необычным
PS: точнее, сейчас не работает. нашёл ещё один баг из-за переезда на мапер памяти 256x256. Если вдруг захочется поправить, то src/libxpeccy/hardware/scorpion.c:40 строка должна быть if ((comp->p1FFD & 2) && ((adr & 0xfff3) == 0x0100) && !m1) {

NEO SPECTRUMAN
04.01.2021, 12:27
как раз у тебя оно уже почти работает (в унриале полный зависон)
оказываитсо это у тебя он недостаточно эмулируитсо

в 2+ 7.10
d5 FF77 это включение ВНЕЗАПНО 50Гц прерываний

в унриале оно эмулируится
и прерывания по дефолту там выключены
поэтому оно зависает на первом же ei halt

с таким же успехом в 6.40
d5 это *****й модем
и поэтому конфигурирование АТМ 2+ прошивкой от АТМ 2
приводит опять же к выключение прерываний нафик и повисание на втором же ei halt которое там есть

тоесть на правильно эмулируемом атм 2+
ничего запускатсо не должно :)

SAM style
04.01.2021, 16:09
d5 FF77 это включение ВНЕЗАПНО 50Гц прерываний
неть
D5 - для 6.40 - TNAB (встроенный модем), для 7.10 - Z_I прерывания от HSYNC (50 гц) 1-разрешены 0- запрещены.Тут написано, что от HSYNC.
PS: Хотя... Он блокирует /INT (который возникает от VS), но по схеме я не нашёл, куда дальше идёт /INT_D, потому что на Z80 приходит вообще /INT_Zhttp://samstyle.narod.ru/addons/atm2/Screenshot_20210104_194231.png

NEO SPECTRUMAN
04.01.2021, 20:40
HSYNC (50 гц)

Тут написано, что от HSYNC.
PS: Хотя... Он блокирует /INT (который возникает от VS), но по схеме я не нашёл, куда дальше идёт /INT_D

ну HSYNC никак 50Гц быть не может
я тоже не нахожу /int_d
можно списать на очепятку на фоне очепяток
и оно на одной группе дорожек

тут нужно уточнение от АТМ-щиков

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

ВНЕЗАПНО
https://jpegshare.net/images/ef/80/ef8033f08279cd0cd56ef4c13bc1e84b.png

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

ОНО НА части схемы с ВГ-шкой

SAM style
04.01.2021, 21:24
ВНЕЗАПНО
Таааааак. Осталось найти /INT_T
А оно на ВЕ31, а это вообще мрак...

NEO SPECTRUMAN
04.01.2021, 22:00
Таааааак
кстате
в унриале мсхддос не работает еще по одной причине

клавиатура читается из порта для АЦП
а код который опрашивает скан коды
перед чтением проверяет готовность АЦП
ну и в унриале он четает от туда что то не то
и чтение скан кода из $7DFD так и не наступает...

порт не помню
но пропатчил оно я так

org $2828
;jr c,$282E
jr $282E ;проверка готовности АЦП
;через порты которого читаются сканкоды


я так понел что в АТМ или АЦП или контролер ХТ клавиатуры :v2_lol:
там даже джамперами это выставляется
или не?

organism
23.01.2021, 12:09
а dizzy viii только у меня не работает в xpeccy?
актуальная версия

Shadow Maker
23.01.2021, 16:02
а dizzy viii только у меня не работает в xpeccy?
актуальная версия
TRDOS версия у меня работает https://vtrd.in/release.php?r=fb29cda83ef1a71f430d771a6f34c350
Тапок не проверял

- - - Добавлено - - -
SAM style А крайняя версия с гита у меня чет не собралась даже

https://imgur.com/7IsE6Ad.png

organism
23.01.2021, 17:26
TRDOS версия у меня работает https://vtrd.in/release.php?r=fb29cda83ef1a71f430d771a6f34c350
Тапок не проверял

trdos и у меня работает...

вот еще не знаю, упоминались ли такая бяка - jam by dr (https://vtrd.in/demoz/demoz/CC999.ZIP) интро с продрисью фоновой идет
там какой-то хитрый плейер (fast tracker?)?

SAM style
23.01.2021, 18:42
А крайняя версия с гита у меня чет не собралась даже
Попробуй пересобери с самого начала (cmake + make clean + make). Видимо, в сгенерированных cmake-ом мок-ах осталась старая версия

интро с продрисью фоновой идет
Послушать бы, как оно должно быть. А то вдруг так и планировалось?

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


trdos и у меня работает...
Я, к слову, загружал диззи8 с кассеты в xpeccy. Нормально грузится без tape/turbo и autoplay. С ними могут быть косяки, если загрузчик нестандартно использует стандартную процедурину

Shadow Maker
23.01.2021, 22:25
Попробуй пересобери с самого начала (cmake + make clean + make). Видимо, в сгенерированных cmake-ом мок-ах осталась старая версия
Спасибо за подсказку, не помогло. Но помогло вручную удалить CmakeCache, так что может у кого тоже такая проблема будет - то вот.

А есть какой-нибудь вариант max speed из Unreal? А то опухнешь ждать пока загрузится.

organism
23.01.2021, 23:17
Послушать бы, как оно должно быть. А то вдруг так и планировалось?



https://yadi.sk/i/CbsNekpD6KvbHA в эмуляторе
https://www.youtube.com/watch?v=YVXJxYRfQ64 как должно быть

SAM style
24.01.2021, 01:22
А есть какой-нибудь вариант max speed из Unreal? А то опухнешь ждать пока загрузится.
По умолчанию на insert, но это не так быстро, как в анриле

Shadow Maker
24.01.2021, 01:39
По умолчанию на insert, но это не так быстро, как в анриле
Ах вот что имелось в виду под fast mode :) Но да, как-то прям совсем небыстро. А быстрее нельзя?

NEO SPECTRUMAN
24.01.2021, 01:41
А быстрее нельзя?
у меня выставленное 4х турбы для проца уже спотыкается
тут сам эмулятор мееедленный
и скорей всего именно в это всё упираетсо

sirx
25.01.2021, 23:01
Добрался до эмулятора. Понравился. Спасибо, работа проделана большая.
Хотелки (по возможности):
1. Оптимизация. На ноутбучном селероне в фулскрине всё несколько задумчиво (пропуск фреймов, тупит музыка AY).
2. Best view (старо, но блин), с чекбоксом "турбо" в настройках дискового интерфейса не запущается.

SAM style
26.01.2021, 00:34
1. Оптимизация. На ноутбучном селероне в фулскрине всё несколько задумчиво (пропуск фреймов, тупит музыка AY).
Увы, но с этим мало что можно сделать

2. Best view (старо, но блин), с чекбоксом "турбо" в настройках дискового интерфейса не запущается.
проверил с BV2.19, работает с турбо-вг93

Dexus
26.01.2021, 11:38
Увы, но с этим мало что можно сделать
То есть движок эмуляции оптимизирован? (Не столько z80, сколько всяких железячных дел)
Я уже как-то делал запись пофреймовую, и обнаружил, что рендерится-масштабируется все неторопливо, будто попиксельно. А в фуллскрине вообще рассыпается (даже на i7 с 1070). Не было мысли подключить GPU? А то ведь 20й год, даже самые убогие телефоны с GPU идут.. есть же вроде qt+opengl/qgl всякие, и с sdl совмещается нормально. Плюс полно шейдеров (можно заимствовать из других проектов).

Вообще конечно правильно начать с профайлера..

Shadow Maker
26.01.2021, 11:43
SAM style

нид хелп

сбрасывается в конце загрузки Страна мифов (в принципе любая версия, например https://vtrd.in/release.php?r=41c26953d566bc5c74992bfba21f6bc8 )

настройки такие
https://imgur.com/zXAlLkz.png

sirx
26.01.2021, 12:15
Увы, но с этим мало что можно сделать

проверил с BV2.19, работает с турбо-вг93

Ну это пожелания :) Я не кодер, что там можно, что нет - неведомо...
По BV. Перепроверил - да, работает, но всё же с задержкой. Под виндой, если включено турбо вг, довольно долго висит надпись "Insert disk or change drive" и только потом считывает что есть на дискете. Если турбо выключить - BV стартует сразу.

SAM style
26.01.2021, 14:53
Вообще конечно правильно начать с профайлера..
Я без профайлера скажу (потому что уже запускал его 100 лет назад). Самая жручая часть - это отрисовка картинки в буфере, потому что процедурина доводки луча дёргается чуть менее чем постоянно, а сама она является обёрткой для нескольких десятков режимов, от спектрумовского экрана до nes-овского. Пробовал по-всякому, поэтому уже слабо пытаюсь её как-то ускорить...

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


есть же вроде qt+opengl/qgl всякие, и с sdl совмещается нормально
GL я, наверное, просто не умею готовить. SDL был хорош, пока не пришлось переходить на труколор - после этого он стал таким медленым...
PS: основная проблема всё-таки не в выводе картинки на экран, а в её предварительной отрисовке по ходу эмуляции

goodboy
26.01.2021, 15:12
сбрасывается в конце загрузки Страна мифов
а она разве (драйвер доп.памяти) поддерживает пент512 ?

SAM style
26.01.2021, 15:22
сбрасывается в конце загрузки Страна мифов
Таки да. На скорпионе-256 вполне себе запустилось. Перед запуском пишется, что поддерживаются профи/скорпион/атм с 256Кб

Shadow Maker
26.01.2021, 15:34
Таки да. На скорпионе-256 вполне себе запустилось. Перед запуском пишется, что поддерживаются профи/скорпион/атм с 256Кб
У меня вот так пишет перед запуском:
https://imgur.com/m8ERLoB.png

И в игре перед запуском тоже есть Pentagon 512k
https://imgur.com/GTD7ZCS.png


goodboy думаешь врут в детекте и в сопроводительном тексте?

SAM style
26.01.2021, 16:22
Если не врут, тогда, возможно, переключают страницы по out (#fd),a, а у меня дешифрация опять с потолка взята
PS: да, маска 0x8002 это ни разу не для Pentagon512K при out(fd),a. А теперь внимание вопрос - как дешифруется 7FFD при 512K, ещё и так, чтобы не путались с портами AY

Dart Alver
26.01.2021, 22:20
Если не врут, тогда, возможно, переключают страницы по out (#fd),a, а у меня дешифрация опять с потолка взята
PS: да, маска 0x8002 это ни разу не для Pentagon512K при out(fd),a. А теперь внимание вопрос - как дешифруется 7FFD при 512K, ещё и так, чтобы не путались с портами AY
Не похоже... Ещё звёзды келадана вроде бы все обращения к страницам перевели на драйвер. Но для проверки я поставил в отладчике на остановку по записи на адрес io #7FFD с маской #00FF в режиме пентагона. ( Правда использовал ту версию что когда-то сам ковырял https://vtrd.in/release.php?r=0b37ed4db89c56f941f5c7b77cd2c78b ) Так она честно останавливалась по выводу в порт через BC на тесте памяти, а когда нашла пентагон, выводила только через драйвер рам-диска по #7FFD а потом самоубилась по непонятной причине )))
Кстати на эве baseconf и ATM turbo 2+ эта версия тоже запустилась. Правда на ATM предистория проскочила махом, хотя джойстик был выставлен, странно ))

P.S. А порты AY там как-бы и вообще вроде не пользуются - звука то нету )) Да на режиме Profi тоже сваливается.

Забавный момент, оригинал версии от Stars of Keladan мой профик 512 не определял вовсе (у профи были разные варианты размещения блоков памяти), пока я не вскрыл процедуру определялки.

Dexus
27.01.2021, 11:08
GL я, наверное, просто не умею готовить. SDL был хорош, пока не пришлось переходить на труколор - после этого он стал таким медленым...
PS: основная проблема всё-таки не в выводе картинки на экран, а в её предварительной отрисовке по ходу эмуляции
Если бы отрисовка в буфере была основной проблемой, то на фулскрине бы не тормозило настолько заметнее, чем в маленьком окошке. А там реально видно как куски окна перерисовываются, когда полноэкранное мелькание типа гигаскрина происходит. И да, sdl не очень тороплив на труколоре. Потому мы в openxcom на вывод через sdl-opengl и перешли (заодно и плюшки с шейдерами заимели).

Зы: и я чтото очень сомневаюсь что рисование в буфер в нативном разрешении (которое 320 на чтото, с учетом бордюра) узким горлышком становится, даже если каждый пиксель трейсить. Это же не нативное 4k.

Shadow Maker
27.01.2021, 13:33
Не похоже... Ещё звёзды келадана вроде бы все обращения к страницам перевели на драйвер
Нет, там в оригинале уже сделано переключение страниц через драйвер RAMDRIVE.C, поэтому несколько разных дисков для разных платформ, которые только им и отличаются - в версии SoK они просто автодетектят машину и используют нужный. Непонятно, почему авторы сами этого не сделали. Хотя учитывая, что они игру написали на GENS4 - сложно их в этом винить, наверняка было непросто...

SAM style
27.01.2021, 22:14
Вообще конечно правильно начать с профайлера..
Ну, примерно про это я и говорил... чуть менее половины - vidSync. compExec - это "выполнить одну инструкцию, дотянуть луч и синхронизировать все железяки", она включает в себя vidSync, который включает в себя vidDrawNormal (для обычного zx-экрана), который через vid_dot_full, а оно через vid_dot ставит точку (в зависимости от настроек - серую и/или смешанную с предыдущим кадром)
http://samstyle.narod.ru/addons/xpeccy/Screenshot_20210127_221114.png

Dart Alver
27.01.2021, 22:17
Нет, там в оригинале уже сделано переключение страниц через драйвер RAMDRIVE.C

Разобрался таки. Причина нерабочести оказалась до тривиальности проста -

Кривые ромы для пентагона и профи ! Ну по крайней мере кривые для "Страны мифов" ;)

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

NEO SPECTRUMAN
27.01.2021, 22:49
SAM style, а кстате на счет ромов
нахрена по дефолту ром с левым шрифтом? (по крайней мере так было несколько версий назад или может проблема вообще на моей стороне)
это ж плохо может повлиять на совместимость

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

вот перепроверил
скачал последнюю версию
скачал ромсет с первого пста
клацнул лампочку? дефолтный ромсет
https://jpegshare.net/images/3e/36/3e36f00222b3848aadfd242dda923eb0.png
https://jpegshare.net/images/12/e6/12e6a72a9a5027059a450fe68c5089e2.png

goodboy
27.01.2021, 23:08
Кривые ромы для пентагона и профи !
может просто игру надо запускать после usr0 (в 128ом бейсике) ?

Dart Alver
28.01.2021, 00:09
может просто игру надо запускать после usr0 (в 128ом бейсике) ?
Нет, так не работает. Только если поменять ром на нормальный.

Кстати если воткнуть ром от оригинального 128 спека в пентагон (из пакета spectrum-roms для линукса брал), то игра тоже нормально запускается.
Похоже есть разница в 1-м банке. На 0-й банк игре походу пофиг. Если в 1-й банк рома воткнуть от оригинального 48 К спека, то вылетает, а от 128 - работает.

SAM style
28.01.2021, 00:18
нахрена по дефолту ром с левым шрифтом?
По дефолту никаких ромов я вам не должен предоставлять, кроме 1982.rom, чтобы хоть что-то запустилось. Всё остальное ищите и настраивайте как угодно. Всё, что я сам собрал, выложил для тех, кому это было лень делать. В релизы эмулятора пак не входит. Найди нормальный и замени.

Dexus
28.01.2021, 14:36
SAM style, эти цифры не зависят от режима - маленькое окно или фуллскрин?

SAM style
28.01.2021, 19:45
SAM style, эти цифры не зависят от режима - маленькое окно или фуллскрин?
Это x2, поэтому вызовов vid_dot в 2 раза больше, чем vid_dot_full. Чем шире результирующая картинка, тем больше будет vid_dot-ов в vid_dot_full-ах. Строки при увеличении больше x1 просто копируются нужное кол-во раз в конце каждой.

- - - Добавлено - - -
Dexus вот, к примеру, выхлоп callgrind-а на фуллскрине (у меня небольшой монитор, 1440x900). Еле остановил его. 1968 кадров, 12 мульёнов опкодов...
http://samstyle.narod.ru/addons/xpeccy/Screenshot_20210128_194158.png

Dexus
28.01.2021, 20:13
SAM style, понял. Ну вот как раз чтобы не было этого vid_dot на каждый пиксель экрана, и тормоза в фуллскрине не увеличивались — и нужно GPU юзать. Это на самом деле не так сложно. Можешь посмотреть в исходниках openxcom, там sdl+opengl+shaders (шейдеров много всяких, и между прочим ни один эмулятор спека пока не имеет такого количества).

SAM style
30.01.2021, 17:02
Ну вот как раз чтобы не было этого vid_dot на каждый пиксель экрана, и тормоза в фуллскрине не увеличивались — и нужно GPU юзать. Это на самом деле не так сложно
Фух, в тестовом проекте получилось делать текстуру из массива пикселей и натягивать её на окно, даже часть текстуры на часть окна. Без установки режима фильтрации ни в какую не хотела показываться.

Но буфер всё равно надо заполнять не 1:1, а с растяжением в 2 раза по горизонтали для режимов с половинчатыми пикселями

NEO SPECTRUMAN
30.01.2021, 17:16
Фух, в тестовом проекте получилось делать текстуру из массива пикселей
а можно для немощных такой текстовый проект? :)

желательно с перечислением зависимостей
чтоб не телепатировать их по бесконечному списку ошибок

SAM style
30.01.2021, 18:14
а можно для немощных такой текстовый проект?
Все 20 нужных для этого строчек гуглятся и собираются вместе за пару часов.

Dexus
31.01.2021, 04:53
SAM style, Поздравляю с успехами :)
Да, современные версии opengl без фильтров, простейших шейдеров, уже не умеют ничего толком показывать.

А что за половинчатые пиксели? Это для dot crawling эффектов? Или для видеорежимов типа 512x240 с профи?
В любом случае, на 4к мониторах с шейдером картинку можно будет выводить такую, что субпиксели от CRT эмулировать, и относительно недорого с точки зрения производительности.
Можно попробовать заимствовать у retroarch - любители консолей наваяли кучу всяких.
Но самое ИМХО важное, что может дать opengl - это относительно равномерный вывод кадров (то чего не хватает хрессу).
Кстати всякие гигаскриновые сглаживания между 2-3 фреймами можно делать не процесся предыдущие пиксели в vid_dot_full. Можно выводить просто следующий кадр в 2-3й буфферизации, а шейдеру для вывода в текстуру скармливать все эти буферы, и шейдер уже будет усреднять, и выводить сглаженно, полусглаженно, через интерлейс (как некоторые LCD выводят) и даже выделяя бегущие строки (чтобы их не сглаживать). (Это возможные перспективы когда/если вывод через opengl+glsl будут частью проекта).
Надеюсь, эксперименты будут плодотворны и для релиза :)

SAM style
31.01.2021, 09:14
А что за половинчатые пиксели? Это для dot crawling эффектов? Или для видеорежимов типа 512x240 с профи?
Да, в том числе для текстовых режимов атм/базеконф/тсконф - там резко увеличивается разрешение по горизонтали. Точки ставятся уже через vid_dot_half

Надеюсь, эксперименты будут плодотворны и для релиза
Я уже впиливаю, попутно выправляя костыли. Оказалось, что размер текстуры должен быть кратен 4 пикселям, иначе перекос. Еле присобачил обратно вывод индикаторов и сообщений поверх картинки. Что я пока не понял - в NES в режиме NTSC вдруг и внезапно начинает расти фпс, из-за этого дико тормозя, в предыдущей версии такого не наблюдалось. При этом в развёртке PAL/денди всё работает как надо.

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


с шейдером
Шейдеры пока вообще не трогал. Натягиваю сову на глобус текстуру на окно, и всё.

SAM style
31.01.2021, 19:08
Ну фиг его знает... Существование QPainter-а почему-то вызывает какую-то фигню. Причём у ZX не вызывает, у NES в PAL не вызывает, а у NES в NTSC вызывает. И у специалиста вызывает... По внешним признакам случается какая-то рекурсия, которая замедляет обработку событий в Qt, и чем дальше - тем больше замедляет.

void MainWin::paintEvent(QPaintEvent*) {
// printf("paint event\n");
#ifdef USEOPENGL
makeCurrent();

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glEnable(GL_TEXTURE_2D);
//glEnable(GL_MULTISAMPLE);
glViewport(0, 0, width(), height());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// generate texture image
glBindTexture(GL_TEXTURE_2D, texid);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bytesPerLine / 3, comp->vid->vsze.y, 0, GL_RGB, GL_UNSIGNED_BYTE, comp->debug ? scrimg : bufimg);
// draw texture
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex2f(0.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
glTexCoord2f(0.0, 1.0); glVertex2f(0.0, 1.0);
glEnd();
glDisable(GL_TEXTURE_2D);
//glDisable(GL_MULTISAMPLE);
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

// existing of active QPainter is starting a strange things
//QPainter pnt(this);
//drawIcons(pnt);
//pnt.end();
#else
QPainter pnt(this);
pnt.drawImage(0,0, QImage(comp->debug ? scrimg : bufimg, width(), height(), QImage::Format_RGB888));
drawIcons(pnt);
pnt.end();
#endif
}

Dexus
31.01.2021, 19:21
Да, в том числе для текстовых режимов атм/базеконф/тсконф - там резко увеличивается разрешение по горизонтали. Точки ставятся уже через vid_dot_half
Хмм.. А не легче ли просто разрешение по-горизонтали удвоить, указав пропорцию 1:2, вместо того чтобы придумывать "полупиксели"?..


Оказалось, что размер текстуры должен быть кратен 4 пикселям, иначе перекос.
Ты вероятно используешь компрессированную текстуру? Это там вроде, несмотря на NPOT (non power of two) имеется требование в кратности 4м (ибо все идет блоками 4х4).


Что я пока не понял - в NES в режиме NTSC вдруг и внезапно начинает расти фпс, из-за этого дико тормозя, в предыдущей версии такого не наблюдалось. При этом в развёртке PAL/денди всё работает как надо.
Ты не опечатался, растет FPS? Может ограничение кадров нужно просто впихнуть, включить vsync (https://www.khronos.org/opengl/wiki/Swap_Interval).


Шейдеры пока вообще не трогал. Натягиваю текстуру на окно, и всё.
А фильтрацию какую используешь? GL_NEAREST или GL_LINEAR? Надеюсь не вторую :)

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


По внешним признакам случается какая-то рекурсия, которая замедляет обработку событий в Qt, и чем дальше - тем больше замедляет.
А текстуру освобождаешь?
Хотя там в любом случае один и тот же texid используется, главное чтобы этот айдишник оставался одним и тем же (ну или пара, чтобы выводить со сглаживания между кадрами).

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

Кстати GL_QUADS давно как уже depricated, используй такое:


glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0, 0.0); glVertex2f(0.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
glTexCoord2f(0.0, 1.0); glVertex2f(0.0, 1.0);
glEnd();

И glClear() каждый фрейм делать не надо. Его вообще можно не делать если ты не собираешься выводить что-то с черными (или какими-то другими) бордюрами вокруг зоны отрисовки.

Вообще рекомендую глянуть вот сюда: https://github.com/OpenXcom/OpenXcom/blob/master/src/Engine/OpenGL.cpp#L151

Sandro
31.01.2021, 20:21
Кстати GL_QUADS давно как уже depricated, используй такое:


glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0, 0.0); glVertex2f(0.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
glTexCoord2f(0.0, 1.0); glVertex2f(0.0, 1.0);
glEnd();



OpenGL immediate mode вообще весь официально устарел ещё 15 лет назад. Через вершинные буфера рисовать полагается.



И glClear() каждый фрейм делать не надо. Его вообще можно не делать если ты не собираешься выводить что-то с черными (или какими-то другими) бордюрами вокруг зоны отрисовки.


Надо. Очень надо. Иначе у тебя каждый кадр зависит от предыдущего, и это порождает ненужные точки синхронизации. А на некоторых версиях драйверов ещё и глюки. А вот glFinish() надо делать, иначе потеряется синхронизация с кадрами на мониторе. Это нужная точка синхронизации, но она должна быть единственной.

Ну ладно, в эмуляторе первое не особо критично, но вообще -- зачем учиться делать неправильно?

PS: glClear() уже давно не стоит почти ничего. Это просто установка атрибута "константный цвет" у тайлов кадрового буфера.

SAM style
31.01.2021, 20:26
Не не не, чисто OpenGL тут вообще не при чём. Если только он - всё нормально. А вот если раскомментировать отрисовку индикаторов и прочего (QPainter после этого всего), начинается срань. Гугл излагает, что QPainter может менять разные параметры OpenGL. Окантовка в QPainter::beginNativePainting/QPainter::endNativePainter тоже не помогает. Вот сижу и думаю - что за срань. Можно, конечно, из иконок делать текстуры и просто лепить их средствами OpenGL, но со странностью разобраться хочется...

Dexus
31.01.2021, 20:28
Через вершинные буфера рисовать полагается.
glBegin/glEnd нормально работает. И еще ХЗ сколько будет работать. Тут не нужно миллион трианглов, тут всего два, на весь экран. Тут главная нагрузка на GPU будет за счет пиксельных шейдеров, и "вершинные буферы" тут вообще ничем не помогут.


Надо. Очень надо. Иначе у тебя каждый кадр зависит от предыдущего, и это порождает ненужные точки синхронизации.
Без z-buffer - зачем? Это вывод текстуры, предыдущие значения игнорируются (гигаскрин - через блендинг с предыдущим кадром который в буфере). Полно игор, в которых выход "за карту" провоцирует оставучки, черезкадровые. Они конечно не современные, но тем не менее, "очень надо" - надуманно.

А вот glFinish() надо делать, иначе потеряется синхронизация с кадрами на мониторе. Это нужная точка синхронизации, но она должна быть единственной.
Это да. Без этого и swap interval хз какой результат будет давать.

PS: glClear() уже давно не стоит почти ничего.
В целом - да. Можно и оставить, оно повлияет разве что на тысячные доли миллисекунды.

SAM style
31.01.2021, 20:30
Ты не опечатался, растет FPS? Может ограничение кадров нужно просто впихнуть, включить vsync.
На самом деле замедляется таймер Qt, по которому отсчитывается средний фпс. CPU не отжирается, музыка не разрывается, даже картинка более-менее плавная, но, например, реакция на кнопки очень сильно замедляется, как и таймер.

Dexus
31.01.2021, 20:35
Вот сижу и думаю - что за срань. Можно, конечно, из иконок делать текстуры и просто лепить их средствами OpenGL, но со странностью разобраться хочется...
А, еще поверху в сурфейс на экране пытаешься рисовать? Там вероятно какой-то invalidate срабатывает, и перерисовка снова вызывается (я хз как Qt работает честно говоря, это просто на вскидку).
Индикаторы правильно будет рисовать средствами OpenGL. Такие же текстурки биндить, и сверху рисовать. Тексты лучше не побуквенно, а целиком.
А рисовать в оригинальном разрешении на нативной текстуре - плохая история. Это Unreal'у пусть остается, или zesarux'у.
Может конечно можно победить Qt, чтобы он инвалидейт не создавал и не пытался перерисовывать повторно....

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


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

ЗЫ: Если попробовать ставить заглушку на paintEvent в определенных случаях, чтобы пропускать перерисовку из-за индикаторов?

SAM style
31.01.2021, 20:48
Похоже на засирание очереди. Это с учетом того что я даже близко не знаком с Qt, просто засирание очереди и лаги эти и в SQL2 лично у меня встречались (на этапе настройки главного цикла)...Мне очень интересно, почему это происходит на определенных железяках/развёртках экрана, а на других - всё норм.

Dexus
31.01.2021, 21:04
А нет возможности мониторить длину очереди сообщений?


почему это происходит на определенных железяках/развёртках экрана
Код инициализации режима и параметров текстуры одинаков для всех вариантов?

SAM style
31.01.2021, 22:17
Код инициализации режима и параметров текстуры одинаков для всех вариантов?
Для nes-pal и nes-ntsc практически одинаков. отличается частота cpu и развёртка экрана - https://github.com/samstyle/Xpeccy/blob/master/src/libxpeccy/hardware/nes.c#L245
comp->fps нигде вообще не используется. существует для возможного использования где-то ещё.
На сборке без OpenGL никаких эксцессов нет, NTSC работает стабильно :|

Dexus
31.01.2021, 23:23
На сборке без OpenGL никаких эксцессов нет, NTSC работает стабильно
Там вроде вообще к графике никакой связи нет, это все параметры виртуальныех экранов. А графически они могут различаться разве что разрешением (нативным). Вряд ли в этом дело.

Предлагаю попробовать GL_BGRA вместо GL_RGB и GL_UNSIGNED_INT_8_8_8_8_REV вместо GL_RGB. То есть 4 байта на пиксель а не 3.
Также попробовать вообще не выводить никакие индикаторы.
И все-таки попробовать отдебажить что там в очереди сообщений складыается. Возможно и в NTSC тоже очередь захламляется, но просто более удачно расправляется.

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

Dexus
01.02.2021, 10:17
https://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html
SAM style, в такую штуку не смотрел?
То есть очевидно что это возможно. Всякие 3D редакторы такое явно делают.
https://forum.qt.io/topic/53152/solved-overpainting-on-qopenglwidget-erases-opengl-scene/5 тут вроде пример рабочий есть для qt5

https://stackoverflow.com/questions/28216001/how-to-render-text-with-qopenglwidget/51557719#51557719

https://www.qtcentre.org/threads/27508-QPainter-very-slow-on-QGLWidget-even-in-simple-example а тут сказано что qpainter вообще конвертируется в OpenGL вызовы, да еще фиг знает какие (вероятно не самые быстрые).

SAM style
01.02.2021, 15:47
https://forum.qt.io/topic/53152/solv...opengl-scene/5 тут вроде пример рабочий есть для qt5
Я так уже пробовал. Одно отличие - у меня QGLWidget, а не QOpenGLWidget (какая между ними разница - я не понял). beginNativePainting/endNativePainting ничего не исправляют.
QPainter::drawText я не использую - для сообщений у меня отдельный битмап-шрифт и отдельная процедурина вывода, тоже картинками.
Сразу было ясно, что конфликт где-то в совокупности gl-вызовов и существования QPainter-а
Сравнивая то-где-глючит и то-где-не-глючит, я нашёл только одно отличие - фпс эмулируемой машины. Поток эмулирования за раз отэмулирувает где-то 20мс (для 50Гц), но при 60Гц на эмулируемой машине в этот период может быть готово сразу 2 кадра, и соответственно 2 раза выдаётся сигнал "кадр готов". Возможно, он и засирает всё.

Dexus
01.02.2021, 16:23
SAM style, а переход в ожидание следующего фрейма в конце эмулирования у тебя чтоли нет? Ну чтобы "кадр готов" не складировались, и чтобы второй кадр даже не начинал вычисляться, пока предыдущий не пошел на отображение. Тогда и лаг на 2 фрейма тоже понятен, это типа как render ahead получается, т.е. заранее все наэмулировал а стейты клавиш только потом доходят...

SAM style
01.02.2021, 17:09
SAM style, а переход в ожидание следующего фрейма в конце эмулирования у тебя чтоли нет? Ну чтобы "кадр готов" не складировались, и чтобы второй кадр даже не начинал вычисляться, пока предыдущий не пошел на отображение. Тогда и лаг на 2 фрейма тоже понятен, это типа как render ahead получается, т.е. заранее все наэмулировал а стейты клавиш только потом доходят...У меня отрезок эмулирования - не кадр, а заполненный звуковой буфер. Срань вполне может излечиться, если обрезать длину буфера (пока нет возможности проверить), хотя SDL довольно капризный в этом плане - то любую длину принимает при открытии устройства, то хочет степени двойки... Собственно, каллбэк SDL-а по звуку и даёт сигнал к очередной порции эмуляции.
Сигнал "кадр готов" выдаёт поток эмуляции, а принимает его уже основной поток - в котором весь UI, в т.ч и вывод картинки на экран

Dexus
01.02.2021, 17:30
У меня отрезок эмулирования - не кадр, а заполненный звуковой буфер.
...
Сигнал "кадр готов" выдаёт поток эмуляции, а принимает его уже основной поток - в котором весь UI, в т.ч и вывод картинки на экран
Хмм... Понятно.


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

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

принимает его уже основной поток - в котором весь UI, в т.ч и вывод картинки на экран
У тебя есть возможность мониторить длину и содержание этой очереди? Ну хотя бы на предмет именно сигнала на перерисовку. И просто дампить в лог случаи, когда в основном цикле (в котором рисование и происходит) оказывается более одного? И вообще не помешало бы замерять тайминги между выводами, у меня есть подозрения, что время там скачет от 5ти до 40ка мс.

А вообще, каким образом может оказаться два сигнала на вывод? Ладно, думаю не нужно тут голову ломать, прежде чем это вообще подтвердится. Может там все дело в чем-то другом.

SAM style
01.02.2021, 17:41
У тебя есть возможность мониторить длину и содержание этой очереди
Это всё внутри QApplication::exec() - там Qt запускает свой main-loop, принимает сигналы от всех и выполняет связанные с ними слоты, если они есть. Всё в одном потоке, поэтому очередь присутствует, но мне недосягаема. В принципе, я могу сделать свой обработчик всех событий для основного окна и пробовать отсеивать там лишние вызовы...

Я думаю не стоит прибивать гвоздями размер буфера, и увязывать с длиной кадра. Все как-то без этого обходятся...
Это вначале было прибито, потому что всё работало в 50фпс, и заполнение буфера звука плюс-минус совпадало с заполнением картинки. А так SoundFreq / CompFPS должно давать правильное значение, но переоткрывать звуковое устройство каждый раз при смене фпс-ов... Дойду до домашнего компа - попробую.

Dexus
01.02.2021, 18:22
поэтому очередь присутствует, но мне недосягаема
Печально.
Может все таки можно использовать какой-нибудь QSignalSpy?

Это вначале было прибито, потому что всё работало в 50фпс, и заполнение буфера звука плюс-минус совпадало с заполнением картинки.
Блин ну не должно быть так, чтобы длину буфера к длительности кадров постоянно подгонять. Если аудио является основны якорем, и событие вывода графики генерируется из звукового рендера, то вообще не важно какая длина буфера, важны временнЫе отметки, а их уже можно о и с 50фпс и с 60фпс и с 59 генерировать (samplerate делить на эти самые привязанные к кадрам чанки).

SAM style
01.02.2021, 19:06
Блин ну не должно быть так, чтобы длину буфера к длительности кадров постоянно подгонять. Если аудио является основны якорем, и событие вывода графики генерируется из звукового рендера, то вообще не важно какая длина буфера, важны временнЫе отметки, а их уже можно о и с 50фпс и с 60фпс и с 59 генерировать (samplerate делить на эти самые привязанные к кадрам чанки).Звук оказался не при чём. Делал буфер на 10 буферов/сек, и на 100 буферов/сек - всё одно. Косвенно отследил забиваемость очереди Qt (printf на сигнал по кадру, printf на слот, который к нему привязан) - сколько сигналов выпущено, столько раз и слот срабатывает. Бывает, что идёт 2 сигнала подряд, но за этим следует 2 вызова слота подряд. Очередь не забивается. Возможно, 2 перерисовки подряд как-то дурно влияют на GL...

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

Решилось :) Точно не знаю, почему так, но... До этого для перерисовки окна я делал setUpdatesEnabled(true); repaint(); setUpdatesEnabled(false); - обновления окна разрешены только здесь, чтобы система не перерисовывала его когда ей захочется.
С GL были огромные подозрения, что активный QPainter вызывает рекурсию. Поэтому я сделал прямой вызов paintEvent(nullptr) вместо предыдущей связки. Окно перерисовывается, но все другие обновления окна теперь запрещены всегда. И шо бы вы таки думали? Его теперь не колбасит - GameBoy стабильно держит свои 60фпс, NES в NTSC тоже...
Чудесато...
Чудесато то, что теперь оно накапливает задержку, но медлено...
Чудесато... без двойной буферизации не накапливает, но индикаторы иногда подмигивают

Dexus
01.02.2021, 20:11
SAM style, накапливает задержку, это то что звук начинает от видео запаздывать? А как же сигнал на вывод фрейма из потока эмуляции?

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

По логике задержка конечно может накапливаться, но только в пределах одного фрейма, если vsync установлен. Бегущие строчки 50hz на мониторах в 60hz неизменно подергиваться, но делать это они должны по однообразному шаблону. С задержками между кадрами в 1,1,2,1,1, 1,1,2,1,1 кадров. 60fps по идее никуда дрейфовать не должен.

SAM style
01.02.2021, 21:13
накапливает задержку, это то что звук начинает от видео запаздывать?
Нет, реакция Qt на события (таймеры, нажатия клавиш итп) начинает запаздывать. Картинка и звук в порядке.
Вобщем, пока что вылечил отключением двойной буферизации. Может, ещё потом поэкспериментирую - отключу автоматический swapBuffers, и буду его руками менять.
Исходники впилены на гитхаб. Для cmake появилось -DUSEOPENGL=0 или 1 в зависимости от желания. Если есть возможность собрать - можно погонять.
У nes заметил ещё одну вещь - если во время работы вызвать опции и нажать ок, то сбиваются все тайлы. Но это уже совсем другая история...

Dexus
02.02.2021, 03:45
SAM style, а какой-либо вариант vsync случайно не включен? Двойная буферизация с vsync’ом всегда дают небольшой лаг. Тройная буферизация менее лагучая. https://zen.yandex.ru/media/mywebpc.ru/chto-takoe-vsync-i-kogda-sleduet-vkliuchat-ili-vykliuchat-vsync-5c6b998bef11b700af1e7f39

По «запаздыванию». Оно прям на глаз ощутимым становится? Типа там по 5, 10 фреймов, или даже на пол секунды?

Зы: в прошлый раз так и не получилось научиться собирать.. может еще раз попытаться.

SAM style
02.02.2021, 15:07
По «запаздыванию». Оно прям на глаз ощутимым становится? Типа там по 5, 10 фреймов, или даже на пол секунды?
Да, и чем дальше, тем больше. Реакция на кнопки уезжает примерно на секунду за полминуты, таймер на 0.2 сек уже растягивается на всю секунду... И главное - CPU из-за этого не кушается.
Вобщем, пока без буфферизации, всё стабильно. Одна фигня - я забыл, как средствами самого OpenGL отключить двойной буффер. Как-то ведь делал, когда давно совал нос в это дело. Или это с glut было. У QGLWidget есть setFormat, но он прям весь из себя obsolete и не рекомендуется, хотя работает.
Вчера ещё починил скриншоты с GL. Что со сканлайнами делать - пока не думал

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


Зы: в прошлый раз так и не получилось научиться собирать.. может еще раз попытаться.
Discord: samstyle#2031, помогу чем смогу

Dexus
02.02.2021, 15:17
Что со сканлайнами делать - пока не думал
Они не нужны в OpenGL. Их заменят шейдеры (без шейдеров OpenGL не торт). Фактически любые такие: http://filthypants.blogspot.com/2015/04/more-crt-shaders.html

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

Dexus
02.02.2021, 22:13
Смог установить Qt и откомпилировать проект (спасибо SAM style за упорную помощь :)

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

Sandro
03.02.2021, 00:52
Одна фигня - я забыл, как средствами самого OpenGL отключить двойной буффер.



glDrawBuffer(GL_FRONT);


Но если ты будешь рисовать хоть что-то отличное от картинки во всё окно, то будет мерцать и вообще рвать анимации. Правда, и картинку во всё окно тоже будет рвать лучом, но мы к этому уже давно привыкли :(

Dexus
03.02.2021, 18:21
если ты будешь рисовать хоть что-то отличное от картинки во всё окно
В общем-то тут и есть все окно - одна большая картинка - два треугольника на весь экран, и мерцать будут только индикаторы.

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

Dexus
05.02.2021, 01:13
Помимо включения OpenGL получилось починить рваную динамику (на windows вообще 32 кадра в секунду шло).
Также получилось активировать шейдеры!
Но чтобы полноценно добавить в эмуль шейдеры, в разных режимах (и в оконном и фулскрин) с выбором, с поддержкой разных осей - придется попыхтеть.
В качестве тизера
https://volutar.myds.me/xpshtz.png

SAM style
05.02.2021, 10:41
с поддержкой разных осей - придется попыхтетьПосмотри в сторону QGLShader и QGLShaderProgram - туда можно одним вызовом подсасывать текст прямо из файла, компилять и применять к активному QGLWidget.

Dexus
05.02.2021, 10:57
SAM style, Какая-то обертка там есть. Но с примерами туго. Плюс это вроде только с Qt>=5, а через такой способ и на 4 должен работать.
Али Xpeccy окончательно распрощался с Qt4?

Плюс в любом случае надо наворачивать интерфейс для выбора шейдера, каким-то образом увязывать его с полем «zoom level» и давать возможность видеть что компилятор шейдера возвращает (а то если ошибка какая - не исправить). И кстати шейдеры бы хорошо если бы перегружались с диска в момент выбора, или даже предусмотреть «refresh» - для исправлений «на лету». И это все никак не упрощается использованием QGLShaders. :(

SAM style
05.02.2021, 11:59
Какая-то обертка там есть. Но с примерами туго. Плюс это вроде только с Qt>=5, а через такой способ и на 4 должен работать.
Али Xpeccy окончательно распрощался с Qt4?Написано, что работает начиная с Qt4.6. В 5.x постепенно переводят всё c QGL* на QOpenGL*. Хз зачем. Название сменилось, а функционал нет.
Кстати, готовь ещё обучающие лекции на тему шейдеров, надо будет на человечьем языке объяснять мне, как оно работает :)

NEO SPECTRUMAN
06.02.2021, 21:08
Название сменилось, а функционал нет.
есное дело чтоб под любым предлогом оно не работало на ХРю

SAM style
07.02.2021, 00:17
есное дело чтоб под любым предлогом оно не работало на ХРю
А что, вас уже выпустили из сумашедшего дома бана?
Я стараюсь юзать легаси-методы, пока они доступны.

NEO SPECTRUMAN
07.02.2021, 00:20
А что, вас уже выпустили из сумашедшего дома бана?
ВНЕЗАПНО до
но скоро я туда вернусь :)
тк при отсидке ***** балы то не аннулируются (прикольно же да) :)
и собственно это объясняет чего вроде бы адекватные люди все время сидели там
а срачь еще не окончен

Dexus
07.02.2021, 05:30
Скомпилил тестовую opengl сборку - xpeccy0.6.20210207ogl.7z (https://volutar.myds.me/xpeccy0.6.20210207ogl.7z). В комплекте все нужные dll'ки.
Под qt5 и opengl. В папке откуда запускается exe лежит пачка shader*.txt файлов. Это GLSL скрипты шейдеров, разделенные на 2 секции: "vertex" и "fragment".
При запуске грузится shader.txt. Хотим поменять на другой - переименовываем нужный в "shader.txt", жмем Alt+L, смотрим на результат. Можно поковыряться в самих скриптах, покрутить цифры.
Если в шейдере будут ошибки - экран будет черным, и будет сформирован файл glslerror.log, в котором будет описан код ошибки (то что драйвер видюхи OpenGL сообщает при компиляции шейдера).
Если файла не будет - шейдер будет отключен (т.е. голый opengl).

ultra
07.02.2021, 19:28
От Retroarch или Snes9X шейдеры конечно не подойдут?

Dexus
07.02.2021, 19:57
ultra, если они в glsl, исходных vertex+fragment то почему нет? Часть из них оттуда и заимствованы.

ultra
07.02.2021, 20:06
ultra, если они в glsl, исходных vertex+fragment то почему нет? Часть из них оттуда и заимствованы.

В смысле лучшие типа Royale и Trinitron где комплект из 14 шейдеров и масок в png.

Dexus
07.02.2021, 20:18
ultra, это не GLSL. Плюс они многопроходные.
Здесь же просто vertex+fragment, на glsl, однократный.

SAM style
07.02.2021, 21:08
Кто-нибудь использует rpm-ные линуксы? Как у вас в репах называется opengl-ная либа qt5? Суся в песочнице, где я раньше опакечивал, уже устарела. Должно быть что-то типа libQt5OpenGL5

SAM style
17.02.2021, 17:55
build 20210217


Экспериментально переезжаем на OpenGL (надеюсь все себе обновили RivaTNT2 до более новых). Пока без всяких шейдеров-шмейдеров. На дебиане и винде опробовано, насчет рпм-ных и макосевых нет 100% уверености. Опробуйте и сообщите.
Починено несколько несмертельных проблем и, по традиции, добавлено несколько новых :) .


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210217) ]

ЗЫ: Уже выявилось - при долгой паузе/сидении в дебугере происходит рассинхронизация вывода на экран, выглядит как постоянно выпадающие кадры. Уже вылечено

Dexus
18.02.2021, 17:28
Виндовая сборка с шейдерами-шмейдерами (https://volutar.myds.me/xpeccy0.6.20210218.7z) (несколько штук в комплекте)
Сборка со всеми dll-ками, ROMами и конфигами - нет нужды что-то настраивать, добрые люди поделились.
Выбор шмейдеров _пока_ традиционно отсутствует - делается это посредством переименования нужного в shader.txt (по дефолту Alt+L перезагружает шейдер).
- Также подфикшен предыдущий фрейм (серый) в режиме дебага, показывался пред-предыдущий.

(!!!) Получилось исправить Qtшный глюк в винде, что левые-правые shift/ctrl/alt нормально не различались. Скоро сделаю сборку и выложу (не знаю насколько SAM style готов встроить этот хак в основной код).

Dexus
19.02.2021, 09:10
https://volutar.myds.me/xpeccy0.6.20210219.7z
Виндовая сборка с шейдерами и с исправленными залипаниями left/right shift/ctrl.

SAM style
19.02.2021, 09:12
исправленными залипаниями
с многоэтажным костылём из г-нокода

Dexus
19.02.2021, 09:33
с многоэтажным костылём из г-нокода
Лучше работающий г-нокод (из-за кривого Qt), чем глючный не г-нокод. Работает на компе всё равно машкод, который не только с эстетической точки зрения невозможно прочитать, но и вообще.
Это для тех кому ехать, а не шашечки.

SAM style
20.02.2021, 09:47
build 20210220
Пара дней троллинга в дискорде + подчистка старых и всплывших на последней сборке ошибок


deBUGa: открытие дампа неверно показывало размер файла
deBUGa: улучшено отображение экрана NES, теперь со спрайтами и учитывает скролл
Исправлено отображение предыдущего кадра в режиме отладки (та часть экрана, которая становится серой)
Исправлены проблемы с клавиатурой под Windows
Добавлена поддержка шейдеров-шмейдеров. В виде *.txt файлов они должны лежать в директории %CONFIGDIR%/shaders, выбираются в настройках на вкладке video и в быстром меню по пкм. Передаются параметры rubyInputSize/rubyOutputSize/rubyTextureSize, распознаются секции vertex: и fragment:
Вроде бы исправлен сегфолт на выходе в макоси (понятное дело, сложно верить виртуалке, где всё валится только потому, что захотело)


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210220) ]

Dexus
20.02.2021, 14:21
Ура товарищи! То чего так долго ждали - наконец-то свершилось!
Исправлен фреймрейт, теперь все кадры отображаются, бегущие строчки идут более-менее плавно (от дублирований кадров при 50->60Hz никуда не деться). Наконец-то можно нормально смотреть г*внодемки!
Работают шейдеры, с симуляциями всяких телевизионных выводов - вот вам сборник (http://volutar.eu5.org/xpeccy-shaders.zip). Г*внодемки могут быть ламповыми, и даже на фуллскрине!
И наконец-то исправлены левые-правые шифты (даже те глюки, которые раньше не замечались).

Сердечная благодарность SAM style!

Dexus
23.02.2021, 09:10
Если кто-то из виндопользователей решит поковырять шейдеры, и не просто цифры покрутить, а основательно (свои написать, адаптировать с других проектов), ошибки компиляции шейдеров к сожалению не отразятся. Есть 2 способа их увидеть:
1) в некоем microsoft debugview можно квидеть то что выплевывает qdebug (а именно эта функция используется для вывода ошибок компиляции).
2) использовать для тестирования и разработки мою сборку, которую я выкладывал выше (формат шейдеров идентичен, вывод ошибок - в файл).

SAM style
23.02.2021, 09:41
Если кто-то из виндопользователей решит поковырять шейдеры, и не просто цифры покрутить, а основательно (свои написать, адаптировать с других проектов), ошибки компиляции шейдеров к сожалению не отразятся. Есть 2 способа их увидеть:
1) в некоем microsoft debugview можно квидеть то что выплевывает qdebug (а именно эта функция используется для вывода ошибок компиляции).
2) использовать для тестирования и разработки мою сборку, которую я выкладывал выше (формат шейдеров идентичен, вывод ошибок - в файл).
Опять мимо. Есть ключ -c, по которому для винды к эмулю присобачивается терминал, в который выводится всё, кроме первых сообщений. Даже qDebug()

Dexus
23.02.2021, 18:09
Есть ключ -c, по которому для винды к эмулю присобачивается терминал, в который выводится всё, кроме первых сообщений.
Действительно, работает. Только не показывает в какой из секций шейдера ошибка - в vertex или fragment (не помешало бы добавить!).

kgbplus
28.02.2021, 15:51
Не могу никак запустить в режиме Скорпиона с ПрофПзу. С файлом scorpion.rom все прекрасно работает, но мне нужна поддержка СМУКа. Меняю файл ПЗУ на prof_39f.rom или scorp_prof401.rom и все. Бейсик48 и TR-DOS запускаются, а все остальное нет. ВГ93 включен буз турбо, СМУК включен. Я файл пзу как то не так подключаю (подключал единственным файлом со всеми параметрами в 0)?

SAM style
28.02.2021, 17:59
Не могу никак запустить в режиме Скорпиона с ПрофПзу. С файлом scorpion.rom все прекрасно работает, но мне нужна поддержка СМУКа. Меняю файл ПЗУ на prof_39f.rom или scorp_prof401.rom и все. Бейсик48 и TR-DOS запускаются, а все остальное нет. ВГ93 включен буз турбо, СМУК включен. Я файл пзу как то не так подключаю (подключал единственным файлом со всеми параметрами в 0)?
Пока могу только предположить, что Reset to выставлен в basic48 (надо в 128). Только что проверял на новом профиле - работает, даже без смука, и со смуком но без винта... Бывает, что NMI не сразу срабатывает.

kgbplus
28.02.2021, 19:12
Что то я все перепробовал ( Даже думал ром файл битый, скачал отсюда. Все равно.
Такое впечатление, что либо ему нужны не нулевые параметры, либо все таки что то с файлом.
Вот конфиги на всякий случай, специально сделал с нуля. Версия 0.6.20201229, под Ubuntu 20.04

SAM style
28.02.2021, 23:55
Версия 0.6.20201229
Ааааа, тогда ясно. Там поломана адресация страниц профпзу, я это выявил и исправил после НГ.

kgbplus
01.03.2021, 00:28
Спасибо! Все сразу завелось!

Slider
02.03.2021, 22:30
Не очень понятно, почему в windows-версии F12 (сброс) работает через раз. Вернее, раз сбрасывает, пять раз виснет.
Пробовал на ромах +2 и пентагон - везде одна и та же фигня, на +2, правда, виснет чаще...
П.С. Под виснет я подразумеваю то, что не выходит в дос или бейсик или лоад-меню, а покрывается какими-то полосами, чернеет экран и т.п. Эмуль работает, но ZX "внутри" него - нет :(

SAM style
02.03.2021, 23:22
Не очень понятно, почему в windows-версии F12 (сброс) работает через раз. Вернее, раз сбрасывает, пять раз виснет.
Пробовал на ромах +2 и пентагон - везде одна и та же фигня, на +2, правда, виснет чаще...
П.С. Под виснет я подразумеваю то, что не выходит в дос или бейсик или лоад-меню, а покрывается какими-то полосами, чернеет экран и т.п. Эмуль работает, но ZX "внутри" него - нет
У всех под виндой так?

Dexus
03.03.2021, 01:23
Подозреваю что все сильно завязано на то какой конфиг железа с какими ромами используется. Не все со всем совместимы, а эмуль позволяет скомбинировать все что угодно, даже 6502 со спеком (что, естественно не взлетит).
По-доброму должен быть список совместимостей ромов с "машинами" (уж не знаю почему такое название взято). Но в идеале - предзаданный список совместимых ромов для каждой "машины", чтобы кривой просто нельзя было выбрать. Плюс ромов полно всяких модофицированных. Их разве что по CRC32 какому-нибудь можно отличать (если каталогизировать все).

SAM style
27.03.2021, 18:41
build 20210327


Исправлен глюк со сбросом +2
Исправлено переключение на окно эмулятора при активном отладчике (в основном линукс)
В cmake добавлены проверки на *BSD (не проверялось)
deBUGa: добавлен побайтовый просмотрщик дорожек дисков
deBUGa: динамическое изменение высоты дизасма/дампа
deBUGa: изменено поведение хоткеев F4/F5
Изменено поведение захваченной мышки
Починена загрузка неидеальных UDI

[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210327) ]

Dexus
28.03.2021, 13:04
SAM style, а сборка в софтовом, а не OpenGL режиме по какой причине?
Просто с OpenGL вроде нормально собралось, проблем не вижу...

===
Если кому надо - сборка под Win тут (https://volutar.myds.me/Xpeccy0.6.20210326ogl.zip) (с шейдерами, конфигами и либами).

SAM style
28.03.2021, 13:06
SAM style, а сборка в софтовом, а не OpenGL режиме по какой причине?
По причине раздолбайства. Видимо, флаг компиляции обратно не поставил.
PS: обновил на гитхабе. В виртуалке opengl-ная вообще не запускается, так что...

Bedazzle
28.03.2021, 20:22
build 20210327

Спасибо! Растянул дебаг на весь экран - красота!

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

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

Без вертикального скроллбара переходить далеко на нужный адрес - тяжко.

Ввод точек останова с маской - здорово, но что, если мне нужен диапазон из 20 адресов?
Покрывать 32 не хочется из-за ложных срабатываний. Дробить на 1+16+2+1? :/
И как задать маску вовсе неочевидно. :(

Upd:
Про выделение понял: нужно кликнуть на адрес, и протянуть вправо мышой, тогда строка выделяется. Чутка непривычно, но работает. :)

SAM style
28.03.2021, 21:33
А как дизасм с адреса Х по адрес У выгрузить в файл?
Нашёл только чтобы выделить мышой, протянув выделить кусок. Если хочется несколько кило сохранить, то уже подбешивает скроллить.
Ctrl+клик на начало и на конец - выделение блока, так же работает shift+клик

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

Без вертикального скроллбара переходить далеко на нужный адрес - тяжко.
Набрать адрес в столбце адреса?

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


Ввод точек останова с маской - здорово, но что, если мне нужен диапазон из 20 адресов?
Маска работает только на порты. На адреса она не действует. Один брыкпоинт - один адрес. Когда-нибудь придумаю что-нибудь внятное с диапазонами.

Bedazzle
28.03.2021, 23:19
Набрать адрес в столбце адреса?

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


Один брыкпоинт - один адрес. Когда-нибудь придумаю что-нибудь внятное с диапазонами.

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

Давно хочу слезть с EmuzWin, но пока колюсь и жру кактус.

SAM style
07.04.2021, 22:11
build 20210407


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


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210407) ]

Bedazzle
08.04.2021, 11:46
build 20210407
Вделана возможность создавать точки останова для адресной шины CPU на диапазоны адресов

Низкий поклон!

ZXMAK
11.04.2021, 17:51
Виндовая сборка с шейдерами-шмейдерами (несколько штук в комплекте)

Интересно, есть пара вопросов по шейдерам и текстурам в OpenGL.
1) в текущем варианте на время рендеринга текстуры активируется программа шейдеров, грубо говоря сейчас схема рендеринга такая:


glUseProgram(_program);

glBindTexture(GL_TEXTURE_2D, curtxid);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(1.0f, 0.0f); ctx.glVertex2f(1.0f, 0.0f); // RT
glTexCoord2f(0.0f, 0.0f); ctx.glVertex2f(0.0f, 0.0f); // LT
glTexCoord2f(1.0f, 1.0f); ctx.glVertex2f(1.0f, 1.0f); // RB
glTexCoord2f(0.0f, 1.0f); ctx.glVertex2f(0.0f, 1.0f); // LB
glEnd();

glUseProgram(0);

а как сделать многопроходную обработку, где используются несколько шейдеров для каждого прохода?
Как пример, вот какой-то многопроходный вариант на шейдерах: http://www.mediafire.com/file/touakpcbs2ujqcp/ntsc-maister.shader/file

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

2) если вызывать glTexImage2D с GL_BGRA в качестве формата, будут ли проблемы на разном железе?

Например вот так:


glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
bytesPerLine / 4, sizey,
0, GL_BGRA, GL_UNSIGNED_BYTE,
pBuf);

Dexus
11.04.2021, 19:45
ZXMAK,
> а как сделать многопроходную обработку, где используются несколько шейдеров для каждого прохода?
Никак. Менять код рендеринга. Как именно - хз. Мне одного прохода хватает:)

2) неизвестно. Непонятно - зачем?

В целом - ставишь Qt, берёшь исходники, и экспериментируешь.

ZXMAK
11.04.2021, 21:21
Дело не в Qt, у меня свой кроссплатформенный движок под OpenGL. Когда-то делал, хотел ZXMAK на него перевести. Впринципе под win, linux и MAC OS нормально работает, но до конца не допилил - утонул в изучении версий и расширений. С одной стороны не хотелось старые интерфейсы юзать, с другой стороны новые не везде поддерживаются, вобщем на изучении методик загрузки расширений и их поддержки на разных платформах дело застряло. :) Дело усугубилось еще и отсутствием встроенной поддержки шрифтов в OpenGL, делать движок для работы с TrueType файлами шрифтов совсем не хотелось, а текст в виде спрайтов - решение не очень. В итоге стал юзать везде Direct2D, который не короссплатформенный, но дает красивые результаты и полноценно поддерживает шрифты из коробки.

Ваши эксперименты с шейдерами на OpenGL разбудили старый интерес к OpenGL, ради интереса набросал тестовый код по аналогии, работает. Но хотелось бы с многопроходными шейдерами разобраться. Один проход не интересно, хотел добавить на шейдерах поддержку разницы длительности между inc и paper. Идея в том, чтобы в альфа канал класть информацию типе пикселя и на шейдерах это обрабатывать. Еще интересно нофлик фильтр на шейдерах сделать, передавать две-три текстуры - текущего и предыдущих кадров и комбинировать результат на шейдерах.

Dexus
11.04.2021, 21:49
ZXMAK, несколько текстур передавать (текущую+ предыдущую) по идее не проблема, просто предыдущую не удалять, и биндить как параметр. Можно передавать параметр «времени», для динамики какой-то (дрожании пикселей)
А насчет многопроходности - это я уже не трогал. Изначально позаимствовал метод из OpenXcom, а потом это легко переделалось на Qtшные методы (гораздо менее громоздко получилось). Многопроходные рендеры используются в Retroarch. Наверное это туда надо посмотреть.

Rubts0FF
16.04.2021, 20:53
К-хм, во-первых строках письма - спасибо, эмулятор радует все больше и больше, хотя основным у меня по прежнему эмулятор Шалаева (на ноуте). На старшем же брате пользуюсь этим. Во-вторых, как не по-брюзжать, в смысле пожелания и прочее.
Эмулятор регулярно обновляется и это хорошо, наверное, и их у меня стоит уже ... подходит к десятку, хотелось бы на какой то вкладке увидеть номер версии.
Уже не настаиваю, но хорошо бы что бы изменения в образ диска вносились в момент, например, операции записи файла. Нет, я уже почти привык давить F9 при закрытии эмулятора, но работа завершается не всегда сознательно, вот вчера, падение напряжения и результат четырех часов работы в корзину, да какая там корзина, в жопу. Если это, запись в образ при записи на диск, сделать по какой то причине нельзя, хотелось бы иметь возможность сбрасывать дамп .., ну что то вроде спящего режима, впрочем это хотелось бы иметь не зависимо не от чего. Надавил на какой то FF и сохранил все! А то я уже думаю запускать эмулятор под VMware и тогда надавил на паузу и время остановилось, а потом в любое время продолжил с того же места. Да, в случае отключения электричества это не спасет, но это бывает довольно редко, да и какая - никакая копия будет.

Еще хотелось бы Are Your Sure при выходе (ALT+F4) из эмулятора, иногда нажатие происходит случайно, нажимал SS, он у меня на ALT + 3 - просмотр файла в ZAsm`е и вылетел, да, если какой то диск не сохранялся то об этом эмулятор сообщит, но рам-диск в .., там выше уже писал.

SAM style
16.04.2021, 23:55
хотелось бы на какой то вкладке увидеть номер версии
Так в заголовке окна. Xpeccy 0.6.циферы <- это дата сборки в формате ГГГГММДД

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

Еще хотелось бы Are Your Sure при выходе
Ну, это самый простая хотелка. Сделаю, если не забуду до следующего скачка желания заниматься эмулем :)

Rubts0FF
17.04.2021, 01:19
Так в заголовке окна. Xpeccy 0.6
У меня эмулятор всегда в Full Screen, поэтому я заголовок и не вижу.

если не забуду до следующего скачка желания заниматься эмулем
Это как раз понятно.

Dexus
24.04.2021, 00:13
Два пожелания и один небольшой багрепорт.
1. Слева колонка с регистрами растягивается при растяжении ширина окна (хотя надобности в этом вообще нет - регистры всегда одинаковое место занимают).
2. Если метка по которой происходит прыжок не короткая, и срабатывает индикатор прыжка, т.е. появляется стрелочка красная, вылазя, она превращает метку куда происхолдит прыжок в урезок с многоточием (например "JR NZ,blablablablabla" в "JR ... v") - очевидно что значок стрелки занимает неоправданно много места по горизонтали (хотя на деле можно просто поверху рисовать, не резервируя под это ячейку справа).
3. При открытом дебагере, при щелчке по окну самого эмулятора, окно дебагера прыгает в левый верхний угол экрана (т.е. сбрасывается положение).

SAM style
24.04.2021, 09:06
При открытом дебагере, при щелчке по окну самого эмулятора, окно дебагера прыгает в левый верхний угол экрана (т.е. сбрасывается положение).
Какая ось? И, возможно, это я уже исправил

Dexus
24.04.2021, 09:51
Какая ось? И, возможно, это я уже исправил
Win7. Проверил ластовую (от 7 апреля) - да, бага нет. Пардон за ложную тревогу.

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

винда https://stackoverflow.com/questions/34836406/how-to-prevent-windows-from-going-to-sleep-when-my-c-application-is-running
линукс https://stackoverflow.com/questions/31498114/how-to-programmatically-prevent-linux-computer-from-sleeping-or-turning-on-scree

Rubts0FF
14.05.2021, 18:51
Это скорее информация к размышлению, запустил на ноуте, часа полтора все было прекрасно и уже думал что к Шалаеву не верность, но, закрыл крышку ноута, сварить кофе, открыл - висяк, через время повторил .. висяк. Шалаев бл.., живее всех живых, все еще.

SAM style
14.05.2021, 19:57
Тогда третье пожелание, изучить возможность сделать экран незасыпающим во время работы
Это не везде будет работать. К примеру, у меня openbox с поставленными сверху прогами. Он сам по себе не знает, что такое управление питанием и прочее. По ссылкам есть пользование dbus, но это целый монстр, и присобачивать его к зависимостям xpeccy не очень хочется. Такая же проблема есть в эмуле ps3 (rpcs3) - при отсутствии dbus заблокировать выключение экрана не получается, тыкание кнопок гампада не спасает.

закрыл крышку ноута, сварить кофе, открыл - висяк
Хммм... несовершенство спящего режима винды? По опыту - после него бывает даже сеть не работает, сталкивался на одном ноуте.

Rubts0FF
15.05.2021, 01:44
Хммм... несовершенство спящего режима винды? По опыту - после него бывает даже сеть не работает, сталкивался на одном ноуте.
Висит не виндовс, висит xpeccy, а w7 предлагает завершить работу программы.

Dexus
15.05.2021, 05:55
Это не везде будет работать. К примеру, у меня openbox с поставленными сверху прогами. Он сам по себе не знает, что такое управление питанием и прочее. По ссылкам есть пользование dbus, но это целый монстр, и присобачивать его к зависимостям xpeccy не очень хочется.
По ссылкам отсылка к способу, используемому в SDL (вроде с 2.0 он есть). Если это завязано на особенности работы оси с железом, то тут только 2 пути: 1) искать компромиссные варианты, пусть и не идеальные с точки зрения эстетики кода, и получить результат; 2) забить на результат, поставив на пьедестал эстетику кода. Как по мне - ехать важнее шашечек.

И нельзя ли просто использовать SDL?

SAM style
15.05.2021, 11:49
Висит не виндовс, висит xpeccy, а w7 предлагает завершить работу программы
Win10 - не наблюдается такого (не имея данной проблемы, решать её не представляется возможным). А посему проводи дополнительные исследования - например, собери дебажную версию и вклинься отладчиком, когда она висит - хотя бы увидим, где и почему.

Rubts0FF
16.05.2021, 21:37
Я поступлю проще, буду закрывать xpeccy перед тем как приспичит закрыть крышку ноутбука, и это работает. Я не проводил специально каких исследований, у меня дважды такое случилось, я решил это так как решил, кто там крайний вопрос шестнадцатый.

Dexus
01.06.2021, 01:38
Буду понемногу пополнять документацию по Хрессу
https://docs.google.com/document/d/1fmDePHvjT6i1LM_Ex78GnX4j00tKSBrx-5p11tVWfKE/

Dexus
09.06.2021, 13:29
Ура, были исправлены тайминги для классичесих 48/128 (тайминги Пентагона и так были правильными).
2я часть Shock megademo рисуется как надо и в 128к и в 48к.
Причем демо перестраивает тайминги, в зависимости от модели. Если налету layout переключаешь - получается фигня.
Вот так выглядит:
https://volutar.myds.me/xpeccyshock128.png

Dexus
09.06.2021, 17:12
С документацией вроде закончил. Вышло на 20 страниц.
Если что-то упустил - сигнальте. Дал возможность комментировать.

SAM style
10.06.2021, 19:02
build 20210610

Как тут всего много с прошлой сборки...

Починен плеер ленты
Починен редактор геометрий экрана
Починены индикаторы клавиатуры и джойстика
Починена медленная память (пока что по модели 48/128К, +2/+3 добавлю потом)
Починено именование фалов при их загрузке напрямую на диск (было под windows)
Починено сохранение путей к файлам, загруженным из командной строки
Настроены тайминги цикла iowr у z80
Исправлен счетчик тактов в отладчике
Добавлена опция "спрашивать на выходе"
Для переназначения добавлены кнопки нампада
Бут добавляется к диску при загрузке хобет (если это включено в опциях)
По кнопке в опциях теперь можно загрузить raw-файлы и хобеты
Временные точки останова удаляются при входе в отладчик
При создании диска в опциях спрашивается, форматировать ли его под тырдос
Прочие мелкие улучшения и ухудшения. Надоело уже гитхаб листать...


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210610) ]

Rubts0FF
11.06.2021, 14:29
Скачал и вот что интересно, выбираю диск/дисковод D: - диск-образ выбирается, но в дисковод не вставляется вовсе или вставляется в дисковод A. Собственно всего несколько минут пытался пользоваться, так что остальных изменений, в том числе - опция "спрашивать на выходе" - не обнаружил.

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

SAM style
11.06.2021, 23:46
Скачал и вот что интересно, выбираю диск/дисковод D: - диск-образ выбирается, но в дисковод не вставляется вовсе или вставляется в дисковод A.
Ты там случайно не на еве с виртуальным D: сидишь? Проверил только что на скорпионе - образы загружаются в указанные диски.

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

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

Dexus
12.06.2021, 00:04
Засыпание винды вообще чреватый всякими эффектами процесс.
В идеале бы конечно иметь что-то типа “project”, чтобы можно было сохранить сессию отладки с учётом и загруженных носителей, и состояний регистров всего оборудования включая fdc и положения луча (плюс метки, брейкпойнты и карта типов данных). В одном файле. Вот это бы полностью закрыло все вопросы по засыпаниям и проблем с сильно длительными сессиями отладки. Сохранил, поспал, открыл, продолжил с идеально того же места.

Dart Alver
12.06.2021, 11:33
Скачал и вот что интересно, выбираю диск/дисковод D: - диск-образ выбирается, но в дисковод не вставляется вовсе или вставляется в дисковод A.

Проверил только что на скорпионе - образы загружаются в указанные диски.

Баг подтверждаю !
Если открывать образ из меню Storage\Disk , то образы кидаемые в B,C,D - кидаются в A.
Если по F3 - то всё пучком ))

SAM style
12.06.2021, 12:14
Если открывать образ из меню Storage\Disk , то образы кидаемые в B,C,D - кидаются в A.
А вот это уже более конкретно. Ок, проверю вечером.

Dart Alver
14.06.2021, 17:07
Ещё 1 момент.
Раньше при достижении точки останова в дебаггере, если закрыть дебаггер, то выполнение программы продолжалось. Теперь нифига, пока не протянешь точку через F7, дебаггер открывается заново на этой же точке.
Это баг или новая фича ? Если фича, то по мне неудобная, раньше лучше было.

SAM style
14.06.2021, 17:54
Это баг или новая фича ?
Это баг. Странно...

zebest
14.06.2021, 20:30
были исправлены тайминги для классичесих 48/128
ну у меня кривые руки, это факт. Но исправленных таймингов в упор не вижу. на zx48 точно. Ну попробую что нить в zx128 затестить.
Предлагаю с трех раз доГАДацца, где верные тайминги zx48\128
https://s.micp.ru/55vci.jpg
cont mem включен, есичО

SAM style
14.06.2021, 20:50
ну у меня кривые руки, это факт. Но исправленных таймингов в упор не вижу
Подозреваю пентагоновскую развертку, а не классическую. и медленную память проверь.

layout = classic128:456:311:72:64:64:16:64:16:136:256:192
layout = classic48:448:312:72:64:64:16:64:16:136:256:192
ЗЫ: Cont.IO нет, если оно там используется

zebest
14.06.2021, 21:03
ЗЫ: Cont.IO нет, если оно там используется
и бЕЗ зы понятно, что IO нет. А так дааааааа, все хорошо, все четко :)
p.s. тестил и твою сборку, и Dexus-а, у него уже с готовыми профилями сборка.

Dexus
15.06.2021, 08:46
zebest, к сожалению этих тестов нет. Я указывал на чем тестировалось, и в них все нормально.

zebest
15.06.2021, 11:04
Я указывал на чем тестировалось, и в них все нормально.
- К пуговицам претензии есть?
- Нет! Пришиты насмерть, не оторвёшь! (с)



ula48 и ula128 - к сожалению это простейшие тесты, которые проходят 100% уважающих себя эмуляторов Спектрум-а. К счастью эти тесты расползлись повсюду. Кроме этого форума и у испанцев есть, и у поляков, и у чехов недавно видел, да у всех, кто хоть немного занимается тестированием эмуляторов, софтовых и не очень. После этих тестов идут 4 зеленых квадрата , там статистика похуже, процентов думаю 80%, или TimingTest, там то жи не все радужно. Или Snow тест, этот вообще 1-2 правильно, и парочка - почти верно показывают :)

Dexus
15.06.2021, 11:37
zebest, расползлись так, что гугл о них ничего не знает. Могли бы и поделиться, если упоминаете.
Нашел только FPGA тест. Даёт вот такое:
https://volutar.myds.me/fpga48-1.png
128k версия - аналогичный результат.
layout = classic48:448:312:64:56:64:16:64:8:132:256:192
layout = classic128:456:311:64:56:64:16:64:9:132:256:192

неустранимое смещение на одно знакоместо (при попытке переместить начало int - съезжают cont.mem тайминги на paper'е)

zebest
15.06.2021, 12:36
гугл о них ничего не знает.
гоголь он такой, ничего не знает (https://www.google.com/search?q=ula48+ula128&newwindow=1&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj-nd2pp5nxAhVupYsKHSTsDyQQ_AUoA3oECAEQBQ&biw=946&bih=518) - 9 картинок точно моих тестов)
у гиспанцеф тут точно есть
http://svn.zxuno.com/svn/zxuno
(или это тоже проблемы гуугла, что кто-то пароль не знает?)
поляки те ваще молодцы, еще и ROM версии сделали (https://drive.google.com/open?id=1oigApX5AFuBXIoBPDPC1Q_GhBHC5kDgy))
у чехов в образе для SD (https://drive.google.com/file/d/1pbgaDCcz9r6s6zfUZUQIfw5yUq95LdWH/view) не меньше десятка своих тестов насчитал, чо. zx128 точно есть
Хватит для начала??
зеленые квадраты называются FPGA48all.tap есичО.
вспомнил имя и пароль к испанцам:
guest
zxuno
http://svn.zxuno.com/svn/zxuno/software/tests/
scroll17.tap - тоже для проверки zx128

Dexus
15.06.2021, 12:59
1. Картинки в эмулятор не загрузишь
2. СВН пускает только "своих".
В ромах тапки нашлись
чешский образ в 153 мегабайта качать ради двух килобайт - не особо хорошее предложение.
Пусть будут хотя бы тут прямые ссылки: ula128 и ula48 (http://volutar.eu5.org/ula128_ula48.zip)

Хватит для начала??
Как и ожидалось - эти ula тесты работают с портами. А как выше было озвучено, Xpeccy тайминги замедленных портов пока не соблюдает.
fpga тесты дают плюс-минус нормальный результат, с небольшим отклонением. Скрин выше. shock megademo, break space с ангелом для 128к работают как ожидается (параметры layout выше). Для мултиколорных движков этого более чем достаточно. Все игры на nirvana/nirvana+ работают по таймингам как ожидается (порты внутри paper не используют). Но добивать до эталона, конечно, нужно.

zebest
15.06.2021, 13:07
fpga тесты дают плюс-минус нормальный результат, с небольшим отклонением.
Осетрина бывает только первой свежести, она же - последняя (с)
Тест или верно работает, или нет. Третьего не дано. Частично работающие как раз в тех 20%

Dexus
15.06.2021, 13:19
Третьего не дано.
Дано.

Полагаю, что это смещение в 8 пикселей (4 такта) из-за неточной реализации момента вывода в порт относительно начала опкода. В целом замедление по cont.memory работает корректно. корректность cont.io и не анонсировался (это еще только предстоит).

SAM style
19.06.2021, 23:18
build 20210619


Исправлена дешифрация адреса GS (теперь порты выбираются строго по ADR & 0xF7 == 0xB3)
Исправлена потерянная запись в порты ULA+
Опции: Заменен селектор частоты AY/YM
deBUGa: исправлен баг с точками останова
deBUGa: более строгое именование меток (должны начинаться с буквы или _ и не содержать $ или пробел)
deBUGa: ввод @label в поле адреса дизасма перекинет к метке, если она существует, но если не существует - новая создаваться не будет
deBUGa: добавлен список меток и переход по ним (Tools->Labels list или контекстное меню дизасма)
Дополнительные настройки внешнего вида деБУГера (Options->Xpeccy->deBUGa)


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210619) ]

Bedazzle
20.06.2021, 23:07
deBUGa: ввод @label в поле адреса дизасма перекинет к метке, если она существует, но если не существует - новая создаваться не будет


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

Rubts0FF
21.06.2021, 09:51
Вопрос или пожелание, какую кнопку/иконку надо/можно надавить, что бы создать пустой диск .trd, если такой кнопки нет, то хотелось бы, не запускать же всякий раз для этого FAR.

SAM style
21.06.2021, 10:30
Вопрос или пожелание, какую кнопку/иконку надо/можно надавить, что бы создать пустой диск .trd, если такой кнопки нет, то хотелось бы, не запускать же всякий раз для этого FAR.
Options->Storage->Disk, там есть кнопка создания пустого образа и вопрос, форматировать ли его под тырдос. При сохранении указать на новый файл *.trd

Grand
24.06.2021, 04:43
А у меня с версии 0.6.20210220 так (при попытке установки deb-пакета):

https://i.postimg.cc/GHbf8YSW/2021-06-11-22-39-25.png (https://postimg.cc/GHbf8YSW)

В чем может быть дело? Каких-то драйверов не хватает?

SAM style
24.06.2021, 08:15
В чем может быть дело? Каких-то драйверов не хватает?
Что за дистрибутив и как там называется пакет Qt5-OpenGL и его текущая версия? Его как раз и не находит. Решение - установить вручную. Если он не так называется, надо переделывать - я его в зависимостях именовал по-дебановски/убунтовски.
А вообще, проще из консоли:

dpkg -i xpeccy.deb ; тут полное название пакета
apt-get -f install

Grand
24.06.2021, 09:39
Что за дистрибутив ...?Linux Lite 5.0. Он на базе Debian. До этого случая все deb-пакеты нормально устанавливались, включая предыдущие версии XSpeccy.



как там называется пакет Qt5-OpenGL и его текущая версия?Не знаю. Как это узнать? Я Linux только осваиваю. :)



Решение - установить вручную.Тут проблема в том, что у меня сейчас нет дома и-нета, и on-line-обновления/установки мне недоступны. :(

SAM style
24.06.2021, 13:56
включая предыдущие версии XSpeccy.Да где вы там S всё время видите? :)

Не знаю. Как это узнать? Я Linux только осваиваюРаз он на базе дебиана, то должен быть synaptic - программа установки пакетов из репозитория, но при отсутствии интернетов оно может быть проблематично. Можно понакачивать пакетов отсюда (https://packages.debian.org/search?keywords=libqt5opengl5&searchon=names&suite=all&section=all), но убьёшься зависимости разруливать.

[bETA]mEN
26.06.2021, 13:04
Да где вы там S всё время видите? :)
:v2_eek:
12 лет спустя я увидел что в названии эмулятора нет S

Dexus
30.06.2021, 10:15
На 28.06.2021 автором закоммичены следующие изменения:
- Вернулась подсветка изменившихся регистров при вызове по F8 инструкций CALL/RST/DJNZ/LDIR и прочих, временно закрывающих окно эмулятора. Вообще при любом переоткрытии отладчика измененные регистры сейчас подсвечиваются.
- Исправлено выделение меток в новом окне меток.
- Исправлены прерывания в General Sound

Кастомная сборка под винду: https://volutar.myds.me/Xpeccy0.6.20210628b.zip
В этой сборке, помимо набора профилей и ромов:
- Подключен SDL2 вместо SDL, + сокращен аудио-буфер (уменьшен лаг).
- Игнорируются нажатия джойстика и шифтовых клавиш при не активном окне эмулятора.
- Добавлен маппинг Кемпстон-джойстика на клавиши.
- Немного уплотнены строки в отладчике/дампе.

SAM style
03.07.2021, 19:49
build 20210703


Исправлены прерывания GeneralSound, он снова звучит
Улучшены *.map файлы. Теперь для одной пк-кнопки можно задавать до 7 zx-кнопок и даже писать их в ряд: CSe или C2
А так же мапить кнопки на джойстик. Для этого в map файле нужно указывать JU/JD/JR/JL/JF/J2/J3/J4 для направлений и кнопок джойстика
И ещё починены перепутанные PGUP/PGDN
Период автоповтора при мапинге геймпада теперь 0 по умолчанию (нет автоповтора)
deBUGa: исправлено применение палитры

Под win32 сборка теперь осуществляется с SDL2 (dll включен в архив)
Под macosx собрано без OpenGL ибо у некоторых на хакинтошах тормозит... А вообще, пусть сами собирают как хотят :)

[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210703) ]

Dart Alver
19.07.2021, 23:40
build 20210703
Поставлен пакет xpeccy_0.6.20210703_x86_64.deb , хотя на заголовке почему-то показывает 0.6.20210702 , но я не об этом ))
Внезапно словил баг при пользовании дебаггера:
Если отладчик останавливается на команде HALT (по нажатию ESC в моём случае), то при выходе из дебаггера, прерывания оказываются запрещены и прога виснет.

Dexus
19.07.2021, 23:48
Dart Alver, новее сборка нужна. Там был такой баг, уже пофикшено.

Dart Alver
20.07.2021, 00:34
Dart Alver, новее сборка нужна
Новее сборки автор не выкладывал. Эта последняя пока что.

Dexus
20.07.2021, 10:54
Я могу только выложить виндовую сборку с пофикшенным отладчиком, и всякими другими новыми штуками https://volutar.myds.me/Xpeccy0.6.20210718.zip

SAM style
20.07.2021, 17:23
build 20210720


Улучшено заполнение звукового буфера
Для MacOSX добавлены кнопки с нампада, должно работать
deBUGa: исправлена порча регистров CPU
deBUGa: добавлен чекбокс для накопления тактов в процессе трейса. При его установке счетчик обнуляется.
deBUGa: для дизасма и дампа добавлены полосы прокрутки
deBUGa: для дампа диска добавлено отображение в ascii и выделение байта, над которым находится голова
NES: починены сломанные тайминги
NES: реализованы биты подавления цветов через регистр 1 PPU


[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20210720) ]

gorus13
06.08.2021, 09:00
интересные последние 2 сборки )
на pc белый экран, на mac - черный. при том менюшки на F кнопки нормально показывает, но картинку не рендерит вообще.
перепробовал все варианты ромов zx что были (

SAM style
06.08.2021, 09:40
интересные последние 2 сборки )
А третья с конца работает? :| Что за видяха?

Rubts0FF
09.08.2021, 11:56
Я ..., нет слов, PGUP/PGDN поменяйте местами.

SAM style
09.08.2021, 14:58
Я ..., нет слов, PGUP/PGDN поменяйте местами.
Падажжжите. Я же поменял, это раньше они были перепутаны. И это было до последней сборки. Или я чего-то не знаю?

Rubts0FF
09.08.2021, 18:51
Падажжжите. Я же поменял, это раньше они были перепутаны. И это было до последней сборки. Или я чего-то не знаю?
С точностью до наоборот. Для тех кто исключительно играет в игры это не важно. Я наверное единственный .. остался, кто пишет на спектруме, ну да в эмуляторе, и нажимаю очень много кнопок, может быть все. Эту версию запустил и не пользовался, в гараже нашел старый ящик и несколько .. дней, реанимировал, и там Шалаев работает без VMware, в общем баловался. А тут запустил на ноуте, да что за фигня, на "старшем брате", настольном то же самое. А где это поменять не нашел.

SAM style
09.08.2021, 18:59
Было такое: в map-файле написано PGUP, а действовало оно на PageDown и наоборот. Поэтому кнопки поменялись.

А где это поменять не нашел
Если сугубо спектрумовская клава (CS+3/CS+4), то в директории конфигов делаешь файл (любоеназвание).map следующего содержания:
PGUP C4
PGDN C3(между названиями должен быть Tab) Ну или наоборот, как тебе удобно. C4 значит Caps+4, C3 соотвтетсвенно Caps+3. В настройках на вкладке Input выбираешь этот файл из списка и спокойно пользуешься.

gorus13
10.08.2021, 11:57
А третья с конца работает? :| Что за видяха?

перепроверил
на PC через раз белый экран. помогает перезагрузка - Radeon RX 6800XT
на маке ни разу не добился картинки - все время черный экран. - macbook pro 15

Rubts0FF
10.08.2021, 16:15
Было такое: в map-файле написано PGUP, а действовало оно на PageDown и наоборот. Поэтому кнопки поменялись.
Не знаю что там было, работало правильно. Ладно, есть у меня файл с моими кнопками, они стати уже пол-года не менялись, кочует из версии в версию, посмотрю что там сделать.

SAM style
10.08.2021, 17:51
Не знаю что там было, работало правильно
Давайте поможем Саше-программисту найти опечатку в коде:
{"PGDN",XKEY_PGUP,{'C','3'},{'m'|0x80,0},{MSXK_CODE,0},{0 x75,0x49},0x7de0},
{"PGUP",XKEY_PGDN,{'C','4'},{'n'|0x80,0},{MSXK_SEL,0},{0x 74,0x51},0x7ae0},(это было до 20210701)
Не исключаю, что в ходе починки было сломано ещё что-то... :v2_dizzy_botan:

Bedazzle
10.08.2021, 21:45
интересные последние 2 сборки )
на pc белый экран, на mac - черный.


У меня на вин7 белый экран в последней сборке :( копирнул конфиг с апрельской, где всё чудесно работает - не помогло.

SAM style
10.08.2021, 22:43
У меня на вин7 белый экран в последней сборке
Я же ничего там не менял относительно вывода на экран. Как это так это? Не может же быть, что с февраля (переход на OpenGL) у всех белый экран, а выяснилось это только сейчас.
PS: Ради следственного эксперимента - когда белый экран, сколько процесс кушает? Если отъедает ядро+ещё немного, то есть одно подозрение...

Bedazzle
11.08.2021, 00:17
Я же ничего там не менял относительно вывода на экран. Как это так это? Не может же быть, что с февраля (переход на OpenGL) у всех белый экран, а выяснилось это только сейчас.
PS: Ради следственного эксперимента - когда белый экран, сколько процесс кушает? Если отъедает ядро+ещё немного, то есть одно подозрение...


Полтора-два процента.

Эта у меня с апреля работала нормально.

https://i.imgur.com/m57A9Jo.png


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

https://i.imgur.com/5CqPHaZ.png

SAM style
11.08.2021, 09:38
Полтора-два процента.
Звук при этом открывается? В настройках вывод не NULL? А то заметил тут одну неприятность... Если подтвердится, вернусь обратно на SDL1