Вход

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



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

MetalliC
02.06.2020, 16:09
Падажжи, i8080 как и Z80 стартует с адреса 0. Как это так? Проходит всю ОЗУ до #C000, чтобы стартовать ROM? Или я чего-то не знаю?
оно там автомагическое - при сбросе на 0 мапится ПЗУ из C000, и затем через десяток миллисекунд тоже само отмапливается.
детали уже не помню, смотри по схеме линию сброса.

edit: а не, соврал, иначе оно там, банкинг управляется ВВ55 портом C 5м битом

SAM style
02.06.2020, 17:07
при сбросе на 0 мапится ПЗУ из C000
Ага, у меня тоже была такая мысль. Похоже на GB/GBC, там тоже при сбросе на 0 мапится boot-rom, но после прохода удаляется из адресного пространства до следующего сброса. ОК, будем читать дальше...

MetalliC
02.06.2020, 17:50
нене, я ж поправился потом - это дело управляется битиком с ВВ55, по сбросу порты обнуляются и переводятся в режим ввода, т.е. для подключенной к ним логики будет читаться 1 = на 0000 мапится ПЗУ, выполняется код, прыгает в Сххх и переводит порт С ВВ55 в режим вывода - с того бита выводится 0 = на 0000 мапится ОЗУ

NEO SPECTRUMAN
02.06.2020, 21:33
выполняется код, прыгает в Сххх и переводит порт С ВВ55 в режим
как всегда столько муторни с этим вышим не запуском с $0000
нет чтоб было сделать просто отключаемое пзу

MetalliC
02.06.2020, 21:53
так они его и сделали, вкл/откл битом порта. если уж быть совсем точным - там получается две разблюдовки памяти,
когда бит установлен (после ресета) она такая:
0000 ПЗУ
3800 ВВ55
4000 ПЗУ
7800 ВВ55
8000 ПЗУ
B800 ВВ55
С000 ПЗУ
F800 ВВ55
т.е. ПЗУ и ВВ55 отзеркалены 4 раза а ОЗУ нет ваще. ну а после сброса бита становится уже нормальная
0000 ОЗУ (48К)
С000 ПЗУ
F800 ВВ55

NEO SPECTRUMAN
02.06.2020, 22:40
так они его и сделали,
в упор не сделали
пзу можно было делать по $0000
а для мерзких цпмэмов (который писалсо под не менее мерзкое гафно)
можно было бы подменять его рамай
как раз тем битом порта...

как всегда упростили не там...
а так где просто нагородили...

Lethargeek
02.06.2020, 23:25
SAM style, всё забываю спросить - а почему fast режим (который кнопкой insert) какой-то не очень fast? это искусственное ограничение или быстрее не получилось?
если не получилось, то почему? а если искусственно ограничено, то нельзя ли хотя бы ставить другой множитель, когда запущена лента, а то долговато загрузки ждать

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

или, может, где-то есть настройка, которую не вижу?

SAM style
03.06.2020, 00:43
SAM style, всё забываю спросить - а почему fast режим (который кнопкой insert) какой-то не очень fast? это искусственное ограничение или быстрее не получилось?
если не получилось, то почему? а если искусственно ограничено, то нельзя ли хотя бы ставить другой множитель, когда запущена лента, а то долговато загрузки ждать
- - - Добавлено - - -
или, может, где-то есть настройка, которую не вижу?
Фаст делается отменой пауз между заполнениями буфера звука. Т.е поток эмуляции на 1 ядре разгоняется насколько ему хватает мощей. А потому как сделано всё довольно громоздко, разгон получается не очень быстрым. Хотя, на других машинах разгоняется побыстрее - это можно посмотреть, включив показ FPS.

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


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

Lethargeek
03.06.2020, 01:26
Фаст делается отменой пауз между заполнениями буфера звука.
эээ, то есть буфер заполняется всё равно? звука нету же... :v2_blink:


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

CityAceE
03.06.2020, 02:39
вкл/откл битом порта
Это получается, что программным путём через программирование ВВ55А можно отключить ОЗУ?

NEO SPECTRUMAN
03.06.2020, 02:47
Это получается, что программным путём через программирование ВВ55А можно отключить ОЗУ?
даже если получается то вернуться назад будет тяжело
по крайней мере найти такое место в ПЗУ через которое можно будет включить обратно ОЗУ и передать обратно управление
да и смысол такого пируэта тяжело найти

MetalliC
03.06.2020, 04:41
Это получается, что программным путём через программирование ВВ55А можно отключить ОЗУ?
да, ВВ55 порт С бит 4 (т.е. 5ый) переключает дешифрацию.
но, чтоб это правильно работало в эмуляторе нужна корректная эмуляция ВВ55 и его режимов, то есть по сбросу порты должны устанавливаться в режим ввода = высокоимпедансное состояние = равнозначно выводу в них FF. а при переводе в режим вывода уже выводится значение из порта (и там 0 после сброса).
короче на старте эти переключения делаются не "нормально" через собсно вывод данных в порт С, а манипуляциями с регистром режима.

CityAceE
03.06.2020, 05:09
Поистине, удивительное рядом! Спустя столько лет для меня открываются такие интересные подробности! Никогда ранее даже намека не встречал на такой функционал ВВ55А в Специалисте. При этом незнание данной информации позволило написать мне вполне себе работоспособный эмулятор Специалиста. Понятное дело, что если бы существовал какой-то софт, который использует данный функционал, то он бы на моём эмуляторе не заработал. Но я даже предположить не могу, как это можно задействовать или хотя бы проверить. Ну, разве что написать специальное тестовое ПЗУ, которое будет проверять эту фичу. А что, любопытная задача для тестирования эмуляторов :)

NEO SPECTRUMAN
03.06.2020, 09:38
или хотя бы проверить.
да проверить легко
тяжело написать сам тест

нужно найти в "зеркальной" ПЗУ-шке адрес по которому выводится значение в порт а потом ret

найти адрес по которому в A будет занесено нужно значение для включение обратно ОЗУ а потом ret

найти последовательность в ПЗУ
на которую мы укажем стеком
чтоб можно было переходить ret-ами по разным частям ПЗУ

затем размещаем выключалку ОЗУ так чтоб сразу после выключения
следующей командой был ret на занесение в A значений для порта
после которого следующий ret бы давал переход на вывод в порт
а следующий ret передавал бы управление обратно в ОЗУ
с выводом надписи "тест пройден"

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

CityAceE
03.06.2020, 09:40
тяжело написать сам тест
Я имел ввиду тест, который будет размещаться в ПЗУ, то есть тестовую ПЗУ, типа популярного на Специалисте теста Рюмика.

NEO SPECTRUMAN
03.06.2020, 09:47
который будет размещаться в ПЗУ
ну программка для тестирования будет куда интересней
чем тест в ПЗУ

сделать тест для ПЗУ это тьфу...

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

а потом как всегда окажется что какой нибудь очередной специалист на фпга сразу стартует с $C000
и никакого включения ОЗУ в нем нет...

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

хотя нужно эмулировать

чтоб программы срущие по всем подряд портам
зависали нахрен изза отключения ОЗУ :)

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

SAM style
03.06.2020, 15:57
но, чтоб это правильно работало в эмуляторе нужна корректная эмуляция ВВ55 и его режимов
Вот насчет режимов... Кроме как в режиме 0 (простой ввод-вывод) Специалист использует ВВ55? Потому как по схемам ничего для остальных режимов никуда не присоединено.

И какую клаву там делать? QWERTY/ЯВЕРТЫ или JCUKEN/ЙЦУКЕН? Либо английский, либо русский будут не на своих местах

MetalliC
03.06.2020, 17:56
ВВ55 - в принципе вообще можно ее током не мулить а хаковые хендлеры прикрутить для жестко заданных режимов. но, если ты собираешься делать типа мульти-системный фреймворк, то наличие полноценного компонента i8255/ВВ55 может быть полезно.

на счет клавы не в курсе

CityAceE
03.06.2020, 18:13
И какую клаву там делать? QWERTY/ЯВЕРТЫ или JCUKEN/ЙЦУКЕН? Либо английский, либо русский будут не на своих местах
У Специалиста нет порта джойстика и есть игры, где управление жёстко привязано к некоторым буквенным клавишам, например ITXB@. Если изменить раскладку на привычную QWERTY, то такими играми будет управлять нереально.



Отправлено с моего SM-G955F через Tapatalk

NEO SPECTRUMAN
03.06.2020, 21:16
И какую клаву там делать? QWERTY/ЯВЕРТЫ или JCUKEN/ЙЦУКЕН?
да как всегда нужно и ту и ту переключаемо
чтоб на одной вводить текст
на другой играть

SAM style
05.06.2020, 11:02
А мне тут ещё подумалось в процессе... по идее в специалисте можно сделать A и половинку C на вывод, B на ввод и сканировать клаву через ж... в обратном направлении - в A и C выставлять биты столбцов, а с B получать маску строк, в которых эти столбцы нажаты?

Serg6845
05.06.2020, 11:28
А мне тут ещё подумалось в процессе... по идее в специалисте можно сделать A и половинку C на вывод, B на ввод и сканировать клаву через ж... в обратном направлении - в A и C выставлять биты столбцов, а с B получать маску строк, в которых эти столбцы нажаты?

более того - это активно используется. и в эмуляторах где этот режим не поддержан - работает далеко не все.
(а еще такой способ опроса позволяет оный опрос существенно ускорить, не перебирая строки/столбцы)

CityAceE
05.06.2020, 12:38
получать маску строк, в которых эти столбцы нажаты?
Главное, потом всё проверить тестом Рюмика :)

SAM style
05.06.2020, 22:52
А вот теперь самое интересное. У меня специалиста не было никогда, как с ним работать - я не знаю. Что получилось на данный момент: он запускается, выводит PROGRAM ? и, если верить дебугеру, начинает ждать сигнал с мофона. Если это всё, что монитор в 2Кб умеет, тогда следующий вопрос - где почитать про сигнал с ленты и форматы файлов ленты (какой-нибудь *.tap). А если это не всё - то что должно быть?

CityAceE
06.06.2020, 03:40
А если это не всё - то что должно быть?
Для минимальной работы компьютера нужна только ПЗУшка на 2 кБ - Загрузчик (http://www.spetsialist-mx.ru/Soft/root1.rar) (#C000-C7FF). Как следует из названия, её главная задача - инициализировать компьютер и загрузить программу. Однако в такой конфигурации никто компьютер не использовал и всегда ставили ещё одну ПЗУшку - Монитор (http://www.spetsialist-mx.ru/Soft/monitor2_2.rar) (#C800-CFFF). Прочитать про директивы Монитора можно в статье (http://www.spetsialist-mx.ru/Docs/mk1988_09.djvu) из Моделиста-Конструктора. Чтобы попасть в Монитор после сброса компьютера, нужно нажать одну из функциональных клавиш, например, F1 и далее ВК (Enter). После этого можно вводить директивы монитора.

Заранее загруженную в память программу можно запустить с помощью директивы монитора G. Подавляющее большинство программ загружаются по нулевому адресу, поэтому запускаются с помощью G + ВК. В процессе эмуляции недостаточно сразу после сброса компьютера заполнить память данными программы и передать ей управления. Предварительно необходимо инициализировать переменные Монитора. Хотя некоторые программы всё-таки будут работать и без инициализации Монитора. Например, игра ZOO запустится, но будет испорчен знакогенератор.

Работу эмулятора удобно отлаживать с помощью теста Рюмика (http://www.spetsialist-mx.ru/Soft/test_m.rar) и игры ZOO (http://www.spetsialist-mx.ru/Games/games1_rks.rar), которая после загрузки и запуска сразу переходит в демо-режим.

Программы для эмуляторов Специалиста распространяются в формате *.rks. Формат очень простой: первые два байта - адрес загрузки, вторые два байта - длина блока данных без контрольной суммы, далее дамп памяти и, наконец, последние два байта - контрольная сумма (https://zx-pk.ru/threads/30021-konvertor-zx-kartinok-dlya-spetsialista.html?p=996637&viewfull=1#post996637). Формат кодирования сигнала на ленте такой же, как в Радио-86РК.

SAM style
06.06.2020, 11:58
Формат кодирования сигнала на ленте такой же, как в Радио-86РК.Очевидно, какой вопрос будет следующим, да? :D А в радио86к какой?

CityAceE
06.06.2020, 12:12
А в радио86к какой?
Я думал, что эта информация (http://mk90.org/wiki/index.php/TapeFormatRK86) легко находится.
http://archive.radio.ru/web/img/1983/f.1983-09.035.jpg (http://archive.radio.ru/web/img/1983/f.1983-09.035.jpg)
стр.33 (http://archive.radio.ru/web/img/1983/f.1983-09.036.jpg), стр.34 (http://archive.radio.ru/web/img/1983/f.1983-09.037.jpg), стр.35 (http://archive.radio.ru/web/img/1983/f.1983-09.038.jpg).

SAM style
06.06.2020, 22:57
Я чего-то не понимаю. Протрейсил до момента, когда код проверяет нажатую кнопку на старте. До этого в ВВ55 были такие вводы-выводы:
0xc008 : в контрольный регистр 0x82 - A и C на вывод, B на ввод
0xc37c : чтение с B, запоминание бита 0 (сигнал с ленты)
0xc387 : чтение с B, проверка '<0x80', т.е что бит 7 сброшен (нажата кнопка)
Ни в А, ни в С никаких выводов не было. Т.е они такие же, как во время сброса - FF (или тут я ошибаюсь?). Ни один столбец не сканируется, в B все линии клавы установлены. Что он там проверяет?

CityAceE
07.06.2020, 03:40
Я чего-то не понимаю.
Я со всем этим разбирался полтора года назад и, к сожалению, больше, чем написал в заметке сейчас уже не скажу. Опять же призываю сюда ivagor - в его светлой голове, как всегда, должны быть ответы на все вопросы :) Единственное, могу посоветовать как делал я: запускал параллельно свой эмулятор и Emu80 (https://zx-pk.ru/threads/27488-emu80-v-4.html), пошагово шёл там и там, и сравнивал где что отличается.

Похоже, что у тебя повторяется моя ситуация. Я без клавиатуры запустил ZOO и пребывал в эйфории от того, что всё заработало. Думаю, сейчас вот быстро клавиатуру прикручу и готово. Ага, как же! С клавиатурой я, наверное, дольше всего промаялся. Даже когда уже всё в Мониторе и играх заработало, тест Рюмика глючил - вот здесь мне ivagor сильно помог. Почитай переписку (https://zx-pk.ru/threads/29897-spycialist-emulyator-pk-spetsialist-na-python/page3.html) по поводу эмуляции клавиатуры - возможно, она натолкнёт на правильные мысли. Плюс там ivagor несколько своих простых тестов прилагал для проверки портов клавиатуры.

ivagor
07.06.2020, 06:42
Настоящие светлые головы с уклоном в программные вопросы по специалисту и ВВ55 - b2m и Pyk, в аппаратные - HardwareMan, но они возможно не читали эту тему. По-моему в той теме (https://zx-pk.ru/threads/29897-spycialist-emulyator-pk-spetsialist-na-python/page5.html) все написано или по крайней мере есть ссылки в нужные места.
Если вопрос конкретно про

Я чего-то не понимаю. Протрейсил до момента, когда код проверяет нажатую кнопку на старте. До этого в ВВ55 были такие вводы-выводы:
0xc008 : в контрольный регистр 0x82 - A и C на вывод, B на ввод
0xc37c : чтение с B, запоминание бита 0 (сигнал с ленты)
0xc387 : чтение с B, проверка '<0x80', т.е что бит 7 сброшен (нажата кнопка)
Ни в А, ни в С никаких выводов не было. Т.е они такие же, как во время сброса - FF (или тут я ошибаюсь?). Ни один столбец не сканируется, в B все линии клавы установлены. Что он там проверяет?
то тут надо бы поискать в даташите, но я процитирую по книжке Щелкунов Дианов "Микропроцессорные средства и системы" М.:Радио и связь, 1989 (стр. 99): "При записи нового управляющего слова все буферные регистры портов устанавливаются в 0.". Плюс можно глянуть исходник тестика (https://zx-pk.ru/threads/29897-spycialist-emulyator-pk-spetsialist-na-python.html?p=993325&viewfull=1#post993325) и сравнить его работу с emu или emu80.

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

Еще в теме про эмуляцию вектора была дискуссия по некоторым тонкостям ВВ55, примерно начиная отсюда (https://zx-pk.ru/threads/8634-vektor-06ts-emulyatsiya.html?p=943186&viewfull=1#post943186), но это уже скорее всего лишнее.

SAM style
07.06.2020, 12:13
Что-то начало налаживаться. Но лучше мне сразу рассказать, как каноничнее мапить PC-клаву на специалистовую (т.е каким кнопкам тут какие кнопки там соответствуют), а то я сейчас сделаю по-своему, а потом полгода буду рассказывать, как свою карту клавы делать.
http://samstyle.narod.ru/xpeccy/spclst_20200607.png
А. И ещё - какой-то кнопкой инвертятся символы. Как их обратно разинвертить?

CityAceE
07.06.2020, 12:32
как каноничнее мапить PC-клаву на специалистовую (т.е каким кнопкам тут какие кнопки там соответствуют)
Я задавал тот же вопрос, но ответа так и не получил. В итоге сделал по-своему. В файле, который я выкладывал выше, можно посмотреть мою раскладку:



keys = {
# Key [ C O L U M N ] [ R O W ]
282: [0b1000, 0b00000000, 0b10000000], # F - F1
283: [0b0100, 0b00000000, 0b10000000], # HELP - F2
284: [0b0010, 0b00000000, 0b10000000], # NEW - F3
285: [0b0001, 0b00000000, 0b10000000], # LOAD - F4
286: [0b0000, 0b10000000, 0b10000000], # SAVE - F5
287: [0b0000, 0b01000000, 0b10000000], # RUN - F6
288: [0b0000, 0b00100000, 0b10000000], # STOP - F7
289: [0b0000, 0b00010000, 0b10000000], # CONT - F8
290: [0b0000, 0b00001000, 0b10000000], # EDIT - F9
291: [0b0000, 0b00000100, 0b10000000], # СФ - F10
292: [0b0000, 0b00000010, 0b10000000], # ТФ - F11
293: [0b0000, 0b00000001, 0b10000000], # НФ - F12

61: [0b1000, 0b00000000, 0b01000000], # ; + - +
49: [0b0100, 0b00000000, 0b01000000], # 1 ! - 1
50: [0b0010, 0b00000000, 0b01000000], # 2 " - 2
51: [0b0001, 0b00000000, 0b01000000], # 3 # - 3
52: [0b0000, 0b10000000, 0b01000000], # 4 $ - 4
53: [0b0000, 0b01000000, 0b01000000], # 5 % - 5
54: [0b0000, 0b00100000, 0b01000000], # 6 & - 6
55: [0b0000, 0b00010000, 0b01000000], # 7 ' - 7
56: [0b0000, 0b00001000, 0b01000000], # 8 ( - 8
57: [0b0000, 0b00000100, 0b01000000], # 9 ) - 9
48: [0b0000, 0b00000010, 0b01000000], # 0 - 0
45: [0b0000, 0b00000001, 0b01000000], # - = - -

113: [0b1000, 0b00000000, 0b00100000], # Й J - Й
119: [0b0100, 0b00000000, 0b00100000], # Ц C - Ц
101: [0b0010, 0b00000000, 0b00100000], # У U - У
114: [0b0001, 0b00000000, 0b00100000], # К K - К
116: [0b0000, 0b10000000, 0b00100000], # Е E - Е
121: [0b0000, 0b01000000, 0b00100000], # Н N - Н
117: [0b0000, 0b00100000, 0b00100000], # Г G - Г
105: [0b0000, 0b00010000, 0b00100000], # Ш [ - Ш
111: [0b0000, 0b00001000, 0b00100000], # Щ ] - Щ
112: [0b0000, 0b00000100, 0b00100000], # З Z - З
91: [0b0000, 0b00000010, 0b00100000], # Х H - H
93: [0b0000, 0b00000001, 0b00100000], # : * - Ъ

97: [0b1000, 0b00000000, 0b00010000], # Ф F - Ф
115: [0b0100, 0b00000000, 0b00010000], # Ы Y - Ы
100: [0b0010, 0b00000000, 0b00010000], # В W - В
102: [0b0001, 0b00000000, 0b00010000], # А A - А
103: [0b0000, 0b10000000, 0b00010000], # П P - П
104: [0b0000, 0b01000000, 0b00010000], # Р R - Р
106: [0b0000, 0b00100000, 0b00010000], # О O - О
107: [0b0000, 0b00010000, 0b00010000], # Л L - Л
108: [0b0000, 0b00001000, 0b00010000], # Д D - Д
59: [0b0000, 0b00000100, 0b00010000], # Ж V - Ж
39: [0b0000, 0b00000010, 0b00010000], # Э \ - Э
92: [0b0000, 0b00000001, 0b00010000], # . > - \

122: [0b1000, 0b00000000, 0b00001000], # Я Q - Я
120: [0b0100, 0b00000000, 0b00001000], # Ч ^ - Ч
99: [0b0010, 0b00000000, 0b00001000], # С S - С
118: [0b0001, 0b00000000, 0b00001000], # М M - М
98: [0b0000, 0b10000000, 0b00001000], # И I - И
110: [0b0000, 0b01000000, 0b00001000], # Т T - Т
109: [0b0000, 0b00100000, 0b00001000], # Ь X - Ь
44: [0b0000, 0b00010000, 0b00001000], # Б B - Б
46: [0b0000, 0b00001000, 0b00001000], # Ю @ - Ю
47: [0b0000, 0b00000100, 0b00001000], # , < - ?
303: [0b0000, 0b00000010, 0b00001000], # / ? - Right Shift
8: [0b0000, 0b00000001, 0b00001000], # ЗБ - Backspace

306: [0b1000, 0b00000000, 0b00000100], # НРФ - Left Ctrl
278: [0b0100, 0b00000000, 0b00000100], # HOME - Home
273: [0b0010, 0b00000000, 0b00000100], # ВВЕРХ - Up
274: [0b0001, 0b00000000, 0b00000100], # ВНИЗ - Down
000: [0b0000, 0b10000000, 0b00000100], #
000: [0b0000, 0b01000000, 0b00000100], #
32: [0b0000, 0b00100000, 0b00000100], # ПРОБЕЛ - Space
276: [0b0000, 0b00010000, 0b00000100], # ВЛЕВО - Left
307: [0b0000, 0b00001000, 0b00000100], # ПВ - Rigth Alt
275: [0b0000, 0b00000100, 0b00000100], # ВПРАВО - Right
281: [0b0000, 0b00000010, 0b00000100], # ПС - PageDown
13: [0b0000, 0b00000001, 0b00000100], # ВК - Enter

304: [0b0000, 0b00000000, 0b00000010]} # НР - Left Shift




И ещё - какой-то кнопкой инвертятся символы. Как их обратно разинвертить?

Кнопками правее кнопки EDIT (F10-F12) можно управлять инвертированием:

http://www.spetsialist-mx.ru/images/keyboard1.png

NEO SPECTRUMAN
07.06.2020, 12:46
кстате на эмуверсе

Порт A

левые 8 горизонтальных линий из 12 матрицы клавиатуры (ввод/вывод)

Порт B

биты D2..D7: 6 вертикальных линий матрицы клавиатуры (ввод/вывод)
бит D1: клавиша <НР> (0 если нажата)
бит D0: ввод с магнитофона

Порт C

биты D0..D3: правые 4 горизонтальные линии из 12 матрицы клавиатуры
бит D4: триггер НП (начальный пуск). По сбросу =0 и всё адресное пространство ПЗУ
бит 5: выход звука
бит 6: без цвета не используется (бит регистра цвета при цветном адаптере)
бит 7: выход на магнитофон (бит регистра цвета при цветном адаптере)

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

Порты A, младшая половина C и B программируются на ввод. Нажатая клавиша определяется по положению нулей в обоих портах. Нажатая клавиша располагается на пересечении положения нулей.
Порт A и младшая половина C программируются на вывод, порт B — на ввод. Осуществляется сканирование методом бегущего «0» путем записи в порты A и C и анализа порта B.
Порт A и младшая половина C программируются на ввод, порт B — на вsвод. Осуществляется сканирование методом бегущего «0» путем записи в порт B и анализа портов A и C.

Обычно в программах используется только первый вариант. Два других варианта со сканированием бегущим нулём из-за отсутствия диодов (что есть в матрице РК86) чреваты выходом из строя ППА ВВ55, т.к создают КЗ выходов ППА, к тому же на порядок более медленные и даже, если ППА не выйдет из строя могут давать непредсказуемый результат.



клавиатурку еще можно сравнить с оригинальной статьей
http://emuverse.ru/w/images/5/55/MK-03-87-Specialist-02-05.png

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

CityAceE, а что значит диагональная стрелка?

CityAceE
07.06.2020, 12:48
а что значит диагональная стрелка?
Если я ничего не путаю, это аналог HOME.

SAM style
07.06.2020, 13:33
На схемах в матрице клавы между кнопками "вниз" и "пробел" есть ещё tab и esc, а на картинках нижнем ряду 10 кнопок при матрице в 12 колонок. HP идёт отдельным рядом (кстати, зачем она нужна?)

CityAceE
07.06.2020, 13:37
На схемах в матрице клавы между кнопками "вниз" и "пробел" есть ещё tab и esc, а на картинках нижнем ряду 10 кнопок при матрице в 12 колонок.
В классической схеме эти кнопки никак не используются, хотя их, действительно, можно подключить и опрашивать. Например монитор SP-580 эти кнопки как раз использовал и, возможно, как ты и написал. Но я точно не помню, помню только что я их подключал.


HP идёт отдельным рядом (кстати, зачем она нужна?)
Да, и из-за этого с её эмуляцией настоящий гемор :) Это Нижний Регистр - аналог Shift.

Black Cat / Era CG
07.06.2020, 18:13
Я тут просто напишу, а то у меня тема из новых сообщений не исчезает.

SAM style
07.06.2020, 18:49
Вот кстати ещё по формату сигнала с мофона. Поразбирал загрузчик. Он пропускает 255 сигналов (типа пилот), причем начиная с последних 8 бит этого пилота уже принимает старт и конечный адрес. Ни про какой "синхробайт E6", как написано тут (http://mk90.org/wiki/index.php/TapeFormatRK86), он слухом не слухивает...
А ещё, если покачать файлы отсюда (http://www.spetsialist-mx.ru/index6.html), там какой-то совсем другой rks - в начале d6,d6,d6,имя файла, куча нулей...
И ещё бы чем CPU потестировать. Уже вырвал оттуда кучу багов, но, кажется, есть ещё, и немало.
PS:что-то работает, что-то нет
http://samstyle.narod.ru/xpeccy/xpeccy_201909_712.png

NEO SPECTRUMAN
08.06.2020, 00:52
Я тут просто напишу, а то у меня тема из новых сообщений не исчезает.
а у меня как раз наконецто исчезла

CityAceE
08.06.2020, 03:43
Вот кстати ещё по формату сигнала с мофона. Поразбирал загрузчик. Он пропускает 255 сигналов (типа пилот), причем начиная с последних 8 бит этого пилота уже принимает старт и конечный адрес. Ни про какой "синхробайт E6", как написано тут, он слухом не слухивает...
Так там и не было написано конкретно про формат RKS. Именно про RKS я в сообщении выше написал:


Программы для эмуляторов Специалиста распространяются в формате *.rks. Формат очень простой: первые два байта - адрес загрузки, вторые два байта - длина блока данных без контрольной суммы, далее дамп памяти и, наконец, последние два байта - контрольная сумма (https://zx-pk.ru/threads/30021-konvertor-zx-kartinok-dlya-spetsialista.html?p=996637&viewfull=1#post996637).

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


А ещё, если покачать файлы отсюда, там какой-то совсем другой rks - в начале d6,d6,d6,имя файла, куча нулей...
Скорее всего ты качаешь программы для Лика или программы на бейсике - там формат несколько отличается от стандартного RKS.


И ещё бы чем CPU потестировать. Уже вырвал оттуда кучу багов, но, кажется, есть ещё, и немало.
Тут без 8080 CPU Exerciser (https://zx-pk.ru/threads/26438-spetsialist-emulyatsiya.html?p=991947&viewfull=1#post991947) никуда!

Black Cat / Era CG
08.06.2020, 07:18
а у меня как раз наконецто исчезла
У меня тоже, после того, как в нее написал.

michellekg
08.06.2020, 11:25
Поставил последнюю версию, в настройках переключился на БК0010, программа сразу вылетела и больше не запускается — вылетает с ошибкой. Куда слать лог и что делать?

SAM style
08.06.2020, 15:03
Поставил последнюю версию, в настройках переключился на БК0010, программа сразу вылетела и больше не запускается — вылетает с ошибкой. Куда слать лог и что делать?Сюда присобачь. Если есть - вывод в консоль. И сам файл конфига (config/<название_профиля>.conf)

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


Тут без 8080 CPU Exerciser никуда!
Ничего кроме mov и lxi не проходит :D Странно, что даже lhld не прошло - оно же вообще на флаги не влияет... Кстати, что в i8080 "просвечивает" в незанятые биты флагов?

CityAceE
08.06.2020, 15:33
Кстати, что в i8080 "просвечивает" в незанятые биты флагов?
У меня сделано так:


reg_f[0] = reg_f[0] & 0b11010111 | 0b00000010 # Flags n, 3 & 5

SAM style
08.06.2020, 15:39
reg_f[0] = reg_f[0] & 0b11010111 | 0b00000010 # Flags n, 3 & 5
Хм... где-то читал, что 1й бит всегда установлен (то место, где у Z80 флаг N). Возможно, и из-за этого...
PS: из-за этого, но вылечилось где-то треть команд. У остальных всё равно расхождение. Вот где тут что не так? sz53pTab взята из Z80, оттуда берутся S,Z,P, потому что выполняют абсолютно такие же функции

unsigned char iop_inr(CPU* cpu, unsigned char val) {
val++;
cpu->f &= ~(IFL_S | IFL_Z | IFL_A | IFL_P);
cpu->f |= (sz53pTab[val] & (IFL_S | IFL_Z | IFL_P));
if ((val & 0x0f) == 0x00) cpu->f |= IFL_A;
return val;
}

unsigned char iop_dcr(CPU* cpu, unsigned char val) {
val--;
cpu->f &= ~(IFL_S | IFL_Z | IFL_A | IFL_P);
cpu->f |= (sz53pTab[val] & (IFL_S | IFL_Z | IFL_P));
if ((val & 0x0f) == 0x0f) cpu->f |= IFL_A;
return val;
}

# 5,3,1 биты устанавливаются уже после выполнения любой команды:
...
cpu->op->exec(cpu);
cpu->f &= ~(IFL_5 | IFL_3);
cpu->f |= IFL_1;
...

Lethargeek
08.06.2020, 19:40
sz53pTab взята из Z80, оттуда берутся S,Z,P, потому что выполняют абсолютно такие же функции
а вот и нет, в 8080 parity - всегда parity, а в z80 после арифметики - overflow

SAM style
08.06.2020, 20:26
В таблице - именно parity, когда он overflow, считается отдельно

Lethargeek
14.06.2020, 02:00
build 20200601

Исправлено формирование INT-а
Добавлен хоткей для переключения турбы CPU
На тестовой основе добавлено отображения тактов от INT'а до HALT'а, включается в Options/Xpeccy/Leds
Тоже в тестовом режиме MSX'ы могут грузить с ленты, эмулятор понимает файлы *.cas. Данные грузятся верно, но что потом случается - для меня загадка, как будто не под тот MSX было писано...
Для БК дамп показывает слова в 8-ричном отображении, так же как и регистры.
...и оказывается, поломан sprite scanner - не обновляется при изменении адреса (включая прокрутку) :(

SAM style
14.06.2020, 10:31
...и оказывается, поломан sprite scanner - не обновляется при изменении адреса (включая прокрутку)
Там всё поломалось, что реагирует на изменение модифицированных полей ввода. Нашёл.

gorus13
16.06.2020, 12:49
никто не знает как заставить работать игру LAST BATTLE ?
перепробовал все настройки и комбинации ромов (

Rubts0FF
16.06.2020, 21:03
никто не знает как заставить работать игру LAST BATTLE ?
Запустить под другим эмулятором. Этот в общем хороший, но очень не дружественный, думаю в попытке угодить всем (эмуляция всего, в том числе несуществующего железа). И то что сам автор им не пользуется.
Я честно пытался перейти на него, даже не смотря на то, что кое что меня не устраивает. Но неконтролируемы сбросы, вот просто набираю текст и баЦ! - окна эмулятора нет и никакого сообщения, бывает и с сообщениями типа "Программа допустила недопустимое", но от этого не легче, так как все что было сделано, не сохраняется. И пришлось отказаться.

gorus13
16.06.2020, 21:40
я бы рад под другим эмулятором...
но xpeccy самый адекватный под macOS эмулятор и единственный который поддерживает ромы

NEO SPECTRUMAN
17.06.2020, 00:43
но xpeccy самый адекватный под macOS эмулятор
а это наказание для тех, кто не такой как все и юзаит мерзкий мак :)

ладно у маков есть некоторые не оспоримые звуковые преимущества в которых венда SUXX!!11$!
(особенно венда выше XPю)

gorus13
17.06.2020, 08:16
а это наказание для тех, кто не такой как все и юзаит мерзкий мак :)

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

на linux ситуация с эмуляторами не лучше

zebest
17.06.2020, 08:46
на linux ситуация с эмуляторами не лучше
А как же FUSE у них?? Или незаслуженно забытый ZXEmuT (Zymosis) ?

SAM style
17.06.2020, 16:50
в том числе несуществующего железаЧто из эмулируемого не существует? ULA+?

И то что сам автор им не пользуетсяКакие грибы тебе это рассказали?

Но неконтролируемы сбросы, вот просто набираю текст и баЦ! - окна эмулятора нет и никакого сообщенияНикто кроме тебя с таким не сталкивается. Так что дело, скорее всего, не в эмуляторе


никто не знает как заставить работать игру LAST BATTLE ?На всякий случай запустил z80all, посмотрим, что он натестит. Дебугер утверждает, что какой-то момент стек оказывается в ПЗУ со всеми вытекающими... Позже задебужу.

Black Cat / Era CG
17.06.2020, 17:07
Норм эмуль. Пользуюсь только им и Анрилом. Разные спекуляторы и прочие модные фьюзы и че-то там еще никогда не было необходимости качать даже.

Rubts0FF
17.06.2020, 21:07
Никто кроме тебя с таким не сталкивается. Так что дело, скорее всего, не в эмуляторе
Пользуюсь в общем тремя компами, настольный, ноутбук и на работе старичок. Вылеты были везде, я не утверждаю что он вылетает с утра до вечера, можно и день и несколько нормально пользоваться, а потом как уже сказал - БАЦ!. Если под эмулятором просто играть - это просто 5 кнопок, а вот когда на сутки заступил на работу и все время в общем за столом сидишь, то и эмулятором пользуешься столько же, опять же, давишь на все кнопки до каких дотягиваются пальцы. И как бы хрен бы с ними, вылетами, если бы изменения в образах происходили сразу после операций с дисками. Не хотел я возвращаться к этой теме, и в общем можно все игнорировать.

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

хотя куда катитсо этот xpeccy не ясно
вместо добавление полезного функционала
началось добавление всякого мусора который вообще не имеет отношение к спектруму
(которые еще и включаються с пинка тк готовых конфигов как не было так и нет)
с поломками старого функционала
с отмазками типа
"а єто так криво выглядит и не пригодно к использованию пушо отладчик один на 10 процессоров и на 30 компов"

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


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

кроме этого вылетов эмуля я не помню...

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


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

SAM style
18.06.2020, 01:08
тоесть я снова призываю пилить 15 разных рабочих эмуляторов
Пили. Я пилю инфраструктуру между компонентами абстрактного компа.
-----
Для себя: команды типа [DD|FD]:CB:xx:zz увеличивают R на 2.
Для всех: почему так? по документам R увеличивается каждый fetch. А тут их три - DD, CB и zz (код команды). Хотя, насчет последнего не уверен
При этом DD : DD : 21 : 00 : 00 (ld ix,0 с лишним DD) увеличивает R на 3, как положено
-----
Last Battle запустился. Понапридумывают извращённых защит, разбирай потом как оно работает :D
http://samstyle.narod.ru/xpeccy/pix/Xpeccy_20200618.png

gorus13
18.06.2020, 23:08
Last Battle запустился. Понапридумывают извращённых защит, разбирай потом как оно работает :D


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

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

Lethargeek
19.06.2020, 00:06
Для себя: команды типа [DD|FD]:CB:xx:zz увеличивают R на 2.
Для всех: почему так? по документам R увеличивается каждый fetch. А тут их три - DD, CB и zz (код команды). Хотя, насчет последнего не уверен
а он и не fetch, а просто обычный read по документации; видимо, fetch после смещения невозможен, а смещение всегда через байт от префикса должно быть


При этом DD : DD : 21 : 00 : 00 (ld ix,0 с лишним DD) увеличивает R на 3, как положено
так тут и смещения нет, и оба нуля просто данные

SAM style
19.06.2020, 17:46
Небольшой вопрос, в поддержание демократии и во избежание возгласов "ты чё опять за херню сделал?" :D
Для всех ZX сделал в дебугере возможность менять страницы памяти в любой четверти, RAM/ROM любую страницу. При этом оригинальная карта памяти бэкапится на входе в дебугер. Как будет более вменяемо - восстанавливать ту, что была до вмешательств; или оставлять ту, что нарукоблудил пользователь?
http://samstyle.narod.ru/xpeccy/pix/Xpeccy_20200619.png

NEO SPECTRUMAN
19.06.2020, 18:07
Как будет более вменяемо - восстанавливать ту, что была до вмешательств; или оставлять ту, что нарукоблудил пользователь?
повесить кнопку применить
для сохранения того чего нарукоблудир рукоблудель

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

в ином случае не применять

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

а карта памяти будет разукрашиваться?
яркостью от 0 до 256 с сохранениме 1 байт на пиксель на экране

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


и во избежание возгласов "
наконец то хоть где то будет нормальное подменение страниц :v2_dizzy_roll:

SAM style
19.06.2020, 18:13
повесить кнопку применить
для сохранения того чего нарукоблудир рукоблудель

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

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


а карта памяти будет разукрашиваться?
яркостью от 0 до 256 с сохранениме 1 байт на пиксель на экране
Цветом выделяются типы страниц - RAM, ROM, слот картриджа, замапленное IO или "другое" (для спека только RAM/ROM). Возлияния про "разукрашивание яркостью 1 байт на пиксель" чего-то не вкурил...

NEO SPECTRUMAN
19.06.2020, 18:23
Возлияния про "разукрашивание яркостью 1 байт на пиксель" чего-то не вкурил...
это когда для отличания на глаз
и для наблюдения некоторых процессов делается вот так
https://jpegshare.net/images/28/59/2859683f915478fe1565f7aa1d0c515c.png
не обращай внимание на надписи

еще полезно подсвечивать в таком виде
чтения запись исполнение
как раз для этого есть 3 канала GRB

SAM style
19.06.2020, 18:51
еще полезно подсвечивать в таком виде
чтения запись исполнение
как раз для этого есть 3 канала GRB
Ясно-понятно. Моя раскраска не для этого. Хотя, и такую можно сделать (но потом), у меня есть разметка памяти на код-данные, это отдельно от страничной карты памяти

Dart Alver
19.06.2020, 23:20
При этом оригинальная карта памяти бэкапится на входе в дебугер. Как будет более вменяемо - восстанавливать ту, что была до вмешательств; или оставлять ту, что нарукоблудил пользователь?
Не вполне вкурил, но мыслю что тут всётаки надо привязку к эмулируемому типу ZX компа сохранить, то есть если скажем в компе на #8000 не положено 5-ю страницу класть, то при возврате в работу она туда и не положится. А лучше рядом с опциями ввода указывать страницы рабочей карты то есть те которые будут при возврате, и если скажем на #4000 5-я страница гвоздями прибита - подсветить её красным. А кнопкой применить переводим выбранные страницы в рабочую карту памяти (которые позволено архитектурой эмулируемой модели)



это когда для отличания на глаз
и для наблюдения некоторых процессов делается вот так

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

NEO SPECTRUMAN
20.06.2020, 02:26
Вещь прикольная, но только её не в дебуггер надо (не только в дебуггер) а отдельным окном, чтоб визуально наблюдать процесс в реальном времени.
дебагер по хорошему должен рабоатать и в реальном времени

вот только очень мало эмуляторов так умеют



вот к примеру np2

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

вот так нужно делать
https://jpegshare.net/images/18/1a/181af262d14b1d798c954a672c2625b0.png

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

но никогда нет всего вместе
когда ОНО НУЖНО ВСЕ ВМЕСТЕ

SAM style
20.06.2020, 09:09
Не вполне вкурил, но мыслю что тут всётаки надо привязку к эмулируемому типу ZX компа сохранить, то есть если скажем в компе на #8000 не положено 5-ю страницу класть, то при возврате в работу она туда и не положится. А лучше рядом с опциями ввода указывать страницы рабочей карты то есть те которые будут при возврате, и если скажем на #4000 5-я страница гвоздями прибита - подсветить её красным. А кнопкой применить переводим выбранные страницы в рабочую карту памяти (которые позволено архитектурой эмулируемой модели)
Ничего гвоздями не прибито, всем всё позволено, но некоторые машины пользуют не все возможности. У дебугера есть карта памяти машины и её бэкап. Все изменения делаются прямо на памяти машины, потому что при выполнении кода машина будет использовать именно её - хреново получится, если ты поставил в дебугере на #c000 7 страницу в бэкапе, потом нажимаешь F7, а CPU берёт данные из 0й, потому что твоя 7я "не применена к машине".

SAM style
20.06.2020, 11:51
build 20200620


карта памяти в отладчике, для спектрумов - изменяемая (ведро для гнилых помидоров готово)
возможность отключить добавление boot-а на трдос-диски (options->storage->disks)
Z80: починен регистр R для команд префикса DD:CB
Починен незахват клавиш, на которые повешены хоткеи, в случае полного захвата клавиатуры
Починен автостарт ленты. В некоторых случаях лента перепрыгивала через блоки.
Много фиксов i8080
В очень-альфе ПК Специалист на i8080@2MHz, ромы и раскладки клавиатуры прилагаю
А ещё куча рефакторинга, из-за которого что-то могло улететь прямо в ад :D


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

Dart Alver
20.06.2020, 19:42
Ничего гвоздями не прибито, всем всё позволено, но некоторые машины пользуют не все возможности. У дебугера есть карта памяти машины и её бэкап. Все изменения делаются прямо на памяти машины, потому что при выполнении кода машина будет использовать именно её - хреново получится, если ты поставил в дебугере на #c000 7 страницу в бэкапе, потом нажимаешь F7, а CPU берёт данные из 0й, потому что твоя 7я "не применена к машине".
Чет я совсем не понимаю. При выполнении кода машина использует страницу памяти, которую устанавливает то самый код, если это не так, то что это за код нафиг такой ? А вот достать из дебаггера любую страницу чтобы подкорректировать не шаманя с отловом когда код выставит её на карту памяти - это респект. И что есть бэкап карты памяти ? Побайтный срез дампа всего адресного пространства, или просто запомнили номера выставленных страниц ?
Но в принципе в любом варианте возможность поковырять в любой момент код любой страницы это респект и уважуха )) Главное чтобы было поменьше мата когда забудешь страницу назад вернуть ))

SAM style
20.06.2020, 19:55
И что есть бэкап карты памятиВсе 64К адресов CPU разбиты на 256 страниц по 256 байт, у каждой такой страницы есть тип, номер (он же старшие биты абсолютного адреса, начиная с 8го), возможно - свои процедуры чтения и записи. Память компьютера хранит массив из 256 дескрипторов страниц памяти. При входе в дебагер он делает себе копию этого массива, на всякий случай - вот это и называется бэкап карты памяти.
Кстати, хотя страницы в дебагере нумеруются от 0 до 255, это ещё не значит, что доступ есть ко всем 4М памяти. Если у компа прописано 128К, доступны будут только 16 страниц, номера 16 и выше будут копиями номеров 0-15.

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


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

Dart Alver
20.06.2020, 21:18
Все 64К адресов CPU разбиты на 256 страниц по 256 байт, у каждой такой страницы есть тип, номер (он же старшие биты абсолютного адреса, начиная с 8го),

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


Кстати, хотя страницы в дебагере нумеруются от 0 до 255, это ещё не значит, что доступ есть ко всем 4М памяти. Если у компа прописано 128К, доступны будут только 16 страниц
8 ?


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

Lethargeek
21.06.2020, 18:10
А ещё куча рефакторинга, из-за которого что-то могло улететь прямо в ад
ром-каталог и конфиги ты нарочно в корень вынес или случайно? :D

SAM style
21.06.2020, 19:18
ром-каталог и конфиги ты нарочно в корень вынес или случайно? :D
Ох йооопт... исправил, архив для windows перезалил

Lethargeek
21.06.2020, 19:44
Ох йооопт...
IT happens :v2_dizzy_biggrin2:

еще вопрос такой - как правильно переключиться на тыц-конфу?
что прописать на вкладке machine в точности, чтобы не малевич по резету?
(оно хоть рабочее вообще? бейзконфа работает, есичо)

SAM style
21.06.2020, 20:42
еще вопрос такой - как правильно переключиться на тыц-конфу?
http://samstyle.narod.ru/xpeccy/pix/Xpeccy_20200621.png
Ну, и бета-диск по традиции не забыть включить

Lethargeek
21.06.2020, 21:19
SAM style, у меня всё абсолютно так же, и бета-диск включённый - а не работает
чёрный экран, при этом в отладчике видно, что IY = $FFFF почему-то, чего явно не должно быть
(код проходит по "bit 7,(iy+1):ret nz" @18A1)

SAM style
22.06.2020, 11:41
чёрный экран, при этом в отладчике видно
Возможно, вкурил, в чём дело. Но в силу некоторых сил сейчас сделать это на эмуляторе почти невозможно. Суть такова - надо сбросить комп с зажатым SShift, тогда TSConf запустит настройки железа, и после него всё заработает. Если сработает, то попробуй так - в отладчике нажми F12 (сброс), потом Alt+K - клавиатура, на экранной клаве кликни ПКМ по SShift (она зажмётся) и выйди из отладчика.
PS: проверено - почему-то TSConf не нравится сброс в TRDOS (а он там по умолчанию). А с кнопками буду думать - либо убирать ресет с настроек хоткеев и жестко приколачивать его на F12, чтобы срабатывало с зажатым Ctrl, либо что-то другое

NEO SPECTRUMAN
22.06.2020, 16:59
SAM style, а можошь добавить 3-й Ау
по буржуазно империалистическому стандарту



The selection of the current sound IC is done by writing a value in the I/O port 0xFFFD, as below:

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.

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

ищо багарепорт

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

а тут по дефолту выделяется кнопка cancel
и набрав что то с кнопок и нажав ентер срабатывает отмена и ничего не сохраняется....
https://jpegshare.net/images/93/77/9377718110dda662a945a199e2d0dc4f.png

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


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

ДОКОЛЕ в эмуляторе не будет готовых конфигов?

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


проблема номер два
частота проца
меняет и частоту инта :v2_dizzy_facepalm:
https://jpegshare.net/images/1a/f1/1af13d2bba278397b9063082f8b01090.png

больше 14 не вводиться

проблема номер три
множитель хоть и позволяет увеличить частоту
но он САМОПРОИЗВОЛЬНО СБИВАЕТСЯ В 1Х
возможно это даже происходит по нажатию ентер в эмуляторе
при обращении к трдосу?

тоесть проивзольная турба щас не ставиться...

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

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

ТАК ЖЕ
если выделена и цифра и запятая
то уже печатать не получается

наверно этому припятствует ТУПОЕ ограничение на максимальное значение которое можно вписать
оно ДОЛЖНО ограничиваться ПОСЛЕ ВВОДА при нажатии ОК
а не ДО ВВОДА

SAM style
22.06.2020, 17:08
а тут по дефолту выделяется кнопка cancel
и набрав что то с кнопок и нажав ентер срабатывает отмена и ничего не сохраняется....Порядок кнопок, поправим

частота проца
меняет и частоту интаЭто не частота проца. Это считай что базовая частота кварца / 4, на неё опираются всё тактируемое, в т.ч. и растр изображения. Потому что если я сделаю фиксированную частоту точек растра, ты задолбаешься подбирать правильную частоту проца, чтобы демоэффекты не съезжали со временем. А так - 2 точки на такт, а проц "разгоняется" умножителем базовой частоты.

множитель хоть и позволяет увеличить частоту
но он САМОПРОИЗВОЛЬНО СБИВАЕТСЯ В 1ХОткрою секрет - некоторые модели умеют САМИ программно включать и отключать турбу, чем временами и пользуются.

ограничиние на размер введенного в полях частоты \ множителя и наверно еще и всегда и вездеЭто стандартные виджеты Qt, к ним вопросы.

NEO SPECTRUMAN
22.06.2020, 18:02
Это стандартные виджеты Qt, к ним вопросы.
тогда посмотри может есть еще варианты полей ввода
или какая нибудь их кофигурация

как вариант можно сделать дополнительное выпадающее меню с несколькими фиксированными частотами
тк их то не много и они кратные



Открою секрет - некоторые модели умеют САМИ программно включать и отключать турбу, чем временами и пользуются.

есть тырдосы которые отключают турбу?

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


некоторые модели умеют САМИ программно включать и отключать турбу,
как включается выключается турба в пентагон 1024?

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

ну и дальше
в новом поделии
бекспейс вообще не работает
http://samstyle.narod.ru/xpeccy/pix/Xpeccy_20200619.png
для прописания своих страниц :v2_dizzy_facepalm:

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

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

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

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

Продолжаем

поклацал твою переключалку страниц
как я и говорил нужна кнопка ПРИМЕНИТЬ а не восстановить
тк легко все вешается
когда вроде бы просто смотришь чего там по страницам

а вот АВТО ПРИМЕНЕНИЕ можно было бы делать если начал клацать шаг вперед в дебагере
это уже могло бы значить что пользователю надо чтобы исполнялось уже в этой странице


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

и не хватает функции открытия файла меток при помощи драгндропа на дебагер
это было бы удобно

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

подебагал да
метки из разных страниц явно отображаются в одной

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


Это считай что базовая частота кварца / 4, на неё опираются всё тактируемое,
тогда пусть будет написано 14МГц и что это частота кварца
И БУДЕТ ЯСНО что это не частота проца :)
а множитель с боку легко можно принять за множитель в режиме турбы например
тк вообще не очевидно что это за пункты сейчас

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


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

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

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

например в xpeccy_0.6.20190712_Qt5.5.1_win32
дизасм летает
только что проверил

запустил по новой проблема в чем то другом

похоже дизасм сильно тормозит с загруженными метками

SAM style
22.06.2020, 18:40
тогда посмотри может есть еще варианты полей ввода
или какая нибудь их кофигурацияВыбирай - https://doc.qt.io/qt-5/classes.html

и тут как раз бы не помешали еще кнопки вперед назад как на частоте процаПокрутить колёсиком мышки уже не канает?


поклацал твою переключалку страниц
как я и говорил нужна кнопка ПРИМЕНИТЬ а не восстановить
тк легко все вешается
когда вроде бы просто смотришь чего там по страницамдааа, дааа, 1 июля устрою голосувание на эту тему и всё равно сделаю так, как удобно мне :D

а множитель с боку легко можно принять за множитель в режиме турбы напримерОн располагается в строке, в которой написано CPU freq. Базовая * множитель. Легко принять за "множитель в режиме турбы" можно только нафантазировавшись. Просто держи в голове то, что турбо - это не только вкл-выкл. В TSConf есть 4 режима турбирования CPU.

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

похоже дизасм сильно тормозит с загруженными меткамиВозможно, если меток много

NEO SPECTRUMAN
22.06.2020, 18:57
Пошёл в дебугер, поставил метку на C000, пощёлкал страницу - метка отображается только в той странице, в которую я её поставил. Пиши как повторить твой опыт
найду способ как повторить закину

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


Возможно, если меток много
их 1398
я бы не сказал что это сильно много

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


Выбирай - https://doc.qt.io/qt-5/classes.html
ну до... :v2_dizzy_facepalm:

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

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

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


Покрутить колёсиком мышки уже не канает?
а ты думаешь что все телепаты?
где еще применяется кручение колесиком в таком поле ввода?

такое поле ввода для набирание ручками при помощи кнопок
при чем тут кручение колесиком?
это абсолютно не очевидно

крутятся колесиком скроллбары (которых тут нет)
а не...

SAM style
22.06.2020, 19:07
надо смотреть что юзают другие софтвари на qt
Класс называется QDoubleSpinBox и предназначен для ввода не целых чисел (для целых QSpinBox), у него указывается минимум, максимум и число знаков после запятой. Всё остальное делает Qt

такое поле ввода для набирание ручками при помощи кнопок
при чем тут кручение колесиком?
это абсолютно не очевидноС одной стороны да, неочевидно. А с другой стороны - это самодельный наследник QLineEdit (который для ввода текста) специально для ввода чисел с заданным основанием - такие используются, например, в дебугере для регистров. Если покопаться, то можно найти, что у QSpinBox есть setDisplayIntegerBase, но он выглядит и работает ещё отвратнее, и во-вторых работает начиная с Qt5.2, а я ещё Qt4 тяну зачем-то


крутятся колесиком скроллбары (которых тут нет)
а не...Только не крути колёсиком на полях ввода частоты проца, а то шаблон разорвёт

NEO SPECTRUMAN
22.06.2020, 19:20
Только не крути колёсиком на полях ввода частоты проца, а то шаблон разорвёт
поздно!
теперь я уже никогда не буду таким как прежде :)

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


Класс называется QDoubleSpinBox
мне больше всего нравиться как в таким мануалах описывающих графические элементы интерфейса
НЕТ ЧСХ НИ ОДНОЙ КАРТИНКИ
этож мать его гениально

Lethargeek
22.06.2020, 19:40
в отладчике нажми F12 (сброс), потом Alt+K - клавиатура, на экранной клаве кликни ПКМ по SShift (она зажмётся) и выйди из отладчика.
вроде получилось, хотя и не с первого раза

gorus13
07.07.2020, 10:54
на последней сборке (...620) перестал отображатся текст в биосе ATM Turbo 2+
http://gorus13.ru/img/atm1.png
http://gorus13.ru/img/atm2.png

может что не так делаю

SAM style
07.07.2020, 11:29
на последней сборке (...620) перестал отображатся текст в биосе ATM Turbo 2+
Нашёл слегка баг - файл шрифта ищется не в ~/.config/samstyle/xpeccy/roms, а на уровень выше (пока что сделай ссылку, в следующей сборке будет поправлено). И некоторые файловые системы чувствительны к регистру имени файла, это тоже надо учитывать (SGEN.rom это не SGEN.ROM)

NEO SPECTRUMAN
12.07.2020, 13:06
SAM style, а комод комодится больше чем до такого состояния?
https://jpegshare.net/images/b9/66/b966288ecf3569aed51d8c379732be86.png


так же будешь впиливать sid если его еще нет (ато хз)
за одно впили его и в спектрум

нужен на портах AY-ка по буржуйскому стандарту (тк проверять\отлаживать не на чем)
да и можно и на xxCF чтоб был

так жо нужно наличие переключения на 8580 сид

на портах AY вместо 4-го AY-ка по образу и подобию TS
выбираем чип


The selection of the current sound IC is done by writing a value in the I/O port 0xFFFD, as below:

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.
а потом выбираем регистр и пишем


на порту xxCF выбор регистра и запись одновременно
xx номер регистра



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

так же вот интересная пол литра для комода
https://www.pepto.de/projects/colorvic/2001/

так же упоминается еще такое
https://ilesj.wordpress.com/2016/03/30/old-vic-ii-colors-and-color-blending/

SAM style
12.07.2020, 13:59
SAM style, а комод комодится больше чем до такого состояния?
У комода тоже отдельный ром знакогенератора, и пока я ленюсь пересобирать, проблема та же, что с АТМ2, и решается так же - вытащи файл со шрифтом на уровень выше. В принципе, у комода можно посидеть в бейсике, на большее он пока не способен. SID-а я бы пока не касался и 25-метровой палкой.

NEO SPECTRUMAN
12.07.2020, 14:39
SID-а я бы пока не касался и 25-метровой палкой.
а низя присобачеть готовый resid который присобачивают все и ко всему?
ато так звучит будто ты сам собрался писать его мумулятор
что вощем то сомнительное удовольствие...

molodcov_alex-а тоже не видно
чтоб поклянчить че нить у него...

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


что с АТМ2, и решается так же - вытащи файл со шрифтом на уровень выше.
угу закамадурело :v2_dizzy_vodka:

правда без 8-ми последних знакомест
https://jpegshare.net/images/68/e8/68e85da790651603219a4222ce371aa5.png

SAM style
12.07.2020, 15:24
угу закамадурело
правда без 8-ми последних знакоместТам надо расклад экрана поменять, у комодура он 320x200, а на скриншоте явно спектрумовский 256x192

SAM style
13.07.2020, 10:36
Я тут ещё подумал... AY/YM ведь тактируются на частоте кварца/8, а не на какой-то своей общепринятой (1.75 или 1.7744), потому как отдельного генератора им не выделено. Так что есть ли смысл в эмуляторе задавать частоту для них?

NEO SPECTRUMAN
13.07.2020, 13:43
а не на какой-то своей общепринятой (1.75 или 1.7744), потому как отдельного генератора им не выделено. Так что есть ли смысл в эмуляторе задавать частоту для них?
может быть частота и от внешнего своего кварца
хотя правильно именно половина 3,5МГц проца
чтоб все работало

а атоматическая переключалка
будет давать те же проблемы что и твоя частота кварца\4 под видом частоты проца
и самосбрасываемый непончтно почему множитель вместо нормальной турбы рубильником

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


AY/YM ведь тактируются на частоте кварца/8
ты лучше сделай подставление частоты проца при смене типа машины
а то ставишь любую дендю и нужно искать какая там у нее мерзкая частота должна быть....
чтоб вписать руками :v2_dizzy_facepalm:

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

SAM style
13.07.2020, 14:56
и самосбрасываемый непончтно почему множитель вместо нормальной турбы рубильником
Скоро начну считать, сколько раз я говорю данную фразу - "некоторые модели программно управляют режимом турбо, и поэтому множитель ставится якобы сам. И рубильник не подойдёт, потому что есть модели с более-чем-двумя режимами турбо"

а то ставишь любую дендю и нужно искать какая там у нее мерзкая частота должна быть....
Про денди из пальца высосано - у него-то как раз частота проца сама выставляется, в зависимости от системы PAL/NTSC/Dendy или региона загруженного картриджа

NEO SPECTRUMAN
13.07.2020, 16:25
И рубильник не подойдёт, потому что есть модели с более-чем-двумя режимами турбо
а у некоторых моделей есть рубильник вместо программных режимов
так что нужно кнопка "lock" тогда




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

я сбрасываю бит no turbo
а у тебя турба только выключается

может она включается другим образом?

или где подвтерждение что турбу вырубает трдос?

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

щас еще раз посмотрю как оно себя ведет

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

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

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

кстате лови новый бага репорт
может конечно давно известный
xpeccy не открывает trd драгндропнутые из папки с русскими буквами в пути :)

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

вощем посмотрел
на 1024 sl


вот я клацаю рам0
и no turbo по идеи выключен


enable_ram0 ld bc,$EFF7 ;pentagon
ld a,%00001000 ;D3 1 = slot 0 page0
out (c),a


disable_ram0 ld bc,$EFF7
xor a
out (c),a


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

при этом турба и не включается сбросом no turbo
только ручками из менюшки

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

SAM style, давай подключайся к раздуплению что тушит вбитую руками турбу

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

вот из доки к 1024 sl 2.2
https://jpegshare.net/images/31/34/3134ff084355ab5ed775853de774267b.png

ЧЯДНТ? где мое программное включение турбы?
самопроизвольное отключение есть

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

щас еще найду по каким это адресам у меня
и посмотрю enable_ram0 в дебагере

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

посмотрел
У ТЕБЯ ИНВЕРСНЫЙ БИТ ТУРБЫ
1 - включает
0 - выключает
а должно быть почему то на оборот


так же еще хотелка
alt+f7 ВСЕ РАВНО ЛИСТАЕТ СИЛЬНО МЕДЛЕННО
нужно shift+alt+F7 которое будет листать еще раз в 10 быстрей чем alt+F7
просто задолбатсо можно пока держишь 15 минут кнопку...

SAM style
13.07.2020, 16:43
посмотрел
У ТЕБЯ ИНВЕРСНЫЙ БИТ ТУРБЫ
1 - включает
0 - выключает
а должно быть почему то на оборот
Ясно-понятно, проморгал, у себя исправил, будет в следующей сборке

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


а у некоторых моделей есть рубильник вместо программных режимов
А для этого есть хоткей на вкл-выкл турбы x2

NEO SPECTRUMAN
13.07.2020, 16:44
А для этого есть хоткей на вкл-выкл турбы x2
а что делать когда нужно x8 ? :)
x2 это прошлый век

SAM style
13.07.2020, 16:47
так же еще хотелка
alt+f7 ВСЕ РАВНО ЛИСТАЕТ СИЛЬНО МЕДЛЕННО
нужно shift+alt+F7 которое будет листать еще раз в 10 быстрей чем alt+F7
просто задолбатсо можно пока держишь 15 минут кнопку...
Если надо просто кучу всего затрейсить, может не надо трейсить? Ставишь курсор на адрес, где надо остановиться, и жмешь F9 - дебагер закрывается и открывается обратно на этом адресе

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


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

NEO SPECTRUMAN
13.07.2020, 16:49
Ставишь курсор на адрес, где надо остановиться,
в том и проблема
что часто
АПСОЛЮТНА не известно где этот адрес
и нужно доматать до места где этот адрес нужно ловить визуально

а тут соу слоу...
а потом это место ВНЕЗАПНО проскочил
и по новой фрейм, два, три...

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

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

SAM style
13.07.2020, 16:53
АПСОЛЮТНА не известно где этот адрес
и нужно доматать до места где этот адрес нужно ловить визуально
И ты такой со скоростью молнии будешь ловить переход рандомный адрес, если трейс пойдёт сильно быстрее? Скорее, ты этот адрес пропустишь, и чем быстрее трейс, тем сильнее пропустишь.

NEO SPECTRUMAN
13.07.2020, 17:02
Скорее, ты этот адрес пропустишь, и чем быстрее трейс, тем сильнее пропустишь.
дык мне нужно проматать 40\60К тактов до того места как будет вероятность появления того адреса
доматав до 60К я перейду на обычный пошаговый режим

при том МНЕ это нужно достаточно часто
и Я В УПОР НЕ ПОНИМАЮ ПОЧЕМУ?????
этого обыно нет ни в одном дебагере не для одной платформы?

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

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


чем быстрее трейс, тем сильнее пропустишь.
тем быстрее найдешь примерное положение в фрейме
если оно примерно в одинаковом месте

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


И ты такой со скоростью молнии будешь л
чисто на глаз
хотелось бы мотать 70К за 5-6 секунд держания
может за немного большее время

при alt+F7 у меня не более 3-х строк в секунду...
скорей всего даже 2
320 строк/3 = 106,66666666666666666666666666667 секунд сплошного удовольствия с вспоминанием аффтара :v2_dizzy_tired2:

SAM style
13.07.2020, 17:04
дык мне нужно проматать 40\60К тактов до того места как будет вероятность появления того адреса
доматав до 60К я перейду на обычный пошаговый режим
Я не знаю, как у тебя, но у меня обычный (не ускоренный) автоматический трейс делает примерно по 10 строк изображения в секунду, т.е кадр проходит за ~30 сек.

аффтары мумуляторов видимо никогда не пользуются своим же дебагером...
Пользуюсь, чтобы отлаживать эмуляцию всяких железяк. Например, для этого появился график tape-сигнала, и я начал понимать формат записи для msx/cmd/бк. Там же отлаживал FDC... У тебя просто очень узконаправленная хотелка.

NEO SPECTRUMAN
13.07.2020, 17:10
автоматический трейс делает примерно по 10 строк изображения
мне удобней останавливать листание отпусканем клавиши

да и trace and stop here у меня бежит со скоростью обычного f7


кстате по alt f7 по моему раньше листало быстрее
вроде бы метки выключены
щас чота совсем медленно

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

SAM style
13.07.2020, 17:17
Ты ведь смекаешь, что при трейсе на каждом шаге надо перерисовывать практически всё окно дебагера (дизасм, дамп, регистры, сигналы...), а вот это уже занимает кучу времени. Ускоренный трейс по Alt+F7 делает это в 10 раз реже.
Рекомендую переключиться на вкладку, где меньше всего данных (на брыкпоинты, например) и повторить опыт

NEO SPECTRUMAN
13.07.2020, 17:22
Ты ведь смекаешь, что при трейсе на каждом шаге надо перерисовывать практически всё окно дебагера (дизасм, дамп, регистры, сигналы...), а вот это уже занимает кучу времени. Ускоренный трейс по Alt+F7 делает это в 10 раз реже.
мне главное чтоб твой мумулятор не падал при этом от пожирания всего стеком :)

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

конечно видеть память и экран при этом достаточно полезно

SAM style
13.07.2020, 17:35
А, и ещё вот что - не-автоматический трейс (F7, Alt+F7) работают по факту "нажатия" кнопки, т.е вообще-то зависят ещё и от периода автоповтора клавиш.

NEO SPECTRUMAN
13.07.2020, 17:52
А, и ещё вот что - не-автоматический трейс (F7, Alt+F7) работают по факту "нажатия" кнопки, т.е вообще-то зависят ещё и от периода автоповтора клавиш.
да и правда зависит
вот только у меня скорость стоит до упора

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

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

https://jpegshare.net/images/58/ce/58ce3fef6ef44f349536b3ebd2696423.png
может конечно с реестра можно поставить и еще быстрее

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

SAM style
13.07.2020, 19:09
лучшо бы оно работало по факту нажатия и удержания
а ту у кого то может скорость пониже
и там вообще слоупочение...
Быстрее, чем автоматический трейс, не будет, хотя там каждый шаг идёт обновление окна

NEO SPECTRUMAN
15.07.2020, 23:43
кстате тем временем снова нужен +3 c trdos

единственный найденный мулятор который может
оно же ZEsarUX
редкостное гафно в плане дебагера (да и гуя тоже)
и не особо пригодно к дебаганию как таковому...

MetalliC
16.07.2020, 02:10
ну так они не дружат by design, если железному +3 как-то присунуть (родной) бетадиск128 - оно даже в дос выходить не будет, наберешь usr15616 - а эффекта нуль ;)
потому что бетадисковая детектилка записи в порт 7ffd срабатывает и на +3-шный 1ffd

NEO SPECTRUMAN
16.07.2020, 02:17
ну так они не дружат by design, если железному +3 как-то присунуть (родной) бетадиск128
ну а у буржуев всякие мумуляторы бетадиска
и резиновые женщины спектрумы на одной микросхеме
которые вполне дружат...

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


потому что бетадисковая детектилка записи в порт 7ffd
а зачем бетадиску детектить запись в 7FFD ?

MetalliC
16.07.2020, 02:27
я про настоящий +3 и оригинальный Beta128, в самопалах там понятно можно наколхозить что угодно и как угодно.


а зачем бетадиску детектить запись в 7FFD ?
для совместимости с 128К спектрумом, собсно потому он и называется Beta128 :)
бетадиск смотрит что было записано в битик выбора ПЗУ, и если там 0 (т.е. выбрано ПЗУ 128) - не будет активироваться при выполнении кода из 3Dxxh

с костылем я их кое-как подружил под МАМЕ - из +3 васика можно выйти в тырдос, посмотреть каталог дисков, вот только трдосовский софт не запускается, сбрасывается после загрузки, видно что-то в +3 басике ему не нравится.
можно лишь сперва из +3 бейсика сделать usr0, потом выйти в трдос, и тогда игры/софт уже норм запускаются, но думается такой вариант тебя не устроит.

NEO SPECTRUMAN
16.07.2020, 02:30
можно лишь сперва из +3 бейсика сделать usr0, потом выйти в трдос, и тогда игры/софт запускаются, но думается такой вариант тебя не устроит.
я только так и запускаю из ZEsarUX-а
пушо подругому ни как (в принципе это быстро)
...а какое удовольствие в нем дебагать... :v2_dizzy_wall:


как там запускают буржуи я не имею ни малейшего понятия
но как то они запускают...

MetalliC
16.07.2020, 02:41
если надо - могу сделать компил МАМЕ с включенным бетадиском для +3, тамошний отладчик меня более чем устраивает

NEO SPECTRUMAN
16.07.2020, 04:24
если надо - могу сделать компил МАМЕ с включенным бетадиском для +3, тамошний отладчик меня более чем устраивает
ну его дебагер я в глаза не видел
можно было бы посмотреть

правда оно должно быть под 32 битную winХРю чтобы посмотреть

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

ну и не обязательно это должен быть +3
пойдет и +2А
нужен только special mode памяти от +3

MetalliC
16.07.2020, 13:13
правда оно должно быть под 32 битную winХРю чтобы посмотреть
звиняй, тогда это не ко мне. я без понятия как его там компилить под XP.

SAM style
16.07.2020, 14:44
build 20200716


Починена загрузка шрифтов
Геометрия экрана комодора прибита гвоздями и не меняется
Исправлен бит турбо в EFF7 у Pent1024SL
deBUGa: изменена схема трейсера. Вроде, чуть быстрее. При длительном нажатии на F7 и до его отпускания тоже запускается трейсер. С F8 не работает
Добавлено открытие файлов по DragNDrop в MACOSX (наделали лунатизма "не как у всех" и гордятся этим)
dmg собран с Qt5.9


[ скачать платно и с смс (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20200716) ]

NEO SPECTRUMAN
16.07.2020, 14:55
Если надо просто кучу всего затрейсить, может не надо трейсить? Ставишь курсор на адрес, где надо остановиться, и жмешь F9 - дебагер закрывается и открывается обратно на этом адресе
trace and stop on INT тоже приходитсо ждать вечность

был бы полезен еще и run and stop on INT\end\start frame\0 tact etc
чтоб лишний раз не смотреть на I
не переходить ручками на вектор прерываний
потом с вектора на jp на обработчик
потом с jp обработчика только на сам int
(пушо например в унриале бесполезно ставить бряк на jp на который указывает вектор тк он гарантированно не сработает
тут лишний раз не рискую :)

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

SAM style
16.07.2020, 14:57
был бы полезен еще и run and stop on INT
Есть брыкпоинты на IRQ

NEO SPECTRUMAN
16.07.2020, 15:03
ага нашел

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

я бы и не стал искать там

а что такое SLT cell ?

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

так же было бы не плохо
чтоб в менюшке с бряками
подсвечивался бы бряк который сработал

SAM style
16.07.2020, 15:12
а что такое SLT cell ?Это ячейка памяти картриджа. Забей, тебе он не нужен.

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


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

NEO SPECTRUMAN
16.07.2020, 15:19
уже сложнее определить.
тода ладно

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


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

SAM style
16.07.2020, 15:27
нужен бряк на запись определенного значения в определенный порт
это щас возможно?
Щас - нет. На можно добавить в реквесты.

NEO SPECTRUMAN
16.07.2020, 15:59
На можно добавить в реквесты.
добавляч фич полезный

кстате у тя щас запилена различия дешифрации регистров AY\YM ?

щас как раз дебагаю регистры SID-а смотря на
значения регов AY
и значения которые должны туда писатсо
https://jpegshare.net/images/f3/2b/f32b3cec024ee0118c5710d9e920b9de.png


и вощем то
или у меня еще что то дето не туда пишот


или у тебя и AY и YM оба делают and $0F для регов

в упор не могу вспомнить какой именно из них делает and $0F
AY шоле?
гугол совсем отупел и ненаходит

угу именно AY

а YM должен не записывать куда либо реги больше $0F

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

скорей всего у меня...

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


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

когда все бряки с помеченного адреса не выполняются
чтоб можно было поотключать срабатывания на тех адресах которые нам не интересны

NEO SPECTRUMAN
16.07.2020, 18:02
проделал то же самое в ureal-е
и все вроде теперь совпадает

SAM style, проверяй у себя дешифрацию номер регистров у AY\YM
и отображение громкостей каналов ABC

возможно дето косяк

мой виевер вроде правильно написан
несколько раз проверил

громкости в дебагере какие то левые
https://jpegshare.net/images/a9/cc/a9cc2649e189edb15e3309e44b7648e8.png

SAM style
16.07.2020, 18:13
громкости в дебагере какие то левые
Это не значения регистров. Внутренняя громкость замеряется в пределах 00..1F. Без огибающей это 000vvvv1 (vvvv - значение, записанное в регистр громкости). Огибающая заменяет эту громкость своей, тоже в пределах 00..1F, причём у AY младший бит громкости огибающей тоже всегда 1, у YM он зайдействован - так делается более плавная огибающая, хотя дискретизация у них одна.
Да, и я ещё где-то читал, что в AY неиспользуемые биты регистров всегда 0, а YM хранит их целиком. И по номерам регистров тоже. Но этого ещё не сделано.

NEO SPECTRUMAN
16.07.2020, 18:25
Это не значения регистров.
тоесть в дебагере у тебя намешаны кони и люди :v2_lol:

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


Да, и я ещё где-то читал, что в AY неиспользуемые биты регистров всегда 0, а YM хранит их целиком.
интересно
а где бы это тоже почитать

SAM style
16.07.2020, 18:33
тоесть в дебагере у тебя намешаны кони и люди
А может это и остаток с тех пор, когда громкости каналов мерялись в 0...F и совпадали регистрами, а потом я опять всё "починил"... Без проблемов, сделаю отображение регистров

NEO SPECTRUMAN
20.07.2020, 03:00
кстате
если вписывается адрес тыканием по адресам слева
при просмотре
нужно передизасемблировать с этого адреса

вот щас оно решило что команда по DDC2 call xxxx
и хоть убей
не получается оно сдвинуть на DDC3 где на самом деле лежит команда

вводишь ddc3
оно перескакивает на ближайшую команду ddc5

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

брейкпоинты с привязкой к банку щас работают \ есть?
в менюшке брекпоинтов поле bank недоступно
стоит поклацать туда сюда addr bus \ rom cell
банк становится доступным для редактирования

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

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

так же
можно отображать все префиксы отдельной строкой командой?
257 префиксов DD подряд (поставленных собственно не с проста)
ну очень доставляют в виде одной команды
да которую еще нужно 257 раз нажать вверх чтобы пролистать

похожая шляпа в унриале с ними...

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

нельзя юзать моноширинный шрифт?
чтоб в вачерах цифры не колбасило?

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

легким движением руки
ввод адреса в вачере
ВНЕЗАПНО
превратился из шестнадцетеричногго в восьмеричный :v2_dizzy_facepalm:
ляпота :v2_dizzy_wall:
как вернуть назад не ясно
https://jpegshare.net/images/2d/6e/2d6ec6bbc09d2b3cacdaab3c2054fe0f.png
ну за то ж теперь есть мерзкая бека...
...а я говорил что бека надо запретить и уничтожить все упоминания

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

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

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

и зазымаешь ESC

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

удобно ставить на какието процедуры
смотришь и видишь что приходит на вход
так же хорошо смотреть на самомодифицируемый код....

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


тут же нажал ESC
и все стало... :v2_dizzy_facepalm:

SAM style
20.07.2020, 08:29
так же в унриале есть удобные и полезный свойство
когда ставишь бряк

и зазымаешь ESC

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

удобно ставить на какието процедуры
смотришь и видишь что приходит на вход
так же хорошо смотреть на самомодифицируемый код....

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


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

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

NEO SPECTRUMAN
20.07.2020, 15:00
Ничего не понял из написанного.
:v2_dizzy_facepalm:

перефразирую
автоповтор для входа выхода в дебагер по ESC не работает

SAM style
20.07.2020, 15:09
автоповтор для входа выхода в дебагер по ESC не работает
А это извращение ещё зачем? Естественно, не работает, потому что автоповторы отключены, с ними неудобно было трейсить по F8 - на каждом CALL-е срабатывал автоповторный F8 в окне эмулятора, что нафиг не нужно.

NEO SPECTRUMAN
20.07.2020, 16:44
А это извращение ещё зачем?
а зачем описано выше
пушо им удобно пользоваться...

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


с ними неудобно было трейсить по F8 - на каждом CALL-е срабатывал автоповторный F8 в окне эмулятора, что нафиг не нужно.
а тут я нифига не понел
к чему тут f8 ?
и какая взаимосвязь?

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


А это извращение ещё зачем?
в качестве быстрого примера
открой унриал со 128 менюшкой
и поставь бряк на 05EE
клацни tape loader в менюшке 128-го
и зажми ESC
и станет ясно для чего это нужно

SAM style
20.07.2020, 17:03
а тут я нифига не понел
к чему тут f8 ?
и какая взаимосвязь?
Нет события "нажат esc" или "нажата f8". есть событие "нажата клавиша" и каллбэк на это событие, где я уже определяю - что это за клавиша, что за модификаторы, и автоповтор ли это. Если в дебагере нажать F8, то при достижении скипабельной команды будет осуществлён выход из дебагера, и если не отпустить вовремя кнопку, автоповторы начинают стрелять уже в окно эмулятора, а там F8 может выполнять другие функции. По этой причине все автоповторы кнопок в окне эмулятора режутся. Вторая причина - это разная реализация этих автоповторов в разных осях.

в качестве быстрого примера
открой унриал со 128 менюшкой
и поставь бряк на 05EE
клацни tape loader
и зажми ESC
и станет ясно для чего это нужно
Абсолютно то же самое, что и нажимать на esc на каждый вылет по брыкпоинту. А теперь другая ситуация - выходишь из дебагера, но чуть подольше задержал esc (задумался, в носу ковырял...). И тут хренак - срабатывает автоповтор и тебя выбрасывает обратно в дебагер, а тебе такого было не надо.
PS: практического применения так и не узрел

пушоСам нахер пошёл

NEO SPECTRUMAN
20.07.2020, 17:20
Абсолютно то же самое, что и нажимать на esc на каждый вылет по брыкпоинту.
ты предлагаешь дрочить в клавиатуру?
отличная идея

попробуй проклацать один фрейм на том же 5EE
я посмотрю как это будет выкглядеть...



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

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


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

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


Сам нахер пошёл
давай без переходов на личности


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

а все коментарии тут написанны в основном как раз в процессе...



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

SAM style
20.07.2020, 17:22
Я понял, что тебе нужен такой вот праздник для эпилептиков - https://yadi.sk/i/9sFTjcwWT5EiwA
Ещё раз, какая практическая польза от этой феерии?

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


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

NEO SPECTRUMAN
20.07.2020, 18:12
Ещё раз, какая практическая польза от этой феерии?
тулить бряк на начало\часть процедуры
и смотреть в динамике на регистры\флаги
смотреть что приходит на вход процедуры
смотреть правильно ли пишет процедура и куда
проверять правильность работы циклов со жменей счетчиков

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

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


а бряков типа
fetch = $6666 $$ B=$FE $$ A' = 0 $$ $C000 = $00
обычно никогда нет
которые тоже могли бы помочь автоматизировать многие действия...

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


да и иногда все может крашитсо еще до конца цикла...


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


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

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


Я понял, что тебе нужен такой вот праздник для эпилептиков - https://yadi.sk/i/9sFTjcwWT5EiwA
Ещё раз, какая практическая польза от этой феерии?
ну до
тут это не так стабильно выглядит...

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

щас подумаю чем это записать с унрила

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

вот как то так выглядит проверка работы перемещений блоков, заполнений буферов итд

https://dropmefiles.com.ua/ru/T4U5f27Hv
https://anonfiles.com/pcp8i9H2oe/0001_zip

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

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


для чего оно нужно было мне вчера я уже и не помню...

NEO SPECTRUMAN
28.07.2020, 20:57
Я тут ещё подумал... AY/YM ведь тактируются на частоте кварца/8, а не на какой-то своей общепринятой (1.75 или 1.7744), потому как отдельного генератора им не выделено. Так что есть ли смысл в эмуляторе задавать частоту для них?
кстате разедельная настройка каждого AY-ка в TS очень полезная функция для отладки :v2_dizzy_vodka2:
которой почему то нигде? больше нет
не надо ее сдваивать испоганивать итд и так хорошо

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

SAM style
28.07.2020, 23:44
единственная проблема эмулятор не пишет звук
мну приходиться кидать шнуром с выхода на вход
тк почему то нет возможности перехватить софтварно как это обычно везде
а сторонних левых рабочих драйверов я так и не нашел...
OBS (https://obsproject.com/) в помощь

NEO SPECTRUMAN
29.07.2020, 00:16
OBS в помощь
чот попахиваит win15 x73 only

и собственно

No. No version of OBS has EVER supported windows xp.


щас может попробую что нибудь ище

сходу попалсо какой то вот
который мну вроде еще не видел
https://vac.muzychenko.net/en/

SAM style
29.07.2020, 08:53
чот попахиваит win15 x73 only
Ну подожди, может и под Win3.1 что-то появится

NEO SPECTRUMAN
29.07.2020, 14:21
Ну подожди, может и под Win3.1 что-то появится
[рукалицо]ну пральноо ж сама мекрософт бросила поддержку[/рукалицо]
как тупо это выглядит когда все поголовно этим пытаются аргументировать...
...ужо задолбался видеть эту фразу на разных языках...

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

а вот когда старые софтвари под предлогом безопасности ваших банковских счетов начинают страдать херней... :v2_dizzy_facepalm:


ведро подход к безопасности еще более неадекватный
"мы любезно зашифруем ФС на карте памяти
чтоб в случае выхода из строя телефона вы (а тем более кто то другой в поиске банковских счетов) не могли восстановить данные с карты
так что пользуйтесь нашей синхронизацией с гуглом :) "



Ну подожди, может и под Win3.1 что-то появится
ничего
скоро под снос идет 7-ка
и тогда МЫ еще посмотрим :v2_devil:
будет все тоже самое

интересно как у 7-к совместимость с 3.1-ом
у ХРю оно вполне есть
а вот на 7+ я так и не проверил...

SAM style
29.07.2020, 16:37
как тупо это выглядит когда все поголовно этим пытаются аргументировать...
...ужо задолбался видеть эту фразу на разных языках...
Это ты сидишь на давно заплесневевшем говне мамонта и наивно надеешься, что с неба упадёт огромный шмат святой маны. Напомни, почему ты бросил пользоваться перфокартами, берестой и глиняными табличками для хранения данных? :D

NEO SPECTRUMAN
29.07.2020, 16:55
Напомни, почему ты бросил пользоваться перфокартами, берестой и глиняными табличками для хранения данных?
потомучто НЖМД оказались намного удобней

про вин15 я этого не скажу
это мерзкое гафно состоящее из свистелок и перделок
мне зае**сь выгугливать как отключить то как отключить это
с результатами в виде "как нажать ЛКМ и как сделать такое же гафно для ХР"



с таким же успехом я перешел с 4-го ведра на 9-е
и не скажу что все стало на много хуже
одно стало лучше
другое хуже
в целом терпимо
за неделю можно настроить под себя


тут же все через Ж
и чем дальше тем хуже...

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

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


ну а так тема не про мерзкую вин15
предлагаю ее не продолжать засерать этим УГ

SAM style
29.07.2020, 17:05
ну а так тема не про мерзкую вин15
предлагаю ее не продолжать засерать этим УГ
На 95% ты же и засираешь

NEO SPECTRUMAN
29.07.2020, 17:14
На 95% ты же и засираешь
так обычно это возгласы типа
"ДОКОЛЕ?!!"
например не будет нормального людского ввода везде
и в местах где должен нормально работать бекспейс, выделение и замена выделенного

и прочие жалобы/пожелания по работе

SAM style
29.07.2020, 18:30
например не будет нормального людского ввода везде
и в местах где должен нормально работать бекспейс, выделение и замена выделенного

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

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

NEO SPECTRUMAN
29.07.2020, 20:21
PS:хотя, можно попробовать такое - разрешить вводить всё. Держать валидатор, не назначая его полю. Хранить последний валидный текст. При изменении текста прогонять его валидатором - если прошёл, сохранять его и устанавливать число. Если не прошёл - восстановить последний валидный текст.
звучит вроде нормально

просто обычно пока ввод не закончен
введенное и так не валидно




Вперёд, покажи, что так же можно сделать по-человечески. А то задрал хныкать.
открой MS блокнот и что нибудь туда по вводи...


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

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

esc в процессе возвращает все как было
если наклацал не того и надо все вернуть

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

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

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


просто обычно пока ввод не закончен
введенное и так не валидно
кстате этим грешат некоторые мерзкие программы которые стоят дофига денег
они тебе сыпят 100500 ошибок пока ты тупо пытаешься изменить введенное
они тебе расказуют что у тебя не четное количество скобочек
у некоторой мерзости неотключаемое автозавершение которое лучше знает что ТЫ хочешь ввести
и вводят все время апсолютно не то
...да и что говорить когда при гуглении очередного как что нибудь сделать например в excel
часто один из вариантов ответов
скопировать в блокнот
и там по людски отредактировать
и скопировать обратно :v2_dizzy_wall:

SAM style
29.07.2020, 20:30
а так смотрим как в уриале
Сразу нахер. Там ни грамма Qt, и переносить какие-то наколенные решения, возможно прибитые гвоздями к винде - себе дороже

NEO SPECTRUMAN
29.07.2020, 21:22
Сразу нахер.
тоесть ты хош пример на qt
с которого можно содрать ?

по клацал софтвари на qt что у меня под рукой
ИЧСХ все они проверяют валидность введенного еще до того как ты ввел :v2_dizzy_facepalm:

так что редкостное это ваше мультеплатформенное поделие (qt) по ходу :v2_dizzy_facepalm:

SAM style
29.07.2020, 21:35
так что редкостное это ваше мультеплатформенное поделие (qt) по ходу
Ваше мнение очень важно для нас, сразу предлагаю уйти в группу к любителям вводить хероту, а потом удивляться, почему она не проходит валидацию. Qt тебе сразу не даёт вводить хероту.

NEO SPECTRUMAN
29.07.2020, 22:11
Qt тебе сразу не даёт вводить хероту.
QT тебе СРАЗУ НЕ ДАЕТ ВВОДИТЬ ВООБЩЕ
а не вводить хероту

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



нашел что то похожее ВНЕЗАПНО в иде
тут чисто на глаз проверка валидности уже по нажатию ок
с выкидыванием ошибок
https://jpegshare.net/images/02/ae/02aecfbc5cfefdbf5be63d6264c3dde4.png

думаю не самый лучшый пример :)
да и нет у мну 100% уверености что гуй средствами qt



