User Tag List

Страница 5 из 31 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 317

Тема: GameNoname

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

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

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо всем за советы и обсуждение!

    Немного детайлей об игре.
    В игре тайлы 16*16. 16 цветов. Тайл с "землей" рисуется всегда в $8000 плоскость. Спрайты мобов и героя 16*15. Рисуются в три плоскости начиная с $a000.
    Мерцание в основном изза двух факторов.
    1. Спрайты стираются полным размером спрайта в предыдущей позиции спрайта, затем спрайт рисуется в новой позиции. Это приводит к тому что спрайта не виден полностью или частично. Пока план лечения это стирать только то место где новый спрайт уже не рисуется. т.е. для горизонтального движения стирать только 8*15 полоску и только в тех моментах когда спрайт переместился на следующий байт. т.е не каждый кадр. Это как я надеюсь сильно уменьшит проблему. Если глитчи останутся сильными, буду думать дальше. )
    2. При наложении одного спрайта на другой. Это лечитать планирую тем что при наложении спрайтов рисовать их по маске. Или как минимум рисовать монстров без маски, а глав героя по маске сверху.

    Из интересного. В игре спрайты рисуются/стираются не каждый кадр. Герой в анимации движения рисуется каждый второй кадр, в анимации Idle рисуется кадый 8 кадр. Если спрайт стартует новую анимацию то счетчик одновляется и спрайт сразу будет отрисован. то есть герой в idle будет отрисован сразу без задержки после того как игрок перестал нажимать на клавиши. Но следующий кадр idle анимации будет нарисован чере 8 кадров.
    Скелеты для всех анимаций рисуются каждый 8 кадр. Но как в случае с героем они сразу отрисуют первый кадр новой анимации, затем следующий через 8 кадров. Их скорости медленнее героя и снижение фреймрейта я не замечаю. Более быстрые мобы будут могут рисоваться чаще. Это пер анимейшен параметр конкретного мобика.
    Для балансировки нагрузки все мобы стартуют свои анимации со смещением задерки. то есть если на экране 7 мобов + герой, то все они будут рисоваться в свой кадр и нагружать процессор примерно как один моб рисуюшийся каждый кадр.
    В целом считается что мобы и герой размером с тайл. но их видимая часть может быть меньше. В памяти храниться и отрисовывается только видимая часть. то есть спрайты в анимации не приязаны к размеру тайла и могут быть от 8 до 24 пикселей по гризонтали.

    Про использование экрана как 2 буфера по 4 цвета решил отказаться. Хочется больше цвета.
    Про временную буферизацию в памяти думал примерно тоже самое, но пока отложил. Когда что-то будет накладыватся на тайлы отличные от "земли" буду думать. Перерисовывать испорченные тайлы целиком коннечно сильно не хочется так как дорого, поэтому склоняюсь в пользу временного сохранения в память. но там посмотрим.

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

    Подскажите пожалуйста можно ли использовать квазидиск для чтения музыки каждый кадр и подмену экранных плоскостей с квазидиском?
    Последний раз редактировалось parallelno; 11.08.2022 в 21:15.

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

  3. #2

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

    По умолчанию

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

    Подмену экранных плоскостей нельзя. Экран всегда рисуется из основной памяти.
    Больше игр нет

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

    nzeemin(12.08.2022), parallelno(11.08.2022)

  4. #3

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Спасибо всем за советы и обсуждение!

    Немного детайлей об игре.
    В игре тайлы 16*16. 16 цветов. Тайл с "землей" рисуется всегда в $8000 плоскость. Спрайты мобов и героя 16*15. Рисуются в три плоскости начиная с $a000.
    Мерцание в основном изза двух факторов.

    Тайлы 16*16 могут быть составлены из 4х элементов 8*8
    С уважением,
    Jerri / Red Triangle.

  5. #4

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Тайлы 16*16 могут быть составлены из 4х элементов 8*8
    Думал об этом, но карты будут занимать больше памяти и буферы тоже. Зато выигрыш конечно в гибкости графики для тайлов карты. Пока остановился на 16*16. Меньше памяти, удобства в подсчетах. Например индексация укладывается в один байт и т.п

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

    Цитата Сообщение от svofski Посмотреть сообщение
    Кстати еще самые кондовые спрайты можно разворачивать сразу кодом. Это, казалось бы, жир, а толку никакого, но скорость та же, при этом освобождается стек. Можно исполнять прямо из кваза. Можно так сделать для чего-то, чего много и надо быстро, типа тот же мысль-прожетктыль.

    lxi b, $7e81 \ mov a, m \ ana c \ ora b \ mov m, a \ dcr l

    А если без маски и со стеком, тут вообще можно отжиг устроить
    lxi b, $55aa \ push b ; 28 тактов на две строки, а если паттерн повторяется, то и вообще 12 + (8 * число строк).
    для тайлов / фона, чего бы и нет
    Интересно! Хочется замутить мелкие частицы. Тоже нужно будет что-то быстро и много мелкого рисовать и востанавливать на экране. Есть мысль тупо инвертить те места и востаравливать тоже инвертированием.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    На векторе есть игры с предсвинутыми спрайтами полностью в квазе.
    Посчитаем. У parallelno спрайты 16*15*8 цветов. Пусть будут 16*16 (может 15 это ошибка). Тогда кваза хватит на 236 таких спрайтов со всеми сдвигами, это очень даже много для сравнительно небольшой игрушки.
    Это не ошибка.

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

    Цитата Сообщение от svofski Посмотреть сообщение
    Да уж, для полноцветных спрайтов это толсто.

    Таблицы на 8080 тоже не подарок, хотя если их все выравнивать по 256, то ничего страшного.

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

    О! Берем всю ходьбу персонажа - кадр за кадр и сдвиг за сдвигом - и заворачиваем ее в zx7 поток и проигрываем его при нажатии клавиши Правда именно такие данные не факт, что хорошо сплющатся.
    План победы у меня такой. рисовать сразу из кваза. Если это будет невозможно или долго, то придется делать то что ты написал. Ну или стримить сразу с винчестера

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

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Отказаться от 16-ти цветов. Да это как коту покушать дать, а он еще просит, не хватит памяти так.
    Если в игре делать еще и текст (а в рогаликах он очень много займет тупо текст, вон ведь когда диззи люди делали - то жаловались что тупо из-за текста игра не влезает в 128к)
    Вообще ведь Вектор крут с палитрами и позволяет сделать grayscale на игруху без извращений вида "убери цветность с монитора". И причем намного лучше даже графоний будет смотреться (имхо конечно) с 4-мя градациями серого цвета.
    Главный поинт всей моей замуты это использовать графические возможности по максимум.

  6. #5

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    parallelno, есть же демка "Чип и Дейл". В ней 16 цветов и восстановление фона. Посмотри, может найдешь в ней что-то полезное.
    Совет: слушай всех, но делай так как сам считаешь нужным.
    Я вижу, уже начинают отговаривать от полноцветности.
    ¡Un momento, señor fiscal!


  7. #6

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    482
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    390
    Поблагодарили
    145 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Я вижу, уже начинают отговаривать от полноцветности
    Ну засмущал уже. Беру слова назад. Нужно 16 цветов! (а то и правда какой совецкий домашний комп мог такими цветами похвастаться, союз-неон из-за своей единичности можно не считать)

  8. #7

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А в квазидиск можно сохранить экран с фоном? Можно же с квазидиска считать участок фона в буфер, наложить на фон в буфере спрайт, и записать этот частичный буфер в нужное место экранного озу.
    ¡Un momento, señor fiscal!

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

    parallelno(12.08.2022)

  9. #8

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    О, кстати это классная идея! Иметь незапорченный фон целиком ускорит процесс восстановления фона на экране.
    Сопутствующий вопрос. Сколько времени требуется на подключение к квазидиску на чтение? Где поподробнее почитать про работу с ним?

  10. #9

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

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    О, кстати это классная идея! Иметь незапорченный фон целиком ускорит процесс восстановления фона на экране.
    Сопутствующий вопрос. Сколько времени требуется на подключение к квазидиску на чтение? Где поподробнее почитать про работу с ним?
    Процессор не имеет представления, читает он из основного ОЗУ или из КД, тоже самое и с записью.
    У КД есть управляющее слово, которое записывается в порт 10h, этим словом КД включается в нужный режим или отключается (хrа а\ out 10h).
    Значения бит управляющего слова расписаны много раз во всех описаниях КД, в журнале ВекторЮзет тоже.
    Соответственно, требуется по 20 тактов на включение и выключение КД.
    Если КД оактивируется на работу со стеком, то все стековые операции (PUSH, POP) , будут обращаться к КД, а команды обычных записи/чтения (sta, lda, shld, lhld, stax, ldax) будут работать с основной памятью, именно этот режим и используется для переноса данных из КД в основное ОЗУ, и обратно.
    Последний раз редактировалось KTSerg; 12.08.2022 в 09:08.

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

    parallelno(12.08.2022)

  11. #10

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    KTSerg, включение квазидиска 20 тактов, отключение 16? Уточняю чтобы удостовериться что я правильно тебя понял.
    Если квазидиск включен на работу как стек и прерывания включены то прерывание запортит как минимум два байта данных квазидиска, правильно?

Страница 5 из 31 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Ваши права

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