PDA

Просмотр полной версии : Демонстрация горизонтального скролла Апогея



vinxru
27.07.2012, 00:38
Видео:
youtube (youtu.be/WTJCjbTE2eI)

http://i058.radikal.ru/1207/13/14bfc8246db6.png

Делал всего 4 часа, ничего не оптимизировано. Спрайты я рисовал в пеинте. Я вообще не гарантирую работоспособность, но вроде работает :)

Иногда эмулятор подтормажимает и происходит рассинхронизация видео. В следующей версии я сделаю синхронизацию по другому, более надежно.

Atari
27.07.2012, 00:51
или эмуль у меня гонит или... грузится с ошибкой.

vinxru
27.07.2012, 01:04
Убегает экран? Я это почти поправил.

vinxru
27.07.2012, 13:56
Еще одна версия. В архиве исходники и компилятор.

Я попробовал много способов синхронизации, но все они в эмуляторе подглючивают.

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

Еще более простой способ, размещение в видеопамяти дополнительных "непечатаемых символов", то же не совсем корректно работает. Экран между двумя КСИ иногда сдвигается больше, чем на символ.

Самым лучшим способом оказалось размещение в видеопамяти спец. символа КОНЕЦ ЭКРАНА. Но при его перемещении в видеопамяти экран мерцает. (Этот способ в аттаче)

Размещение в видеопамяти символа КОНЕЦ СТРОКИ не вызывает мерцания, но при перемещении этого сивола в видеопамяти плывут кадры. Пока не сообразил, как его правильно применить, но кажется это правильный путь. Буду думать над этим способом.

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

http://s57.radikal.ru/i156/1207/ab/ac3fa0bf2be5.png

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

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

vinxru
27.07.2012, 14:13
Но скролл работает и производительности у компьютера хватает, что радует.

Обидно немного. В СССР был очень популярный компьютер (РК-86), возможности которого не были реализованы. А он мог реально дернуть Спектрум по динамичности графики.

---------- Post added at 14:13 ---------- Previous post was at 14:08 ----------

И это я так теилы убого нарисовал. Можно использовать 5 цветов на теил.

Или даже 8, но при этом надо голову сильно напрягать.

Titus
27.07.2012, 14:28
Еще одна версия. В архиве исходники и компилятор.

Я попробовал много способов синхронизации, но все они в эмуляторе подглючивают.
А на реале пробовал?

vinxru
27.07.2012, 14:51
нет пока

---------- Post added at 14:51 ---------- Previous post was at 14:40 ----------

На другом эмуляторе обе демки работают так:

http://s58.radikal.ru/i162/1207/ef/b5193e1ba08f.png

b2m
27.07.2012, 14:52
Пока стабильного результата нет, но я уверен, что я найду его.
Откуда такая уверенность, что если будет стабильно в эмуляторе, то и на реале тоже будет? Надо стабильность на реале подбирать, а моя задача, чтобы этот вариант выглядел в эмуляторе также.

А опрашивать бит наличия прерывания в регистре статуса ВГ75 не пробовал? По-моему должно быть железно.

vinxru
27.07.2012, 14:55
А опрашивать бит наличия прерывания в регистре статуса ВГ75 не пробовал? По-моему должно быть железно.

На этом всё и построено.

b2m
27.07.2012, 15:00
Не факт, что будет работать на реале, если постоянно перенастраивать ПДП. Кстати, у ВТ57 есть режим без автозагрузки, может его использовать? Хотя, как это будет выглядеть на реале, я сказать затрудняюсь.

vinxru
27.07.2012, 15:01
Откуда такая уверенность, что если будет стабильно в эмуляторе, то и на реале тоже будет?

А как у тебя сделана работа с ВТ57?

В документации написано, что для выборки используется канал 3. Как только канал 3 закончил работу, он загружается новыми данными из канала 2.

Я пробовал загрузить в канал 2 диапазон A000 - B77F, а в канал 3 диапазон B000-B77F. То есть, контроллер бы начал с адресов B000-B77F, а потом стал бы крутить A000 - B77F

Но в эмулятор это не сработало. Синхронизация сбивается.

---------- Post added at 15:01 ---------- Previous post was at 15:00 ----------


Не факт, что будет работать на реале, если постоянно перенастраивать ПДП

Гонки на апогее сделаны постоянной перенастройкой ПДП.

vinxru
27.07.2012, 15:04
Вот тут я пробовал каждый кадр перенстраивать 2 ой канал ПДП. Работает отлично, но требуется в 2 раза больше видеопамяти и вручную копировать данные из начала в конец.

В демке можно стрелять, но враги заблокированы. Я там что то сломал.

http://s013.radikal.ru/i322/1207/33/1e52b6776b1e.png