в протеусе тоже можно вводить все подряд
и опять же нет уверености что гуй средствами qt

хотя набор дряни типа QtCore4.dll QtGui4.dll
в комплекте есть...

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

тоесть в более pro софтварях понимают что


Qt тебе сразу не даёт вводить хероту.
полный долбоклюизм


прочесал все софтвари в которых нашлись валяющиеся ддлвки от qt
и обе в которых запилен нормальный ввод собственно проприетарные и таки без сорцев...

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


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

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

ваши действия
забиваем в гугол c64 cpu frequency
находим цифру 985248
и копипастим ее в твой эмуль
и?

и правильно ничего не происходит

нужно дополнительно открыть блокнот
скопиписать туда 985248
поставить сраную запятую 0,985248
и не хрена
оно не переваривает

возвращаемся в блокнот
и подгоняем цифру до 0,98

вот наконецто оно переварило

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

КАК ЭТО ПРОИСХОДИТ ВО ВСЕХ НОРМАЛЬНЫХ ПРОГРАММАХ
С НОРМАЛЬНЫМ ИНТЕРФЕЙСОМ

убедительно?


конечно можно было ввести и чисто из головы...
но это уже отмазки...

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

в мерзком winapi
такой херней не страдают

а так пользователь лучше знает что он вводит :)
https://jpegshare.net/images/e4/b6/e4b6b8dcd724c9a7991c9467c06fd6c6.png

