PDA

Просмотр полной версии : Эмулятор БК-0010-01, БК-0011 и БК-0011М



Doronetty
14.12.2013, 13:02
Вышла новая версия эмулятора БК-0010-01, БК-0011 и БК-0011М, основанного на исходниках эмулятора Юрия Калмыкова. Качать здесь:
http://gid.pdp-11.ru/

P.S: Странно, что на zx.pk.ru этот эмулятор не был ранее замечен

hobot
14.12.2013, 17:28
Странно, что на zx.pk.ru этот эмулятор не был ранее замечен
Замечен замечен, просто последняя реализация сильно подвела в плане надёжности и глючности - я не тупо "обгадить" или там "просто поворчать", но там реально проблем на пустом месте куча появилась, которых раньше замечено не было. Общее оформление - огромный шаг вперёд, а вот основная ориентация на 11-ю модель - мне (если честно) не слишком важна. Но 10-01 стала глючить, чего в обычной 3.0 версии не наблюдалось - появилось в "улучшенной" ??? Такие дела.

gid
21.01.2014, 10:02
А вот мне наоборот. 10-01 вообще не важна, т.к. есть 11М, поэтому функциональность эмуляции 10-ки проверялась по остаточному принципу, запускается и ладно, значит вносимые изменения изменения не конфликтуют со старым кодом. Да и у меня в наличии есть только железная БК11М, БК10-01 нету, поэтому эмулировал то, что мне более нужно и чем я обычно пользуюсь.
И поскольку про глюки и ошибки никто не пишет, а почта, куда писать указана как на сайте, так и в окне "О программе" эмулятора, то по умолчанию считается, что либо всё в порядке, либо эмулятором никто не пользуется.

sinicum
01.03.2014, 02:25
И мне эмулятор Юрия Калмыкова понравился очень. Жаль, что новая версия не идёт.
gid, подскажи системные требования, может ещё что установить?

gid
13.03.2014, 14:24
Поскольку эмулятор собран в MS VC 2010, то для его работы необходим vc redist 2010 sp1 (http://www.microsoft.com/ru-ru/download/details.aspx?id=8328). Я специально проверял на чистой свежеустановленой WinXP. Эмулятор успешно запустился после установки этого пакета. Естественно, битность vcredista должна быть такая же, какова и битность эмулятора. Т.е. для работы х86 версии эмулятора на Вин7 х64, необходимо установить vcredist_x86.exe, для работы х64 версии - соответственно vcredist_x64.exe
Всё, больше ничего из программных средств не требуется. Насчёт аппаратных средств - нету у меня старого, раритетного железа, чтобы выяснить минимальные аппаратные требования, лишь бы OpenGL видеокартой поддерживался.

sinicum
17.03.2014, 20:06
Увы.. не хочет работать.. :(

..ещё год назад качал было это:
http://savepic.org/5164902m.png (http://savepic.org/5164902.htm)
и vcredist 2010 ставил, и такая тема не помогла (kernell31.dll):
http://forum.ru-board.com/topic.cgi?forum=62&topic=21526#14

теперь ставил с нуля
- диск WinXP SP1,
- update XP SP3,
- все заплатки Critical.WinXP.PreSP4,
- MICROSOFT VISUAL C++ 2010 RUNTIME LIBRARIES WITH SERVICE PACK 1
но выдёт:
http://savepic.org/5148518m.png (http://savepic.org/5148518.htm)
http://savepic.org/5145446m.png (http://savepic.org/5145446.htm)
нужен DirectX, dotNET, другой hal.dll (или halmacpi.dll для мультипроцессора, фиг знает чего ещё?..

может есть архив старых версий?

--------

никто не пишет, а почта, куда писать указана как на сайте, так и в окне "О программе" эмулятора
и я не видел внизу сайта, здесь отличная возможность напомнить всем адрес обратной связи для жалоб/предложений, это ведь [email protected]?


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

эпопея с БЕЙСИКом // работает с .COD - файлами, но как загружать .ASC (вот эмуль от Грабовца грузит *.ASC #000.bin - файлы благодаря имени программы внутри них)

заинтересовала работа Tape Manager'а
хорошая конвертация WAV - файлов, раньше использовал эмулятор от Грабовца, в его эмуле получались избыточные .bin (16 байт вначале и 2б чексуммы вконце),
концепт .tap новый?

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

sinicum
18.03.2014, 02:40
gid, кстати, а BKDL - работает на WinXP SP3

gid
19.03.2014, 10:12
Я тут вспомнил, при компиляции у меня включена опция использовать SSE2, видимо ваш процессор слишком старый, вот и вываливается с ошибкой. Однажды на каком-то старом Celerone у меня так же вываливалось с ошибкой. Чё-то я об этом не подумал. Надо будет перекомпилировать.


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

Это тест на внимательность, но пусть будет так.


кстати, а BKDL - работает на WinXP SP3

Наверное там не используются инструкции SSE2.


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

Мне бы тоже не помешала такая вещь, но как это реализовать я не знаю.


как загружать .ASC

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


концепт .tap новый?

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


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

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

sinicum
20.03.2014, 23:25
gid, споасибо за развёрнутый ответ, чую - не одинок я (с незапуском)..


но как это реализовать я не знаю.
Они (мы БК ,как и СИ программеры) не мотивированы, ..три выходных.. Однако утопия ясна: http://zx.pk.ru/showpost.php?p=639303&postcount=28 и т. д.


А вот мне наоборот. 10-01 вообще не важнаи мне тем и интересна, что "в жмущих трусах"...
(дай ссылочку, пожалуйста, на хард-доки 11M [в Л/С])


Наверное там не используются инструкции SSE2.
Да, вот грешить на ядро..
http://savepic.org/5128766m.png (http://savepic.org/5128766.htm)
..а вот я (и не одинок) не спешу за "модой".

gid
21.03.2014, 15:05
В общем теперь эмулятор под х86 будет собираться в двух видах, с пометкой i386 - без использования никаких наборов расширенных инструкций, и с пометкой i586 - с использованием SSE2. Как я понял из скриншота, вторую пометку я сделал неправильную, надо было i686 писать, но это не сильно принципиально, чтобы бежать и всё переделывать, при следующей компиляции исправлю.



(дай ссылочку, пожалуйста, на хард-доки 11M [в Л/С])

Что подразумевается под словом "хард-доки"? Что-то особенное? Не лежащее повсеместно?

sinicum
22.03.2014, 14:52
Что подразумевается под словом "хард-доки"?
.. про аппаратную матчасть.. Я вот 11M совсем не знаю, думал ты как знаток 10-ки и 11-й посоветуешь доки о принципиальных отличиях, или нужно изучать с нуля.

gid
22.03.2014, 19:33
Из документов могу посоветовать только схемы электрические принципиальные и документацию:
по БК10: 00001-01.32.03 - Математическое обеспечение микро-ЭВМ "Электроника БК0010" "Электроника БК0010Ш" Драйвер-мониторная система Руководство системного программиста. Находится здесь http://gid.pdp-11.ru/misc.html
по БК11: 00008-01.32.01 - Персональная микро-ЭВМ "Электроника МС0513". Программное обеспечение. Драйвер-мониторная система. Руководство системного программиста. Находится здесь http://archive.pdp-11.org.ru/BKGAMES/Bk0011_DOC/Driver.rar
по БК11М: 00015-01.32.01 Персональная ЭВМ "Электроника МС 0513" ("Электроника БК-0011М"). Программное обеспечение. Базовая операционная система. Руководство системного программиста. Находится по первой ссылке.
В них описываются регистры и вызовы EMT для соответствующей БКшки.
Никакой научно-популярной и сравнительной документации по БКшкам нет.

gid
28.10.2014, 09:37
Позволю себе напомнить о себе же.
Эмулятор обновлён. Список изменений и ссылки для скачивания можно найти пройдя по ссылке в первом посте этой темы.
По моим предположениям, обновление должно положительно сказаться на качестве прорисовки экрана как на WinXP, так и на Win8 за счёт использования разных рендеров. Так же теоретически уменьшена нагрузка на процессор и повышена плавность звука.
Теоретически потому, что мне негде протестировать работу эмулятора на очень слабом процессоре со слабой видеокартой. Для владельцев данных устройств все мои оптимизации могут остаться вовсе незамеченными.

Doronetty
16.09.2015, 12:05
На странице эмулятора http://gid.pdp-11.ru/ долгожданное обновление:

07.09.2015

Изменения:

Всё теперь собрано в Visual Studio 2013, поэтому для работы программ понадобится VCRedist 2013 той разрядности, что и запускаемая программа. Это если вместо работы программы, выскакивает окошко, что не найдена какая-нибудь dll библиотека - это как раз оно, нужен VCRedist.

Изменения в эмуляторе БК.
Максимальное разрешение экрана в оконном режиме теперь 1024 на 768 пикселей.
Для звука применена фильтрация методом БПФ, что немного положительно сказалось на качестве.
Благодаря товаришу KISSER исравлена палитра на правильную.
Немного улучшена стабильность работы.
Вроде бы найдены и исправлены какие-то ошибки, но это было полгода назад, и что там было, уже не помню.
Изменения в BKDE.
Исправлена ошибка извлечения файлов, когда при выделении ".." извлекались файлы и из родительской директории.
Исправлена ошибка распознавания кодировки кои8 в RT11, а так же теперь кодировка кои7н2 - это коды 0..127 без SI SO.
Исправлена палитра на более правильную.
Всякие несущественные мелочи.
Изменения в HDDImageMaker.
Добавлена кнопка обратной переконвертации образа из *.hdi обратно в *.img

Doronetty
21.09.2015, 17:31
Небольшой фикс не заставил себя долго ждать:

20.09.2015

Уточнение предыдущей версии.

Благодаря данным TheGWBV палитры приведены в соответствие с реальными на БК-0011М, а не как указано в документации на БК-0011. Цвета в палитрах в принципе были правильными, но немного перепутанными в палитрах 6-10

TheGWBV
22.09.2015, 16:06
Надеемся и ждем, что появится эмуляция блока ИРПС (с возможностью выбора com-порта РС) ;)

nzeemin
23.09.2015, 01:18
если вместо работы программы, выскакивает окошко, что не найдена какая-нибудь dll библиотека - это как раз оно, нужен VCRedist.

Поставьте статическую линковку runtime library при сборке релиза. Готовый EXE-файл будет больше, но кого это сейчас волнует. Зато пользователям не нужно будет искать VCRedist нужной версии, а разработчикам не нужно объяснять зачем он нужен и где брать. Либо пакуйте в дистрибутив все нужные DLL вместе с EXE.

---------- Post added at 01:18 ---------- Previous post was at 01:17 ----------


Надеемся и ждем, что появится эмуляция блока ИРПС (с возможностью выбора com-порта РС) ;)

А какой софт использует ИРПС? Т.е. в чём практическая польза эмуляции этого блока?

gid
23.09.2015, 09:34
Поставьте статическую линковку runtime library при сборке релиза.Линковка и так статическая, но всё равно требуется дллка msvcr120.dll, что я делаю не так, пока не понятно. Подозреваю, что это из-за использования MFC.

Надеемся и ждем, что появится эмуляция блока ИРПСНе появится ещё достаточно долго. Но я давно хочу сделать эту штуку. Просто чтобы было.

Doronetty
23.09.2015, 15:26
Gid, а как обстоят дела с переписыванием движка эмулятора заново для реализации корректных таймингов? Или это слишком сложная задача и идею пришлось забросить?

gid
24.09.2015, 10:21
Для данного эмулятора эта задача невыполнимая. Тайминги зависят от ВП1-037. А точные тайминги именно БК можно реализовать только имея точные потактовые модели ВП1-037 и ВМ1, иначе никак.
Я планирую написать новый эмулятор с потактовыми моделями процессора и контроллера памяти, но до этого момента ещё достаточно далеко.

Doronetty
28.01.2016, 14:30
Незаметно на сайте http://gid.pdp-11.ru/ произошло долгожданное обновление эмулятора:

27.01.2016

Изменения:

Изменения в эмуляторе БК.
Уточнена эмуляция переключения экранов на БК11(М).
Уточнена пошаговая отладка. Теперь при отладочном останове приостанавливается всё исполнение фрейма, и синхронизация с остальными процессами внутри фрейма сохраняется.
Благодаря предыдущему пункту починена эмуляция вращения дискеты в дисководе.
Ещё немного улучшено взаимодействие с виртуальной клавиатурой.
Экспериментально добавлены элементы для почти произвольного изменения текущей тактовой частоты процессора. Их можно найти внизу панели дампа регистров.
Немного улучшена стабильность работы программы.
Изменения в BKDE.
Починена поломавшаяся когда-то возможность просмотра файлов в виде спрайта.
Изменения в HDDImageMaker.
Убрано немного *****кода.

nzeemin
23.07.2017, 22:55
Эмулятор БК от gid обновлялся в этом году два раза:

20.01.2017
Обновление эмулятора.
Виртуальная клавиатура теперь масштабируется. У кого большие мониторы - видят большую клавиатуру, у кого маленькие - мелкую. Изображение клавиатуры предоставлено Voland'ом.
У виртуальной клавиатуры теперь можно отжать нажатые управляющие клавиши Шифт, СУ, АР2. И поправлена реакция этих клавиш на нажатие клавиши СТОП.
По просьбе уважаемых пользователей, в карту памяти добавлена возможность сохранения/загрузки содержимого страниц. Подробности и особенности работы смотрите в документации.

02.04.2017
Обновление эмулятора.
Уточнено изображение виртуальной клавиатуры.
После окончательного перехода на Windows10 оказалось что основной цикл эмулятора с таймерами работает коряво, и был заменён на старый цикл со счётчиками, который жрёт больше процессорного времени, но зато работает корректно.
Серьёзная реорганизация проектов и немного рефакторинга.
Частичный отказ от совместимости с Windows XP, в связи с чем сделан нормальный D3D рендер на Dx11. Для WinXP теперь будет отдельная специальная сборка.
Утилиты подверглись небольшому рефакторингу. Изменений нет.
http://gid.pdp-11.ru/

hobot
24.07.2017, 17:37
Эмулятор БК от gid обновлялся в этом году два раза
я пытался баг репорты писать автору, но ему похоже всё равно работает у пользователей на местах или не работает ) а самое главное - как )

ZEman
24.07.2017, 18:05
отвратительный эмулятор БК.
как писал hobot, авторам чихать на пользователей.
многие игры идут с багами или вообще не запускаются.

я считаю лучшим эмулятором бк эмулятор от вадима
http://soviet-pc.narod.ru/
качественный и хороший эмулятор.

hobot
24.07.2017, 18:13
я считаю лучшим эмулятором
не могу в эмуляторе Вадима (мне он тоже очень близок по оформлению и реализации)
нащупать элементарное су+ц в местной RT-11???

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

Что касается эмуляции БК0010-01 - пака я пользуюсь по прежнему старой сборкой 3.1 под окошки,
там ПКМ 10-я БКашка пашет и реально в любимые игры поиграть изредка.

ZEman
24.07.2017, 18:26
3.1 версия от Юрия Калмыкова тоже очень хороша.
потом я увидел этот новый эмулятор, обрадовался, запустил - увидел столько менюшек, настроек и прочего.
ну думаю, этот будет ещё лучше..
зря надеялся, пришлось потом снова на 3.1 версию перейти.

есть ещё один великолепный эмулятор БК под виндовс.
https://yadi.sk/d/OMIIDJ2r3LMZwW

хочу предупредить, некоторым анти-вирусникам (например avira) этот эмулятор ненравица.
вируса в эмуляторе нет.

hobot
24.07.2017, 18:33
ZEman, так по клавиатуре в эмулятора от Вадима ничего не подскажите?

ZEman
24.07.2017, 18:39
hobot, sorry, я сейчас не с компа в сети сижу, а с планшета.
За компьютер тока завтра вечером смогу сесть.
Но комбинации клавиш там должны нормально вводиться.
Я на нём много игрушек и демок проверял, совместимость у эмулятора отличная.

hobot
24.07.2017, 20:20
Я на нём много игрушек и демок проверял, совместимость у эмулятора отличная.
просьба отпишитесь когда до эмулятора Вадима доберётесь, как в БКОСи там элементарно прервать приложение
(ну то есть ctrl+Ц - не могу нащупать хоть убейся!).

