User Tag List

Страница 17 из 45 ПерваяПервая ... 131415161718192021 ... ПоследняяПоследняя
Показано с 161 по 170 из 443

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

  1. #161

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

    По умолчанию

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

    Судя по видео, уходят с экрана они как-раз плавно, а вот появляются рывком - сразу целиком.
    А раз уходят плавно, значит и появляться могут так-же. Просто вывод нужно начинать на позицию раньше.

    Или я не правильно проблему понял?
    Последний раз редактировалось KTSerg; 28.07.2020 в 18:52.

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

    metamorpho(29.07.2020)

  2. #162

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    на прерываниях у тебя обработка объектов
    в процессе обработки создаешь массив выводимых обьектов
    в 2 списка

    в основном теле только отрисовка
    ты берешь по очереди один из списков и рисуешь по нему объекты

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

    как то так.

    Это всего лишь тестовый вариант.

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

    выложи последний билд
    Последний раз редактировалось jerri; 28.07.2020 в 19:47.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(29.07.2020)

  3. #163

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

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Судя по видео, уходят с экрана они как-раз плавно, а вот появляются рывком - сразу целиком. А раз уходят плавно, значит и появляться могут так-же. Просто вывод нужно начинать на позицию раньше.Или я не правильно проблему понял?
    Например вверх плавно уходят они за ширму и в итоге появляются с нижней стороны экрана, т.к. ширма=16 строк а спрайт 24 строки + подпрограмма вывода спрайта не контролирует Y, т.е. если Y=0ffh то inr y будет 00h и т.д. В итоге образуется мусор на экране и при скроллинге это ещё больше ухудшается.

    Цитата Сообщение от jerri Посмотреть сообщение
    ты не совсем верно понимаешь концепт
    на прерываниях у тебя обработка объектов...в процессе обработки создаешь массив выводимых обьектов
    в 2 списка....в основном теле только отрисовка....ты берешь по очереди один из списков и рисуешь по нему объекты........у тебя размер шторки должен быть равен или больше высоты спрайта.
    .....выложи последний билд

    Если программа обработки прерывания слишком длинная, то разве это не повлияет на отрисовку спрайтов в основном цикле программы ? Какой предел общего количества тактов команд, который можно без последствий для основного цикла программы, внедрить в программу обработки прерываний ?

    Если делать "ширму" высотой равной высоте спрайта, то это потеря двух строк, т.е. вместо 10 станет 8.
    На мой взгляд не очень хороший вариант, т.к. даже сейчас когда 10 строк уровня по горизонтали, всё равно чувствуется некоторая теснота в них. Поэтому увеличить ширму это конечно вариант, но к нему прибегну только если другие варианты не помогут.

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

  4. #164

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Если делать "ширму" высотой равной высоте спрайта, то это потеря двух строк, т.е. вместо 10 станет 8.
    Ширму надо сделать не менее высоты спрайта, т.е. >=24. При этом ширма получится высотой 40 строк изображения, 216 останется для отображения, а это 9 строк спрайтов/тайлов.

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

    Кстати, эти размышления наводят на мысль, что теоретически можно увеличить высоту спрайта до 25 строк, но это приведет к ряду неудоств.

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

    metamorpho(29.07.2020)

  5. #165

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Ширму надо сделать не менее высоты спрайта, т.е. >=24. При этом ширма получится высотой 40 строк изображения, 216 останется для отображения, а это 9 строк спрайтов/тайлов.
    9 это уже лучше

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

  6. #166

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    написать подпрограмму вывода спрайта, которая учитывает смещение спрайта по Y и рисует только то что есть на экране (до ширмы)
    Самый простой и очевидный вариант - перейти на построчное рисование. Для досрочного прерывания процедуры (когда строк <24) просто ставим команду перехода вместо команд рисования первой "лишней" строки. После перехода сразу восстанавливаем испорченные команды.

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

    metamorpho(31.07.2020)

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

  8. #167

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

    По умолчанию

    И алгоритма вывода спрайта видимо нужно как минимум два: один для вывода спрайта снизу-вверх, второй сверху-вниз.
    Т.к. в верхней части экрана может быть видена только нижняя часть спрайта. А в нижней части экрана нужна только верхняя часть спрайта.
    Если пользоваться универсальным алгоритмом вывода спрайта, то потребуются дополнительные расчеты для каждого объекта, чтобы вычислить на сколько он "спрятался", и какое смещение (в спрайте) нужно для начала его вывода.
    Можно конечно не париться, и придумать какую-то таблицу с координатами, размерами, смещениями. И пересчитывать её при каждом: скроллинге, перемещении.
    Тогда для вывода спрайта достаточно будет из таблицы брать кол-во видимых строк в спрайте, смещения, и проч...

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

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

    metamorpho(31.07.2020)

  9. #168

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Ширму надо сделать не менее высоты спрайта, т.е. >=24. При этом ширма получится высотой 40 строк изображения, 216 останется для отображения, а это 9 строк спрайтов/тайлов.
    почему 40? 24 достаточно - 12 наверху и 12 внизу.

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

    Цитата Сообщение от KTSerg Посмотреть сообщение
    И алгоритма вывода спрайта видимо нужно как минимум два: один для вывода спрайта снизу-вверх, второй сверху-вниз.
    Т.к. в верхней части экрана может быть видена только нижняя часть спрайта. А в нижней части экрана нужна только верхняя часть спрайта.
    Если пользоваться универсальным алгоритмом вывода спрайта, то потребуются дополнительные расчеты для каждого объекта, чтобы вычислить на сколько он "спрятался", и какое смещение (в спрайте) нужно для начала его вывода.
    Можно конечно не париться, и придумать какую-то таблицу с координатами, размерами, смещениями. И пересчитывать её при каждом: скроллинге, перемещении.
    Тогда для вывода спрайта достаточно будет из таблицы брать кол-во видимых строк в спрайте, смещения, и проч...

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

    а в случае рисования за ширмой вообще не обращать внимания на урезание.


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

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Если программа обработки прерывания слишком длинная, то разве это не повлияет на отрисовку спрайтов в основном цикле программы ? Какой предел общего количества тактов команд, который можно без последствий для основного цикла программы, внедрить в программу обработки прерываний ?

    вот здесь обработка обьектов отдельно освежение фона отдельно.


    Если делать "ширму" высотой равной высоте спрайта, то это потеря двух строк, т.е. вместо 10 станет 8.
    На мой взгляд не очень хороший вариант, т.к. даже сейчас когда 10 строк уровня по горизонтали, всё равно чувствуется некоторая теснота в них. Поэтому увеличить ширму это конечно вариант, но к нему прибегну только если другие варианты не помогут..
    высота 10 элементов = 240 точек
    256-24 = 232 точки - просто сверху и снизу по 4 линии тайла не будут видны.
    Последний раз редактировалось jerri; 29.07.2020 в 19:30.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(31.07.2020)

  10. #169

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

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    почему 40? 24 достаточно - 12 наверху и 12 внизу.
    Чтобы было только 24 придется при сдвиге экрана не только пририсовывать несколько строк к ширме с одной стороны и стирать столько же с другой, но еще и в условном центре ширмы делать эту операцию. Можно сказать, что вместо одной ширмы в 40 строк будет 2 по 12. И целиком объект 24x24 под такой составной ширмой не нарисуешь, смысл ее мне не понятен.

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

    metamorpho(31.07.2020)

  11. #170

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Чтобы было только 24 придется при сдвиге экрана не только пририсовывать несколько строк к ширме с одной стороны и стирать столько же с другой, но еще и в условном центре ширмы делать эту операцию. Можно сказать, что вместо одной ширмы в 40 строк будет 2 по 12. И целиком объект 24x24 под такой составной ширмой не нарисуешь, смысл ее мне не понятен.
    в смысле? ты неправильно смотришь.

    у тебя есть ширма высотой 24

    у тебя есть столбец экрана высотой 256
    просто рисуешь ширму с -12 до +12 от первой строки.

    и также спрайты врагов надо рисовать в этом же периоде -12 до 243
    тогда ширма будет из скрывать.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(31.07.2020)

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

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

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

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

Ваши права

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