PDA

Просмотр полной версии : ZX+YM2612



Страницы : [1] 2

JV-Soft
01.04.2018, 17:26
Вот сижу я и кручу в руках YM2612 , даже пару раз паяльник включил , но потом выключил :)
И летают у меня мысли ,надо бы его прикрутить к пентагону.
Теперь вопросы ,кто то когда нибудь дружил это чудо с ZX ? Потенциал огромный ,так как в SEGA он работает именно в связке с Z80 и все мелодии легко перетянуть думаю.

Плюс сама микра очень интересна в плане возможностей ретро звука.

HardWareMan , ты как спец по сегам не в курсе, на сколько сложно в ромах искать и выдирать музон ?

Прошу ваши мысли )


---------------------------------------------------------------------------------------------------------------------------------------------
Так как проект перешел из теории в практику снесу сюда полезную инфу -

Трекер на котором можно писать музыку под текущий VGM плеер - http://www.deflemask.com/

Описание YM2612 - http://www.smspower.org/maxim/Documents/YM2612
Описание SN76489 - http://www.smspower.org/Development/SN76489

Формат SMPS - http://info.sonicretro.org/SCHG:Music_Hacking/Pointer_and_Header_Format
Формат GEMS - https://forums.sonicretro.org/index.php?showtopic=18892

Недокументированный регистр #2C , YM2612 - http://www.sega-16.com/forum/showthread.php?20704-Undocumented-YM2612-register-2C-Smooth-PCM-panning!


(Оновлено 26.10.18) Тестовый плеер под Феникс (#7ffd , 256k) - https://drive.google.com/file/d/1zQ__RerKb14DYbOc0-1JPWDzziNRm0SL/view?usp=sharing
Тестовый плеер (на диск добавлен плеер TSFM.H ,4 мелодии ,аласм в котором писалось) - 66599
Тестовый плеер TSFM (две мелодии) откомпилировано - 66644

HardWareMan
01.04.2018, 17:32
Вот сижу я и кручу в руках YM2612 , даже пару раз паяльник включил , но потом выключил :)
И летают у меня мысли ,надо бы его прикрутить к пентагону.
Теперь вопросы ,кто то когда нибудь дружил это чудо с ZX ? Потенциал огромный ,так как в SEGA он работает именно в связке с Z80 и все мелодии легко перетянуть думаю.

Плюс сама микра очень интересна в плане возможностей ретро звука.

HardWareMan , ты как спец по сегам не в курсе, на сколько сложно в ромах искать и выдирать музон ?

Прошу ваши мысли )

Я даже лет 15 назад делал мануал по этому делу... Но сейчас это не интересно. IDA + мозги = PD ROM с музлом.

JV-Soft
01.04.2018, 17:33
Но сейчас это не интересно
Не ,ну тут я не соглашусь , очень то интересно , реальное старое железо наше все )
А где мануал покурить ?

DonkeyHot
01.04.2018, 18:02
Я кручу в руках Sega (клон Simbas) и думаю "чтоб ты пукнул для определения"... С какой стороны и какой химией этот смд пилить для клона.

HardWareMan
02.04.2018, 07:40
А где мануал покурить ?
А фиг его знает. С того времени у меня было 2 аварии HDD. В общий чертах: все сводится к выделению кода прогрузки драйвера, выделении самого драйвера и поиск кода переключения мелодий. Результат потом оформляем другой программой и получаем то, что во вложении (ух ты - 2005 год! как быстро летит время...).

64851

А, ну еще и музыкальные данные, они считываются напрямую с картриджа, поэтому имеет важно то в каком банке они находятся. Тут лучше начать с RRR, у нее мелодия помещается полностью в ОЗУ Z80 и не работает с картриджем.

А еще в 2007 я сделал вот это:

64856

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

О, нашел у себя еще вот это, 2011 года.

64862

Шрифт из Lode Runner'а со Специалиста.

JV-Soft
02.04.2018, 10:02
HardWareMan, в принципе есть проект VGM , так понимаю даных для мелодий уже надрали кучу ,надо только плеер под ZX написать , так ?

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

И еще на сколько в сегавских мелодиях используется SN76489 ?

Mick
02.04.2018, 10:03
Кстати, хочу предупредить исходя из своего опыта. Когда сварганишь карту, то софт придется писать тебе.
Просто потом не стоит обижаться, что никто ничего не пишет. Мы уже это проходили. :)

JV-Soft
02.04.2018, 10:07
Ссыль положу ,что бы было - https://www.zophar.net/music/sega-mega-drive-genesis

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


Кстати, хочу предупредить исходя из своего опыта. Когда сварганишь карту, то софт придется писать тебе.
Просто потом не стоит обижаться, что никто ничего не пишет. Мы уже это проходили.
Я буквально вчера об этом с товарищем говорил , ты мои слова как подслушал :)

Mick
02.04.2018, 10:09
Я буквально вчера об этом с товарищем говорил , ты мои слова как подслушал

Нет, просто есть некоторый опыт производства звуковых карт для Спектрума :)

marinovsoft
02.04.2018, 10:10
http://zx-spectrum128k.narod.ru/Romanich/Romanich.htm

JV-Soft
02.04.2018, 10:13
Mick, вопрос , как думаешь какой порт под него взять ? в пентагоне уже все под завязку ,что бы два порта не занимать у меня вообще мысль дешифратор поставить и типа
out (#xx),1 - регистр
out (#xx),2 - команда
out (#xx),3 - чтение

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

marinovsoft, да ,спасибо но смикшировать YM и SN не проблема , вопрос насколько она нужна в сеговских мелодиях , если на 100 мелодий SN используется пару раз...

Mick
02.04.2018, 10:22
Mick, вопрос , как думаешь какой порт под него взять ? в пентагоне уже все под завязку ,что бы два порта не занимать у меня вообще мысль дешифратор поставить и типа

Я думаю порты лучше брать со схожими картами. Либо управлять как TSFM(OPN) через порты AY, либо как у ZXM-Moonsound (OPL4).

У Moonsound порты:

FM часть
порт C4h -> запись адреса регистра (набор регистров 1)
C5h - запись данных в регистры набора 1
С6h - запись адреса регистра (набор регистров 2)
C7h - запись данных в регистры набора 2

Кроме того регистр C4h на чтение - статус

Wave часть
Регистр 7Eh - запись адреса регистра
7Fh - запись или чтение данных

Либо поглядеть а были уже попытки спаривания ZX и YM2612 до этого, возможно порты уже есть.

marinovsoft
02.04.2018, 10:23
marinovsoft, да ,спасибо но смикшировать YM и SN не проблема , вопрос насколько она нужна в сеговских мелодиях , если на 100 мелодий SN используется пару раз...
YM2612Device.rar - подключение YM2612 к LPT порту + статья "Внешняя звуковая карта на базе YM2612".

JV-Soft
02.04.2018, 10:30
Либо поглядеть а были уже попытки спаривания ZX и YM2612 до этого, возможно порты уже есть.
Пока не нашел такого ,чему весьма и удивился.

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

Mick, а например такой вариант ,у нас есть TS , подключаем YM2612 вместо второй YM2149 , или переключение между ними сделать очень просто можно

Mick
02.04.2018, 10:34
Насколько я понял, то YM2612 это OPN2, то есть дальнейшее развитие FM части YM2203.
Тобишь имеет смысл сделать дешифрацию как в ТSFM.

Правда может возникнуть коллизия если одновременно воткнут TSFM и YM2612. Этот вопрос надо проработать.

JV-Soft
02.04.2018, 10:40
Спецификация VGM - http://www.smspower.org/uploads/Music/vgmspec170.txt?sid=eeb8e9b1eb53e5e32fd3858b549996a f

Mick
02.04.2018, 10:42
Mick, а например такой вариант ,у нас есть TS , подключаем YM2612 вместо второй YM2149 , или переключение между ними сделать очень просто можно

Вот смотри в TSFM, который работает по адресам AY есть некие биты адресов регистров (по сути номера регистров), которые уже используются
0 бит - выбор микросхемы YM2203 или AY (первая или вторая)
1 бит - выбор режима чтения статуса
2 бит - разрешение FM части
3 бит - разрешение клоков SAA1099
4..7 биты в 1 что соответствует старшим адресам регистров AY

Кстати, а даташит на него есть - я что то не нашел.

HardWareMan
02.04.2018, 10:50
HardWareMan, в принципе есть проект VGM , так понимаю даных для мелодий уже надрали кучу ,надо только плеер под ZX написать , так ?
VGM это дамп записей в регистры. И это проблема. Основная - это размер. Дополнительная - нарушение таймингов в виду попыток сжатия. Например, мелодии где активно используется DAC и цифровые сэмплы.

И еще на сколько в сегавских мелодиях используется SN76489 ?
Все самые классные мелодии его используют.

А в моем это драйвер (плеер) + его музыкальные данные (мелодии, сэмплы и пр.). При этом все тайминги соответствуют, размеры минимальны, ограничения на воспроизведение нет. Кому что хочется - решайте сами.

JV-Soft
02.04.2018, 10:55
Кстати, а даташит на него есть - я что то не нашел.
На YM2612 ? - http://www.datasheetspdf.com/datasheet/search.php?sWord=YM2612

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


Все самые классные мелодии его используют.
значит надо ставить ,вот только у меня ее нет )


VGM это дамп записей в регистры. И это проблема. Основная - это размер.
Да ,уже обратил на это внимание ,и то не хорошо.


А в моем это драйвер (плеер) + его музыкальные данные (мелодии, сэмплы и пр.). При этом все тайминги соответствуют, размеры минимальны, ограничения на воспроизведение нет. Кому что хочется - решайте сами.
Это нам ближе , но если прикручу все ,то почему бы и VGM плеер не сделать , я ж метровый пентагон собирал для чего то )

Mick
02.04.2018, 11:51
На YM2612 ?

Ну да, то что ты предложил - это не даташит. Это краткий курс по даташиту :)
Нужен полный с описанием регистров, работы микросхемы.

Что типа вот этого - http://md.squee.co/YM2612

HardWareMan
02.04.2018, 12:17
Букварей на YM2612 не было в интернетах (и, скорее всего, не будет). Поэтому, есть инфа из segadoc2, который я как-то переводил (правда, так и не причесал до конца да и дополнить местами его надо актуальной информацией), но самая полная инфа будет только здесь (http://gendev.spritesmind.net/forum/viewtopic.php?f=24&t=386), там даже мои фотки кристалла есть.

JV-Soft
02.04.2018, 13:05
HardWareMan, а в Sega YM2612 работает как то стандартно по кадровым прерываниям ? То есть во всех играх музыка одинаково выводится ?

Mick
02.04.2018, 13:21
а в Sega YM2612 работает как то стандартно по кадровым прерываниям ? То есть во всех играх музыка одинаково выводится ?

Хороший вопрос, а то ведь может получится как в Moonsound - делать выход на прерывания, так как там не только 50Гц, но и 60Гц, а также с пользовательской частотой выводился звук. И еще должен волновать вопрос частоты самого YM2612. Тоесть музон от Сеги должен идти как должен или его планируется преобразовывать.

JV-Soft
02.04.2018, 13:41
Хороший вопрос, а то ведь может получится как в Moonsound - делать выход на прерывания, так как там не только 50Гц, но и 60Гц, а также с пользовательской частотой выводился звук. И еще должен волновать вопрос частоты самого YM2612. Тоесть музон от Сеги должен идти как должен или его планируется преобразовывать.
При переключении PAL/NTSC в Sega и темп звука меняется ,поэтому думаю по кадровым должно быть , сейчас возьму осцил и пощупаю. Сама тактовая у YM2612 - 7670454 Гц ,но народ в основном запускает на 7.68 мгц

Mick
02.04.2018, 13:45
При переключении PAL/NTSC в Sega и темп звука меняется ,поэтому думаю по кадровым должно быть , сейчас возьму осцил и пощупаю. Сама тактовая у YM2612 - 7670454 Гц ,но народ в основном запускает на 7.68 мгц

В принципе можно поступить как в YM278, сделать по внутреннем таймеру прерывания, но тогда надо вводить регистр статуса, чтобы различать от кого прерывания (видео или YM2612). Но это по любому надо CPLD ставить.
Но опять же можно много чего придумать, но будет ли программная поддержка всего этого. :)

JV-Soft
02.04.2018, 14:26
Но опять же можно много чего придумать, но будет ли программная поддержка всего этого.
Попробую, о каких то редакторах точно речь не идет ,а вот проигрыватели думаю потяну.


HardWareMan, а ОЗУ в 8кб в сеге на Z80 используется как буфер или в него полностью мелодия заганяется/влазит ?

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

Z80 в сеге по IORQ дергается четко с кадровой частотой , а вот YM нет , сейчас попытаюсь сложить его CS с WR ,тогда будет понятнее.

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

INT на Z80 так же идет с кадровой частотой.

HardWareMan
02.04.2018, 14:32
HardWareMan, а в Sega YM2612 работает как то стандартно по кадровым прерываниям ? То есть во всех играх музыка одинаково выводится ?
На Z80 заведен VBlank. NMI используется только в режиме M3 как пауза. YM2612 имеет выход запроса прерывания, оно формируется таймерами. Всего в YM2612 2 таймера: A и B, отличающиеся только базой отсчета. Их состояние считывается в байте статуса. Касаемо темпа мелодий, то примерно в 80% драйверов используется только IRQ, который стреляет по VBlank и зависит от режима система 50/60, т.к. он заводится с VDP. Но есть некоторое количество драйверов, которые используют только таймеры YM2612. И хоть отсутсвие аппаратной связи запроса YM2612 усложняет кодинг, для достижения равномерного поллинга статуса таймеров - оно работает. Яркий пример из мультирегионных игр, это игры со звуком от Zyrinx/A Scavenger Team. Jesper Kyd, который писал музло под дофига игрушек. Послушайте мой Super 3 in 1 Trax, это оно и есть. Кстати, послушайте вот это (есть на моем 3 in 1):

https://www.youtube.com/watch?v=p9iWKzBe_zs
И это (автор тот же Jesper Kyd):

https://www.youtube.com/watch?v=cwiX4X61gNE
Желательно полностью - это реально ковер от автора.

HardWareMan, а ОЗУ в 8кб в сеге на Z80 используется как буфер или в него полностью мелодия заганяется/влазит ?
Это единственная эксклюзивная память Z80. Т.е., ему, конечно, доступен банк картриджа (все пространство М68К поделено на банки по 32КБ), но там автоматический арбитраж с М68К и оно медленное + Z80 не может записать в ОЗУ М68К - ограничение системы, которое на SRAM переехало не сразу, а DRAM синхронизировать не стали. А внутреннее ОЗУ оно чисто за Z80. Без тактов ожидания. Кстати, там окно в 16КБ, но само ОЗУ стоит только 8КБ, которое зеркалится 2 раза. Но его можно расширить до 16КБ, если поставить 62256 + завести А14 от процессора (на любую из 1 или 26 ногу, главное отключить ее от схемы), драйвера легальных титлов продолжают работать (т.е. они не используют зеркало). М68К умеет управлять сигналами RES и BUSR Z80 через порты (раздельно), Z80 никак не может влиять на М68К, арбитраж автоматический на вэйтах со стороны Z80.