gid
25.07.2017, 14:37
Эмулятор БК от gid обновлялся в этом году два раза
Если б не люди, которым была нужна виртуальная клава, то и этих обновлений бы и не было. Я слегка подустал от этого эмулятора. И не вижу перспектив в его развитии. Любое вносимое нововведение требует слишком много усилий. Исходники постепенно превратились в набор *****кода, в котором не очень хочется ковыряться. А придумывание концептуально нового эмулятора застопорилось.


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


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

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

nzeemin
25.07.2017, 16:09
gid, из того что я заметил в текущей версии: при запущеном эмуляторе не работает Alt+Tab в системе в целом, даже когда окно эмулятора не является активным.

А вообще мне этот эмулятор нравится (1) наличием исходников, (2) наличием отладчика, (3) подробной документацией.

hobot
25.07.2017, 20:26
gid, я писал вам про появившиеся глюки в эмуляции БК0010-01 прямо в эту ветку!
Вы мне ответили, что "это пофиг", далее последний (? 3.8) релиз эмулятора теряет (по непонятным причинам) опрос клавиатуры и просто кликом по экрану с игрой не всегда получается вернуть, об этом я разве не писал? Вроде писал. Но вы не лично мне, а просто сообщили, что фактически эмулятором заниматься прекратили - вот и я занимать прекратил писать бесполезные "жалобы" пользуюсь эмулятором 3.1 под XP - там 10-я бкашка работает стабильнее гораздо.

Тем не менее сайт у вас информативный, прекрасно оформлен и дополнительное ПО очень помогло мне и помогает,
ссылку на ваш сайт на мордочке архива имеется. Так что никакой вражды и негатива. Просто у вас своё там виденье
и туду, а мне хватает и старенького 3.1 время от времени поиграть.

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


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


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


И если все молчат
может просто боятся? или знают ответ заранее - я сам не играю, поэтому мне до ваших игр пофиг )))
мне нужно две кнопки - поэтому мне до ваших клавиатур пофиг ))) мне нужна только 11м поэтому мне
до 10-01 пофиг )))

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

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


ни на форуме Воланда
я бегу таких ресурсов там как-то "не правильно", да и публика там мягко скажем "странная" )))

gid
25.07.2017, 21:05
Alt+Tab
Я его перехватил для обработки сочетания клавиш АР2+Таб. Вы уже второй человек, обративший на это внимание. И так бы оно и было дальше, но уже после первого заметившего, я вспомнил, что АР2+Таб сочетание бессмысленное, т.к. кнопка Таб всё равно вызывает прерывание по вектору 274. В общем, эта не критичная бага будет устранена в следующем обновлении, когда-нибудь осенью, а пока - я труженик огородов и летом программированием не занимаюсь вообще.

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


gid, я писал вам про появившиеся глюки в эмуляции БК0010-01 прямо в эту ветку!
...
об этом я разве не писал? Вроде писал.
Если речь идёт о посте №2, то он с моей точки зрения не информативен, описано, что есть какие-то глюки, а какие - не описано, и как их воспроизвести, чтобы повторить у себя - тоже не описано, А я не телепат, я не могу исправить то, чего не знаю.

Но вы не лично мне, а просто сообщили, что фактически эмулятором заниматься прекратили - вот и я занимать прекратил писать бесполезные "жалобы" пользуюсь эмулятором 3.1 под XP - там 10-я бкашка работает стабильнее гораздо.
Заниматься прекратил, обещанный блок ИРПС реализован вряд ли будет, т.к. он не вписывается в концепцию вообще, там пол эмулятора заново перепридумать надо, а раз так, то лучше дождаться, когда придумается весь новый эмулятор.
Но на полезные "жалобы" - в которых будет описано как воспроизвести проблему, я отреагирую.

да хватило бы просто вменяемого описания клавиатуры как сделано.
Может оно есть где-то и я его пропустил?
Да, пропустили. В директории с эмулятором есть директория Docs, а в ней - файл kbdLayout_BKPC.html, там интерактивная раскладка БКшных клавиш на РС клавиатуре, незадействованные - отданы под некоторые горячие клавиши самого эмулятора, их смотреть в файле Emulator Documentation.htm

может просто боятся? или знают ответ заранее - я сам не играю, поэтому мне до ваших игр пофиг )))
мне нужно две кнопки - поэтому мне до ваших клавиатур пофиг ))) мне нужна только 11м поэтому мне
до 10-01 пофиг )))
Повторюсь, мне пофиг на сентенции "Эмулятор плохой, в нём ничего не работает". А если будет чётко описано: что не работает, где не работает, как не работает (в конце-концов, если хочешь каких-то улучшений, изволь потрудиться и оформить свою мысль так, чтобы оппонент её понял, желательно так, как сам этого хочешь, а не как тараканы в его голове нашепчут), то это будет принято к сведению, и по возможности будет исправлено. Или я прямо скажу, что я не умею, и не знаю как это исправить и проблема будет внесена в список известных проблем, авось когда-нибудь заумею и узнаю и исправлю.

я бегу таких ресурсов там как-то "не правильно", да и публика там мягко скажем "странная" )))
А я не гнушаюсь. И не такое видали.

Doronetty
26.02.2018, 12:48
Эмулятор БК вновь обновился!

21.02.2018

Небольшой фикс.

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



20.02.2018

Обновления.
1.Добавлена новая версия утилиты BKDE. Недоотлажена до конца, поэтому и старая никуда не делась.

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

Точно без ошибок работает с АНДОС и МКДОС, возможно и с КСИДОС тоже без ошибок. С остальными, с RT-11 скорее всего работает, с АОДОС и НОРД могут быть проблемы, а может и не быть, так я и не смог по-нормальному там отладить. Работа с НС-ДОС совсем не гарантирована, может работает, может и нет.

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

Программа умеет работать с реальными дискетами в реальном дисководе при наличии драйвера fdrawcmd.sys

2.Улучшения эмулятора: ◦Уточнена эмуляция экрана. Стало гораздо лучше.
◦Добавлено окно настройки эмулятора, в котором можно изменить те настройки, которые требуют перезапуска эмулятора. Такие как тип рендерера, частоту дискретизации, образы HDD, подключенные в данной конфигурации. Идея и начальная реализация - SCALOlaz.
Найти окно можно в меню "Опции" или на главной панели инструментов.
◦Добавлено так сказать устройство "Блок нагрузок", для эмуляции тестирования порта УП. Находится в меню "Отладка". Конфликтует с эмуляцией джойстика, поэтому одновременно может быть подключен или джойстик, или блок нагрузок.

3.В кроссассемблере Turbo8 чуточку улучшена совместимость псевдокоманд .ascii, .asciz, .rad50 с текстами для MACRO-11. Символами ограничителями текста теперь могут быть любые символы пунктуации, скобки и прочие не буквы и не цифры, кроме символов '<', '>', ';'. Коды из диапазонов 040..077 (без цифр), 0133..0137, 0173..0177.



27.09.2017

Обновление эмулятора.
1.Убран не нужный перехват клавиш Alt-Tab
2.Улучшена работа с секциями в ini файле конфигурации.
3.Частота дискретизации звука теперь может задаваться как константа в ini файле, допустимы три значения: 44100, 48000 и 96000 Гц.

P.S: Про обновление от 27 сентября 2017 не писал, т.к. автор не поменял ссылки на файлы, т.е. скачивалась старая версия вместо новой.

gid
27.02.2018, 09:27
автор не поменял ссылки на файлы, т.е. скачивалась старая версия вместо новой
Не "не поменял", а просто не заметил этой недоработки. И никто не удосужился ему на это указать.

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

И ещё кстати, прошло уже полгода, но никто так и не выложил ни одного описания глюков в эмуляторе с играми на БК10. Чтобы можно было взять и повторить глюк, найти ошибку и исправить.

Doronetty
08.03.2018, 19:23
И снова обновление!

06.03.2018

Обновление эмулятора:
1.Окно дампа регистров разделено на два окна: ◦дамп регистров CPU, системных регистров и портов и регистров режимов работы контроллера АльтПро (чтобы сразу видеть, в каком режиме работает СМК);
◦дамп регистров FDD и HDD, который прячется за дампом памяти, поскольку нужен очень редко (да почти вообще не нужен).

Убраны не нужные информационные сведения, которые можно посмотреть в окне изменения настроек эмулятора.

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

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

2.Взяты некоторые иконки SCALOlaza для улучшения внешнего вида.
3.Рабочую частоту и модель муз.сопроцессора теперь тоже можно задавать в настройках эмулятора. Я на слух разницы не заметил, т.к. различие в алгоритмах генерации шума не эмулируется. Используется тот, что в Ямахе.
4.Исправлена недоделка в умном сохранении параметров в ini файл, введённая в билде 1709.5847.
5.Продолжается борьба с последствиями введения разных доступных пользователю частот дискретизации звука. Почти всё исправлено. Не работает восприятие собственного звука, записанного на частоте 44100Гц и читаемого на частоте 48000 Гц, и наоборот, т.е. если кто-то использует wav файлы, то работать с ними лучше только на частоте 44100 Гц.
6.Заодно, теперь можно загружать как .wav ещё и .bin файлы. Не знаю, зачем, но возможность такая была изначально, просто не задействована была. Разве что из ностальгических чувств, слушать звуки с кассеты с играми.

Vinnny
09.03.2018, 10:16
v3.9.1803.6173
а зачем такая сложная нумерация версий?

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

Doronetty
12.03.2018, 13:36
Кстати, интереса ради запустил демку Technological Dreams на новой версии, всё ОТЛИЧНО работает, даже не ожидал!!!!

gid
13.03.2018, 09:17
Вот только сделать так, чтобы корректно работала фича, которая в самом конце этой демки, так и не удалось.
В ней эффект наложения содержимого двух буферов экрана сопровождается неприятным мерцанием. А в некоторых других демках с этим эффектом вообще ужас что творится.

hobot
16.03.2018, 06:35
Повторюсь, мне пофиг на сентенции "Эмулятор плохой, в нём ничего не работает"

но нельзя же игнорировать самые очевидные моменты,
вот в папке BIN - в ней файл с игрой bolder.bin, что надо сделать,
что бы в неё сыграть?

gid
16.03.2018, 15:19
Пошаговая инструкция:
1. Запускаем эмулятор.
2. Выбираем конфигурацию БК-0010-01
3. Выходим из Бейсика в Монитор командой MO<Ввод> признак монитора - знак '?'
Дальше возможны варианты.
А. Если включена опция "Эмулировать загрузку ленты".
4.а. Набираем M<Ввод>
На запрос 'Имя ?' жмём <Ввод>
Появится диалоговое окно для выбора файла. Выбираем там нужный нам файл (BOLDER.BIN), и он загружается. Поскольку он снабжён автозапуском, то и сам запускается.

Б. Если вЫключена опция "Эмулировать загрузку ленты".
4.б. Набираем M<Ввод>
На запрос 'Имя ?' набираем "BOLDER"<Ввод>
Выбираем пункт меню "Файл\Загрузить ленту...", появится диалоговое окно выбора wav файлов. Переходим в директорию bin и выбираем файл BOLDER.BIN (Это стало возможно в последней версии сборки). Ждём загрузки и наслаждаемся ностальгическими звуками. По окончании загрузки файл сам запускается.

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

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

6. Играем.
Играть с клавиатуры крайне не удобно, ровно так, как и на оригинальной БК, поэтому лучше играть с эмуляцией джойстика.
Выключаем NumLock, в игре задаём управление от джойстика и играем с бОльшим комфортом.
--------------
В процессе обнаружился наверное неустранимый косяк. Поскольку инструкции, укладывающиеся во фрейм выполняются авансом, за как можно меньшее время, а нажатия на клавиши клавиатуры обрабатываются в реальном времени, то появляется рассинхрон.
И в играх, вот как конкретно в BOLDER, в которых опрос клавиатуры делается не по прерыванию, а через бит 6 порта 177716 клавиатура просто не синхронизирована по времени выполнения с игрой.
В общем игра думает, что клавиша не нажата, в то время как она нажата, т.к. инструкции опроса клавиатуры давно выполнились, опросили бит 6 убедились, что ничего не нажато, а клавишу только нажали.

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

Lethargeek
16.03.2018, 15:51
В процессе обнаружился наверное неустранимый косяк. Поскольку инструкции, укладывающиеся во фрейм выполняются авансом, за как можно меньшее время, а нажатия на клавиши клавиатуры обрабатываются в реальном времени, то появляется рассинхрон.
И в играх, вот как конкретно в BOLDER, в которых опрос клавиатуры делается не по прерыванию, а через бит 6 порта 177716 клавиатура просто не синхронизирована по времени выполнения с игрой.
В общем игра думает, что клавиша не нажата, в то время как она нажата, т.к. инструкции опроса клавиатуры давно выполнились, опросили бит 6 убедились, что ничего не нажато, а клавишу только нажали.
а в чём проблема, это ж эмуль с ненастоящей клавой, опроса клавиш хватит в начале фрейма, вот весь фрейм нажатие и засчитывать

gid
16.03.2018, 16:44
Нажатие реальной клавиши фиксируется по событию OnKeyDown, отжатие - по событию OnKeyUp ведь надо же обрабатывать бит 6 в регистре 177716 чтобы зафиксировать нажатие и отжатие. А эти события приходят когда им вздумается, а не когда начинается фрейм.
наверное можно как-то привязывать результаты событий клавиатуры к границам фрейма, но нужно городить уже диспетчер привязки событий, чтобы они привязывались каждое к своему фрейму в порядке прихода. Делать очередь фреймов и событий, синхронизировать их.
Причём OnKeyDown приходит циклично, пока клавиша нажата. а OnKeyUp - однократно при отжатии клавиши.
Я вот не вижу простого решения.

Lethargeek
16.03.2018, 17:13
что там городить, дребезг, что ли, эмулировать собираешься? был за фрейм хоть один keydown? ну и нажата, значит, на время следующего

ZEman
16.03.2018, 17:53
сейчас видео выложу.
это просто...
у меня нет слов как назвать ЭТО !
по сравнению с прошлыми эмуляторами мрак.

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

https://youtu.be/yt8-dwoo2t8

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

hobot
16.03.2018, 22:33
У меня было (проскочило)
предложение к тов. Patron'у (http://zx-pk.ru/threads/18351-emulyator-dvk.html?p=933458&viewfull=1#post933458)

gid
16.03.2018, 22:50
был за фрейм хоть один keydown? ну и нажата, значит, на время следующего
Сделал очередь событий клавиатуры, откуда события берутся в начале фрейма. Статус нажатия/отжатия держится весь фрейм целиком. Ничего не изменилось. Никаких улучшений.


у меня нет слов как назвать ЭТО !
Повезло. Словил дедлок. А я думал, что уже все места костылями подпёр. Значит ещё одно было незамеченное.


У меня было (проскочило)
предложение к тов. Patron
Я - за. Ибо на меня надежды мало.

Lethargeek
17.03.2018, 16:21
Сделал очередь событий клавиатуры, откуда события берутся в начале фрейма. Статус нажатия/отжатия держится весь фрейм целиком. Ничего не изменилось. Никаких улучшений.
зачем очередь?? зачем в принципе события? написал же, хватит даже одного опроса в начале фрейма, что нажато было в этот момент

Pyk
17.03.2018, 17:41
Как это исправить я не знаю. Возможно придётся обратно уменьшить время фрейма до 20 мс, чтобы немного увеличить отзывчивость. Но это скажется на производительности.
А какова сейчас продолжительность фрейма? IMHO для игр 20 мс - это практически максимум...

gid
18.03.2018, 19:41
хватит даже одного опроса в начале фрейма
Пример кода приведите пожалуйста.

А какова сейчас продолжительность фрейма?
А сейчас 40 мс. Так звук с ковокса и AY более гладкий, без микроразрывов в промежутках между фреймами. Т.е. если они и возникают, то треск не так сильно в уши бросается.

Pyk
18.03.2018, 22:51
Посмотрел немного исходники. До конца не разобрался, но как понял используется waveOut, и привязка к реальному времени происходит путем ожидания окончания звучания фрейма?
При этом действительно возникает треск при использовании буфера аудио слишком малого размера.
Одно из решений: уменьшить размер фрейма до 20 мс, оставив размер аудиобуфера прежним: задержка звука не так заметна, как задержка реакции на клавиатуру. Я применял подобный способ в 3-й версии emu80.

