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

User Tag List

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 21 по 30 из 62

Тема: Как быстро скроллить память на 2 пиксела?

  1. #21
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Скролл на 3 бита(пикселя)
    а значение D?

  2. #22
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Скролл на 3 бита(пикселя)
    46 тактов на байт.
    RLD: DEC L
    +
    RR (HL):INC L
    =
    41 такт на байт.

  3. #23
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,580
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,800
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    pop hl
    rr h
    rr l
    ex af,af'
    rr h
    rr l
    ex af,af'
    ld (nn),hl

    же
    Это 33 такта на байт (кстати, перепутаны местами h и l).

    А почему не 32 такта на байт:
    Код:
    		POP	HL		10
    		POP	DE		10
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		EX	AF,AF'		4
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		EX	AF,AF'		4
    		LD	(nn),HL		16
    		LD	(nn),DE		20
    Или даже 31.6 такта на байт:
    Код:
    		POP	HL		10
    		POP	DE		10
    		POP	BC		10
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		RR	C		8
    		RR	B		8
    		EX	AF,AF'		4
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		RR	C		8
    		RR	B		8
    		EX	AF,AF'		4
    		LD	(nn),HL		16
    		LD	(nn),DE		20
    		LD	(nn),BC		20
    Теоретически, на практике не проверял.

  4. #24
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,983
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    263
    Поблагодарили
    100 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сдвиг на 3 бита самый медленный Уж лучше таблицами.

    ---------- Post added at 07:32 ---------- Previous post was at 07:26 ----------

    Titus, Ради спортивного интереса буду раз если поковыряешь моё творчество
    http://zx-pk.ru/showthread.php?t=23544

    Может есть идеи как оптимизировать?

  5. #25
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,580
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,800
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Сдвиг на 3 бита самый медленный Уж лучше таблицами.
    У меня на два же)

    ---------- Post added at 05:37 ---------- Previous post was at 05:33 ----------

    Цитата Сообщение от drbars Посмотреть сообщение
    Titus, Ради спортивного интереса буду раз если поковыряешь моё творчество
    http://zx-pk.ru/showthread.php?t=23544
    У тебя много ограничений.
    Стек не используешь, а это золотое дно в ускорении.
    Таблиц тоже используешь по минимуму, хотя памяти у тебя 128Кб.

  6. #26
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,983
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    263
    Поблагодарили
    100 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, это версия без таблиц. К сожалению оказалось менее универсальной и более тормозной для разно размерных спрайтов, если в неё внедрять изменение длины спрайта "на лету". Использовать стек, я думал.. но выходило тормознее.

    Сейчас уже, в текущей версии кода, я всё переделал под таблицы и стек. По скорости одинаково вышло.

    Просто основной приём, сдвига на 3 интересный получился за счет уже сдвинутого на 1 копирования в буфер скролирования
    Дальше применяем RLD или RRD и получаем сдвиг на 3 более быстрый чем делать RL (HL). Жаль, что RLD/RRD не работают в регистрах.
    Последний раз редактировалось drbars; 03.04.2015 в 07:16.

  7. #27
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,580
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,800
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Сейчас уже, в текущей версии кода, я всё переделал под таблицы и стек. По скорости одинаково вышло.
    Чего ж ковырять то, что уже устарело) Надо ковырять актуальное)

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

    По умолчанию

    Titus, в актуальном баланс между размером и скоростью главное. Была бы возможность строить мегакод для спрайтов в локации... но её нет.

  9. #29
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Или даже 31.6 такта на байт:
    Код:
    		POP	HL		10
    		POP	DE		10
    		POP	BC		10
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		RR	C		8
    		RR	B		8
    		EX	AF,AF'		4
    		RR	L		8
    		RR	H		8
    		RR	E		8
    		RR	D		8
    		RR	C		8
    		RR	B		8
    		EX	AF,AF'		4
    		LD	(nn),HL		16
    		LD	(nn),DE		20
    		LD	(nn),BC		20
    Можно еще задействовать альтернативные регистры (EXX). И тогда может оправдять себя переставление SP (LD SP,nn) и запись в память через PUSH.

    В пределе имеем (при неограниченном кол-ве регистров):
    2x RL r - 16 тактов на байт
    1x PUSH rp, 1xPOP rp на каждые 2 байта, 21/2=10.5 тактов на байт
    поэтому любой алгоритм такого типа не сможет сделать быстрее, чем 26,5 тактов на байт. Это без учета установок SP, без учета EXX.

    Но даже и с такой оптимистической скоростью, если скроллить одну треть экрана - то это будет более 54272 тактов. За один фрейм больше, чем 1/3 экрана, не проскроллишь.

    Поэтому я думаю, что в реальных играх и демах нужно использовать трюки, создавать иллюзию скролла, а не сам скролл. Типа как в Sea Dragon тайловая графика.

  10. #30
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,580
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,800
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Можно еще задействовать альтернативные регистры (EXX). И тогда может оправдять себя переставление SP (LD SP,nn) и запись в память через PUSH.
    Нет, не оправдает. Попробуй напиши и рассчитай, сколько получится тактов.

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Как быстро добраться до мыши?
    от TomCaT в разделе Для начинающих
    Ответов: 38
    Последнее: 02.03.2010, 11:00
  2. Поиск идей: как быстро залить TAP/TZX в Speccy ???
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 23
    Последнее: 24.12.2007, 06:32
  3. Быстро вывести число 0-255 на экран
    от Aprisobal в разделе Программирование
    Ответов: 7
    Последнее: 26.01.2005, 08:05
  4. Быстро переместить 384b
    от Aprisobal в разделе Программирование
    Ответов: 6
    Последнее: 23.01.2005, 15:23

Ваши права

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