Драйвера бывают разные. Но основной парк это GEMS. Он только программа в ОЗУ Z80, а данные он подгружает из банка. Но есть экземпляры, которые держат мелодию в ОЗУ Z80 - как я уже говорил, это RRR.

JV-Soft
02.04.2018, 14:40
YM2612 имеет выход запроса прерывания
Более менее понятно , значит музыка в основном весит на прерываниях. Но насколько я вижу этот выход запроса прерывания не используется в сеге.

Интереса ради повесил моторолу ,музыка продолжает играть ,значит озу в 8кб вполне хватает и моторола ничего не подкидывает пока не начнет играть другая мелодия.

HardWareMan
02.04.2018, 14:41
Интереса ради повесил моторолу ,музыка продолжает играть ,значит озу в 8кб вполне хватает и моторола ничего не подкидывает пока не начнет играть другая мелодия.
Прерывание идет от VDP, М68К висит, а значит шина свободна - арбитраж с минимальным ожиданием. Твои выводы неверны. Вытащи картридж - удивишься.

JV-Soft
02.04.2018, 14:46
И еще вопрос ,на мой взгляд в NTSC тем музыки правильный ,а вот в PAL нет , исходя из того что бы приятно слушать YM2612 нам надо 60 гц ?

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

Да ,повесил моторолу , вынул картридж и звуки один за одним исчезли :biggrin:

HardWareMan
02.04.2018, 15:07
Я люблю темп @50FPS, это мой утёнок. Не могу слушать NTSC версии, так как кажутся мне ускоренными. Кстати, в Toy Story музыка на титле играется самим М68К, и она - четырех голосый модуль. Ее можно оттуда выдрать без проблем и скормить любому треккеру. Она лежит в ROMе с адреса 0x2A2B8. Занимает 93995 байт. Берите: https://yadi.sk/d/nTEQgS-tzUAZg
Почему я ее вспомнил? Плеер расчитан под времянку 60FPS и музыка играет рваными звуками на 50FPS приставках. Так же рассчитаны сэмплы уже в обычной музыке Cool Spot.

JV-Soft
02.04.2018, 15:23
Я люблю темп @50FPS, это мой утёнок. Не могу слушать NTSC версии, так как кажутся мне ускоренными.
Дело привычки , я видимо из за того что особо не был знаком с сега и недавно ее осваивать начал ,для себя счел темп при 60 герцах более правильным , а вообще есть на тот счет какая то четкая позиция производителей ?

HardWareMan
02.04.2018, 16:03
Правильный темп будет при совпадении региона игры и приставки. Нативно, без мегакеев.

Mick
02.04.2018, 16:07
Правильный темп будет при совпадении региона игры и приставки. Нативно, без мегакеев.

Я думаю правильным будет тот темп, под который писали.
А разве в самих модулях (для эмуляции) не указывают какой темп должен идти?

JV-Soft
02.04.2018, 16:10
Правильный темп будет при совпадении региона игры и приставки. Нативно, без мегакеев.
То есть если взять игру PAL и сегу PAL то музыка будет по темпу совпадать с игрой под NTSC и сегой NTSC ? Тогда получается нам надо видирать музыку из PAL версий под 50fps ,так ?

HardWareMan
02.04.2018, 16:31
Я думаю правильным будет тот темп, под который писали.
А разве в самих модулях (для эмуляции) не указывают какой темп должен идти?
В каких модулях?

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


То есть если взять игру PAL и сегу PAL то музыка будет по темпу совпадать с игрой под NTSC и сегой NTSC ? Тогда получается нам надо видирать музыку из PAL версий под 50fps ,так ?
Да. Мультирегионные игры делают компенсацию, поэтому если взять такую PAL игру на PAL приставке, но через мегакей с регионом NTSC, то музло еще медленнее идет.

JV-Soft
02.04.2018, 17:31
Немного разобрался , как правило в 8кб памяти Z80 лежит плеер ,а данные для него в одной из страниц размером 32кб.
Теперь вопрос ,а есть эмули сеги в которых можно слить память Z80 ? Таким образом мы стянем практически готовый плеер , который можно дизасмить.

goodboy
02.04.2018, 17:55
стянем практически готовый плеер , который можно дизасмить.
как вариант http://elektropage.ru/publ/programmy_dlja_romkhakinga/dlja_raboty_s_audio/smps_z80_driver/41-1-0-133

JV-Soft
02.04.2018, 18:20
как вариант http://elektropage.ru/publ/programmy...ver/41-1-0-133
Да ,полезные исходники !

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

Покурил код ,по сути сам плеер (без PCM) проще некуда -