Цикл при этом будет выглядеть примерно так:
- фрейм 20 мс
- задежка до 20 мс
- рисуем экран и опрашиваем клавиатуру
- фрейм 20 мс
- ждем окончания проигрывания 40 мс звука
- рисуем экран и опрашиваем клавиатуру

Lethargeek
19.03.2018, 00:52
Пример кода приведите пожалуйста.
что-то вроде:


// вызывается один раз в начале фрейма
old_portX_value = new_portX_value;
new_portX_value = 0xFF; // ничего не нажато
kb_state = getKeyboardState(); // что сейчас нажато на пц-клаве
if (kb_state[some_key]) new_portX_value &= some_key_mask;
// и так далее

// обработка изменения состояния, тоже однократно
if (old_portX_value != new_portX_value) { ... }

// и далее в течение фрейма при любых чтениях порта X подставляем new_portX_value

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

gid
19.03.2018, 09:51
getKeyboardState()
Функция GetKeyboardState (https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms646299(v=vs.85).aspx) возвращает массив размером 256 байтов, для состояний каждой из 256 виртуальных клавиш.
Чтобы узнать, какая клавиша нажата, надо пробежаться по массиву и определить их состояние. Но при этом если нажато несколько клавиш одновременно, невозможно определить, какую клавишу для БК надо считать нажатой, т.к. в любой момент времени на БК считается нажатой только одна клавиша, сколько бы их не нажимали одновременно, нажатой считается первая из всех нажатых. Если считать нажатой первую найденную в массиве, мы рискуем не угадать.
Особенностью клавиатуры на БК является то, что никакие другие коды и вообще ничего не обрабатывается, пока все одновременно нажатые клавиши не будет отпущены. После этого ожидается нажатие клавиш. Т.е. требуется отслеживать именно факт нажатия и факт отжатия клавиш клавиатуры.
А вот такую функцию, которая бы сообщала, что вот сейчас что-то нажато на клавиатуре, я не нашёл.

Pyk
19.03.2018, 11:23
gid, а почему бы не использовать сообщения клавиатуры (WM_KEYUP, WM_KEYDOWN)? Они же приходят именно в том порядке, в каком были нажаты клавиши...

Lethargeek
19.03.2018, 12:52
Но при этом если нажато несколько клавиш одновременно, невозможно определить, какую клавишу для БК надо считать нажатой, т.к. в любой момент времени на БК считается нажатой только одна клавиша, сколько бы их не нажимали одновременно, нажатой считается первая из всех нажатых. Если считать нажатой первую найденную в массиве, мы рискуем не угадать.
выбирай любую, какая разница? если ты ухитрился нажать несколько кнопок в промежутке 20мс, то и сам не знаешь, какая первая

gid
19.03.2018, 21:28
а почему бы не использовать сообщения клавиатуры
Потому что Lethargeek против такого метода. А у меня как раз такой и используется.

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

А вообще, я не знаю, чем hobot не доволен. В игре Boulderdash эмулятор БК ведёт себя именно так, как и настоящий БК-0010 с дубовой кнопочной клавиатурой. По моим детским воспоминаниям. Жмёшь на кнопку - а она не нажимается. Или нажалась, а реакции нету. Или наоборот, ты уже нажал другую кнопку, а игра всё ещё думает, что нажата предыдущая и человечек вечно бежит не туда. Помню, как в школе, на таких БКшках играл в игру Клад, пройти первый уровень было уже большим достижением.

В общем, я сдаюсь. Пусть кто может - сделает больше.

Lethargeek
19.03.2018, 22:02
Какую любою?
любую любую (из нажатых, можно случайную) :v2_dizzy_biggrin2:


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


И нажато может быть абсолютно любое количество клавиш.
ииии что? еще раз: в промежутке 20мс человек не способен проконтролировать, какая из нескольких клавиш нажмётся первой, так что можно смело выбрать любую


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


Мне совершенно не хочется смешивать обработку клавиатуры по событиям и по опросу состояния,
насколько я понял, бит 6 порта 177716 определяет именно состояние

gid
21.03.2018, 09:55
До конца не разобрался
Ещёб. Даже мне приходится прибегать к помощи средств вижуалстудии, чтобы разобраться в той каше, что наворочена за всё это время.
У меня не получается сделать такой цикл. Тот, что используется сейчас мне не нравится, я давно хочу изменить его, но как бы я ни ухищрялся, что бы ни придумывал, всё равно в конце-концов прихожу к тому, с чего начал. К этому же виду цикла.
Звуковые буферы заполняются на лету с заданной частотой дискретизации звука во время исполнения фрейма. Потом по мере заполнения буфера, он отправляется на звучание. Если сделать звуковой буфер длиной 40мс, то при работе эмулятора получается чудовищное отставание звука в 40мс. Даже отставание в 20мс заметно. Поэтому всю работу с выводом звука на устройство я взял из BKBTL, с небольшой модификацией. Дополнительно фрейм разбивается ещё на 4 части. Т.е. звуковой фрейм на самом деле ещё в 4 раза меньше процессорного.


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

Lethargeek
21.03.2018, 20:11
Lethargeek, а напишите какой-нибудь тестовый проект, который покажет преимущества вашего метода.
Нагловатенько. Париться, только чтобы доказать здесь что-то, не собираюсь. На свои проекты времени не хватает. Мне достаточно, что в моём эмуле для Спека метод работает.

Doronetty
28.03.2018, 17:49
И опять обновления на сайте (такая активность автора не может не радовать, так, глядишь и до идеального эмулятора доберёмси):

27.03.2018

Обновление эмулятора:
1.Исправление некоторых ошибок, показанных на zx-pk.ru, которые удалось повторить. Исправление других ошибок, которые попадались на глаза.
2.Некоторые улучшения внешнего вида, сделанные SCALOlazом.
3.Рефакторинг и перетасовка кода.



13.03.2018

Обновление эмулятора:
1.Добавлена возможность задавать размеры экрана эмулятора из списка заданных размеров. Список находится в меню "Вид".
2.Уточнён метод задания частот музыкального сопроцессора в окне изменения настроек. Добавлен список некоторых распространённых частот, чтобы не вводить их вручную. Если чего-то в списке нет, то оно вводится вручную.
3.Случайно обнаружена и устранена ещё одна ошибка в умном сохранении параметров в ini файл. Теперь ненужные записи из него всегда удаляются.
4.Всё ещё продолжается борьба с последствиями введения разных доступных пользователю частот дискретизации звука, а теперь уже заодно и разных рендеров в ранее сохранённых состояниях эмулятора. Остались всё те же мелкие неудобства, все критические ошибки, потенциально приводящие к краху, устранены (я надеюсь).

gid
26.05.2018, 20:11
Эмулятор в очередной раз обновился. Что нового, см. на сайте.
Исправлены довольно дурацкие, и старые ошибки, которые никак себя не проявляли, пока не были применены правки от 27.03.2018 которые были призваны улучшить поведение клавиатуры в игре Bolderdash, но ни к чему не привели.
Исправлена внесённая тогда же ошибка в диспетчер прерываний, которая была замечена бдительными пользователями.
Ошибки с клавиатурой были замечены другими бдительными пользователями.

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

nzeemin
18.06.2018, 13:27
gid, Чтобы ускорить/замедлить эмуляцию используется NumPad+ и NumPad-, которые меняют частоту на 1 МГц -- т.е. чтобы ускориться в 2 раза надо нажать клавишу 4000 раз. Мягко говоря, это неудобно.

gid
18.06.2018, 15:50
Это горячие клавиши грубой подгонки частоты под свои нужды. Они не предназначены для того, чтобы ими ускорялись/замедлялись в разы. Для этого есть элементы управления на самом верху окошка дампа регистров CPU (потому что некуда приткнуть было, новое окошко делать ради трёх кнопочек и одного эдитбокса я не стал.) Там можно вручную задать нужную частоту (любую, она сама скорректируется до допустимых значений), чтобы ускоряться/замедляться в нужное количество раз, а так же можно кнопкой мыши тыкая в кнопочки менять частоту с шагом 1кГц (на которые и есть эти горячие клавиши) и 1Гц (для самых требовательных)

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

Хотя, у меня возникла мысль, сделать горячие клавиши с модификаторами.
напр. NumPad+ / - меняют частоту с шагом 1кГц
Alt+NumPad+ / - - с шагом 1Гц
Ctrl+NumPad+ / - - с шагом 10кГц
Shift+NumPad+ / - с шагом 100кГц
Ctrl+Shift+NumPad+ / - - с шагом 1MГц
Shift+Alt+NumPad+ / - - с шагом 100Гц
Ctrl+Alt+NumPad+ / - - с шагом 10Гц
Ctrl+Alt+Shift+NumPad+ / - мегакомбо, даж не знаю, нужно ли что-то навешивать на это сочетание

Руслан
23.09.2018, 20:23
Подскажите как wav файлы грузить в нём? Нужно свои оцифровки проверить...

gid
24.09.2018, 11:38
Руслан, В меню "Опции" выключить опцию "Эмулировать загрузку ленты".
Станет доступным пункт "Файл"-"Загрузить ленту". Выбираете его, через диалог выбираете нужный wav и он звучит.
При этом спикер должен быть включён, иначе wav не будет приниматься.
Команды загрузки файла с кассеты должны быть поданы перед выбором wav файла.

Руслан
24.09.2018, 19:49
Спасибо, буду смотреть. А скорость воспроизведения можно увеличить?

hobot
25.09.2018, 05:40
При этом спикер должен быть включён - что есть спикер?

gid
25.09.2018, 07:54
Спикер - пищалка, встроенный в БК пьезодинамик. Его эмуляцию можно выключать и включать обратно. Однако эмуляция приёма wav файлов жёстко связана с эмуляцией спикера. Способа разделить их я не искал, так было изначально. И работа с wav, просто полезная опция, на мой взгляд, при эмуляции дисковода - рудиментарна.

rasmer
09.10.2018, 22:26
Люди добрые а не подскажете, есть ли для БКшных эмуляторов тесты на правильность исполнения команд и прерываний?

nzeemin
09.10.2018, 23:43
Люди добрые а не подскажете, есть ли для БКшных эмуляторов тесты на правильность исполнения команд и прерываний?

Есть команда T в Мониторе БК-0010.
Есть МСТД для БК-0011М.
Есть cputest.bin.
Есть тест TMOS -- 791401.bin
Есть тест процессора 1801ВМ1 от dr.Titus.

Вот мой тестовый стенд: https://github.com/nzeemin/bkbtl-testbench

rasmer
21.10.2018, 20:54
Есть тест процессора 1801ВМ1 от dr.Titus.Где скачать?

nzeemin
22.10.2018, 00:20
Где скачать?

https://github.com/nzeemin/bkbtl-testbench/blob/master/data/rt11v4_1.img -- есть на этом диске, TSTVM1.SAV
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/titus_vm1test/ -- тут есть .SAV и .MAC

Doronetty
27.06.2019, 19:30
Мегаапдейт на сайте от 21 июня:

Изменения:
1.Эмулятор: ◦Новый алгоритм трансляции инструкций.
◦Добавлены EIS/FIS инструкции на будущее, но они отключены, т.к. в ВМ1 их нет.
◦Исправлена ошибка дизассемблирования некоторых FIS инструкций.
◦Найдено и сэмулировано аппаратное отличие ПЛИС реплики СМК от оригинала, по которому можно программно определить реплика у нас или оригинал.
◦Управление эмулятором конденсатора добавлено к фильтру спикера, т.е. теперь отключается, чтобы своими ушами могли услышать разницу вработе.
◦Переделка обработки клавиатуры в связи с безфреймовым алгоритмом, такие сложности больше не нужны.
◦Исправлена ошибка в выводе размера файла в менеджере лент.
◦Добавлена возможность выбора формата bin сохраняемого файла - длинныйили короткий, по умолчанию используется короткий. Переключение - правкапараметров в ини файле.
◦Добавлена поддержка ещё одного формата бин: 4 байта заголовок (адресдлина) и в конце файла - 2 байта контрольная сумма.
◦Откорректировано изображение плёночной клавиатуры.
◦Если при сохранении такой bin,wav,tap файл уже существует, то создаётсяфайл с номером в скобках в конце имени.
◦Внутренняя обработка звука полностью в double, чтоб не перекодироватьтуда-сюда в разных местах.
◦Убрано автовыравнивание звука.
◦Фикс драгндропа и запуска с командной строки, в этом случае принудительнозапускается БК10, как задумывалось с самого начала. Этот метод поломалсяпри введении кастомных настроек для каждой конфигурации.
◦Изменён формат и структура скрипта. См документацию.
◦Фикс модального окошка сообщений. Оно иногда пряталось под основнымокном, теперь всегда на переднем плане.
◦Проверка имён сохраняемых файлов на запрещённые в Windows символы. И корректировка естественно. При этом обратно такой бин файл уже непрочитается. Например: если в файле есть символ ':' - "ABC:DEF" то онозаменится на символ '_'. Но эмуляция чтения кассеты БК будет искатьна диске файл именно с именем "ABC:DEF" и не найдёт естественно. Решенияразрешения такого конфликта пока не найдено.
◦Уточнена эмуляция битов 2 и 3 регистра 177716.
◦Сделана возможность свернуть полноэкранное окно в некоторых режимах. А в Direct3D - не получилось.
◦Более корректный вывод информации в диалогах выбора выбора образадискеты, менеджере лент, и диалоге выбора bin,wav,tap файлов в менеджерелент.
◦Усовершенствован парсер wav в bin. Но лучше не стало.
◦Автовыравнивание добавлено к принимаемому wav при эмуляции кассеты. Улучшения микроскопические, почти незаметно.
◦Любая клавиша клавиатуры WIN теперь работает как переключатели раскладкиРУС/ЛАТ. Это немного облегчит жизнь людям, не имеющим классической 102 кнопочной клавиатуры. Т.к. хоть одна клавиша WIN на клавиатуре всё жеесть.

2.BKDE: ◦Исправлена ошибка при работе с дисками Андос.
◦Уточнение обрезки имён файлов при импорте файлов с длинными именамив образы.
◦Добавлена возможность выбора формата bin сохраняемого файла - длинныйили короткий, по умолчанию используется короткий.
◦Добавлена поддержка ещё одного формата бин: 4 байта заголовок (адресдлина) и в конце файла - 2 байта контрольная сумма.
◦Фикс дрангдропа, теперь нельзя дропнуть файлы в ещё не открытыйобраз.

3.BKTurbo8: ◦Метка может начинаться с символа $, теперь это буква.
◦Фикс парсера float.
◦Исправлена ошибка с комментариями после .ascii.
◦Добавлена псевдокоманда .include, позволяющая включать в текстпрограммы другие тексты программ. Вложенность ограничена доступным ОЗУ системы, но с защитой - нельзя повторно включить уже однажды включенный файл в циклевложенности.
◦Исправлена ошибка в обработке команды "." (текущий PC).

4.Дополнения в документации, и исправление опечаток.

Doronetty
12.07.2019, 16:50
И снова апдейт:

10.07.2019

Изменения:
•В эмуляторе реализовано разное время выполнения команд из динамического ОЗУ и ПЗУ / ОЗУ СМК. Но только реализовано, не уточнено, пока что команды из ПЗУ или ОЗУСМК выполняются просто быстрее, чем из динамического ОЗУ. Насколькоони должны быстрее выполнятся, будет уточнено позднее. Но оно уже сейчас может пригодиться.
•Решена проблема чтения имён .bin файлов с запрещёнными в Windows символами.
•Обнаружен, и пока даже не знаю как устранить, серьёзный дефекталгоритма эмуляции клавиатуры: если нажали клавишиСУ/Шифт/АР2+клавиша, а потом отпустили сперва СУ/Шифт/АР2, а потомклавишу, то алгоритм полностью залипает, т.к. считает что былаотпущена совсем не та клавиша, которая была нажата, и повторнонажать уже ничего не даёт. В общем, я перемудрил с эмуляцией. Покавыход такой - отпускайте клавишу-модификатор после отпусканияосновой клавиши.

Doronetty
26.10.2019, 14:35
Несколько апдейтов прошли незамеченными:

25.10.2019
1.В эмулятор добавлена эмуляция бага с битом С после команд movb,mfps, swab если адресация приёмника 0.
2.В BKDE исправлена ошибка экспорта подкаталогов с файлами, котораябыла во всех системах, кроме ANDOS.
3.Проделан рефакторинг всех исходников всех проектов в процессе пощупывания VS2019. Из-за чего всё остальное пересобралось с новыми версиями безизменений в функциональности.