Black Cat / Era CG
29.07.2020, 22:29
Суть в том, что новые версии средств разработки прекращают поддержку старых ОСей, а на них приходится переходить, так как новые версии актуальнее. Я думаю из 100 человек найдется с десяток, а может и больше, что сидят на 10, а вот тех, что сидят на ХР от силы будет пара человек. Тянуть отдельные версии, собираемые разными версиями компилеров в лом. Потом выбор обычно очевиден и он не в пользу старых версий. Сам сидел долго на 98, потом пришлось перелезть на ХР, на ней сидел до упора. А сейчас до последнего буду на 7. Но от неизбежности никуда не деться.

NEO SPECTRUMAN
29.07.2020, 22:41
А сейчас до последнего буду на 7.
ну одно дело не избежность

а другое когда аффтар включает
"мекрозофыт прекратила поддержку вин*** в таком то году"

тут напрашивается вопрос
а причем ***** тут вообще мекрософт?

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


Я думаю из 100 человек найдется с десяток, а может и больше
если глобально то будет 50+

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

а вот цифры по ХРю будут заниженны

пушо пользователи ХРю
маскируются под пользователей вин10

я обычно маскируюсь под мак

чтоб мерзкие сайтеке не выкидывали им обновите быстрей браузер


да и пользователи ХРю уже по выключали сбор всей статистики там где могли