0085 310020 ld sp,#2000
0088 0e00 ld c,#00
008a 0600 ld b,#00
008c 10fe djnz #008c ; (-2)
008e 0d dec c
008f 28f9 jr z,#008a ; (-7)
0091 cd4409 call #0944
0094 3e19 ld a,#19
0096 323e1c ld (#1c3e),a
0099 af xor a
009a 32271c ld (#1c27),a
009d 32301c ld (#1c30),a
00a0 323f1c ld (#1c3f),a
00a3 32281c ld (#1c28),a
00a6 3e05 ld a,#05
00a8 32041c ld (#1c04),a
00ab fb ei
00ac c38910 jp #1089
00af ddcb017e bit 7,(ix+#01)
00b3 c0 ret nz

00b4 ddcb0056 bit 2,(ix+#00)
00b8 c0 ret nz

00b9 dd8601 add a,(ix+#01)
00bc ddcb0156 bit 2,(ix+#01)
00c0 2009 jr nz,#00cb ; (9)
00c2 320040 ld (#4000),a
00c5 00 nop
00c6 79 ld a,c
00c7 320140 ld (#4001),a
00ca c9 ret

00cb d604 sub #04
00cd 320240 ld (#4002),a
00d0 00 nop
00d1 79 ld a,c
00d2 320340 ld (#4003),a
00d5 c9 ret

Mick
02.04.2018, 18:20
В каких модулях?



Ну я думал что есть музыкальные модули, по сути дампы музона как например YM для YM2149, там указывается частота прерываний и частота генератора.

HardWareMan
02.04.2018, 18:22
Почти все это умеют, даже досовый генезист. Какой смысл дампить ОЗУ если можно в иде посмотреть загрузку (почти всегда близко к ресету) и вычленить чистоган? Алсо, хорошие драйвера умеют переключать банк на лету, а самые продвинутые, вроде GEMS и того самомодифицирующиеся.

https://www.youtube.com/watch?v=WEvnZRCW_qc

JV-Soft
02.04.2018, 18:43
Из того что смог за сегодня понять музыка как правило не занимает даже с PCM более 32 кб , и эти 32кб всегда кратны в памяти картриджа ,что должно облегчить поиск.

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

HardWareMan, а какой эмуль сеги на данный момент самый продвинутый ?

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

goodboy, разобрался немного с тем ,что ты кинул по ссылке , это почти то что нам надо ,там есть и мелодии и семплы и проигрыватель , теперь надо адаптировать плеер под нашу архитектуру :)

HardWareMan
02.04.2018, 18:46
Regen (http://aamirm.hacking-cult.org/www/regen.html) для повседневной игры и базовой отладки кода (очень неплохая эмуляция YM2612).

Модульный Exodus (http://www.exodusemulator.com/), самый точный по эмуляции железа и просто офигенными возможностями по отладки, особенно YM2612: можно записать все операторы каждого голоса отдельно! Да, 24 синхронные аудиодорожки! Но это для тех, у кого проц Core i5+.

- - - Добавлено - - -
JV-Soft ты лучше внимательно видос посмотри.

JV-Soft
02.04.2018, 20:22
Но это для тех, у кого проц Core i5+
i3 у мну ,но попробую


ты лучше внимательно видос посмотри.
лучше напиши что именно ,я за сегодня столько в голову запихнул :biggrin:

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

И так на данный момент есть плеер который написан под адреса сеги #0000-#1fff я могу положить спокойно его в кеш моего пентагона, процедуры вывода в нем поменять с сеговских (код ниже ) на наш TS там как раз 4 порта , мелодию положить как и в сеге (чуть поправив плеерв плане выбора банка) в адреса #8000 - #FFFF и все должно запеть , но это в теории , есть мысли высказываете.


00b9 dd8601 add a,(ix+#01)
00bc ddcb0156 bit 2,(ix+#01)
00c0 2009 jr nz,#00cb ; (9)
00c2 320040 ld (#4000),a
00c5 00 nop
00c6 79 ld a,c
00c7 320140 ld (#4001),a
00ca c9 ret

00cb d604 sub #04
00cd 320240 ld (#4002),a
00d0 00 nop
00d1 79 ld a,c
00d2 320340 ld (#4003),a
00d5 c9 ret

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

Exodus поставил , бомба ! Есть все что мне нужно для вытягивания.

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

Еще проще возможно подключить YM2612 для тестов как в сеге , и писать в нее как и есть по адресам памяти #4000-#4003 ,тогда и плеер не надо практически переписывать.

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

Как то так получается подключение к пентагону с кешем ,для тестов в режиме совместимости с Sega.

https://b.radikal.ru/b01/1804/03/8cfd8e7c11aet.jpg (https://b.radikal.ru/b01/1804/03/8cfd8e7c11ae.jpg)

solegstar
02.04.2018, 21:11
Как то так получается подключение к пентагону с кешем ,для тестов в режиме совместимости с Sega.
я вот че думаю, а не будет ли на шине одновременно код из ОЗУ экрана и инфа из ямахи при чтении?

JV-Soft
02.04.2018, 21:28
я вот че думаю, а не будет ли на шине одновременно код из ОЗУ экрана и инфа из ямахи при чтении?
А она в тестовом плеере только писаться будет ,а то конфликта не избежать )

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

Сейчас задача проиграть реальную музыку из сеги ,а не VGM , и если по человечески это выйдет ,то тогда проекту жить , и железку мы допилим и плеер напишу.

HardWareMan
03.04.2018, 06:17
А YM2612 нечитать нельзя. У нее есть строгий слот времени обращения. Она флажком BUSY орудует. Это видно в коде плеера.

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

Точнее, нечитать можно, но обращаться надо будет очень медленно (по меркам Z80).

JV-Soft
03.04.2018, 11:52
А YM2612 нечитать нельзя. У нее есть строгий слот времени обращения. Она флажком BUSY орудует. Это видно в коде плеера.
Пересмотрел весь код плеера на который Goodboy выше давал ссыль , чтения YM2612 в нем нет.

HardWareMan
03.04.2018, 15:03
Пересмотрел весь код плеера на который Goodboy выше давал ссыль , чтения YM2612 в нем нет.
Если он использовал драйвер из BT/BT&DD то там тайминг достигается за счет "длинной" команды Z80 (2 префикса).

; Вольный перевод с буржуйского, здесь цикл = такт.
;53203424 / 7 = 7600489 = Такты YM/68K
;53203424 / 15 = 3546895 = Такты Z80

;53203424 / 3420 = 15556.55 : Строк в секунду
;53203424 / (3420 * 313) = 49.70Hz : Кадров в секунду @50Гц
;53203424 / (3420 * 262) = 59.38Hz : Кадров в секунду @60Гц
;313 - 240 = 73 * 3420 = 249660 / 15 = 16644 : Циклов Z80 на каждый VBL @50Гц
;262 - 224 = 38 * 3420 = 129960 / 15 = 8664 : Циклов Z80 на каждый VBL @60Гц
;(313 * 3420) / 15 = 71364 : Циклов Z80 на каждый кадр @50Гц
;(262 * 3420) / 15 = 59736 : Циклов Z80 на каждый кадр @60Гц

;17 * 7 = 119 / 15 = 7.93 : Ожидать циклов Z80 после записи индекса регистра
;83 * 7 = 581 / 15 = 38.73 : Ожидать циклов Z80 после записи данных в регистры $21...$9E
;47 * 7 = 329 / 15 = 21.93 : Ожидать циклов Z80 после записи данных в регистры $A0...$B6

;53203424 / (7 * 144) = 52781.1746 : Дискретизация YM

;144 * 7 = 1008 / 15 = 67.2 : Циклов Z80 на один сэмпл YM 52.781 КГц
;288 * 7 = 2016 / 15 = 134.4 26.391
;432 * 7 = 3024 / 15 = 201.6 17.594
;576 * 7 = 4032 / 15 = 268.8 13.195
;720 * 7 = 5040 / 15 = 336.0 10.556
;864 * 7 = 6048 / 15 = 403.2 8.797

WriteYM0: ;C=Индекс, A=Данные
LD (IY+0), C ;19
LD (IY+1), A ;19 ~19 циклов между записью Индекса и Данных
NOP ;4
NOP ;4
RET ;10 18+ циклов между записью Данных и следующей записью

WriteYM1: ;C=Индекс, A=Данные
LD (IY+2), C ;19
LD (IY+3), A ;19 ~19 циклов между записью Индекса и Данных
NOP ;4
NOP ;4
RET ;10 18+ циклов между записью Данных и следующей записью

Это выведено на форуме, ссылку на тему в котором я уже давал. Быстрее нельзя - YM2612 будет пропускать данные и мелодия испортится.

JV-Soft
03.04.2018, 15:26
Быстрее нельзя - YM2612 будет пропускать данные и мелодия испортится.
Да это я читал , уже подцепил YM2612 ,тест пишу.

JV-Soft
03.04.2018, 20:02
Написал тест по алгоритму test programm страница 27, тишина , вроде бы все перепроверил ,задержки ставил от небольших до огромных, надо подумать.

http://www.smspower.org/maxim/Documents/YM2612#testprogram

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

HardWareMan, вопрос , для проверки ,рабочая ли у меня YM2612 сделал порт для чтения , после сброса и чтения YM2612 она возвращает - 0 так понимаю это правильная картина и микра откликается ,так ?

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

Ошибку сделал ?адрес не так прицепил , все завелось , но пока взял порты от AY , и то они не очень годятся для этой цели , отдельный дешифратор на логике еще пришлось сделать , и пока каналы 3-6 недоступны, надо думать над новым портом под это дело , или адресам в памяти , в памяти лучше ,так как портов надо 4 штуки.

HardWareMan , загрузка кода работает с проверкой занятости YM2612 по 7 биту при чтении ,канонично :)


https://www.youtube.com/watch?v=q-PbjDebXxo&feature=youtu.be:)

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

Mick, а не вычислял с учетом твоих карт и вообще существующей активной периферии , какие порты у нас остались под полную/неполную дешифрацию ?

JV-Soft
04.04.2018, 00:26
Небольшое продолжение ,сделал железку и вернулся к варианту с записью данных через адреса #4000-#4003 (так как реализация нужного порта аолучается жутким огородом) , в железе все заработало ,теперь попытки подружить все это с сеговским плеером :)

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

Двенадцати-входной ИЛИ на диодах заработал как часы :biggrin:

https://a.radikal.ru/a30/1804/59/a31feb8ea2bct.jpg (https://a.radikal.ru/a30/1804/59/a31feb8ea2bc.jpg)

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

Пишу плеер надо трассировать ,думаю возьму STS посвежее 5.1 , а он не умеет с кешем работать как выяснилось,вешается ,а вот один из самых древних 3.2 работает на ура.
Вот вам и прогресс...

Mick
04.04.2018, 06:53
Mick, а не вычислял с учетом твоих карт и вообще существующей активной периферии , какие порты у нас остались под полную/неполную дешифрацию ?

Нет не занимался этим вопросом. Я порты выбирал уже которые были где либо (Sam Coupe, MSX). Они в явном виде не перескались особо с нашей периферией.
По логике надо брать порты с родственными устройствами, но минус в этом один. При установки одновременно таких плат, будет конфликт. К сожалению у нас не сильно развит арбитраж шины.

Могу посоветовать обратится к Черному коту, хоть многие его не долюбливают тут, но он вроде как то систематизировал используемые в Спектруме порты и может что посоветовать.

JV-Soft
04.04.2018, 12:23
Mick, Cделал как в сеге , запись идет через память #4000-#4002 , схема проста и предусматривает блокировку , думаю так можно и оставить для совместимости если чтение YM2612 не понадобится. Это дает нам много плюсов в плане переноса софта ,а минус только в том что два атрибута надо закрасить и ничего не видно , повального написания игр и мегадемо под YM2612 уже никогда не будет , а вот плеер с большим количеством музыки думаю будет интересен.

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

Мальчишки и девчонки ,а так же их родители , сеговские мелодии на спеке услышать не хотите ли :v2_dizzy_roll:


https://www.youtube.com/watch?v=cjakTmy53Uc&feature=youtu.be

Mick
04.04.2018, 12:31
Mick, Cделал как в сеге , запись идет через память #4000-#4002 , схема проста и предусматривает блокировку , думаю так можно и оставить для совместимости если чтение YM2612 не понадобится.

Мне кажется это не лучшее решение юзать через память, я бы предпочел все же через порты гонять.

JV-Soft
04.04.2018, 13:02
Мне кажется это не лучшее решение юзать через память
Тогда называй конкретные минусы.
Я пока выскажу плюсы , 2 микросхемы + 12 диодов , карту можно прицепить как навесом так и в слот , удобная адаптация софта с Sega без большого переписывания кода.
Если делать порт то не уверен что он выйдет на паре микросхем , применение плис не рассматриваю , так как это сразу ограничит круг собирающих.
Далее планирую плеер без использование КЕШ ,тогда это все прекрасно заработает на любой 128к классике.

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

PS при чем в эти две микросхемы вписывается и генератор 7,68мГц.

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

Так же пощупал специально как себя такой ИЛИ на диодах ведет , все весьма достойно ,так что тут проблем не будет.

https://a.radikal.ru/a14/1804/e7/023cf7c6156ct.jpg (https://a.radikal.ru/a14/1804/e7/023cf7c6156c.png)

OrionExt
04.04.2018, 13:04
Вклинюсь, чисто теоретически. JV-Soft не рассматривал вариант подключения ямахи, как у msx. Я о доступе (скорости) к звуковому чипу. У них там целая схема на статической памяти. Хотя это может и мимо.

JV-Soft
04.04.2018, 13:05
JV-Soft не рассматривал вариант подключения ямахи, как у msx. Я о доступе к звуковому чипу. У них там целая схема на статической памяти. Хотя это может и мимо.
Не не, нам надо лаконично , я люблю разработки как мы делали в 90-х , одна две микросхемы и имеем новый узел )

Mick
04.04.2018, 13:18
Тогда называй конкретные минусы.

Минус уже в том, что надо абстрактному программисту знать что две ячейки в памяти экрана трогать нельзя. Тоесть даже если он просто найдет картинку чтобы образно сделать дему или открытку поздравления, то надо подбирать их с учетом этой особенности. Я не сторонник засирания памяти таким образом.
Ты конечно сделаешь железку по своему, сваяешь плеер. Но кто будет им пользоваться в таком разрезе.
CPLD нечего боятся, уже давно юзеры их паяют.

Это мое мнение, к нему можно прислушиваться, а можно просто проигнорить. Но я бы если делать железку, то делал бы по нормальному через порты.

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


У них там целая схема на статической памяти. Хотя это может и мимо.

ОЗУ там вроде нужно для отображения регистров Ямахи, короче чтобы он как бы прикидывался урезанным Мунсаундом, естественно без PCM части. И да, там вроде стояла YM3812, а это OPL2

zebest
04.04.2018, 13:23
сеговские мелодии на спеке услышать не хотите ли
Хотим. схемуу подключения и собственно файл с музыкой

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

solegstar
04.04.2018, 13:23
JV-Soft, Женя, а что происходит с ямахой, когда в эти 4ре области экрана пишет другая программа? есть какие-то артефакты, или будет какой-то порт с блокировкой CS чипа?

JV-Soft
04.04.2018, 13:40
Хотим. схемуу подключения и собственно файл с музыкой
К вечеру постараюсь оформить ,надо так понимаю не просто файл музыки ,а что бы она играла ? Кеш надеюсь есть ?

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


JV-Soft, Женя, а что происходит с ямахой, когда в эти 4ре области экрана пишет другая программа? есть какие-то артефакты, или будет какой-то порт с блокировкой CS чипа?
Ставим перед CS ямахи ЛЛ1 , на одну ногу идет наш CS ,на вторую бит блокировки ,его я думал взять из выходного порта AY через инвертор.
Для программиста выглядит так , сбросили комп ,ямаха заблокирована , решили играть музыку , заслали на порт "A" AY-шки бит который открыл CS ямахи через ЛЛ-ку , играем музон , даже в плеере его можно постоянно открывать закрывать , и программисту с картинками будет пофиг ,он может писать в эти адреса экрана , а плеер сам откроет и закроет доступ к этим адресам , все просто и никому не мешает. плюс опят же все это помещается в мои две микросхемы )

ZX_NOVOSIB
04.04.2018, 15:03
Мальчишки и девчонки ,а так же их родители , сеговские мелодии на спеке услышать не хотите ли
Чо, прям и из рокинрол-рейсинга можно будет услышать мелодии? :v2_dizzy_aaaaa:

JV-Soft
04.04.2018, 15:17
Чо, прям и из рокинрол-рейсинга можно будет услышать мелодии?
Надеюсь ,что да :)

HardWareMan
04.04.2018, 19:17
Они проще даже, там плеер+мелодия умещаются в 8КБ и работают от сброса.

JV-Soft
05.04.2018, 11:33
HardWareMan, Regen все время вылетает, V0,97D , в чем может быть причина ,не в курсе ?

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

Послушал сеговскую музыку , да SN76489 тоже надо прикручивать практически везде она с YM2612 играет , придется подождать пока приедут , у нас нигде не нашел.

JV-Soft
05.04.2018, 13:48
Еще вопрос если кто то в курсе , STS 5.1 и STS6.2 дописывал Stalker или это версии уже без его участия , ни та ни та не работает с кешем ,виснет.
Версии 3.2 и 4.1 работают без проблем.
Есть тут реальщики ?:)

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

Подозреваю это из за того что в STS 5.1 и STS6.2 решили использовать какие то процедуры из стандартного ПЗУ возможно чтение клавы ,а 3.2 и 4.1 версии независимые.

goodboy
05.04.2018, 13:50
STS6.2 какие то процедуры из стандартного ПЗУ возможно чтение клавы
да, опрос клавы ПЗУшный
ну и что висит на разрешённых прерываниях

JV-Soft
05.04.2018, 14:25
да, опрос клавы ПЗУшный
Неправильно это , такая штука как STS должна быть независимая от всего, ну что ж буду юзать более ранние версии.

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

HardWareMan, YM2612 в сеге читается из любого адреса #4000-#4003 ? нет ни каких хитростей ?

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

И еще вопрос ,подглючивает плеер думаю не может это быть связано с длительностью прерываний ? В сеге они подтверждаются по m1+iorq ,или какая то длительность должна быть определенная ?

shurik-ua
05.04.2018, 14:34
А почему не использовать память на запись 0х0000-0х0001 ?
а лучше даже 0х0080-81 - ПЗУ не должно вроде бы выставлять данные если в эту память пишем - правда гдето писалось что в некоторых клонах ПЗУ всё таки выставляет данные на ШД, отчего даже немного греется.

JV-Soft
05.04.2018, 14:50
А почему не использовать память на запись 0х0000-0х0001 ?
а лучше даже 0х0080-81 - ПЗУ не должно вроде бы выставлять данные если в эту память пишем - правда гдето писалось что в некоторых клонах ПЗУ всё таки выставляет данные на ШД, отчего даже немного греется.
Можно и так , но я уже придумал железку на все тех же двух микрах при которой мы будем писать ямаху в #4000-#4003 и это не будет видно ,и экран портится не будет ,и с #4000-#4003 другие проги могут обычно работать.

Пока не хочу менять концепт ,из за того ,что мы можем брать из сеги почти готовые плейры при этом , так как думаю народ не кинется сильно дизасмить и переписывать по 3-5 кб кода по новой , какие мысли ,как думаешь ?

shurik-ua
05.04.2018, 15:03
Для начала конечно лучше услышать музыку - а порты или ячейки памяти заменить успеется )

HardWareMan
05.04.2018, 15:34
Официальная карта памяти:
http://jpegshare.net/images/93/f2/93f27ecd9a18f2818458cb2f2e765752.png
По факту YM2612 доступна во всем диапазоне 4000H-5FFFH.

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

Сигналы, заведенные на VDP, подтверждение IRQ возможно (никто не проверял + декапа пока нет).
http://jpegshare.net/images/82/2a/822a6ba0f5687894b084a34ce0fdbda7.png
Такой набор еще обусловлен тем, что 7F11H у Z80 это PSG, а он находится внутри VDP, т.е. это медленное устройство для Z80 с автоматическим арбитражем с М68К, как банк памяти.
http://jpegshare.net/images/b0/d6/b0d652f2eec4e0473f8a18bec107a6e7.png

JV-Soft
05.04.2018, 17:59
HardWareMan, позже видео сделаю , как звук портится ,может будут у тебя какие то мысли.

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


По факту YM2612 доступна во всем диапазоне 4000H-5FFFH.
Да , уже понял поковыряв несколько плееров , некоторые пишут по этой области.

goodboy
05.04.2018, 19:14
HardWareMan, а зачем в сеге вообще задействовали z80 ?

Black Cat / Era CG
05.04.2018, 19:15
а зачем в сеге вообще задействовали z80 ?
Играть музыку и "эмулировать" мастер систем, где он - цп.

goodboy
05.04.2018, 19:17
точно, про поддержку игр от SMS я забыл.
мне непонятно зачем его задействовали именно для музыки

JV-Soft
05.04.2018, 20:32
goodboy, а если посмотреть кандидатов то не много в качестве сопроцессора , 6502 ,Z80 , 8080 :)

Black Cat / Era CG
05.04.2018, 20:43
Ну да, ну и не простаивать же ему, когда он не занят эмуляцией СМС. Вроде как логично.

goodboy
05.04.2018, 21:25
кандидатов то не много в качестве сопроцессора
если забыть про поддержку SMS,
то вообще зачем понадобился сопроцессор (для муз.плейера) ?
неужто ресурсы у моторолы впритык и её решили частично разгрузить ?

JV-Soft
05.04.2018, 23:51
неужто ресурсы у моторолы впритык и её решили частично разгрузить ?
Тут все очень просто на мой взгляд , во время игры Z80 не только FM музыку играет (да на нее не надо много ресурсов) но и PCM ,это всякие выстрелы ,крики , голос , и для этого надо уже 100% времени Z80 , если это повесить на моторолу то она больше ничего не сможет делать

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

Кстати теоретически на сеге можно легко забацать плеер MOD

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

Так ,разобрался почему у меня мелодии портятся , данные FM для ямахи я перенес ,а вот данные цифровых семплов PCM для DAC я не перенес ,и в плеер не дописал вообще управление этим делом ,оказывается мелодии играют сразу все вместе и FM и цифровой звук и звук PSG , так что пока завис на коде :v2_dizzy_tired2::v2_crazy:
Минус еще в том ,что я вообще асма M68000 не знаю и на понимание кода хоть и небольшого времени уходит куча. Но все равно думаю в ближайшее время дожму.

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

HardWareMan, я правильно понимаю ,что мелодия FM может лежать в одном банке ,а PCM для нее в другом ? За основу взят плеер SMPS.
Просто я думал что из за медленного подключения банков все это дело кладут в одну 32к страницу.

goodboy
05.04.2018, 23:54
я вообще асма M68000 не знаю и на понимание кода хоть и небольшого времени уходит куча.
как вариант тормошни Titus`a, он на нём раньше кодил.

JV-Soft
06.04.2018, 00:34
как вариант тормошни Titus`a, он на нём раньше кодил.
Если совсем туго будет идти ,то придется. Тут ASM Z80 еле вспомнил и то с провалами :biggrin:

goodboy
06.04.2018, 00:43
я только помню что у моторолы нет работы с портами,
значит придётся изучать адреса для потрохов приставки

JV-Soft
06.04.2018, 03:28
придётся изучать адреса для потрохов приставки
Это уже все разобрал ,тут пока нет проблем.

HardWareMan
06.04.2018, 07:30
если забыть про поддержку SMS,
то вообще зачем понадобился сопроцессор (для муз.плейера) ?
неужто ресурсы у моторолы впритык и её решили частично разгрузить ?
Red Zone:
http://jpegshare.net/images/e8/0e/e80edb896cc55cb0137c45b1883155c8.png

https://www.youtube.com/watch?v=FZKsQ09qOk4
Как бы ты этого добился только на М68К? На самом деле примеров много, это просто самый известный. Z80 там действительно для режима М3, но если он доступен в полном режиме, то почему его бы не использовать? К слову, ранние игры его не использовали и только последние на закате нагружали по полной (видимо, игрописатели наконец-то разобрались и осознали).

HardWareMan, я правильно понимаю ,что мелодия FM может лежать в одном банке ,а PCM для нее в другом ? За основу взят плеер SMPS.
Просто я думал что из за медленного подключения банков все это дело кладут в одну 32к страницу.
В некоторых драйверах, вроде GEMS, банксвитчинг идет на лету. Там даже сама мелодия может быть в разных банках (ноты в одном, патчи в другом).

В общем, я наблюдал за всем этим зоопарком, и заметил следующее:
1. Мелодию играет М68К, Z80 стоит в ресете
2. Мелодию играет М68К, Z80 играет сэмплы (Minnesota Fats или High Seas Havoc)
3. Мелодию играет Z80, сэмплов нет/сэмплы играет М68К (Rock'n'Roll Racing)
4. Мелодию и сэмплы играет Z80
Есть еще подвиды каждого пункта, но в общем примерно понятна ситуация.

JV-Soft
06.04.2018, 11:40
HardWareMan, еще вопрос в некоторых доках пишут что PSG управляется через адрес #7F11 и порт #7F , что то в плеерах я такого порта не встречал , видимо какие то мифы ранних переводов ?

HardWareMan
06.04.2018, 13:38
YM точно сидит на MREQ. IORQ скорее всего только для M3.

shurik-ua
06.04.2018, 14:38
чтение можно организовать переводя буфер чтения памяти, тот который на ИР22 или ИР 23 в Z-состояние пока активен так называемый shadow-bit
(который этот -
бит блокировки ,его я думал взять из выходного порта AY через инвертор. )

JV-Soft
06.04.2018, 19:05
чтение можно организовать переводя буфер чтения памяти, тот который на ИР22 или ИР 23 в Z-состояние пока активен так называемый shadow-bit
(который этот -
Да , я примерно так и думал , этим спокойно будет рулить плеер , ибо для нашей карты надо 5 портов , бедный спек с его кастрированной организацией портов не хочется перегружать.

Пока в общем немного завис на концепте , мелодии можно организовывать по разному , хочу сделать плеер что бы все что нам нужно в плане данных ,нот и звуков DAC бралось из #C000 и выше.
В сеге в основном использовали два плеера (драйвера) SMPS и GEMS , я ковыряю одну из версий SMPS (спасибо GoodBoy хорошую основу подкинул) , если все пойдет нормальным темпом и не зависнет то постараюсь сделать обе версии.

Вот можно полюбопытствовать ,что на чем играет - http://gdri.smspower.org/wiki/index.php/Mega_Drive/Genesis_Sound_Engine_List

shurik-ua
07.04.2018, 00:37
а сами чипы только в Китае водятся ?

JV-Soft
07.04.2018, 11:26
а сами чипы только в Китае водятся ?

SN76489 только там нашел ,а YM2612 (TA-07 добротный аналог 90-х) я из убитой сеги выпаял.

JV-Soft
07.04.2018, 15:02
HardWareMan, ковыряю плеер , и встретил такой код , но нигде в доках не нашел регистра #B6 ,еще и на каналах 4-6 , что сие значит ?



LD A , #B6
LD (#4002) , A
nop
LD A , #C0
LD (#4003) , A

HardWareMan
07.04.2018, 20:37
Ты не внимательно читал доку, что я дал. Есть там B6. И даже аргумент C0 понятен.

JV-Soft
08.04.2018, 00:33
HardWareMan, дан ке шон , а нельзя тут написать , прикинь сколько я перечитал , неделю назад я даже не особо знал что такое YM2612 )))

PS небольшой прогресс , наконец смог разобрать как постранично адресуются DAC семплы через таблицу векторов ,сейчас пытаюсь пересобрать плеер , что бы он брал все с наших #С000 и тогда наверно у нас все заиграет как положено )))

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

HardWareMan, Еще вопрос ,а в природе есть редактор в котором с SMPS можно проделать такое - имеем мелодию в которой есть DAC семплы , к примеру их три , и они имеют номера #0A , #07 , #11 , для того что бы мне оптимизировать таблицу DAC мне надо их в мелодии поменять на #01 , #02 , #03
Это нужно если я например хочу из сборника мелодий вынуть одну и к ней нужные DAC семплы , что бы не тянуть все 32 семпла DAC , а только необходимые для той мелодии , и соответственно мы под них построим новую таблицу с векторами где эти три инструмента идут один за одним.

Надеюсь смог объяснить :biggrin:

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

HardWareMan, добавлю для большего понимания , еще пример у нас есть 5 DAC семплов по 2кб и они идут в таблице вот так -

1,2,3,4,5

Мелодия использует 2 инструмента , третий и пятый , я делаю новую таблицу выкидывая лишнее ,получаю

1,2

Числа это не только номера DAC семплов в плеере но и смещение от начала таблицы , и соответственно теперь плеер запросив 3 инструмент по смещению попадает в опу ,и надо править саму мелодию.

Либо грубый вариант в таблице вставлять байты которые будут перенаправлять вектора ,но это как то совсем не хочется.

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

PS пока сделал рабочий плеер для SEGA с банками которые идут не с #8000 , а с #C000 , соответственно банки с семплами разбил , и перестроил таблицы с учетом вышесказанного , морока еще та , но на сеге вроде бы завелось ,SMPS+DAC играет, теперь пытаюсь эту реорганизацию на спек это перенести.

HardWareMan
08.04.2018, 06:25
Я не занимался разбором анализа хранения партитуры у плееров.

JV-Soft
08.04.2018, 10:22
Я не занимался разбором анализа хранения партитуры у плееров.

Эх , жаль , но мысль моя надеюсь понятна , хочу что бы каждый трек содержал только свои DAC , а в сеге как правило не так , так как в играх обычно до десятка мелодий может быть , поэтому для DAC отдельная банка да еще и не одна. Я уже весьма прилично в дебри залез ,может напишу исправлялку.

HardWareMan
08.04.2018, 10:35
В сеге часто несколько мелодий идут с общими сэмплами и/или паттернами/патчами. Яркий пример: Jesper Kyd и его плеер от Zyrinx (мой Super 3in1 Trax). В Sub Terrania каждый уровень разбит на 2 подуровня и на них звучат мелодия (подуровень 1) и ее ремейк/ковер (подуровень 2). Оба варианта идут в одной банке, что позволяет сжать их по признаку общих патчей и даже паттернов. Причем, это на уровне каналов, например, общая басовая линия. Нечто подобное, наверное, есть и у Sonic 3D Blast, но это не точно.

JV-Soft
08.04.2018, 10:44
В сеге часто несколько мелодий идут с общими сэмплами и/или паттернами/патчами.
Да , для игр это хорошо , а для нас не очень , но пока я нацелен на два основных сеговских плеера и VGM , VGM интересен еще тем , что для него море музыки и редакторы поддерживают , хочется ведь железку с музыкой ,а не с одной демо мелодией.

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

HardWareMan, еще вопрос exodus постоянно вылетает на брэкпоинтах , и получается 90% времени уходит на перезапуски и настройку.
вылетает с ошибкой Z80.dll , уже и си обновлял и фреймворк , что ему не так... Если простро трассер то нормально , как только точку поставил пару рунов и вылет.

HardWareMan
08.04.2018, 15:07
По Эксодусу вопрос не ко мне. Иди к автору.

JV-Soft
09.04.2018, 12:21
HardWareMan, без декапса могу тебе на 100% сказать , в Sega нет подтверждения INT по M1+IORQ , и то для нас проблема , это показал код плеера. Сейчас кое что проверю ,более развернуто опишу.

JV-Soft
09.04.2018, 15:33
На данный момент -


https://www.youtube.com/watch?v=uB4IEOzz7nA&feature=youtu.be

JV-Soft
09.04.2018, 19:14
По поводу INT , проблема в том , что плеер написан был под сеговский INT , и это надо поисправлять , а инфы по полной организации SMPS формата я не нашел , так по кускам то тут то там почитал , из самого плеера по коду принцип более менее понятен , но ест еще темные пятна.

Вот для сравнения INT Sega и пентагона , и соответственно обработка такого длиннючего инта на сеге совсем иная

https://d.radikal.ru/d15/1804/23/3cd76ccd1e85t.jpg (https://d.radikal.ru/d15/1804/23/3cd76ccd1e85.png) https://d.radikal.ru/d04/1804/25/f4ee6b58b6f8t.jpg (https://d.radikal.ru/d04/1804/25/f4ee6b58b6f8.png)

HardWareMan
10.04.2018, 08:18
На сеге ИНТ ровно 1 строку растра.

JV-Soft
10.04.2018, 09:27
На сеге ИНТ ровно 1 строку растра.
Судя по осцилу используется активная часть кадра ,что для NTSC 52.667 мкс. , и примерно 177-179 тактов Z80 , поэтому в коде в определенных местах прерывания запрещаются на долго без опасения их пропустить, и это надо все пофиксить )

JV-Soft
10.04.2018, 20:39
Нашел откуда получаются глючки в звуке , и теперь задача ,может у кого то мысли будут.
Нам в основном цикле надо при проигрывании мелодии выводить в DAC звук PCM , делать это надо по любому при запрещенных прерываниях , иначе лезут глюки.

Теперь вопрос ,какова вероятность при таком коде пропустить прерывание ? так как 28 тактов это притык !



DI
LD (HL),A ;7
INC HL ;6
NOP ;4
LD (HL),C ;7
EI ;4


Итого 28 тактов , это самый быстрый алгоритм что я смог придумать , при обязательном условии что между LD (HL),A и LD (HL),C не должно быть
меньше 8 тактов иначе данные у нас в YM2612 могут не записаться.

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

PS могу извратиться и сократить код на два такта и будет 26 тактов. Тогда мы как думаете точно не пропустим прерывание ?

goodboy
10.04.2018, 21:07
не должно быть
меньше 8 тактов

inc l ; 4t

shurik-ua
10.04.2018, 23:18
какова вероятность при таком коде пропустить прерывание ?
а частота прерываний это samplerate этого самого PCM ?

JV-Soft
11.04.2018, 00:08
inc l ; 4t
А если например HL = #CFFF ? Мы заберем данные не там )



а частота прерываний это samplerate этого самого PCM ?
Нет конечно , у нас INT 50гЦ , как это может быть частотой PCM.

В дух словах попробую просто описать на абстрактном примере нашей аушки , аушка играет на прерываниях но код в прерывании должен быть крайне быстрый , так как все остальное время процессор играет трекерный MOD , и когда проц играет трекерный MOD мы не имеем права пропустить ни одного прерывания что бы не сбилась аушка, это грубое но похожее представление сеговского плеера )

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

goodboy, можно конечно проверять HL перед запретом прерываний ,что бы потом только L увеличивать ,но это тоже займет время которое при проигрывании PCM весьма ограничено.

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

goodboy, и опять же при запрете прерываний на 26 тактов , в наших ZX мы точно не пропустим прерывание ?

goodboy
11.04.2018, 00:26
А если например HL = #CFFF ? Мы заберем данные не там
извини, я думал ты передаёшь данные только в #4000/#4001

JV-Soft
11.04.2018, 00:54
извини, я думал ты передаёшь данные только в #4000/#4001
Тфу , это я уже тебя запутал , потому что с работой забегался и голова переключилась на другое.
Твой INC L , это то ,что надо ,я разобрал весь плеер весьма быстро но 20 лет не подходил к кодингу ,и вот на самом простом так облажался )))
Завтра допишу код ,узнаем нет ли пропусков INT , благо теперь в нашей плате расширений это видно осцилом ,у нас ведь INT по M1+IORQ.

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

Да пишем в #4000/#4001

shurik-ua
11.04.2018, 01:11
мы не имеем права пропустить ни одного прерывания
ты его и так не пропустишь - если прерывание поступило пока проц был под DI то даже если оно исчезнет во время этого самого DI проц всё равно перейдёт на обработчик прерывания как только получит EI.

JV-Soft
11.04.2018, 01:38
проц всё равно перейдёт на обработчик прерывания как только получит EI.
Нет , это от куда ? Уже свернул на сегодня ,завтра могу показать как идет пропуск прерываний когда при 32 тактах было DI )

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

shurik-ua, так что б долго не спорить , при поступлении прерывания проц считывает вектор с шины данных , и что он у тебя считает если прерывание было пол кадра назад ,а потом ты EI сделал :)

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

PS или я за 20 лет все совсем забыл ?

shurik-ua
11.04.2018, 01:54
shurik-ua, так что б долго не спорить , при поступлении прерывания проц считывает вектор с шины данных , и что он у тебя считает если прерывание было пол кадра назад ,а потом ты EI сделал
не спора ради, а достижения истины для )

да ты прав - в спектруме это реализовано несерьёзно как-то, а в некоторых клонах длительность так вообще конденсатором подбирают )

но если бы всё было по уму, то вектор прерывания выдаёт устройство при поступлении сигнала IntACK (подтверждение прерывания) - который проц генерирует делая активными сигналы IORQ и M1.
устройство не должно убирать свой запрос на прерывание пока не получит ACK, что в спектруме явно не соблюдается.

JV-Soft
11.04.2018, 02:41
shurik-ua, я уж забеспокоился ,что за столь долгие годы отсутствия все забыл.
Нам и доки просто говорят - После обработки команды, если прерывания были разрешены, переход к ISR. Если прерывания запрещены - /INT игнорируется.

В общем знания проверили ,укрепили , поедем дальше , надо плеер писать , что бы играл как надо )

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


что в спектруме явно не соблюдается.
PS повзрослели и уже давно поняли ,что Синклер был комерсом и жлобом , пишем на той архитектуре которая для нас стала любимой в свое время в отсутствие альтернатив)

- - - Добавлено - - -
Hacker VBI ,Володя видимо процедура в плеере которая делает во время обработки прерывания

LD A,R
LD (#xxxx),a

была введена в плеер для того , что бы моторолла сеги могла понимать в основном цикле находится Z80 или в обработчике прерывания , по признаку P/V IFF2
И делали это для управления плеером из вне , но это мои предположения на наши беседы.

HardWareMan
11.04.2018, 07:10
INC HL ;6[/CODE]

А Z80 все-же убог. ВМ80 INX делает за 5 тактов. ;)

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


ты его и так не пропустишь - если прерывание поступило пока проц был под DI то даже если оно исчезнет во время этого самого DI проц всё равно перейдёт на обработчик прерывания как только получит EI.
Это частично справедливо для INT, только если на момент EI сигнал все еще активен, так как INT чувствителен к уровню и сэмплирует его строго в определенном такте определенного машинного цикла.

Hacker VBI
11.04.2018, 10:30
JV-Soft, вполне возможно что это признак обработки прерывания, для внешнего использования.
тут код надо смотреть :) у них память общая?

JV-Soft
11.04.2018, 13:01
у них память общая?
Память у каждого своя , но они имеют полный доступ к памяти друг друга.



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

JV-Soft
12.04.2018, 17:21
Еще продвинулся , звуковые артефакты победил , прерывание не должно быть короче 32 тактов ,у меня было 26-28 ,с подтверждением по M1+IORQ пришлось удлинить.
Так же теперь можно менять темп проигрывания музыки , что очень полезно ибо на наших 48гц темп совсем не такой как SEGA 60гц , и плееру мы можем задавать нужный нам темп.

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


https://www.youtube.com/watch?v=qe5ZLxoNP1Y&feature=youtu.be

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

PS параллельно отловил баг в STS 3.2 и STS 4.1 , если делать точки отанова в КЕШ то он портит несколько ячеек памяти в КЕШ , отловил случайно переписав кусок сеговского плеера , он у меня перестал работать , при останове портился один байт памяти.
Так что вдруг кто на реале кеш трассирует имейте в виду.

JV-Soft
12.04.2018, 23:37
Светлые головы ,а то то может просветить такой момент , параллельно пытаюсь искать доки для написания VGM плеера и нашел некие исходники на C (Си) для Z80
Есть значит среда СИ для Z80 в природе ? И учитывая что VGM нужна скорость ,то тот СИ должен быть весьма быстрым.

Sayman
13.04.2018, 05:47
Светлые головы ,а то то может просветить такой момент , параллельно пытаюсь искать доки для написания VGM плеера и нашел некие исходники на C (Си) для Z80
Есть значит среда СИ для Z80 в природе ? И учитывая что VGM нужна скорость ,то тот СИ должен быть весьма быстрым.

Вообще есть исходники vgm для msx. Оно там уже давно есть и работает. Исходники на асме.
Си для z80 есть с 80х годов. Из последних гугли sdcc.
https://bitbucket.org/grauw/vgmplay-msx

JV-Soft
13.04.2018, 07:17
Вообще есть исходники vgm для msx.
В исходники не заглядывал ,спасибо за ссылку , а так да, прочитал , что есть , но это не особо поможет , они не поддерживают YM2612 , и тем более формат сеги YM2612+DAC+SN76489 , хотя если застряну то буду подсматривать как для других FM чипов реализовали код.

Уже параллельно с текущим SMPS ,начал писать VGM плеер с ноля , вчера доки поизучал , в общем более менее все понятно.


Си для z80 есть с 80х годов. Из последних гугли sdcc.
В 90-х и не слышал об этом , потом перерыв долгий , вчера нашел откомпилированный код VGM с Си на Z80 , и ужаснулся ,то что должно весить байт 500 ,весит 4 кб.
никакой оптимизации.

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


sdcc
Так понимаю это чисто компилятор без IDE ?

creator
13.04.2018, 08:31
sdcc

Так понимаю это чисто компилятор без IDE ?
https://github.com/salextpuru/sdcc-noinit/

goodboy
13.04.2018, 10:16
есть исходники vgm для msx.
так это (сжатый) дамп регистров.
неспортивно как-то

JV-Soft
13.04.2018, 12:40
так это (сжатый) дамп регистров.
неспортивно как-то
Спортивно идет работа над SMPS ,результаты выше :)
И почем бы не реализовать форматы которые есть.