b2m
27.07.2012, 15:09
В документации написано, что для выборки используется канал 3. Как только канал 3 закончил работу, он загружается новыми данными из канала 2.
Как раз таки наоборот. ВГ75 читает из второго канала, а третий канал используется для хранения значений автозагрузки. Т.е. можно в любом месте кадра установить третий канал, и он будет использован для след. кадра.


Я пробовал загрузить в канал 2 диапазон A000 - B77F, а в канал 3 диапазон B000-B77F. То есть, контроллер бы начал с адресов B000-B77F, а потом стал бы крутить A000 - B77F
Т.е. ты каждый раз перерисовываешь весь экран? Я думал, что ты просто сдвигаешь начало ПДП на 1 байт, а перерисовываешь только пару колонок.


Гонки на апогее сделаны постоянной перенастройкой ПДП.
Значит надо делать так, как там сделано. Оно ведь работает, и на реале тоже.

vinxru
27.07.2012, 16:08
Т.е. ты каждый раз перерисовываешь весь экран? Я думал, что ты просто сдвигаешь начало ПДП на 1 байт, а перерисовываешь только пару колонок.

Я рисую одну колонку, а потом сдвигаю ПДП на один байт.

---------- Post added at 15:15 ---------- Previous post was at 15:12 ----------


Значит надо делать так, как там сделано. Оно ведь работает, и на реале тоже.

Что бы мне использовать этот способ, придется в 2 раза увеличить видеопамять и обрабатывать в 2 раза больше данных.

У них конец кадра всегда соответствует концу ПДП. Я бы хотел, что бы они работали с управляемым смещением.

---------- Post added at 16:08 ---------- Previous post was at 15:15 ----------


Как раз таки наоборот. ВГ75 читает из второго канала, а третий канал используется для хранения значений автозагрузки. Т.е. можно в любом месте кадра установить третий канал, и он будет использован для след. кадра.

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

А по идее, влияние одного из каналов должно распространяться только на один кадр.

Даже в функции инициализации видеорежима не имеет значения какой канал настраиваем. В любом случае видео работает.

alone
27.07.2012, 17:57
Не ожидал такого от РК!!!

b2m
27.07.2012, 19:25
Не ожидал такого от РК!!!
Это не РК, это Апогей!!!

AIS
27.07.2012, 20:03
А на РК эти программы вообще ничего не покажут или покажут ч\б картинку без градаций яркости?
Во всяком случае сделать на любом РК цветной выход по схеме Апогея несложно.
http://www.zx.pk.ru/showthread.php?t=17448

b2m
27.07.2012, 21:55
А на РК эти программы вообще ничего не покажут или покажут ч\б картинку без градаций яркости?
Кракозяблы будут. Нужен второй фонт, с разнообразными точками вместо букв. Вроде в Партнёре было нечто аналогичное.

vinxru
28.07.2012, 09:10
Для РК86 надо будет картинки перерисовывать с 12x8 на 8x8. И поменять адреса контроллеров в программе.

vinxru
01.08.2012, 16:17
Залил видео:
youtube (youtu.be/WTJCjbTE2eI)

artice
03.08.2012, 13:01
Апогей БК-01 вроде как не цветной!? Я не прав?

AIS
03.08.2012, 15:05
Вы всегда правы, Кэп.
БК-01 не цветной
БК-01Ц цветной.

artice
03.08.2012, 16:29
Не знал, что существовал цветной Апогей!
У меня был Апогей БК-01, ч/б, тогда и телевизор-то ч/б был!

NEO SPECTRUMAN
03.08.2012, 18:09
И чего ни у кого нет реала чтоб потестить, заснять и выложить видео?

DMG
12.09.2012, 22:23
И чего ни у кого нет реала чтоб потестить, заснять и выложить видео?

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


или эмуль у меня гонит или... грузится с ошибкой.

То же самое:
http://s019.radikal.ru/i626/1209/2a/e498933380f3.png

Скомпилировал новый, но то же самое.

vinxru
12.09.2012, 22:50
G4

DMG
12.09.2012, 23:17
Да нет, черный экран и все, хотя в эмуляторе все работает

vinxru
14.09.2012, 12:35
Когда я сделаю себе удобный инструмент для отладки и компилятор Си, я переделаю этот пример и отлажу его на реальной машине.

Я написал еще один скролл. На этот раз один из уровней игры Zeliard. Уровень размером примерно 1000 x 400 пикселей (160x60 теилов 6x6). И скроллится он стрелками во все стороны. Но он так же иногда подглючивает.

И я вроде понял причину. Когда перевод строки F1 находится в последнем байте видео ОЗУ, происходит странная бяка.

Причем, это последний байт для ПДП, после чего ПДП должен продолжать давать данные с начала видеопамяти. И ПДП пофиг на значение F1. Но для видеоконтроллера этот байт может быть и в середине ОЗУ.

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