а вот ее собиратели и ловят что пользователей ХРю уже нет...


а так во всяких учереждениях
ХРю застрянет еще как минимум лет на 5
если не на 10


а так по цифрам и 7-ка активно сдает свои позиции

Black Cat / Era CG
29.07.2020, 22:46
Да я немного не про то. Вот смотри. Я пишу (точнее писал) некоторые поделки на Lazarus+FreePascal. В какой-то из версий они заявили, что будут постепенно отказываться от поддержки ХР. То есть скомпиленное в новых версия гипотетически будет работать под ХР, но не факт. А переходить надо, потому что в новых версиях правятся баги. Поэтому переход на новые версии компилера в итоге неизбежен, хотя иногда и ни фига не безболезненный, иногда новые версии компилера тупо не компилят исходник, приходится разбираться и править.

SAM style
31.07.2020, 21:51
В день сисадмина не мог не собрать

build 20200731


У ZX Spectrum (который 48К) можно урезать ОЗУ до 16К, всё выше 0x8000 будет залито FF и не переписывается
У ZX Spectrum реализован картридж IF2 - первые 16К загруженого *.bin файла заменяют ПЗУ и остаются там до извлечения картриджа
Громкости каналов AY в отладчике скорректированы
Экран ZX в отладчике показывается сугубо в стандартных цветах (под TSConf он переливался всеми цветами, кроме нужных)
Появилась возможность очистить хоткей в настройках
Это... что ещё... а, вибратор для NEO SPECTRUMAN - я переделал поля ввода чисел


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

NEO SPECTRUMAN
31.07.2020, 22:25
можно урезать ОЗУ до 16К, всё выше 0x8000 будет залито FF и не переписывается
а оно так на реале?
я всегда думал что оно зеркалится
а там видимо уже рассчитано на установку дополнительных 32К

там случаем не читается порт FF из 8000-FFFF?

SAM style
31.07.2020, 22:39
а оно так на реале?
я всегда думал что оно зеркалится
а там видимо уже рассчитано на установку дополнительных 32К

там случаем не читается порт FF из 8000-FFFF?
Я уточнял, мне сказали, что там отсутствующие чипы памяти. Т.е чтение "ниоткуда", а по схемотехнике это всегда FF
Порт FF читается только при активном /IORQ, а это не память

NEO SPECTRUMAN
01.08.2020, 18:17
я переделал поля ввода чисел
с ходу вроде бы относительно интуитивно вводится :v2_dizzy_vodka2:

проблема только со столбцом опкода (2-м в дизасме)
при редактировании в конце 100500 пробелов которые еще нужно стереть или проскролить
что не есть удобно
и не вмещается в своем столбце однако (точнее именно это основная проблема)
https://jpegshare.net/images/28/d4/28d450c489608c4cfa357fdbd6e3206e.png


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



так же ВНЕЗАПНО заметил что текстовые виевер памяти не редактируемый

например такая шняга есть в унриале
https://jpegshare.net/images/4f/a1/4fa17851ac37521cc45f6748828412c1.png
правда я редко этим пользуюсь
на шняга может быть полезной
я иногда применяю оно для более быстрого затирания небольших кусков памяти
(в унриале мемори виевер с режимом insert и можно не прерывно вводить как hex значения, как в любом hex редакторе, так и понадаписать чего угодно в больших количествах
без тыкания в каждый байт который мы хотим отредактировать



так же сейчас из дебагера не редактируется ПЗУ-шка
а что нибудь там подправить иногда нужно

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

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



так же часто нужна возможность редактировать системные порты
типа 7FFD 1FFD EFF7
в унриале нормально редактируется только EFF7
там даже расписали что за что отвечает
и даже зачем то повесили возможность залочить? значение
https://jpegshare.net/images/92/de/92de8c36030a22001143612221d5683b.png
остальные там редактируются через Ж
через нажатие какого то особого хоткея
за которым нужно лезть в мануал

SAM style
01.08.2020, 19:49
без тыкания в каждый байт который мы хотим отредактироватьНу не тыкай. просто жми Tab. И запомни - как в анриле сделать НЕ ПОЛУЧИТСЯ (тчк)

так же сейчас из дебагера не редактируется ПЗУ-шкаА Read-Only-Memory разве должна редактироваться?

NEO SPECTRUMAN
01.08.2020, 21:07
А Read-Only-Memory разве должна редактироваться?
а если это надо?


а если отлаживается именно ПЗУ-шка?
или какой нибудь картридж какой нибудь приставки у которой вообще толком нет Random-Access-Memory?
параллельно держать открытым окно hex редактора
а потом закидывать в эмулятор и запускать по новой?


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


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

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

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


как в анриле сделать НЕ ПОЛУЧИТСЯ (тчк)
ну получится не получится
а стремится нужно к лучшему

SAM style
01.08.2020, 21:19
ну получится не получится
а стремится нужно к лучшему
Тут всё проще - юзай анрил, раз он лучше.

NEO SPECTRUMAN
01.08.2020, 21:35
Тут всё проще - юзай анрил, раз он лучше.
Он то лучше и удобней
но в нем нет многих нужных вещей

ну например временно отключаеммых бряков

и когда нужно
5-6 бряков
но не сразу
начинается жопа

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

тут ВНЕЗАПНО нужное место проскочил
не рассмотрев что происходит

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


пушо БЕЗ ПРИВЯЗКИ К СТРАНИЦЕ
они вполне часто срабатывает в десятки тысяч раз чаще
НЕ в тех страницах в которых нужно
но по тем же адресам

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


да и вообщем я прыгаю между унриалом emuzwin и xpeccy
и за***сь это ужо
пушо нужен весь функционал сразу

а его сразу не в одном эмуляторе нет

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


Тут всё проще - юзай анрил, раз он лучше.
ну и оба разработчика анрила на своей волне
у них клянчить что то бесполезно :)