Sayman
13.04.2018, 16:51
В исходники не заглядывал ,спасибо за ссылку , а так да, прочитал , что есть , но это не особо поможет , они не поддерживают YM2612 , и тем более формат сеги YM2612+DAC+SN76489 , хотя если застряну то буду подсматривать как для других FM чипов реализовали код.

Уже параллельно с текущим SMPS ,начал писать VGM плеер с ноля , вчера доки поизучал , в общем более менее все понятно.


В 90-х и не слышал об этом , потом перерыв долгий , вчера нашел откомпилированный код VGM с Си на Z80 , и ужаснулся ,то что должно весить байт 500 ,весит 4 кб.
никакой оптимизации.

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


Так понимаю это чисто компилятор без IDE ?
поддержка 2612 там есть, ещё и с pcm. скачал vgm от Comix Zone и послухал в виндовом vgm плеере.

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


так это (сжатый) дамп регистров.
неспортивно как-то

вообще пофиг что там. играет и хорошо. через гугл находятся многие дампы, плюс vgmrips.net

JV-Soft
13.04.2018, 20:13
поддержка 2612 там есть, ещё и с pcm
Бегло глянул , при чтении заголовков есть идент YM2612 ,но в звуковых драйверах ее не увидел , может с ходу не разобрался , сам YM2612 драйвер где лежит и как зовется ?

