User Tag List

Страница 9 из 45 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 443

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

  1. #81

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

    По умолчанию

    metamorpho, если не секрет, покажи код подпрограммы прерывания.
    Что у тебя там обрабатывается?
    В игре например палитру можно программировать не в прерывании а один раз при старте программы отдельной процедурой, ну и если есть необходимость специально вызывать процедуру программирования палитры.

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

    metamorpho(17.07.2020)

  2. #82

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

    По умолчанию

    Конечно не секрет Этот код практически без изменений я взял у Лебедева

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


    INIT: PUSH H
    PUSH B
    PUSH D
    PUSH PSW
    LDA WRPAL ; ПРОВЕРКА РАЗРЕШЕНИЯ ЗАПИСИ ПАЛИТРЫ В
    ORA A ; ОЗУ ЦВЕТОГЕНЕРАТОРА.
    JZ NWRPAL
    MVI A,88H
    OUT 00H
    LXI H,COLR15 ; ЗАПИСЬ ПАЛИТРЫ.
    LXI D,100FH
    INIT1: MOV A,E
    OUT 02
    MOV A,M
    OUT 0CH
    OUT 0CH
    OUT 0CH
    OUT 0CH
    OUT 0CH
    DCX H
    OUT 0CH
    DCR E
    OUT 0CH
    DCR D
    OUT 0CH
    JNZ INIT1
    NWRPAL: MVI A,8AH ; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ
    OUT 00 ; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ).
    XRA A
    OUT 03
    IN 2
    STA STATUS
    MVI A,0FEH ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    OUT 03
    IN 02
    STA KEYKOD
    MVI A,88H
    OUT 00
    LDA BORDER ; УСТАНОВКА ЦВЕТА БОРДЮРА.
    ANI 0FH
    OUT 02
    LDA SCROLL ; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА.
    OUT 03
    ;
    ; ОБРАБОТКА ВЫСОТЫ И ДЛИТЕЛЬНОСТИ ЗВУКА ПО НОМЕРУ ПАРАМЕТРА ЗВУКА.
    ;
    LDA TON ; ВЗЯТЬ КОД ИЗ БУФЕРА НОМЕРОВ ПАРАМЕТРОВ ЗВУКА.
    ORA A ; НОМЕР ПАРАМЕТРА УСТАНОВЛЕН?
    JZ TSSOUN ; ЕСЛИ НЕТ - ПЕРЕЙТИ НА ПРОВЕРКУ ОТРАБОТКИ ДЛИТ.ЗВУКА.
    DCR A ; УМЕНШИТЬ НОМЕР НА 1, Т.К. МАССИВ НАЧИН. С НУЛЕВОГО.
    ADD A ; УМНОЖИТЬ НОМЕР ПАРАМЕТРОВ ЗВУКА НА 4, ТАК КАК
    ADD A ; ПАРАМЕТРЫ ОДНОГО ЗВУКА ЗАНИМАЮТ 4 БАЙТА.
    MOV E,A ; ПОДГОТОВИТЬ В "DE" СМЕЩЕНИЕ ОТ НАЧАЛА ПАРАМЕТРОВ.
    MVI D,0
    LXI H,BAZTON ; УСТАНОВИТЬ В "HL" АДРЕС НАЧАЛА ПАРАМЕТРОВ ЗВУКА.
    DAD D ; СЛОЖЕНИЕМ С "DE" ПОЛУЧИТЬ В "HL" АДРЕС НУЖНЫХ ПАРАМ.
    MVI A,0B6H ; УСТАНОВИТЬ РЕЖИМ 3 ТАЙМЕРА ДЛЯ КАНАЛА 2, ЗАПИСЬ КОЭФ-
    OUT 08 ; ФИЦИЕНТА ДЕЛЕНИЯ В ДВА БАЙТА - СНАЧАЛА МЛ. ПОТОМ СТ.
    MOV A,M ; ВЗЯТЬ МЛАДШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H ; ПЕРЕДВИНУТЬ УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ БАЙТ ПАРАМЕТРОВ.
    MOV A,M ; ВЗЯТЬ СТАРШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H
    MOV E,M ; ВЗЯТЬ В ПАРУ "DE" ДЛИТЕЛЬНОСТЬ ЗВУЧАНИЯ.
    INX H
    MOV D,M
    XCHG ; И ЗАПИСАТЬ ЕЕ В
    SHLD STSOUN ; СЧЕТЧИК ВРЕМЕНИ ЗВУЧАНИЯ.
    XRA A ; ОБНУЛИТЬ БУФЕР НОМЕРОВ ПАРАМЕТРОВ ЗВУКА (Т.Е. ПАРА-
    STA TON ; МЕТРЫ ВЗЯТЫ И ИХ НЕ НУЖНО СНОВА ОПРЕДЕЛЯТЬ).
    JMP EXINIT ; ВЫЙТИ ИЗ П/П ОБРАБОТКИ СИСТЕМНОГО ПРЕРЫВАНИЯ.
    ;
    TSSOUN: LHLD STSOUN ; ВЗЯТЬ СЧЕТЧИК ВРЕМЕНИ ЗВУЧАНИЯ И ПРОВЕРИТЬ,
    MOV A,H ; РАВЕН ЛИ ОН НУЛЮ (ВРЕМЯ ЗВУЧАНИЯ КОНЧИЛОСЬ)?
    ORA L
    JZ OFSOUN ; ЕСЛИ КОНЧИЛОСЬ - ВЫКЛЮЧИТЬ ЗВУК!
    DCX H ; УМЕНЬШИТЬ СЧЕТЧИК.
    SHLD STSOUN
    JMP EXINIT ; И ВЫЙТИ ИЗ П/П ПРЕРЫВАНИЯ.
    OFSOUN: MVI A,0B6H ; ВЫКЛЮЧИТЬ КАНАЛ 2 ТАЙМЕРА ПУТЕМ ЗАПИСИ В РЕГ.
    OUT 08 ; РЕЖИМА УПР. СЛОВА ДЛЯ ЭТОГО КАНАЛА БЕЗ ПАРАМ.
    EXINIT: XRA A
    STA WRPAL
    POP PSW
    POP D
    POP B
    POP H
    EI
    RET
    [свернуть]
    Последний раз редактировалось metamorpho; 17.07.2020 в 15:43.

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

    KTSerg(18.07.2020)

  3. #83

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Конечно не секрет Этот код практически без изменений я взял у Лебедева
    ...
    metamorpho, запусти вот это.
    К твоему прерыванию добавил ширму и измерение цвета бордюра по методике svofski, для визуализации момента, когда заканчивается обработка прерывания.
    когда цвет бордюра красный - выполняется прерывание, когда прерывание заканчивается - цвет меняется на зелёный.
    Пробовал ширму в 8 строк, без музыки прерывание заканчивается точно с началом вывода рабочей области экрана, если ширму расположить внизу экрана, должно быть нормально, ведь стираться она успевает, а установка ширмы внизу экрана - луч до неё не успевает добежать.
    По центру экрана ширма. Мусор - визуализация скролинга.
    Вложения Вложения

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

    metamorpho(17.07.2020)

  4. #84

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

    По умолчанию

    KTSerg, спасибо!!
    Похоже получилось - теперь мельтишения нет, скроллинг чистый


  5. #85

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    Похоже получилось - теперь мельтишения нет, скроллинг чистый
    ...
    Что-то не совсем понятное, рассмотреть сложно, вроде какое-то смещение есть, и не равномерность скроллинга.
    А можно "rom" выложить для рассмотреть скроллинг, а то не понятно, воспроизведение видео подтормаживает, или скроллинг скачет.

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

    metamorpho(18.07.2020)

  6. #86

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

    По умолчанию

    В приложении rom

    А вто как выглядит программа прерываний


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


    INIT: PUSH H
    PUSH B
    PUSH D
    PUSH PSW
    LDA WRPAL ; ПРОВЕРКА РАЗРЕШЕНИЯ ЗАПИСИ ПАЛИТРЫ В
    ORA A ; ОЗУ ЦВЕТОГЕНЕРАТОРА.
    JZ NWRPAL
    MVI A,88H
    OUT 00H
    LXI H,COLR15 ; ЗАПИСЬ ПАЛИТРЫ.
    LXI D,100FH
    INIT1: MOV A,E
    OUT 02
    MOV A,M
    OUT 0CH
    OUT 0CH
    OUT 0CH
    OUT 0CH
    OUT 0CH
    DCX H
    OUT 0CH
    DCR E
    OUT 0CH
    DCR D
    OUT 0CH
    JNZ INIT1
    NWRPAL: MVI A,8AH ; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ
    OUT 00 ; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ).
    XRA A
    OUT 03
    IN 2
    STA STATUS
    MVI A,0FEH ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    OUT 03
    IN 02
    STA KEYKOD
    MVI A,88H
    OUT 00
    LDA BORDER ; УСТАНОВКА ЦВЕТА БОРДЮРА.
    ANI 0FH
    OUT 02
    LDA SCROLL ; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА.
    OUT 03
    ;jmp EXINIT
    ; ОБРАБОТКА ВЫСОТЫ И ДЛИТЕЛЬНОСТИ ЗВУКА ПО НОМЕРУ ПАРАМЕТРА ЗВУКА.
    ;
    LDA TON ; ВЗЯТЬ КОД ИЗ БУФЕРА НОМЕРОВ ПАРАМЕТРОВ ЗВУКА.
    ORA A ; НОМЕР ПАРАМЕТРА УСТАНОВЛЕН?
    JZ TSSOUN ; ЕСЛИ НЕТ - ПЕРЕЙТИ НА ПРОВЕРКУ ОТРАБОТКИ ДЛИТ.ЗВУКА.
    DCR A ; УМЕНШИТЬ НОМЕР НА 1, Т.К. МАССИВ НАЧИН. С НУЛЕВОГО.
    ADD A ; УМНОЖИТЬ НОМЕР ПАРАМЕТРОВ ЗВУКА НА 4, ТАК КАК
    ADD A ; ПАРАМЕТРЫ ОДНОГО ЗВУКА ЗАНИМАЮТ 4 БАЙТА.
    MOV E,A ; ПОДГОТОВИТЬ В "DE" СМЕЩЕНИЕ ОТ НАЧАЛА ПАРАМЕТРОВ.
    MVI D,0
    LXI H,BAZTON ; УСТАНОВИТЬ В "HL" АДРЕС НАЧАЛА ПАРАМЕТРОВ ЗВУКА.
    DAD D ; СЛОЖЕНИЕМ С "DE" ПОЛУЧИТЬ В "HL" АДРЕС НУЖНЫХ ПАРАМ.
    MVI A,0B6H ; УСТАНОВИТЬ РЕЖИМ 3 ТАЙМЕРА ДЛЯ КАНАЛА 2, ЗАПИСЬ КОЭФ-
    OUT 08 ; ФИЦИЕНТА ДЕЛЕНИЯ В ДВА БАЙТА - СНАЧАЛА МЛ. ПОТОМ СТ.
    MOV A,M ; ВЗЯТЬ МЛАДШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H ; ПЕРЕДВИНУТЬ УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ БАЙТ ПАРАМЕТРОВ.
    MOV A,M ; ВЗЯТЬ СТАРШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H
    MOV E,M ; ВЗЯТЬ В ПАРУ "DE" ДЛИТЕЛЬНОСТЬ ЗВУЧАНИЯ.
    INX H
    MOV D,M
    XCHG ; И ЗАПИСАТЬ ЕЕ В
    SHLD STSOUN ; СЧЕТЧИК ВРЕМЕНИ ЗВУЧАНИЯ.
    XRA A ; ОБНУЛИТЬ БУФЕР НОМЕРОВ ПАРАМЕТРОВ ЗВУКА (Т.Е. ПАРА-
    STA TON ; МЕТРЫ ВЗЯТЫ И ИХ НЕ НУЖНО СНОВА ОПРЕДЕЛЯТЬ).
    JMP EXINIT ; ВЫЙТИ ИЗ П/П ОБРАБОТКИ СИСТЕМНОГО ПРЕРЫВАНИЯ.
    ;
    TSSOUN: LHLD STSOUN ; ВЗЯТЬ СЧЕТЧИК ВРЕМЕНИ ЗВУЧАНИЯ И ПРОВЕРИТЬ,
    MOV A,H ; РАВЕН ЛИ ОН НУЛЮ (ВРЕМЯ ЗВУЧАНИЯ КОНЧИЛОСЬ)?
    ORA L
    JZ OFSOUN ; ЕСЛИ КОНЧИЛОСЬ - ВЫКЛЮЧИТЬ ЗВУК!
    DCX H ; УМЕНЬШИТЬ СЧЕТЧИК.
    SHLD STSOUN
    JMP EXINIT ; И ВЫЙТИ ИЗ П/П ПРЕРЫВАНИЯ.
    OFSOUN: MVI A,0B6H ; ВЫКЛЮЧИТЬ КАНАЛ 2 ТАЙМЕРА ПУТЕМ ЗАПИСИ В РЕГ.
    OUT 08 ; РЕЖИМА УПР. СЛОВА ДЛЯ ЭТОГО КАНАЛА БЕЗ ПАРАМ.
    EXINIT: XRA A
    STA WRPAL

    LDA kub_napr
    CPI 3 ; vverx
    JZ trapinko2
    CPI 4 ; vverx
    JZ trapinko1
    jmp trapinko3

    trapinko1:
    call shirm0 ; стираем ширму
    lhld ashirm ;
    lda scroll
    inr a
    mov l,a
    shld ashirm ;
    call shirm1 ; рисуем ширму
    jmp trapinko4

    trapinko2:
    call shirm0wwt ;
    lhld ashirm2 ;
    lda scroll
    adi 9
    mov l,a
    shld ashirm2 ;
    call shirm1wwt ;
    jmp trapinko4

    trapinko3:
    call shirm0
    call shirm0wwt
    trapinko4:
    POP PSW
    POP D
    POP B
    POP H
    EI
    RET
    [свернуть]
    Вложения Вложения

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

    KTSerg(18.07.2020)

  7. #87

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    В приложении rom
    Спасибо.
    Ширму не нужно убирать когда персонаж стоит на месте. Пусть она будет всегда. Иначе возникает ощущение, что экран дёргается, то приподнимается, то опускается.
    И странно, но проскакивают артефакты с правой стороны ширмы, при движении вверх в одном месте лабиринта, при движении вниз - в другом.

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

    Я изменил цвет фона, что-бы было видно ширму.
    Есть два глюка с ширмой.
    Первый, если при движении персонажа вверх по лабиринту, непосредственно перед столкновением со стеной нажать клавишу вниз, то ширма не удаляется. Сделал пару скриншотов, с не удаленной ширмой.
    И второй, видимо при переходе скроллинга через 0 ширма рисуется левее чем нужно. Это проявляется как при движении вниз, так и при движении вверх.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Shirma_21.jpg 