надо учитсо самому его собирать и пилять

SAM style
01.08.2020, 21:45
Он то лучше и удобней
но в нем нет многих нужных вещейТопай к разработчикам анрила и говори им, что и где надо исправить-добавить. тут же ты тем же самым занимаешься

ну и оба разработчика анрила на своей волне
у них клянчить что то бесполезноТы даже не представляешь, какой адъ и Израиль у меня :v2_dizzy_punk:
И
хватит
писать
по
одному
слову
в
строке

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


пушоЯ запамятовал, я тебя уже посылал с несуществующими словами?

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


надо учитсо самому его собирать и пилятьВперёд. Лет через 10 посмотрим, что получится. Я так же начал это поделие писать.

NEO SPECTRUMAN
01.08.2020, 22:08
Я запамятовал, я тебя уже посылал с несуществующими словами?
а ты записался в любители великого и могучего в его первозданномЪ виде?
так я тебя огорчу
любой язык меняется
уже не в 76 году живешь

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

или на оборот оно само уйдет

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


, какой адъ и Израиль у меня
зато стоило было тебя пару десятков постов побуцать
и итоговый продукт улучшился на 60%
надеюсь что не только для меня

Rubts0FF
30.08.2020, 18:36
Есть небольшое пожелание - спящий режим, закрытие эмулятора с сохранением состояния. Привык в Шалаеве, нет это не его заслуга, он без VMware не запускается, а там это можно "усыпить" и это удобно. Собственно забываю сохранять рам-диск перед закрытием эмулятора.

andrews
30.08.2020, 18:48
А есть ли где бинарник под Win32, чтобы не разбираться со сборкой?

NEO SPECTRUMAN
30.08.2020, 18:52
А есть ли где бинарник под Win32, чтобы не разбираться со сборкой?
дык тут же валяетсо
https://github.com/samstyle/Xpeccy/releases
https://github.com/samstyle/Xpeccy/releases/tag/0.6.20200731

аффтар еще и придупреждает что не пытайтесь повторить это дома собирать под вендой...

andrews
31.08.2020, 11:53
Ладно, можно исходники для понимания работы использовать.

SAM style
31.08.2020, 12:59
Ладно, можно исходники для понимания работы использовать.Удачи :v2_dizzy_punk: Я сам там уже слабо ориентируюсь :v2_dizzy_tired2:

Dexus
31.08.2020, 16:05
Забейте. Я забил.
Уже больше года "прокрастинирована" (https://github.com/samstyle/Xpeccy/issues/45) просьба починить AY.

SAM style
31.08.2020, 16:07
Забейте. Я забил.
Уже больше года "прокрастинирована" просьба починить AY.
Ты мне говоришь, что не так? Нет? Я сам мало отличий слышу. Определись, что тебе не нравится, потому что "как-то не так звучит" это не диагноз.

Dexus
31.08.2020, 16:28
Определись, что тебе не нравится, потому что "как-то не так звучит" это не диагноз.
Не "как-то не так", а не так как во всех других AY-рендерерах. Не так как в реале.
Там совершенно очевидно что высокие частоты задавлены. Отфильтрованы. Этого не услышит разве что тот у кого проблемы со слухом (сорри если это так).
Тебе эта картинка поможет?
https://volutar.myds.me/xp-nois.png
Снизу "как надо", сверху - xpeccy. Интенсивность шумовых компонентов падает с частотой, словно наложен НЧ фильтр.

SAM style
31.08.2020, 16:40
Не "как-то не так", а не так как во всех других AY-рендерерах. Не так как в реале.
И при чём тут AY? Его состояние как раз обновляется после каждой команды.
src/xcore/sound.cpp
строка 21:#define DISCRATE 32
Увеличь и послушай, отличается ли. А заодно засеки прожорливость эмулятора при увеличении значения. Результаты в виде графиков, диаграмм и красно-зелёных полосок на синем фоне - в студию.
ЗЫ: Последние твои сообщения по проблеме - "шумы кривые". Охрененное описание проблемы. :D

Dexus
31.08.2020, 16:52
И при чём тут AY? Его состояние как раз обновляется после каждой команды.
При том что это не просто какой-то таймер, который должен абстрактно эмулироваться. Он ещё и ЗВУК генерирует, который должен выдаваться максимально близко к реальному. Все остальные эмуляторы с этим справляются. Xpeccy - нет. Проблема не в эмуляции AY, а в преобразованых в звуковую волну 44.1/48КГц данных. Они кривые. Передескретизация через одно место, видимо.

SAM style
31.08.2020, 17:10
Проблема не в эмуляции AYТогда в почему ты всё время упоминаешь AY, проблему назвал "AY render", путаешь людей?
То, что я выше написал, ты опробовал?

Dexus
31.08.2020, 17:16
огда в почему ты всё время упоминаешь AY, проблему назвал "AY render", путаешь людей?
Потому что это и есть wave rendering данных AY.

То, что я выше написал, ты опробовал?
Как я это попробую? Сколько не пытался - не собирается. Бинарник под винду есть с этим?

SAM style
31.08.2020, 17:25
Потому что это и есть wave rendering данных AY.Это рендеринг данных с любого звукового устройства, а не только с AY. Как минимум, у тебя есть ещё бипер и звуки с мофона. На NES и GB нет AY, а звук как-то рендерится. Чудесато, да?

Как я это попробую? Сколько не пытался - не собираетсяКакие сложности возникают?

Dexus
31.08.2020, 17:41
На NES и GB нет AY, а звук как-то рендерится.
Да, конечно, и TurboFM тоже имеется, но писать свой рендерер ты вряд ли осилишь, а взять уже имеющийся - можно. Только вот генерировать FM с выходом на 3.5Мгц - нафиг оно кому нужно? FM в таком "дигитальном" режиме никогда не используется, и тратить на это ресурсы нет надобности. Как и с AY. Рендерить AY с частотой в 3.5Мгц, а потом прогонять через фильтры необходимость бывает только если это дигитал какой-нибудь. В том же AY_Emul есть два вида рендеринга звука, аккуратный и нет. Аккуратный - как раз с последующей КИХ-фильтрацией, и жрет больше CPU чем "быстрый". В большинстве случаев разница не особо слышна (потому что частота переключения данных регистров AY - 50Гц).

Вот "правильная" таблица фильтров https://github.com/darvin/unreal-speccy-portable/blob/master/devices/sound/device_sound.cpp#L178
Нужно что-то подобное. А не простое математическое усреднение как у тебя https://github.com/samstyle/Xpeccy/blob/master/src/xcore/sound.cpp#L47.

Можно было бы заюзать https://github.com/avaneev/r8brain-free-src

SAM style
31.08.2020, 18:17
Вот "правильная" таблица фильтров
И чё мне делать с этой таблицей? Развивай мысль, мне лень что-то гуглить.

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

Dexus
31.08.2020, 19:22
И чё мне делать с этой таблицей?
Читать контекст (код). Читать что такое КИХ-фильтры. Читать статью про ayumi из первого сообщения issue. Просвещаться. Исправлять стыдный звук.


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

SAM style
31.08.2020, 19:41
Лучше не трогать то что воняет, прокрастинируй дальше.
Спасибо за визит, приходите ещё.
(лень гуглить)

NEO SPECTRUMAN
31.08.2020, 20:19
и тратить на это ресурсы нет надобности. Как и с AY. Рендерить AY с частотой в 3.5Мгц,
а потом как в ZEsarUX-ах
не AY а сплошной алиасинг :v2_dizzy_facepalm:

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


(лень гуглить)
по fir фильтрам
попробую обьяснить как понимаю мну


вот наглядная картинко
https://ars.els-cdn.com/content/image/3-s2.0-B978008097129200009X-f09-07-9780080971292.jpg?_

на x вход
на y выход

а суть такова

что мы движемся по буферу окном (для примера 3 входа)

вот так


220000222200 <- буфер
=== <-окно


умножаем входное значения для каждого входа окна на свое значение

например так
*0.2 *0.6 *0.2

тут как раз видим таблицу
https://github.com/darvin/unreal-speccy-portable/blob/master/devices/sound/device_sound.cpp#L178
думаю что сюда можно подставить теже оконные функции что и для fft
от размера окна и функции будет зависеть частота среза

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



220000222200
===

0.4 1.2 0
= 1.6




ну и перемещаем окно на один шаг и все повторяем



220000222200
=== 0.4+1.2+0

1.6


220000222200
=== 0.4+0+0

1.6 0.4


220000222200
=== 0+0+0

1.6 0.4 0


220000222200
=== 0+0+0

1.6 0.4 0 0


220000222200
=== 0+0+0.4

1.6 0.4 0 0 0.4

Dexus
31.08.2020, 20:26
а потом как в ZEsarUX-ах
Раньше не приходилось запускать этот эмулятор кроме как на малинке. Запустил.
Извиняюсь, но равняться на него как-то даже ничего не поднимается. Отвратительный эмулятор этот ZEsarUX. Уж лучше Спектакулятор. Ни нормального отладчика, ни даже меню (а рисовать в графике самого спека - концепция может эстетичная, но совершенно непрактичная), не говоря уж о качестве эмуляции звука (который похоже на 11025 рендерит). О честном выводе анимации (бегущих строк) в 50Гц тоже никакой речи нет. Очень некачественное изделие.

NEO SPECTRUMAN
31.08.2020, 20:44
Отвратительный эмулятор.
так я это и имел ввиду
что на фоне такого гофна тут все отлично

да и я щитаю что тупое сумирование всех значения вполне допустимо

вот только тупо сумировать тоже желательно пошагово окном
(в случае если просто фильтр а не ресамплинг)

хотя при большом количестве входящих данных (ресамплинг)
вполне можно сразу
первые n (0...4095) значения в выходное значение 1
вторые n (4096...8191) значение в выходное значение 2
и чем больше данных сразу усредняется
тем меньше будет алиасинг...

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


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

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

вот таким образом


1-й шаг (можно пропустить но тогда фильтр "заведется" на 5 семплов позже : )
вощем тупо заполняем b1...b4 нулями :)

sum = b1+b2+b3+b4+b5 ;b1....bn значения буфера
out = sum/5

последующие шаги

sum = sum - b1 + b6
out = sum/5


sum = sum - b2 + b7
out = sum/5


дешево и сердито
но будут искажения

SAM style
31.08.2020, 21:06
умножаем входное значения для каждого входа окна на свое значение
например так
*0.2 *0.6 *0.2
Ну, т.е суть такова - не просто засуммировать и усреднить, а засуммировать с коэффициентами (по форме такая волна к центру зоны), сумма которых будет 1. В таблице из анрила их 128, но мне так кажется, что у моего эмуля рожа треснет с такой дискретизацией.

NEO SPECTRUMAN
31.08.2020, 21:16
Ну, т.е суть такова - не просто засуммировать и усреднить, а засуммировать с коэффициентами (по форме такая волна к центру зоны), сумма которых будет 1
сумма пофиг какая будет
главное чтоб в результате сумирования небыло переполнений и сильной потери точности

можно и из однобитногго потока делать 16 бит...

я бы делал вообще целочисленное умножение на 0...255
с последующим сдвиговым делением суммы значений
а то сильно жирные там расчеты


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


что у моего эмуля рожа треснет с такой дискретизацией.
мне кажотсо что Dexus предлагает фильтровать не все 3,5МГц семплов
а прореживать самым примитивным алгоритмом в n раз
а потом фильтровать результат такой фигней...
по крайней мере я так понел :)
или хрен его :)
пушо с таким же успехом после такого фильтра
можно и прореживать более примитвным алгоритмом
тк таких высоких частоты уже не будет
которые всплывут при алиасингке


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

хотя аффтар сам такое морозит что просто...

Аккуратный - как раз с последующей КИХ-фильтрацией, и жрет больше CPU чем "быстрый". В большинстве случаев разница не особо слышна (потому что частота переключения данных регистров AY - 50Гц).

Dexus
31.08.2020, 21:35
да и я щитаю что тупое сумирование всех значения вполне допустимо
Вообще-то нет. Downsampling при эмуляции звуковых чипов существовал очень давно. Без этого beeper'ный звук нормально не будет звучать. И в Unreal фактически с зарождения, и в Ay_emul, да даже в Z80Stealth такое уже было.

тем меньше будет алиасинг...
Альясинг тут вообще не столько важен, сколько достоверность передискретезированной звуковой волны. Важно чтобы АЧХ сохранялась (а она сейчас поломана), и важно чтобы отражения гармоник не создавались (а оно было до изменений). И то и другое - плохо. Без корректного фильтра децимации для оверсамплиного сигнала получится ***** с разными оттенками. В Unreal идёт оверсамплинг в 64 выборки, и КИХ фильтр на 128 значений. В Ay_emul то же самое (кто у кого заимствовал - ХЗ). Но алгоритм хитрый, он не просто все 128 значений фильтра обрабатывает. Он учитывает что исходный сигнал - достаточно статичный. Т.е. либо есть напряжение, либо нет, без промежуточных значений. И имеет таблицу с заранее вычесленными значениями для разного положения "перехода" в окне оверсэмпла (точнее, там псевдо-оверсэмплинг).
Сам Sinc filter такой:

-^-
/ \
/ \
_-`_______`-_

А filter_diff для вычисления итога такой:

__
.-`
/
/
/
/
.
_-`__________
При множественных переходах через 0/1 внутри одного окна (т.е. при "децимации" значений), соответствующие значения из таблицы то прибавляются то вычитаются.
Хотя лично мне того что в Unreal и ay_emul более чем хватает, это - далеко не идеальный вариант. Ayumi всё-таки звучит намного "чище".




первые n (0...4095) значения в выходное значение 1
вторые n (4096...8191) значение в выходное значение 2
Извини, но ты какую-то фигню придумал.


хотя аффтар сам такое морозит что просто...
Для тех кто в танке - это описание разницы при переключении опции ay_emul (Avarager/FIR filter).

NEO SPECTRUMAN
31.08.2020, 21:48
Альясинг тут вообще не столько важен, сколько достоверность передискретезированной звуковой волны. Важно чтобы АЧХ сохранялась (а она сейчас поломана), и важно чтобы отражения гармоник не создавались (а оно было до изменений)
сам говоришь что он не важин
и при этом ниже рассказываешь что он не желателен...

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


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

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

правда вместо блекманхарисоновских оконных функций
я юзать 1 период синусоиды + 1

Dexus
31.08.2020, 22:16
сам говоришь что он не важин
Я видимо не понимаю про какой алиасинг со значениями 0-4095 и 4096-8191 ты говоришь.


