Разработка и ромхакинг > Ромхакинг и программирование
Sega MD Sound (Yamaha 2612/PSG) - Что оно такое и с чем его едят
(1/4) > >>
Segaman:
Подскажите пожалуйста доку по сеговскому звуку. Ато уже много знаю про звук, даж драйвер из соника выдрал и довел до совершенства, а как им управлять ничо не знаю. Или хотябы расскажите как юзать сеговский ЦАП (DAC), он же шестой канал синтезатора. тот шо PCM звук выдаёт. Ато в сонике за него отвечает з80, а я в нём ничерта не сооброжу, как он звук выдаёт в йамаху.
Ti_:

--- Цитата: Segaman от 23 Март 2011, 12:01:05 ---Или хотябы расскажите как юзать сеговский ЦАП (DAC), он же шестой канал синтезатора. тот шо PCM звук выдаёт.

--- Конец цитаты ---
Чип FM-2612 доступен по адресам 4000H - 4003H в адресном пространстве Z80, или по адресам A04000H - A04003H в адресном пространстве 68000. Далее будут использованы значения с 4000H до 4003H.


Регистр   D7   D6   D5   D4   D3   D2   D1   D0     
2AH   8 бит данных ЦАП     
2BH   Включение ЦАП   не используется   

В регистр 2AH записываются данные 8 бит PCM. Все тайминги (дискретизацию) должен делать процессор.

Доступ к регистрам 1 части осуществляется так: 8-ми битный адрес регистра (его номер) записывается по адресу 4000Н, а доступ к данным через 4001Н. Для доступа ко второй части используется адреса 4002Н для адреса и 4003Н для данных.

(сега теч док, кэп)
Segaman:
Спасиб огромное. Всё понял, очень помог. Свои наработки можт потом сдесь выложу. Хочю прост движ звуковой написать, уже неплохое сжатие для звука придумал.
Segaman:
Там же, чтоб юзать сеговский цап нужно обращаться во вторую часть. В первой цапа нид. + к этому ты не написал, что нужно ещё и статус йамахи проверять. Ну т.е. занята она или нет. Это читаем 4000h и проверяем бит d7. Если бит установлен, то йамаха занята и юзать её нереально. Я правильно говорю?
Ti_:

--- Цитата: Segaman от 24 Март 2011, 10:11:03 ---Там же, чтоб юзать сеговский цап нужно обращаться во вторую часть. В первой цапа нид. + к этому ты не написал, что нужно ещё и статус йамахи проверять. Ну т.е. занята она или нет. Это читаем 4000h и проверяем бит d7. Если бит установлен, то йамаха занята и юзать её нереально. Я правильно говорю?

--- Конец цитаты ---
судя по этому - первую:

--- Цитата ---Регистры с 22H по 2BH доступны только по адресам 4000Н-4001Н. Регистры с 30H по B4H доступны по адресам 4000H-4001H для каналов 1..3 и по адресам 4002H-4003H для каналов 4..6 (Канал 1=4, 2=5 и 3=6).
--- Конец цитаты ---
проверять занятость по доку надо, но я не проверял. (т.к. только цапу и тестил)
feos:
Надо спрашивать у HardWareMan'а, ибо он автор вот этой демки

http://gendev.spritesmind.net/forum/viewtopic.php?t=386
http://8bc.org/wiki/index.php/Sega_Genesis/Megadrive
http://www.facebook.com/group.php?gid=23404251004
goodbye:
музыка проигрывается сдесь с использованием PSG ? только ?

мне просто затестить нужно. а как проверить работает ли PSG хз..
с этой демкой можно ?
GManiac:
В этой демке задействован только 6-й канал YM2612 в режиме DAC.
goodbye:
ну этого достаточно.
я просто делаю стерео мод приставки... и не мог найти псг канал. а приставка видимо супер китайская. псг уже видимо с эти 2 канала засунули :)

ну если всё слышно и всё поет значит псг есть и я его слышу .) так ? :)
GManiac:

--- Цитата: goodbye от 08 Ноябрь 2012, 15:37:14 ---ну если всё слышно и всё поет значит псг есть и я его слышу .) так ? :)

--- Конец цитаты ---
Ещё раз, в этой демке ПСГ не задействован, как ты его можешь слышать? При чём тут стерео-мод и эта демка? Если ты хочешь проверить звук, включи, например, Comix Zone, там в большинстве мелодий на двух каналах разный звук совсем. ПСГ там тоже есть: гудящий такой звук. Особенно его хорошо слышно в мелодии Episode 1, Page 2-2 (5-я мелодия в саунд-тесте ), он играет основную партию. В эмуляторе поиграйся, поотключай PSG и YM отдельно.
Добавлено позже:
Или After Burner, там все ударные на ПСГ сделаны. Но стерео там нет, по-моему.
goodbye:
ну насчет отключения поиграюсь.

