![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
SuperMax |
![]() ![]()
Сообщение
#1
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Работа с палитрами
документация по палитрам тут оба регистра доступны по записи и чтению, сохранение палитры осуществляется по записи в 177236 пример изменения дефолтной палитры RGB Код SetPal1: mov #177234,R0 mov #177236,R1 mov #256.,(R0) ; адрес палитры mov #10,(R1) ; значение палитры - был черный фон - теперь темно-синий inc (R0) mov #15446,(R1) ; значение палитры - был синий - стал - зеленый inc (R0) mov #77454,(R1) ; значение палитры - был зеленый - стал желтый inc (R0) mov #46614,(R1) ; значение палитры - был красный - стал коричневый return загрузка палитры 256 цветов Код mov #177234,R0 ; установка палитры mov #177236,R1 mov #newpal,R2 mov #256.,R3 clr R4 $rp0: mov R4,(R0) mov (R2)+,(R1) inc R4 sob R3,$rp0 newpal - метка массива палитры 256 цветов (256 слов) -------------------- Живы будем - Не помрем !
|
![]() ![]() |
SuperMax |
![]()
Сообщение
#2
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 341 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Работа с расширенной графикой напрямую - 256ти цветные видеорежимы: работа с регистрами сдвига (скрола)
особенности - код универсальный - те будет работать на любой БК(10/11 пофиг на дорабоки) - код демонстрационный - те я не занимаюсь оптимизацией или красотой кода - код с корректным возвратом в операционку 1. Замостим плиткой 32х32 весь экран 256х256 256цветов результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() 2. Замостим плиткой 32х32 весь экран 256х256 256цветов и затем заполним рандомными пикселями (цвет и позиция случайны) результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() тут хочу обратить внимание на качество генератора псевдослучайных чисел в AZБК (и скорость установки точек) 3.Используем длинный рулон: видеорежим 256х256 256цветов - отображаемая часть 64кБ а весь рулон - 128кБ для демонстрации замостим плиткой первого типа 32х32 первые 64кБ и плиткой второго типа - следующие 64кБ далее по таймеру будем крутить рулон вверх вниз результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() тут сразу напрашивается сделать pinball ![]() 4.Используем широкий рулон: видеорежим 256х256 256цветов - отображаемая часть 64кБ а весь рулон - 128кБ для демонстрации замостим плиткой первого типа 32х32 левый экран и плиткой второго типа - следующие правый далее по таймеру будем крутить рулон вправо-влево результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() 5. Используем длинный и широкий рулон: видеорежим 256х256 256цветов - отображаемая часть 64кБ а весь рулон - 256кБ те у нас в ширину два "экрана" и "в высоту" два - всего 4 для демонстрации замостим плиткой все 4 экрана дабы их отличать далее по таймеру будем крутить рулон по горизонтали и вертикали результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() 6. Сделаем тоже что мы делали с помощью блиттера ранее - см пример (4. Копирование спрайта с восстановлением фона (команды 11 21 и 42) далее по таймеру будем крутить рулон по горизонтали и вертикали результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() 7. Сделаем тоже что мы делали с помощью блиттера ранее - см примеры (4. Копирование спрайта с восстановлением фона (команды 11 21 и 42) далее по таймеру будем крутить рулон по горизонтали и вертикали + добавим вращение результат работы - качественный видеозахват 1024х768 60fps ![]() исходник ![]() FAQ по рулонам, сдвингам итд Q: Есть ли ограничение у рулона ? Можно ли сделать длинный рулон "вниз" ? A: Ограничений на самом деле нет, есть особенности:для сдвига экрана (окна отображения) вниз мы оперируем регистром вертикального скрола - но у него только 1024 значения, иначе говоря при его помощи мы можем сдвигаться на от 0 до +1023 строк вниз, но надо помнить, что у нас есть еще и регистр начала отображения - те номер страницы с которой идет отображение и соответственно расчет этого сдвига!соответственно используя обра регистра мы можем двигаться бесконечно!поясню на примере - допустим у нас разрешение 256x256 и ширина строки 128 слов - те все что есть идет на экран. соответственно изменение значения на 1 в регистре страницы начала отображения эквивалентно сдвигу вниз на 16 строк! иначе говоря движение вниз можно сделать по этапам - сначала двигать плавно регистром скрола, а потом менять регистр со страницей начала отображения экрана и соответственно "сбрасывать" скролл на 0. и так до конца памяти Q: Можно ли сделать большой хост ? те больше 512х512 256цветов ? Дабы герой мог бежать что влево что вправо и так далее A: Да, можно, но это будет набор полос: те у нас к примеру экран 256x192 нужен холст в 8 экранов по горизонтали (256х8=2048px) и 6 экранов по вертикали (192х6=1152px)делаем набор полос - ширина 512px а длина - см выше 1152pxи полосы делаем пересекающиеся: Код 0 256 512 768 1024 1280 1536 │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ │ ║ │ ║ │ ║ │ первая (нечетная полоса) от одинарной линии до соседней тонкой четные - от двойной линии до следующей двойной первая от 0 до 512px вторая от 256 до 768px третья от 512 до 1024px итд соответственно когда герой дошел до середины правой стороны полосы мы можем сменить полосу и отображать фон уже с четной полосы - потом как он перейдет дальше - снова поменять полосу получится что мы можем бегать по фону и при этом его не надо отрисовывать постоянно! достаточно нарисовать его один раз (ну и дублировать изменения если они будут) соответственно получается, что можно сделать те же HMM3/WC2 в разрешении 512х384х16 цветов плавно двигая экран во все стороны если у нас фон вообще не изменяется, то можно обойтись только нечетными полосами: фон на заднем (2) слое, герой на переднем слое (0), а NPC на среднем. легко делается оптимизация движения героя: - сам герой единожды отрисован на (к примеру) на 16ми страницах - те 16 фаз его движения/действия - все что надо сделать для перемещения героя - крутим регистры скролла (влево-вправо и вверх-вниз) фазу движения просто выбираем устанавливая нужную страницу отображения. иначе говоря можно полностью сосредоточиться на программировании игровой логики не тратя ресурсы на работу с графикой. -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 18.6.2025, 1:06 |