Плиткообразная карта (Tilemap)
Содержание
Плиткообразная карта (Tilemap)
Режим экрана, аналогичный аппаратному тексту, связанному с режимами ULA, который позволяет использовать плитки 8x8 либо 40x32, либо 80x32, 16-цветные или 2-цветные.
Обратите внимание, что в NextBASIC также есть более старая программная плиткообразная карта, которая работает совсем не так, как аппаратная плиткообразная карта (иногда называемая слоем 3), описанная здесь. В NextBASIC пока нет команд для прямого доступа к аппаратной плиткообразной карте, хотя описанные здесь методы можно использовать с помощью REG
и ручного управления памятью. А программная плиткообразная карта недоступна напрямую для программ на языке ассемблера, хотя вызовы IDE_TOKENISER и IDE_BASIC NextZXOS API могут выполнять произвольные команды BASIC.
Аппаратная плиткообразная карта включается с помощью Регистра управления плиткообразной картой ($6B / 107)
bit 7: 0=отключить плиткообразную карту, 1=включить плиткообразную карту bit 6: 0=40x32, 1=80x32 bit 5: 0=атрибуты в плиткообразной карте, 1=нет атрибутов в плиткообразной карте bit 4: 0=основная палитра, 1=вторичная палитра bit 3: Выбор текстового режима (программный сброс = 0) bit 2: зарезервировано bit 1: 0=режим 256 плиток, 1=режим 512 плиток bit 0: 1=плиткообразная карта поверх ULA
Плиткообразная карта состоит из двух областей данных: описания плиток и фактической плиткообразной карты; обе они расположены на странице 5 размером 16 КБ и в первой половине банка 7.
Описание плитки
Область описания плиток представляет собой смежный список описаний плиток, начинающийся с места, указанного битами 5-0 значения в Регистре базового адреса определений плиток ($6F / 111).
Каждое описание плитки представляет собой 32-байтовый блок 4-битных значений, описывающих индексы каждого пикселя плитки в порядке следования строк.
В текстовом режиме плитки являются монохромными и занимают 8 байт, что делает их по сути такими же, как текстовые символы ULA и UDGs.
Плиткообразная карта (Tilemap)
Плиткообразная карта начинается с места, хранящегося в битах 5-0 Регистра базового адреса плиткообразной карты ($6E / 110), а банк переключается с помощью бита 7. Если бит 7 установлен, плиткообразная карта находится в первой половине банка 7, в противном случае - в банке 5.
Эта карта состоит либо из пар номеров плиток и атрибутов плиток, либо из списка номеров плиток. Если атрибуты отсутствуют (бит 5 Nextreg $6B=1), то атрибуты для всех плиток берутся глобально из Регистра атрибутов плиткообразной карты по умолчанию ($6C / 108).
В текстовом режиме байт атрибута карты и глобальный атрибут теряют зеркальное отображение по x, зеркальное отображение по y и поворот, поэтому биты 7-1 становятся гораздо большим смещением палитры, которое может принимать значения от 0 до 127. Смещение палитры затем указывает на одну из 128 различных пар “бумага/чернила” в палитре. Индекс цвета бумаги - (смещение палитры * 2), а индекс цвета чернил - ((смещение палитры * 2) + 1).
Атрибут плитки
В режиме 16 цветов по умолчанию:
bits 7-4: смещение палитры bit 3: зеркальное отображение по X bit 2: зеркальное отображение по Y bit 1: Поворот bit 0: В режиме 256 плиток ULA поверх плиткообразной карты, в режиме 512 плиток бит 8 номера плитки
В текстовом режиме:
bits 7-1: смещение палитры bit 0: В режиме 256 плиток ULA поверх плиткообразной карты, в режиме 512 плиток бит 8 номера плитки
Дополнительные регистры
Регистр окна отсечения плиткообразной карты ($1B / 27)
bits 7-0: Координаты окна отсечения 1-я запись = позиция X1 2-я запись = позиция X2 3-я запись = позиция Y1 4-я запись = позиция Y2 Значения после сброса: 0,159,0,255 Операции чтения не сдвигают позицию отсечения
Регистр старшего байта смещения X плиткообразной карты ($2F / 47)
bits 7-2: Зарезервировано (0) bits 1-0: Старший байт смещения X Значимый диапазон: 0-319 в режиме 40 символов, 0-639 в режиме 80 символов
Регистр младшего байта смещения X плиткообразной карты ($30 / 48)
bits 7-0: Младший байт смещения X Значимый диапазон: 0-319 в режиме 40 символов, 0-639 в режиме 80 символов
Регистр смещения Y плиткообразной карты ($31 / 49)
bits 7-0: Смещение Y (0-255)
Регистр управления расширенной ULA ($43 / 67)
bit 7: ‘1’ для отключения автоматического приращения записи палитры. bits 6-4: Выбор палитры для чтения или записи: 000 = Первая палитра ULA 100 = Вторая палитра ULA 001 = Первая палитра слоя 2 101 = Вторая палитра слоя 2 010 = Первая палитра спрайтов 110 = Вторая палитра спрайтов 011 = Первая палитра плиткообразной карты 111 = Вторая палитра плиткообразной карты bit 3: Выбор палитры спрайтов (0 = первая палитра, 1 = вторая палитра) bit 2: Выбор палитры слоя 2 (0 = первая палитра, 1 = вторая палитра) bit 1: Выбор палитры ULA (0 = первая палитра, 1 = вторая палитра) bit 0: Включить режим расширенной ULA, если 1 (0 после сброса)
Регистр управления ULA ($68 / 104)
bit 7: 1 для отключения вывода ULA bit 6: 0=выбрать цвет ULA для смешивания в режимах SLU 6 и 7 1=выбрать смесь ULA/плиткообразной карты для смешивания в режимах SLU 6 и 7 bits 5-1: Зарезервировано (0) bit 0: 1=включить трафаретный режим, когда включены и ULA, и плиткообразная карта (если какой-либо из них прозрачен, результат прозрачен, в противном случае результатом является логическое И обоих цветов)
Дополнительная информация
Статья о режиме плиткообразной карты