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

User Tag List

Страница 6 из 46 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 456

Тема: Демо эффекты для Вектора

  1. #51
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    последний вариант выдает 257 линий/секунду
    Имеется ввиду 257 линий из последней точки в новую случайную точку координаты которой выбираются из диапазона 0-255?
    А 256 случайных линий для которых dx=255 или dy=255 (то есть которые касаются противоположных краёв экрана) данный код за сколько нарисует?

  2. #52
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Имеется ввиду 257 линий из последней точки в новую случайную точку координаты которой выбираются из диапазона 0-255?
    Да

    Цитата Сообщение от blackmirror Посмотреть сообщение
    А 256 случайных линий для которых dx=255 или dy=255 (то есть которые касаются противоположных краёв экрана) данный код за сколько нарисует?
    На основе рисования 65536 случайных линий
    1. Во всю ширину экрана (dx=255), x0=0, y0=0, x1=255, y1=случайный от 0 до 255: 91 линия/секунду
    2. Во всю высоту экрана (dy=255), x0=0, y0=0, y1=255, x1=случайный от 0 до 255: 100 линий/секунду
    Нетрудно заметить, что "крутой" цикл работает несколько быстрее "пологого".

  3. #53
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Парни, а DOOM то будет, ну или хотя бы driller в линиях? А то предыдущие эксперименты с 3-мерным лабиринтом так и не закончились игрой, а мы же ждем.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  4. #54
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Error404, с ходу я могу сделать вращающийся проволочный 3D-кубик, причем максимально тупо, без убирания невидимых ребер. Учитывая, что для вектора уже есть пара (и даже больше) примеров нормальной (с убиранием невидимых ребер) векторной 3D графики, нет желания делать то, что уже есть, только хуже. Или надо почитать, поразбираться, чтобы сделать нормально. Пока такого желания тоже нет.

    Насчет doomов и wolfов - счастливым обладателям z80 стоит обратить вниманием на результаты alone codera для спека. wolf48 реально портануть на орион с z80, было бы желание.
    Последний раз редактировалось ivagor; 21.12.2017 в 07:49. Причина: исправил грани на ребра

  5. #55
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    793
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я кстати не видел для Вектора синглфреймовых, ну или хотя бы даблфреймовых, вращающихся кубиков.
    Больше игр нет

  6. #56
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока оставлю это здесь, всякие dx-dy здесь считаются байтами, но на картинку это вроде не влияет.
    Написано в EmuZWin, поэтому про быстродействие на векторе ничего сказать не могу.
    Вроде как должно быть шустрее, но есть еще большой резерв для оптимизации.
    Код:
    defs    7&-$
    PixMask defb 128,64,32,16,8,4,2,1
    SetPix  macro
            xor a,(hl)
            ld (hl),a
            endm
    
    LineTo:;(hl - x1y1)
            ld de,$0000
            ld (LineTo+1),hl
    Line:;(hl - x1y1, de - x2y2)
            ld a,d
            sub a,h
            jp nc,LineGm
            neg
            ex de,hl        ;swap p1,p2
    LineGm: ld d,a  ;dx
            ld bc,PixMask
            ld a,$7
            and h
            add c
            ld c,a
            ld a,h
            srl a
            srl a
            srl a
            add a,$80
            ld h,a
            ld a,(bc)
            ld b,a
    LineDy: ld a,e
            sub a,l
            jp nc,LineXi
            neg
    LineXd: ld e,a  ;dy
            sub a,d
            jp nc,LineYd
            neg
            ld (LineXdd+1),a  ;dx-dy
            ld a,$2D;dec l
            ld (LineXmm),a
            jp LineXi1
    
    LineYd: ld (LineYdd+1),a  ;dy-dx
            ld a,$2D;dec l
            ld (LineYy),a
            ld (LineYyy),a
            jp LineYi1
    
    LineXi: ld e,a
            sub a,d
            jp nc,LineYi
            neg
            ld (LineXdd+1),a  ;dx-dy
            ld a,$2C;inc l
            ld (LineXmm),a
    LineXi1:ld c,d  ;cnt
            inc c
            ld a,d
            srl a
            ld d,a
            ld a,b
    LineXp:SetPix
            dec c
            ret z
            ld a,d
            sub a,e
            ld d,a
            jp nc,LineXpp
    LineXmm:dec l
            ld a,b
            rrc a
            ld b,a
            jp nc,LineXm
            inc h
    LineXm:SetPix
            dec c
            ret z
            ld a,d
    LineXdd:add a,$0
            ld d,a
            jp nc,LineXmm
    LineXpp:ld a,b
            rrc a
            ld b,a
            jp nc,LineXp
            inc h
            jp LineXp
    
    LineYi: ld (LineYdd+1),a  ;dy-dx
            ld a,$2C;inc l
            ld (LineYy),a
            ld (LineYyy),a
    LineYi1:ld c,e  ;cnt
            inc c
            ld a,e
            srl a
            ld e,a
            ld a,b
    LineYp:SetPix
            dec c
            ret z
    LineYy: inc l   ;++y
            ld a,e
            sub a,d
            ld e,a
            ld a,b
            jp nc,LineYp
            rrc a
            ld b,a
            jp nc,LineYm
            inc h   ;++x
    LineYm: SetPix
            dec c
            ret z
    LineYyy:inc l   ;++y
            ld a,e
    LineYdd:add a,$0
            ld e,a
            ld a,b
            jp c,LineYp
            rrc a
            ld b,a
            jp nc,LineYm
            inc h
            jp LineYm

  7. #57
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сначала я покритиковал, а потом все же проверил.
    blackmirror, респект, это просто супер - 313 линий/секунду и еще видны возможности для ускорения.

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

    Убрал про несимметричность - см. ниже.
    Последний раз редактировалось ivagor; 21.12.2017 в 12:51. Причина: после проверки заменил критику на восхваление

  8. #58
    Activist Аватар для PPC
    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    335
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Просто для истории. Мой вариант 1BPP линии от 2015 года. С тех пор ничего не трогал, просто рекомпильнул. Там в среднем 205 линий в секунду, если заполнять экран радиально от центра без смены цвета и 195 линий в секунду, если менять цвет каждой выводимой линии. Может просто будет интересен алгоритм. Сырки и демка прилагаются. Демку запускать из МикроДОСа. Когда отрисовка остановится, нажать [АР2] для 2й части.
    Вложения Вложения

  9. #59
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    blackmirror, отбой тревоги - при переводе z80->8080 я допустил механическую ошибку. После ее исправления рисует замечательно - симметрично и правильно.
    Еще раз респект, снимаю шляпу.
    Последний раз редактировалось ivagor; 21.12.2017 в 12:51. Причина: обнаружил у себя ошибку при переводе z80->8080

  10. #60
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного безумия: данный код не является полноценным кодом рисования линии, а только проверкой, что может дать один из вариантов разворота цикла. Цикл развёрнут на 8 точек, чтобы не вычислять маски, кроме того делается поочерёдно по 4 приращения ошибки, потом рисуются 4 точки, чтобы не перезагружать лишний раз аккумулятор. Для практического применения данный код пока мало пригоден: занимает 512 байт, не вычисляет нужные ему числа из координат, не обрабатывает хвосты, рисует по 8 точек и только в сторону увеличения Y, но позволяет оценить какие у нас есть резервы в плане рисования линий. В EmuZWin данный код рисует 256 линий из точки 0,0 до правого края экрана за 32 кадра, предыдущий код рисует 256 линий от левого края до правого за 72 кадра, сверху вниз за 64 кадра. То есть потенциально, если кому-то не жалко пары килобайт для рисования линии, раза в полтора линию точно сможет ускорить.
    Код:
    Test3:;(x1=0, y1=0, x2=255, y2=0..255)
            ld de,$FF00     ;dx-dy=255 dy=0
    Test3_0:
            ld hl,$8000     ;x1=0, y1=0
            ld bc,$7F20     ;err=dx/2=127 cnt=256/8=32
            push de
            ld a,b
            call LineX01
            pop de
            dec d           ;--(dx-dy)
            inc e           ;++dy
            jp nz,Test3_0
            ret
    
    SubPos  macro lab
            sub a,e ;err-=dy
            jp c, lab
            endm
    SubNeg  macro lab
            sub a,e ;err-=dy
            jp nc, lab
            endm
    AddNeg  macro lab
            add a,d ;err+=dx-dy
            jp c, lab
            endm
    AddPos  macro lab
            add a,d ;err+=dx-dy
            jp nc, lab
            endm
    Ymove   macro
            inc l
            endm
    SetPix1 macro m1
            ld a,m1
            xor a,(hl)
            ld (hl),a
            endm
    SetPix2 macro m1,m2
            SetPix1 m1
            Ymove
            SetPix1 m2
            endm
    SetPix3 macro m1,m2,m3
            SetPix2 m1,m2
            Ymove
            SetPix1 m3
            endm
    SetPix4 macro m1,m2,m3,m4
            SetPix2 m1,m2
            Ymove
            SetPix2 m3,m4
            endm
    DecRetZ macro
            inc h   ;inc x
            dec c   ;dec cnt
            ret z
            endm
    
    ;+0+1-4+2-3-5-7-6+
    ;+1-4+2-3-5-7-6+0+
    LineX00:SubPos LineX71
    LineX01:SubPos LineX72
    LineX02:SubPos LineX33
    LineX03:SubPos LineX14
    LineX04:ld b,a
            SetPix1 $F0
            ld a,b
    LineX15:SubPos LineX76
    LineX16:SubPos LineX77
    LineX17:SubPos LineX38
    LineX18:SubNeg LineX09
    LineX19:ld b,a
            SetPix2 $0E,$01
            ld a,b
            DecRetZ
    LineX40:AddNeg LineX01
    LineX41:Ymove
            AddNeg LineX02
    LineX42:AddPos LineX73
    LineX43:SubPos LineX54
    LineX44:ld b,a
            SetPix2 $80,$70
            ld a,b
    LineX25:SubPos LineX76
    LineX26:SubPos LineX77
    LineX27:SubNeg LineX08
    LineX28:AddPos LineX39
    LineX29:ld b,a
            SetPix2 $0C,$03
            ld a,b
            DecRetZ
    LineX30:SubPos LineX71
    LineX31:SubPos LineX72
    LineX32:SubNeg LineX03
    LineX33:AddNeg LineX24
    LineX34:ld b,a
            SetPix3 $C0,$20,$10
            ld a,b
    LineX55:AddNeg LineX06
    LineX56:Ymove
            AddNeg LineX07
    LineX57:AddPos LineX78
    LineX58:SubNeg LineX49
    LineX59:ld b,a
            SetPix3 $08,$06,$01
            ld a,b
            DecRetZ
    LineX70:AddNeg LineX01
    LineX71:Ymove
            AddNeg LineX02
    LineX72:AddNeg LineX43
    LineX73:AddNeg LineX64
    LineX74:ld b,a
            SetPix4 $80,$40,$20,$10
            ld a,b
    LineX65:AddNeg LineX06
    LineX66:Ymove
            AddNeg LineX07
    LineX67:AddNeg LineX48
    LineX68:AddPos LineX79
    LineX69:ld b,a
            SetPix3 $08,$04,$03
            ld a,b
            DecRetZ
    LineX10:SubPos LineX71
    LineX11:SubPos LineX72
    LineX12:SubPos LineX33
    LineX13:SubNeg LineX04
    LineX14:ld b,a
            SetPix2 $E0,$10
            ld a,b
    LineX45:AddNeg LineX06
    LineX46:Ymove
            AddNeg LineX07
    LineX47:AddPos LineX78
    LineX48:SubPos LineX59
    LineX49:ld b,a
            SetPix2 $08,$07
            ld a,b
            DecRetZ
    LineX20:SubPos LineX71
    LineX21:SubPos LineX72
    LineX22:SubNeg LineX03
    LineX23:AddPos LineX34
    LineX24:ld b,a
            SetPix2 $C0,$30
            ld a,b
    LineX35:SubPos LineX76
    LineX36:SubPos LineX77
    LineX37:SubNeg LineX08
    LineX38:AddNeg LineX29
    LineX39:ld b,a
            SetPix3 $0C,$02,$01
            ld a,b
            DecRetZ
    LineX50:AddNeg LineX01
    LineX51:Ymove
            AddNeg LineX02
    LineX52:AddPos LineX73
    LineX53:SubNeg LineX44
    LineX54:ld b,a
            SetPix3 $80,$60,$10
            ld a,b
    LineX75:AddNeg LineX06
    LineX76:Ymove
            AddNeg LineX07
    LineX77:AddNeg LineX48
    LineX78:AddNeg LineX69
    LineX79:ld b,a
            SetPix4 $08,$04,$02,$01
            ld a,b
            DecRetZ
    LineX60:AddNeg LineX01
    LineX61:Ymove
            AddNeg LineX02
    LineX62:AddNeg LineX43
    LineX63:AddPos LineX74
    LineX64:ld b,a
            SetPix3 $80,$40,$30
            ld a,b
    LineX05:SubPos LineX76
    LineX06:SubPos LineX77
    LineX07:SubPos LineX38
    LineX08:SubPos LineX19
    LineX09:ld b,a
            SetPix1 $0F
            ld a,b
            inc h
            dec c
            jp nz,LineX00
            ret

Страница 6 из 46 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  2. Демо эффекты для Корвета
    от esl в разделе Корвет
    Ответов: 31
    Последнее: 10.10.2016, 13:37
  3. Звуковые эффекты AY в играх
    от goblinish в разделе Игры
    Ответов: 31
    Последнее: 21.07.2015, 04:43
  4. Возьму в дар эффекты для частей мегадемо
    от AAA в разделе Программирование
    Ответов: 36
    Последнее: 25.11.2013, 14:45
  5. Эффекты в музыкальном редакторе ...
    от Robus в разделе Музыка
    Ответов: 0
    Последнее: 20.09.2006, 21:52

Ваши права

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