Multicolor для ПК-01 "Львов"

Программное обеспечение
User avatar
liberation
Posts: 1405
Joined: 11 Aug 2008, 17:05
Location: Украина
Contact:

Post by liberation »

Zelya wrote:Можно подробнее?
Посмотрите на Boulder Dash. И еще я где-то видел hacked by nemo. А ведь у Boulder Dash была пусть и ужасная, но заставка! Теперь она утеряна... :lol:
Carthago delenda est, Carthaginem delendam esse
sadfsdfsdaf
Posts: 227
Joined: 07 Dec 2010, 16:54

Post by sadfsdfsdaf »

Zelya wrote:Хаер Немо, подпоявший мозги? Можно подробнее?
там спец-загрузчик во многих играх был, т.к. сливалось всё эмулятором в дампы ОЗУ, то потом модифицировалось (чтобы можно было загрузить). Что-то я восстановил до .LVT формата, что-то так и осталось в дампах. Что-то было переделано до уровня имитации загрузки с магнитофона (не мной, это было в присланном архиве). Так оно и осталось. Я не смешивал данные из разных источников, поэтому могу отследить "что откуда".
User avatar
liberation
Posts: 1405
Joined: 11 Aug 2008, 17:05
Location: Украина
Contact:

Post by liberation »

Неожиданное продолжение темы мультиколора для "Львова". Запустил в виртуальной машине эмуль e3000, где обнаружил любопытную настройку:
Image
"Multicolor support" - что это такое?! :shock:
Carthago delenda est, Carthaginem delendam esse
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Post by Zelya »

Может, уважаемый Антон Игнатичев подскажет? Все-таки автор эмулятора благодарит именно его за помощь по "Львову".
Ну а с моей точки зрения, поддержка мультиколора как-то завязана на синхронизацию видеопамяти и формирования изображения (приближаясь к реалу). Как я подозреваю, фича мультиколора заключалась в изминении палитры (байтов видеопамяти?) в процессе вывода изображения на экран. Например, в эмуляторе Калашникова (напомню, что наш эмуль на его основе) этой фичи нет. Там память выгребается полностью 50 раз в секунду, т.е. кадр формируется "мгновенно".
a99
Posts: 131
Joined: 04 Sep 2008, 19:39
Location: Владимир
Contact:

Post by a99 »

Неее... по части "мультиколора" Евгений со мной не советовался. В моём эмуляторе (который на современных ОС приходится эмулировать))) для эмуляции OUT 0C1H устанавливались значения DAC-регистров через int 10h. При этом, конечно же, точность эмуляции скорости выполнения программы была весьма приблизительной.
a99
Posts: 131
Joined: 04 Sep 2008, 19:39
Location: Владимир
Contact:

Post by a99 »

a99 wrote:Неее... по части "мультиколора" Евгений со мной не советовался.
Хе-хе, что-то с памятью моей стало...
В общем, в марте 2002-го Евгений реализовал мультиколор, который был опробован на Graphics.lvt, ожидаемо привёл к "тормозам" и был вынесен в опцию.
User avatar
liberation
Posts: 1405
Joined: 11 Aug 2008, 17:05
Location: Украина
Contact:

Post by liberation »

a99 wrote:В общем, в марте 2002-го Евгений реализовал мультиколор, который был опробован на Graphics.lvt, ожидаемо привёл к "тормозам" и был вынесен в опцию.
А в чем суть этого мультиколора? Это аппаратное или программное решение?
Carthago delenda est, Carthaginem delendam esse
a99
Posts: 131
Joined: 04 Sep 2008, 19:39
Location: Владимир
Contact:

Post by a99 »

liberation wrote:А в чем суть этого мультиколора? Это аппаратное или программное решение?
Суть в том, что нет никакого мультиколора :)
Просто можно при эмуляции отрисовывать экран целиком при палитре, установленной на момент начала отрисовки, а можно учитывать возможность изменения палитры в ходе отрисовки, если потоки эмуляции и отрисовки жёстко не синхронизированы.
Если б у "Львова" было прерывание по обратному ходу луча, можно было б менять палитру для части экрана, а так это будут горизонтальные полосы, скользящие вверх или вниз.
ivagor
Posts: 123
Joined: 23 Aug 2012, 12:28

Re:

Post by ivagor »

a99 wrote:горизонтальные полосы, скользящие вверх или вниз
Если подобрать задержки таким образом, чтобы цикл смены цветов точно уложился в кадр, то скольжения не будет, картинка будет неподвижной.
Остается еще одна проблема - положение "расцветки" относительно картинки (или относительно границ экрана). При отсутствии прерываний вижу только один выход - дать возможность пользователю нажатием клавиши "сдвинуть расцветку" (просто по нажатию клавиши выждать некий интервал).
В E3000 (не нравится мне этот эмулятор, но альтернативы для мультиколора на львове я не знаю) получилось сделать примерно то, что я описал, но к реалу, конечно, это практически не имеет отношения.
На реале могут быть и дополнительные засады:
1. Разное торможение в активной области и "на бордюре". Это сильно затруднило бы отладку, но если сдвинуть в правильное положение, то все должно стать нормально. К слову, если время выполнения команд меняется в зависимости от того, какая часть экрана отображается, это может сильно портить биперную музыку букетом левых гармоник.
2. В любой ли момент можно изменить палитру? Понятно, что в ВВ55 можно записать в любой момент, но сразу ли это скажется на изображении? Это я предполагаю по аналогии со скроллингом на векторе, где значение из вв55 берется 1 раз за кадр.
3. Может еще что забыл.
ivagor
Posts: 123
Joined: 23 Aug 2012, 12:28

Re: Multicolor для ПК-01 "Львов"

Post by ivagor »

Слегка доделал первоначальный вариант мультиколора, добавил "интерактивности". Теперь можно считать это заготовкой и для реала.
Реагирует на 3 кнопки:
1. Пробел - сместить мультиколор "вниз" относительно экрана
2. Вверх - увеличить задержку
3. Вниз - уменьшить задержку
Текущая величина задержки отображается на экране в 16ричном виде.
Этот вариант подогнал так, чтобы при задержке 80h картинка была неподвижной в E3000 при включенной опции мультиколора.
Если диапазона регулирования задержки не хватит для остановки картинки на реале, то можно менять DELAY1 и DELAY2. Если картинка почти остановится, но при одной пограничной задержке полосы пойдут вниз, а при соседней - вверх, то можно еще изменить фрагмент "Точная подстройка" (добавить или убрать оттуда команды, делающие задержку).
Attachments
frame.zip
(1.36 KiB) Downloaded 1480 times
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest