User Tag List

Страница 8 из 45 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 443

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

  1. #71

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,030
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

    Life Pro Tip: вывод разных цветов в регистр бордюра дает возможность увидеть наглядно сколько именно времени от кадра занимают разные процедуры.
    Больше игр нет

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

    metamorpho(16.07.2020)

  2. #72

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    - даже если делать "ширму" то при аппаратном вертикальном скроллинге сдвигаются все 4-и плоскости, включая "ширму". И выходит мне нужно будет и спрайты нарисовать и "ширму" обновить. Похоже разница в скорости будет небольшой. Хотя тут есть зависимость от количества цветов используемых в стенах.
    Не агитации ради, а токма спортивного интересу из.
    Прикинул алгоритм "ширмы".
    Формирование "ширмы" в 4 строки и на всю ширину экрана занимает 2048 тактов, или около 0.68 мсек.
    Это один проход. Для удаления "ширмы" и установки её на новое место в два раза дольше.
    "Луч" за это время успевает отобразить на экране порядка 20-ти строк (если я в расчетах не ошибся).

    Правда это только вывод полосы, без учета обвязки в виде сохранения указателя стека и его восстановления...
    Последний раз редактировалось KTSerg; 16.07.2020 в 19:20.

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

    metamorpho(16.07.2020)

  3. #73

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

    По умолчанию

    svofski, спасибо за советы, но для меня подобные манёвры кода пока непонятны - это уже похоже высший пилотаж.
    Я непонимаю как это реализовать в коде.

    KTSerg, я решил поэксперементировать с "ширмой", о результатах сообщу.

  4. #74

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

    По умолчанию

    Осмелюсь показать свою идею по заполнению ширмы.
    Сразу скажу, я этим ни когда не пользовался и не протестировал.
    Не призываю это использовать, просто как пример, может на какие мысли подтолкнёт.

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


    сохранение указателя стека
    lxi h,0000h
    dad sp
    shld sohr_sp

    подготовка регистров.
    HL должна читать адрес шиирмы, который где-то вычисляется и хранится в памяти
    lhld adr_shirm - в HL загрузить адрес верхней строки "ширмы" из памяти.
    lxi d,$0100 - в DE загрузить смещение для перехода к следующей колонке "ширмы".
    lxi b,$ffff - в BC загружаем "ширму" или $0000 для её снятия.
    mvi a,$20 - счетчик количества колонок ширмы, если пользоваться циклом

    shirm_scr:
    sphl - адрес ширмы в указатель стека
    push b - две строки ширмы
    push b - две строки ширмы
    dad d - переход на следующую колонку ширмы

    dcr a - счетчик циклов для ширмы
    jnz shirm_scr - на повтор цикла

    восстановление указателя стека
    lhld sohr_sp
    sphl

    если циклом не пользоваться, а просто повторить 32 раза 4 команды загрузки ширмы, то её заполнение ускоряется на 30%.
    [свернуть]


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

    Цитата Сообщение от metamorpho Посмотреть сообщение
    KTSerg, я решил поэксперементировать с "ширмой", о результатах сообщу.
    metamorpho, это глобальные изменения и самих спрайтов и алгоритмов их вывода... я много раз косячил, просто начиная вносить глобальные изменения в программы, не создав сначала копию уже рабочего проекта...

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

    metamorpho(17.07.2020)

  5. #75

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

    По умолчанию

    Отключил одну плоскость. Сделал "ширму". Смотрится более ровно чем в исходном варианте, но попрежнему мельтишит.
    Дальше хочу попробовать уменьшить вывод прибавки графики до 4-х строк (сейчас 8 строк) при скроллинге, выглядеть должно получше.
    Если и это не даст приемлемый вид отображения, то возможно буду пробовать применить советы svofski.



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

    Цитата Сообщение от KTSerg Посмотреть сообщение
    metamorpho, это глобальные изменения и самих спрайтов и алгоритмов их вывода... я много раз косячил, просто начиная вносить глобальные изменения в программы, не создав сначала копию уже рабочего проекта...
    KTSerg, спасибо за совет. Да я тоже это проходил Стараюсь почаще сохранять варианты кода.

  6. #76

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

    По умолчанию

    Пока не могу посмотреть видео, гляну вечером.
    Но мне кажется, что при работе с ширмой важно синхронизировать её формирование с прерыванием.
    При скроллинге вверх, не должно быть проблем с мерцанием, а вот при скроллинге вниз, ширма будет перескакивать в верх экрана, и нужно успевать быстро её удалить, пока "луч" не добрался до вывода верхних строк рабочей области экрана.
    Это моё субъективное мнение.
    Последний раз редактировалось KTSerg; 17.07.2020 в 08:36.

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

    metamorpho(17.07.2020)

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

  8. #77

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,030
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не претендую на оптимальность, но вот как написано заполнение ширмы в River Raid: ClearBlinds и DrawBlinds
    https://github.com/svofski/incursion...rsion.asm#L493

    Согласен с KTSerg -- ширма не освобождает от необходимости синхронизации, синхронизация так же важна, как и без нее.

    Раз синхронизация все равно требуется, то может быть проще все-таки без ширмы.Но тут возникает, разумеется, проблема с такими игровыми вещами, как вывод счета, времени, жизней. А это по сути ширма.
    Больше игр нет

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

    metamorpho(17.07.2020)

  9. #78

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Автор, а вот тебе источник вдохновения для будущего шедевра:

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

    metamorpho(17.07.2020)

  10. #79

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

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    Автор, а вот тебе источник вдохновения для будущего шедевра:
    x-code, спасибо!! Именно такого рода геймплей будет мой первый пробный шедевр


    KTSerg, svofski спасибо за советы,
    но я явно не улавливаю тему синхронизации

    Например вот эта мысль: "Если скролл вверх, внизу надо нарисовать новое. Это можно сделать в интервал от прерывания до начала сканирования лучом обновляемой области."

    Как узнать когда начался "интервал от прерывания до начала сканирования лучом обновляемой области" ?
    Может пример какой есть ?

    Ещё как узнать насколько может быть долгой программа обработки прерываний ?
    Последний раз редактировалось metamorpho; 17.07.2020 в 12:33.

  11. #80

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,030
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тут все просто. Каждый кадр занимает ровно 59904 такта. Время исполнения каждой инструкции дано в таблице. Дальше можно просто посчитать.

    Разумеется рассчитывать весь экран -- это очень занудно. Для почти всех случаев достаточно оценочных данных и простеньких замеров. Можно в отладчике смотреть на число тактов, VV по крайней мере показывает текущий такт экрана, это очень удобно. Или можно выводить другой цвет бордюра, как я делал. Сделал какую-то тормозную процедуру, поменял бордюр с черного на красный до и с красного на черный после. Посмотрел на экран, ага, вот столько строк у меня ушло на этот спрайт, или что-то такое.
    Больше игр нет

    Эти 2 пользователя(ей) поблагодарили svofski за это полезное сообщение:

    metamorpho(17.07.2020), parallelno(01.07.2022)

Страница 8 из 45 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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