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

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Быстрая заливка треугольников...на синклер Бэйсике

  1. #11
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    конвертация пикселя xy в адрес - тоже.
    Есть же готовые процедуры?
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  2. #12
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    сложная матеша - камень преткновения
    На самом деле не такая уж и сложная. Всё можно реализовать Брезенхемом (это только сложения и вычитания)
    Конвертация XY в адрес вообще по табличке классической.
    Раз ты любитель бейсика - можно асм-функцию забацать и вызывать её через FN как это рекомендовал Инфорком.

  3. #13
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно, будет интересен EOR Fill

  4. #14
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    EOR не пробовал.
    Но вот что я уже забабахал на алгоритме, который предоставил Reobne:



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


    Если влом смотреть гифку
    https://i2.paste.pics/25474f6700abd2...05f5d442c4.png
    [свернуть]
    Последний раз редактировалось ALKO; 07.07.2023 в 01:22.

  5. Эти 5 пользователя(ей) поблагодарили ALKO за это полезное сообщение:

    Andrew771 (09.07.2023), Bedazzle (07.07.2023), nikon (07.07.2023), Reobne (07.07.2023), Xrust (08.07.2023)

  6. #15
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как ты так нарисовал? В каком-то векторном редакторе на ПиСи, потом экспортировал в треугольники и линии? Или всё на Спектруме? А программку на бейсике - откомпилировал?

    Треугольники треугольниками, но в основном в этой картинке многоугольники.

  7. #16
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    вот что я уже забабахал
    похожа на Ivy из SoulCalibur

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

  9. #17
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    похожа на Ivy из SoulCalibur
    Она и есть. Моя первая (и последняя) компьюторная любофб. Буратины из ПС1 не могли так впечатлить, как впечатлила в своё время дримка своими округлостями. Но тогда, гаде в 2001-ом, когда я впервые увидел сей божественный графин, я загорелся желанием таки засунуть полиговны в хз-спектрум (ибо дримки были разве что в игровых клубах, а в нашей нищей семейке лишь Горбатый на отечественных микросхемах).
    И вот наконец-то воплощаю в жызнь давнюю мечту.

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

    Цитата Сообщение от Reobne Посмотреть сообщение
    реугольники треугольниками, но в основном в этой картинке многоугольники.
    Состоящие из треугольников, как это сделано в любой современной игре.

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

    Цитата Сообщение от Reobne Посмотреть сообщение
    В каком-то векторном редакторе на ПиСи, потом экспортировал в треугольники и линии? Или всё на Спектруме?
    За пару дней набросал свой редактор на SDL (возможно, применю его в отношении сеги и DOS ega|cga, а также для вуды на OpenGL 1.0.)

  10. Эти 2 пользователя(ей) поблагодарили ALKO за это полезное сообщение:

    Andrew771 (09.07.2023), Reobne (08.07.2023)

  11. #18
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    За пару дней набросал свой редактор на SDL
    Ну вот ещё-бы вывод побыстрей.
    Вот процедура с произвольной заливкой (кажется из 3Dlame) - прикрутить сумеешь наверное.

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


    Код:
    	DEVICE ZXSPECTRUM48
    	DISPLAY "END=", END
    STARTFORSNA	EQU #8000
    	ORG STARTFORSNA
    	DI
    	LD SP,#8000
    	CALL DECRUN
    	LD HL,#2020,DE,#90E0,BC,#10a5:CALL TRIUGOL:JR $
    	
    TRIUGOL	;[ рисовалка треугольников с текстурой
    	; HL=вершина1, DE=вершина2, BC=вершина3
    	LD (AAA),HL,(BBB),DE,(CCC),BC
    	
    SORT	;[ сортировка пузырьковым методом
    	LD B,2
    SORT1   PUSH BC:LD B,2:LD IX,AAA
    SORT2   LD A,(IX+1):CP (IX+3):JP C,SORT3
    	LD H,(IX+3):LD L,(IX+2):LD C,(IX)
    	LD (IX+3),A:LD (IX+2),C:LD (IX+1),H:LD (IX),L
    SORT3   INC IX,IX:DJNZ SORT2
    	POP BC:DJNZ SORT1	;]
    	LD HL,(BBB),DE,(AAA),LY,D
    	LD A,H:CP D:JP Z,TRIU2
    	SUB D:LD C,A:EXA
    	CALL CALK
    	PUSH DE:EXX:POP DE:EXX
    	LD HL,(CCC),DE,(AAA)
    	LD A,H:SUB D:LD C,A
    	CALL CALK
    	PUSH DE:EXX:POP BC:EXX
    	LD HL,(AAA),B,L,C,0:LD (CRD1+1),BC,(CRD2+1),BC
    	CALL TRI3
    	EXA:LD B,A
    	CALL TRI2
    	LD HL,(CCC),DE,(BBB)
    	LD A,H:SUB D:LD C,A:EXA
    	CALL CALK
    	PUSH DE:EXX:POP DE:EXX
    TRIU1	EXA:OR A:RET Z:LD B,A:JP TRI2
    TRIU2	LD HL,(CCC),DE,(AAA)
    	LD A,H:SUB D:RET Z
    	LD C,A:EXA
    	CALL CALK
    	PUSH DE:EXX:POP DE:EXX
    	LD HL,(CCC),DE,(BBB)
    	LD A,H:SUB D:LD C,A
    	CALL CALK
    	PUSH DE:EXX:POP BC:EXX
    	LD HL,(AAA),DE,(BBB)
    	LD B,L,C,0,(CRD1+1),BC
    	LD B,E,(CRD2+1),BC
    	CALL TRI3
    	JP TRIU1
    LINEM	LD A,LY:AND 7:PUSH HL
    L_TEXTU	LD HL,(F_MASK),E,A,D,0:ADD HL,DE
    	LD A,(HL)
    	CPL	; CPL если нужна инверсия, NOP если не нужна
    	POP HL:LD HY,A
    	LD A,B:SUB C:JP NC,LINEM1
    	LD A,B:LD B,C:LD C,A
    LINEM1	LD A,C,D,#F8:AND D:RRA:RRA:RRA:ADD A,L:LD L,A
    	LD A,C:AND D:LD E,A
    	LD A,B:AND D:CP E
    	JP NZ,LINEM3
    	LD A,C:AND 7:ADD A,low MASKA_A:LD E,A
    	LD A,high MASKA_A:ADC A,0:LD D,A
    	LD A,(DE)
    	LD C,A
    	LD A,B:AND 7:ADD A,8:ADD A,low MASKA_A:LD E,A:LD A,D:ADC A,0:LD D,A
    	LD A,(DE):AND C:LD E,A:CPL:AND (HL)
    	LD B,A:LD A,E:AND HY:OR B:LD (HL),A
    	RET
    LINEM3	LD E,C
    	LD A,C:AND D:LD C,A
    	LD A,E:AND 7:ADD A,low MASKA_A:LD E,A	
    	LD A,high MASKA_A:ADC A,0:LD D,A
    	LD A,(DE):LD E,A:CPL:AND (HL):LD (HL),A
    	LD A,E:AND HY:OR (HL):LD (HL),A:INC L
    	LD A,B:AND 7:ADD A,8:ADD A,low MASKA_A:LD E,A
    	LD A,D:ADC A,0:LD D,A
    	LD A,(DE):LD E,A
    	LD A,B:AND #F8:SUB C:SUB 8:JP Z,LINEM4
    	RRA:RRA:RRA:LD B,A:LD A,HY
    LINEM5	LD (HL),A
    	INC L:DJNZ LINEM5
    LINEM4	LD A,E:CPL:AND (HL):LD B,A:LD A,E:AND HY:OR B:LD (HL),A	;**
    	
    	RET
    CALK	LD B,0
    	LD A,L:SUB E:LD E,B:JP NC,CALK1
    	NEG:LD D,A:CALL DIV
    	LD A,E:CPL:LD E,A
    	LD A,D:CPL:LD D,A
    	INC DE
    	RET
    CALK1	LD D,A:JP DIV
    TRI2	PUSH BC:EXX
    CRD1	LD HL,0:ADD HL,DE:LD (CRD1+1),HL
    	LD A,H:LD (TRI2_+1),A
    CRD2	LD HL,0:ADD HL,BC:LD (CRD2+1),HL
    	LD A,H:EXX
    TRI2_	LD C,0:LD B,A:LD L,(IX):LD H,(IX+1)
    	CALL LINEM
    	INC LY:INC IX,IX
    	POP BC:DJNZ TRI2
    	RET
    TRI3	LD L,H:LD H,0:LD BC,TSCRB:ADD HL,HL:ADD HL,BC:PUSH HL:POP IX
    	RET
    ;]
    DIV	;[ DE = DE/BC с округлением ответа
    	PUSH BC
    	LD A,B:CPL:LD B,A
    	LD A,C:CPL:LD C,A
    	INC BC
    	LD HL,0
    	LD A,E
    	ADD A,A
    	RL D
    	DUP 16
    		ADC HL,HL
    		ADD HL,BC
    		JP C,$+5
    		SBC HL,BC
    		RLA
    		RL D
    	EDUP
    	LD E,A
    	POP BC
    	SRL B
    	RR C
    	OR A:SBC HL,BC:RET C
    	INC DE
    	RET
    ;]
    
    DECRUN	;[ делаем табличку адресов в экране
    	LD DE,#4000:LD HL,TSCRB:LD B,#c0
    DECR4   LD (HL),E:INC HL:LD (HL),D:INC HL:CALL DW_DE
    DECR5   DJNZ DECR4
    DW_DE   INC D:LD A,D:AND 7:RET NZ
    	LD A,E:ADD A,32:LD E,A:RET C
    	LD A,D:SUB 8:LD D,A
    	RET
    ;]
    
    ;[
    AAA	DW 0
    BBB	DW 0
    CCC	DW 0
    F_MASK	DW #3C00+8*"D"	; адрес знакоместа чем заливать
    TSCRB	DS 384
    ;]
    MASKA_A	DB #FF,#7F,#3F,#1F,#0F,#07,#03,#01,#80,#C0,#E0,#F0,#F8,#FC,#FE,#FF
    END
    	SAVESNA "basic-poly_text.sna",STARTFORSNA
    	LABELSLIST "user.l"
    [свернуть]

    Формат SJASM, но это не принципиально.
    Один раз вызвать декрюнчер, потом юзать.
    Для примера заливается литерой "D" со включеной инверсией. Можно регулировать.
    Размер вместе с табличкой - #044F (1103 байта)
    Последний раз редактировалось Destr; 08.07.2023 в 13:28.

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Мега быстрая загрузка с кассеты???
    от ALEXEY.GORDEEV в разделе Софт
    Ответов: 48
    Последнее: 12.05.2021, 01:48
  2. memcpy|быстрая пересылка данных
    от NovaStorm в разделе Программирование
    Ответов: 9
    Последнее: 02.11.2013, 19:52
  3. Быстрая и медленная память 128к
    от Hacker VBI в разделе Программирование
    Ответов: 21
    Последнее: 27.04.2013, 16:43
  4. Быстрая тригонометрия...
    от ALKO в разделе Программирование
    Ответов: 8
    Последнее: 25.01.2011, 00:29
  5. Уродцы на Бэйсике
    от Jukov в разделе Игры
    Ответов: 24
    Последнее: 11.05.2006, 16:35

Ваши права

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