Важная информация

User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 43

Тема: Рисуем на BORDER

  1. #1
    FishBone Crew Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,586
    Благодарностей: 764
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Рисуем на BORDER

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

    Код:
            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
    и типо модным способом через OUTI

    Код:
            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. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне этот вопрос также не давал покоя. 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. #3
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все, что я пока успел напробывать.
    Там два файла в формате STORM.
    BO - твердо стоящее изображение на бордюре.
    BO1 - начало эффекта шторы (не доделано)
    Вложения Вложения
    • Тип файла: rar Border.rar (414 байт, Просмотров: 181)

  5. #4
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    на фирменных машинах (а может только на 48х?) если HALT выполняется во время построения экрана (когда луч идет по основному экрану), то прерывание начинается всегда точно. а вот на наших клонах этот фокус не прокатывает =(

    есть вариант - написать цикл длительностью 71680 тактов (под Пентагон) - тогда дергаться ничего не будет =) для статики вполне пойдет.
    Последний раз редактировалось psndcj; 15.03.2009 в 08:00.

  6. #5
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В ZX Ревю 4-5 за 96г. есть что-то связанное с убиранием 0-3 такта.

  7. #6
    FishBone Crew Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,586
    Благодарностей: 764
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    не историю про IM2 я знаю (забыл упомянуть что именно так я и рисую), а вот с HALT теперь понятно

    Добавлено через 1 минуту
    Цитата Сообщение от GM BIT Посмотреть сообщение
    Все, что я пока успел напробывать.
    Спасибо посмотрю!
    Последний раз редактировалось breeze; 15.03.2009 в 11:32. Причина: Добавлено сообщение

  8. #7
    Member Аватар для Activator
    Регистрация
    25.01.2005
    Адрес
    Харьков
    Сообщений
    116
    Благодарностей: 27
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GM BIT Посмотреть сообщение
    В ZX Ревю 4-5 за 96г. есть что-то связанное с убиранием 0-3 такта.
    Цитата с той статьи: ".....Правда у FILTER'а есть недостаток - он долго работает (несколько прерываний). Таким образом, с его помощью возможна только первоначальная синхронизация, а когда кадры пропускать нельзя, Вам придется выкручиваться без него." Так что если для бордер-эффекта используется комп типичный Пентагону - то в этом случае потребуется оптимизация кода так чтобы процессорного времени он занимал кратное 4-м тактам.

  9. #8
    Master
    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    790
    Благодарностей: 193
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В каком-то ленточном мегалоадере от Players Premier была вертикальная зебра на бордюре в случае сбоя чтения.

    Стояла колом и не дергалась на всем на чем только можно. Какая конкретно игруха хоть тресни не вспомню, но их не так много было. Можно подсмотреть там как они выкрутились.

  10. #9
    Guru
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,083
    Благодарностей: 924
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psndcj Посмотреть сообщение
    есть вариант - написать цикл длительностью 71680 тактов (под Пентагон) - тогда дергаться ничего не будет =) для статики вполне пойдет.
    это через чур уж... вот как правильно:

    Цитата Сообщение от Activator Посмотреть сообщение
    оптимизация кода так чтобы процессорного времени он занимал кратное 4-м тактам.

  11. #10
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если пускаете в работу скроллер, индикаторы, плейер музыки и пр., нужно эти подпрограммы доработать так, чтоб они в любое время при работе занимали одно и то-же количество времени(такты проца). Тогда ничего не будет дёргаться.
    А если будет то сделайте следующее:
    ld hl,0
    ld de,0
    ld bc,10;это значение будете подбирать
    ldir
    Я лично использовал, в своё время, именно это для устранения дёрганья.
    Сначала опрос клавы на O - P (меньш - больше), а когда подбирал, опрос клавы удалял.

Страница 1 из 5 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Border-эффект на Бейсике
    от jim в разделе Разное
    Ответов: 7
    Последнее: 18.04.2007, 19:50
  2. рисуем круги
    от jim в разделе Программирование
    Ответов: 1
    Последнее: 07.10.2006, 08:09
  3. The BBG Border Test
    от [bETA]mEN в разделе Эмуляторы
    Ответов: 1
    Последнее: 16.05.2006, 22:56
  4. статейки о multicolor и border effects?
    от boo_boo в разделе Программирование
    Ответов: 57
    Последнее: 03.02.2006, 23:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •