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

User Tag List

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

Тема: Попиксельный raycasting и sjasm

  1. #1
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,426
    Благодарностей: 643
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Cool Попиксельный raycasting и sjasm

    Что-то замучался я с трассером.
    Код вида:
    Код:
    L00     SЕТ 7,(НL) ;строка 0            
            SUВ Е                           
            JR C,L11A                       
    L01     SЕТ 6,(НL)                      
            SUВ Е                           
            JR C,L12A                       
    L02     ...                             
                                            
    L10A    ADD A,D                         
            INC Н   ;переход на строку 1    
            JР L10                          
    L11A    ADD A,D                         
            INC Н                           
            JР L11                          
    L12A    ...                             
                                            
    L10     SЕТ 7,(НL) ;строка 1            
            SUВ Е                           
            JR C,L21A                       
    L11     SЕТ 6,(НL)                      
            SUВ Е                           
            JR C,L22A                       
    L12     ...
    никак не могу сообразить как забить?
    (ну не декрюнчер ведь а-ля 90-е писать, да и не динамичный он будет, блин!).
    Как решается?
    (мучаю вот это http://zxpress.ru/article.php?id=11746 )

  2. Этот пользователь поблагодарил Destr за это полезное сообщение:
    Reobne (30.06.2016)

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

  4. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 704
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr, а стираешь потом как?

    - - - Добавлено - - -

    [QUOTE=Destr;875495]Что-то замучался я с трассером.
    Код вида:
    Код:
    L00     SЕТ 7,(НL) ;строка 0            
            SUВ Е                           
            JR C,L11A                       
    L01     SЕТ 6,(НL)                      
            SUВ Е                           
            JR C,L12A                       
    L02     SЕТ 5,(НL) ;строка 0            
            SUВ Е                           
            JR C,L13A                       
    L03     SЕТ 4,(НL)                      
            SUВ Е                           
            JR C,L14A                       
    L04     SЕТ 3,(НL) ;строка 0            
            SUВ Е                           
            JR C,L15A                       
    L05     SЕТ 2,(НL)                      
            SUВ Е                           
            JR C,L16A                       
    L06     SЕТ 1,(НL) ;строка 0            
            SUВ Е                           
            JR C,L17A                       
    L07     SЕТ 0,(НL)                      
            SUВ Е                           
            JR C,L18A                       
            jr l00
                                          
    L10A    ADD A,D                         
            INC Н   ;переход на строку 1    
            JР L10                          
    L11A    ADD A,D                         
            INC Н                           
            JР L11                          
    L12A    ...                             
                                            
    L10     SЕТ 7,(НL) ;строка 1            
            SUВ Е                           
            JR C,L21A                       
    L11     SЕТ 6,(НL)                      
            SUВ Е                           
            JR C,L22A                       
    L12     ...
    правда чтото я не вижу тут контроль длины отрезка.
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  5. #3
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,426
    Благодарностей: 643
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    правда чтото я не вижу тут контроль длины отрезка
    Контроль только в длине итераций (сколько раз повторим отрезок приведёный).
    Вообще это шелуха (контроль длины), тут дело в том как преподать 192 раза повторения чтоб не ругался сиджасм и вообще как это модульные метки или что?

    - - - Добавлено - - -

    jerri, я ведь ссыль дал, там это пишется (ну как-бы на теории):
    http://zxpress.ru/article.php?id=11746
    Больше пол-статьи, там где линия...

  6. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 704
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    возьми лучше помедленнее класику
    оставь этот геморой авторам.
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  7. #5
    Activist
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    330
    Благодарностей: 290
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Контроль длины я бы сделал перед jr L00 и печатал знакоместами, а хвосты можно и по тормозному.
    В сиджасме с именами меток вроде не помутишь через макросы, так как общая картина ясна изначально, можно высчитывать абсолютные переходы исходя из $, но на луа сделать будет и быстрее и проще.

    - - - Добавлено - - -

    Забыл, ведь = есть, но переходы все равно абсолютные считать придется.

    - - - Добавлено - - -

    Дочитал статью вопрос контроля снимается

  8. #6
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,426
    Благодарностей: 643
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    возьми лучше помедленнее класику
    Не могу, это рейкастинг будет, тут надо как можно быстрей...

  9. #7
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 704
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr,

    давай тогда с тобой подумаем вместе

    вот простой и удобный алгоритм рисования линии

    Код:
    beginning
    	di
    	ld	hl,#1020  ; yx dest
    	ld	de,#3060  ; yx sour
    	call	line00	
    	ei
    	ret
    
    ;в HL - yx конца
    ;в DE - yx начала
    line00
     	ld a,h		;вычисляем DY
    	sub d
    	ld bc,#141c	;создаем базовые изменения координат
    	jr nc,line1	;основная пара de
    	inc b
    			;поэтому меняем DE><HL если рисуем сверху вниз
    			;ВСЕГДА рисуем сверху вниз
    	neg 
    line1 	ld h,a		;H=DY
    	ld a,l		;вычисляем DX
    	sub e		;
    	jr nc,line2
    	inc c		;если рисуем справа налево то меняем направление
    	neg		 
    line2 	cp h		;DX=DY?
    	ld l,a
    	jr c,line3
    			;если меньше то считаем основной координатой DY
    	ld l,h
    	ld h,a
    	ld a,b
    	ld b,c
    	ld c,a
    
    line3 	ld a,b		;обозначаем как менять координаты
    	ld (line5),a
    	ld a,c
    	ld (line6),a
    	ld b,h
    	ld a,h
    	inc l
    
    	inc b
    line4 	call plot ;здесь печать точки - в de координаты yx
    line5 	nop 
    	sub l
    	jr nc,line7
    line6 	nop 
    	add a,h
    line7 	djnz line4
    
    	ret
    
    plot	
    	push	hl,de,af
    	ld	l,d
    	ld	h,koors/256
    	ld	a,(hl)
    	inc	h
    	ld	d,(hl)
    	inc	h
    	ld	l,e
    	or	(hl)
    	ld	e,a
    	inc	h	
    	ld	a,(de)
    	xor	(hl)
    	ld	(de),a
    	pop	af,de,hl
    	ret

    на основе этого алгоритма надо подумать как рисовать в пределах знакоместа линию

    у нас есть 4 варианта развития линии

    х+ у+
    х- у+
    х+ у-
    х- у-
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  10. #8
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,426
    Благодарностей: 643
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    на основе этого алгоритма надо подумать как рисовать в пределах знакоместа линию
    Ну и сколько тактов на точку получается?
    Учти, что нужно будет рисовать 64 линии (угол обзора 90 градусов потому-что, исходя из того что у нас на спеке окружность удобней иметь в 256 градусов, то 64 луча и обеспечивают четверть, т.е. 90 градусов если по-нормальному считать).
    Длина каждого луча - 32. Т.е. это как-бы "дальность" взгляда.
    Получаем 64*32*кол-во тактов на точку.
    Таким образом самое шустрое - это именно алгоритм из спектрумэксперта (ну тот что по ссылке), быстрей я например вообразить не могу, вот замедлить - эт пожалуйста, только это категорически не нужно, хотя придётся, ведь не рисовать линии будем а делать BIT n,(HL), проверка на предмет упирания луча в стенку. Если луч упёрся - выход (что-то вроде JP NZ), а если нет - рисуем (сканируем) дальше. Длину считать/контролить - тоже накладно, так что тупо дублируем прогу 32 раза, такие дела...
    Последний раз редактировалось Destr; 26.06.2016 в 11:34.

  11. #9
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 704
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Ну и сколько тактов на точку получается?
    Учти, что нужно будет рисовать 64 линии (угол обзора 90 градусов потому-что, исходя из того что у нас на спеке окружность удобней иметь в 256 градусов, то 64 луча и обеспечивают четверть, т.е. 90 градусов если по-нормальному считать).
    Длина каждого луча - 32. Т.е. это как-бы "дальность" взгляда.
    Получаем 64*32*кол-во тактов на точку.
    Таким образом самое шустрое - это именно алгоритм из спектрумэксперта (ну тот что по ссылке), быстрей я например вообразить не могу, вот замедлить - эт пожалуйста, только это категорически не нужно, хотя придётся, ведь не рисовать линии будем а делать BIT n,(HL), проверка на предмет упирания луча в стенку если. Если луч упёрся - выход (что-то вроде JP NZ), а если нет - рисуем (сканируем) дальше. Длину считать - тоже накладно, так что тупо дублируем прогу 32 раза, такие дела...
    так стоять
    тебе что именно нужно то?
    рисование линии или чтото другое?

    зачем 64 линии?
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  12. #10
    Activist
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    330
    Благодарностей: 290
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Смышленый мозг алона провел годы чтобы оптимизировать рейкастинг на zx, все разжевать и дать народу, но нет душа просит велосипеда. Чую потом будет как с нормализацией вектора, нормализовать за 500 тактов на потом умножить на 4 за 1000

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

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 03.11.2015, 18:22
  2. Ответов: 10
    Последнее: 06.07.2012, 13:02
  3. МЕТКИ:sjasm+Unreal
    от breeze в разделе Программирование
    Ответов: 10
    Последнее: 06.07.2011, 06:39
  4. Попиксельный скролл на Асме
    от helcril в разделе Для начинающих
    Ответов: 8
    Последнее: 17.12.2009, 09:31
  5. sjasm - первые глюки
    от breeze в разделе Программирование
    Ответов: 9
    Последнее: 24.03.2005, 10:51

Ваши права

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