http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

эльф

  1. Спрайт графика [ редактировать ]
  2. Спрайт с высоким разрешением [ редактировать ]
  3. Многоцветный рисунок спрайта [ редактировать ]
  4. Строительство [ редактировать ]
  5. Программирование спрайтов на бейсике [ редактировать ]
  6. Настройки [ редактировать ]
  7. Спрайт включить [ редактировать ]
  8. генеральный
  9. Примеры
  10. Спрайтовые указатели [ редактировать ]
  11. [ редактировать ]
  12. Примеры
  13. Высокое разрешение или многоцветный режим [ редактировать ]
  14. Настройки цвета [ редактировать ]
  15. Примеры
  16. Двойная высота и / или ширина [ редактировать ]
  17. Примеры
  18. Приоритет спрайта [ редактировать ]
  19. Примеры
  20. Обнаружение столкновения [ редактировать ]
  21. Опрос для столкновений [ редактировать ]
  22. Прерывание при столкновении [ редактировать ]
  23. Анимация спрайтов [ редактировать ]

Спрайт , также называемый блоком подвижных объектов (сокращенно MOB ) в коммодор литература, это часть графики, которой можно перемещать и назначать атрибуты независимо от другой графики или текста на экране. VIC-II , который отвечает за эту особенность С-64 , поддерживает до восьми спрайтов, но с помощью растровое прерывание Программирование более восьми спрайтов может отображаться одновременно.

В то время как управление спрайтами печально известно просовывает их необходимо настроить, их большая сила заключается в способности быстро и легко перемещать графический объект и изменять его форму, просто задавая координаты и устанавливая указатель - устраняя необходимость постоянно рисовать и стирать графические объекты попиксельно ,

В то время как управление спрайтами печально известно   просовывает   их необходимо настроить, их большая сила заключается в способности быстро и легко перемещать графический объект и изменять его форму, просто задавая координаты и устанавливая указатель - устраняя необходимость постоянно рисовать и стирать графические объекты попиксельно ,

Справка по разработке спрайта (немецкий; Reihe = строка и Bitwert = значение бита).

Спрайт графика [ редактировать ]

Данные для спрайта высокого разрешения

«Шаблон» или «дизайн» как многоцветных, так и спрайтов с высоким разрешением всегда вписывается в «сетку» шириной 24 бита и высотой 21 бита; всего 504 бита, которые в свою очередь помещаются в 63 байта. Эти 63 байта хранятся в баран в течении ВИК банк начиная с адреса, кратного 64; то есть 0, 64, 128, 192, 256 и т. д.

Эта компоновка «перемежает» один неиспользуемый байт в каждом доступном 64-байтовом «блоке»; содержимое этого «64-го байта» не влияет на внешний вид спрайта. Теоретически, один банк VIC без зеркала кодировки ПЗУ может содержать 256 шаблонов спрайтов, но с учетом текстового экрана и набора символов практическое число не превышает 208 различных шаблонов.

Каждый байт содержит восемь битов (7-0), которые имеют следующие значения: 128, 64, 32, 16, 8, 4, 2 и 1. Если используется значение, устанавливается пиксель (бит) (см. Также пример изображения на правой стороне). Для установки всех пикселей сумма значений равна 255. Для различных шаблонов пикселей значения должны суммироваться вместе - как 170 для установки бита 1 (значение 2), 3 (значение 8), 5 (значение 32) и 7 (значение 128). Блок данных спрайта настроен так:

Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 ... ... ... ... ... ... Байт 61 Байт 62 Байт 63

Спрайт с высоким разрешением [ редактировать ]

Справа растровое изображение 24 × 21, изображающее сплошной круг: сетка разделена на «полоски» по 8 пикселей или биты, т.е. на отдельные байты. Каждый байт читается с самым левым битом как самый старший, а самый правый бит - как самый младший. Байты читаются слева направо, строка за строкой (точно так же, как чтение обычного текста), и преобразование битового шаблона для этого примера в десятичные значения байтов приводит к цифрам, указанным справа от сетки. 63-байтовая последовательность, формирующая этот спрайт, начинается с 0, 126, 0, 3, 255, 192, 7, ...

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

  • Для битов, установленных в «0» в наборе данных спрайта, соответствующий пиксель будет прозрачным , то есть любая графика или цвет позади спрайта будет отображаться через эти пиксели.
  • Биты, установленные на «1», заставят соответствующие пиксели в спрайте принимать индивидуальный цвет, установленный для каждого спрайта (см. Раздел настройки цвета ниже). Такие пиксели могут появляться либо спереди, либо «скрываться» за другими спрайтами или другой графикой; смотрите раздел приоритет спрайта ниже.

