Под фреймом Вы, очевидно, имеете в виду цикл смены картинки, т.е после отработки очередного движения спрайтов.Сообщение от Ewgeny7
Проблема в том, чтобы знать когда делать слив экрана. Если есть прерывания, или хотя бы опорный простейший таймер, то можно делать слив экрана для визуализации каждые 200-400 МСЕК, если скорости CPU хватает для этого.
В случае эмулятора ИРИШИ, нет ни прерываний, ни опорного низкочастотного меандра, а таймер ВИ53 в эмуляторе B2M также отсутствует. По-моему опыту с ним на ОРИОНЕ, ВИ53 вообще проблематичен для чтения. На ОРИОНЕ мне не удавалось его считывать. Возможно из-за слишком быстрой скорости ОРИОНА. С таймером ВИ53 на ИРИШЕ еще надо разбираться. Причём именно на реальной ИРИШЕ.
Программированием ВН59 я никогда не занимался, и в эмуляторе он не эмулируется, поэтому пока я его использовать не хочу. Тем самым, пока нельзя использовать третий метод, метод адаптации на прерываниях.
В играх двигаются только спрайты. Для движения спрайт очищается и затем снова выводится на новом месте. Зная точки в программе, где заканчивается вывод спрайтов, то в каждой такой точке и надо вставлять визуализацию (слив экрана). Это требует разбора логики программы.
В игре 'ОХОТА НА УТОК' - есть всего две таких точки - сначала летит только утка. Она выводится в цикле с контролем F81B. Затем по нажатию пробела вылетает стрела и двигаются уже сразу 2 спрайта и без контроля F81B. Таким образом в игре есть 2 точки, где я и вставил визуализацию всего экрана.
Что в принципе неудачно из-за того, что добавляемое торможение в разных местах программы разное. В итоге темп игры не соответствует оригиналу. Судя по эмулятору, торможение не велико, но эмулятор B2M не показатель, т.к даёт не реальную скорость, а раза в 2 выше.
При втором методе адаптации визуализируется сама запись в экранную область. То есть перед каждой командой пишущей символ напрямую в экран делается CALL на подпрограмму, где анализируется адрес в экране РК и в соответствующую позицию в экране ИРИШИ делается вывод символа.
Базовая карта памяти ИРИШИ неудачна для адаптации програм РК. Вывести 64 символа в строке можно только в режиме моно-80. А в этом режиме экран затирает адрес F800, а все программы РК обращаются к подпрограммам на F800. Из этого есть 2 выхода.
Первый. Написать свой драйвер вывода на экран 320*200 в режиме моно-40 с экр.областью C000...DFFF, используя мелкошрифт 5*8. При этом в области F800 - свободное ОЗУ и можно туда грузить имитатор ПЗУ РК86. Который должен эмулировать не только экран РК 76D0...7FFF и визуализировать вызовы на вход F809, но и полностью эмулировать все системные ячейки монитора РК). Т.е это комбинация кода из стандартного ПЗУ РК86 и драйвера шрифта 5*8. Драйвер шрифта 5*8 получается очень медленным. Т.к не байтовый, что требует маскирований и сдвигов, да и программа из ОЗУ работает медленнее, чем из ПЗУ.
Такой имитатор ПЗУ РК86 позволяет прогонять оригинальные корректные программы РК на ИРИШЕ без переделок. В том числе и игры. Но корректных игр очень мало. Иногда вывод делается через стандартные входы F809/F818, а опрос клавиш путем прямого сканирования порта 8000, иногда наоборот. Однако скорость прогона динамичных игр будет низка.
Второй способ. Использовать режим моно-80, но все корректные программы РК переделать так, чтобы вместо вызовов F800, стояли вызовы C800. Точно так как это сделано в СПЕЦИАЛИСТЕ.
Такая переделка не проблема и делается за секунды. Выигрыш заключается в том, что шрифт красивый и скорость вывода быстра (т.к работает резидентный драйвер в ПЗУ). Но программы РК без переделки при этом использовать уже нельзя. Зато без адаптации можно использовать корректные системные программы СПЕЦИАЛИСТА. Текстовые редакторы - нет (там при ролике экран сдвигается прямым доступом в экран), а вот бейсик - да. Именно по такому пути я и пошёл в 1993, когда сделал для ИРИШИ монитор на C800. Отчего смог использовать кое-что от СПЕЦИАЛИСТА.
Некоторые игры не очень старательных людей адаптировались именно так, т.е путём периодической регенерации видео. Но, большинство делалось грамотнее. Иначе не хватило бы скоростей ОРИОНА в 2.5 МГЦ. Это доказывает тот факт, что некоторым играм даже не нужны прерывания. А в других без прерываний картинка сохраняется, а клавиатура не работает.Сообщение от Ewgeny7
Посмотрел, и увы, Виктор, - ОКЕАН оказался по всем параметрам круче.Сообщение от Viktor2312
На местной WIKI ничего про ОКЕАН нет. Это непорядок, ведь ОКЕАН фактически второй после МИКРО-80 доступный для сборки компьютер в СССР. К тому же очень грамотный (чего, к сожалению, нельзя сказать об ИРИШЕ). Исчерпывающую информацию об ОКЕАНЕ нашёл на сайте http://bashkiria-2m.narod.ru/ (спасибо Виктор за ссылку), и скачал оттуда листинги каких-то исходников и коды нескольких игр. Но чтобы получить более полное представление, собираюсь посмотреть на ОКЕАН в эмуляторе B2M.
Посмотрел и на платы ОКЕАНА. Именно их я и имел. И удивлялся зачем столько 40-ногих микросхем. Впрочем, ИРИША имеет два главных преимущества. Она имеет лучший конструктив и слоты-разъёмы для плат расширения, что даёт ей гибкость. Поэтому ИРИША ещё имеет шанс и по железу превзойти ОКЕАН. Но важнее то, что рабочая ИРИША у меня уже есть. А скоро настрою и вторую, чтобы проводить на ней эксперименты по установке Z80 и HD64180ZP8.
Нет проблем, это простейшая задача, доступная и первокласнику. Охотно проведу курс по программированию для ИРИШИ на твоём сайте. Очень полезно писать о технических проблемах в которых хочешь сам разобраться, т.к тогда и сам начинаешь понимать и разбираться в них лучше.Сообщение от Viktor2312
Но сначала обеспечь мне доступ на свой сайт. Твой сайт признаёт меня пользователем (приветствует "Добро пожаловать barsik") и в списке пользователей я тоже есть. И там даже отмечается время моего последнего захода на сайт. Но ничего из того, что имеет права делать пользователь, мне недоступно, как будто аккаунт деактивирован или сайт считает меня спам-роботом. Даже не могу послать тебе ЛС. Но, почему-то, без проблем читаю ЛС адресованные мне. И на этом сайте тоже не могу тебе послать ЛС (т.к это тоже почему-то перестало работать). Итого все каналы связи с тобой перерезаны. Думай, как это исправить.




Ответить с цитированием