это ты предлагаешь килотонны расчетов на fpu
Я никакие килотонны не предлагаю. Ayumi прекрасно работает на джаваскрипте (http://pure-garden-1548.herokuapp.com/)с минимальным сжиранием CPU. Аюми был бы идеальным вариантом. Пока (вроде) нет ни одного эмулятора у которого бы фильтрация была бы настолько качественной. И сабж мог бы им стать. Но видимо тут большинству (как и автору) медведи непрерывно польку танцевали на ушах, и разницы в качестве вообще никакой не слышат. Sadly.
Так даже вариант от Unreal, который свёртку итерационно не делает, а использует предвычисленные значения из LUT, и огромного количества вычислений не требует.

Про Ay-emul я немного насвистел. Не помню откуда у меня в голове инфа что они с Unreal используют схожую схему (видимо где-то прочитал)... Сейчас посмотрел - схожа она только в режиме Avarager от ay-emul, а в FIR там какая-то лютая арифметика с асмовскими вставками идёт (при этом результат хуже чем у ayumi получается).
В Unreal вся эта кухня происходит в eDeviceSound::flush() https://github.com/darvin/unreal-speccy-portable/blob/master/devices/sound/device_sound.cpp#L104 , который "размазывает" "текущие" значения из mix_l/mix_r по аудиобуфферу с учетом оверсамплинга (в каждом из 44100 значений выходного буфера имеются 64 _виртуальных_ tick-а). Я это с такой уверенностью говорю, потому что сам ковырял Unreal, приделывая к нему TFM 15 лет назад, и не сразу вообще впёр в то как он рендерит звук.

===добавлено===
Немного поизучал и обнаружил что тот факт, что Ayumi заточен на воспроизведение AY данных с восьмикратным оверсэмплингом, и это делает его способным на воспроизведение только обычных AY-треков. Т.е. тот же Atarin он не способен нормально воспроизвести (это надо с ним прилично шаманить, чтобы он такое смог). Алгоритм из Unreal чем-то похож на Avarager из ay-emul, только в последнем идет линейная интерполяция, а в Unreal с некоей фильтрацией, т.е. более качественный итог, который прекрасно и бипер фильтрует.

NEO SPECTRUMAN
01.09.2020, 00:05
Извини, но ты какую-то фигню придумал.
ну например вот сделал такой 48х ресамплинг


оригинал 384КГц
меандр почти без алиасинга
частотой 100...10000Гц
https://jpegshare.net/images/b2/0e/b20e088b2d4930fb973fd2c7b232d4ca.png


а вот оно же в 8КГц (могли уплыть частоты тк *****код)
тупым суммирование по 48 семплов
https://jpegshare.net/images/cc/24/cc244524934219358fd58236fbe11ea2.png
конечно алиасинг есть
и его прекрасно слышно

ну и чем выше частота тем меньше от нее следов


ну это явно на много лучше чем выборка только отдельных семплов
https://jpegshare.net/images/f5/f4/f5f487f8221e7a37fe2550d24a32f3e4.png
такое чувство что в ZEsarUX-е именно так :v2_lol:

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

ну и так для сравнения
https://jpegshare.net/images/42/e0/42e08d07ccf3b8e648ae5767b7d10e51.png

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

https://jpegshare.net/images/5d/9a/5d9a21d17fc44271f455e89d9e0a2dab.png

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

ну и сам алиасинг
на "низких" он то есть
https://jpegshare.net/images/24/5f/245f89b4198778998c2913f7881e342c.png

а на "высоких" он уже неплохо срезан (например на биперах)
https://jpegshare.net/images/06/9f/069fc3cc4b7380d4695f46b3ed47b2e1.png

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

а вот фильтрация квадратным окном по такому алгоритму

sum = sum - b1 + b6
out = sum/5

sum = sum - b2 + b7
out = sum/5

до
https://jpegshare.net/images/7f/a3/7fa3379dc451df60ac7da8e721fc0674.png

после
https://jpegshare.net/images/28/74/287496a9a8a72e9e239332aacc04df1d.png

начисто не режет
но зато быстро без 32К умножений на 1 семпл


интересно выглядит "отфильтрованный" меандр :v2_lol:
https://jpegshare.net/images/e2/6a/e26a4c3914052c6d4306f23abe10db0f.png

Dexus
01.09.2020, 00:40
NEO SPECTRUMAN,
И на втором твоем скрине прекрасно _видно_, что помимо отражения гармоник от частоты найквиста происходит гашение верхов (интенсивность полосы заметно падает при движении вверх, чего нет на первом, с убер-оверсамплингом). На нижнем рисунке, кстати, тот же. Вместо резких границ меандра — сглаженные треугольники. Верха обрезаются. Так нельзя.

Это то, что в сабже сейчас и есть — линейный «фильтр», который отчасти устраняет отражения гармоник (артефакты от отбрасывания выборок), но в то же время убивает высокие частоты. А должен быть фильтр такой, чтобы и отражения убирал, и высокие частоты не давил.

В статье про аюми (http://hypr.ru/blog/168.html) про эту децимацию и пишут (резкий НЧ фильтр оверсампленного сигнала). Т.е. все отраженные частоты, гармоники выше основной частоты, просто красиво отсекаются.

NEO SPECTRUMAN
01.09.2020, 01:13
Верха обрезаются. Так нельзя.
РУКА ЛИЦО

верха срезаются при ресамплинге в любом случае

на моих примерах ресамплинга
там вообще частота тона 100-10000 заходит за частоту найквиста
частота после ресамплинга 8000Гц
КАКИМ ХРЕНОМ ОНА ДОЛЖНА ОСТАТЬСЯ
если максимально ФИЗИЧЕСКИ возможная частота 4000Гц?

и хороший ресамплер эти частоты должен срезать
а не отражать

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

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

https://dropmefiles.com.ua/ru/EZXPTVeK

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


В статье про аюми про эту децимацию и пишут (резкий НЧ фильтр оверсампленного сигнала). Т.е. все отраженные частоты, гармоники выше основной частоты, просто красиво отсекаются.
http://hype.retroscene.org/uploads/images/00/00/88/2015/03/30/fba2e2.png

а это чо за провал на верху по твоему?
http://hype.retroscene.org/uploads/images/00/00/88/2015/03/30/eb4d10.png

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

тк ну не могут нормально быть ровными 20КГц+ синусоиды
при частоте дискретизации 48КГц
физически ну некак
они уже там в виде треугольника...

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


Это то, что в сабже сейчас и есть — линейный «фильтр», который отчасти устраняет отражения гармоник (артефакты от отбрасывания выборок), но в то же время убивает высокие частоты. А должен быть фильтр такой, чтобы и отражения убирал, и высокие частоты не давил.
кстате с таким же успехом в реале на выходе динамик (который сам не плохо срезает)
перед котороым вообще стоит фильтр (который вообще может жестко срезать нахрен все)
и это все отбрасывает высокие на порядок больше
(слушаем записи бипереов с реалов и сравниваем со своими скрепучими эмуляторами
и смотрим где высоких больше)

а если высокие оставить как есть
долго этот песок не послушаешь
ибо на свистит в уши так что...

Dexus
01.09.2020, 05:56
NEO SPECTRUMAN,
>верха срезаются при ресамплинге в любом случае
Уже с 200Гц судя по второму скрину идет падающий градиент.

>а это чо за провал на верху по твоему?
Где провал? Ты часом ниспадающую амплитуду гармоник за «провал» не посчитал?
При изменении частоты у тебя идет изменение амплитуды (а гармоники всегда тише).

>и это все отбрасывает высокие на порядок больше
Вздор. Ничего там не отбрасывается.

С кем я разговариваю?
Очевидно, с тем, кто считает что линейная свёртка - это "ок". Думаю, на этом можно закончить, отправив читать про звук, акустику и фильтры.

NEO SPECTRUMAN
01.09.2020, 06:26
С кем я разговариваю?

Где провал?
https://jpegshare.net/images/ce/74/ce74209e5ffc1cfdc24dd364d0c362b0.png

ЧОТА В УПОР НЕ ВИЖУ SIN/1+SIN/3+SIN/5+SIN/7... ПО АМПЛИТУДЕ ГАРМОНИК

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


что линейная свёртка - это "ок".
Для многих задач до

конечно есть еще конченные аудиофилы
которые слышат то в что они верят

хотя КОНЕЧНО с тем что нормальный фильтр звучат лучшо я соглашусь


кстате а где пример как это мерзкое аюми
переносит частоты больше частоты найквиста

реквестирую проаюмленную вавку со всеми частотами AY-ка
от 1 до 4095
только не говорите что ее таки нет...

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


Уже с 200Гц судя по второму скрину идет падающий градиент.
1. уточняй где именно второй скрин
2. ну дык я и не отрицаю что добротность у такого фильтра никакая
но с таким же успехом я не вижу смысла сохранять все до 24КГц не тронутым
это как раз не тот случай когда эти частоты так нужны

Dexus
01.09.2020, 06:42
NEO SPECTRUMAN,
> где именно второй скрин
С предыдущего большого поста с кучей картинок. С №2195.
> сохранять все до 24КГц не тронутым
Хотя бы до 10кгц оставлять нетронутыми. Если бы падение было только как на процитированных скринах (там выше 17кгц идет вниз, причем на первом и на втором разные диапазоны - влоб их сравнивать нельзя) — былобы прекрасно, и вопросов бы не возникло. А тут падение от 250Гц идет. Меандра вообще нет, он весь сглажен до треугольников.

NEO SPECTRUMAN
01.09.2020, 06:57
С предыдущего большого поста с кучей картинок. С №2195.
> сохранять все до 24КГц не тронутым
Хотя бы до 10кгц оставлять нетронутыми. Если бы падение было только как на процитированных скринах (там выше 17кгц идет вниз) — былобы прекрасно, и вопросов бы не возникло. А тут падение от 250Гц идет. Меандра вообще нет, он весь сглажен до треугольников.
угу
так то вообще примитивнейший алгоритм
на который ты сказал

Извини, но ты какую-то фигню придумал.




сам же fir фильтр c квадратным окном (который "делает меандр треугольным")
при частоте среза в 6КГц (по крайней мере я на это надеюсь : )
дает куда лучший результат
https://jpegshare.net/images/28/74/287496a9a8a72e9e239332aacc04df1d.png
смотри заметный спад только в районе 3,5 КГц

надо будет еще посмотреть на АЧХ всей этой фигни
но это потом

Dexus
01.09.2020, 07:59
NEO SPECTRUMAN,
По крайней мере до 15кгц не должно быть никаких спадов. А тут чуть больше 3кгц и уже глушняк. Как телефонная связь.

NEO SPECTRUMAN
01.09.2020, 08:04
По крайней мере до 15кгц не должно быть никаких спадов. А тут чуть больше 3кгц и уже глушняк. Как телефонная связь.
о чем это ты? :v2_dizzy_facepalm:
это LP фильтр
после частоты среза (6КГц) не должно быть ничего вообще
тут у меня напрашиваются фразы

С кем я разговариваю?

Думаю, на этом можно закончить, отправив читать про звук, акустику и фильтры.



после частоты среза (6КГц) не должно быть ничего вообще
но изза простоты фильтра там что то все еще есть :)
надо будет сделать еще пару тройку повторных проходов поверх

Dexus
01.09.2020, 21:00
это LP фильтр
после частоты среза (6КГц) не должно быть ничего вообще
Это хреновый LP фильтр.

но изза простоты фильтра там что то все еще есть
И поэтому оно все будет отражаться, и это - неприемлемо.

На мой слух музыка отрендеренная с Ayumi звучит даже лучше оригинала (железного, у меня YM, и там просто шум, а Ayumi - звучит "кристально"). Дальше идёт ZX-Tune, Ay_emul/Unreal...

NEO SPECTRUMAN
01.09.2020, 22:42
На мой слух музыка отрендеренная с Ayumi звучит даже лучше оригинала

Дальше идёт ZX-Tune

думаю на этом и можно закончить

Dexus
02.09.2020, 00:45
думаю на этом и можно закончить
Закончить можно было бы после твоего утверждения:

да и я щитаю что тупое сумирование всех значения вполне допустимо

И вообще, какие-то проблемы?
Ayumi дает звук, лишённый шумов аудиотракта (которые в реале присутствуют). На фоне этого тот абсолютный минимум артефактов (отраженных гармоник) Ayumi вообще не ощущается.
А в ZX-Tune движок от ay_emul взят и улучшен + управляемая скважность (пусть и в плеере) порой весьма скрашивает пресный меандр (хотя небезупречно - скважность шума вообще не стоит трогать).

SAM style
02.09.2020, 16:54
ЗакончитьСлыш, эльф. Вот смотри:
Это инициализация таблицы с коэффициентами

void init_kih() {
long double Fd = conf.snd.rate * DISCRATE;
long double Fs = 2;
long double Fx = 2;
long double H_id [DISCRATE] = {0};
long double W[DISCRATE] = {0};
long double Fc = (Fs + Fx) / (2 * Fd);
int i;
for (i = 0; i < DISCRATE; i++) {
if (i == 0) {
H_id[i] = 2 * M_PI * Fc;
} else {
H_id[i] = sinl(2 * M_PI * Fc * i) / (M_PI * i);
}
W[i] = 0.42 - 0.5 * cosl((2 * M_PI * i) / (DISCRATE - 1)) + 0.08 * cosl((4 * M_PI * i) / (DISCRATE - 1));
H[i] = H_id[i] * W[i];
}
// normalizzze
double sum = 0;
for (i = 0; i < DISCRATE; i++) sum += H[i];
for (i = 0; i < DISCRATE; i++) H[i] /= sum;
}
Это понижение дискретизации (32 сэмпла в один, который пойдёт на вывод). На входе в sndLev имеем амплитуду звука, снятую в данный момент эмуляции с железяки. В tmpLev накапливается сумма на вывод


...
tmpLev.left += sndLev.left * H[disCount];
tmpLev.right += sndLev.right * H[disCount];
disCount++;
if (disCount >= DISCRATE) {
sndLev = tmpLev; <- это пойдёт в звуковой буфер
tmpLev.left = 0;
tmpLev.right = 0;
disCount = 0;
...

Звучит как *****. Что не так?

Dexus
02.09.2020, 18:38
>Звучит как *****. Что не так?
Хз. Что за функция создающая таблицу? Откуда она?

А вообще, может дело в том, что это не свертка происходит, и никакого overlap add нет? Это предположение. Я насколько вижу — сверточный буфер в 32 значение, и сигнал децимируется тоже с шагом в 32. Что происходит с крайними значениями буфера? Какой вклад они имеют в итоговые суммы? Если в одном фрейме свертки это 0%, то в соседнем должно быть 100%
http://www.dsprelated.com/josimages_new/sasp2/img1395.png.

Т.е. шаг должен быть как минимум в 2 раза короче сверточного буфера.

SAM style
02.09.2020, 18:48
Хз. Что за функция создающая таблицу? Откуда она?
https://habr.com/ru/post/128140/

PS: Ну да, конечно, ошибка в формуле. Надо
W[i] = 0.42 + 0.5 * cosl((2 * M_PI * i) / (DISCRATE - 1)) + 0.08 * cosl((4 * M_PI * i) / (DISCRATE - 1));
Так лучше

ЗЫ: Без этого фильтра звук чище. С ним резко затихают верхние частоты.

NEO SPECTRUMAN
02.09.2020, 20:40
ЗЫ: Без этого фильтра звук чище. С ним резко затихают верхние частоты.
запиши звук с эмулятора до и после

тест пищалка полторы минуты
https://dropmefiles.com.ua/ru/Rsv3
посмотрим глазами

вот мы сравнивали (по быстренькому) фпга пищалки разной степени унылости
https://zx-pk.ru/threads/31677-nsid_emu-sid-pleer-dlya-spectrum.html?p=1063361&viewfull=1#post1063361

сравним с ними и с унриалом

Dexus
02.09.2020, 21:26
Без этого фильтра звук чище. С ним резко затихают верхние частоты.
По-идее нужно использовать функцию НЧ фильтра _высокого_ порядка для частоты найквиста / 32 (в твоем случае). Т.е. на ~1378Гц. Тогда передискритизированные гармоники прежде чем будут "децимированы", просто исчезнут. Как-то так.

SAM style
02.09.2020, 21:36
запиши звук с эмулятора до и после
Вот это ДО - клик (http://samstyle.narod.ru/addons/xpeccy/old.wav.zip)
То, что после, вышло так плохо, что даже выкладывать не буду. Есть стойкое ощущение, что я что-то не то делаю... Pure tone, как в beep идёт - нормально, но когда быстро меняется частота, как в начале теста, звук расколбашивает во все стороны.

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


По-идее нужно использовать функцию НЧ фильтра _высокого_ порядка для частоты найквиста / 32 (в твоем случае)
Хватит говорить на инопланетном, я всё равно его не понимаю. Есть 32 сэмпла (unsigned 16 bit, 2 channels), нужно сделать из них 1. Шаг 1 - ... Шаг 2 - ...

Dexus
02.09.2020, 22:19
Так лучше
Не уверен что он лучше. Второй просто неправильный. Но применять один фиг нужно по-другому.
https://volutar.myds.me/filt1.png
Сверху - первый вариант, снизу - второй. Коэффиценты масштабированы.
Тебе нужно сделать не 32 отсчёта, а 64 в H, чтобы конец текущего фрагмента в 32 оверсампленного отсчета пересекался с началом следующего. Иначе у тебя выпадают концы (или середина в варианте с 0.42 +).
Если уж ты не хочешь просто позаимствовать схему с Унреала (там процессор на эту передискретизацию тратится меньше - он делает не совсем честную свертку, а использует предрасчитанные суммы, учитывая что изначальная волна квадратная), то хотя бы overlap add обеспечь нормальный. В Унреале, кстати, SMT использует таблицу коэффицентов не в форме /\ а в форме /, и, соответственно, его же в зеркальном виде.
У тебя сейчас вместо взаимнопересекающегося набора типа " XXXX " (в сумме дающего 1) идет " /\/\ ", т.е. постоянно выпадают или края (в первом случае), или центр (во втором).

Другими словами:
Ты берешь массив оверсампленных данных, и суммируешь его с весовыми коэффицентами вот так:
0..31=>/\[0]
32..63=>/\[1]
А нужно (с в дважды растянутым массивом коэффицентов):
0..63=>/\[0]
32..95=>/\[1]
Т.е. суммируемые диапазоны должны накладываться наполовину, чтобы ни один исходный импульс не потерялся. Чтобы краевые значения оказывались 0.5+0.5, а центральные либо 0+1 либо 1+0. А у тебя половина просто выпадает.

Вот как-то так:
https://www.researchgate.net/profile/Ron_Healy/publication/338709187/figure/fig7/AS:305380358934532@1449819759495/a-x-1-b-w-2-window-frame-series-used-in-overlap-FFT-c-w-1-window-frame.png
Только тут без децимации и с целью обработки с FFT.

B- как надо чтобы ничего не терялось.
C- та самая кривость, если не оверлапить.

NEO SPECTRUMAN
02.09.2020, 22:28
Вот это ДО - клик
если это ДО
то у тебя тут вообще творится какая то дичь
и нужно фиксить сначало ДО
а потом уже делать ПОСЛЕ

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


на высоких посторонний шум или дополнительно высокая частота
https://jpegshare.net/images/40/7b/407bd11d96c6d34c0eea0b6ca5f61a64.png

на частотах ниже
выглядит как обработанное high pass фильтром (который на оборот срезает низкие)
https://jpegshare.net/images/77/d9/77d9b82ac2f471ff344034174b11fd46.png

https://jpegshare.net/images/bd/22/bd22bd658de5c3a175f12efd8051eb07.png

https://jpegshare.net/images/fe/00/fe00150cff411f86c0a88577186f109c.png

https://jpegshare.net/images/20/99/2099332e043adc0043ea2829f9d3c101.png

а дальше нормальный меандр...
https://jpegshare.net/images/7c/94/7c94f3d4a233f355099e0eddcea33cac.png

ну почти нормальный
https://jpegshare.net/images/90/84/9084dca714008edc3e09835906349882.png


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

XPECCY
https://jpegshare.net/images/89/a1/89a1fc7437c68815fc886a073c71cd9e.png

UNREAL
https://jpegshare.net/images/60/93/6093f6175a4bd97b0d07a344ac111ef6.png


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

https://jpegshare.net/images/fc/4f/fc4f95925395c1c94d4abf43e948e9d1.png

https://jpegshare.net/images/27/71/2771cff7ade1dd632ad96b630b797b9b.png
https://jpegshare.net/images/d5/7f/d57ff430387d451196a1f6c836213376.png
https://jpegshare.net/images/9f/5f/9f5f4e7127b88988fb7935ea72765a24.png

ну и как то так должен выглядеть и выход с эмулятора


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

в принципе вот

XPECCY будем считать не достоверными данными
https://jpegshare.net/images/05/60/0560731292282fe599de75167e6db4b0.png

UNREAL
https://jpegshare.net/images/7b/72/7b727f7c04d641159700cb404bbaccf2.png

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

щас еще проверю запишу я
ту версию что есть у меня

Dexus
02.09.2020, 22:34
через свой микрофонный
Через микрофонный вход плохая идея. Надо через стереомикшер капчурить, иначе он все время в 0 дрейфует, и вместо квадрата получается ёлка.

NEO SPECTRUMAN
02.09.2020, 23:09
Надо через стереомикшер капчурить, иначе он все время в 0 дрейфует, и вместо квадрата получается ёлка.
это пофиг
я думал SAM style может записать софтварно
то я не могу


щас глянул последнюю версию
такой дичи там нет

щас посмотрим на АЧХ
и на отражения (хотя этот тест на них явно не расчитан)

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

не знаю

на глаз жесткого алиасинга не видно
https://jpegshare.net/images/78/1c/781c19ab9c225557436a4ff7e73c76c7.png

тут даже видно шумы моей мерзкой *****звуковой карты (из которой выход записано с другой : )
https://jpegshare.net/images/4c/e2/4ce2654c11ddb3d3200991d62da230a0.png


АЧХ тоже не сильно страшная
XPECCY
https://jpegshare.net/images/71/68/716846099b979ac73094b9776eb3f781.png

у унриала немного больше срезаны высокие
и немного больше поднята середина
(запись с унриала полученна таким же извращенным способом
что и запись с xpeccy чтоб можно было сверять отностельно)
UNREAL
https://jpegshare.net/images/ea/46/ea466a92d21e0e3a8cfc1b06b2073dfb.png

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


остается вопрос к чему придирается dexus





https://volutar.myds.me/xp-nois.png
Снизу "как надо", сверху - xpeccy. Интенсивность шумовых компонентов падает с частотой, словно наложен НЧ фильтр.
ты закинь то что изображено на этой каше в виде вавок
чтоб можно было сравнить ушами
и другими средствами

ато на этой картинке
ЗАДАВЛЕНО то что ты уже практически апсолютна не слышишь (частоты 21...22КГц)
и шума больше чем полезного сигнала...

SAM style
02.09.2020, 23:19
это точно не запись через микрофонный входЯ всё поняль, не лучшей идеей было записывать рекордером. Лучше вделать wav-вывод в сам эмуль. Короче, это лажа, завтра переделаю.

NEO SPECTRUMAN
02.09.2020, 23:23
Лучше вделать wav-вывод в сам эмуль. Короче, это лажа, завтра переделаю.
до это очень полезный фич :v2_dizzy_priest: :v2_dizzy_vodka2:

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

кстате

может в xpeccy просто частота дискретизации 44КГц?
против 48КГц у нижней записи
https://volutar.myds.me/xp-nois.png
и с придиркой профейлил сам dexus?

тут даже если писалось потом через линейный вход на 44КГц (судя по потолку в 22)
оазница по высоким будет отличатся
тк на входе совершенно другой свой фильтр
который срежет еще больше того что и так ресемплированно под 44КГц с потерями высоких
будет фильтроваться и ресемплироваться повторно

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

кстате у меня уменно 44100 по дефолту в xpeccy

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

Dexus, проверяй свою эксперементальную установку

SAM style
02.09.2020, 23:52
ВотЪ - тыц (http://samstyle.narod.ru/addons/xpeccy/old_2.wav.zip)
Записано через Audacity, 44100 16bit signed, 2ch

Dexus
02.09.2020, 23:52
NEO SPECTRUMAN,
>ато на этой картинке ЗАДАВЛЕНО то что ты уже практически апсолютна не слышишь
Пользуйся спеллчекером. Стыдно читать.

Задавлено начиная с 5кгц, глаза разуй.
Звук для сравнения я несколько раз кидал уже. Повторяю: https://github.com/samstyle/Xpeccy/issues/45#issuecomment-473576546
Любую AY/YM музыку насыщенную шумами включи в унреале и сабже — услышишь (если медведи уши не оттоптали, и слышишь хотя бы до 15кгц).
Вы не свистки смотрите, а шумы. Шумы отвратительным образом давятся фильтрами. Артефакты, которые были 1.5 года назад, не так уродовали звук как эти фильтры.

NEO SPECTRUMAN
03.09.2020, 01:51
Любую AY/YM музыку насыщенную шумами включи в унреале и сабже — услышишь (если медведи уши не оттоптали, и слышишь хотя бы до 15кгц).
поставь 2 разных реала с разной реализацией микшера и фильтра
и ты не поверишь своим ушам

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

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


на этой картинке ЗАДАВЛЕНО
ЗАДАВЛЕНО
это вот так
https://i.postimg.cc/wMgHNV7H/6-AEON-027.png

когда нужно так
https://i.postimg.cc/hPCgJVgW/5-UNO-TBBlue.png


вот это я понимаю задавлено

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


мне на оборот не приятен высокочастотный скрежет
на который ты дрочишь


кстате у мерзких сидов
такая же разница в звучании между разными партиями чипа...

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


и слышишь хотя бы до 15кгц).
ну разницо между 44КГц 48КГц
на ударных чотко слышно

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

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


В примере - первый из анрила (да и из бульбы и zxtune), второй - из xpeccy.
кстате сейчас я тебя обломлю

вот 1-я запись с твоими высокими
https://jpegshare.net/images/c6/ba/c6baee4c0f8046147ecbd65386bbb8d1.png

а вот 2-я запись которая тебе не нравится
https://jpegshare.net/images/cc/a6/cca6542b5c07b97becc70208e179d8b9.png


так вот на записи на которую ты ддрочишь
на оборот завал на 10КГц


которого нет на второй записи

ТЫ СЛЫШИШЬ НЕ ПРОВАЛ НА ВЫСОКИХ
А ОБЩУЮ НАКЛОНЕНОСТЬ АЧХ
которая есть на 2-й записи
там падение уже чуть ли не с 50Гц

если че
на этой АЧХ картинке накопленное за всю запись (в придачу за несоклько проходов пока не устаканится)
а не просто в рандомный момент времени
ну и взял только один канал
чтоб не было лишних взаимо вычитаний

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

так что это даже 2 в одном


ну и лично я считаю что 2-й вариант звучит более тепло и лампово
а 1-й стучит по ушам...

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

угу послушал это гафно
http://volutar.eu5.org/ppackrat.mp3

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

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

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

а у того кто это слушает все запущенно не меньше...


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

Dexus
03.09.2020, 05:57
NEO SPECTRUMAN,
>на который ты дрочишь
За языком следи.
Дальше не стал читать.
Мало того что выдумываешь всякую дичь с таким апломбом (высасываешь хрен знает откуда), ещё и откровенно издеваешься над всеми своей идиотской манерой писанины. Тебе что, 10 лет?

NEO SPECTRUMAN
03.09.2020, 08:16
Дальше не стал читать.
ну и хрен с тобой
больше не буду тратить на тебя время

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

хотя я узнал про ресемплер с треугольным окном
https://user-images.githubusercontent.com/3478087/53121477-27b38400-3576-11e9-9d3c-67961f4c0521.png
значит время потрачено незря :v2_dizzy_roll:
надо будет как нить попробовать как оно работает...
хотя это столько же умножений сколько и и при любом другом "полноценном" окне...

shuran33
03.09.2020, 16:27
build 20200716


Починена загрузка шрифтов
Геометрия экрана комодора прибита гвоздями и не меняется
Исправлен бит турбо в EFF7 у Pent1024SL
deBUGa: изменена схема трейсера. Вроде, чуть быстрее. При длительном нажатии на F7 и до его отпускания тоже запускается трейсер. С F8 не работает
Добавлено открытие файлов по DragNDrop в MACOSX (наделали лунатизма "не как у всех" и гордятся этим)
dmg собран с Qt5.9


[ скачать платно и с смс (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20200716) ]

На MacOS при запуске пишет, что неожиданно завершила работу. Есть какие то условия для работы программы? У меня os x mavericks 10.9.5

SAM style
03.09.2020, 16:30
На MacOS при запуске пишет, что неожиданно завершила работу. Есть какие то условия для работы программы? У меня os x mavericks 10.9.5
А предыдущие сборки как? Я собираю в 10.11, другое в виртуалку упорно не ставится. Попробуй запустить из терминала и покажи выхлоп.

shuran33
03.09.2020, 16:50
А предыдущие сборки как? Я собираю в 10.11, другое в виртуалку упорно не ставится. Попробуй запустить из терминала и покажи выхлоп.

Запустил в терминале

предыдущие версии не пробовал ставить еще

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

73414

SAM style
03.09.2020, 17:06
Qt5.9 уже не работает на 10.9 и ниже - https://doc-snapshots.qt.io/qt5-5.9/supported-platforms-and-configurations.html
Ну жопа, чо... Опять надо качать Qt, теперь уже древнее (как минимум 5.6)

shuran33
03.09.2020, 17:14
Мне его надо поставить у себя? или ты его в сборке добавляешь?

SAM style
03.09.2020, 17:35
или ты его в сборке добавляешь?Я понижу версию Qt в следующий раз. Все версии, которые собирались с Qt5.9, не запустятся на 10.9
А с другой стороны, версий ниже 5.9 уже в официальном хранилище нет (5.1 уже не катит, мне надо минимум 5.6), онлайн инсталлеры предлагают тоже 5.9 и выше...

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


то у тебя тут вообще творится какая то дичь
До (http://samstyle.narod.ru/addons/xpeccy/old_2.wav.zip) (уже нормально снятый wav)
После (http://samstyle.narod.ru/addons/xpeccy/kih.wav.zip) (переделанно с КИХ на 32 шага)
Интересно посмотреть сравнение

Dexus
03.09.2020, 19:01
После (переделанно с КИХ на 32 шага)
Образец звука конечно не очень хороший. Хватило бы пары секунд скольжения, а далее - шумовые варианты (половина времени на ненужные частоты <50Гц.)
Но сравнивая с "ДО" - этот "После" звучит с приличной долей артефактов.

NEO SPECTRUMAN
03.09.2020, 19:38
Хватило бы пары секунд скольжения, а далее - шумовые варианты
шумовые варианты дают крайне кривую АЧХ
да и на них нету таких же низких частот
а эта фигня покрывает весь диапазон AY
хотя по техническим причинам
на верху получается много дырок
но сверять вполне можно

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

Dexus
03.09.2020, 19:54
Нечего вообще "вниз" смотреть. Там ничего показательного и интересного в меандре нет и быть не может. Гармонические отражения только наверху.
А шумы нужно усреднять за несколько секунд - будет все очень даже показательно.

NEO SPECTRUMAN
03.09.2020, 20:13
Нечего вообще "вниз" смотреть.
свою имху можешь засунть себе в любое свободное отверстие

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


Интересно посмотреть сравнение

ДО
https://jpegshare.net/images/72/ab/72ab4d8302b7dc2a1f92ae7085c41bb3.png

ПОСЛЕ
https://jpegshare.net/images/d5/81/d581400d4c3501e872d662578d534b04.png


на ПОСЛЕ слегка загнулись верха (лично мне пофиг)


вот разница
ПОСЛЕ деленное на ДО
в РАЗАХ
https://jpegshare.net/images/70/b7/70b7224085e8fb59c6c35aaa5097a465.png

Dexus
03.09.2020, 20:16
Я кажется понял в чём дело. Дополню пост когда точно все выясню.

В общем все дело в шуме. Частоты плюс-минус норм (меандр сложно испортить).
А вот шум - вообще не тот.
http://volutar.eu5.org/xp-nois2.png
Сверху - оригинальный шум с максимальным делителем (31).
Внизу - шум из Xpeccy (тот же делитель 31).
Судя по всему "частота" шума в 2.05 раз ниже того что нужно. Делитель 0 - совпадает по спектру (и соответственно по частоте).

Где-то делитель для шума умножается на 2. В предыдущих версиях (где сглаживания вообще не было, до февраля 2019) шум был как надо.

NEO SPECTRUMAN
03.09.2020, 20:34
SAM style, вот более медленные тест
https://dropmefiles.com.ua/ru/SAs523Nz

+разделелил каждую частоту щелчком

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

можно будет посмотреть на алиасинг в таком виде
https://user-images.githubusercontent.com/3478087/53120002-a3133680-3572-11e9-9eb6-daa58bb9e5d2.png

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


Делитель 0 - совпадает по спектру (и соответственно по частоте).
что происходит при делителе 0
не один документ нам не говорит
может там вообще сплошная 1

а так по графикам явно расхождение на октаву

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

вот тест шума
https://dropmefiles.com.ua/ru/aZxY
щас я тоже проверю

Dexus
03.09.2020, 20:42
что происходит при делителе 0
не один документ нам не говорит
Вообще-то везде где читал - написано что делитель 0 эквивалентен делителю 1. Плюс это согласуется с тем как оно на слух (при записи на микрофон с дискретизацией 44100 даёт одинаковую интерференционную картину). По крайней мере с тонами это так. Насчет шумов не уверен.

NEO SPECTRUMAN
03.09.2020, 21:24
Плюс это согласуется с тем как оно на слух. По крайней мере с тонами это так.
ДЕЛИТЕЛЬ 1 это 109КГц
такие частоты слашат только эльфы и возможно еще дельфины и летучие мыши

для человеков есть делители 5,6,7

у меня руки так и не дошли чтоб проверить на реале...

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


Вообще-то везде где читал - написано что делитель 0 эквивалентен делителю 1.
пример везде в студию
у меня пачка доков на AY\YM в соответствующей папке
и там ни одного упоминания

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

ну до
в xpeccy частота шума в 2 раза ниже чем нужно
https://jpegshare.net/images/26/ec/26ec9e4f1c9d747bc0a6b119fd4c2c59.png

xpeccy 0.6.20200731
unreal вроде последний deathsoft-овский

SAM style
03.09.2020, 21:27
пример везде в студию
Вообще, и я об этом где-то читал. Пример - ролик из ЧВ. На реале четко помню, что если ничего не трогать - между первой и второй частью останется шум, а там в рег.шума пишется 0.
Вон, снизу написано:
http://samstyle.narod.ru/addons/xpeccy/Screenshot_20200903_213455.png

Судя по всему "частота" шума в 2.05 раз ниже того что нужно
Сейчас просто возьму и уменьшу сдвиг периода шума, частота будет в 2 раза выше. :D (чёрт, реально, с какого хрена он у меня 6 раз сдвигается, когда надо 5)

NEO SPECTRUMAN
03.09.2020, 21:51
Вообще, и я об этом где-то читал. Пример - ролик из ЧВ. На реале четко помню, что если ничего не трогать - между первой и второй частью останется шум, а там в рег.шума пишется 0.
Вон, снизу написано:
http://samstyle.narod.ru/addons/xpeccy/Screenshot_20200903_213455.png


узнаю мануал на AY 3 8930 :)

ну да его я полностью не читал...
только это не AY 3 8910
и не YM2149

и все мы знаем что он не полностью обратно совместим с AY 3 8910...

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

SAM style, а нет возможностью по быстренькому его прикрутить к xpeccy?
я может даже окажу софтварную поддержку :)

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

SAM style
03.09.2020, 22:04
SAM style, а нет возможностью по быстренькому его прикрутить к xpeccy?
По-быстрому не получится. У него много отличий - наверное, придётся даже отдельно железяку для него городить (а не как AY/YM совмещенные, потому что отличий мало)

NEO SPECTRUMAN
03.09.2020, 22:37
Вообще, и я об этом где-то читал. Пример

Вообще-то везде где читал - написано что делитель 0 эквивалентен делителю 1.
а почему тогда и в унриале и в xpeccy
делитель 0 и делитель 1 разные вещи?

Dexus
04.09.2020, 00:01
а почему тогда и в унриале и в xpeccy
делитель 0 и делитель 1 разные вещи?
Откуда ж я знаю. Реализация несовершенная видимо.

https://zx-pk.ru/threads/32191-emulyatsiya-ay-ym.html

Пересобрал кастомный Unreal, чтобы делители 0/1 были одинаковые...

NEO SPECTRUMAN
04.09.2020, 00:35
какие приятные глазу частоты дискретизации
https://jpegshare.net/images/66/37/6637b1e27f132d9b06c3646a077eea8b.png

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

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

жаль до провала на 100КГц не хватает частот...

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

правда убедитсо на все 100%
сможем только на каптуресах с частотой 384КГц
когда будет отчетливо видно 2 одинаковых провала на 109КГц

ну или при помощи любого самого убогого осциллографа :)

Dexus
04.09.2020, 00:36
так нужно было сразу проверить и тон и огибающую
Сделай свою тестовую "музычку" в образе trd, загружу, скапчурю таким же образом. Желательно в каком-нибудь воспрозводимом и ay-emul/zxtune формате, ну и SNA для эмулей.

Кстати я там немного прошелся шумодавом (наверное поэтому выше 65кгц в шумах такие дыры а после 80кгц вообще нет), потому что паразитические 50Гц трещали люто.

NEO SPECTRUMAN
04.09.2020, 00:43
Кстати я там немного прошелся шумодавом (наверное поэтому выше 65кгц в шумах такие дыры а после 80кгц вообще нет), потому что паразитические 50Гц трещали люто.
остается вопрос ну нахрена

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


Сделай свою тестовую "музычку" в образе trd,
чтоб ТРД это тогда немного потом на днях

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


такие дыры а после 80кгц вообще нет)
ну там есть
только сильно тихо
а может это ужо отражение

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


80кгц вообще нет)
можно глянуть по децибельной шкале
тут охватываемый диапазон будет по больше
https://jpegshare.net/images/7f/89/7f89be9edc1321b2123b27f044a724d5.png
точнее шкала децибельная всегда
растягиваемый градиент тут растянут шагая по децибелам
а не линейно


