User Tag List

Страница 14 из 45 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

  1. #131

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, а сколько тактов всего во фрейме?
    С уважением,
    Jerri / Red Triangle.

  2. #132

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,393
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    312*192=59904 такта/фрейм

  3. #133

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    312*192=59904 такта/фрейм
    обеъктов немного, скорости должно хватать.
    С уважением,
    Jerri / Red Triangle.

  4. #134

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,307
    Спасибо Благодарностей отдано 
    1,032
    Спасибо Благодарностей получено 
    818
    Поблагодарили
    489 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если ширма -- это просто черная рамка, то достаточно перерисовать столько строк, на сколько прокрутка. Правда в этом случае целесообразность ширмы под вопросом, зачем она? Но если там будет HUD с жизнями, уровнем, счетом итд, это будет не просто стереть две строки. Весь HUD придется перерисовывать целиком каждый раз.
    Больше игр нет

    Этот пользователь поблагодарил svofski за это полезное сообщение:

    metamorpho(22.07.2020)

  5. #135

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    В Binorium_7 есть небольшая шероховатость - при скролле вверх виден паразитный штрих справа вверху.
    Есть ещё одна мысля по поводу ширмы...
    Левый верхний угол мельтешит, из-за того, что не хватает времени стереть ширму и снова нарисовать до подхода луча к верхнему левому углу рабочей области экрана...
    А если сначала выставить ширму на новом месте, а потом удалять старую ширму... то мельтешить не должно.

    Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    metamorpho(22.07.2020)

  6. #136

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,393
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    целесообразность ширмы под вопросом, зачем она?
    Без ширмы можно "гладко" без видимого заворота при скролле вывести только 1 или 2 строки (смотря как выводить и сколько цветов 8 или 16). С ширмой намного удобнее и проще, но, конечно, цветов в 2 раза меньше.

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Левый верхний угол мельтешит, из-за того, что не хватает времени стереть ширму и снова нарисовать до подхода луча к верхнему левому углу рабочей области экрана
    Тоже так думаю, поэтому и предлагаю оптимизировать сдвиг ширмы. В принципе промежуток времени доступный для ширмы можно увеличить, если ориентироваться не на прерывание, а на таймер синхронизированный с прерываниями (в духе эксолона и некоторых других программ). Но скорее всего без таймера можно обойтись если максимально ускорить сдвиг ширмы.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

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

  8. #137

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зачем выводить объекты которые не двигаются каждый фрэйм?
    Если у вас фрэйм 50Гц... можно выводить чет-нечет- и не каких морганий не будет.

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

    Может я не правильно выразился... у вас есть список отображения (связанный с обратным ходом луча), не включайте туда даже активные объекты если не было приращений.
    Если по таймеру.. то можно разделить этот список на чет и не чет... в два раза меньше выводить.. на глаз не заметно.
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

    Этот пользователь поблагодарил S_V_B за это полезное сообщение:

    metamorpho(22.07.2020)

  9. #138

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    464
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    273
    Поблагодарили
    105 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Если ширма -- это просто черная рамка, то достаточно перерисовать столько строк, на сколько прокрутка. Правда в этом случае целесообразность ширмы под вопросом, зачем она? Но если там будет HUD с жизнями, уровнем, счетом итд, это будет не просто стереть две строки. Весь HUD придется перерисовывать целиком каждый раз.
    Вверху и внизу экрана есть по 8 строк, которые появились из-за выбора размера спрайта 24х24 в итоге экран 240х240.
    Ширма нужна для скрытия внизу рисования частей спрайтов при вертикальном скроллинге (они мельтешат).
    Вверху ширма просто закрывает торчащую треть спрайта, т.к. в этой трети не отображается анимация движущихся элементов.
    Сдвиг экрана при вертикальном скроллинге происходит так:
    внизу экрана рисуется строка 8 точек и происходит скроллинг на 8 точек
    итак три раза т.е. 8 х 3 =24 т.е. высота одного блока уровня

    На данный момент задумка такая:
    Жизни и уровни будут показываться только на статичном экране при потере жизни и при прохождении уровня.
    Счёта в игре не будет, т.к. цель игры собрать все монетки, а вот сколько осталось собрать монеток
    будет отражаться во время игры но пока точно не знаю как и где.

    Сейчас код ширмы такой:

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


    ; это в программе обработки прерываний
    ;=================== ширма вверху
    call shirm0 ; стираем ширму
    lhld ashirm
    lda scroll
    adi 1
    mov l,a
    shld ashirm
    call shirm1 ; рисуем ширму
    call shirmbon ; дополнительно ещё раз рисуем первые семь столбиков чтобы убрать глюки слева вверху
    ;======================================= ширма снизу
    call shirm0wwt ; стираем ширму
    lhld ashirm2 ;
    lda scroll
    adi 9
    mov l,a
    shld ashirm2 ;
    call shirm1wwt ; рисуем ширму
    ;=======================================

    ;================ Это подпрограммы

    ; стираем ширму
    shirm0: lxi h,0
    shld shirmx+1
    jmp shirm
    ;
    shirm1: lxi h,0FFFFh
    shld shirmx+1
    ; jmp shirm
    ;
    shirm: lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    ;
    lhld ashirm ; в HL помещаем адрес куда выводить на экран
    lxi d,0100h ; 256
    shirmx: lxi b,0
    mvi a,31
    ;
    shirmc: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b
    push b
    push b
    dad d ; HL=HL+DE(256) переход на следующий столбик 12
    dcr a ; 8
    jnz shirmc ; 12

    lhld s_sp ; возвращаем значение стека
    sphl
    ret

    ;===================================
    shirm0wwt: lxi h,0
    shld shirmxwwt+1
    jmp shirmwwt
    ;
    shirm1wwt: lxi h,0FFFFh
    shld shirmxwwt+1
    ;jmp shirmwwt
    ;
    shirmwwt: lxi h,0
    dad sp
    shld s_sp
    ;
    lhld ashirm2
    lxi d,0100h
    shirmxwwt: lxi b,0
    mvi a,31 ;32
    ;
    shirmcwwt: sphl
    push b
    push b
    push b
    push b
    dad d
    dcr a
    jnz shirmcwwt
    ;
    lhld s_sp
    sphl
    ;
    ret
    ;======================================================
    shirmbon:
    lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    ;
    lhld ashirm ; в HL помещаем адрес куда выводить на экран
    lxi d,0100h ; 256
    shirmxbon: lxi b,0ffffh
    mvi a,7
    ;
    shirmcbon: sphl ; перенос из HL в SP
    push b ; запись в экран
    push b
    push b
    push b
    dad d ; HL=HL+DE(256) переход на следующий столбик
    dcr a
    jnz shirmcbon

    lhld s_sp ; возвращаем значение стека
    sphl
    ret
    [свернуть]


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

    Цитата Сообщение от ivagor Посмотреть сообщение
    Есть возможность небольшого ускорения за счет перехода к змейке по плоскостям. Условно делим картинку на блоки 8x2 точки
    1. Вывод первых 8 точек как сейчас, только добавляем lxi b,8192
    2. Вывод вторых 8 точек в обратном направлении по плоскостям, добавляем lxi b,-8192
    lda+mov убираем. lxi - 12 тактов и 3 байта; lda+mov - 24 такта и 4 байта, т.е. выигрыш 12 тактов и 1 байт на каждых 8 точках.
    ivagor, никак не пойму как реализовать эту "змейку", можно небольшой пример кода....
    Последний раз редактировалось metamorpho; 22.07.2020 в 15:29.

  10. #139

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,393
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    небольшой пример кода

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

    ;вывод блока 8x2
    ;первые 8 точек в блоке 8x2
    lxi b,8192
    ldax d\ mov m,a\ inx d\ dad b
    ldax d\ mov m,a\ inx d\ dad b
    ldax d\ mov m,a\ inx d\ dcr l
    ;вторые 8 точек в блоке 8x2
    lxi b,-8192
    ldax d\ mov m,a\ inx d\ dad b
    ldax d\ mov m,a\ inx d\ dad b
    ldax d\ mov m,a\ inx d\ dcr l
    [свернуть]

    При необходимости можно немножко разменивать "одновременность" на скорость за счет (как уже писал) вывода нескольких байт в одной плоскости перед ее сменой. Это очевидно связано с тем, что inr/dcr быстрее dad.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho(22.07.2020)

  11. #140

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "Ё,,,,,,,,,,"...или мы не про компьютер говорим? Пусть меня все бьют палками....бейте дальше.. я помочь хотел..простите.
    Последний раз редактировалось S_V_B; 23.07.2020 в 08:46.
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

    Этот пользователь поблагодарил S_V_B за это полезное сообщение:

    metamorpho(22.07.2020)

Страница 14 из 45 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

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