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

User Tag List

Страница 5 из 11 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 106

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

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

    По умолчанию

    Автора Unwinderа надо трясти, не ошибся ли он, таблица начинается с адреса 32768-4096. Или Vitaminа. А то теперь самому ковырять весь код - проще заново написать.

    Блин, ну почему сразу не дают работоспособные процедуры без танцев с бубном. То же самое - часто невозможно пользоваться процедурами из прессы, т.к. там или ошибки, или многие сокращения.

  2. #42
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А какие симптомы вообще? Сбрасывается прога, или рисует неверно?

    У меня есть две другие процедуры, но явно не быстрые, одна Zombusters Crew, вторая - BeerManZ (использовалась в Bizarre Constructions). Если нужны, поищу и выложу.

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    А какие симптомы вообще? Сбрасывается прога, или рисует неверно?
    Сначала заполняется таблица, но не на 4к, а на 1917 байт. Потом ничего на экране не появляется, выход в Бейсик корректный.

    Цитата Сообщение от denpopov Посмотреть сообщение
    У меня есть две другие процедуры, но явно не быстрые, одна Zombusters Crew, вторая - BeerManZ (использовалась в Bizarre Constructions). Если нужны, поищу и выложу.
    я вообще бы хотел процедуру рисования линии с минимальным объемом используемой памяти, но не очень медленную. Даже 4к расточительно. Для игр планирую.

    ---------- Post added at 09:32 ---------- Previous post was at 09:31 ----------

    А Брезенхема кто-нить реализовал без таблиц?

  4. #44
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Лови, 146 байт, только точка рисуется как атрибутики


    Код:
    	device zxspectrum128
            ORG #6000
    begin
    ; * parameters : 
    ;    - DE : coordinates of the 1st point
    ;    - HL : coordinates of the 2nd point
     out(#fe),a
     ld de,0
     ld hl,#1f17
     call Line
    
    ;убрать остатки кода до Line
     ld a,b,b,c,c,a
     push bc
     exx
     pop de
     ld l,d,h,0
     add hl,hl
     add hl,hl
     add hl,hl
     add hl,hl
     add hl,hl
     ld d,#58
     add hl,de
     ld(hl),16;plot with color
     exx
     ;ld a,16,(#5800+#17*#20+#1f),a
    stu: jr stu
    
    Line:
            ld      A,D
            sub     H
            jr      NC,dxpositive    ;delta_x > 0
    DXNegative:
            neg
    dxpositive:
            ld      B,A              ;B <- |delta_x|
            ld      A,E
            sub     L
            jr      NC,dypositive    ;delta_y > 0
    DYNegative:
            neg
    dypositive:
            sub     B               ;|delta_y|
            push    AF
            jr      C,DeltaX        ;|delta_x| > |delta_y|
    DeltaY:
            ld      A,H             ;if |delta_x| < |delta_y| then
            ld      H,L             ;then values x and y are swapped
            ld      L,A             ;so the loop will always be performed on the
            ld      A,D             ;x value. A flag must be set to 
            ld      D,E             ;remind that data must be drawn (y,x) 
            ld      E,A             ;instead of (x,y)
    DeltaX:
            ld      A,D
            sub     H
            jr      NC,TestDY        ;x1 < x2 
    TestDX:
            ex	DE,HL
    TestDY:
            ld      A,E
            sub     L
            ld      A,$01
            jr      NC,StoreA
            neg                     ;y1 > y2 : in case2 the 'y' variable
    StoreA:
            ld      (Way+1),A;ld      (Way),A
    InitLine:       
            ld      B,H
            ld      C,L
            ld      A,E
            sub     L
            jr      NC,EndInit
            ld      A,L
            ld      L,E
            ld      E,A
    EndInit:
            ld      A,E      
            sub     L
            rla
            ld      L,A             ;value to add in case1 (d < 0)
            add     A,H
            sub     D
            ld      E,A             ;'d' variable is initialised
            add     A,H
            sub     D
            ld      H,A             ;value to add in case2 (d >= 0)
    Loop:
            ld      A,B
            sub     D
            jr      NC,EndLine       ;the line is completely drawn.
            pop     AF
            bit     7,A
            push    AF
    
            push    AF
            push    BC
            jr      Z,DrawPoint
            ld      A,B
            ld      B,C
            ld      C,A
    DrawPoint:
    ;        CALL PointOn
     push bc
     exx
     pop de
     ld l,d,h,0
     add hl,hl
     add hl,hl
     add hl,hl
     add hl,hl
     add hl,hl
     ld d,#58
     add hl,de
     ld(hl),8;plot with color
     exx
    
            pop     BC
            pop     AF
    TestD:
            bit     7,E
            jr      NZ,Case1
    Case2:                          ;d >= 0 
            ld      A,E
            add     A,H
            ld      E,A
    Way:
            ld      A,0;ld      A,(Way)
            add     A,C
            ld      C,A
            jr      EndLoop
    Case1:                          ;d < 0
            ld      A,E
            add     A,L
            ld      E,A
    EndLoop:
            inc     B
            jr      Loop
    EndLine:
            pop     AF              ;MUST NOT BE REMOVED
            ret
    ;PointOn:
    ; ret
    
    end
    	display /d,end-begin
    	savesna "brez.sna",begin


    ---------- Post added at 10:49 ---------- Previous post was at 10:45 ----------

    И по vitamin.txt:
    убери из MAK_PLO 16384+32768 +32768, потому что рисование происходит в страничку

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

    По умолчанию

    Спасиб огромное, denpopov, и твоя, и Витаминная заработали! Пошел думать дальше над новым супер-пупер проектом

    ---------- Post added at 10:42 ---------- Previous post was at 10:01 ----------

    Йех, блин, запустил процедурку для 255 линий, рисовала пару-тройку секунд. Векторную графику в игре не замутишь.

  6. #46
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Векторную графику в игре не замутишь.
    смотря то, что ты хочешь. Вот еще от BeermanZ, слегка модифицированная:
    Код:
    PIX_TAB EQU #7C00
    	device zxspectrum128
    
            ORG #6000
    begin
            CALL INIT
    ;HL=XY,BC=YX
       ld BC,#bfff;bf
    MAIN    EI:HALT
            LD A,0:OUT (#FE),A
            push bc
            LD HL,#0000
            CALL DRAW
            LD A,2:OUT (#FE),A
            pop bc:dec c:jr z, wkey
            jp MAIN
    wkey
            LD A,#7F:IN A,(#FE)
            RRA:JR C,wkey;MAIN
            EXX:LD HL,#2758:EXX
            RET
    
    ;-------------------------------
    DRAW    LD (TEK_POI+1),HL,E,H
            LD H,high PIX_TAB,A,(HL);[
            INC H:LD D,(HL):INC H
            LD L,E:OR (HL):LD E,A
            INC H:LD A,(DE):OR (HL)
            LD (DE),A
    
            LD HL,(TEK_POI+1),DE,#FFFF
            LD A,H:SUB C:JR NC,$+6
            NEG:LD E,1,C,A
            LD A,L:SUB B:JR NC,$+6
            NEG:LD D,1,B,A
            LD A,C:CP B:JR NC,L24C4
            LD L,C:PUSH DE:XOR A
            LD E,A:JR L24CB
    L24C4   OR C:RET Z:LD L,B,B,C
            PUSH DE:LD D,0
    L24CB   LD H,B,A,B
            RRA
    L24CE   ADD A,L:JR C,L24D4
            CP H:JR C,L24DB
    L24D4   SUB H:LD C,A
            EXX:POP BC:PUSH BC
            JR TEK_POI
    L24DB   LD C,A:PUSH DE
            EXX:POP BC
    TEK_POI LD HL,0,A,C
            ADD A,H
            LD H,A,A,B
            ADD A,L:LD L,A
            LD (TEK_POI+1),HL
    
            LD E,H,H,high PIX_TAB;[
            LD A,(HL):INC H
            LD D,(HL):INC H
            LD L,E:OR (HL)
            LD E,A:INC H
            LD A,(DE):OR (HL):LD (DE),A
            EXX:LD A,C:DJNZ L24CE
            POP DE
    RETURN  RET
    ;ANY RET
    
    INIT    LD DE,#4000,L,E,BC,#8000;#C000
    ILP1    LD H,high PIX_TAB,(HL),E:INC H;[
            LD (HL),D:INC H
            LD (HL),C:INC H
            LD (HL),B
          CALL DOWN_DE;,DOWN_DE
          RRC B;,B
            LD A,C:ADC A,0:LD C,A
            INC L:JR NZ,ILP1
    ;        LD HL,PIX_TAB+96;256+96
    ;ILP2    LD (HL),0:INC L:JR NZ,ILP2
            RET
    ;-------------------------------
    DOWN_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
    end
    	display /d,end-begin
    	savesna "DRAW02.sna",begin

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

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    смотря то, что ты хочешь
    Допустим, на экране одновременно 50 непрозрачных объемных тел из граней (без закрашивания), расположенные на разных расстояниях, которые могут перекрывать друг друга

  9. #48
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    на экране одновременно 50 непрозрачных объемных тел из граней (без закрашивания), расположенные на разных расстояниях, которые могут перекрывать друг друга
    Если это игра, то затея очень крутая. либо готовые спрайты хранить и выводить, либо я не знаю тогда..

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Если это игра, то затея очень крутая.
    Вот типа того, игра Sky Ranger: http://www.worldofspectrum.org/infos...cgi?id=0004557
    Там много параллелепипедов из линий (проволочная графика), и всё работает приемлемо по скорости.

  11. #50
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Там много параллелепипедов из линий (проволочная графика)
    Вертикальные линии можно по-другому строить.

Страница 5 из 11 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Ваши права

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