Просмотров:	145 
Размер:	21.7 Кб 
ID:	73081   Нажмите на изображение для увеличения. 

Название:	Shirma_211.jpg 
Просмотров:	144 
Размер:	22.5 Кб 
ID:	73083   Нажмите на изображение для увеличения. 

Название:	Shirma_212.jpg 
Просмотров:	139 
Размер:	22.0 Кб 
ID:	73082  

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

    metamorpho(18.07.2020)

  8. #88

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

    По умолчанию

    KTSerg, спасибо за отлов багов.

    Вот вариант (rom) когда ширму не убирать.
    Насколько я понимаю при движении вверх программа не успевает отрисовывать ширму.
    Вложения Вложения
    Последний раз редактировалось metamorpho; 18.07.2020 в 14:48.

  9. #89

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    Вот вариант (rom) когда ширму не убирать.
    Насколько я понимаю при движении вверх программа не успевает отрисовывать ширму.
    А для чего используется сразу две ширмы?
    Мне кажется одной вполне должно быть достаточно.
    Может если пользоваться только одной ширмой, и выводить лабиринт только под ней, то и времени будет достаточно?
    И остался баг со смещением ширмы, где-то адрес начала ширмы задаётся например $80FF, а не $81FF как обычно, и для нижней ширмы аналогично. Просто ширма стала длиннее, и артефакты не выскакивают при её смещении
    Последний раз редактировалось KTSerg; 18.07.2020 в 15:52.

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

    metamorpho(18.07.2020)

  10. #90

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

    По умолчанию

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

    Ещё вопрос как сделать эффект "небольшой втряски" экрана как бы в бок ?
    Что можно при этом использовать в сочетании с аппаратным вертикальным скроллингом ?

    Ещё кто знает как реализован эффект искажения шахматной доски в конце вот этой демки ?

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

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

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

Эту тему просматривают: 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

Ваши права

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