![]() |
|
|
|
|
|
#1 |
|
FishBone Crew
Join Date: 11th February 2005
Location: 【RB】
Posts: 3,534
Thanks: 742
Thanked 740 Times in 389 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ммм... обсмотрелся я тут темы про «Вспоминаем демки с эффектом на бордюре», и решил тряхнуть стариной
прикинул немного кода и решил вывести статическую картинку на border, но слегка удивился: вот если скажем делать простой горизонтальный эффект (вся линия одним цветом), то как бы всё мило и красиво... а вот если скажем сделать цветные вертикальные полосы, то края будут как бы на пару пикселей колбаситься туда сюда, и это уже далеко не красиво пробовал данные выводить в порт разными способами и просто последовательностью (по старинке):Code:
ld a,1
out (254),a
ld a,2
out (254),a
ld a,3
out (254),a
ld a,4
out (254),a
ld a,5
out (254),a
ld a,6
out (254),a
ld a,7
out (254),a
ld a,0
out (254),a
Code:
ld hl,data
ld bc,#00fe
outi
outi
outi
outi
outi
outi
outi
outi
data db 1,2,3,4,5,6,7,0
![]() Посему интересует такой вопрос, это так всегда было ? тоесть на динамических эффектах этого просто не заметно, а на статической картинке всё глюки, как на ладони, или же есть какой-то финт ушами который я не знаю ?
|
|
|
|
|
|
#2 |
|
Master
Join Date: 27th November 2008
Location: Красноярск
Posts: 737
Thanks: 406
Thanked 231 Times in 145 Posts
![]() ![]() ![]() |
Мне этот вопрос также не давал покоя. psndcj мне часть разъяснил
GM Стабилизация эффектов на бордюре. Если сделать ORG 25000 EI LD C,254 LD H,0 LD L,7 L1 HALT LD DE,2000 : маленько задержим L2 DEC DE LD A,D OR E JR C,L2 OUT (C),L OUT (C),H LD A,127 IN A ,(254) RRA JR C,L1 RET Почему эта полосочка на бодюре не стоит на месте а дергается, может IM 2 или как? Еще жмешь на клаву что-то меняется. psndcj потому что используется стандартный обработчик прерываний из ПЗУ - а там и кнопки опрашиваются и еще чтото делается... надо задавать табличку для своего обработчика и включать IM 2 типа так di ld hl,imtab:ld a,h,i,a ld a,low int_jump ld (hl),a:inc l:jr nz,$-2 inc h:ld (hl),a ld l,h:ld (hl),#c3 //код команды JP #xxxx ld de,ТВОЙ_ОБРАБОТЧИК ld (hl),e:inc hl:ld (hl),d im 2:ei imtab - табличка 257 байт с ровного адреса (#xx00), inter - джампер на обработчик (младший и старший байты равны) - к примеру в наших демах используется #be00 и #bfbf соответственно. а и важно - чтобы работало везде - надо ставить в памяти в пределах #8000-#bfff GM А IM 2 шагает сразу по INT или с задержкой? psndcj когда приходит прерывания процессор читает из адреса I*256+#ff (но на самом деле младший байт может плавать на многих клонах, для этого и делается табличка 257 байт) - и переходит на этот адрес. при этом выполняется предыдущая команда до конца - поэтому даже если если процесор выполнял HALT - наш обработчик будет работать сначала фрейма +0.3 такта... это как-то можно устранить программно - но тут уж я не помощник - помню в ZX-Ревю каком-то было полное описание работы бордюрных и мультиколорных эффектов. GM При включеном IM 2 (в обработчике RET) после halt на следующей команде эмулятор выдает от 19 до 22 тактов, сейчас пытаюсь устранить, тоже в ступоре. |
|
|
|
|
|
#4 |
|
Banned
Join Date: 22nd February 2005
Location: triebkraft
Posts: 712
Thanks: 126
Thanked 33 Times in 27 Posts
![]() ![]() |
в принципе уже писал - но еще раз =) дерганье на пару пикселов происходит из-за того, что когда делается HALT при наступлении прерывания процессор завершает обработку этой команды, а она делается 4 такта. ну то есть мы не знаем сколько тактов в начале фрейма у нас будет занято - 0,1,2,3... типа так (немного косноязычно, и может неправильно в терминологии, но смысл таков).
на фирменных машинах (а может только на 48х?) если HALT выполняется во время построения экрана (когда луч идет по основному экрану), то прерывание начинается всегда точно. а вот на наших клонах этот фокус не прокатывает =( есть вариант - написать цикл длительностью 71680 тактов (под Пентагон) - тогда дергаться ничего не будет =) для статики вполне пойдет. Last edited by psndcj; 15th March 2009 at 09:00. |
|
|
|
|
|
#6 |
|
Member
Join Date: 25th January 2005
Location: Харьков
Posts: 117
Thanks: 18
Thanked 28 Times in 14 Posts
![]() |
Цитата с той статьи: ".....Правда у FILTER'а есть недостаток - он долго работает (несколько прерываний). Таким образом, с его помощью возможна только первоначальная синхронизация, а когда кадры пропускать нельзя, Вам придется выкручиваться без него." Так что если для бордер-эффекта используется комп типичный Пентагону - то в этом случае потребуется оптимизация кода так чтобы процессорного времени он занимал кратное 4-м тактам.
|
|
|
|
|
|
#7 |
|
FishBone Crew
Join Date: 11th February 2005
Location: 【RB】
Posts: 3,534
Thanks: 742
Thanked 740 Times in 389 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
не
историю про IM2 я знаю (забыл упомянуть что именно так я и рисую), а вот с HALT теперь понятно ![]() Добавлено через 1 минуту Спасибо посмотрю! Last edited by breeze; 15th March 2009 at 12:32. Reason: Добавлено сообщение |
|
|
|
|
|
#8 |
|
Activist
Join Date: 11th April 2006
Location: Novosibirsk
Posts: 383
Thanks: 10
Thanked 63 Times in 44 Posts
![]() |
В каком-то ленточном мегалоадере от Players Premier была вертикальная зебра на бордюре в случае сбоя чтения.
Стояла колом и не дергалась на всем на чем только можно. Какая конкретно игруха хоть тресни не вспомню, но их не так много было. Можно подсмотреть там как они выкрутились. |
|
|
|
|
|
#9 | |
|
Guru
Join Date: 25th January 2005
Location: Miass, Chelyabinsk region
Posts: 4,044
Thanks: 630
Thanked 892 Times in 627 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
__________________
wbw, psb. |
|
|
|
|
|
|
#10 |
|
Guru
Join Date: 11th October 2007
Location: Донецкая обл. г.Енакиево
Posts: 2,318
Thanks: 2,773
Thanked 795 Times in 467 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Если пускаете в работу скроллер, индикаторы, плейер музыки и пр., нужно эти подпрограммы доработать так, чтоб они в любое время при работе занимали одно и то-же количество времени(такты проца). Тогда ничего не будет дёргаться.
А если будет то сделайте следующее: ld hl,0 ld de,0 ld bc,10;это значение будете подбирать ldir Я лично использовал, в своё время, именно это для устранения дёрганья. Сначала опрос клавы на O - P (меньш - больше), а когда подбирал, опрос клавы удалял. |
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|