Многоцветный рисунок спрайта [ редактировать ]

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

  • Пиксели с парой битов «00» выглядят прозрачными, как биты «0» в режиме высокого разрешения.
  • Пиксели с битовой парой "01" будут иметь цвет, указанный в адресе 53285 / $ D025.
  • Пиксели с битовой парой «11» будут иметь цвет, указанный в адресе 53286 / $ D026.
  • Пикселям с парой битов «10» будет присвоен цвет, назначенный данному спрайту в диапазоне 53287–53294 / $ D027 – D02E.

Обратите внимание, что два из трех «видимых» (непрозрачных) цветов будут общими для всех восьми спрайтов, тогда как третий видимый цвет может быть установлен индивидуально для каждого спрайта.

Строительство [ редактировать ]

Создание спрайтов вручную очень сложно, так что вы должны использовать редактор спрайтов , В некоторых ОСНОВНЫЕ расширения лайк Супер Экспандер 64 , Supergrafik , Бейсик симонс или в Бейсик 7.0 Существуют инструменты, другие подсказки и больше команд для разработки и программирования спрайтов. Например, команда BASIC SPRDEF в бейсике 7 C128 или в Super Expander 64 запускается редактор спрайтов.

Программирование спрайтов на бейсике [ редактировать ]

При программировании спрайтов в программе BASIC данные спрайтов также должны ДАННЫЕ линии и читать в ОЗУ с ЗА - СЛЕДУЮЩИЙ петля и основные команды ЧИТАТЬ а также POKE - например:

10 СЗ = 12288: REM Блок спрайтов 192 20 FOR X = 0 - 62: READ Y: POKE SZ + X, Y: NEXT X 30 DATA 255, 128, 16: REM 1-я строка данных ... (вставьте в эту строку 19 других строк DATA с 3 данными значения!) 50 ДАННЫХ 255, 128, 16: REM 21-я строка данных

Настройки [ редактировать ]

Помимо настройки данных для шаблона в оперативной памяти, использование спрайтов требует дополнительной работы по инициализации. В последующем обсуждении связанных со спрайтами регистров VIC-II восемь спрайтов соответственно называются спрайтами № 0 - спрайт № 7.

Спрайт включить [ редактировать ]

Каждый бит в адресе 53269 / $ D015 действует как «переключатель», который включает или выключает один из восьми спрайтов; установите бит в «1», чтобы включить соответствующий спрайт. или «0», чтобы скрыть это. Младший значащий бит относится к спрайту № 0, а самый младший бит к спрайту № 7.

генеральный

