1

Тема: Чего не могут эмуляторы

День добрый всем!

За 25-30 лет почти все забыл. Сейчас восстанавливаю знания.

Итак, вопрос такой. Я пользуюсь эмулятором под Windows, Олега Одинцова.  В принципе хватает пока.

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

У кого какие идеи, как быть?


P.S. Отличный сайт. Поиграл в свои игры 30-ти летней давности))) Сходил к напарнику, с кем вместе писали их, поразил его в самое сердце. Спасибо всем, кто организовал такой великолепный сайт. Есть что показать детям и студентам моим в назидание)))

2

Re: Чего не могут эмуляторы

Приветствую!

Ну так уж прямо "необходимо"? Я не смотрел, как сделана отрисовка картинки в эмуляторе. Но вариантов-то всего два. Либо вывод в буфер окна происходит 50 раз в секунду, и тогда из-за несовпадения частот обновления иногда нижняя половина картинки будет отставать на кадр от верхней. Либо вывод происходит синхронно с развёрткой современного монитора, и тогда некоторые кадры будут отображаться по два кадра развёртки, а некоторые -- только по одному. Т.е. появится некоторая рваность анимации.

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

3

Re: Чего не могут эмуляторы

Ну причин три.
Во-первых, в конце 90-го или начале 91-го, к нам в ВУЗ приезжала выставка именно Агатов. Девятки это были. Демонстрировали отечественные ПЭВМ. Там были демонстрашки с весьма плавной графикой. Как я понимал тогда, плавность заключалась как раз в переключении граф. страниц синхронно с началом развертки, т.е. по NMI. Боюсь такие демонстрашки не дадут в эмуляторе нужного эффекта.
Во-вторых, хотелось бы попробовать то, до чего не дошли руки 30 лет назад. Были некоторые задумки. Смешивание цветов и получение оттенков, еще что-то...
В-третьих, может я новодел хочу запилить? Вытянув из железа Агата все что можно. В том числе и "плавную" графику. Только вот самого железа то у меня и нет))

Вот вариант с повышением тактовой процессора, неплохой. По крайней мере возможно увижу нужный эффект.

4

Re: Чего не могут эмуляторы

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

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

Частоту процессора Вы и сейчас можете подстроить в настройках каждой машины. Не слишком точно, но если, скажем, у Вас монитор 60 герц, можно поставить в 120% и посмотреть, что выйдет.

Мне кажется, вытянуть всё из железа, не имея железа, нет никаких шансов. Эмулятор не идеален. Кажется, был проект по построению Агата на современной элементной базе. Вот если бы получилось сделать такую машинку, типа Ардуино или Raspberry Pi, но Агат -- тогда другое дело.

5 Отредактировано Voldemar0 (03-02-2017 06:22)

Re: Чего не могут эмуляторы

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

А эмулятор Олега вроде бы никак не привязан к физической развертке. Давно это тоже было, когда Олег обсуждал реализацию этой штуки в эмуляторе. Помню, он ещё  говорил о том, что с IRQ девятки не всё однозначно, в итоге я даже взялся капитально ковырять этот вопрос, тут результаты:
http://agatcomp.ru/Hard/clock.shtml
В результате он добился совмещения на нескольких примерах, но с оговорками о том, что работает это не везде и не всегда.
Лучше бы, конечно, он сам всё рассказал.

И я согласен с тем, что проще попросить, хотя бы на время, реальный агат, чем с эмулятором такие вещи исследовать.
Лишняя девятка среди участников этого форума - не редкость. Материнки, во всяком случае. Я на этих выходных "аттестую" :) адаптер PS/2 клавиатур Алекса, блок питания можно взять от любой PC, ну и остаётся только спаять подключение к телеку -> готовый агат.

6

Re: Чего не могут эмуляторы

О как! Ну по крайней мере дошло почему у меня случается 120 раз IRQ за время одного NMI. И вроде как 6кГЦ получается.

"Пауза" IRQ 0,064мс  это 64 такта процессора. Обработчик  IRQ у меня 3 раза сработать успевает )) за время пока на IRQ низкий уровень. Вот как-то не айс таймерные IRQ получаются. Это если грубо, 64*1950=125к тактов в секунду, коту под хвост. на 12,5% производительность упадет.

Что касается смешений цветов, то думаю через NMI их не сделать. Мигать в 2 цвета будет так или иначе. Но я кажется понял как Олег это делал))