03.09.2019
•В BKDE улучшена навигация по списку файлов, теперь можно перемещатькурсор колесом мыши и средняя кнопка работает как клавиша Enter. Также, стрелками влево/вправо можно листать список файлов как клавишами Page Up/Page Down.
•Оказывается, в конфигурациях БК10 в регистр звука иногда попадалмусор, и спикерная музыка в некоторых случаях звучала немного не так, как в оригинале. Ситуация исправлена.

05.08.2019

В BKTurbo8 исправлена опечатка в обработчике аргумента (префикс ^R) вкодировке RADIX-50, приводившая к зацикливанию программы.

30.07.2019

•В BKDE исправлена ошибка переименования файлов в RT-11
•В BKTurbo8 улучшена работа с входными файлами при использованиишаблонов и масок.

23.07.2019

Изменения в эмуляторе:
•Исправлена опечатка в коде обработки событий окошка дизассемблера. Не работала навигация по Page Up/Page Down.
•Исправлен дефект алгоритма эмуляции клавиатуры из предыдущего релиза, он появился после неудачного скрещивания модулей обработки реальнойклавиатуры и виртуальной. Всё отменено, и всё обратно работает как задумано.
•Частично исправлена ситуация эмуляции обработки клавиатуры черезкоманду RESET. Как на БК это не работает, но хотя бы хоть как-то работает.

В BKTurbo8 немного причёсаны исходники, добавлены комментарии.


Вопрос автору - а Vsync можно реализовать, а то скроллинг того...жуть просто?
Во избежание недоразумений и кривотолков - у меня 50Гц FullHD телевизор заместо монитора, так что большинство эмуляторов Atari, Commodore и конечно Спектрума выдают плааааавненький такой скроллинг.

gid
26.10.2019, 14:48
Я не знаю как сделать плавный вывод на экран. Знал бы, давно сделал бы. Там беда в том, что сам фреймрейт рваный, кадры выводятся по мере подготовки и это получается то меньше 50 Гц, то больше. И если включить Vsync в драйверах видеокарты, то получится сильно хуже чем без него.

Adam Bazaroff
24.12.2019, 01:18
Большая просьба прикрутить к эмулятору экспорт видео через ffmpeg, например. При записи «граберами» с экрана получаются дополнительные расхождения. Очень нужная функция.

gid
24.12.2019, 09:16
экспорт видео через ffmpeg, например
Не умею. Ни через ffmpeg, ни вообще никак. Если кто научит, тогда будет прикручено.

Manwe
27.12.2019, 13:35
Не умею. Ни через ffmpeg, ни вообще никак. Если кто научит, тогда будет прикручено.Вот здесь пример (исходники) прикручивания грабилки ffmpeg к своей программе: https://github.com/keensky/hal4000/blob/master/hal4000/hal4000.c

Maxvel
08.02.2020, 11:25
БКманам всем привет.
Друзья у меня такая проблема, на днях приобрел звуковую плату от Creative - sound blaster Z и на эмуляторе возникли проблемы с выводом звука, он просто через определенны интервал времени начал рваться. При переключения режимов полного экрана все вроде устаканивается на короткое время а потом с нова щелчки, эта бяка проявляется когда с эмулятора идет какой либо звуковой сигнал будь то звук бипера или AY а так же ковокса.
У кого есть такие звуковые как у вас обставят дела есть ли такие же проблемы и как их решить.
Сразу скажу то что манипуляции с настройками результата не дают.

hobot
08.02.2020, 12:41
Сразу скажу то что манипуляции с настройками результата не дают.
другой эмулятор - единственное решение.

gid
08.02.2020, 16:20
У кого есть такие звуковые как у вас обставят дела есть ли такие же проблемы и как их решить.
Когда звук начинает рваться, FPS падает? Или так и держится ровно 49-50 Гц? Если падает, то проблема может быть и не в звуковой карте, а может быть и в драйверах карты.
Я для вывода звука в звуковуху использую очень маленький буфер. Может креативовским дровам это не нравится.
И как посоветовал hobot, лучше использовать другой эмулятор. У меня нет денег, чтобы купить весь спектр оборудования и провести на нём масштабное тестирование, а остальные люди, при встрече каких либо проблем, просто уходят, ничего не говоря, поэтому статистики нету. Могу только сказать, что на встройке Realtek HDA с реалтековскими родными дровами под Вин10 и Creative Sound Blaster Live! с дровами от KX-Project под Вин7 нет никаких проблем вообще.

Maxvel
08.02.2020, 17:29
Нет фпс не падает четко 48 кадров в секунду.
Зачем мне другой если твой САМЫЙ ЛУЧШИЙ что имеется на сегодняшний день.

hobot
09.02.2020, 00:30
под Вин7 нет никаких проблем вообще.
есть, но не с драйвером, а с эмулятором. На компе с хрюшей те ещё глюки о которых я уже утсал репортить и которые вы глюками не считатет или просто отказываетесь править - так что люди уходят не потому что им лень про баги сообщать, а потому что бесполезно. Самое странное, то что тут есть некоторое количество "суперупоротой" группы поддержки, которая упорно постит одно и то же, что это лучший эмулятор, да ещё и советует его всем - даже не уточняя для каких целей и какая именно модификация БК для человека в приоритете. Так вот, под 7х64 звук дублируется и щелкает... каждый тю кнопки через полсекунды повторно
звучит! Вот вам статистика, как просили. То же касаемо и про звук в играх, демах и проч. Манипуляции с настройками ничего не меняют, только 1 опция влияет реально на картинку звука - его отключение.

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


твой САМЫЙ ЛУЧШИЙ
где и кто такую премию присудил, я что то пропустил?
Было тайное собрание БКашников ??? Или это просто "продвигаем своих из племени Сиу" ?

Maxvel
09.02.2020, 10:41
Ну вы предложите свой список!
Я точно знаю что в эмуляторе от GID работает 99,9% программ которые были написаны на БК. Да есть известные проблемы мы про них знаем даже автор про них открыто говорит, а вот на счет других эмуляторов тут уж извинить, все они били опробованы и впечатление о них осталось не самое лучшее как по качеству, функционалу(периферии) ну и удобству в работе увы но это так.

gid
09.02.2020, 11:28
На компе с хрюшей те ещё глюки о которых я уже утсал репортить
Ну и где же почитать эти репорты о глюках? Я как писал в этом посте #30 (https://zx-pk.ru/threads/22304-emulyator-bk-0010-01-bk-0011-i-bk-0011m.html?p=921185&viewfull=1#post921185), так и сейчас просто в глаза не видел никаких репортов. Ткните же меня уже в них носом. Можно в личку, если там много всего.
И проверку работоспособности эмулятора под Windows XP я делаю в виртуальной машине, т.к. у меня нету реального железа с WinXP, поэтому она не может быть полноценной, там только корректность API вызовов проверить можно, а не работу на железе в целом.
Я более чем уверен, что на старом железе типа Пентиум 3, Атлоны под сокет А, Селероны времён пентиума 4 эмулятор скорее всего работать не будет по аппаратным причинам из-за политики микрософта отказываться от поддержки всякого старого железа.
Собирать исходники в старых версиях студии, с полноценной поддержкой ВинХП уже невозможно из-за того, что в коде активно используются разные полезные фичи с++11.

Так вот, под 7х64 звук дублируется и щелкает
А звуковая карта какая?
Исправить ни вашу проблему ни Maxvelа я всё равно не смогу, т.к. не могу воспроизвести у себя из-за того, что у меня всё равно нет нужных аппаратных средств.
У Maxvelа скорее всего наступает переполнение звукового буфера по непонятным причинам, из-за этого и звук рвётся и щёлкает.
Дублирование звука я однажды получил, когда экспериментировал с размерами звуковых буферов и их количеством. Сейчас этого нет, т.к. как раз в результате этих экспериментов был определён оптимальный размер звукового буфера и из количество. Но видимо это не для всех драйверов звуковых карт подходящие значения.

Maxvel
09.02.2020, 13:34
Да забыл сказать эти же щелчки так же отображаются на встроенном осциллографе.

gid
09.02.2020, 18:13
Да забыл сказать эти же щелчки так же отображаются на встроенном осциллографе.
Это важное уточнение. Щелчки появляются даже тогда, когда просто сидишь ничего не делаешь и смотришь на экран, или при какой-то активности?
Я обычно тестирую, не поломал ли я чего в эмуляторе, просто прослушиванием нескольких песенок в рок-мониторе, или тупо запускаю инсульт и просматриваю несколько демок. И у меня всё нормально, никаких признаков поплохения нету. Дайте ваш bk.ini и может пример программы какой-нибудь которую я тоже запущу и посмотрю.

Maxvel
09.02.2020, 18:57
Нет тогда когда выдается звук как с бипера ковокса или AY во всём остальном щелчков нет только все то что связано со звуком.

Maxvel
12.02.2020, 01:33
Вернулся к версии от 25 декабря 19 года щелчков не наблюдаю!

gid
12.02.2020, 10:08
Maxvel, попробуйте скачать заново последнюю версию, я её пересобрал без изменения версии сборки и в 2017й студии вместо 2019й, выключил одну экспериментальную фичу, от которой ни пользы, ни вреда я на своих компьютерах не замечаю. В этой версии относительно предыдущей, кроме небольших оптимизаций по скорости, всего лишь добавлена опция захвата видео (и чтобы она начала влиять, надо её включить), и исправлена одна неприятная для меня ошибка в отладчике. Что-то слабо верится, что всё дело в оптимизациях.

Titus
12.02.2020, 11:32
Вернулся к версии от 25 декабря 19 года щелчков не наблюдаю!
Запусти вот этот (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1044665&viewfull=1#post1044665) тестик, он покажет, есть ли какие-то 'патологии' в сфере вывода звука на твоем компьютере.

Maxvel
12.02.2020, 15:50
Да это нормально работает проблем со щелчками не наблюдается.
Titus Спасибо тестик показал что все нормально проблем нет.

Titus
12.02.2020, 16:07
Titus Спасибо тестик показал что все нормально проблем нет.
Лучше кинуть скриншоты тестика)

Maxvel
12.02.2020, 17:09
Понял.

Maxvel
14.04.2020, 14:11
Вышла новая версия эмулятора БК0010-01 11М есть приятные плюшки но вот в окне о программе была найдена ошибочка: При клацанье на ссылочки за место адреса выдается следующее http://%20gid.pdp-11.ru/ или http://%20boulder-dash.narod.ru/bk_emulator.html и так далее.

gid
14.04.2020, 19:01
При клацанье на ссылочки за место адреса выдается следующее
Исправил без изменения версии, скачайте архивы заново.

litwr
14.11.2020, 16:16
Проблема при работе с таймером в режиме максимального замедления, с делителем 64. У меня в эмуляторе GID постоянно получается 10% расхождения с реальным таймером - эмулятор считает на 10% больше. При этом с делителем 16 - всё отлично. Похоже на баг эмулятора. Использую вот такую программку:


10 POKE&O177706,0
20 POKE&O177712,1
30 POKE&O177712,116
40 A$=INKEY$
50 IF A$="" THEN 40
60 T=PEEK(&O177710)
70 R=PEEK(&O177712)AND128
80 IF T<0 THEN A=-T ELSE A=65536.0-T
90 IF R<>0 THEN A=A+65536.0
100 PRINT A*64/3000*128/1000
110 PRINT T;R

Должно хватить на почти 6 минут. Программка печатает время от начала работы до нажатия клавиши. Строка 110 просто для контроля. Не уверен, что строка 20 нужна, но мешать она не должна. Пробовал в 10 строке 0 заменять на -1 - эффекта никакого.
Попробовал на BK2010 эмуляторе - там счетчик работает правильно, но режим индикация похоже не работает, а это значит, что таймера хватит только на менее 3 минут. В строке 100 вместо 3000 нужно актуальную частоту ставить (4000 на БК0011M). Хотя почти уверен, что ошибка в эмуляторе GID.
Буду рад любой информации.
Пользуюсь случаем поблагодарить автора эмулятора. Особенно удачна идея со сценариями - такого нигде не встречал. Обычно делают поддержку копи-паста мышкой, но сценарии лучше.
Ещё хотелось бы кнопку "максимальная скорость" - её очень не хватает - она почти во всех эмуляторах есть.

gid
17.11.2020, 11:41
Если бы эта программка могла считать, сколько раз счётчик перешёл через 0 во время ожидания нажатия клавиши, то обнаружилось бы, что и при делителе на 16, и при 4 и даже 1, ситуация точно такая же, как и с делителем 64. И чем дольше бы работала программа, тем больше бы разницы набежало.
Эмулятор работает чуть медленнее реальной БК. И чем дольше работает, тем больше разницы набегает.

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


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

litwr
01.12.2020, 20:30
Если бы эта программка могла считать, сколько раз счётчик перешёл через 0 во время ожидания нажатия клавиши, то обнаружилось бы, что и при делителе на 16, и при 4 и даже 1, ситуация точно такая же, как и с делителем 64. И чем дольше бы работала программа, тем больше бы разницы набежало.
Эмулятор работает чуть медленнее реальной БК. И чем дольше работает, тем больше разницы набегает.

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

Программка рассчитана на замер не более 6 минут. Но результаты, когда использовался делитель 16 на железе были примерно такие же как в эмуляторе. Хотя БК разных сборок разнятся по скорости процентов на 10% и возможно более. Не понял про "набегающую разницу". Он со временем сам себя остановит?! Но этот эффект, если он есть, на диапазонах до часа не заметен.

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

gid
02.12.2020, 09:01
Программка рассчитана на замер не более 6 минут.
Это при условии, что используется делитель на 64. Если использовать делители на 16, 4 или 1, то за эти 6 минут счётчик таймера успеет несколько раз перейти через 0 и результаты будут абстрактные. Некое число, непонятно что обозначающее.

30 POKE&O177712,116
Тут в регистр управления таймером записывается число &O164 - устанавливается режим делителя на 64 и биты 4 (запуск счётчика) и 2 (установка бита 7 при переходе через 0).
Нужно иметь в виду, что в таймере глюк - при первом (после включения ЭВМ или системного сброса) запуске таймера в данном режиме индикация срабатывает только после ВТОРОГО перехода счётчика через 0, причём независимо от того, работал ли таймер до этого в
других режимах. Этот глюк у меня в эмуляторе не реализован.

40 A$=INKEY$
50 IF A$="" THEN 40
Тут ждём нажатия на клавишу. Можно ждать любое количество времени, счётчик при этом будет циклически уменьшаться и если будет переход через 0, то будет выставлен бит 7, но при этом счётчик будет продолжать работать, он не остановится. И сколько таких переходов через 0 было при ожидании, тут никак не узнать. Разве что использовать процессор 1801ВМ1Г, там по биту 7 генерируются прерывания по вектору 0270, и там уже можно подсчитать количество переходов через 0.
А далее в коде предполагается что был возможен всего один переход через 0 (строка 90).


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

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

litwr
04.12.2020, 20:00
Неоднократно уже писал, что у меня синхронизация с реальным временем делается по звуку. Звуковой буфер отправляется на звучание звуковой карте, и пока он не отзвучит, следующий буфер не отправляется, просто сама звуковая подсистема Виндовс так устроена. А эмулятор тоже ждёт, пока освободится хоть один звуковой буфер, чтобы махом его заполнить и снова ждать.
Можно всю эту фигню отменить, и заставить работать непрерывно без ожиданий, и без звука. Но эмулятор без звука никому не нужен. Да и начнутся конкретнейшие глюки с клавиатурой, дисководом и винчестером, в общем везде, где используется цикличный опрос какого-либо бита какого-либо регистра.

Благодарю за разъяснения. Но кнопка "турбо" очень полезная вещь, которая есть практически у всех эмуляторов. Естественно, что при её нажатии звук отключается. Однако, с ее помощью можно быстренько проводить операции с дисками, кассетником, ...

nzeemin
04.02.2021, 12:12
Про новую версию эмулятора написали на OpenNet: http://opennet.ru/opennews/art.shtml?num=54510


Доступен новый выпуск проекта BK 3.11.2101.8545, развивающего эмулятор выпускавшихся в 80-х годах прошлого века 16-разрядных бытовых компьютеров БК-0010-01, БК-0011 и БК-0011М, совместимых по системе команд с компьютерами PDP-11, СМ ЭВМ и ДВК. Эмулятор написан на С++ и распространяется в исходных текстах. Общая лицензия на код явно не обозначена, но в отдельных файлах упоминается LGPL, а также заимствованы некоторые компоненты под LGPL. Работа поддерживается только на платформе Windows.

Изменения в эмуляторе:

- Добавлена начальная поддержка эмуляции музыкального блока Менестрель.
- Из libdspl-2.0 перенесены алгоритмы фильтрации и ресемплирования.
- Добавлена опция для управления включением коррекцией смещения DC для эмулируемых звуковых устройств.
- Исправлена ошибка загрузки состояния эмулятора в конфигурациях с HDD.
- Исправлена ошибка, возникающая при загрузке состояния эмулятора с частотой дискретизации звука, отличной от текущей.
- Изменён алгоритм панорамирования для AY.
- В выпадающее меню дискет добавлен пункт "Открыть в BKDE".

atmavan
27.04.2021, 09:50
Ребята, посоветуйте наилучший эмулятор БК 0010-01 для Windows (7,10) Спасибо!

hobot
27.04.2021, 14:00
БК 0010-01
именно 10-01? не 11(М), то есть чисто поиграть?
http://hobot.pdp-11.ru/EMULATORS/spcbk/

reddie
30.07.2021, 12:54
Прочитал всю тему, ознакомился, так сказать, с опытом работы разных людей с эмулятором.
Возник вопрос насчет синхронизации экрана. В БК кадровая 48 с чем-то там (ну, как на Пентагоне),
соответственно, нормально эмулировать видеовывод проблематично. Даже конвертеры RGB-VGA спотыкаются об эту особенность,
отказываясь воспринимать нестандартный сигнал (им нужно именно 50Гц). Было предложено решение, которое я применял
уже давно для Спектрума, чтобы пофиксить кривые Пентагоновские 48Гц до нормальных пятидесяти.

https://zx-pk.ru/threads/30134-izmenenie-kadrovoj-chastoty-bk-0011m-s-48-8gts-na-50gts.html

Суть в замене кварца компа, соответственно, все частоты, включая тактовую процессора, повышаются,
но частоты развертки также идут от кварца, поэтому синхра (эффекты в демах, если грубо) не страдают.
К чему я веду: можно в эмуляторе сделать опцию "частот кварца" или схожую, которая будет синхронно менять
скорость процессора и при этом "частоты разверток"? То бишь задаем нечто вроде "Framerate=50" и эмуль сам пересчитывает
остальные параметры (скорость ВМ1, по сути). Что даст возможность нормально синхронизировать отображение экрана.
50Гц большинство ЖК-мониторов спокойно держат, проверил на трех своих домашних - проблем нет.
Меньше - даже 49 - уже не работают, но именно 50 нормально задаются прямо в винде.
Идея в том, чтобы реализовать "нативные" 50Гц без разрывов изображения хотя бы в полноэкранном режиме эмулятора.
Получится привязка кадровой БК к кадровой частоте видеокарты. Для игр и демок самое то.

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

gid
30.07.2021, 20:37
Не знаю, возьмется ли автор
Не возьмётся. Я потратил несколько лет (не менее двух) чтобы уйти от фреймрейта 50 Гц, который был в начальных версиях эмулятора, к точному фреймрейту БК, по одной простой причине - я так и не смог реализовать точную потактовую модель процессора. (т.е. не смог сделать её достаточно быстродействующей, чтобы эмуляция была в реальном времени, а не оффлайновая.) Времянки команд в эмуляторе - приблизительные, из-за чего демки, которые привязываются к кадровому синхроимпульсу, работали некорректно.
Сейчас - большинство работает нормально.
Если мы вернёмся обратно к 50Гц, то вернёмся к тому, что опять все демки перестанут работать. Потому что надо не только подкорректировать частоту работы видеоконтроллера, но и корректировать время работы команд процессора. А это задача нетривиальная.

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

Но исходники эмулятора доступны всем желающим, берите, экспериментируйте.

reddie
30.07.2021, 22:06
демки, которые привязываются к кадровому синхроимпульсу, работали некорректно.
Сейчас - большинство работает нормально.
Ну, если более-менее адекватно отображается - тогда не так актуально.
Просто все, что изложено в вашем посте (про изначальные 50Гц и проблемы с синхрой), я не знал.
Само собой, со стороны легко советовать, как сделать, но если это уже проходилось - тогда не стоит.
Благодарю за подробный ответ.

Кстати. Где-то в дебрях этой темы был пост о демке Technological Dreams и ее косячной работе в эмуле.
На ютубе нашел два варианта: Оба работают некорректно, но в разных местах глючат по-разному =)

https://www.youtube.com/watch?v=-8OKYtjnWHk неполная (без финальной части и титров)

https://www.youtube.com/watch?v=rlpo9wcN8kc полная версия, так понимаю.

Существует ли "нормальный" рип с реальной БК для сравнения, как оно должно выглядеть?

gid
31.07.2021, 11:20
тогда не стоит.
Вообще говоря, попытки сделать 50Гц фреймрейт на железной БК были и успешные, в теме по БК-0010 где-то описывалось, что замена кварца с 12Мгц на 12 с чем-то Мгц давало частоту кадров, практически 50Гц, без рассинхрона с временем выполнения команд процессора.


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

reddie
01.08.2021, 08:55
теме по БК-0010 где-то описывалось, что замена кварца с 12Мгц на 12 с чем-то Мгц давало частоту кадров, практически 50Гц

в посте выше ссылку давал )) https://zx-pk.ru/threads/30134-izmenenie-kadrovoj-chastoty-bk-0011m-s-48-8gts-na-50gts.html

Точно таким же способом (заменой кварца с 14 на 14.3) фиксится Пентагоновская, чтобы было 50 Гц.
Кстати, 14.3 изначально стоял в части отечественных клонов, это стандартный кварц для ТВ-частот развертки.
Но речь сейчас про эмулятор, а там другие приоритеты... в кодинге на PC не шарю, так бы поковырялся.
С моей нубской точки зрения, раз заранее "исполняется" некий объем команд, укладывающихся в кадр, обсчитать проще.
Эмуляторы Спекруме же вполне справляются с этой задачей. Только там такты на каждую команду давно известны.
А на БК, как ни посмотрю, никто толком не знает, сколько жрут команды даже на железной машине. Сами считают.

Да, еще пара нубских вопросов/предложений по эмулятору, сильно ногами не пинать =)) может, оно уже и сделано, но не нашел.

1) Есть возможность загружать/выгружать куски "памяти БК" напрямую из файла/в файл на PC? Нет снапшот целиком, нет.
А именно указать, куда/откуда грузить, тыкнуть в файл на диске (винды) и опционально - какую длину от файла. Хотя бы просто целиком.
Применение: нужно мне быстро "примерить" несколько вариантов спрайтов/фонтов/звуков, написана программа, крутится в цикле,
выводящем все этом в эмуляторе на экран/динамик. Подменяя кусок памяти, я сразу вижу/слышу результат. Потом записать нужное.

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

3) это уже по особенностям 11-й модели. Можно ли в нее загружать файлы на запуск, не парясь со всеми этими АНдосами и прочим?
Чтобы просто как в 10-й модели, ткнул в бинарник и оно выполнилось, но в режиме 11-й. Или там прошивка 11-й это не позволяет?
Слишком уж напрягает: сперва скомпилируй, потом закинь в образ диска, потом запусти досину...

gid
01.08.2021, 10:40
А на БК, как ни посмотрю, никто толком не знает, сколько жрут команды даже на железной машине.
У ВМ1 зачаточная предвыборка команд есть, так что время выполнения какой-либо конкретной команды зависит от того, какая была предыдущая команда (т.е. от её длительности), от того, на какой цикл работы контроллера ВП1-037 попадает начало обмена с шиной данных, от тактовой частоты процессора, от того, откуда выполняется команда - ПЗУ, ДОЗУ, СОЗУ. БК - вообще сложное для эмуляции изделие.
Сейчас тайминги используются рассчитанные ещё Зальцманом во времена СССР для БК-0010 на частоте 3МГц, и рассчитанные по той же методике для БК-0011 на частоте 4МГц. Если первые достаточно стабильные, т.к. для 3МГц все команды хорошо укладываются в циклы работы ВП1-037, то вторые - усреднённые, на самом деле их длительность плавает в диапазоне ±8 тактов, для команд, где циклов обмена с памятью больше равно трёх.

reddie
01.08.2021, 11:52
Сейчас тайминги используются рассчитанные ещё Зальцманом во времена СССР

их длительность плавает в диапазоне ±8 тактов для команд

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

Взять тот же Z80: есть официальные доки от производителя, с полным описание растактовки. Читай, просвещайся.
Есть схемы Спектрумов с этими Z80, по коим уже смотрится, что и как тормозит процессор. Все легко просчитывается.
На Пентагоне, например, сигнал Wait вообще не нужен, растактовка идет четко из инструкции Зайлога.
Вот почему у буржуев все делается для людей, а у нас, как всегда, через жопу?

Извините, мысли вслух.

nzeemin
01.08.2021, 13:54
Нда уж... по уму, должны быть доки завода-изготовителя проца с описанием всех сигналов и растактовкой команд.
На основании этих док производитель компа делает свои доки и схемы, корректируя данные под выпускаемое железо.
Понимаю, что в СССР над растактовкой не парились и все делалось на глазок, но это подход ламеров, а не технарей.

По-моему, вы просто не в курсе проблемы.
Уже давно есть полная и точная модель этого процессора в Verilog, из неё так просто тактирование команд не получишь, но дело же не в только тактах процессора.
В каждой команде процессор ожидает ответа от устройств на шине - ПЗУ, ОЗУ и ввода-вывода.
Параллельно работает формирование видео, которое сильно мешает работе с памятью.
Больше того, время ответа устройств - не фиксировано, оно плавает - как между экземплярами устройства (разные номиналы RC-цепочек?), так и в зависимости от температуры (свежий пример - https://zx-pk.ru/threads/19866-demki-dlya-bk.html?p=1125920&viewfull=1#post1125920 )
Поэтому "всё легко просчитывается" - тут это так не работает.

- - - Updated - - -


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

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

reddie
01.08.2021, 14:03
По-моему, вы просто не в курсе проблемы
Да и не отрицаю этого)) только недавно начал знакомиться с PDP и конкретно с БК, но уже в шоке от ужасов железа и кода.
Чтобы от температуры микросхем/резисторов дергались времянки задержек - это фантастика (с)
Не в том смысле, что я вам не верю, просто это не укладывается в рамки качественной _цифровой_ схемотехники.
Тот же Спектрум (ну что поделать, я оттуда) не имеет никаких привязок к температуре. Включили - работает.
Что через 3 секунды после запуска на холоде, что через 3 часа в жаре - количество сигналов Wait на процессор придет одинаково.
Формирование видео идет как бы параллельно, Z80 очень продуманно чередует обращения к памяти, поэтому торможения вполне предсказуемы.
Более того, при работе с ПЗУ никаких Wait нет вообще, проц тормозится только при обмене с ОЗУ. И то не на каждом компе - Пентагон, скажем, без Wait.
Согласен, очень разные процессоры и схемотехника, но неужели нет заводских "исходников" о времянках проца?
Я не обвиняю разработчиков и не накидываю, как говорится, на вентилятор, а действительно хочу разобраться в особенностях железа.

Про ужасы кода... тут слегка другое: да, набор инструкций (вернее, режимы адресации) позволяет намного расширить возможности программирования,
оставаясь со скромными шестью регистрами общего назначения. Но многие из этих инструкций жрут столько, что 8-битный Z80 уделывает 16-битный ВМ1,
если переложить эти инструкции на код Z80. И очень мешает отсутствие отдельных портов ввода-вывода, как таковых, а также нормальной работы с 8-бит числами.

Hunta
01.08.2021, 15:51
И очень мешает отсутствие отдельных портов ввода-вывода

I/O порты это вообще очень страшная вещь, стоившая индустрии миллиарды долларов, и эти счета до сих пор полностью не оплачены.
В целом же - смысл жалеть о том, чего нет в принципе? Принять и использовать то, что есть. Как по мне - возможность использовать для общения с устройствами в/в любые команды и любые метода адресации - большая гибкость.

reddie
01.08.2021, 16:23
В целом же - смысл жалеть о том, чего нет в принципе? Принять и использовать то, что есть
Придется, что уж поделать... как было кем-то сказано - "понять это невозможно, но с этим придется жить"
В том же топике, откуда взята эта цитата про миллиарды, человек "топил" за асинхронную (QBUS) шину ВМ1 и БК-шки.
Вот теперь я могу сказать: для работы железа это, может быть, и удобно, но для программиста, в плане расчета таймингов
синхронизации видеоэффектов - сущий кошмар. Рассчитаешь под свой конкретный комп, а на другом оно не так работает.
Более того, комп постоял, прогрелся - оно и у тебя уже не так работает, как задумано. Меня еще там спрашивали про пруфы.
Да вот они, пожалуйста https://zx-pk.ru/threads/19866-demki-dlya-bk.html?p=1120846&viewfull=1#post1120846 и ниже по постам.

На Спектруме о таких проблемах даже не слышали. Есть модель Пентагон - все демки под него работают одинаково на любом Пентагоне.
Есть модель Скорпион (их несколько, но возьмем одну конкретную) - демки с таймингами под него работают одинаково на любом экземпляре модели.
Даже сейчас, 20 лет ничего не "кодя" на ZX, могу по памяти рассчитать тактовку и набор команд, скажем, для вывода бегущей строки на бордюре.
Потому что знаю, сколько такая-то команда займет тактов. Без реального железа, даже на бумаге. И не заглядывая в справочники команд.


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

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

Vslav
01.08.2021, 16:26
Как по мне - возможность использовать для общения с устройствами в/в любые команды
IN/OUT команды в 8080 и потом в x86 - это временная затычка в попе, а не возможность. Схемотехника и экономика тех лет требовала наличия устройств на той же самой шине что и память. При этом, любая программа с ошибочной инструкцией записи в память (а там обычно есть и косвенная адресация, типа адрес в регистре, который легко может быть неверным) могла спокойно нарушить работу внешних устройств. Нужна была изоляция, хоть какая-то - вот и всобачили отдельные инструкции IN/OUT на 8080 и ошибочная "stax B" уже устройства не достанет. На 8086 появились сегменты, но решили что этой изоляции недостаточно да и совместимость c 8080 нужна. Так они эту затычку и не достали, уже на 386 пришлось виртуализировать порты и изобретать IOMAP, и затем оно очень далеко зашло. В DEC тоже понимали важность изоляции устройств, но они делали нормальные машины и решение у них было предусмотрено правильное - MMU и защищенный режим. На старте это было дороговато, зато потом обеспечивало бы гладкое и недорогое развитие. Ну и колхоза в софте у них поменьше было, даже машины без изоляции портов типа LSI-11/1201.01/02 вполне нормально работали.

CodeMaster
01.08.2021, 17:07
это временная затычка в попе, а не возможность.

Hunta писал про ввод-вывод в ВМ1 работающий в общем адресном пространстве, ИМХО.

reddie
01.08.2021, 17:59
ввод-вывод в ВМ1 работающий в общем адресном пространстве.

Насколько понял схемотехнику БК - процу вообще все равно, что куда писать. Решения принимает контроллер ВП-037.
Для проца все адресное пространство просто массив, а что это - пзу, озу, порты (ака регистры) - решают за него. Так?

Hunta
01.08.2021, 18:44
Для проца все адресное пространство просто массив, а что это - пзу, озу, порты (ака регистры) - решают за него. Так?
И да и нет. Так как

а) есть процессоры, в которых ДП не отделим от процессора (с ходу - J11) и тут сложно сказать - кто решает - процессор или не процессор

б) у процессора могу быть регистры, которые являются его частью (типа PSW - 177776) и, особенно в ситуации, когда проц без ДП, - именно проц решает - что это обращение к его регистру. Есть вообще экзотические случаи. Скажем, на некоторых процессорах (например PDP-11/04, ЕМНИП) регистры общего назначения (типа R0 или в более универсальной нотации для ассемблера - %0) доступны по адресам на шине QBus - типа - %0 - по адресу 177700, %1 - 177701 и т.д., причём в некоторых случаях - и программно. С ещё более экзотическим вариантов - можно по этим адресам (читай - в регистры) занести небольшую программу и запустить её. И в PC ака %7 в этом случает будет увеличиваться при переходе к следующей команде не на 2, а на 1. Ещё из экзотики - ПЗУ для процессорной платы KDJ11-B использует регистры ДП как ячейки для своих данных. В целом же - да - ситуация

