User Tag List

Показано с 1 по 10 из 32

Тема: Вектор Турбо+

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,424
    Спасибо Благодарностей отдано 
    768
    Спасибо Благодарностей получено 
    2,374
    Поблагодарили
    1,322 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для сравнения переделал в софтовую процедуру вывода 40 символов в строке, принцип вывода аналогичный, надеюсь это не вызовет возражений.

    Скрытый текст

    Код:
    DrawSymbSoft:
    	ld b,a
    	and 00111100b
    	rrca
    	rrca
    	add a,0e0h	; Выводить будем в верхнюю плоскость
    	ld d,a	; Получаем горизонтальный полуадрес левого байта из 3 байтов, где могут быть 4 символа
    	ld a,b
    	and 3	; Выделяем биты, определяющие сдвиг символа 
    	jp nz,DrawSymbSoft1
    ;0
    	ld b,00000011b
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rlca\ rlca\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ rlca\ rlca\ or c\ ld (de),a
    	ret
    DrawSymbSoft1:
    	dec a
    	jp nz,DrawSymbSoft2
    ;1
    	ld b,11111100b
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ rrca\ rrca\ rrca\ rrca\ and 11b\ or c\ ld (de),a
    	inc d
    	ld b,00001111b
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ add a,a\ add a,a\ add a,a\ add a,a\ or c\ ld (de),a
    	ret
    
    DrawSymbSoft2:
    	dec a
    	jp nz,DrawSymbSoft3
    ;2
    	ld b,11110000b
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ inc hl\ rrca\ rrca\ and 1111b\ or c\ ld (de),a\ inc e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ rrca\ rrca\ and 1111b\ or c\ ld (de),a
    	inc d
    	ld b,00111111b
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ dec hl\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a\ dec e
    	ld a,(de)\ and b\ ld c,a\ ld a,(hl)\ rrca\ rrca\ and 11000000b\ or c\ ld (de),a
    	ret
    DrawSymbSoft3:
    ;3
    	ld b,11000000b
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ inc hl\ ld (de),a\ inc e
    	ld a,(de)\ and b\ or (hl)\ ld (de),a
    	ret
    [свернуть]

    Точных растактовок для турбо я не знаю (тем более они вроде бы разные для активной области изображения и бордюра), поэтому посчитал для "стандартного z80" на векторе (т.е. с векторовским торможением) при 3 МГц. В зависимости от позиции получается 508/1168/1120/416 тактов. Позиции по горизонтали равновероятные, поэтому среднее значение 803 такта.
    Чтобы подравнять силы в DrawSymb заменил ld bc,8\ ldir и ld bc,8\ lddr на 8 ldi и 8 ldd соответственно. Получилось 388/600/636/476 тактов. В среднем 525 тактов. 803/525=1.53
    Полтора раза это хорошо, но это совсем не три раза (которые должны были быть минимумом).
    И это не все.
    1. Если добавить к процедуре вычисление адреса символа по его коду, то выигрыш еще уменьшится.
    2. Процедуру софтового вывода можно заметно оптимизировать. Памяти много, можно хранить 4 предсдвинутых варианта символов. Выигрыш становится еще меньше.
    3. Запрещение прерываний может еще приемлемо для вывода символов, но не для спрайтов в игре при наличии фоновой музыки.
    Последний раз редактировалось ivagor; 21.09.2022 в 21:52.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Improver(21.09.2022)

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

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

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

Похожие темы

  1. АТМ Турбо 1/2/2+
    от artice в разделе ATM
    Ответов: 5
    Последнее: 17.12.2025, 20:14
  2. Ответов: 17
    Последнее: 05.10.2012, 20:11
  3. Меняю Вектор/БК11М на Вектор (или куплю)
    от dk_spb в разделе Барахолка (архив)
    Ответов: 13
    Последнее: 07.01.2012, 17:31
  4. Турбо ВГ-93
    от Иван в разделе Внешние накопители
    Ответов: 1
    Последнее: 09.11.2006, 14:59

Ваши права

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