Разработка и ромхакинг > Ромхакинг и программирование
Sega MD Sound (Yamaha 2612/PSG) - Что оно такое и с чем его едят
<< < (3/4) > >>
DrMefistO:
Пасибо) Дока действительно грамотно написана. Начал с азов с 18-й страницы.)
Добавлено позже:
Глупый вопрос, но, как войти в дебагер-консоль? Чето жмякаю кнопки, которые в конфиге (`) и не канает. Вылезает Master Volume.
MetalliC:
эмулятор надо запускать с ключиком -debug, т.е. что-то вроде
mess.exe genesis -cart "blablabla.rom" -debug
можно еще в настройках включить -  в mess.ini найти и изменить строчку debug 0 на debug 1, либо если используешь UI-версию Default Game Options - Debug - Activate Internal Debugger
DrMefistO:
Ага, галку нашел, и дебагер ваще чоткий) Даже трейслог есть (жаль, что без получения значений регистров).

Правда не понятка с бряком на Z80 RAM 0000. Не брякается туда. У меня там сразу идет прыжок на команду.

Еще бы доку по YM2612 на английском, или на русском. Та, что в сега-тех-рус тоже неплохая, но про таймеры A и B там написано совсем мало. Мол, их никто не использует, а у меня как-раз драйвер, который использует эти таймеры.

Еще хотелось бы узнать про банки: что в них за данные в РОМе, минимальный размер, и максимальный размер?
MetalliC:

--- Цитата: DrMefistO ---Правда не понятка с бряком на Z80 RAM 0000. Не брякается туда. У меня там сразу идет прыжок на команду.
--- Конец цитаты ---

есть там косяк/особенность - бряки срабатывают только на текущем процессоре


--- Цитата: DrMefistO ---Еще хотелось бы узнать про банки: что в них за данные в РОМе, минимальный размер, и максимальный размер?
--- Конец цитаты ---

в смысле ?
DrMefistO:

--- Цитата: MetalliC ---есть там косяк/особенность - бряки срабатывают только на текущем процессоре
--- Конец цитаты ---

Ну я перехожу фокусом на нужный процессор. И затем ставлю бряк. Что значит на текущем процессоре?
Банк я имею ввиду, который адресуется через 0x6000, подавая биты 23-15.
MetalliC:

--- Цитата: DrMefistO ---Ну я перехожу фокусом на нужный процессор. И затем ставлю бряк. Что значит на текущем процессоре?
--- Конец цитаты ---

уфф, break/watch point-ы срабатывают только для того процессора, который в данный момент включен командой focus, а для остальных - нет.
т.е. если сделать типа так:
focus 1
bpset 0x0000
focus 0
бряка срабатывать не будет
DrMefistO:

--- Цитата: MetalliC ---focus 1
bpset 0x0000
focus 0
бряка срабатывать не будет
--- Конец цитаты ---

Ну это я понимаю. Я вроде так и делал.
Добавлено позже:
А банки что?
GManiac:

--- Цитата: DrMefistO от 19 Ноябрь 2012, 13:59:07 ---Еще хотелось бы узнать про банки: что в них за данные в РОМе, минимальный размер, и максимальный размер?
--- Конец цитаты ---
Банк для Z80 - зеркало размером в 32 кб из памяти 68к из области 000000-FF8000. Номер банка может быть то 0 до 511. Для Z80 банк виден в адресах 8000-FFFF.


--- Цитата: DrMefistO от 19 Ноябрь 2012, 13:59:07 ---Еще бы доку по YM2612 на английском, или на русском. Та, что в сега-тех-рус тоже неплохая, но про таймеры A и B там написано совсем мало. Мол, их никто не использует, а у меня как-раз драйвер, который использует эти таймеры.
--- Конец цитаты ---
http://gendev.spritesmind.net/forum/viewtopic.php?t=386
Ссылка в конце первого поста. Дока довольно сумбурная, поэтому с первого прочтения всё не поймёшь :) Я 3 года назад делал свои тесты на чипе и написал эмуль Ямахи, он рабочий, но очень сырой и некоторые блоки не реализованы. Забросил я его. А позже стал доку клепать, описаывающую работу Ямахи, но тоже быстро забросил. Если интересно, вот. Просьба не плеваться, это всего лишь наброски.
DrMefistO:

--- Цитата: GManiac ---Банк для Z80 - зеркало размером в 32 кб из памяти 68к из области 000000-FF8000. Номер банка может быть то 0 до 511. Для Z80 банк виден в адресах 8000-FFFF.
--- Конец цитаты ---

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

--- Цитата: GManiac ---Ссылка в конце первого поста. Дока довольно сумбурная, поэтому с первого прочтения всё не поймёшь  Я 3 года назад делал свои тесты на чипе и написал эмуль Ямахи, он рабочий, но очень сырой и некоторые блоки не реализованы. Забросил я его. А позже стал доку клепать, описаывающую работу Ямахи, но тоже быстро забросил. Если интересно, вот. Просьба не плеваться, это всего лишь наброски.
--- Конец цитаты ---

Все равно благодарствую)
GManiac:
Драйвер пишет номер банка в спец. регистр в памяти Z80 и выбирает, какую область рома в 32 кб ему видеть. А что он оттуда будет читать, дело частное. Если ты про PCM, то да, в роме могут лежать семплы.
MetalliC:
стоит отметить, что номер/офсет банка устанавливается довольно извращенно -
по адресу 6000 (или 6001) последовательно пишутся 9 байт, младшие биты (D0) всех их образуют наш номер банка, т.е. адрес вида %dddddddd d0000000 00000000
vladikcomper:

--- Цитата ---Банк для Z80 - зеркало размером в 32 кб из памяти 68к из области 000000-FF8000. Номер банка может быть то 0 до 511. Для Z80 банк виден в адресах 8000-FFFF.
--- Конец цитаты ---
Небольшая поправка: банками можно обхватить всю область памяти 68K, т.е. $00000-$FFFFFF. Ведь если выбрать банк $1FF (511), стартовый адрес 68K будет как раз FF8000 ($1FF<<15), и это охватит диапозон $FF8000-$FFFFFF.
Но в общем-то, интерес представляет только чтение РОМа ($00000-$3FFFFF), насколько я знаю (по информации от ребят, которые проверяли это на железе), Z80 не может читать 68K RAM ($FF0000-$FFFFFF), но он может записывать в нее.


--- Цитата ---Я так понял, что в роме в каждом банке лежат сэмплы? А уж сам драйвер распоряжается, как их читать/воспроизводить?
--- Конец цитаты ---
По большому счету, сэмплы можно расположить в любом месте, но обычно, чтобы Z80 драйверу было удобнее с ними работать, их и другие данные выравнивают по границе в $8000 байт (т.е. преславутые 32 кб), чтобы, когда ты подключишь нужный банк, они располагались в самом начале (с адреса 8000h со стороны Z80).

Хотя, если сделать в драйвере систему автоматического переключения банков (как я сделал в своем), можно вообще забыть о банках - достаточно указать драйверу место, он сам все найдет, подключит нужный банк, и поставит следующий банк, когда сэмпл доиграет до конца текущего. Правда, это несколько затратно в плане программинга, и сделать такое в полноценном звуковом движке на Z80 будет не слишком то просто и приятно.
GManiac:

--- Цитата: vladikcomper ---Небольшая поправка: банками можно обхватить всю область памяти 68K, т.е. $00000-$FFFFFF
--- Конец цитаты ---

$FF8000 - это начальный адрес последнего банка, я просто решил не писать $FFFFFF, чтобы понятней было, что банк всегда выравнивается по 32 кб границе.
DrMefistO:
Т.е. если номер банка - 0, то мы имеем доступной область 0x000000 - 0x008000, и т.д. до 0xFFFFFF?
MetalliC:
ага
SeregaZ:
а коим образом процессору втолковать, что я хочу проиграть сэмпл?
repeat
OPN_Write(0, $2A, адресбайтасэмпла)
адресбайтасэмпла = адресбайтасэмпла + 1
until сэмлнекончится

так? регистр $2A? чот у меня хрипения и пердения только выходят...

упс... точнее не адрес байта, а значение байта по адресу +1?
the_Sorrow:
Если цель - получить сего-звучную композицию, берите любую удобную daw, качайте-ставьте бесплатный vst - YM2612 и творите с комфортом. Там практически весь спектр воспроизводится. Сигнал тот же самый. 21 век на дворе, к чему этим мученичеством заниматься?
SeregaZ:
цель понять какой регистр и что ему слать и в какой очереди, чтоб оно запело сэмпл :)
the_Sorrow:

--- Цитата: SeregaZ от 10 Декабрь 2015, 20:50:32 ---цель понять какой регистр и что ему слать и в какой очереди, чтоб оно запело сэмпл :)

--- Конец цитаты ---

а конечная цель?
SeregaZ:
конечная просто эпическая :) раскрывать все карты не буду... но задумка очень хорошая.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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