Для проца все адресное пространство просто массив, а что это - пзу, озу, порты (ака регистры) - решают за него.
это более распространённый вариант. И, кстати, то, что регистры устройств в/в располагаются в диапазоне адресов, который традиционно называется страницей в/в (последние 8 кб адресного пространства процессора) - это тоже не железное правило. Технически они могут располагаться где угодно - главное, что бы адреса разных устройств и памяти НЕ пересекались. Так же как и ОЗУ - может располагаться в диапазоне странице в/в - есть варианты PDP-11 (без ДП), в которых за счёт этого не 56 кб памяти, а 60 - я показывал это - https://zx-pk.ru/threads/31998-dec-i-ya.html?p=1110588&viewfull=1#post1110588

reddie
01.08.2021, 19:09
ОЗУ - может располагаться в диапазоне странице в/в - есть варианты PDP-11 (без ДП), в которых за счёт этого не 56 кб памяти, а 60

Ну, о чем и говорил - контроллер (ВП-037) решает, куда адресовать запросы.
Мне вот, кстати, непонятно, почему до сих пор ставшие редкостью вентильные матрицы контроллера клавиатуры (ВП-014) и ДП (ВП-037) не меняют на ПЛИСы в новоделах.
Ну, кончатся запасы ВП-шек - дальше что? Смерть БК? Изобрели же РЕмулятор для адресов ПЗУ. Так и тут, чем раньше начнем - тем лучше будет финал.

Hunta
01.08.2021, 19:21
Ну, о чем и говорил - контроллер (ВП-037) решает, куда адресовать запросы.
На данном компе с данным процессором - да.


почему до сих пор ставшие редкостью вентильные матрицы контроллера клавиатуры (ВП-014) и ДП (ВП-037) не меняют на ПЛИСы в новоделах.
Потому что
а) эту замену надо сделать
б) рынок очень небольшой, а потенциальный создатель-изготовитель хочет и деньги отбить и заработать. Причём, в большинстве известных мне случая, упор делается на второе

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

Вдогонку
И потенциальных покупателей - мало.

reddie
01.08.2021, 19:39
рынок очень небольшой, потенциальных покупателей - мало

Потенциальных покупателей БК (меня, в частности) отпугивает дикая цена на 11-ю модель. Вот и вся причина малого рынка сбыта.
Очень кратко и емко про это сказали аж 8 лет назад вот тут https://zx-pk.ru/threads/18419-fond-voznagrazhdeniya-dlya-programmistov-bk0011m.html?p=626269&viewfull=1#post626269 (цитирование Woland'а и строчка сразу ниже цитаты).
Да и весь пост ниже цитаты можно гвоздями прибивать на стену. Странно, что никто его не оценил тогда.

Hunta
01.08.2021, 20:14
Потенциальных покупателей БК (меня, в частности) отпугивает дикая цена на 11-ю модель. Вот и вся причина малого рынка сбыта.
Что бы стимулировать потенциального покупателя на покупку чего то, нужен

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

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

- или это его личный интерес (ему это по фану)
- или потому что он сможет на этом заработать.

Первый вариант (как показывает практика) не даёт большого выхлопа. Мало у нас таких фанатов.

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

Вот и имеем то, что имеем.

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

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

Вдогонку - ту тему прочитал. Ну ничего нового - как тогда было, так и сейчас.

reddie
01.08.2021, 22:07
нет инструментов разработки, к которым привыкли современные программисты
Это да. Пост Woland'a из той же темы: https://zx-pk.ru/threads/18419-fond-voznagrazhdeniya-dlya-programmistov-bk0011m.html?p=639303&viewfull=1#post639303


захотелось мне заполучить в руки комп на J-11 плюс разнообразные платы к нему - и я их заимел, несмотря на стоимость
Согласен, если бы у меня не было железного Спектрума - я бы его купил в любом случае. Но у меня живой Скорпион сохранился =)
Проблема в том, что собрать реплику Спектрума-128/256 на рассыпухе (ака оригинал) выйдет в разы дешевле, чем реплику БК-0011М.
В БК много специфичных микросхем, у Спектрума с этим проблем нет. На новомодных ПЛИСах, думаю, ситуация не сильно изменится.
И в данном случае фактор цены плюс несопоставимое количество софта (понятно, в чью пользу) предопределит решение человека,
так сказать, со стороны, не имеющего предпочтений в выборе из этих двух компов, для него примерно одинаковых по возможностям.

Что касаемо программистов/энтузиастов - у меня есть пресловутый личный интерес, но пока вынужден довольствоваться эмулятором.
Для начального ознакомления пойдет. Однако для проверок и вообще качественной работы нужна реальная машина.
А если ее нет - на выходе получится то, что "нормально" работает лишь в эмуляторе. Но покупать железную БК за любые бабки
у меня мотивации нет. Спектрум - другое дело. Это мое прошлое, там уже знаешь все тонкости. БК же для меня - dark territory.

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

Что-то совсем отбились от темы... напомню свои нубские вопросы:

1) Есть возможность загружать/выгружать куски "памяти БК" напрямую из файла/в файл на PC? Нет снапшот целиком, нет.
А именно указать, куда/откуда грузить, тыкнуть в файл на диске (винды) и опционально - какую длину от файла, но можно и без этого.
Применение: нужно мне быстро "примерить" несколько вариантов спрайтов/фонтов/звуков, написана программа, крутится в цикле,
выводящем все это в эмуляторе на экран/динамик. Подменяя кусок памяти, я сразу вижу/слышу результат. Потом записать нужное.

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

3) это уже по особенностям 11-й модели. Можно ли в нее загружать файлы на запуск, не парясь со всеми этими АНдосами и прочим?
Чтобы просто как в 10-й модели, ткнул в бинарник и оно выполнилось, но в режиме 11-й. Или там прошивка 11-й это не позволяет?
Слишком уж напрягает: сперва скомпилируй, потом закинь в образ диска, потом запусти досину...

Pyk
01.08.2021, 23:24
50Гц большинство ЖК-мониторов спокойно держат, проверил на трех своих домашних - проблем нет.
Меньше - даже 49 - уже не работают, но именно 50 нормально задаются прямо в винде.
Идея в том, чтобы реализовать "нативные" 50Гц без разрывов изображения хотя бы в полноэкранном режиме эмулятора.
А какая видеокарта? Просто мониторы-то может и поддерживают, но в системе выставить 50 Гц не получается. По крайней мере в моем основном домашнем мониторе поддержка 50 Гц заявлена, но выставить в системе можно только 60. Видеокарта NVidia. На встроенной графике Intel было, кажется то же самое... Может быть, можно как-то обойти это, не интересовался...

Более интересно, что современные мониторы с поддержкой FreeSync/G-Sync без проблем могут работать с переменной частотой, хотя бы и 48 Гц. Я в своем эмуляторе немного поэкспериментировал с этим, когда добрался до такого монитора. В целом это работает, хотя нужно доводить до ума, имея постоянный доступ к видеокарте и монитору с поддержкой этой технологии. Думаю, что это более перспективное направление, учитывая, что поддержка FreeSync становится все более массовой и есть уже, например, во встроенном видео процессоров Intel 10 поколения...

Titus
02.08.2021, 00:05
По крайней мере в моем основном домашнем мониторе поддержка 50 Гц заявлена, но выставить в системе можно только 60. Видеокарта NVidia. На встроенной графике Intel было, кажется то же самое...
Если установки 50Гц через стандартную управляющую программу нет, то существует полно тюнинговых программ, в том числе для NVidia, которые позволяют создать любой видеорежим, а потом им спокойно везде пользоваться.
Так я делал на старых видеокартах от NVidia.
А сейчас у меня видюхи нет, все на себя берет стандартная интеловская графика в процессоре. И там 50Гц штатно имеется. И моник ASUS что прошлый, что этот, 50Гц показывают.

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


Я потратил несколько лет (не менее двух) чтобы уйти от фреймрейта 50 Гц, который был в начальных версиях эмулятора, к точному фреймрейту БК, по одной простой причине - я так и не смог реализовать точную потактовую модель процессора. (т.е. не смог сделать её достаточно быстродействующей, чтобы эмуляция была в реальном времени, а не оффлайновая.)
Что это за такая оффлайновая эмуляция? )

SuperMax
02.08.2021, 06:01
Придется, что уж поделать... как было кем-то сказано - "понять это невозможно, но с этим придется жить"
В том же топике, откуда взята эта цитата про миллиарды, человек "топил" за асинхронную (QBUS) шину ВМ1 и БК-шки.
Вот теперь я могу сказать: для работы железа это, может быть, и удобно, но для программиста, в плане расчета таймингов
синхронизации видеоэффектов - сущий кошмар. Рассчитаешь под свой конкретный комп, а на другом оно не так работает.
Более того, комп постоял, прогрелся - оно и у тебя уже не так работает, как задумано. Меня еще там спрашивали про пруфы.
Да вот они, пожалуйста https://zx-pk.ru/threads/19866-demki-dlya-bk.html?p=1120846&viewfull=1#post1120846 и ниже по постам.

это совсем про другое, ибо:
1. это ТАК и работает ибо БК асинхронная машина.
2. всякие завязки "Рассчитаешь под свой конкретный комп" изначально порочная практика которая вызывает и должна вызвать проблемы.

еще раз - вы писали

Тем не менее, в каждом втором описании/рассказе о БКашках содержится увлекательное чтиво про искомые 5-10 минут прогрева. Не у всех же подряд кондеры высохли/микрухи сдохли.
жду обещанных пруфов




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

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

Vslav
02.08.2021, 06:39
1. время выполнения команды никуда не скачет, те процессор вполне синхронный автомат

8080/Z80 - это простые процессоры, с одним единственным конечным автоматом внутри, плюс вероятная безвейтовая реализация внешней памяти (как в Орионе, например, или в некоторых спеках) - тогда команды всегда выполняются за одинаковое время, тут предсказывать нечего, все просто.
1801ВМ1 (так и 8086) - там внутри уже два автомата (ядро + ввод-вывод), и 1801ВМ1 работает ВСЕГДА с ожиданием, то есть добавляется автомат внешней схемы (плюс в БК 037 отлично модерирует шину). Вот времянки взаимодействия трех связанных конченых автоматов уже предсказать сложно.

grf
02.08.2021, 06:50
Слишком уж напрягает: сперва скомпилируй, потом закинь в образ диска, потом запусти досину...

Вот поэтому я просто запускаю в эмуляторе Андос и в нем и пишу исходник и компилирую и линкую и запускаю :) И ничего не надо снаружи пихать в образы.

reddie
02.08.2021, 09:30
какая видеокарта? Просто мониторы-то может и поддерживают, но в системе выставить 50 Гц не получается
GTX1060, меняется через стандартную панель Нвидии. Тыкаем Изменение разрешения, внизу кнопка Настройки. Далее Создать пользовательское
(скрин слева), там уже крутим (если надо) разрешение и герцовку (скрин справа). Ставим 50, Тест, если монитор показывает - сохраняем.
Винда позволяет выставить что угодно, но ниже 50 мой монитор не держит. Другие - держат.

https://i115.fastpic.org/big/2021/0802/91/b499baa14f8f5ebacdfb654a985bc891.png https://i115.fastpic.org/big/2021/0802/71/5ae0459c58a0abb797d3ee5d586d1171.png


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

Ну, FreeSync тут ни при чем, старые мониторы нативно поддерживают 50Гц и даже ниже. Для работы со Спектрумом/БК напрямую через кодер - идеальный вариант.
Сейчас вот заказал монитор, как у Evgeny Muchkin, 48Гц держит. Думаю, в нем уже и винда будет показывать на 48Гц (монитор осилит).
Главное что это дает эмуляторам (в теории) - полную синхронизацию с видеорежимами БК и Спектрума. Если корректно реализовать растактовку.


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


Что это за такая оффлайновая эмуляция? )

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

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


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

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

gid
02.08.2021, 18:41
Что это за такая оффлайновая эмуляция? )
Полагаю имелось в виду, что эмулятор сразу "жует" на максимуме скорости столько команд, сколько влазит в видеокадр эмулируемого кода.
Ненене. Это я назвал ситуацию, когда процессор медленно-медленно шевелит ножками, всё работает мееедленно-мееедленно, и пока хоть что-то изменится на экране, можно пойти попить чай, погулять на улице и сделать ещё какие-нибудь свои дела.

Pyk
02.08.2021, 22:04
GTX1060, меняется через стандартную панель Нвидии.
Точно, есть там такое, совсем забыл. Мой монитор держит минимум 49, кстати.


Ну, FreeSync тут ни при чем, старые мониторы нативно поддерживают 50Гц и даже ниже. Для работы со Спектрумом/БК напрямую через кодер - идеальный вариант.
Не знаком с особенностями БК, но мне все-таки этот вариант кажется не очень перспективным. Тогда для синхронизации с частотой кадров придется подгонять и все остальные частоты в эмуляторе? При трансляции 48->50 Гц звук уже будет более чем на полтона выше, чем в оригинале...

reddie
02.08.2021, 22:25
Тогда для синхронизации с частотой кадров придется подгонять и все остальные частоты в эмуляторе?
Примерно да, хотя там, по сути, "гонится" имитируемый проц. Все зависит от реализации в конкретном эмуляторе.


При трансляции 48->50 Гц звук уже будет более чем на полтона выше, чем в оригинале...
Не-а. Некоторое изменение, слегка заметное на слух, будет, но не настолько существенное, чтоб плеваться.
И то оно будет при воспроизведении на ковоксе/бипере/AY цифровой волны силами процессора.
Для трекерной AY-музыки изменений не будет, если специально не вносить коррективы в "частоту тактирования" AY.
Разве что еле заметное ускорение темпа, да и то эту разницу не все на слух улавливают.
Кто мастырил переключатель на Спектрумах 312/320 строк, знают. Те же самые изменения кадровой 48.8 <> 50 Гц.

upd: в конце концов, при желании ищется монитор, держащий 48/49 герц, и никаких ускорений не требуется =)

reddie
03.08.2021, 09:56
.... (просто для ссылки на имя)

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

ondas
03.08.2021, 10:34
Я за бк эмулятор только за то что там болдер даш и кинг валлей. лучше спектрумского.

gid
03.08.2021, 13:07
А есть в вашем эмуле опция прерываний по КС в режиме БК-0010?
Нету.

предлагаю внедрить данную опцию (отключаемую, само собой)
Если дадут описание модификации БК10, как там всё было сделано. Как-то по-своему или по аналогии с БК11М?

надеюсь, это не будет сложной задачей.
Я тоже надеюсь.

reddie
03.08.2021, 15:53
Если дадут описание модификации БК10, как там всё было сделано. Как-то по-своему или по аналогии с БК11М?
Призвал на помощь дух Manwe, надеюсь, он прольет свет на этот темный закоулок =)
С моей точки зрения, частично впаивался регистр по записи от 11(М), достаточно одного бита, отвечающего за разрешение КС прерываний.
Все остальное, висящее на этом регистре (по записи), в 10-ке не реализовано. Так что в эмуляторе, по-моему, просто "включить" один бит порта и все.
Что там по таймингам задержек записи в регистры, для меня темный лес, но, полагаю, идентично 11-й модели. С учетом поправок на 3 МГц против 4.

Manwe
03.08.2021, 19:31
Призвал на помощь дух Manwe, надеюсь, он прольет свет на этот темный закоулок =)Процитирую Арсения Винникова, как он объяснил свою модификацию БК 0010 (установка таймера и AY):

Прерывание по 100-му вектору генерированлось на 10й БК-шке и на 11й по разному принципу.
На обоих было завязано на сигнал обратного хода луча (была специальная нога для этого у контроллера памяти Кр1801ВП1-037).
В обоих случаях оно возникало, если обнаруживалось, что этот сигнал длиннее строчного импульса.
Отличия начинались, если вскоре после прерыванния запретить и сразу же разрешить его. На 11-й БКшке прерывание возникало повторно сразу после разрешения. На 10-й (по моей схеме) этого не происходило. Так я отличал 10-ю БКшку от 11-й.