JV-Soft
14.04.2018, 00:31
Sayman, YM2612 драйвера там нет , есть OPN2 в разделе эмуляция.

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

Mick, а какой то эмуль поддерживает SAA1099 твоей ZXM-SoundCard ?

Mick
14.04.2018, 07:57
Mick, а какой то эмуль поддерживает SAA1099 твоей ZXM-SoundCard ?

Unreal точно. Один патчил Молодцов Алекс - http://micklab.ru/file/zxm_soundcard/soft/us0373_mod_saa.rar
Второй вариант добавлял deathsoft (версии конкретно не помню - см. последние версии Unreal, там по идее он должен быть).

JV-Soft
14.04.2018, 23:54
Вопрос кто в курсе какие мнемоники в последних версиях Alasm для половинок индексных регистров ?
И еще баг , в последней версии perfect commander ,которая на VRTD и которая вшита в глюк ПЗУ , при переименовании расширения файла грохается адрес его начала по которому он грузится.
Я по привычке всем старым пользовался ,что осталось с 90-х , и вот переходя на новые версии софта нахожу одни глюки ,причем весьма жесткие ,и подозрение что это не авторы их наделали ,а те кто их проги "улучшал"

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

https://c.radikal.ru/c19/1804/63/a339e7674565t.jpg (https://c.radikal.ru/c19/1804/63/a339e7674565.jpg)

Лучше поздно чем никогда , при переименования расширения файла ,после буквы расширения могут быть ,а могут и не быть символы ,по практике мы жмем пробелы ,
и это затирает/меняет адрес загрузки файла.

Вот ,где курсорчик стоит , жесткий глюк , запорол так несколько файлов.

https://d.radikal.ru/d27/1804/ce/b750b5b8108ct.jpg (https://d.radikal.ru/d27/1804/ce/b750b5b8108c.jpg)

goodboy
15.04.2018, 00:21
при переименования расширения файла ,после буквы расширения могут быть ,а могут и не быть символы ,по практике мы жмем пробелы ,
это так называемое трёхсимвольное расширение.
два байта адреса рассматриваются как доп.буквы для расширения

JV-Soft
15.04.2018, 00:55
это так называемое трёхсимвольное расширение.
два байта адреса рассматриваются как доп.буквы для расширения
Как то он не правильно сделано , вероятность при переименовании запороть 99.9% , надо тогда было делать по признакам расширений , если оно действительно трехзначное ,разрешать переименовывать все три символа , если признака нет , только один символ давать переименовывать.
Ибо телепатов очень мало , а логики для обычного пользователя нет.



goodboy,

как то так :biggrin:

https://www.youtube.com/watch?v=HRv9sKxmVUw

JV-Soft
15.04.2018, 20:21
Что то переход на новый софт вообще пошел комом , значит решил написать загрузчик человеческий для плеера , взял за основы свой простенький цифровой редактор
, код в текстовом формате Alasm весит около 11кб , при загрузке текста в версии Alasm 4.44 , 5.05 , 5.07 и при выходе в STS потом невозможно вернутся в alasm или виснет
или сбрасывается , на Alasm 2.8 все отлично , с чем такое может быть связано ?

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

PS Alone Coder тут бывает ?

JV-Soft
18.04.2018, 00:18
Понемногу пишу плеер ,стал интересный вопрос , как нам грузить файлы музыки ,они ведь более 64кб часто бывают.
Вариант первый ,использовать формат дискет MS-DOS.
Вариант второй , файлы бьются по 64кб , первый главный файл имеет расширение ".V" (от VGM) ,остальные ".C" , что бы пользователь случайно не загрузил мелодию с "середины" , саму длину я найду где закодировать.
Это самое логичное как по мне решение для рядового пользователя.

Плеер точно должен грузить разные мелодии , делать несколько демок с мелодиями не хочу , иначе народ быстро к такому потеряет интерес , если он конечно будет )))

Или будут еще какие то мысли ?

Вот уже написал для этого загрузчик

https://d.radikal.ru/d35/1804/ca/2faab293945dt.jpg (https://d.radikal.ru/d35/1804/ca/2faab293945d.jpg)

Хотя можем и MS-DOS :)

CodeMaster
18.04.2018, 06:22
первый главный файл имеет расширение ".V" (от VGM) ,остальные ".C"

Файлы с расширением ".C" можно и не показывать в списке. Тогда никаких отличий от MS-DOS (для пользователя)

shurik-ua
18.04.2018, 08:17
они ведь более 64кб часто бывают.
а есть винчестер, подключенный к пентагону ? - если да могу скинуть простенький файл браузер с фат драйвером, когда то давно писал чтото вроде видеоплеера (вполне успешно). )

solegstar
18.04.2018, 08:23
Или будут еще какие то мысли ?
Женя, нужен винт и/или SD...

JV-Soft
18.04.2018, 11:08
Файлы с расширением ".C" можно и не показывать в списке. Тогда никаких отличий от MS-DOS (для пользователя)
Отличная идея.


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


Женя, нужен винт и/или SD...
Можно ,и нужно добавить поддержку , но я ориентируюсь в начале на классику 128к.

JV-Soft
19.04.2018, 18:41
Вопрос кодерам ,ну или критикам , собрал загрузчик , загрузчик VGM + процедура печати шрифта 8X4 + процедурка печати HEX чисел , код весит ровно 1кб (без шрифта), и вот думаю это много/мало ,или нормально ? Давненько не писал,как то все слегка топорно :)

shurik-ua
19.04.2018, 18:52
главное чтоб работало ) - по тактам там успевало, а оптимизировать всегда успеется - якщо у пана є час і натхнення )

goodboy
19.04.2018, 19:04
процедура печати шрифта 8X4 + процедурка печати HEX чисел
а чем 8х8 не устраивает и зачем HEX ?

JV-Soft
19.04.2018, 19:31
а оптимизировать всегда успеется
Оно то так ,но потом как всегда не будет времени, прикинул ,весь плеер (пока под TR-DOS ,без винта) с оформлением должен весить примерно до 15кб.

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


а чем 8х8 не устраивает и зачем HEX ?
Хочется инфу о мелодии и семплах выводить компактно ,HEX еще пригодится при отладке плеера , будет мне в экран писать чем плюется в ямаху.
По итогу 8x8 может будет правильнее если впишется в мою задумку.

JV-Soft
20.04.2018, 13:15
а чем 8х8 не устраивает
Еще добавлю , вот написал поддержку тегов , при 8x8 это займет много места , при 8x4 как то компактнее.

https://b.radikal.ru/b24/1804/d8/18540751eb98t.jpg (https://b.radikal.ru/b24/1804/d8/18540751eb98.jpg)

JV-Soft
20.04.2018, 16:07
Mick ,когда допилю VGM к YM2612 , можно попробовать в плеер добавить поддержку твоего Moon Sound.

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

А потом бы с автором Wild Player договорится ,и было бы отлично впихнуть это туда.

Mick
20.04.2018, 19:42
Mick ,когда допилю VGM к YM2612 , можно попробовать в плеер добавить поддержку твоего Moon Sound.


Я только за :)

JV-Soft
06.05.2018, 17:25
HardWareMan, вопрос а YM2612 переваривает команды DAC если их ставить не после конфигурирования FM регистров ,а между , то есть так -

fm reg,data ; конфигурирование FM регистра
#2A,data ;вывести байт в ЦАП
fm reg,data
#2A,data
fm reg,data
#2A,data

HardWareMan
06.05.2018, 18:45
Регистр адреса регистра общий. Так что, нельзя. Но, если каждый раз перегружать его - то можно, но с учетом BUSY флага. А зачем?

JV-Soft
06.05.2018, 22:32
А зачем?
VGM формат оказался не так прост.
Суть такова ,идут себе данные для FM , а между ними приходит команда играть PCM семпл , мы начинаем испольнять команду по проигрыванию PCM ,настраиваем нужный PCM семпл, его частоту выборки , и начинаем играть выкидывая это в DAC естественно очень часто это надо делать и иногда долго если это например труба какая нибудь в цифре , но в VGM поток непрерывный и нам в это же время надо дальше записывать данные в FM регистры ,в то время как мы между ними шлем что то в DAC :v2_wacko:

Хотел попробовал проанализировать это дело на VGM плеере для MSX , но как подсказали к MSX не цепляли YM2126 и вижу что в коде плеера стоят вроде как заглушки где он PCM для YM2612 должен обрабатывать.

Все в общем движется , сейчас разбираюсь с таймингами ,так как оказалось ,что прерывания нам в этом плеере вообще не нужны , там все надо делать на отсчетах и таймерах.

Вот гитара небольшая ,это уже чисто VGM :)


https://www.youtube.com/watch?v=uBHXsiyKuCs&feature=youtu.be

На данный момент написан полный человечески загрузчик вплоть до одной мелодии на целую дискету , построитель таблиц PCM семплов , частичный обработчик команд ,и частично плеер.

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

PS вот чувак через эмуляцию на MSX сделал ,но сам пишет что очень сыро - https://www.youtube.com/watch?v=2jiSclQJ-2s

Ну ничего , MOD плеер написали на 3.5мГц , это подумаю и тоже напишу :)

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

Вот еще один кусочек VGM


https://www.youtube.com/watch?v=92d5VMGfPjw&feature=youtu.be

JV-Soft
07.05.2018, 11:33
Очень интересно , анализ кода показал ,что MSX плеер и Teensy 3.5 не обрабатывают PCM команды #90-#95 которые управляют потоками ,частотой и настройками PCM , непонятно ,из за сложности реализации или еще по какой то причине. Но во всех файлах с PCM что я просматривал команды #90-#95 используются постоянно. Выходит вышеприведенные плееры просто не играют определенные звуки.

JV-Soft
07.05.2018, 23:55
Подумал на досуге о таймере , вопрос может кто то подобное реализовывал ,что бы велосипед не изобретать.
Хочется сделать как можно более точный плеер , основная структура такова ,нам надо читать команды и исполнять их со скоростью 44.100 кГц , но на исполнение разных команд уходит разное время ,и поэтому нельзя в общем цикле поставить задержку с одинаковым временем , так как частота выборки станет плавать.
В виду этого пишу такой таймер в который после исполнения каждой команды будет заноситься число отсчета до чтения следующей команды.
Ни кто ни писал никогда подобную синхронизацию для получения четких равных "прерываний" когда между ними исполняются код с разным количеством тактов ?

shurik-ua
08.05.2018, 02:11
в DMA Ultrasound стояла 8253 - как раз для этих целей

JV-Soft
08.05.2018, 03:27
Ну и последнее на сегодня , подсчеты такие -
что бы написать корректный и полноценный парсер VGM нам надо в 79 тактов уложить -
выборка команды из озу
проверка на окончание банка памяти
обработка команды ,самое логичное умножение кода команды на 3 для получения вектора на таблицу jump-ов исполнения команд
исполнение команды - запись регистров FM или DAC иногда с чередованием.
если в это время играет DAC ,то все делать надо параллельно

Все это каждый раз и за 79 тактов как то сложновато ,если не сказать больше ...:v2_conf2:

Что скажут господа программисты светлые головы ?

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


в DMA Ultrasound стояла 8253 - как раз для этих целей
не ,подсчеты показали что таймер мне уже не нужен , почитай выше , 79 тактов ...
Остальные нужные задержки я уже просчитал и реализовал.

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

PS расчет прост ,требование VGM выбирать и исполнять команды с частотой 44.100кгц
3.5мГЦ (Z80) / 44100 = 79.3 такта на все.

shurik-ua
08.05.2018, 04:16
44.100 выбрано видимо чтобы играть на ПЦ онли - для 8-бит это избыточно имхо - на ГС 37.500 вроде даже, но и это много.

HardWareMan
08.05.2018, 06:33
PS расчет прост ,требование VGM выбирать и исполнять команды с частотой 44.100кгц
3.5мГЦ (Z80) / 44100 = 79.3 такта на все.
Вот поэтому и не сношай мозги себе и окружающим и брось этот мертворождённый формат VGM. Сконцентрируйся, лучше, на нативных драйверах. Их и выдернуть реально и крутить на слабом железе не сверхзадача.

JV-Soft
08.05.2018, 12:07
Вот поэтому и не сношай мозги себе и окружающим и брось этот мертворождённый формат VGM. Сконцентрируйся, лучше, на нативных драйверах. Их и выдернуть реально и крутить на слабом железе не сверхзадача.
Есть некоторые идеи , и как минимум треть плеера написана , VGM нам хорош по той причине что много музыки.
на счет нативных драйверов тоже будет , но это проект больше зимний ,для долгих вечеров , там каждую мелодию надо править и пересобирать вручную , или писать "исправитель"
А пока VGM , спортивное программирование )

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


44.100 выбрано видимо чтобы играть на ПЦ онли
видимо да , под PC точили
У GS хоть 320 тактов в прерывании )))
Хотя на нашем прекрасном пентагоне с КЕШ в турбо есть 158 тактов при 44100 , а это уже не мало :) И напрашивается плеер как с поддержкой обычного ZX и нашего пентагона.

JV-Soft
08.05.2018, 23:53
и брось этот мертворождённый формат VGM
:v2_tong2:
Переписал по новой FM часть плеера ,и это прошу заметить еще без 4 каналов SN (в пути в Эстонии застряли:biggrin:)


https://www.youtube.com/watch?v=BqfazaAWOVc&feature=youtu.be

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

PS на экране это не глюки , атрибуты и полоски ,что бы понимать что парсер делает.

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

PPS на данный момент плеер весит 5 кб со всеми делами, думаю в изначально намеченные 16 кб уложусь.

JV-Soft
15.05.2018, 01:00
Пофилософствую немного на тему DAC+PCM , проанализировал некоторое количество VGM треков и максимальная частота PCM в них 32 кгц.
Это радует , у меня как раз выходит в плеере такая частота под DAC , но стал остро вопрос о том что PCM у нас может быть разной частоты от 8 до 32кГц.
и нам в реальном времени надо делать resampling , и делать очень быстро , и делать так ,что бы воспроизведение семпла с любой частотой не изменяло время задержек ,
Сначала попробовал строить таблицы ,но из этого ничего не вышло , медленно.
Потом через деление частот семплирования и семпла попробовал пропускать ненужную инфу PCM ,тоже огород.
И сегодня изобрел (я наверно не первый, скажите если было)

И так самый быстрый resampling в realtime , получаем коэффициент для ресамплинга делением частоты (22050) семпла на частоты вывода (32000)
пример 22050 / 32000 = 0,69

Далее делаем наш адрес выборки не 16 битным ,а 24 битным hl=xxxx,xx


LD HL,#C000 ;начало PCM семпла
LD A,#9C ; 255-99 для счета до 100 что бы не морочится с десятичной арифметикой
LD E,#45 ; коэффициент ресамплинга 0,69
resampl
OUT (port),(HL) ;macros вывод в цикле идет с частотой 32000 гц
ADD A,E ; наш дополнительный десятичный адрес после запятой ,XX
JP NC,resampl ;дополнительный десятичный адрес указывает когда извлечь следующее значение для DAC , иначе выводится текущее
ADD A,#9C ;не теряем результат переполнения нашего десятичного (0-99) значения после запятой
INC HL ; собственно заветный момент ресамплинга
JP resampl

Это ресамплинг без потери данных ,с одинаковым временем и частотой вывода и очень очень быстрый :)

Или уже было такое и я не молодец :biggrin: ?

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

PS на данный момент парсер главных команд FM+PSG работает с частотой до 40кгц ! так что Z80 не так уж плох :)

shurik-ua
15.05.2018, 01:08
мне кажется что нужно сделать чтобы кол-во тактов в процедуре было одинаковым независимо от условного перехода.

и вроде бы ты сделал семплер с аккумулятором фазы - в журнале Радио за 91-ый год чтото похожее описывалосб.

JV-Soft
15.05.2018, 01:32
мне кажется что нужно сделать чтобы кол-во тактов в процедуре было одинаковым независимо от условного перехода.
да это не проблема ,семо собой в плеере допилю


LD HL,#C000 ;начало PCM семпла
LD A,#9C ; 255-99 для счета до 100 что бы не морочится с десятичной арифметикой
LD E,#45 ; коэффициент ресамплинга 0,69
resampl
wait 7+6+10 takt
resampl_1
OUT (port),(HL) ;macros вывод в цикле идет с частотой 32000 гц
ADD A,E ; наш дополнительный десятичный адрес после запятой ,XX
JP NC,resampl ;дополнительный десятичный адрес указывает когда извлечь следующее значение для DAC , иначе выводится текущее
ADD A,#9C ;не теряем результат переполнения нашего десятичного (0-99) значения после запятой
INC HL ; собственно заветный момент ресамплинга
JP resampl_1


и вроде бы ты сделал семплер с аккумулятором фазы - в журнале Радио за 91-ый год чтото похожее описывалосб.
Честно три вечера просидел , чуть моск не лопнул. Обязательно подниму журнал, почитаю.
Быстрее по моему уже не выйдет ,или есть мысли ?

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

shurik-ua, а какой номер журнала если помнишь ,а то все листать долго будет )

shurik-ua
15.05.2018, 02:22
ошибся немного - 1992 №№11-12

в 1991 №5 - теория

JV-Soft
15.05.2018, 02:44
shurik-ua, там вроде бы не про ресемплинг ,а про генератор управляемый кодом (ГУК) , но тоже интересно.

HardWareMan
15.05.2018, 06:28
JV-Soft, я так же делал, но, правда, не на скорость. Это известный случай использования дробного ресемплинга в целочисленной среде.

goodboy
15.05.2018, 10:20
out port,(hl)
inc hl
делается одной командой - outi
только она ещё и B меняет

JV-Soft
15.05.2018, 12:17
JV-Soft, я так же делал, но, правда, не на скорость. Это известный случай использования дробного ресемплинга в целочисленной среде.
Тут именно на скорость необходимо.
То что я пришел к этой формуле думаю вполне логично ,у всего программирования общие принципы и их решение ,но тут радует что своим мозгом.


out port,(hl)
inc hl
делается одной командой - outi
только она ещё и B меняет
Да ,спасибо ,но в нашем случае это не подходит, я в коде изобразил виртуальный макрос , в реале через память пишем наш звук.

Еще по сторонним VGM плеерам , как уже говорил выше ,плеер teensy и msx не поддерживают PCM ,вот еще один классный проект и он так же не поддерживает PCM,
я задал вопрос автору ,он говорит та музыка что у него есть идет без PCM и поэтому он не реализовывал поддержку PCM , но я глянул его код и он видимо просто списан с плеера на teensy 3.5 , при чем в коде пытались частично реализовать PCM но не доделали ,хотя мегагерц там куча.
Играет приятно ,наш будет не хуже думаю - https://www.youtube.com/watch?v=WoAp2-gWaLM&lc=z22kyvqxlsn0ghiyd04t1aokgtepu50y4cs2vqpmimgkbk0 h00410.1526349612053122

shurik-ua
15.05.2018, 17:54
если звук PCM одноканальный то может сделать простейший DMA на дискретах, который бы полностью разгрузил проц от "дурной" работы )

JV-Soft
15.05.2018, 18:31
если звук PCM одноканальный то может сделать простейший DMA на дискретах, который бы полностью разгрузил проц от "дурной" работы )
ду ну , так карта стоит баксов 5 , а с пдп будет проект на 50 баков , оно нам надо...

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

Вот , это без FM


https://www.youtube.com/watch?v=hn83jknrpN8&feature=youtu.be

А это уже PCM + FM


https://www.youtube.com/watch?v=QZXUiU8-T0w&feature=youtu.be

JV-Soft
16.05.2018, 21:51
Новая задача , проверка на конец банка , вот работает наш парсер , выбирая команду за командой от #C000 до #FFFF ,выбираем постоянно через HL, все команды разной длинны , и идет ветвление при исполнении , и проверка после каждого INC HL отнимает много времени , есть какие нибудь мысли как нам проверять HL ?
Думал в конце банка поставить метку типа ноля , но она может попадать как на команду так и на данные , и проверять каждый раз не годится ,ничего не выиграем.
Сделать циклы по 256 байт и потом проверять H , так же не получится ,команды идут разной длинны и с ветвлением легко прозевать > 256
перекомпановывать все данные как вариант ,что бы в конце каждого банка поставить свою команду смены банка для ориентации ,что бы в новом банке данные начинались с команды , это тоже не очень хочется ,на длинных мелодиях долго парсить и двигать.

Есть мысли ?

Пример под конец банка идут команды ,где число это команда для парсера , а XX это то что будет исполнятся уже по переходу в обработчик команды

50,xx,52,xx,xx,53,xx,xx,95,xx ;конец банка #FFFF но не конец команды ,она продолжается в следующем
xx,xx,xx,62,50,xx ;следующий #C000

goodboy
16.05.2018, 23:25
проверка после каждого INC HL отнимает много времени
в играх от Ocean рамдиск работает примерно так

inc l
jr nz,NextByte
inc h
jr nz,NextByte
ld h,#c0
ChangePage

JV-Soft
17.05.2018, 00:01
в играх от Ocean рамдиск работает примерно так
да у меня так же сейчас в одной из версий , но это времени жрет много.
вторая версия парсера у меня вообще через стек работает , что бы скорость получить ,и SP вообще проблема проверять , и все больше склоняюсь к тому ,что придется парсить и реорганизовывать мелодию перед проигрыванием , но очень не хочется ,вот и думаю над идеями.

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

PS в VGM еще один "классный" момент , в отличии от человеческих форматов ,там инструмент может иметь длину более 64к (#FFFF) ,там используется 32 битная длинна семплов ,но это я уже решил.

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

goodboy, вот есть команда

52,xx,xx

нам надо выбрать команду 52 , перейти на ее подпрограмму , выбрать ее xx,xx данные , это уже три раза inc L (hl) и три раза проверить на конец банка , а потом эту команду надо обработать и исполнить и на все от выборки проверок и исполнения желательно потратить только 79 тактов )))

goodboy
17.05.2018, 00:07
все больше склоняюсь к тому ,что придется парсить и реорганизовывать мелодию перед проигрыванием , но очень не хочется ,вот и думаю над идеями.
а если создать/добавить свою команду.
"конец блока", с параметром номер след.страницы ?

JV-Soft
17.05.2018, 00:22
а если создать/добавить свою команду.
"конец блока", с параметром номер след.страницы ?
я про это и говорил ,но после загрузки мелодии в страницы ,придется ее все предварительно парсить вставлять свою команду максимально ближе к концу страницы ,а оставшиеся данные (обязательно с началом новой команды) перемещать на другую страницу подвигая все данные вверх во всех страницах , и так для каждой страницы.
Вот не очень хочется это делать ,это разрушит мой красивый алгоритм 32 битной математики по которому строится таблица расположения PCM семплов.

JV-Soft
24.05.2018, 21:58
Приехали наконец то SN76489 , на днях подключу посмотрю как все это заиграет.
А пока изучал разные версии формата VGM и у меня целый трактат родился , наверно стоит отдельную тему в звуке сделать, в двух словах ,есть ранние версии формата и ранние очень убогие и ресурсоемкие ,а есть последняя версия 1.7 которую я собственно и пытаюсь реализовать ,вот она как раз умеет управлять и PCM потоками ,и данные для регистров занимают в десятки раз меньше ! соответственно мелодии в десятки раз меньше , но вот нет пока конвертера из более ранних версий на более позднюю.

HardWareMan
25.05.2018, 07:01
JV-Soft, ну так в чём дело? Напиши свой конвертор!

Hacker VBI
25.05.2018, 11:35
JV-Soft, похоже это только ты сможешь сделать :)

JV-Soft
25.05.2018, 16:23
JV-Soft, ну так в чём дело? Напиши свой конвертор!
Тут буде нужна видимо твоя помощь. Коротко формат 1.7 играет мелодию более менее по человечески ,загрузка регистров команда играть , далее пауза в зависимости от (pal/ntsc) , если при этом надо играть pcm то идет команда и у меня этой частью рулит как бы отдельный модуль следя за временем для загрузки FM регистров.
а вот ранние форматы играют иначе , там нет пауз похожих на прерывание ,там после загрузки FM постоянно в регистры шлется либо мусор либо pcm ,но pcm идет так - что бы проиграть один байт идет команда из двух байт ,и так на каждый байт pcm ,отсюда слоновые размеры файлов.
И проблема конвертера первое правильно отсеять мусор (его там реально 90%) , второе реорганизовать pcm ,так как даже хранение в разных форматах разное.

JV-Soft, похоже это только ты сможешь сделать
Искренне спасибо за вдохновение :)

JV-Soft
02.06.2018, 14:57
Прикрутил SN76489 , при включении противно гудит , пишут что это хороший признак ,значит рабочая , но на команды не реагирует.
Сделал тестовую схему ,у нее есть выход готовности после активации входа CE , откликается нормально , значит рабочая по всем признакам , но зараза не играет , и так все пять штук. Теперь в догадках то ли китайские подделки , то ли я что то не учел.

OrionExt
02.06.2018, 15:06
Я вот тоже прикупил у собирателей барахла (китайсов). За символическую сумму денге. Но теснить все это буду на MSX. Когда ни будь:)

JV-Soft
06.06.2018, 22:53
Пока промежуточный отчет , товарищи из texas instruments выпустили в свое время два даташита , в одном ШД как и должна быть , в другом строго наоборот , то есть D7 это D0 , мне попался неправильный вариант. Но переделав все верно SN-ка так и не завелась.
OrionExt, ты говорил ,что у тебя лежат SN-ки , а проверить не на чем ? А то может я танцы исполняю на заведомо мертвых китайских чипах...

ZX_NOVOSIB
07.06.2018, 09:47
Ты ж мужик У тебя ж где-то сега рабочая есть, изыми из неё чип, потом разберешься - возвернёшь.

JV-Soft
07.06.2018, 11:12
ZX_NOVOSIB, ты ж не вчера родился, в сеге sn-ка интегрирована в бис.

ZX_NOVOSIB
07.06.2018, 11:21
Вот засада. Ну если в сеге в бис, то и в спектруме можно в бис /плис, куда деваться )
Плис на этапе разработки, чтобы понять что к чему, а в финальном продукте чип )

JV-Soft
07.06.2018, 13:25
Плис на этапе разработки
У меня уже все разработано.
Mick , а игрософты случаем не использовали в своих платах SN76489 ?

Mick
07.06.2018, 13:29
а игрософты случаем не использовали в своих платах SN76489 ?

То что я пытал, там обычный AYгрик

JV-Soft
09.06.2018, 19:34
Рабочие sn-ки , собрал игралку на ардуине ,выяснил что бы sn-ke отдуплиться надо WE держать не меньше 6 мкс ! нереальный тормоз ,надо схему теперь менять что бы проц не вэйтить ,да и времени вэйтить нет.

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

Телефон под рукой только лежал )


https://www.youtube.com/watch?v=TP2fQrPgsCs&feature=youtu.be

OrionExt
12.06.2018, 13:45
Ну, так, поздравляю.

Х.з. Покупаем кота в мешке. У меня по этому чипу даже не понятно как его прикруть к MSX.

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

Ага. Тоже исторический чип TMS9918 на ардуине толкал. Фиг вот сразу с этими историческими интерфейсами разберется.

JV-Soft
15.06.2018, 18:06
Фиг вот сразу с этими историческими интерфейсами разберется.
Ну как то это нереально долго 6мкс держать систему повисшей с выставленными данными и ждать пока чип выдаст готовность.

creator
15.06.2018, 19:40
Ну как то это нереально долго 6мкс держать систему повисшей с выставленными данными и ждать пока чип выдаст готовность.
Кстати, обычное дело, оно там решалось/решается кучкой IN из того же порта в цикле. Тоже офигеваю с того же.

OrionExt
15.06.2018, 20:25
Ну как то это нереально долго 6мкс держать систему повисшей с выставленными данными и ждать пока чип выдаст готовность.
Та да NOP, NOP, ...

Вторая половина 70г.:v2_dizzy_roll:

JV-Soft
15.06.2018, 20:43
Та да NOP, NOP, ...
Не совсем так , она организована таким образом , делаем запись в нее например через порт , а её сигнал - ready цепляется на wait CPU , и она вэйтит весь комп пока не запишет в себя данные, так по даташиту )

OrionExt
15.06.2018, 21:47
Не совсем так , она организована таким образом , делаем запись в нее например через порт , а её сигнал - ready цепляется на wait CPU , и она вэйтит весь комп пока не запишет в себя данные, так по даташиту )Не нy, это. Как подключать, 100 вариантов +1.

Как пример AY-3-8910. Совсем не дружественный интерфейс. Раз. Оригинальные от GI черепахи еще те. Два.

Вот пока для меня видеться вариант для всех этих чудных артефактов из прошлого, через wait. Все это сугубо мое, заточенное на модульную структуру ретро-компа.

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

А потом ready - это уникальных вывод. Обычно все это добро молчит. Вот опять пример. V9958. Есть выход вайт. НО! Этот выход работает на доступ к видео-памяти. А если захочется очень быстро писать регистры VDP (> 7MHz), облом. Сигнал вайт - это не регламентирует (оно понятно, и логично. логика чипа будет в ауте).

JV-Soft
16.06.2018, 17:47
Свершилось , нарекаем тебя - Sega Blaster !

Для начала немного теории если кто то возьмется цеплять SN76489 к старому железу.
Пишется она следующем образом - опустив CE в ноль она тут же выставляет сигнал READY в ноль (ЗАНЯТА) , далее показываем ей что данные готовы опустив WE в ноль,
после этого ей фиолетово что мы делаем с WE ,она не обращает на него внимание (в отличии от нормальных устройств которые пишутся по фронту или спаду WE) , и потом она сама отдуплившись спустя 5-10 мкс забирает данные с шины ,и выставляет READY в единицу говоря ,что данные получила, вот такая интересная микра.

Я долго размышлял как нам ее прикрутить не усложняя карту и не тормозя всю систему на такую огромную длительность , решил заставить SN76849 фактически собой же и управлять, пришлось добавить регистр и один элемент "И" ,
при этом ничего тормозить не надо , управлением сигналами SN76849 занимается она же сама ,автоматически снимая WE и CE.
Давайте обсудим схему , на следующей неделе можно разводить и заказывать платы , примерная стоимость собранной карты думаю не будет более 5$

Пример работы YM2612 + SN76849 , звук SN76849 сильно выдвинул на передний план ,это мне для тестов , и частота немного не совпадает ,пока тактирую на 3.58 ,а 3.5 с проца.

Но уже оркестр интересный :)


https://www.youtube.com/watch?v=jBLRfaznKb8&feature=youtu.be

Схема -

https://b.radikal.ru/b06/1806/6a/a14c74373382t.jpg (https://b.radikal.ru/b06/1806/6a/a14c74373382.gif)

Звук только SN76849 без YM2612


https://www.youtube.com/watch?v=Z15LGuDFwck&feature=youtu.be

ZX_NOVOSIB
16.06.2018, 19:38
А из рокинрол рейсинга не выдирал музон?

JV-Soft
16.06.2018, 19:52
А из рокинрол рейсинга не выдирал музон?
Думаю будет , все не обхватить.

saymon
16.06.2018, 20:21
Женя а как подключать планируется , bus, подпайка или через панельку через проц

ZX_NOVOSIB
16.06.2018, 20:24
Как будет стыковаться с платой доработок?

JV-Soft
16.06.2018, 20:32
а как подключать планируется , bus


Как будет стыковаться с платой доработок?

ZX-BUS

shurik-ua
16.06.2018, 22:32
верхние 5 диодов и инвертор наверное можно заменить одной ИД7.

JV-Soft
16.06.2018, 22:54
Трекер на котором можно наваять музон под эту карту - http://www.deflemask.com/

solegstar
17.06.2018, 10:38
Женя, посмотри возможную замену дешифратора вместо монтажного ИЛИ. Из доп. микросхем в твоей схеме - ИД7 и ЛЕ4.
65541

daniel
17.06.2018, 11:17
надо бы на PentEvo проверить, прежде чем разводить? Или под неё не расчитано?

JV-Soft
17.06.2018, 11:24
надо бы на PentEvo проверить, прежде чем разводить? Или под неё не расчитано?
Нет у меня понтевы, но проблем быть не должно.

JV-Soft
19.06.2018, 10:47
HardWareMan, раздумываю над конвертером , вот смотрю поток VGM
идет команда 28 , 00 ,то есть KEY OFF , а за ней пошли 28,04 28,01 28,05 28,02
И это все одна за одной и так может быть подряд до 20-30 команд , в этом нет никакого смысла , и весь файл забит таким хламом , и это я пока вижу потому что команда 28 часто используется , а как анализировать поток если команды для других регистров бестолковые... ???

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

PS мне кажется что создатель ранних версий формата решил не заморачиваться с правильными задержками ,а тупо сделал их при помощи такого хлама ,в итоге файл весит вместо 20-100к где то 1000-3000к , и этот формат используют до сих пор так как эмуль которым это грабят никто не правил.

HardWareMan
20.06.2018, 07:24
Этой ерундой могут заниматься и драйвера. А дамп просто дамп. И эмуль тут ни причем.

JV-Soft
20.06.2018, 10:59
И эмуль тут ни причем.
Не не , как раз причем , только один эмуль может грабить VGM это Kega Fusion , и как раз он и выдает то ,что я привел выше , и треки идут с мусором и огромных размеров , есть типа сжималка VGM ,я ее пробовал она немного но не существенно делает файл меньше оставляя весь хлам.

HardWareMan
20.06.2018, 11:36
В Кеге просто сделано сохранение дампа записей в регистры YM2612. Я делал дамп записи в регистры у драйвера Battle Toads & Double Dragon - там тоже хватало мусора без смысла.

JV-Soft
20.06.2018, 12:11
В Кеге просто сделано сохранение дампа записей в регистры YM2612.
Что то там не доделано , так как во всех мелодиях такой мусор как приводил выше , а глядя код плеера должно быть все иначе - запись регистров YM2612 пауза длинной в прерывание , опять запись регистров YM2612 (тоесть работа человеческого плеера) , а в сохраненном дампе из кеги мы видим совсем другую картину ,запись регистрв ,мусор ,запись регистров ,мусор. Дойдут руки сделаю осциллограмму , там это хорошо видно.

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

PS вот deflemask с форматом VGM 1.7 музыку VGM делает по человечески , регистры, пауза ,регистры ,пауза , плохо что чувак конвертер под трекер не сделал.

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

На минуту проигрывания VGM должно уходить в среднем 50-100 кб потока , а кега этот же поток делает 500-1000 кб

JV-Soft
20.06.2018, 22:16
В Кеге просто сделано сохранение дампа записей в регистры YM2612.
Еще вопрос ,а то в контексте не понял , ты делал плагин к кеге для граба VGM ?

HardWareMan
21.06.2018, 07:54
Еще вопрос ,а то в контексте не понял , ты делал плагин к кеге для граба VGM ?
Когда я это делал, Кеги еще не существовало. Я напаивал дополнительные 8КБ ОЗУ (точнее, расширял штатное, чтобы не миррорилось), подключался к реальной сеге Орионом 128 через шину Z80 (МРН32 с боку был, использовал BUSR/BUSA, развязанная шинка). Идея была проста: я подменял код записи в YM (там 2 блока на RST висели) и оно помимо записи в YM копировало в дополнительные 8К адрес (0/2), регистр и данные (3 байта на запись). Вмещалось не особо много - после прогона играло несколько нот. Но связка 28/xx мелькала постоянно.

Картинок нет потому, что в 90х фотика у меня не было, железо, ессно, все утеряно после 3х переездов. А вот литература осталась. Есть тетрадка, там 2 или 3 версии платы расширения для Ориона для сопряжения с Сежкой. Я даже софт писал, он дампил звуковые сэмплы из картриджей. Да и вообще, навигацию делал. А еще, в качестве баловства, когда я себе собрал АЦП/ЦАП плату на ИР17+ПА1 2шт, я захватывал шинку у Z80 и считывал байт и отпускал. Адрес захвата: в кольце 1F00-1FFF. У GEMS это буфер для ЦАП. Орион играл цифровые сэмплы паралельно Сеге, лол. Иногда даже без щелчков склейки...

JV-Soft
03.07.2018, 01:05
Господа железячники за темой следящие , возник вопрос ,а вообще думаю это неоходимость , на ZX-Bus есть несколько ног земли и питания , а не обсудить ли возможность ввести аналоговую землю и питание ?
Для обычных карт роли это не сыграет ,а вот для звуковых это просто необходимость , ибо никакими другими методами помехи от цифры не побороть.

Mick
03.07.2018, 06:43
Господа железячники за темой следящие , возник вопрос ,а вообще думаю это неоходимость , на ZX-Bus есть несколько ног земли и питания , а не обсудить ли возможность ввести аналоговую землю и питание ?

Да уже давно я на своих звуковухах разделяю.

JV-Soft
03.07.2018, 11:38
Да уже давно я на своих звуковухах разделяю.
На каких пинах zx-bus у тебя аналоговая земля и питание ? И не делал ли на zx-bus выход для звука ?

Mick
03.07.2018, 11:52
На каких пинах zx-bus у тебя аналоговая земля и питание ? И не делал ли на zx-bus выход для звука ?

Ни на каких, я на самой карте ее разделяю. В добавок отдельно ставлю стабилизатор с +12В на +5В (+8В) для питания аналоговой части.
Смысла курочить шину я не вижу. В принципе можешь сам поглядеть на мои звуковухи и компы (которые на CPLD и FPGA) на моем сайте

JV-Soft
03.07.2018, 12:05
Ни на каких, я на самой карте ее разделяю.
Но поставив стаб ,через общую землю лезет ого го помех , если ты в своих компах сводишь на общей земле звук с бипера ,ау ,ковокса ,и карты то помех на звуке соберется много. Это в теории ,так как у меня нет в наличии твоих компов. Или я не прав ?

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


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

Mick
03.07.2018, 12:39
Но поставив стаб ,через общую землю лезет ого го помех , если ты в своих компах сводишь на общей земле звук с бипера ,ау ,ковокса ,и карты то помех на звуке соберется много. Это в теории ,так как у меня нет в наличии твоих компов. Или я не прав ?

Ну если бы ты поглядел все таки карты, то мог заметил что и землю я разделяю через 1 Омный резистор.
По шумам, шумомером не мерял, но на слух вроде ничего не пролезает. Единственно что надо понимать в каком месте объединять две земли. Их как правило объединяют в месте интенсивного обмена данными (по сути там где шина данных). Я уже с этим сталкивался в ZXM-SoundCard Extreme, когда полуличл кучу помех от того что не в том месте был резистор.
В добавок я на свои карты ставлю доп 5.25 разъем питания, что дает возможность при необходимости запитывать ее отдельно. Хотя конечно питание не отвязано в этом случае от основной плате. Но на Фениксе, как и на Эво есть джампер +12В, который можно снять и тогда вообще +12В на питание аналога будет не зависимым от питания платы компа.

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

shurik-ua
03.07.2018, 15:43
может Молекс какой нибудь отдельно для аналога подключать - и помех поменьше и в стандарт разъёма не надо лезть.

JV-Soft
03.07.2018, 16:23
может Молекс какой нибудь отдельно для аналога подключать - и помех поменьше и в стандарт разъёма не надо лезть.
Можно ,но не всегда удобно это сделать.
Попробую нынешние поделки развязать как Mick , а там видно будет.

JV-Soft
03.07.2018, 19:09
Mick, а в твоих компах делаются входы для дополнительного мекширования звука для карт ? Что бы весь звук (beep,ay,covox и т.д) не дергая разьемы шел в одни колонки ?

Mick
04.07.2018, 06:53
Mick, а в твоих компах делаются входы для дополнительного мекширования звука для карт ?

В последних да. По сути у меня повторяет кусок с звуковых карт. Резисторы, разделительные конденсаторы и операционник.

Mick
18.07.2018, 09:52
Схема -

Скажи а принциальна такая схема записи данных в SN76489, через RDY и регистр защелку?
А то вот есть мысля сделать твою карту только не для хардкорщиков, а для "казуалов" :) с применением CPLD, добавив еще систему обращения к микрухам через порты.

JV-Soft
18.07.2018, 14:09
Скажи а принциальна такая схема записи данных в SN76489, через RDY и регистр защелку?
не совсем понял , сейчас в разъездах , распиши чуть подробнее, что тебе надо с RDY
Я только за ,делай , но смотри ,через порты софтина работает дольше ,для vgm это критично, поэтому я остановился на записи в память , есть мысли в финальной версии сдвинуть эти адреса с экрана,в идеале в буфер принтера , или можно вообще в ПЗУ.
Второе ,если будешь делать на плисине ,попробуй предусмотреть возможность спбоса SN-ки , для этого в нее надо записать пяток команд , иначе она гудит, то что написано аппаратно по мануалу у меня не прокатило.

Mick
18.07.2018, 15:13
не совсем понял , сейчас в разъездах , распиши чуть подробнее, что тебе надо с RDY

Я насколько понял процесс записи в регистр SN-ки занимает 32 такта его частоты или не так.
Ты как бы пытаешься не держать шину эти такты и используешь регистр защелку. Но это все равно ведь не спасет от например повторного обращения (тут же), то есть один фиг тебе надо выждать в плеере необходимое количество времени для повторной записи. Иными словами сигнал RDY логичнее как бы еще и проверять программно, чтобы не было коллизий.

Или я не понял процесс.



Я только за ,делай , но смотри ,через порты софтина работает дольше ,для vgm это критично,

Использование портов не подразумевает использовать из в vgm, хотя не отменяет. Скорее это дополнение, для любительского творчества.
Порты Ямахи предполагаю нацепить на те же порты что и Мунсаунд, где сидит OPL.
К тому же можно подцепить сигнал IRQ, для прерываний от карты, хотя надо поглядеть что их вызывает. Если как в Мунсаунде таймер, то будет совсем шикарно.


Второе ,если будешь делать на плисине ,попробуй предусмотреть возможность спбоса SN-ки , для этого в нее надо записать пяток команд , иначе она гудит, то что написано аппаратно по мануалу у меня не прокатило.

Ну Плисина этот громко сказано, скорее всего CPLD типа EPM7032STC44 или EPM7064STC44

JV-Soft
18.07.2018, 15:47
Я насколько понял процесс записи в регистр SN-ки занимает 32 такта его частоты или не так.
Да , около 9 микросекунд.

Ты как бы пытаешься не держать шину эти такты и используешь регистр защелку.
Да.


Но это все равно ведь не спасет от например повторного обращения (тут же), то есть один фиг тебе надо выждать в плеере необходимое количество времени для повторной записи.
В теории да ,но на практике я наоборот не успеваю подготовить данные и обработать данные в потоке , но тут переживать нечего , при выборке 44 кГц , мы пишем раз в 79 тактов , смысл проверять готовность SN-ки нет. А в каких то своих плеерах ,если ты их будешь писать ,думаю это не станет проблемой , Z80 не пуля )
Но если тебе для успокоения хочется ,то заведи для проверки RDY , но пока ты его программно будешь пытаться проверить ,он уже выйдет в готовность , не вижу смысла.
Попробуй на асме при выводе в нее данных и чтении через порта RDY такты посчитать.

то есть один фиг тебе надо выждать в плеере необходимое количество времени для повторной записи.
это само себя исключает из объяснения выше.


К тому же можно подцепить сигнал IRQ, для прерываний от карты, хотя надо поглядеть что их вызывает. Если как в Мунсаунде таймер, то будет совсем шикарно.
Задействовать таймер от ямахи ? Можно ,но на VGM его некогда проверять ,нет у нас ни одного свободного такта , а на плеерах с перываниями ,нам это в обще не надо ,все по классике IM2. И в сеговском совфте таймер нигде не используется так как он не опрашивается. Это как бы велосипед который тебе придется самому разработать аппаратно и поддержать программно.

Ну Плисина этот громко сказано, скорее всего CPLD типа EPM7032STC44 или EPM7064STC44
тут я не советчик или критик ,это мне ничего не говорит , я - ЛА3 :)

Mick
18.07.2018, 15:56
Задействовать таймер от ямахи ? Можно ,но на VGM его некогда проверять ,нет у нас ни одного свободного такта , а на плеерах с перываниями ,нам это в обще не надо ,все по классике IM2. И в сеговском совфте таймер нигде не используется так как он не опрашивается. Это как бы велосипед который тебе придется самому разработать аппаратно и поддержать программно.

Дело в том что музыка для Мунсаунда может играть с разным темпом, то есть есть модули музыки по прерываниям 50Гц, а есть и 60Гц. В принципе есть и более с высокой частотой, но я их не пробовал. Так вот для проигрывания музыки с 60Гц я использовал прерывания от Мунсаунда, а прерывания от кадровой развертки игнорировал, благо есть у Ямахи флаг по которому можно определить она прервалась или кадры. Вот собственно и тут попробовать.
Опять же эти все плюшки уже никак не относятся к Сеге и ее музыке, это ближе уже к чиcтому OPN.

JV-Soft
18.07.2018, 16:38
музыка для Мунсаунда может играть с разным темпом, то есть есть модули музыки по прерываниям 50Гц, а есть и 60Гц.
В VGM то же самое , но особенность построения плеера такова ,что задержки приходится считать программно. Если задействовать прерывания от карты ,то крепко усложняется схема , и полностью реорганизовывать плеер надо ,что по моим подсчетам вообще не получится.
А если ты будешь писать под своя аппарат свой софт (не VGM) то это будет конечно плюс для простоты проигрывания 60 гц.

Mick
19.07.2018, 11:15
скорее всего CPLD типа EPM7032STC44 или EPM7064STC44

Гы гы погорячился я малость. Прикинул, если все адреса, данные и управление закинуть в CPLD, то 44 ноги не влезу, придется брать тогда EPM7064STC100

JV-Soft
19.07.2018, 20:52
Mick, думал уже как сброс SN-ке сделать ?

Mick
20.07.2018, 06:58
Mick, думал уже как сброс SN-ке сделать ?

Пока нет. Но можно поступить как с SAA1099. У ней тоже нет хардварного сброса и чтобы не "пела" когда не нужно просто отключал входную частоту. Так можно поступить и тут.
То есть добавить порт или адрес памяти, куда нацепить один триггер. По сбросу он отключает генерацию частоты на SN. А в плеере сначала разрешаешь генерацию, а потом делаешь что хочешь.
При выходе из программы - отключаешь генерацию частоты.

Mick
20.07.2018, 11:56
Вот набросал предварительный вариант карты. Пока не глубоко влезал в железную часть посему что то возможно добавится, а что то уберется.

Схема удалена, так как есть более свежие версии.

Извините за не скромность, назвал карту ZXM-SegaBlaster :)

P.S. Внезапно обнаружил, что файло-место у меня на форуме приближается к критическим 20мб. Посему этот файл как рабочий будет в скором времени удален.

Mick
22.07.2018, 14:37
Попытался почитать про прерывания от YM2612 и понял, что прерывание возникают при переполнении любого из таймеров (A или B).
И отдельного флага прерывания как у YM278 нет. Посему надо будет проверять оба бита (хотя когда сам пишешь плеер то понятно какой таймер срабатывает), но все же.
Чтобы вызвать прерывание, надо сначала записать значение в таймер A (регистры 24h, 25h) или B (регистр 26h). Затем одновременно нужный таймер запускаем и устанавливаем флаг разрешения флага переполнения (регистр 27h)

Все правильно я понял?

Теперь о портах:
Для YM2612 предлагаю использовать те же порты, что и для Мунсаунда FM часть.
FM часть
порт C4h -> запись адреса регистра (набор регистров 1)
C5h - запись данных в регистры набора 1
С6h - запись адреса регистра (набор регистров 2)
C7h - запись данных в регистры набора 2

C4h на чтение - статус

Правда сразу же возникнет вопрос о совместном использовании двух карт (ZXM-SegaBlaster и ZXM-MoonSound). Но с другой стороны плодить кучу портов для однотипных устройств OPN - OPL как бы не комильфо. Очень можно сожрать все порты.

Также думал вести порт как Мунсаунде wave часть
Регистр 7Eh - запись адреса регистра
7Fh - запись или чтение данных

Но там только будет интересовать чтение второго регистра, по нему можно было детектить наличие Мунсаунда, так и тут.
Так как этой части нет в YM2612, то порт целиком виртуальный и отрабатывается CPLD.

В принципе вообще YM2612 можно было бы нацепить на порты AY, как в Турбосаунде FM часть. Но тогда могут быть коллизии при использовании с AY
Посему я считаю что не слишком это целесообразно.

Теперь по портам SN76489. В Спекке данный чип не применяется, посему нужно будет выделить порты.
В MSX был такой Franky cartridge. (SN76489 and VDP), который юзал порты 48h~49h
и плюс 3Fh на чтение статуса.

Так что жду ваши предложения и комментарии.

Напомню, это вопрос по портам, обращение через память будет взято как у JV-Soft (плеер он вроде написал, так что не будем изобретать велосипед)

JV-Soft
22.07.2018, 17:46
вопрос по портам
Мне лично без разницы в какие порты писать , главное без конфликтов.

JV-Soft
23.07.2018, 00:21
C4h
C5h
С6h
C7h
С точки зрения VGM , оптимально , скорость выборки инкрементом одного регистра.

Mick
23.07.2018, 08:50
С точки зрения VGM , оптимально , скорость выборки инкрементом одного регистра.

Ну да.

Остается по сути вопрос по портам SN76489
Предлагаю:
48h - запись данных в SN76489
49h - запись в управляющий регистр виртуальный, чтобы разрешать работу генератора частоты для SN76489 (по сути такая же фигня как и с SAA1099)
49h - чтение статуса SN76489 (тоже виртуальный регистр)

И да, нужен все таки детект карты как в Мунсаунде (плюс два порта) или как то обойтись без этого. Или например загнать ее признак в порт 49h?

Mick
23.07.2018, 15:33
Пообщался я с Black Cat на предмет портов. Сразу отмечу обращался к нему я, а не как обычно наоборот.
Порты 48 и 49 для SN76489 он поддержал, а вот про порты YM2612 вышла целая дискуссия.
Поскольку YM2612 является приемником YM2203 по FM части, то есть YM2612 это OPN2, а YM2203 это OPN, то по логике музон написанный для TSFM (имеется ввиду FM часть) должен идти на этом чипе. Посему он ратует, что порты должны быть такие же как у FM части TSFM.
Иными словами дополнение к AY или к Turbosound.
В принципе логика в этом есть.
Но тогда возможен конфликт между TSFM и этой картой. Я имею ввиду ZXM-SoundCard и ZX-SegaBlaster. Как поведет себя плата TSFM, которая вставляется в гнездо AY сказать трудно.

Какие еще мнения есть на этот счет?

JV-Soft
23.07.2018, 16:26
Поскольку YM2612 является приемником YM2203 по FM части, то есть YM2612 это OPN2, а YM2203 это OPN, то по логике музон написанный для TSFM (имеется ввиду FM часть) должен идти на этом чипе.
Когда дойдут руки не скажу ,но когда дойдут проверю музыку от TSFM на YM2612.

JV-Soft
24.07.2018, 19:50
Так в теории ,проще переписать TSFM плеер под YM2612 ,чем городить кучу железа из пересикающихся портов ,в итоге нынешний софт все равно из моего понимания не сможет сыграть TSFM на YM2612 напрямую без правки кода.

Mick
25.07.2018, 08:20
Так в теории ,проще переписать TSFM плеер под YM2612 ,чем городить кучу железа из пересикающихся портов ,в итоге нынешний софт все равно из моего понимания не сможет сыграть TSFM на YM2612 напрямую без правки кода.

В теории все проще кажется :)
Вот поэтому я и хочу логику запихать в CPLD, раз пока непонятки с портами.

Mick
25.07.2018, 16:57
Обновил схему http://zx-pk.ru/threads/29001-zx-ym2612.html?p=972551&viewfull=1#post972551
Добавил пару конфигурационных джамперов на всякий пожарный. Также на всякий случай сигналы записи и чтения YM2612 пропущу через CPLD.
Так будет для начала гибче управлять ее.
А как все отладится, тогда что то и уберется.
Окончательный вариант схемы будет готов после разводки платы, ибо многие сигналы на CPLD поменяют свои выводы.

JV-Soft
30.07.2018, 01:15
Какая тактовая у TSFM в FM режиме ? На слух инструменты совсем не похожи на YM2612

Mick
30.07.2018, 07:00
Какая тактовая у TSFM в FM режиме ? На слух инструменты совсем не похожи на YM2612

Хороший вопрос. Насколько я помню YM2203 тактируется 3,5МГц вроде.

JV-Soft
30.07.2018, 14:46
Насколько я помню YM2203 тактируется 3,5МГц вроде.
доки пока читаю по тсфм , у меня ее нет и этой темы я не успел коснуться, да по фм они практически идентичны , но получится ли сдружить софт при помощи плисины пока не понятно , порты ,частоты , переключение.
на недопс нашел инфу ,но исходники есть только под псшные утилиты ,исходники плеера тсфм что то не нашел , есть в открытом доступе ?
Могу конечно вилд плай поковырять что бы ym2612 запустить но все это время время...

Djoni
30.07.2018, 17:07
доки пока читаю по тсфм , у меня ее нет и этой темы я не успел коснуться, да по фм они практически идентичны , но получится ли сдружить софт при помощи плисины пока не понятно , порты ,частоты , переключение.
на недопс нашел инфу ,но исходники есть только под псшные утилиты ,исходники плеера тсфм что то не нашел , есть в открытом доступе ?
Могу конечно вилд плай поковырять что бы ym2612 запустить но все это время время...

Может тут есть исходники ?

http://zx-pk.ru/threads/6372-perenos-tfm-muzyki-na-real.html

JV-Soft
30.07.2018, 19:23
Я так понимаю те кто создавал TSFM и конвертил музыку с сеги в плеере использовали возможности AY шки для имитации SN76849 ?
Или звуки SN76849 вообще в музыке TSFM не проигрываются ?
Ортодоксы подключайтесь к теме )))

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

Mick, а еще меня мысли посещают ,а не сделать ли себе карту на флехе например xxsf040 , цена три копейки , и не плисина , входов хватит на все адреса и iorq,mreq,rd,wr.

Mick
30.07.2018, 21:38
Mick, а еще меня мысли посещают ,а не сделать ли себе карту на флехе например xxsf040 , цена три копейки , и не плисина , входов хватит на все адреса и iorq,mreq,rd,wr.

ПЗУха это только для дешифратора. А если применять внутри регистры, а они там будут ибо к примеру глушить надо SNку, то ПЗУ уже не пойдет.

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


доки пока читаю по тсфм , у меня ее нет и этой темы я не успел коснуться, да по фм они практически идентичны , но получится ли сдружить софт при помощи плисины пока не понятно , порты ,частоты , переключение

Упустил момент как раз с частотой YM2203. Придется мне обе частоты и 7.68 и 3.58 завести на CPLD, чтобы была возможность их коммутации на YM2612

Кстати, а ту на пробовал запускать YM2612 на частоте 3.58?

JV-Soft
30.07.2018, 21:49
Кстати, а ту на пробовал запускать YM2612 на частоте 3.58?
А в чем проблема ? Запустится но сегавский музон будет явно не в тех тонах.

Нашел исходники плеера TSFM ,но нет одного файла исходника на диске "m2hr" , на сайте недопс в файлах и дисках его тоже нет.
По ссылке выше тема ,как бы пишут запихните музон туда и скомпилите ,вот диск , а на нем не весь исходник :)
Соответственно не могу собрать плеер что бы попробовать его с YM2612

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

PS на сайте алонекодера по TSFM ничего не нашел.

Mick
30.07.2018, 21:53
А в чем проблема ? Запустится но сегавский музон будет явно не в тех тонах.

Я имел в виду как будет играть музон TSFM на YM2612 на этой частоте.

JV-Soft
30.07.2018, 21:55
PS мысли вслух , вообще создатели TSFM пошли каким то сложным способом ,читая сейчас ,они подстраивались под YM2612 и SN-ку , написали конверторы и редакторы ,плеер , но сделали базу на двух 2203
а вот чего сразу не взяли YM2612 ???

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


Я имел в виду как будет играть музон TSFM на YM2612 на этой частоте.
Да тут бы плеер запустить ))) исходник не весь , частоту переключить не проблема.

Mick
30.07.2018, 22:06
а вот чего сразу не взяли YM2612 ???

Потому как изначально плата TSFM вставлялась в панельку AY и по видиму чтобы габариты не слишком большие были.


Кстати есть тема на форуме - http://zx-pk.ru/threads/7101-muzyka-dlya-tsfm.html?p=119773&viewfull=1#post119773

JV-Soft
30.07.2018, 22:55
Я имел в виду как будет играть музон TSFM на YM2612 на этой частоте.
Да тут бы плеер запустить ))) исходник не весь , частоту переключить не проблема.



Потому как изначально плата TSFM вставлялась в панельку AY и по видиму чтобы габариты не слишком большие были.
Чуваки просто огромную работу по софту сделали ,сейчас одному сложновато вытянуть. А железку новую сделать в сто раз проще.
От этого мне и не понятен подход.

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

PS выкопал более ранний плеер , но с ходу он у меня не взлетел ,так что пошли ковыряния. Как всегда по мере результата буду писать.

JV-Soft
31.07.2018, 12:54
Еще вопрос ,может у кого то есть полный исходник плеера - tfmcom12.H от Alone Coder

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


ПЗУха это только для дешифратора. А если применять внутри регистры, а они там будут ибо к примеру глушить надо SNку, то ПЗУ уже не пойдет.
Это скорее мне для настройки конфига и отладки , ибо плисин у меня нет и я с ними не знаком на данный момент.

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

Mick, ты не в курсе на сколько медленна ym2203 ? в плеерах TSFM она постоянно перед записью проверяется на занятость.
С YM2612 таких проблем не возникает.

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

HardWareMan, а в YM2612 есть разница между 1,2,3 и 4,5,6 каналами если просто FM использовать ? если при записи их перепутать ,просто право/лево поменяется ?

Mick
31.07.2018, 13:04
Mick, ты не в курсе на сколько медленна ym2203 ? в плеерах TSFM она постоянно перед записью проверяется на занятость.
С YM2612 таких проблем не возникает.

Скорее всего это подстраховка на случай работы в турбо режиме. А вот насколько будет правильно работать в турбо режиме YM2612 вот это вопрос :)