User Tag List

Страница 31 из 39 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя
Показано с 301 по 310 из 443

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

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

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

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Что имеется ввиду под словами "ждём 7 кадров" ? Это длительность ноты ? Сколько длится 1 кадр ?
    Плеер привязан к кадровой синхронизации, поэтому это реальное количество кадров. Не каждый кадр нужно изменять значения в каналах ВИ53 - если не нужно ничего включать/выключать, то ждём. Это может быть как длительность ноты, так и пауза между нотами. Например включили канал, подождали шесть кадров (длительность ноты), затем выключили канал и подождали ещё шесть кадров (пауза) и тд.

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

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Правильно ли я понял что в "note_table_1" это значения частот используемых нот (частота канала) ?
    И номер ноты соответствуют данным из этой таблицы ?
    Но как составляется эта таблица, из каких данных "текстового представления миди-файла" она формируется ?
    Ведь у нас в "текстовом представлении миди-файла" есть только номер ноты (n=x) и уровень громкости (v=x). Как это преобразуется ?
    Как правильно указал KTSerg, это коэффициенты или константы для определённых частот (только от тактовой Апогея 1,77 МГц) которые и загружаются в каналы ВИ53. Таблица составляется пробеганием по всем нотам и пересчётом их в константы. Можно конечно так не делать и в данных плеера вместо однобайтового значения номера из таблицы сразу указывать двухбайтовое значение константы и посмотреть как лучше. Ну и плеер конечно изменить под это.

    Уровень громкости никак не учитывается, так как я не знаю способов (кроме аппаратной доработки) как её имитировать. Поэтому используются только номера нот и значение Pb для них.

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

    metamorpho, есть ещё какие nsf на примете чтобы попробовать из них конвертировать? Например мелодии из марио довольно прилично звучат без громкости и без огибающих. Может ещё какие-то более дружелюбными для портирования окажутся ))

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

    metamorpho(13.08.2020)

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

  3. #2

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

    По умолчанию

    Я поправил своё сообщение про коэффициенты. У Вектора ВИ53 тактируется частотой 1,5МГц.
    Но суть та-же, нота после пересчёта коэффициента не меняется, только октава получилась другая.

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

    metamorpho(13.08.2020)

  4. #3

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

    По умолчанию

    SegaBoy, спасибо за объяснения!!

    Ещё возниклм вопросы:
    плеер (исходник на asm), который ты дал он же в теле основной программы работает (насколько я понял), а ещё в программе обработки прерываний должны обрабатываться нижеприведённые данные.
    pit_cnt1_port equ $ec00
    pit_cnt2_port equ $ec01
    pit_cnt3_port equ $ec02
    pit_ctrl_port equ $ec03
    pit_init1 equ $3e
    pit_init2 equ $7e
    pit_init3 equ $be

    Например на Векторе для вывода одного отдельного звука в программе обработки прерываний есть программирование таймера ВИ53:
    MVI A,0B6H ; УСТАНОВИТЬ РЕЖИМ 3 ТАЙМЕРА ДЛЯ КАНАЛА 2, ЗАПИСЬ КОЭФ-
    OUT 08 ; ФИЦИЕНТА ДЕЛЕНИЯ В ДВА БАЙТА - СНАЧАЛА МЛ. ПОТОМ СТ.
    MOV A,M ; ВЗЯТЬ МЛАДШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H ; ПЕРЕДВИНУТЬ УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ БАЙТ ПАРАМЕТРОВ.
    MOV A,M ; ВЗЯТЬ СТАРШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.

    А в программе обработки прерываний как у тебя они обрабатываются ?
    Или же на Апогее это по другому работает ?

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    ....есть ещё какие nsf на примете чтобы попробовать из них конвертировать? Например мелодии из марио довольно прилично звучат без громкости и без огибающих. Может ещё какие-то более дружелюбными для портирования окажутся ))
    Думаю если я найду мелодию, то она вновь может оказаться с проблемами

    Спасибо, что помогаешь мне разобраться в этом вопросе.
    Если у меня получиться, то я сам их конвертировать буду. Ну а если не получиться, то буду искать подходящую мелодию

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

    Информация из справочника Черезова А. по Вектору-06Ц

    ; десятичные значения нот (частота канала для ноты)
    note_table:
    ; контр-октава
    dw 45872,43290,40872,38560,36408,34364,32432,30612,28 902,27273,25729,24311 ; до/до#/ре/ре#/ми/фа/фа#/соль/соль#/ля/ля#/си
    ; большая-октава
    dw 22936,21645,20436,19280,18204,17182,16216,15306,14 451,13636,12876,12146 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; малая-октава
    dw 11468,10823,10218,9646,9102,8591,8108,7653,7229,68 18,6438,6075 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 1-я октава
    dw 5734,5415,5107,4823,4551,4296,4054,3827,3614,3409, 3219,3036 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 2-я октава
    dw 2867,2708,2554,2412,2275,2147,2027,1913,1805,1705, 1609,1519 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 3-я октава
    dw 1433,1353,1277,1205,1137,1074,1014,957,904,852,804 ,759 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 4-я октава
    dw 717,677,639,602,569,537,507,472,452,426,402,380 ; до до# ре ре# ми фа фа# соль соль# ля ля# си

    В музыкальной нотной грамоте я не грамотен.
    Поэтому вопрос - почему в этой таблице на ноте ми и ноте си нету # ?

  5. #4

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    а ещё в программе обработки прерываний должны обрабатываться нижеприведённые данные.
    Судя по всему, на Апогее порты отображены в адреса ОЗУ, поэтому первые четыре константы в этом коде - это Апогеевский аналог адресов Векторовских портов 08-11.
    Три последние константы - это константы управляющих слов для инициализации каналов таймера. Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.

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

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

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

    Цитата Сообщение от metamorpho Посмотреть сообщение
    В музыкальной нотной грамоте я не грамотен.
    Поэтому вопрос - почему в этой таблице на ноте ми и ноте си нету # ?
    Потому что диез (и бемоль) - это расстояние в полутон между нотами.
    Знакомая же нам всем гамма до-ре-ми-фа-соль-ля-си, которую музыканты называют "до мажор", в плане разницы высоты звука между соседними нотами - это "тон, тон, полутон, тон, тон, тон, полутон"

    Вот там, где между соседними нотами - всего полутон (между ми и фа, и между си и до) - ты и не видишь в таблице никаких диезов, потому что в мажорной гамме фа - это и есть ми диез, а до - это си диез предыдущей октавы.

    Эти 2 пользователя(ей) поблагодарили x-code за это полезное сообщение:

    jerri(13.08.2020), metamorpho(13.08.2020)

  6. #5

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

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    Судя по всему, на Апогее порты отображены в адреса ОЗУ, поэтому первые четыре константы в этом коде - это Апогеевский аналог адресов Векторовских портов 08-11.
    Три последние константы - это константы управляющих слов для инициализации каналов таймера. Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.
    .....
    Так это что, получается этот код плеера с Апогея и есть то что нужно вставлять
    в программу обработки прерываний на Векторе (изменив управляющие команды для портов) ?

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

  7. #6

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    этот код плеера с Апогея и есть то что нужно вставлять
    в программу обработки прерываний на Векторе (изменив управляющие команды для портов) ?
    Ну, почти. В Апогее, по всей видимости, синхронизация с обратным ходом луча делается не по прерыванию, поэтому в коде плеера есть цикл ожидания обратного хода луча с меткой vsync. На Векторе это не нужно, т.к. обработчик прерывания сам вызовется в нужный момент. А вот всё, что идёт ниже цикла ожидания - да, вполне можно переиспользовать, только заменив в коде программирования режимов таймера обращения к ячейкам памяти pit_xxxx_port обращениями к соответствующим номерам портов на Векторе.

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

    metamorpho(13.08.2020)

  8. #7

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    ... Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.
    При установке режимов работы 2 или 3, третий бит может иметь любое значение. Поэтому $3e, $7e и $be равнозначны $36, $76 и $b6.

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

    x-code(13.08.2020)

  9. #8

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

    По умолчанию

    Немного новостей. Сейчас в целом различные моменты игры (кроме музыки) оформились.
    Так что пока их откладываю в сторону и занимаюсь разработкой кода для проигрывания музыки.
    Музыка (для ВИ53), оказалась наиболее специфичной и незнакомой темой для меня.
    Но надеюсь с помощью тех кто мне помогает напишу код для музыки

    А пока вот (rom) для тестов. Уровни ещё не шлифовал (просто наброски).
    Некоторые из них непроходимы. Переключаться между уровнями можно клавишей "Тab".
    Интересно ваше мнение насчёт эффекта при взятии монеты.
    Первоначально была графика при гибели героя (аж семь кадров исчезания типа взрыва), но от этого пришлось отказаться т.к. памяти не хватает. Поэтому вместо графики, был написан эффект при гибели героя, который так себе получился, но есть планы его доработать до чего-то лучшего
    Может у кого-то будут какие советы по игре - пишите.
    Из "крупных" данных в игру осталось вставить музыку и заставку - надеюсь памяти хватит
    Вложения Вложения

  10. #9

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Немного новостей. Сейчас в целом различные моменты игры (кроме музыки) оформились.
    Так что пока их откладываю в сторону и занимаюсь разработкой кода для проигрывания музыки.
    Музыка (для ВИ53), оказалась наиболее специфичной и незнакомой темой для меня.
    Но надеюсь с помощью тех кто мне помогает напишу код для музыки

    А пока вот (rom) для тестов. Уровни ещё не шлифовал (просто наброски).
    Некоторые из них непроходимы. Переключаться между уровнями можно клавишей "Тab".
    Интересно ваше мнение насчёт эффекта при взятии монеты.
    Первоначально была графика при гибели героя (аж семь кадров исчезания типа взрыва), но от этого пришлось отказаться т.к. памяти не хватает. Поэтому вместо графики, был написан эффект при гибели героя, который так себе получился, но есть планы его доработать до чего-то лучшего
    Может у кого-то будут какие советы по игре - пишите.
    Из "крупных" данных в игру осталось вставить музыку и заставку - надеюсь памяти хватит
    эффект когда плывет палитра? а может чорный высветлять до белого и назад?

    а если набор микровзрывов?
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(18.08.2020)

  11. #10

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

    По умолчанию

    SegaBoy, ещё 2 вопроса возникли.

    --------------------------Вопрос 1-й.
    Pb - изменить высоту ноты (pitch bend). В команде Pb указано значение относительно ноты используемой в последней команде On.
    Как преобразуется нота с учётом Pb ?

    Например
    76 On ch=3 n=50 v=90
    76 Pb ch=3 v=8160

    здесь нота n=50 (допустим это 2-я октава нота до# её частота 2708 из таблицы частот для нот )
    При преобразовании миди текста как Pb повлияет на эту ноту ? Изменит высоту ноты в какую сторону ?

    -------------------------------Вопрос 2-й.
    Вот таблица 84-х нот (их частот) для Вектора.
    Как считаются ноты ? Т.е. n=1 (из миди текста) это соответствует какой ноте из таблицы для Вектора ?

    note_table:
    ; контр-октава (12 нот)
    dw 45872,43290,40872,38560,36408,34364,32432,30612,28 902,27273,25729,24311 ; до/до#/ре/ре#/ми/фа/фа#/соль/соль#/ля/ля#/си
    ; большая-октава
    dw 22936,21645,20436,19280,18204,17182,16216,15306,14 451,13636,12876,12146 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; малая-октава
    dw 11468,10823,10218,9646,9102,8591,8108,7653,7229,68 18,6438,6075 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 1-я октава
    dw 5734,5415,5107,4823,4551,4296,4054,3827,3614,3409, 3219,3036 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 2-я октава
    dw 2867,2708,2554,2412,2275,2147,2027,1913,1805,1705, 1609,1519 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 3-я октава
    dw 1433,1353,1277,1205,1137,1074,1014,957,904,852,804 ,759 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 4-я октава
    dw 717,677,639,602,569,537,507,472,452,426,402,380 ; до до# ре ре# ми фа фа# соль соль# ля ля# си

Страница 31 из 39 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя

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

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

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

Ваши права

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