![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
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 ![]() |
Работа с блиттером, блиттер доступен начиная v15b9 прошивки
2024-05-26 Документация ТУТ Для формирования команды можно использовать калькулятор команд блиттера UDP 2025-01-24: видео перезалито, в MP4 и 1024х786 60fps особенности - код универсальный - те будет работать на любой БК(10/11 пофиг на дорабоки) - код демонстрационный - те я не занимаюсь оптимизацией или красотой кода - код с корректным возвратом в операционку перезаливка кода и измененного видео от 2024-02-17 0. Заполнение константой - команда 0 заполнение экрана разноцветными прямоугольниками - проверка работы команды копирования константы видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 1. Копирование спрайта безусловное - команда 11 производится копирование спрайта хранящегося линейно в прямоугольную позицию в экране видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 2. Копирование спрайта c наложением по SRC - команда 21 видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 3. Копирование спрайта безусловное, с анимацией и движением (команды 0 и 11) сначала тут идет отчистка экрана при помощи ручного запуска блиттера, затем по таймеру идет видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() обращаю внимание на пример ручного запуска блиттера Код ;*********** ручной запуск блиттера v15b8 и далее ***************** mov #2000,@#177272; страница с блоком команд блиттера mov #40000,@#177270; включаем ручной режим блиттера bis #1,@#177270; количество команд bis #10000,@#177270; стартуем блиттер ; ********** ожидание выполнения команды блиттера ************ $w1: bit #100000,@#177270; ждем завершения выполнения bne $w1 4. Копирование спрайта с восстановлением фона (команды 11 21 и 42) видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 5. Подкладывание под фон (команды 11 33 и 42) видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 6. Подкладывание под фон (команды 11 33 и 42) + вращение видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 7. Подкладывание под фон (команды 11 33 и 42) + дрожание экрана - горизонтальный и вертикальные скроллинги видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 8. Заполнение константой - команда 0, выжимаем скорость! заполнение экрана разноцветными прямоугольниками - проверка работы команды копирования константы - основное отличие от примера 0 - тут мы не по кадровому таймеру работаем - а выжимаем максимальную скорость ! видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() тут организована конвейерная обработка: 0- готовим изначальную команду 1- запускаем готовую команду 2- ждем пока буфер команды будет считан в буфер блиттера 3- готовим данные для новой команды 4- ждем завершения работы блиттера идем на п1 Код ; вариант с ручным запуском - выжимаем максимальную скорость mov #2000,@#177272; страница с блоком команд mov #40000,@#177270; включаем ручной режим блиттера bis #1,@#177270; количество команд ;*********** ручной запуск блиттера v15b8 и далее ***************** main: bis #10000,@#177270; стартуем блиттер ; ********** ожидание считываения команд блиттера в буфер блиттера ************ $w0: bit #10000,@#177270; ждем пока буфер читается bne $w0 ; ****************************************************************** ; можно начинать готовить новую команду! ; рандомный цвет mov @#177550,R0 bic #177400,R0 mov R0,@#120016 ;5 слово ;младший байт - длина спрайта в словах по горизонтали минус 1 ;старший байт - количество cтрок mov @#177550,R0 bic #174370,R0 inc R0 mov R0,@#120011; ;6 слово - инкрементация адреса назначения после копирования строки спрайта ; если мы хотим вывести спрайт шриной 8. пикселей в строку длиной 256. байт ;то мы должны указать инкрементацию - 128.-3.=125 mov #128.,R1 bic #177700,R0 sub R0,R1 mov R1,@#120012; ; позиция рандомная mov @#177550,R0 bic #100000,R0 mov R0,@#120004 ; ********** ожидание выполнения команды блиттера ************ $w1: bit #100000,@#177270; ждем завершения выполнения bne $w1 ; ****************************************************************** 9. Применение команды 51 - подкладывание под фон (команды 11 33 и 42) + 51ая команда при столкновении с границами экрана видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 10. Подкладывание под фон (команды 11 33 и 42), но с применением координаты Y видео - качественный видеозахват 1024х768 60fps ![]() исходники ![]() 11. Зеркалирование по вертикали горизонтали и одновременно * для прошивок 19b1 и старше это детальный пример вывода спрайта в 4х вариантах зеркалирования фото ![]() исходники ![]() 12. Растягивание по-вертикали, иначе говоря удвоение строк (копирование спрайта безусловное, с анимацией и движением - команды 0 и 11) пример аналогичен примеру №3, но тут видеорежим 246х384 cтроки и каждая строка спрайта повторяется дважды принцип повторения крайне прост - у нас есть строчное смещение при длине строки в 128. слов, мы можем задать смещение больше строки иначе говоря можно выводить спрайт черезстрочно тут соответственно спрайт сначала стирается черезстрочно, затем выводится черезстрочно для движения по вертикали я использую координату Y - ее изменение на 1 вызывает смещение на 2 строки ![]() Образ диска с примерами ![]() -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 21.6.2025, 6:31 |