стерео мод притом, что .. я нашёл 2 канала стерео но на всех сегах с процессора выходит псг сигнал отдельно (конечно потом он преобразовывается либо в нормальное стерео либо в нормальное моно) но изначально с процессора выходят левый правый и псг каналы. вот я нашёл только 2 левый и правый.

а при игре в комикс зон слышу все звуки хорошо :) звук офигенный... видимо смешение уже на уровне процессора происходит. в моё случае.
Rumata:
Это ты опять про свой Gopher?
goodbye:
ну да .. нельзя ? :)

хоть приставка не так уж и хороша, сделаю ей стерео мод хотябы :)
Segaman:
в ней физически стерео нет.
у неё звукоэмуляция. проц мощный позволяет.
+ эмулит з80. тут программно нужно разбирать и железно.
звук стерео не выдавить.
а так юзай саунд тест в контре.
там стерео :)
goodbye:
запишу тебе то что там есть :)
но как я слышу в эмуляторе и там... дык один в один))))
Segaman:
мнительность никто не запрещал

эмуляция в эмуляторе звучит также, как эмуляция в гуфе
goodbye:
пусть :)
полюбому лучше слушать такое стерео чем хреновое моно в оригинале.
vladikcomper:

--- Цитата ---звук стерео не выдавить.
--- Конец цитаты ---
Можно. Разумеется, это не поддерживается на нативном уровне, а делается программным трюком (подобно тому, как можно растягивать слои по вертикали с помощью VDP-трюков).

Заключается трюк в следующем:
- Задаешь панорамирамирование на левое (B6 80)
- Посылаешь сэмпл в DAC, он, соотвественно, играет в левом динамике
- Задаешь панорамирование на правое (B6 40)
- Посылаешь сэмпл в DAC, и он заиграет в правом динамике

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


--- Цитата ---Ато в сонике за него отвечает з80, а я в нём ничерта не сооброжу, как он звук выдаёт в йамаху.
--- Конец цитаты ---
Воспроизведение DAC сэмплов всегда возлагают на плечи Z80. Для этого пишут так называемый Z80-драйвер, который работает постоянно и посылает сэмплы в DAC через определенные интервалы времени. Помимо воспроизведения сэмплов, драйвер еще должен реагировать на команды, например, чтобы стороние программы могли сообщить, какой именно сэмпл воспроизводить.

В Соник 1 реализован наиболее простой Z80-драйвер. Если отбросить некоторые нюансы, драйвер управляется лишь одним байтом в памяти, и через него ему сообщают, какой сэмпл проиграть. В Sonic 1 очень немного DAC-сэмплов, причем они настолько малы, что целиком умешаются в памяти Z80 (в 8 килобайтах, включая размер кода самого драйвера).

В Соник 1 для сэмплов используется формат сжатия с потерями - 4 bit DPCM (Дифференциальная Импульсно-кодовая модуляция, где вместо абсолютных значений дается разность между предыдущим и новым положением волны, с использованием дельта-массива из 16 возможных значений разности). Такой же формат использовался во всех последующих Сониковских играх, включая 3Д Бласт.

Дизасембл драйвера можно скачать здесь: http://info.sonicretro.org/images/0/0a/S1_z80_dasm.7z

Еще, если тебя сильно интерисуют DAC-драйвера, советую посмотреть мою гордость: драйвер Mega PCM =) Он заточен под SMPS Соник 1, в замену его родного, не очень функционального драйвера, хотя драйвер может использоваться где угодно и для чего угодно.
Его особенности:


--- Цитата ---* Автоматическое переключение банков (благодаря чему драйвер может воспроизводить сэмплы любого размера, вплоть до 8 МБ, им даже можно играть песни)
* Поддержка двух звуковых форматов (8 bit PCM и 4 bit DPCM)
* Расширенное управление воспроизведением: Стоп, Пауза, Повтор, Приоритет
* Панорамирование звука (невероятно, но этого не было в родном драйвере Соник 1)
* (В SMPS Соник 1) До $5F слотов для сэмплов
--- Конец цитаты ---

Что самое невероятное, несмотря на перегруженность новыми функциями (ничего из вышеперечисленного не было в оригинальном драйвере), он умудуряется работать немного быстрее старого драйвера, потому что я оптимизировал все по максимуму. Более быстрая работа означает, что сэмплы можно играть на более высоких частотах (выше 27 кГц, старый драйвер играл примерно 23-24 кГц)

http://forum.sonic-world.ru/topic/20447-sonic-1-mega-pcm-driver/ - Драйвер с открытым исходным кодом.
Segaman:
за дравину респект, правда чтото подобное я сам уже написал.
правда до паузы я не додумался)
SEGADreamFAN:
vladikcomper, Спасибо за чудесный драйвер! Реально крутая вещица раскрывающая возможности СМД ещё больше.
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии