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

User Tag List

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

Тема: Портирование игр с PC на БК

  1. #121
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Рязань
    Сообщений
    1,147
    Благодарностей: 1383
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Самое очевидное и выигрышное по скорости решение - хранить каждый спрайт 4 раза: оригинальный и заранее сдвинутый на 1, 2 и 3 точки. Да только вот памяти жалко. Хочется уложиться в возможности БК-0010.
    В исходниках Highway Encounter для УКНЦ есть процедуры вывода ч/б спрайтов 16x24 с маской, со сдвигом на -2/0/2/4 пикселов.

    https://github.com/nzeemin/uknc-high...ter/HWYENC.MAC, ищите по "Draw sprite with shift".

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

  3. #122
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    242
    Благодарностей: 102
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    ищите по "Draw sprite with shift".
    Немного не наш случай, но команда SWAB навела меня на мысль, что можно в одном слове хранить и маску, и цвет, в разных байтах. Для маленьких спрайтов это даст ускорение.
    Manwe/SandS

  4. #123
    Activist
    Регистрация
    23.03.2005
    Адрес
    г. Чернигов, Украина
    Сообщений
    471
    Благодарностей: 15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #124
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    242
    Благодарностей: 102
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Знахарь Посмотреть сообщение
    а за счет изменения размера меню под экраном нельзя ли нормально оставить спрайты как есть, без ужиманий? Меню-то не критично - ужали/разжали - там одни тексты...
    Мы ужимаем по горизонтали. В оригинале 320 точек в ширину. У нас экран шириной всего 256.
    Manwe/SandS

  6. #125
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    242
    Благодарностей: 102
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Измерил быстродействие: процедура рисования спрайта со стиранием точек в полтора раза медленней (11,7 мс ~ 85 раз в секунду) процедуры рисования по чёрному (8 мс ~ 124 раза в секунду).

    Но самое интересное вот что: даже если рисовать тормознутой процедурой, платформа катается по экрану достаточно быстро. При этом анимация крутящихся гусениц сливается. Получается, эта анимация и не нужна вовсе. Чтобы разница между кадрами стала заметной, каждый кадр надо держать на экране раза в 3-4 дольше, а это уже слишком медленно для игрового процесса.
    Последний раз редактировалось Manwe; 10.10.2018 в 21:28.
    Manwe/SandS

  7. #126
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    117
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Если бы в байте было 4 бита, можно было бы использовать полином x^4+x+1, который выдаёт последовательность:
    111100010011010(1111...)
    в ней отсутствует комбинация 0000, поэтому воткнём еще один 0 там где их 3 и получим:
    1111000010011010(1111...)
    если взять по 4 битика, получится 16 уникальных комбинаций:
    1111 1110 1100 1000 0000 0001 0010 0100 1001 0011 0110 1101 1010 0101 1011 0111
    (выделено некоторое значение и где его биты оказываются при сдвиге)
    если их засунуть в таблицу, а в спрайте вместо комбинации из 4 бит разместить индекс элемента из таблицы, то прибавив к нему n>0 можно получить индекс элемента сдвинутого влево(с мусором в младших разрядах), а вычитая n>0 сдвинутого вправо(с мусором в старших разрядах).
    Вытащив элементы с индексами отличающимся на 4, и используя маску можно получить циклический сдвиг одного из элементов находящихся между ними. чтобы можно было сдвигать любой элемент на n<4 и не прочитать мусор, три элемента из хвоста таблицы нужно приписать до начала, а три элемента из начала после хвоста.

    Если вернуться к 16 разрядным словам, то нужно будет сделать табличку в 256+14(+14 если будем двигать и в другую сторону) элементов полученных при помощи полинома восьмой степени. Значения генерируемые полиномом копируются в чётные биты, а нечётные остаются нулевыми. Слово спрайта разделяется на чётные и нечётные биты, и заменяется двумя байтовыми индексами, показывающими где такие значения можно найти в таблице. То есть для сдвига 8 точек спрайта потребуется:
    Прочитать два индекса i1 и i2 из спрайта.
    Вычислить слово сдвинутое влево: table[i1+shift] +table[i2+shift]*2
    Вычислить слово сдвинутое вправо: table[i1+8-shift] +table[i2+8-shift]*2
    Наложить маски и вывести на экран.
    Если править код чтения из таблиц(его можно будет использовать и для следующей строки), то для вывода 8 точек вроде как требуется 16 команд, а прочитанных или записанных слов примерно раза в два больше(организация цикла сюда не входит).

  8. Этот пользователь поблагодарил blackmirror за это полезное сообщение:
    svofski (11.10.2018)

  9. #127
    Activist
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    304
    Благодарностей: 49
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    /*эта анимация и не нужна вовсе.*/
    Это сейчас когда объектов на экране мало анимацию не видно, когда притормозит.. все будет ок. В оригинале ее тоже плохо заметно.. но все равно что-то мельтешит.. ощущается движение.. иначе будет совсем неживая аппликация двигаться. Кстати заметили в оригинале, что кроме гусениц по бокам платформы сверху типа "поршни" попеременно выскакивают.. то же оживляет..

  10. #128
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    242
    Благодарностей: 102
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

    Кстати заметили в оригинале, что кроме гусениц по бокам платформы сверху типа "поршни" попеременно выскакивают.. то же оживляет..
    Ого, надо будет посмотреть в DOSbox в замедленном режиме.
    Manwe/SandS

  11. #129
    Activist
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    304
    Благодарностей: 49
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    https://yadi.sk/i/fEaMpdl1ZibuVA

  12. Этот пользователь поблагодарил S_V_B за это полезное сообщение:
    hobot (14.10.2018)

  13. #130
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    117
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    С таблицами идея хорошая - по таблицам можно делать и зеркальное отражение спрайта.
    Конкретно эти таблицы для зеркального отражения не подойдут. Тут идея в том, чтобы вместо нескольких таблиц со сдвигом на 2,4,6 использовать одну таблицу (с небольшими хвостами). Минус только в том, что спрайты будут храниться в немного странном виде.

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

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

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

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

Похожие темы

  1. Портирование Stop the Express
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 90
    Последнее: 21.11.2018, 09:46
  2. Портирование Lode Runner БК->УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 100
    Последнее: 21.08.2017, 01:20
  3. Портирование на Xilinx конфигураций компьютеров на ПЛИС
    от parsec в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 20
    Последнее: 01.04.2016, 20:11
  4. Ответов: 38
    Последнее: 23.11.2014, 16:00

Ваши права

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