User Tag List

Страница 13 из 39 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя
Показано с 121 по 130 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    471
    Спасибо Благодарностей отдано 
    805
    Спасибо Благодарностей получено 
    278
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Написал свой вариант вывода спрайта по методу ivagor "сразу в 3 плоскости" без использования стека и без DI.
    В приложении (rom).
    Результат вроде неплохой. Очень редко появляется моргание.
    По моим подсчётам (если я правильно подсчитал) уступает варианту со стеком на 20 тактов по выводу одной строки.
    Вот код вывода одной строки

    Скрытый текст


    DCR L
    LDA pozic_xP1
    MOV H,A ; адрес плоскости 1
    LDAX D
    MOV M,A
    INX D
    DAD B ; адрес плоскости 2
    LDAX D
    MOV M,A
    INX D
    DAD B ; адрес плоскости 3
    LDAX D
    MOV M,A
    INX D
    [свернуть]
    Вложения Вложения

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В Binorium_7 морганий не вижу, может они и есть, но получается очень редкие, с этим вполне можно жить.
    Есть возможность небольшого ускорения за счет перехода к змейке по плоскостям. Условно делим картинку на блоки 8x2 точки
    1. Вывод первых 8 точек как сейчас, только добавляем lxi b,8192
    2. Вывод вторых 8 точек в обратном направлении по плоскостям, добавляем lxi b,-8192
    lda+mov убираем. lxi - 12 тактов и 3 байта; lda+mov - 24 такта и 4 байта, т.е. выигрыш 12 тактов и 1 байт на каждых 8 точках.

    Вариант одновременного вывода со стеком можно разогнать до скорости "обычного" вывода со стеком, если интерливить спрайты по 2 штуки, т.е. хранить их с шагом в 2 байта и вставлять в промежуток другой спрайт. При этом можно будет избавиться от трех dcx sp на 8 точек, т.е. -24 такта. Это просто для полноты картины, не агитирую за этот вариант, т.к. тут надо прерывания запрещать.
    Последний раз редактировалось ivagor; 22.07.2020 в 06:03.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

  4. #3

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,714
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    320
    Поблагодарили
    223 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для того чтобы понять, где можно использовать стек, а где не желательно, нужно визуализировать работу со спрайтами как предлагал svofski. Перед началом подпрограммы менять цвет фона, по окончании - восстанавливать. Например при работе с ширмой делать фон белым, при отрисовке персонажа - красным, стен - зеленым, монеты - желтым. При внесении изменений в алгоритмы, будет сразу видно, быстрее спрайт выводится - полоса стала уже, или стало медленнее.

    - - - Добавлено - - -

    По поводу Binorium_7.
    При старте персонаж из стены выскакивает?
    А что происходит при перезапуске программы (БЛК+СБР) ? Или это только в эмуляторе emu (не успел остальные проверить) что-то с палитрой странное?

    Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    metamorpho(22.07.2020)

  5. #4

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В Binorium_7 есть небольшая шероховатость - при скролле вверх виден паразитный штрих справа вверху.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

  6. #5

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,714
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    320
    Поблагодарили
    223 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    В Binorium_7 есть небольшая шероховатость - при скролле вверх виден паразитный штрих справа вверху.
    Мне вот ещё интересен один момент...
    На сколько я понимаю, сейчас используется две ширмы, одна вверху и одна внизу... не будем обращать внимание на то, что это по сути одна сплошная ширма...
    Мне вот, что интересно, при смещении, сначала удаляются обе ширмы, а потом они обе восстанавливаются уже на новом месте... (это ведь лишние затраты ресурсов).
    Или всё-таки удаляется только одна, а потом с другой стороны выставляется новая? (что экономит затраты на ширму в два раза)

    Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    metamorpho(22.07.2020)

  7. #6

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,714
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    320
    Поблагодарили
    223 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    В Binorium_7 есть небольшая шероховатость - при скролле вверх виден паразитный штрих справа вверху.
    Есть ещё одна мысля по поводу ширмы...
    Левый верхний угол мельтешит, из-за того, что не хватает времени стереть ширму и снова нарисовать до подхода луча к верхнему левому углу рабочей области экрана...
    А если сначала выставить ширму на новом месте, а потом удалять старую ширму... то мельтешить не должно.

    Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    metamorpho(22.07.2020)

  8. #7

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    целесообразность ширмы под вопросом, зачем она?
    Без ширмы можно "гладко" без видимого заворота при скролле вывести только 1 или 2 строки (смотря как выводить и сколько цветов 8 или 16). С ширмой намного удобнее и проще, но, конечно, цветов в 2 раза меньше.

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Левый верхний угол мельтешит, из-за того, что не хватает времени стереть ширму и снова нарисовать до подхода луча к верхнему левому углу рабочей области экрана
    Тоже так думаю, поэтому и предлагаю оптимизировать сдвиг ширмы. В принципе промежуток времени доступный для ширмы можно увеличить, если ориентироваться не на прерывание, а на таймер синхронизированный с прерываниями (в духе эксолона и некоторых других программ). Но скорее всего без таймера можно обойтись если максимально ускорить сдвиг ширмы.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

  9. #8

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Подробно операции с ширмой не смотрел, но кое-что там меня смутило. Совершенно точно надо объединить стирание ширмы в старой позиции и рисование ее в новой. dad d для перехода к соседнему столбцу не нужен, меняем на inr h. Теперь есть две регистровые пары, в одну заносим 0000 для стирания, в другую - FFFF для рисования. И подряд 8 push (половина - B и половина - D). Грубо это будет (8*16+8)*32=4352 такта.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

  10. #9

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,921
    Спасибо Благодарностей отдано 
    363
    Спасибо Благодарностей получено 
    327
    Поблагодарили
    250 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, а сколько тактов всего во фрейме?
    С уважением,
    Jerri / Red Triangle.

  11. #10

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    312*192=59904 такта/фрейм

Страница 13 из 39 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

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