Селектор адреса 177664 делал кажется на одной 555(1533)ЛЕ4 (старшие биты — ими можно было выложить 177600), а младшие добивал с помощью ЛА3 (где надо, инвертируя другими элементами той же ЛА3). Вроде так. Но это не точно, т.к. возможно у упомянутой выше ВП1 была пара лап, которые возбуждались как раз на адреса из диапазона 17766х, и определить надо было только последнюю 4-ку
(вот у процессора точно была пара лап, откликавшихся на адреса 177714 и 177716. Они так и назывались «sel1» и «sel2»).

reddie
03.08.2021, 21:29
Отличия начинались, если вскоре после прерыванния запретить и сразу же разрешить его. На 11-й БКшке прерывание возникало повторно сразу после разрешения. На 10-й (по моей схеме) этого не происходило. Так я отличал 10-ю БКшку от 11-й.
Про вторую часть комментить не буду, а насчет первой... насколько понял, в 11-й есть два способа запретить это самое прерывание по КС: либо сменой бита в порту, либо сменой приоритета процессора через PSW (у прерывания приоритет 4, ставим больше, и оно не срабатывает). Вот один из этих способов, видимо, и "глючил", ибо сам сигнал прерывания с проца еще не снят, и происходил его повторный захват (на Спектруме можно поймать схожий баг).
В общем, предлагаю gid-у не париться и делать, как в 11-й =) Тем более в эмуле никаких схем паять не нужно.
Наступило время "перерисовки экрана" (смены кадра) - эмуль дает отмашку на срабатывание прерывания, если бит в порту выставлен.

gid
03.08.2021, 22:11
В общем, предлагаю gid-у не париться и делать, как в 11-й =)
Это неверная тактика. Издревле повелось гарантированно различать БК10 и БК11, тем, что на БК10 регистр 177662 недоступен по записи.
И если сделать на десятке как в 11-й, то на 10-ке перестанет работать большое количество софта и некоторое количество игр.
Например андос и мкдос перестанут работать на 10-ке, потому что определят, что комп- 11-й, а внезапно страниц памяти у него нету.
Так что, нужна информация, как включался прикрученный к БК10 таймер КСИ. И если таки выяснится, что битом в регистре 177662 по записи, то такая модификация в эмулятор внедрятся не будет.

Manwe
03.08.2021, 22:33
И если таки выяснится, что битом в регистре 177662 по записи, то такая модификация в эмулятор внедрятся не будет.Именно так и было. Владельцев БК 0010 это совершенно не парило. А в эмуляторе можно сделать так: если выбран AY в конфигурации БК 0010, то и регистр 177662 доступен по записи. Если пользователь не хочет потенциальных проблем - отключит AY. Всё просто.

reddie
03.08.2021, 22:38
Например андос и мкдос перестанут работать на 10-ке, потому что определят, что комп- 11-й, а внезапно страниц памяти у него нету.
Хех, на Спектруме определение машины (48/128) делалось как раз проверкой страниц памяти =)
Не хочу никого обидеть, но что ж за тест такой, что не смотрит, есть расширенная память на компе или нет...

Все-таки предлагаю сделать как отключаемую в сетапе опцию. В таком виде, думаю, оно никому мешать не будет.
Либо как предложил Manwe, увязать AY и прерывание. Логично же, что без этого прерывания AY-музыке крышка.

Sandro
04.08.2021, 17:52
Прерывание по 100-му вектору генерированлось на 10й БК-шке и на 11й по разному принципу.
На обоих было завязано на сигнал обратного хода луча (была специальная нога для этого у контроллера памяти Кр1801ВП1-037).
В обоих случаях оно возникало, если обнаруживалось, что этот сигнал длиннее строчного импульса.


Ээээ не так. Я же объяснял на чёрном форуме. Нету такой ноги. В 11М есть детектор пустой строки, когда синхра пришла во второй раз, а попыток чтения пикселей не было. Вот тогда и происходит прерывание.

Doronetty
07.10.2021, 21:53
01.10.2021

Изменения в эмуляторе.
•Добавлена эмуляция магнитофона для БК-0011 и БК-0011М приработе в БОС. Т.е. в ПЗУ-Бейсике файлы можно читать/писать как .bin файлы.
•Сделано четыре независимых окна дампа памяти, поэтому припервом запуске будут глюки с окнами дампов, победить их невышло. Надо все окошки закрыть и открыть заново, и возможноперетасовать как необходимо.
•В окна дампа памяти добавлены кнопки сохранения и загрузкидампов в формате .bin. Особенности работы см. в документации.
•В карте памяти теперь можно сохранять / загружать страницыне только как картинки, но и в формате .bin. Естественно теперьтуда можно загрузить любой файл в этом формате. См. документацию.
•Переработана работа с аргументами командной строки, добавлена возможность загружать .bin файлы в БОС БК-0011(М) с помощью ключа /B. Подробности см. вдокументации.
•Добавлена возможность загружать дампы в формате .bin (а также и произвольные) непосредственно в память эмулируемой БК, спомощью ключа командной строки /D. Этим ключом также можнозагрузить дамп в память сразу после создания конфигурации, перединициализацией. Подробности и особенности см. вдокументации.
•Улучшен механизм запрета запуска нескольких копий программыи передачи параметров через командную строку параметров отзапускаемой копии к экземпляру программы, находящейся в памяти.
•Удалены все акселераторы с цифровых клавиш Numpad клавиатуры. За ненадобностью.

Изменения в BKDE и HDDImageMaker:
•Рефакторинг, ничего не изменилось.

Pyk
20.03.2022, 13:38
gid, обратил внимание, что в последних версиях не работает конвертирование bin в wav/tap через менеджер лент БК. В версии 3.11.2011.8392 было все ок, а в 3.11.2101.8545 уже не работает :(

gid
21.03.2022, 10:48
Там как раз момент, когда я сильно перелопачивал класс CTape. И вот таки ошибка вкралась. Нашёл и исправил. Но когда следующий релиз будет, пока не знаю. Озадачили меня тут внедрением одной фичи, которая плохо внедряется.

gid
18.04.2022, 13:48
Сделана начальная эмуляция устройства AZBK. Скачивать там http://gid.pdp-11.ru/betatest.html
Создана единственная пока конфигурация БК11М+AZBK.
Реализовано:

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

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

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

Пользы от этого пока не много. Так, просто посмотреть, ознакомиться.

grf
18.04.2022, 14:16
Супер! Начало положено! ))

gid
14.06.2022, 18:35
Обновление:

Добавлена эмуляция КНГМД "Опток" и добавлена конфигурация "БК 0010-01 + контроллер Опток"
Добавлена конфигурация "БК 0010-01 + AZBK"
Исправлена работа менеджера памяти AZBK.
Добавлена поддержка IMA ADPCM в AZBK, насколько корректно, пока не ясно, просто демка работает. Звук идёт напрямую на устройство вывода по умолчанию Windows, громкость не регулируется, т.к. функция такая в AZBK не предусмотрена. Поёт очень громко.

Скачивать там http://gid.pdp-11.ru/betatest.html

grf
15.06.2022, 05:39
Обновление:

Добавлена эмуляция КНГМД "Опток" и добавлена конфигурация "БК 0010-01 + контроллер Опток"
Добавлена конфигурация "БК 0010-01 + AZBK"
Исправлена работа менеджера памяти AZBK.
Добавлена поддержка IMA ADPCM в AZBK, насколько корректно, пока не ясно, просто демка работает. Звук идёт напрямую на устройство вывода по умолчанию Windows, громкость не регулируется, т.к. функция такая в AZBK не предусмотрена. Поёт очень громко.

Скачивать там http://gid.pdp-11.ru/betatest.html

Супер!

ultra
22.06.2022, 15:45
"Не найден файл конфигурации az.ini. Ошибка создания текущей конфигурации БК." и выход.

grf
22.06.2022, 16:01
"Не найден файл конфигурации az.ini. Ошибка создания текущей конфигурации БК." и выход.

А файл AZBK скачан и распакован куда надо? У меня все работает.

ultra
23.06.2022, 07:40
А файл AZBK скачан и распакован куда надо?
Нет конечно ) Достаточно нелогично делать отдельно, когда эмуль не работает без дополнения, значит надо включать в основной установщик, раз всё равно придётся качать, как в том же Spectaculator все драйверы принтеров в общем пакете, да и 99.9% софта идут одним установщиком.

gid
23.06.2022, 08:00
Достаточно нелогично делать отдельно, когда эмуль не работает без дополнения, значит надо включать в основной установщик
Делал уже, в прошлой первой сборке. Очень мне не понравился слишком большой размер архивов.
И ведь я специально предупредил,
Архив с образом SD-карты для AZBK, нужно скачать отдельно, и распаковать в директорию эмулятора. Не допускайте вложенности типа AZBK\AZBK\az.ini, так работать не будет.

ultra
23.06.2022, 09:40
Очень мне не понравился слишком большой размер архивов.
51.7мб в 7z, немного по нынешним меркам.


нужно скачать отдельно
Так всё равно ж качать ) Можно при установке опцию отключения какую-то сделать, не сразу и догадался, что он и с окном ошибки ini работает и настраивается.

Sandro
23.06.2022, 11:25
Делал уже, в прошлой первой сборке. Очень мне не понравился слишком большой размер архивов.


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

ultra
23.06.2022, 12:26
Еще такой момент (который почему-то не любят наши эмуляторщики) - шейдеры. К счастью есть RetroArch, где удалось запускать бкшные игры с практически полной эмуляцией "той" CRT картинки с мониторов и ТВ. Наши авторы почему-то пишут "это никому не надо", хотя во всех эмулях от ZX до NES и PS2 шейдеры давно есть, и это самая нужная фича для ламповой картинки.

https://i.postimg.cc/SYcCzrJs/Batiskaf-220108-165955.png (https://postimg.cc/SYcCzrJs)https://i.postimg.cc/kVhQrG0n/Bolder2-220108-165719.png (https://postimg.cc/kVhQrG0n)https://i.postimg.cc/477zXZGp/Demsl-220108-170047.png (https://postimg.cc/477zXZGp)https://i.postimg.cc/BLkBFbph/Perev-220108-185259.png (https://postimg.cc/BLkBFbph)

https://i.postimg.cc/4YsbVrvT/Perev-220108-185308.png (https://postimg.cc/4YsbVrvT)https://i.postimg.cc/TLznwS2F/Plate-220108-165616.png (https://postimg.cc/TLznwS2F)https://i.postimg.cc/874dHtwf/Runing-220108-170913.png (https://postimg.cc/874dHtwf)https://i.postimg.cc/Tyk9RCDv/SUPMAN-220108-213354.png (https://postimg.cc/Tyk9RCDv)

reddie
23.06.2022, 17:28
это самая нужная фича для ламповой картинки
Как изначально подключавший Спектрум (хоть и тема про БК) к импортному ящику по RGB, никогда не пойму этой любви к мыльной смазанной картинке.
Хреновые PAL и RF-кодеры тех лет выдавали примерно то, что на скринах и даже хуже, но RGB дает картинку априори качественней. Почти как без шейдеров.

ultra
23.06.2022, 18:46
RGB дает картинку априори качественней. Почти как без шейдеров.
Русский троллинг, бессмысленный и беспощадный. Я видел БК и Спеки на цветных советских ТВ, на цветной Toshiba, на ч.б. и цветной Электронике итд, нигде (естественно) квадратных пикселей быть на ЭЛТ быть не может в принципе - апертурная решетка она и есть апертурная решетка везде от цветных Электроник до Тринитронов с SNES - Playstation и DOS-XP. Тот же Trinitron шейдер в Retroarch 1 в 1 Sony TV. А без шейдеров те же NES-PS1 игры тихий ужас, да и спековские хз кто без сканлайнов гоняет.
https://i.postimg.cc/cgNCN74M/2014-08-05192514-zps8d9bff41-jpg-original.jpg (https://postimg.cc/cgNCN74M)https://i.postimg.cc/vDbTqvKG/Advanced-Pinball-Simulator-ZX-Spectrum-s74567-20180715035242.jpg (https://postimg.cc/vDbTqvKG)https://i.postimg.cc/GTLp4cD4/B49697-B5-D27-A-436-B-84-A2-76-B4-EF3-ABB49-zpsk3e1ovpd-jpg-original.jpg (https://postimg.cc/GTLp4cD4)https://i.postimg.cc/ygXd6JDq/maxresdefault.jpg (https://postimg.cc/ygXd6JDq)

https://i.postimg.cc/rDLSQ45W/dosbox-2015-10-14-09-06-13.png (https://postimg.cc/rDLSQ45W)https://i.postimg.cc/NK7RV0xn/dosbox-2015-10-14-09-06-56.png (https://postimg.cc/NK7RV0xn)https://i.postimg.cc/vgjn9xQ4/img0485z.jpg (https://postimg.cc/vgjn9xQ4)https://i.postimg.cc/zLzT11tG/rdGqmJJ.jpg (https://postimg.cc/zLzT11tG)

grf
24.06.2022, 12:21
Вот такие картинки получаются на БК с контроллером AZ в эмуляторе Гида:

https://bk.grfgames.com/wp-content/uploads/2022/06/screenshot_1.png
https://bk.grfgames.com/wp-content/uploads/2022/06/screenshot_2.png
https://bk.grfgames.com/wp-content/uploads/2022/06/5307755146454874948_121.jpg

Sandro
24.06.2022, 23:26
Еще такой момент (который почему-то не любят наши эмуляторщики) - шейдеры. К счастью есть RetroArch, где удалось запускать бкшные игры с практически полной эмуляцией "той" CRT картинки с мониторов и ТВ. Наши авторы почему-то пишут "это никому не надо", хотя во всех эмулях от ZX до NES и PS2 шейдеры давно есть, и это самая нужная фича для ламповой картинки.


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

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

В качестве наиболее известного примера -- море в Halo самом первом. Игрушка для самого первого XBox, и там для блеска волн используется особенность GPU NV25 (он же GeForce4), который там стоит.
После порта на PC появились возмущённые вопли, что море не то. Так вот, на GF4 оно как раз то, лично подтверждаю. А остальные производители бросились делать распознавание шейдера далёких волн из Halo и его эмуляцию.

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

И вот представь себе: ты требуешь от разработчика бесплатного софта, разрабатываемого в своё свободное время обеспечивать тот же уровень поддержки пользователя? Однако...

А иначе -- эти шейдеры не будут иметь смысла. Ну кроме, как разок приколоться, "а чё -- работает же!".

ЕМНИМС, в том же MAME перешли от шейдерных фильтров обратно к программным. Именно из-за проблем с этим зоопарком.

ultra
25.06.2022, 10:22
Не надо говорить за всех.
Покажи русский эмуль хотя бы со сканлайнами, кроме Unreal, про шейдеры, да на БК, тем более речи нет.


в таком виде, в каком она подразумевается
Она подразумевалась как раз под сглаживание ЭЛТ трубками во всех играх до появления LCD.
https://i.postimg.cc/ygrXLJ6C/AYq0-RSuh-o.jpg (https://postimg.cc/ygrXLJ6C)https://i.postimg.cc/LqDVZCrX/h-VMZx-x-VAeo.jpg (https://postimg.cc/LqDVZCrX)
Какой-то троллинг уровня "ClearType не нужен" и "3D игры подразумеваются без сглаживания и анизотропии", не надо такое выдавать за нормальность, а не редкое садо-мазо.


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

Sandro
25.06.2022, 13:22
Покажи русский эмуль хотя бы со сканлайнами, кроме Unreal, про шейдеры, да на БК, тем более речи нет.

Внезапно! Я тебе что-то должен показывать? Я тебе ничего не должен, к твоему сведению.

И, кстати, это позорная попытка спрыгнуть с темы, не выйдет. Вернёммся к основному вопросу.



Она подразумевалась как раз под сглаживание ЭЛТ трубками во всех играх до появления LCD.


ЭЛТ трубка не сглаживает, а заубоживает картинку. Кстати, если тебе так уж нравится мыло, в моём эмуле его можно включить. Но зачем?



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


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

Кстати, у меня в эмуле антиалиасинг пикселей есть.



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

Конкурируют, к твоему сведению, платные продукты. За деньги покупателей. Забесплатно -- будет так, как хочет автор. Это во-первых.

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

ultra
25.06.2022, 13:42
И, кстати, это позорная попытка спрыгнуть с темы, н
С дружками на лавочке в таком формате рекомендую общаться, со мной не стоит.


ЭЛТ трубка не сглаживает, а заубоживает картинку.
Вы дурак или как? Старые игры делались на CRT мониторах для ТВ и CRT мониторов, а не вашем "подразумеваются квадратные пиксели" выдуманном откуда-то зачем-то, лишь бы шейдеры не делать. "Квадратные пиксели" до появления LCD мониторов в 2000х никто нигде не видел, чтобы они могли "подразумеваться". Глаза в Донки Конг делались для ЭЛТ, в "пикселях" их не видно, как и попку выше. А на LCD тоже сделали ClearType и сглаживание, чтобы нормальные люди не видели пикселизацию и кривизну шрифтов и линий. И только у троллящих "подразумевается" обратная "квадратура", которая мозгом нормально не воспринимается и никто никогда не видел и видеть во всем мире не желает.


Прекрати выдавать садо-мазо с мыльной и грязной картинкой за нормальность.
Еще один "не такой как все" трололо, я же говорю. Весь мир делает и улучшает шейдеры, топики скриншотов, статьи, исследования, есть во всех эмулях, а у этих шутов "только натуральные пиксели" и прочее "ClearType не нужен".


Конкурируют, к твоему сведению, платные продукты.
Во всех бесплатных нормальных эмулях - WinUAE, BSNES, SNES 9X, Retroarch, DosBOX SV-Daum, ScummVM итд итп масса разнообразных шейдеров, даже в устаревших ZSNES, Fusion и mGBA была куча.
Это тебе во-первых, во-вторых и в-последних. Судя по посту - неадекватность зашкаливает, о чем, собственнно, речь и была, что и т.д.

Radon17
25.06.2022, 13:58
О чём спор-то вообще? Я понимаю если бы это была Амига какая-нибудь с графикой высокого разрешения и кучи цветов.
Но БК-то? На ней все игры написаны/портированы любителями. Которые явно не сидели сутками над размышлениями куда бы воткнуть ещё пиксель.
И кстати в эмуляторе gid мыло есть, разных сортов.

svofski
25.06.2022, 14:12
Еще есть ShaderGlass (https://github.com/mausimus/ShaderGlass/releases/tag/v0.7), который накладывает шейдеры из RetroArch на все, что помещается на десктоп.

[bETA]mEN
25.06.2022, 14:16
На эмулятор можно накотить любой шейдер (в данном случаи это crt-royale). Но зачем?
https://i.imgur.com/L54QNrR.png

svofski
25.06.2022, 19:25
Этот какой-то странный, такой вряд ли кто себе захочет. Может быть он не на то разрешение расчитан, или эмулирует что-то специфическое. Lotte CRT на мой вкус хорошо смотрится, только надо ему подушку скрутить на ноль.

[bETA]mEN
25.06.2022, 21:53
Это своего рода proof of concept, что бы показать что это работает. Нужно понимать что улучшить графику БК шейдерами невозможно. Можно попытаться приблизится к монитору "Электроника" шейдерами типа Phosphorish, но это сильно на любителя.

ultra
25.06.2022, 23:32
Но БК-то? На ней все игры написаны/портированы любителями. Которые явно не сидели сутками над размышлениями куда бы воткнуть ещё пиксель.
Дык тем более огромные пиксели квадратные надо сглаживать. В эмуле VBA и то фильтров масса.


Еще есть ShaderGlass
1903 требует Win10, печаль.


mEN;1156702"]Но зачем?
Зачем на LCD мониках ClearType и сглаживание лесенок в играх, есть же прекрасные пикселизованные шрифты и красивейшие лесенки вместо линий. Даешь квадратные задницы и квадратные изгибы волос!

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


mEN;1156739"]Нужно понимать что улучшить графику БК шейдерами невозможно.
Угу, и шрифты с лесенками в играх через ClearType и antialiasing не улучшить. CRT Hyllian 3D в Retroarch идеален, например.
https://i.postimg.cc/bShjtYxt/BOLDER2-220625-132653.png (https://postimg.cc/bShjtYxt)https://i.postimg.cc/ctBGMqh5/BOLDER2-220625-132701.png (https://postimg.cc/ctBGMqh5)https://i.postimg.cc/F7h4FRst/Dem-Sl-220625-132408.png (https://postimg.cc/F7h4FRst)https://i.postimg.cc/wtRK4RFN/Dem-Sl-220625-132423.png (https://postimg.cc/wtRK4RFN)
https://i.postimg.cc/zycZkFw5/PLATE-220625-132613.png (https://postimg.cc/zycZkFw5)https://i.postimg.cc/c6RWNYWM/PLATE-220625-132622.png (https://postimg.cc/c6RWNYWM)https://i.postimg.cc/9DMHTn7J/SUPERMAN-220625-132444.png (https://postimg.cc/9DMHTn7J)https://i.postimg.cc/JGKWsLGs/SUPERMAN-220625-132538.png (https://postimg.cc/JGKWsLGs)

gid
26.06.2022, 19:29
ultra, ну и кто вам мешает? Берите исходники (http://gid.pdp-11.ru/f/3.13.2205.9843/BK_v3.13_src.rar), прикрутите туда шейдеры, какие больше нравятся, и удивите общественность потрясающей картинкой. Тёплой, ламповой, аутентичной.
Я например, все десять лет владения БКшкой не видел ни разу цветную картинку, и во все игры играл с подключенным ч/б телевизором.
А под самый конец, перед тем как забросить её на полку, таки подключил однажды к цветному телевизору через RGB вход на scartе, и понял, что ничего особо и не потерял. Смотрел демку INSULT в цвете и понял, что таких вырвиглазных цветов мне не особо и надо.
И сейчас в эмуляторе предпочитаю использовать чб режим. И при подключении реальной БК через GBS к LCD монитору, тоже предпочитаю чб видео, хотя могу и цветное, простым переключением видеовходов GBS.

ultra
26.06.2022, 21:02
и удивите общественность потрясающей картинкой.
Выше уже удивил вообще-то, если читать топик, предложение было и в эмуле сделать. Русская риторика, бессмысленная и беспощадная - англичане на фидбек с ошибками и предложениями за них извиняются и благодарят за активность, у нас как обычно "сделай сам лучше, п..дор!" в разных вариациях. "Не юзал цветное, в эмуле не нужно" тоже отличный аргумент.

[bETA]mEN
26.06.2022, 22:50
англичане на фидбек с ошибками и предложениями за них извиняются и благодарят за активность

гыгы

https://zx-pk.ru/threads/33781-zesarux-10-0.html?p=1132224&viewfull=1#post1132224


лучше если модеры прибьют весь этот бессмысленный оффтоп

ultra
27.06.2022, 09:51
mEN;1156811"]гыгы
И? По шейдерам и сглаживанию так понимаю ответить нечего? Ну и славно.

nzeemin
28.04.2024, 22:33
gid, спасибо за эмулятор, пользуюсь.
Вопрос такой: почему Uptime эмулятора идёт дальше после нажатия "Стоп/продолжить"? я полагал что это должен быть Uptime БК, а не самого эмулятора?

gid
29.04.2024, 08:20
Это не Uptime эмулятора, это просто таймер, он тикает пока запущена программа.
Это наследие Калмыкова, я считал эту штуку бесполезной, но т.к. она не жрёт ресурсов, не убирал, а приспособить для чего-то полезного не придумал. Какой практический смысл в том, чтобы сделать это именно Uptime эмулятора, чтобы оно останавливалось, когда ставишь эмулятор на паузу?

BlaireCas
29.04.2024, 08:49
Кстати вот тоже про джойстик... В эмуляторе имеется переназначение кнопок джойстика.
Переназначаю их на Home End Del PgDn (ну нету на клавиатуре цифрового блока, такое невезение).
Однако при нажатии того-же Home - эмулятор обрабатывает кнопку заодно как обычную кнопку клавиатуры БК. То-есть вылезает клавиатурное прерывание (если разрешено) и т.д. И кое-где для меня это критично увы...
А хотелось бы этого избежать. Ну то-есть когда жмешь на кнопку назначенную для джойстика - чтобы дальше обработка этой кнопки в эмуляторе никуда не шла. То-есть у джойстика чтобы был скажем так приоритет.

nzeemin
29.04.2024, 10:57
Это не Uptime эмулятора, это просто таймер, он тикает пока запущена программа.
Это наследие Калмыкова, я считал эту штуку бесполезной, но т.к. она не жрёт ресурсов, не убирал, а приспособить для чего-то полезного не придумал. Какой практический смысл в том, чтобы сделать это именно Uptime эмулятора, чтобы оно останавливалось, когда ставишь эмулятор на паузу?

В таком виде как сейчас эта фишка действительно почти бесполезна.
Чем полезен Uptime как время со стороны БК. Допустим, я занимаюсь оптимизацией программы, и измеряю время каких-то процессов. Я могу поставить точку останова, запомнить Uptime, запустить работу эмулятора, на точке останова сравнить Uptime и получить разницу, на следующей итерации сравниваю так же, и понимаю на сколько произошло улучшение.
Например, для Highway Encounter для меня хороший критерий это измерить время прохождения демо, от выбора режима до появляения транспоранта в конце.

gid
29.04.2024, 15:43
Uptime
Сделал я эту штуку. Но результатом не удовлетворён. Точность - ±секунда. Так то оно считает примерно точно, но из-за того что таймер работает по сообщению ON_WM_TIMER с интервалом 1 секунда, обрабатывается как бы с низким приоритетом, когда ничего другого важного не надо на экран вывести. Лаг большой получается. Тут надо бы ввести механизм измерения времени, как свойство контрольных точек.

Doronetty
29.04.2024, 20:13
Пользуясь возникшей активностью, хочу спросить - а VSync будет реализовано? А то у меня вместо монитора FHD телевизор и развёртка как раз 50 Гц. А плавного скроллинга, увы, нет...

gid
30.04.2024, 07:57
а VSync будет реализовано?
Я не знаю, как его делают, простых примеров в интернете не нашёл, что нашёл из советов - не работает, так что не будет.

Lethargeek
30.04.2024, 12:38
Я не знаю, как его делают, простых примеров в интернете не нашёл, что нашёл из советов - не работает, так что не будет.
а что, D3DPRESENT_INTERVAL_ONE не прокатывает?

gid
30.04.2024, 21:09
D3DPRESENT_INTERVAL_ONE не прокатывает?
Неа, в DirectX9 как было, так и осталось, ну т.е. у моего монитора 60Гц кадровая, а у эмулятора - 49 генерируется, работы VSyncа не заметил. А в DirectX11 этого вообще нету.
К тому же VSync всё равно не поможет. Однажды я пытался понять, почему скроллинг дёргается. И заморочился, вывел каждый кадр в отдельный файл с таймлайном. И увидел, что сама генерация кадров неравномерная. Там генерируется 2-3 одинаковых кадра, потом пропуск кадра, потом снова 2-3 одинаковых. С чем это связано, понять не смог. И забил.

Lethargeek
01.05.2024, 00:45
Неа, в DirectX9 как было, так и осталось, ну т.е. у моего монитора 60Гц кадровая, а у эмулятора - 49 генерируется, работы VSyncа не заметил. А в DirectX11 этого вообще нету.
кстати, а зачем тебе directx11? да и вообще directx, когда есть упрощённые кроссплатформенные либы как SDL/SFML


К тому же VSync всё равно не поможет. Однажды я пытался понять, почему скроллинг дёргается. И заморочился, вывел каждый кадр в отдельный файл с таймлайном. И увидел, что сама генерация кадров неравномерная.
что ты понимаешь под "генерацией"?


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

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

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

gid
01.05.2024, 10:09
зачем тебе directx11?
Чтобы было.

да и вообще directx
Чтобы было.

когда есть упрощённые кроссплатформенные либы как SDL/SFML
Я в интернете сходу нашёл, как прикрутить D3D, D2D, OpenGL. А как прикрутить SDL/SFML в винде, не нашёл.

что ты понимаешь под "генерацией"?
Буквально генерацию. У меня в эмуляторе эмулируется точная работа формирования экрана, в конце происходит кадровое прерывание, судя по нормально звучащему AY, происходит равномерно. В это время, из содержимого экранного буфера формируется битмап соответствующего формата для одного из выбранных способов отображения на экран: D3D, D2D, OpenGL, VfW, и отправляется соответствующему драйверу. Дальше не моё дело как и когда оно отобразится на экране монитора, этим виндозные драйвера уже занимаются.

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

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


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

Lethargeek
01.05.2024, 22:53
Чтобы было.
было что? даже если хочешь напрямую мучиться с иксом, никаких наворотов 10-11 не нужно


Я в интернете сходу нашёл, как прикрутить D3D, D2D, OpenGL. А как прикрутить SDL/SFML в винде, не нашёл.
например
https://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/index.php
там же и туториалы по кодингу


Буквально генерацию. У меня в эмуляторе эмулируется точная работа формирования экрана, в конце происходит кадровое прерывание, судя по нормально звучащему AY, происходит равномерно. В это время, из содержимого экранного буфера формируется битмап соответствующего формата для одного из выбранных способов отображения на экран: D3D, D2D, OpenGL, VfW, и отправляется соответствующему драйверу. Дальше не моё дело как и когда оно отобразится на экране монитора, этим виндозные драйвера уже занимаются.
в одну кучу свалил уровень и эмулятора, и системы
а они в общем случае работают несинхронно


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


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


Не знаю, что ты имеешь в виду под оригиналом, поэтому тут ничего ответить не могу.
вот это

основанного на исходниках эмулятора Юрия Калмыкова

gid
02.05.2024, 08:39
было что?
Было DirectX.

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

никаких наворотов 10-11 не нужно
Конечно не нужно, но если есть, почему нет?

там же и туториалы по кодингу
Ок, почитаю.

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

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

так vsync и есть такой же способ привязки, таймер не нужен
А в оконном режиме vsync уже начал работать? А то раньше не работал, только в полноэкранном работал.

подготовил в буфере картинку - вызвал функцию рендера
Я именно так и делаю, только без vsyncа, потому что фиг знает, как его включить что в OpenGLе, что в DirectXе 11-м.

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

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

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

вот это
А, это, ну да, я там вообще ничего не трогал, только имя своё в "О программе" приписал и всё.

Lethargeek
03.05.2024, 01:45
Было DirectX.
...чтобы от него было что?


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


Потому что одно без другого не работает.
работает - с не такими "другим" или "одним" соответственно


Они в принципе работают не синхронно,
в принципе можно как угодно, синхронно тоже


но повторюсь, у меня эмулятор уже сам по себе генерирует рваную картинку с пропусками кадров. А рендер показывает то, что ему дают, с vsyncом или без.
что значит "сам по себе"? это унаследованный код или уже твой?
и почему "с пропусками", когда следует с добавлением?
а для начала сделай просто 1:1 с дисплеем пк


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


Я именно так и делаю, только без vsyncа, потому что фиг знает, как его включить что в OpenGLе, что в DirectXе 11-м.
так он у тебя в полноэкранном даже вроде бы и включён
(правда, в менее точном варианте D3DPRESENT_INTERVAL_DEFAULT)
https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dpresent
видимо, проблема не в нём, а в логике отображения в эмуле


Он всегда будет отставать чуть меньше, чем на кадр.
во-1, больше, если больше 100гц видеорежим
во-2, с виндой никогда нельзя быть ни в чём уверенным


Ведь все знают что в БК самый кривой контроллер видеосигнала, и генерирует самую кривую раскадровку, не совместимую с многими мониторами и телевизорами. Вот и эмулятор в точности повторяет работу этого контроллера, потактово синхронизированного с процессором. Из-за этого я не могу генерировать кадров больше, чем возможно.
человек-то тут хотел плавный скроллинг, если моник держит 50/100/144гц - ну, пусть немножко отличается от реала, будет ровно 50 или 48


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


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


А, это, ну да, я там вообще ничего не трогал, только имя своё в "О программе" приписал и всё.
ну, тебе виднее, какая там каша из топора, а другим нетелепатам-то нет :)

gid
03.05.2024, 15:23
ну, тебе виднее
Это... Чё та слишком много написано, мне слишком лень отвечать, придумай какие-нибудь ответы сам, вместо меня. Ну или пусть кто-нибудь другой.
А я художник, я так вижу.
И делаю, как могу.
И исходники свободно доступны, кто может лучше - пусть сделает, если захочет.