| Разработка и ромхакинг > Ромхакинг и программирование |
| 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:
конечная просто эпическая :) раскрывать все карты не буду... но задумка очень хорошая. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |