User Tag List

Страница 33 из 45 ПерваяПервая ... 293031323334353637 ... ПоследняяПоследняя
Показано с 321 по 330 из 443

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

  1. #321

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

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Я только из миди делаю. Если можно конвертировать из вышеперечисленных форматов в трёхканальное миди, то да.
    Да некоторые из этих форматов конвертируются в Midi.

    А как получить из миди то что нам нужно ? Где там данные искать ?

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

    Как сделать качественное рандомное число ?
    Например я вставил в программу обработки прерывания такой код:
    LXI H,random
    inr m
    Но такой код выдаёт не очень рандомные числа, в них есть закономерность-одинаковость inr.

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

    Есть у кого-нибудь наработки на ассемблере эффекта разлетания частиц в стороны - как от взрыва ?
    Допустим есть центр спрайта и от него разлетаются как от взрыва точки или может спрайты 8х8.
    Или же эффект что спрайт постепенно "съезжает" внутрь самого себя и исчезает ?
    Последний раз редактировалось metamorpho; 11.08.2020 в 08:44.

  2. #322

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    Как сделать качественное рандомное число ?
    Например я вставил в программу обработки прерывания такой код:
    LXI H,random
    inr m
    Но такой код выдаёт не очень рандомные числа, в них есть закономерность-одинаковость inr.
    ...
    Попробуй использовать (например складывать) со значением какого-то регистра, который в твоей основной программе используется как счетчик... я бы ещё (до кучи) попробовал использовать регистр состояния...

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

    metamorpho(11.08.2020)

  3. #323

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Как сделать качественное рандомное число ?
    Никак, но есть способы худо-бедно изобразить его подобие. LFSR из примера с мандрилом дает перемешанную последовательность чисел от 1 до 65535, имеет периодичность 65535.
    Код:
    ; выход:
    ; HL - число от 1 до 65535
    rnd16:
    		lxi h,65535
    		dad h
    		shld rnd16+1
    		rnc
    		mvi a,00000001b ;перевернул 80h - 10000000b
    		xra l
    		mov l,a
    		mvi a,01101000b	;перевернул 16h - 00010110b
    		xra h
    		mov h,a
    		shld rnd16+1
    		ret
    Больше игр нет

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

    metamorpho(11.08.2020), Oleg N. Cher(01.07.2022), parallelno(01.07.2022), yevrowl(08.09.2025)

  4. #324

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

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Никак, но есть способы худо-бедно изобразить его подобие. LFSR из примера с мандрилом дает перемешанную последовательность чисел от 1 до 65535, имеет периодичность 65535.
    ...
    По мне так вполне себе красивый "rnd" получается. Не знаю, скорее всего после завершения цикла, последовательность полностью повторится, и с этим нужно как-то отдельно бороться ...
    Вложения Вложения

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

    metamorpho(11.08.2020), Oleg N. Cher(01.07.2022), yevrowl(08.09.2025)

  5. #325

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

    По умолчанию

    svofski, спасибо!!
    Твой способ получения rnd работает.

  6. #326

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    А как получить из миди то что нам нужно ? Где там данные искать ?
    Есть такой онлайн конвертер Binary MIDI file to text (MF2T/T2MF format) conversion. С помощью него можно получить текстовое представление миди-файла.

    Вот например начало из Flying Dragon:
    Код:
    77 On ch=1 n=69 v=127
    77 Pb ch=1 v=8192
    77 Par ch=1 c=11 v=92
    77 On ch=2 n=64 v=127
    77 Pb ch=2 v=8192
    77 Par ch=2 c=11 v=92
    77 On ch=3 n=57 v=90
    77 Pb ch=3 v=8145
    78 Par ch=2 c=11 v=86
    78 Pb ch=3 v=8192
    79 Par ch=2 c=11 v=73
    79 Pb ch=3 v=8145
    80 Par ch=2 c=11 v=56
    80 Pb ch=3 v=8192
    81 Par ch=2 c=11 v=0
    81 Off ch=3 n=57 v=0
    84 Off ch=1 n=69 v=0
    84 Off ch=2 n=64 v=0
    Каждая строка начинается с числа - это номер события (или в данном случае кадра). Затем одна из команд события: On - включить канал, Off - выключить канал, Pb - изменить высоту ноты (pitch bend), Par - изменить громкость в канале. Далее номер канала (ch=x). В командах On/Off затем идёт номер ноты (n=x) и уровень громкости (v=x). В команде Par обычно стоит с=11 (не знаю что это) и в конце всегда v=0 (что соответствует нулевой громкости). И наконец в команде Pb указано значение относительно ноты используемой в последней команде On.

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

    metamorpho, что-то я с наскоку не смог одолеть ни Excitebike, ни Flying Dragon - какие-то там бульки и всплески не в кассу постоянно слышны (ну в смысле после моей конвертации). Совсем не простые для меня мелодии оказались, Кастлвания намного легче даётся )))

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

    metamorpho(11.08.2020), Oleg N. Cher(12.08.2020)

  7. #327

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

    По умолчанию

    SegaBoy, спасибо за информацию!!
    А вот это текстовое представление миди-файла ты как в ручную обрабатываешь
    или есть какая-то программа преобразующая в данные для ассемблера ?
    Или это текстовое представление миди-файла напрямую вставляется в ассемблер, а уже там програмно обрабатывается ?

  8. #328

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

    По умолчанию

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

    Вот к примеру из такого фрагмента (Super Mario Bros):
    Код:
    76 On ch=3 n=50 v=90
    76 Pb ch=3 v=8160
    77 On ch=1 n=66 v=127
    77 Pb ch=1 v=8152
    77 On ch=2 n=76 v=127
    77 Pb ch=2 v=8122
    84 Off ch=3 n=50 v=0
    85 On ch=3 n=50 v=90
    85 Pb ch=3 v=8160
    86 Off ch=1 n=66 v=0
    86 On ch=1 n=66 v=127
    86 Pb ch=1 v=8152
    86 Off ch=2 n=76 v=0
    86 On ch=2 n=76 v=127
    86 Pb ch=2 v=8122
    93 Off ch=3 n=50 v=0
    103 On ch=3 n=50 v=90
    получаются следующие данные для плеера:
    Код:
    db 4, 3, 1
    db 24, 6, 9, 7
    db 224, 1
    db 4, 3, 1
    db 24, 6, 9, 7
    db 224, 10
    Формат данных (в текущей версии) следующий. Старшие три бита первого байта это флаги выключения каналов 1, 2 и 3. Следующие три бита флаги включения. Последние два бита (пока) не используются. Затем если установлен бит включения канала, то следующий байт это номер ноты. Последний байт это количество кадров которые надо подождать прежде чем проигрывать следующий фрагмент.
    Алгоритм следующий - загружаем значение для ноты 3 в третий канал, ждём 1 кадр, загружаем значение для ноты 6 в первый канал, загружаем значение для ноты 9 во второй канал, ждём 7 кадров, выключаем каналы 1, 2 и 3, ждём 1 кадр и тд.

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

    Вот примеры плеера для Апогея (можно запустить в эмуляторе).
    Вложения Вложения

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

    metamorpho(12.08.2020), Oleg N. Cher(12.08.2020)

  9. #329

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

    По умолчанию

    SegaBoy, спасибо за подробные объяснения!!
    Ещё немного и я сам научусь конвертировать

    Возникли вопросы:
    Что имеется ввиду под словами "ждём 7 кадров" ? Это длительность ноты ? Сколько длится 1 кадр ?

    Правильно ли я понял что в "note_table_1" это значения частот используемых нот (частота канала) ?
    И номер ноты соответствуют данным из этой таблицы ?
    Но как составляется эта таблица, из каких данных "текстового представления миди-файла" она формируется ?
    Ведь у нас в "текстовом представлении миди-файла" есть только номер ноты (n=x) и уровень громкости (v=x). Как это преобразуется ?

    note_table_1:
    dw 7216, 6811, 6430, 6070, 5409, 5107, 4821, 4551, 4057, 3616, 3414, 3223, 3043, 2713

  10. #330

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    note_table_1:
    dw 7216, 6811, 6430, 6070, 5409, 5107, 4821, 4551, 4057, 3616, 3414, 3223, 3043, 2713
    Всё значительно проще.
    Это коэффициенты для частоты ноты. Они не записаны в Миди, т.к. они стандартны для конкретного устройства воспроизведения.
    Т.к. тактовая ВИ53 1.5МГц, то делим 1500000 на 6430 (к примеру), и получаем частоту 233Гц - почти Ля-диез малой октавы.
    Коэффициенты из этой таблицы записываются в регистры ВИ53, и он генерит запрошенную частоту - ноту.
    Последний раз редактировалось KTSerg; 13.08.2020 в 08:54.

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

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

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

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

Ваши права

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