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

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: Требуются шустрые скроллы окон

  1. #11
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чо-нить типа:


    Код:
    ; hl = from_scraddr
    ; de = to_scraddr
    ; b = yr_znm
    ; c = xr_znm
    
    Roller1    ;up/left
    
    	ld	a,#20
    	sub	c
    	add	a,a
    	ld	(ch_jr+1),a
    
    lp2
    	push	bc
    
    	ld	a,#08
    
    lp1
    	push	de
    	push	hl
    
    ch_jr	jr	$
    
     dup 32 : ldi : edup
    
    	pop	hl
    	pop	de
    	inc	h
    	inc	d
    	dec	a
    	jr	nz,lp1
    
    	ld	a,l
    	add	a,#20
    	ld	l,a
    	jr	c,$+6
    	ld	a,h
    	sub	#08
    	ld	h,a
    
    	ld	a,e
    	add	a,#20
    	ld	e,a
    	jr	c,$+6
    	ld	a,d
    	sub	#08
    	ld	d,a
    
    	pop	bc
    	djnz	lp2
    
    	ret
    
    
    Roller2    ;down/right
    
    	;...
    
     dup 32 : ldd : edup
    
    	;... 
    	
    	ret

    и всего делов

  2. #12
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,825
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Слуш, а прикольная идея. Ток у тебя там какой-то мега-глюк в расчетах после первого jr nz,lp1. Предыдущая строчка в знакоместе как-то не по русски высчитывается, неправильно.
    Последний раз редактировалось Shadow Maker; 15.10.2008 в 14:11.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  3. #13
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    если вдруг найдешь глюк - исправишь, не все ж разжевывать

    а еще можно и от лишних jr во внутреннем цикле избавиться...

    Код:
    	ld	a,0-2-2-4
    	sub	c
    	sub	c
    	ld	(ch_jr+1),a
    
    	ld	xl,b
    	ld	bc,#0a00
    	jr	lp1
    
    
     dup 32 : ldi : edup
    
    	pop	hl
    	pop	de
    	inc	h
    	inc	d
    
    lp1
    	push	de
    	push	hl
    
    ch_jr	djnz	$
    
    	pop	hl
    	pop	de
    
    	ld	bc,#0820
    	
    	ld	a,l
    	add	a,c
    	ld	l,a
    	jr	c,$+5
    	ld	a,h
    	sub	b
    	ld	h,a
    
    	ld	a,e
    	add	a,c
    	ld	e,a
    	jr	c,$+5
    	ld	a,d
    	sub	b
    	ld	d,a
    
    	ld	bc,#0a00
    	dec	xl
    	jr	nz,lp1
    
    	ret

  4. #14
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,825
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну так-то понятно, просто я в общем-то просил готовую рабочую процедуру Чтоб не перепроверять. Твоя процедура вот к примеру не фурычит. А то можно и вообще сказать мол башка есть - сам и напиши работающую процедуру.
    Последний раз редактировалось Shadow Maker; 16.10.2008 в 00:16.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  5. #15
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ппц. что не фурычит? c какими данными вызывается? как проявляется?
    процедура должна без проблем познакоместно копировать справа-налево и/или снизу-вверх.

  6. #16
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,825
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С любыми данными скролла по вертикали.
    Ну к примеру сдвиг вверх de #4000, hl #4100 и окно 5 на 5. У тебя неправильно рассчитывается последняя строчка в знакоместе, inc h - так делать нельзя, потому что у спектрума экран поделен на трети, в итоге у тебя после 4700 идёт 4800, а не 4020 как должно быть. Сам попробовал бы и увидел.

    PS - Все надеюсь поняли, что разговор был про плавные скроллы? Мож конечно это мой косяк что я непонятно написал.
    Последний раз редактировалось Shadow Maker; 16.10.2008 в 14:32.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

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

  8. #17
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я бы по-другому сделал
    есть команда JP (IX)
    и есть команда LD XH,A
    и можно код по ровному адресу выровнять. Тогда не надо будет модифицировать код по ходу. Да и быстрее будет.

    А вообще с общим подходом согласен - 32 LDI самое то.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  9. #18
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мда, посмеялса... так нужны шашечки или ехать?
    раз написал про знакоместа - это и были познакоместные копировщики. (hl=#4020 de=#4000)
    сразу видно - по 8 линий в знакоместе за внутренний цикл процедурка перекидывает (inc h / inc d), с последующим переходом к нижним знакоместам.
    а то - "ой-ой", "не работает"...
    короче, если нужно по-пиксельно, то - элементарно - во внутреннем цикле должна быть стандартная последовательность DOWN_HL / DOWN_DE.
    структура процедурки - еще проще получается.

    ld hl,#4100 : ld de,#4000 : ld bc,#c020 : call Copy3

    Код:
    Copy3
    
    ; hl = from_scraddr
    ; de = to_scraddr
    ; c = xr_znm
    ; b = yr_pix+1
    
    	ld	a,0-(ch_djnz-ldi_end+2)
    	sub	c
    	sub	c
    	ld	(ch_djnz+1),a
    
    	jr	go_loop
    
    
     dup 32 : ldi : edup
    
    ldi_end
    	pop	hl
    	pop	de
    
    	inc	h
    	ld	a,h
    	and	#07
    	jr	nz,$+12
    	ld	a,l
    	add	a,#20
    	ld	l,a
    	jr	c,$+6
    	ld	a,h
    	sub	#08
    	ld	h,a
    
    	inc	d
    	ld	a,d
    	and	#07
    	jr	nz,$+12
    	ld	a,e
    	add	a,#20
    	ld	e,a
    	jr	c,$+6
    	ld	a,d
    	sub	#08
    	ld	d,a
    
    go_loop
    	ld	c,d	; C > #20
    	push	de
    	push	hl
    
    ch_djnz	djnz	$
    
    	pop	hl
    	pop	de
    
    	ret
    p.s. если используется как скроллер, где hl и de - на соседних линиях, - то вместо DOWN_DE - можно ld d,h : ld e,l (перед inc h) и push de / pop de - убрать

  10. #19
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,825
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я себе вот типа такого и сделал в принципе, чуть подсократив. Мой косяк, значит, что непонятно написал.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  11. #20
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    429
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    гы... даешь процедуру двухэкранного сролла окна по стеку с таблицей просчитаных адресов экрана.
    вот тогда действительно будет минимум по тактам и не хило по памяти
    Himik's ZxZ/PoS-WT
    Izhevsk. Russia. Planet 'Earth'. Sun system.
    The Pusher. Crack music system.
    Turbo-Sound at 1995 year.

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

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

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

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

Похожие темы

  1. Ответов: 11
    Последнее: 19.08.2008, 01:06

Ваши права

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