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

User Tag List

Страница 1 из 9 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 90

Тема: Вывод спрайта любой ширины с точностью до пикселя.

  1. #1
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Вывод спрайта любой ширины с точностью до пикселя.

    Написал процедуру вывода спрайта в линейный буфер, возможно кто-нибудь предложит вариант оптимизации по скорости выполнения

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

    Код:
    ;смещение 4
    ;HL - адрес в буфере экрана vscreen
    ;DE - данные спрайта [байт маски, байт данных]
    ;B - ширина спрайта в символах
    ;C - высота спрайта в пикселях
    ;vscreen.len - ширина строки в буфере экрана
    drw_sprite_sm4		ld a,b
    			ld (drw_sprite_sm4_loop1+1),a
    			neg
    			add a,vscreen.len
    			ld (drw_sprite_sm4_offsetx+1),a
    			ld a,c
    			exx
    			ld c,a
    			exx
    drw_sprite_sm4_loop1	ld a,0
    			ld bc,#ff00
    drw_sprite_sm4_loop2	exa
    			ld a,(de)
    			inc de
    			dup 4
    			rr b
    			rra
    			edup
    			rr b	
    			and (hl)
    			ld (hl),a						
    			ld a,b
    			dup 4
    			rrca
    			edup
    			ld b,a				
    			ld a,(de)
    			inc de
    			dup 4
    			rr c
    			rra
    			edup
    			rr c			
    			or (hl)
    			ld (hl),a						
    			ld a,c
    			dup 4
    			rrca
    			edup
    			ld c,a					
    			inc hl
    			exa
    			dec a
    			jp nz,drw_sprite_sm4_loop2
    			ld a,b
    			dup 4
    			rrca
    			edup 
    			or #0f
    			ld b,a
    			ld a,c
    			dup 4
    			rrca
    			edup
    			and #f0
    			ld c,a
    			ld a,(hl)
    			and b
    			or c
    			ld (hl),a
    drw_sprite_sm4_offsetx	ld a,0
    			add a,l
    			ld l,a
    			jp nc,$+4
    			inc h
    			exx
    			dec c
    			exx
    			jp nz,drw_sprite_sm4_loop1
    			ret

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

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SaNchez, поменяй формат маски
    с маски AND OR
    на маску OR XOR
    будет проще.

    через таблицу не хочешь выводить?

    будет всего 2 процедуры
    со смещением/без смещения
    С уважением,
    Jerri / Red Triangle.

  4. #3
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А в чём выигрыш OR/XOR?
    Через таблицу - хорошая идея, надо обдумать...

  5. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SaNchez, ну например для того же табличного метода надо хранить 2 варианта таблиц - для маски и для спрайта а так только 1
    второй момент SRL r 7ой бит не устанавливает
    С уважением,
    Jerri / Red Triangle.

  6. #5
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Точно! Благодарю!

  7. #6
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    219
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А тупых нубов в тему пускаете?
    Дайте подсказку про таблицы, не понял, что имеется в виду...

  8. #7
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно сделать таблицу подготовленных значений сдвигов 4кб длинной, и потенциально это позволит ускорить вывод спрайта.

  9. #8
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Табличный способ особо выигрыша на даёт. Плавали, знаем...

  10. #9
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если в сравнении с реальным смещением в 4 пикселя, табличный способ даст хотя-бы двукратный прирост скорости, то он имеет право на жизнь

  11. #10
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SaNchez, я тоже отказался от реального в пользу табличного, но причины были иные, не из-за скорости. В реальности табличный способ имеет более громоздкий код и тащит за собой таблицы в 4Кб.

Страница 1 из 9 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Вывод спрайта по X,Y
    от drbars в разделе Программирование
    Ответов: 7
    Последнее: 20.03.2022, 10:43
  2. Спрайтовывыводилка с пиксельной точностью без таблиц
    от shadwork в разделе Программирование
    Ответов: 11
    Последнее: 20.08.2015, 20:23
  3. Поворот спрайта
    от Soplik в разделе Программирование
    Ответов: 22
    Последнее: 03.10.2011, 21:53
  4. куплю любой спекипум(минск)
    от fergus в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 30.04.2009, 00:49
  5. Поворот спрайта
    от acidrain в разделе Графика
    Ответов: 9
    Последнее: 06.12.2008, 14:27

Ваши права

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