Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Вопрос по синхронизции с прерываниями (http://zx-pk.ru/showthread.php?t=14350)

TmK 21st November 2010 02:54

Вопрос по синхронизции с прерываниями
 
Как известно команда HALT ждет прерывания, но прерывание начинается со смещением по тактам 0..+3 от синхроимпульса.
Чтобы всегда было одно и тоже значение надо использовать код кратный по тактам 4, но если это не всегда возможно, то по идее если строить на бордере out`ами чтото, то оно будет плавать...
Тема уже поднималась, но там так и не дали нормального решения вопроса. Можно ли сделать синхронизацию с помощью регистра R скажем? Где про него почитать желательно на русском?

И еще вопрос - какова попиксельная ширина/высота экрана с учетом бордера? (и какова видимая область?)

null_device 21st November 2010 03:21

Quote:

Originally Posted by TmK (Post 333163)
Можно ли сделать синхронизацию с помощью регистра R скажем? Где про него почитать желательно на русском?

Теоретически - думаю, как-то использовать регистр R для синхронизации, возможно. Вскользь о нем упоминается в книжке Ларченко/Родионова: ..Младшие семь разрядов этого регистра увеличиваются на еденицу, после выполнения очередной команды (точнее - цикла М1) микропроцессора... Более детально - расписано в даташите на МП (сколько циклов выполняется та, или иная команда и т.п.) - на Virtual TR-DOS в разделе books она, по-любому есть.

Quote:

Originally Posted by TmK (Post 333163)
какова попиксельная ширина/высота экрана с учетом бордера? (и какова видимая область?)

Зависит от модели (реализации узла видеоконтроллера). В одном из ZX-Ревю озвучивались параметры по Пентагон 128 и "желтому" Scorpion.

jerri 21st November 2010 10:28

в zx ревю был описан метод синхронизации отрисовки с точностью до такта
кстати ниже - в разделе программирование оно на форуме есь

GriV 21st November 2010 14:39

А что - 0..3 такта так критично? Это для мульки какой то что ли? Даже для мульки... это около 6 пикселей... сильно критично?

Titus 21st November 2010 14:41

Quote:

Originally Posted by GriV (Post 333264)
А что - 0..3 такта так критично? Это для мульки какой то что ли? Даже для мульки... это около 6 пикселей... сильно критично?

Для мультиколора, имеющего видимые вертикальные преходы, критичен каждый такт.

psb 21st November 2010 16:28

ставлю на то, что R вам ну никак не поможет.

goodboy 21st November 2010 17:37

Quote:

Originally Posted by TmK (Post 333163)
Как известно команда HALT ждет прерывания, но прерывание начинается со смещением по тактам 0..+3 от синхроимпульса.

и это если я не ошибаюсь только на наших клонах. на фирменных моделях (судя по выводу на бордюр) смещения нет

---------- Post added at 16:37 ---------- Previous post was at 16:35 ----------

Quote:

Originally Posted by TmK (Post 333163)
И еще вопрос - какова попиксельная ширина/высота экрана с учетом бордера? (и какова видимая область?)

для Пентагона вот http://www.worldofspectrum.org/rusfaq/index.html#21

Sinus 21st November 2010 17:51

Quote:

и это если я не ошибаюсь только на наших клонах. на фирменных моделях (судя по выводу на бордюр) смещения нет
как раз наоборот. на всех фирменных Z80 HALT занимает ровно 4 такта, и по-этому, есть смещение.
а на каком-то советском клоне z80 HALT исполнялась с точностью до такта, так что не надо было "настраиваться" для вывода на бордер.

TmK 21st November 2010 17:58

Quote:

Originally Posted by jerri (Post 333190)
в zx ревю был описан метод синхронизации отрисовки с точностью до такта
кстати ниже - в разделе программирование оно на форуме есь

Как примерно тема называется? я помню что вроде чтото упоминалось, но не нашел((

Quote:

Originally Posted by GriV (Post 333264)
А что - 0..3 такта так критично? Это для мульки какой то что ли? Даже для мульки... это около 6 пикселей... сильно критично?

критично ли когда статичная картинка будет дергаться на эти 6 пикселов?

Titus 21st November 2010 18:09

Quote:

Originally Posted by psb (Post 333294)
ставлю на то, что R вам ну никак не поможет.

Мне когда-то именно регистр R и помоагал, на сколько я помню.

TmK 21st November 2010 18:34

Нашел тему, прям перед глазами лежала))
http://zx.pk.ru/showthread.php?p=333333

Там кстати и высказал мысли по поводу устранения этого дрожания

GriV 23rd November 2010 23:16

Quote:

Originally Posted by TmK (Post 333319)
критично ли когда статичная картинка будет дергаться на эти 6 пикселов?

Избегай этого. Обойди как нибудь. Для реалов картинка будет плясать от модели к модели.

Sinus 23rd November 2010 23:52

Quote:

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

VNN_KCS 24th November 2010 02:00

Quote:

Originally Posted by goodboy (Post 333312)
на фирменных моделях (судя по выводу на бордюр) смещения нет

Да, там смещение меньше, чем 4 такта не сделаешь, проверено. А на наших клонах (не на всех конечно) минимальное смещение 2 пиксела. дальше 2,4,6,8... и т.д.

pulsar 26th November 2010 13:20

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

;подстройка под начало отсчета
        DUP 2 ;1й раз подготовка R по тактам, 2й раз установка в C - "кол-во команд в прерывании"
        EI: HALT
        LD A,R,C,A
        JP $+3
        INC HL: LD A,0,R,A
        JP $+3
        EDUP
sync        EI: HALT ;время исполнения тоже(^^^)+1 такт
        LD A,R: CP C
        JP NZ,mloop ;начало отсчета, стартуем
        LD A,0,A,0,R,A
        JP sync

внимательно анализируя код становится понятно, что psb на 100% прав:
Quote:

Originally Posted by psb (Post 333294)
ставлю на то, что R вам ну никак не поможет.

и к сожалению этот путь (с использованием регистра R) точно утопичен. однако всем бы хотелось иметь нормальное рабочее решение. быть может и вправду стоит поднять старые статьи из zx-ревю как советует jerri? вот только мне что-то подсказывает, что ничего нового, к сожалению там не будет.

Titus 26th November 2010 13:44

Товарищи, давным давно уже синхронизация была с точностью до такта, а не до четырех. Загляните хотя бы в Insult мегадемо, скрытую часть. Уверен, что у RST7 там все до такта.

---------- Post added at 12:44 ---------- Previous post was at 12:40 ----------

Или в демке 'Rage' от X-Trade, в последней части.

GM BIT 26th November 2010 22:33

Но увы эти люди наследство не передадут потомкам как это они Зделали!

Titus 27th November 2010 00:10

Quote:

Originally Posted by GM BIT (Post 334816)
Но увы эти люди наследство не передадут потомкам как это они Зделали!

А посмотреть в код?

VNN_KCS 27th November 2010 14:46

1 Attachment(s)
А я использую для синхронизации такую п/программку. В своё время "стырил" у Code Busters. Ни разу не подвела. Всегда пиксел в пиксел.
Titus - "Товарищи, давным давно уже синхронизация была с точностью до такта, а не до четырех. Загляните хотя бы в Insult мегадемо, скрытую часть. Уверен, что у RST7 там все до такта."
Наверне это она и есть.

newart 27th November 2010 23:30

Quote:

Originally Posted by GM BIT (Post 334816)
Но увы эти люди наследство не передадут потомкам как это они Зделали!

Исходники RAGE летали по фидо. Но не уверен что там была бордюрная часть.

GM BIT 28th November 2010 06:58

1 Attachment(s)
Она есть, без коментариев. Можно вместе разобрать, или кто умеет легко читать чужой код пусть напишет внятные коментарии

pulsar 28th November 2010 13:24

Quote:

Originally Posted by VNN_KCS (Post 334921)
я использую для синхронизации такую п/программку. В своё время "стырил" у Code Busters. Ни разу не подвела. Всегда пиксел в пиксел.

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

---------- Post added at 13:52 ---------- Previous post was at 13:46 ----------

GM BIT, есть заincbinеные файлы? хочется проверить код в действии.

---------- Post added at 14:01 ---------- Previous post was at 13:52 ----------

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

---------- Post added at 14:24 ---------- Previous post was at 14:01 ----------

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

GM BIT 28th November 2010 13:35

1 Attachment(s)
Quote:

Originally Posted by pulsar (Post 335175)
есть заincbinеные файлы?

Сейчас проверил все работет, файл PR


All times are GMT +4. The time now is 23:56.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.