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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: X,Y-->ATTR

  1. #1
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию X,Y-->ATTR

    Продолжаем скоростную оптимизацию базовых игровых процедур:

    Задача, экстремально быстро расчитать адрес атрибутов. Без таблиц.

    Входные параметры: Есть Х (0..255), Y (0..192).

    Можно ли быстрее чем 77 тактов?
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

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

  3. #2
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    22528+(Y and 248)*4+X/8

    другое дело, как сдвигать влево или вправо.
    Последний раз редактировалось research; 13.08.2013 в 11:23.
    Куплю в СПб 5.25" Robotron или Teac

  4. #3
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от research Посмотреть сообщение
    22528+(Y and 248)*4+X/8
    другое дело, как сдвигать влево или вправо.
    Пример есть?
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  5. #4
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я набросал, но получилось 95 тактов. оптимизировать можно, но получатся те же 77 тактов, в лучшем случае. Вместо двубайтовых сложений в лоб - использовать однобайтовые (вместо 22528 добавлять только #58 к старшему байту и т.п.)

    upd. чуть оптимизировал, вышло 80, без инициализаци (пару регистров надо занулить). у тебя 77 с инициализацией? Тогда сяду #58(00) делить на 4, чтобы потом умножить на 4 и сэкономить


    upd2:
    вот что вышло, может и заработает
    ;вход: a=X , l=Y

    rra:rra:rra;12
    and 224;7 смещение по х

    ld h,#58/4 ;7
    add hl,hl:add hl,hl;30
    add a,l: ld l,a :adc a,h: ld h,a ;16
    ;/72

    upd.3 - выше косяк - не обрезал Y три младших бита, был взволнован

    ;вход: a=X , l=Y

    rra:rra:rra;12
    and 224;7 смещение по х

    ld h,#58/4 ;7
    add hl,hl:add hl,hl;30
    add a,l: and 31: ld l,a :adc a,h: ld h,a ;23
    ;/79

    показывай свою
    Последний раз редактировалось research; 13.08.2013 в 12:08.
    Куплю в СПб 5.25" Robotron или Teac

  6. #5
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от research Посмотреть сообщение
    у тебя 77 с инициализацией?
    На входе HL координаты, на выходе HL адрес атрибутов. другие регистры кроме А не используются.
    Но проблема немного другая, поэтому грею голову. нужно быстро на начальном этапе вытащить в рег.А = Y/8...
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  7. #6
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    rra rra rra and 31 ;19 тактов
    через RR - 24

    вообще, с пикселями возиться без таблиц - неблагодарное дело. тем более с атрибутом каждого пикселя, а не 8х8=64. Получается до 64 х 77 тактов лишней работы, вместо 1х77
    Куплю в СПб 5.25" Robotron или Teac

  8. #7
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от research Посмотреть сообщение
    показывай свою
    Код:
    	LD A,H		; 4
    	RLCA		; 4
    	RLCA		; 4
    	LD H,A 		; 4
    	AND #E0		; 7
    	SRL L		; 8
    	SRL L		; 8
    	SRL L		; 8
    	OR L  		; 4
    	LD L,A		; 4
    	LD A,H 		; 4
    	AND #03  	; 7
    	ADD A,high SURFACE_MAP	; 7
    	LD H,A		; 4
    Последний раз редактировалось drbars; 13.08.2013 в 16:28.
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  9. #8
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    гы, я и забыл, что RLC жрет 4 такта, тока мозгов посчитать как у тебя Y=191 считается мне не хватило. Но, интуитивно чувствую, что твой и мой методы можно объединить
    Куплю в СПб 5.25" Robotron или Teac

  10. #9
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,529
    Благодарностей: 654
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от research Посмотреть сообщение
    гы, я и забыл, что RLC жрет 4 такта, тока мозгов посчитать как у тебя Y=191 считается мне не хватило. Но, интуитивно чувствую, что твой и мой методы можно объединить
    Эту мозголомную часть, я долго мучал Но результатом пока не удовлетворён.

    ---------- Post added at 17:54 ---------- Previous post was at 17:48 ----------

    Цитата Сообщение от research Посмотреть сообщение
    вообще, с пикселями возиться без таблиц - неблагодарное дело.
    Это наводит на мысль, что может Y/8 через экранные таблицы вытащить...

    ---------- Post added at 19:08 ---------- Previous post was at 17:54 ----------

    Последний раз редактировалось drbars; 13.08.2013 в 16:29.
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  11. #10
    Activist
    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    312
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ты определись с верхним уровнем, зачем каждый пиксель мучить, если нужно ставить атрибуты лишь последнему.
    Куплю в СПб 5.25" Robotron или Teac

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ATTR-->Y
    от drbars в разделе Программирование
    Ответов: 6
    Последнее: 08.08.2013, 19:59
  2. Функция ATTR (x,y) на бейсике.
    от женя999 в разделе Программирование
    Ответов: 15
    Последнее: 03.04.2012, 21:53

Ваши права

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