User Tag List

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

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,908
    Спасибо Благодарностей отдано 
    350
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    246 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  3. #2

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

    По умолчанию

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

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

    metamorpho(22.07.2020)

  4. #3

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    467
    Спасибо Благодарностей отдано 
    797
    Спасибо Благодарностей получено 
    278
    Поблагодарили
    106 сообщений
    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.

  5. #4

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,396
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,368
    Поблагодарили
    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)

  6. #5

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,411
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    139 сообщений
    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)

  7. #6

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,411
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    139 сообщений
    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)

  8. #7

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

    По умолчанию

    Исправил появление главного героя "из стены".
    Исправил глюк с палитрой, который был в предыдущей версии.
    Переписал рисование ширмы с учётом некоторых предложенных здесь идей.
    Ширма рисуется быстрее и вроде без глюков.
    Ниже (rom) для тестов

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

    Вот новый код рисования ширмы в программе обработки прерываний:

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


    lda kub_napr ; узнаём направление главного героя 3-вверх 4-вниз
    ;если вертикального движения нет то ширму не рисуем и не стираем

    cpi 3 ; движение вверх скрол вниз
    jnz ruft12
    ;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
    ; стираем ширму сверху
    lxi b,0
    lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    lda scroll
    sui 7
    mov l,a
    mvi h,0e0h
    mvi a,32
    shirmczz: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmczz ; 12

    ; рисуем снизу
    lxi b,0FFFFh
    lda scroll
    adi 9
    mov l,a
    mvi h,0e1h
    mvi a,31
    shirmc2r: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc2r ; 12

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


    ruft12:
    cpi 4 ; движение вниз скрол вверх затриаем снизу строку 08 + сверху рисуем 8 строк
    jnz ruft14 ;иначе ничего не делаем
    ;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
    ; стираем ширму снизу
    lxi b,0
    lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    lda scroll
    adi 13
    mov l,a
    mvi h,0e0h
    mvi a,32
    shirmc44: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc44 ; 12

    ; рисуем сверху
    lxi b,0FFFFh
    lda scroll
    adi 1
    mov l,a
    mvi h,0e1h
    mvi a,31
    shirmc2r44: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc2r44 ; 12

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

    ruft14:
    [свернуть]
    Вложения Вложения
    Последний раз редактировалось metamorpho; 23.07.2020 в 11:36.

  9. #8

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,908
    Спасибо Благодарностей отдано 
    350
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    246 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    metamorpho,почему не используешь модифицирующийся код?

    Код:
    shld s_sp ; сохраняем значение стека
    
    ld sp,$
    s_sp equ-2
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(22.07.2020)

  10. #9

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

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    metamorpho,почему не используешь модифицирующийся код?
    jerri, я пока не знаю что это такое и в чём преимущество этого.
    Я ведь только пару-тройку недель вникаю в ассемблер.
    Насколько я понимаю ld это же команда не из ассемблера для КР580ВМ80А ?

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

  11. #10

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,908
    Спасибо Благодарностей отдано 
    350
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    246 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    jerri, я пока не знаю что это такое и в чём преимущество этого.
    Я ведь только пару-тройку недель вникаю в ассемблер.
    Насколько я понимаю ld это же команда не из ассемблера для КР580ВМ80А ?
    Да это ассемблер Z80
    это команда инициализации стека

    для i80

    LXI sp,$
    и ставишь метку переменный на данные вносимые в SP

    грубо говоря

    #8003 lxi hl,#0000
    #8006 lhld #800a
    #8009 lxi sp,#0000

    просто я не очень люблю систему команд i80 - она не очень наглядная.

    грубо говоря переменная s_sp используется в одном месте и хранит определенное значение - стек при отрисовке ширмы
    экономия 5 байтов
    Последний раз редактировалось jerri; 22.07.2020 в 21:19.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(22.07.2020)

Страница 14 из 39 ПерваяПервая ... 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

Ваши права

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