а "с боку" так вообще видно все
https://jpegshare.net/images/e4/a2/e4a2c1d13dc5d26b8c92721307d79277.png

Dexus
08.09.2020, 22:26
https://github.com/samstyle/Xpeccy/blob/master/src/libxpeccy/sound/ayym.c#L109
Как-то так?


ay->chanN.per = (tone + 1) << 6;--->

ay->chanN.per = (tone>0?tone:1) << 5;

SAM style
08.09.2020, 23:13
Как-то так?
По сути да, я немного по-другому сделал:
if (tone == 0) tone++;
chip->chanN.per = tone << 5; // min 16T x2 half-periods

ЗЫ: немного рефакторю, поэтому тут chip

Dexus
08.09.2020, 23:29
Жду не дождусь чтобы проапдейтить цифры Xpeccy в своей сравнительной табличке на более красивые.

SAM style
15.09.2020, 21:44
build 20200915


Галка в дебугере для разрешения записи в пзу. Разрешает собственно дебагеру менять пзу. Эмулируемой машине как нельзя было, так и сейчас нельзя. Стоит учитывать, что применение настроек перезагружает файлы пзу, и все ваши правки улетают в небытие.
Исправлен период 0 для тона и шума AY/YM
Исправлена частота шума AY/YM
При включеной 'Restore media' теперь корректно сохраняются-восстанавливаются образы ленты
ПК Специалист: открытие *.rks на ленту (выбирается в диалоге) и собственно загрузка с ленты
Перемапил память NES


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

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

Dexus
15.09.2020, 22:35
Ну что ж, могу всех вас (нас) поздравить. Хрессу вырвался в топ-3 по качеству рендеринга АУ/УМ, а среди не-плееров в топ-1.
Откорректировал тестовый топик.
Помимо того, что починились частоты шума и период 0, еще изменился и период для тона 0, который давал кривую полуамплитуду огибающей при этом делителе. То есть получилось даже минус 3 кривости, а не минус 2. От эталона отстаёт только качеством фильтрации делителей <=5 (в идеале должна быть полная тишина для тона, т.е. компенсация всех гармоник, а амплитуда огибающей или шума, модулируемой таким ультразвуком, обполовинивается - это можно даже сделать "костылём"). Но это присутствует у большинства эмуляторов, и похоже что сабжевая фильтрация сейчас даже немного лучше оной у Unreal. Отрадно!

NEO SPECTRUMAN
16.09.2020, 05:06
владельцам MacOSX
да ладно
владельцы маков и прочих ифонов должны страдать :v2_devil: