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

User Tag List

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

Тема: Line(x1,y1,x2,y2)

  1. #1
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Line(x1,y1,x2,y2)

    Это правда что в Spectrum Expert (1, 2) была самая быстрая процедура рисования линии?

    Если у кого-нибудь есть быстрее, то поделитесь кодом плиз.
    (естественно, что установка точки включается в рисование линии)
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

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

  3. #2
    Veteran Аватар для drbars
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,531
    Благодарностей: 656
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    Это правда что в Spectrum Expert (1, 2) была самая быстрая процедура рисования линии?

    Если у кого-нибудь есть быстрее, то поделитесь кодом плиз.
    (естественно, что установка точки включается в рисование линии)
    Самая быстрая процедура линии написана Alex Raider'ом. Исходники лежат в архиве ZX Open Source http://opensourcezx.untergrund.net/e..._misc_src.html
    ZX Spectrum +2 / DataGear / DivIDE 2k14
    ZX Evolution rev.C
    ZX Spectrum NEXT

  4. #3
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати вот, линии Alex Raider'a и которая в Spectrum Expert'e по скорости и алгоритму работа почти одинаковые (около 9 линий во фрейм), однако та которая в Expert-e меньше размером.
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  5. #4
    Activist
    Регистрация
    23.01.2005
    Сообщений
    234
    Благодарностей: 15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #5
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну, учитывая что я час назад сделал две тестовые проги и посчитал их размер (размер самих процедур отрисовки и генерации табличек + размер данных которые эти генерилки генерят) + сделал приблизительный замер скорости (по бордюру), то я уверен в том что говорю.

    могу отправить SCL файл с этим всем добром
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  7. #6
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ELPH - ну не такая уж и огромная...

  8. #7
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    414
    Благодарностей: 81
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    Кстати вот, линии Alex Raider'a и которая в Spectrum Expert'e по скорости и алгоритму работа почти одинаковые (около 9 линий во фрейм), однако та которая в Expert-e меньше размером.
    вопрос по теме, каких линий?

    У нас КИМ написал процедуру, которая, если мне память не изменяет, рисовала 7,5 диагоналей спектрума во фрейм...
    Himik's ZxZ/PoS-WT
    Russia. Planet 'Earth'. Sun system.
    Creator of Turbo-Sound port at 1995 year.

  9. #8
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нашел процедуру авторства Unwinder. Юзаю сам. Весьма быстро и хорошо. Требует 4кб памяти под таблицу и вызов MAK_PLO перед рисованием (заполнение таблицы)

    Код:
    ;-----------------------------------------
    LINE_R  LD (STACK+1),SP ;ПРОЦЕДУРА РИСОВАНИЯ ЛИНИИ
            DI 
            LD A,L          ;В HL И DE НАХОДЯТСЯ КООРДИНАТЫ ТОЧЕК
            CP E
            JR NC,NO_EXCH
            EX DE,HL
            LD A,L
    NO_EXCH: SUB E
            LD C,A
            LD A,H
            SUB D
            JR C,DOWN_UP
    UP_DOWN: LD B,A          ;РИСУЕМ ЛИНИЮ СВЕРХУ ВНИЗ
            LD H,58          ;LIN_ARR/512+2
            LD L,D
            JP MISS
    ;-----------------------------------------
    DOWN_UP: NEG             ;РИСУЕМ ЛИНИЮ СНИЗУ ВВЕРХ
            LD B,A
            LD H,59          ;LIN_ARR/512+3
            LD A,191
            SUB D
            LD L,A
    MISS:   ADD HL,HL
            LD SP,HL
            LD H,'LIN_ARR
            LD L,D
            LD A,(HL)
            INC H
            LD D,(HL)
            INC H
            LD L,E
            ADD A,(HL)
            LD E,A
            INC H
            LD L,(HL)
            EX DE,HL
            LD A,B
            CP C
            JR NC,VERTIC
    HORIZON: DEFB 221        ;ГОРИЗОНТАЛЬНАЯ ЛИНИЯ (DX>DY)
            LD L,A
            DEFB 221
            LD H,C
            LD B,C
            LD C,E
            LD A,B
            SRL A
            JR Z,END_LIN
            EX AF,AF'
    HORIZ0: LD A,(HL)
            OR C
            LD (HL),A
            EX AF,AF'
            DEFB 221
            SUB L
            JR NC,HORIZ2
            DEFB 221
            ADD A,H
            POP DE
            ADD HL,DE
    HORIZ2: EX AF,AF'
            RRC C
            JR NC,HORIZ1
            INC L
    HORIZ1: DJNZ HORIZ0
    END_LIN: LD A,(HL)
            OR C
            LD (HL),A
    STACK:  LD SP,0
            EI 
            RET 
    ;-----------------------------------------
    VERTIC: DEFB 221        ;ВЕРТИКАЛЬНАЯ ЛИНИЯ (DY>DX)
            LD H,A
            DEFB 221
            LD L,C
            LD C,E
            SRL A
            JR Z,END_LIN
            EX AF,AF'
    VERT0:  LD A,(HL)
            OR C
            LD (HL),A
            EX AF,AF'
            DEFB 221
            SUB L
            JR NC,VERT1
            DEFB 221
            ADD A,H
            RRC C
            JR NC,VERT1
            INC L
    VERT1:  EX AF,AF'
            POP DE
            ADD HL,DE
            DJNZ VERT0
            JP END_LIN
    ;-----------------------------------------
    DEFB    " * MEGA FAST LINE V1.0 BY UNWINDER'95
    ;-----------------------------------------
    NEXT_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 
    ;-----------------------------------------
    MAK_PLO: LD HL,LIN_ARR
            LD DE,16384+32768
            LD B,192
    MAK_PL0: LD (HL),E
            INC H
            LD (HL),D
            DEC H
            INC L
            CALL NEXT_DE
            DJNZ MAK_PL0
            LD HL,LIN_ARR+1023
            LD A,1
    MAK_PL1: LD (HL),A
            RLCA 
            DEC L
            DJNZ MAK_PL1
            DEC H
            LD A,31
    MAK_PL2: LD B,8
    MAK_PL3: LD (HL),A
            DEC L
            DJNZ MAK_PL3
            DEC A
            JP P,MAK_PL2
    MAK_LIN: LD IX,LIN_ARR+1024
            LD HL,16384+32768
            LD B,191
    MAK_LI0: LD E,L
            LD D,H
            EX DE,HL
            CALL NEXT_DE
            EX DE,HL
            AND A
            SBC HL,DE
            LD (IX),L
            INC IX
            LD (IX),H
            INC IX
            ADD HL,DE
            DJNZ MAK_LI0
            LD IX,LIN_ARR+1024+512
            LD HL,22528-31+32768
            LD B,191
    MAK_LI1: LD E,L
            LD D,H
            CALL PREV_HL
            AND A
            SBC HL,DE
            LD (IX),L
            INC IX
            LD (IX),H
            INC IX
            ADD HL,DE
            DJNZ MAK_LI1
            RET 
    ;-----------------------------------------
    PREV_HL: DEC H
            LD A,H
            AND 7
            CP 7
            RET NZ
            LD A,L
            SUB 32
            LD L,A
            RET C
            LD A,H
            ADD A,8
            LD H,A
            RET 
    ;-----------------------------------------
    LIN_ARR EQU 32768-4096

  10. Этот пользователь поблагодарил Vitamin за это полезное сообщение:
    moroz1999 (27.05.2012)

  11. #9
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    himik, рандомных в начале фрейма рандомайзер инитится одинаковым числом, чтоб линии не прыгали.

    Vitamin, сенькс, вставлю в тестилку и посмотрю по скорости.
    [target] [zemu] [js8x] [pouet 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  12. #10
    Activist Аватар для himik
    Регистрация
    19.04.2005
    Адрес
    Izhevsk
    Сообщений
    414
    Благодарностей: 81
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    himik, рандомных в начале фрейма рандомайзер инитится одинаковым числом, чтоб линии не прыгали.
    дык это на мой взгляд не корректный тест... В диагоналях то точнее будет, ведь она:
    1. самая длинная линия
    2. самая сложная в рисовании

    Добавлено через 3 минуты
    Цитата Сообщение от Vitamin Посмотреть сообщение
    Нашел процедуру авторства Unwinder. Юзаю сам. Весьма быстро и хорошо. Требует 4кб памяти под таблицу и вызов MAK_PLO перед рисованием (заполнение таблицы)
    ой сдается мне, что по нынешним меркам это мега тормозная процедура...
    "весьма быстро" относительно чего?

    Давайте приводить тесты в у.е. т.е. в диагоналях. Сколько диагоналей за фрейм успевает нарисовать.
    Также можно приводить пример вертикали, горизонтали и т.п.
    Последний раз редактировалось himik; 20.08.2007 в 08:09. Причина: Добавлено сообщение
    Himik's ZxZ/PoS-WT
    Russia. Planet 'Earth'. Sun system.
    Creator of Turbo-Sound port at 1995 year.

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

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

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

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

Ваши права

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