Для некоторых опций спрайтов, таких как отключение / включение (53269 / $ D015), размер x и y (53277 / $ D01D; 53271 / $ D017) и приоритет фонового спрайта (53275 / $ D01B) или регистры коллизий (53278 / $ D01E) ; 53279 / $ D01F) VIC-II использовал только один регистр для всех спрайтов. В таком случае для каждого спрайта, который использовал эту опцию (бит разрешения для спрайта # 7- # 0), значения битов должны быть суммированы вместе.

Номер спрайта:

# 7 # 6 # 5 # 4 # 3 # 2 # 1 # 0 Значение бита: 128 64 32 16 8 4 2 1

Примеры

Коммутация:

  • все спрайты включены - вы устанавливаете сумму битовых значений 255: POKE 53269,255
  • только спрайт # 0 (битовое значение 1) на: POKE 53269,1
  • только спрайт № 0 (значение бита 1) и № 1 (значение бита 2) на: POKE 53269,3
  • только спрайт № 3 (битовое значение 8) и № 5 (битовое значение 32) на: POKE 53269,40
  • для всех спрайтов вы устанавливаете значение 0: POKE 53269,0

Спрайтовые указатели [ редактировать ]

Sprite Sprite указатель # 0 2040 / $ 07F8 # 1 2041 / $ 07F9 # 2 2042 / $ 07FA # 3 2043 / $ 07FB # 4 2044 / $ 07FC # 5 2045 / $ 07FD # 6 2046 / $ 07FE # 7 2047 / $ 07 FF

Расположение указателей спрайта совпадает с расположением текстового экрана, так что если VIC-II был «проинформирован» (через адрес 53272 ) что ОЗУ с текстовым экраном начинается с адреса S , указатели спрайтов располагаются по адресам с S +1016 по S +1023. Поскольку адрес ОЗУ на текстовом экране по умолчанию - 1024, указатели спрайтов размещаются по адресам с 2040 (для спрайта # 0) до 2047 (для спрайта # 7) или $ 07F8–07FF в шестнадцатеричный ,

Чтобы заставить данный спрайт показывать шаблон, который хранится в ОЗУ по адресу A (который должен делиться на 64), задайте для содержимого соответствующего адреса указателя спрайта значение A, разделенное на 64. Например, если шаблон спрайта начинается с адреса 704, значение указателя будет 704/64 = 11.

[ редактировать ]

Координата спрайта y координата # 0 53248 / $ D000 53249 / $ D001 # 1 53250 / $ D002 # 2 53252 / $ D004 53253 / $ D005 # 3 53254 / $ D006 53255 / $ D007 # 4 53256 / $ D008 53257 / $ D009 # 5 53258 / $ D00A 53259 / $ D00B # 6 53260 / $ D00C 53261 / $ D00D # 7 53262 / $ D00E 53263 / $ D00F

Каждый спрайт имеет свой собственный набор регистров координат, которые определяют, где на экране появляется спрайт, как указано в таблице справа. Однако спрайты могут перемещаться более чем на 256 пикселей в горизонтальном направлении, и поэтому их координаты x требуют девяти бит; На каждый из указанных адресов доступно более восьми.

Из-за этого адреса координат х, приведенные в таблице, содержат только восемь младших битов координат х для соответствующих спрайтов. Девятый и самый значимый бит для каждого из восьми спрайтов «собраны» в адресе 53264 / $ D010; младший значащий бит здесь соответствует спрайту № 0, а старший значащий бит - спрайту № 7.

Примеры

  • Спрайт № 5 должен располагаться на X = 300 (256 + 44).
  • Другие спрайты должны оставаться на вашей фактической позиции x.

ОСНОВНОЙ 10 ПОК 53258,44: СПРАВОЧНИК ПОЗИЦИИ X REM # 5 = 44 20 ПОК 53264, PEEK (53264) ИЛИ ЖЕ 32: REM ENABLE EXTRA BIT ДЛЯ SPRITE # 5 Ассемблер LDA # 44 STA $ D00A; X-спрайт № 5 установлен на 44 LDA $ D010; загрузить X-MSB ORA #% 00100000; установить дополнительный бит для спрайта # 5 STA $ D010; написать X-MSB регистр

Высокое разрешение или многоцветный режим [ редактировать ]

В адрес 53276 каждый бит установлен так, чтобы сообщать VIC-II, какие спрайты должны быть в режиме высокого разрешения (бит установлен в «0»), а какие отображаться в многоцветном режиме (бит установлен в «1»). Младший значащий бит управляет спрайтом # 0, а младший значащий бит - спрайтом # 7.

Настройки цвета [ редактировать ]

Все 16 спрайтовых цветов на C64.

Регистр Sprite Color (обычный / одноцветный) # 0 53287 / $ D027 # 1 53288 / $ D028 # 2 53289 / $ D029 # 3 53290 / $ D02A # 4 53291 / $ D02B # 5 53292 / $ D02C # 6 53293 / $ D02D # 7 53294 / $ D02E

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

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

  • 53285 / $ D025 - это общий цвет, отображаемый для пар битов «01» в данных спрайта, и
  • 53286 / $ D026 - это общий цвет, отображаемый для битовых пар «11» в данных спрайта.

Битовая пара Цвет% 00 прозрачность% 10 Цветовой регистр спрайта (обычный / однотонный; $ D027- $ D02E)% 01 Многоцветный регистр # 0 ($ D025)% 11 Многоцветный регистр # 1 ($ D026)

Примеры

Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | (для стандартного или нормального / одноцветного спрайта) | --- | --- | --- | --- | --- | --- | --- | --- | Бит | 7 + 6 | 5 + 4 | 3 + 2 | 1 + 0 | (для многоцветного спрайта) | --- | --- | --- | --- | --- | --- | --- | --- | Битовые значения | 128 | 064 | 032 | 016 | 008 | 004 | 002 | 001 | | --- | --- | --- | --- | --- | --- | --- | --- | 1. Пример | | | | | | | | | (цвет фона), значение 0 | --- | --- | --- | --- | --- | --- | --- | --- | 2. Пример | | X | | X | | X | | X | (многоцветный 0), значение 85 | --- | --- | --- | --- | --- | --- | --- | --- | 3. Пример | X | | X | | X | | X | | (спрайт нормальный / одноцветный), значение 170 | --- | --- | --- | --- | --- | --- | --- | --- | 4. Пример | X | X | X | X | X | X | X | X | (многоцветный 1), значение 255 | --- | --- | --- | --- | --- | --- | --- | --- | В этом примере спрайты и значения данных демонстрируют строку спрайтов! | --- | --- | --- | --- | --- | --- | --- | --- | 5. Пример | X | X | | X | | | X | | значение данных 146 | --- | --- | --- | --- | --- | --- | --- | --- | Все варианты цвета смешаны в спрайт

Двойная высота и / или ширина [ редактировать ]

Спрайт примеры для стандартной высоты, 2 * Y, 2 * X и двойной размер.

По умолчанию, т.е. без использования этой функции, спрайт будет покрывать область шириной 24 (высокое разрешение) и высотой 21 пиксель, но путем установки битов в регистрах 53277 / $ D01D и 53271 / $ D017, каждый спрайт может быть индивидуально «растянут» до двойной ширины и / или двойной высоты. В обоих регистрах младший значащий бит влияет на спрайт № 0, а самый младший бит - на спрайт № 7.

Обратите внимание, что в зависимости от того, был ли спрайт «удвоен» в одном или обоих направлениях, графический шаблон, отображаемый спрайтом, по-прежнему состоит из тех же 63 байтов: расширенный размер достигается за счет более грубой, «блочной» графики.

Примеры

ОСНОВНОЙ 10 ПОК 53277,15: REM SPRITE # 0- # 3 двойной размер в положении x (1 + 2 + 4 + 8 = 15) / спрайт # 4- # 7 стандартный Ассемблер LDA #% 00001111 STA $ D01D; Двойной размер спрайта № 0- № 3 в позиции x / стандарт спрайта № 4- № 7

Приоритет спрайта [ редактировать ]

Спрайт-спрайт - это исправление! Здесь спрайт 0 (белого цвета) всегда находится впереди всех других спрайтов. При использовании разных цветов отображается 3D-эффект.

В контексте спрайтов «фон» относится к текстовому экрану или другой «не спрайтовской» графике, отображаемой на экране вместе со спрайтами: посредством манипулирования битами в адресе 53275 / $ D01B, спрайты могут быть настроены так, чтобы они отображались "позади" (биты установлены в "1") или "перед" (биты установлены в "0") для такой фоновой графики. Младший значащий бит влияет на спрайт № 0, а самый младший бит - на спрайт № 7.

Обратите внимание, что приоритет среди самих спрайтов «зашит»: спрайт с меньшим номером всегда будет перекрываться или появляться «перед» спрайтом с большим номером; например, спрайт # 3 появится перед # 5, если они будут перекрываться.

Обратите внимание, что приоритет среди самих спрайтов «зашит»: спрайт с меньшим номером всегда будет перекрываться или появляться «перед» спрайтом с большим номером;  например, спрайт # 3 появится перед # 5, если они будут перекрываться

Бит = 0, спрайт работает правильно.
Бит = 1, спрайт запускается влево.

Примеры

Спрайт № 7 должен появиться спереди - все остальные спрайты № 0-бис-6 не изменены.

БЕЙСИК 10 РОК 53275, ПИК (53275) А ТАКЖЕ 127: REM DISABLE BIT # 7 В ПРИОРИТЕТНОМ РЕГИСТРЕ. Ассемблер LDA $ D01B; регистр приоритета чтения А ТАКЖЕ #% 01111111; отключить Бит 7, Биты № 0- № 6 не изменены STA $ D01B; регистр приоритета записи

Обнаружение столкновения [ редактировать ]

VIC-II обеспечивает аппаратное обнаружение столкновений между спрайтами и другой графикой: «Столкновение» в этом контексте означает, что один или несколько видимых пикселей в одном видимом спрайте фактически перекрывают один или несколько видимых пикселей либо в другом спрайте, либо в фоновой графике. ,

Опрос для столкновений [ редактировать ]

Есть два регистра VIC, которые могут быть опрошенных чтобы увидеть, произошло ли столкновение с участием спрайтов:

  • Для спрайтов, участвующих в столкновении с другими спрайтами, их соответствующие биты будут иметь значение «1» в адресе 53278 / $ D01E - у всех остальных спрайтов здесь будет бит «0».
  • Спрайты, участвующие в столкновении с фоновой графикой, будут иметь свои соответствующие биты, равные «1» в адресе 53279 / $ D01F - все остальные спрайты сообщат «0».

Как и во всех других регистрах «один бит на спрайт», младший значащий бит влияет на спрайт № 0 и самый младший бит спрайта № 7.

Прерывание при столкновении [ редактировать ]

Оба регистра событий прерывания (по адресу 53273 / $ D019) и регистр разрешения прерываний (по адресу 53274 / $ D01A) есть условия для повышения IRQ -тип прерывания на ЦПУ всякий раз, когда происходят столкновения:

  • Бит 2 (вес 4) в обоих регистрах относится к конфликтам между спрайтами и
  • Бит 1 (вес 2) в обоих регистрах относится к конфликтам спрайт-фон.

Анимация спрайтов [ редактировать ]

  • Для спрайтовой анимации требуются два совпавших изображения (спрайты).
  • Блоки спрайтов должны вставляться в порядке воспроизведения в ОЗУ.
  • Указатель данных спрайта будет увеличиваться до тех пор, пока не будет достигнут конец анимации, а затем установлен на начальное значение.

Примеры [ редактировать ]

POKE 2040,13: POKE 53248,255: POKE 53249, 100: POKE 53287,1

Включает спрайт № 0 со случайной формой белого цвета.

ПЕЧАТЬ ПИК (53278): ПЕЧАТЬ ПИК (53279)

Считывание битов столкновений спрайтов.


Эта базовая программа демонстрирует несколько вариантов спрайтов из трех спрайтов (многоцветный и стандартный / одноцветный). REM -линии используются только для замечаний (также с помощью команды REM основные строки слишком длинные!). Переменная V содержит начальный адрес VIC-II ,

1 РАСПЕЧАТАТЬ CHR $ (147): V = 53248: POKE V + 33,0: REM очистить экран 2 ЗА Х = 12800 К 12927: POKE X, 0: СЛЕДУЮЩИЙ X: REM Clear RAM для спрайтов 10 FOR X = 12800 - 12881: ЧИТАТЬ Y: POKE X, Y: СЛЕДУЮЩИЙ X: генерация быстрого спрайта 11 POKE 2040,200: POKE 2041,201: POKE 2042,201: POKE V + 21,7 12 POKE V + 28,6: POKE V + 37,15: POKE V + 38,2: REM многоцветная для спрайта 1 и 2 13 POKE V + 39,7: POKE V + 40,8: POKE V + 41,6: цвет спрайта REM спрайта 0 & 1 & 2 15 POKE V + 23,7: POKE V + 29,7: POKE V + 16,1: свойства быстрого спрайта высота, ширина, позиция x 16 POKE V + 1133: POKE V + 2,170: POKE V + 5,115: позиции REM x / y 19 REM перемещение и изменение цветов 20 FOR X = 200 до 1 ШАГ -1: POKE V, X: Z = Z + 0,61: POKE V + 3, Z 21 POKE V + 4, (201-X) / 2: СЛЕДУЮЩИЙ X 22 POKE V + 16,0: POKE V, 255: M = PEEK (V + 4) 23 ДЛЯ X = 255 - 170 ШАГ -1: POKE V, X: Z = Z + 0,66: POKE V + 3, Z 24 POKE V + 4, M + (256-X) /1.2: СЛЕДУЮЩИЙ X 25 ДЛЯ X = 0–5: ДЛЯ Y = 1–255: POKE V + 37 + X, Y: СЛЕДУЮЩИЙ Y, X 26 POKE V + 38,2: POKE V + 39,7: POKE V + 41, 6 27 ДЛЯ Y = 1–65: POKE V + 40, Y: POKE V + 37, Y + 10 28 FOR Z = 0–15: POKE V + 39, Y: NEXT Z, Y 29 REM, ожидание, удаление спрайта 0 и исчезают 30 для X = 0–3000: СЛЕДУЮЩИЙ X 31 ДЛЯ X = 0–32: POKE 12832 + X, 0: POKE 12832-X, 0 32 ДЛЯ Y = 0–100: NEXT Y, X: POKE V + 21,0 39 REM SPRITE C64-WIKI.DE (одноцветный; спрайт 0) 40 ДАННЫЕ 239,81,85,139,81,20,137,81,28,137,81,89,137,213,89,142,85,93,138 41 ДАННЫЕ 95,85,138,91,85,238,91,85,0,038,91,85,0,0 , 0,0 42 ДАННЫЕ 0,199,0,0,231,0,0,164,0,0,180,0,0,151,0,0,180,0,0,164,0,0,231,0,0,199,0 44 REM многоцветные спрайтовые линии (спрайт 1 и 2) 45 ДАННЫЕ 0,255,255,255,170,85,170,170,85,170,85,170,85,85,170,85,255,255,255

Карта