Важная информация

User Tag List

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 61

Тема: О звуковых чипах

  1. #11
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И всё-таки я понял почему всё грабится некорректно, кроме d00-формата!
    В обработчике прерывания(таймер) одни и те же регистры в группе меняются более чем 1 раз! Поэтому грабилось не всё

    А d00-формат за каждый тик таймера меняет один раз всю группу регистров - от того грабится превосходно...

    Счас я совершенствую грабилку - обработчик прерывания трекера вызываю в программе грабилки, а на таймер вешаю регистровый сканер. Плюс таймер разогнал (теперь не 18Гц а намного более) - для частого сканирования...

    Написал конвертилку(см. аттач ниже) - конвертит мои bin-файлы в стандартный Adlib'овский raw - теперь на винампе можно слушать
    Вложения Вложения
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  2. #12
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока сграбить что-то отличное от d00 не получается! - похоже, что это единственный формат при проигрывании которого, плееры за прерывание таймера один(!) раз меняют группу регистров OPL (9 инструментов).

    Обработчик прерывания(она же процедура по FAR CALL) вызывался в программе в цикле. А на таймер навешал свой обработчик (сканер регистров) и разогнал таймер (делитель до 1024). При сканировании регистров возможна следующая ситуация:

    В Port[$388] уже занеслось значение регистра OPL, а в Port[$389] - данные - не занеслись. Тут вызывается обработчик прерывания(сканер) - и читает все регистры. НО! Для того чтоб прочитать какой-то регистр - надо его указать(читай-записать!) в Port[$388] далее из Port[$389] читается значение того самого регистра. Получайтся что при выходе из прерывания нужно восстанавливать регистр и его значение, которые были ДО входа в прерывание!!! Порт $389 - доступен по чтению и записи, а порт $388 при записи обращается к индексу регистра, а при чтении(!) - возвращается СТАТУСНЫЙ РЕГИСТР!!!

    Вопрос - что делать??? Как программно сохранять регистр и его значение ДО СКАНИРОВАНИЯ?

    Если решения нет - то прийдётся довольствоваться граблением только d00-файлов...
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  3. #13
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В аттаче ПРЕД-релиз грабилки!!! И мануал к ней. И ещё RdosPlay
    Грабит нормально d00

    Просьба сообщить о косяках если таковые будут!

    P.S. Под пеньками может и не заработать (в релизе - обязательно заработает!) Испытывалось на амд Дюрон @750
    Вложения Вложения
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  4. #14
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ТОЛЬКО ПОЖАЛУЙСТА, НЕ ОТМАЛЧИВАЙТЕСЬ, КАЧАЯ АТТАЧИ! МНЕ-Ж ТОЖЕ ИНТЕРЕСНО ВАШЕ МНЕНИЕ И ПОЖЕЛАНИЯ И ПОМОЩЬ!!!

    Я конечно понимаю, что тема "Другие компьютеры" засунута глубоко в Ж... но тем не менее- уделите плиз, внимание

    Возникла идея - а что если перехватить обращение к портам из-под форточек? какой драйвер или апи-функция это могут сделать?

    DOS-программа стучится к портам (которые идут на VXD), а вторая отслеживает эти "порты" и пишет в файл...
    Последний раз редактировалось Romanich; 24.05.2007 в 10:38.
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  5. #15
    Member
    Регистрация
    26.01.2005
    Адрес
    Ревда
    Сообщений
    49
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В исходниках adplug нашёл отладочную возможность создания дампа регистров. Дамп я получил, но что с ним делать дальше я не знаю. Смотри аттач.
    Вложения Вложения
    • Тип файла: zip opllog.zip (13.3 Кб, Просмотров: 172)

  6. #16
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 736b Посмотреть сообщение
    В исходниках adplug нашёл отладочную возможность создания дампа регистров. Дамп я получил, но что с ним делать дальше я не знаю. Смотри аттач.
    Прийду домой и буду разбираца

    Добавлено через 4 часа 22 минуты
    Кстати ещё о DOS-звуковухах...
    поставил на XP себе VDMSound
    Короче штука перехватывает обращение к:
    1) MPU401 портам $330
    2) Adlib портам $388
    3) И SB портам $220

    в настройках ini-файла можно задать порты, дма, прерывания и качество эмуляции! Работает! Правда эмуляция желает лучшего и подтормаживает иногда...
    Последний раз редактировалось Romanich; 25.05.2007 в 10:02. Причина: Добавлено сообщение
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Member
    Регистрация
    26.01.2005
    Адрес
    Ревда
    Сообщений
    49
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Помедитировал немного и понял что это не что-то записывается. Вот куски из исходников:

    // создаётся файл и пишется заголовок из 6 байт
    #ifdef OPL_OUTPUT_LOG
    if(!opl_dbg_fp)
    {
    opl_dbg_fp = fopen("opllog.opl","wb");
    opl_dbg_maxchip = 0;
    }
    if(opl_dbg_fp)
    {
    opl_dbg_opl[opl_dbg_maxchip] = OPL;
    fprintf(opl_dbg_fp,"%c%c%c%c%c%c",0x00+opl_dbg_max chip,
    type,
    clock&0xff,
    (clock/0x100)&0xff,
    (clock/0x10000)&0xff,
    (clock/0x1000000)&0xff);
    opl_dbg_maxchip++;
    }
    #endif

    ...

    // пишутся данные 3 байта
    #ifdef OPL_OUTPUT_LOG
    if(opl_dbg_fp)
    {
    for(opl_dbg_chip=0;opl_dbg_chip<opl_dbg_maxchip;op l_dbg_chip++)
    if( opl_dbg_opl[opl_dbg_chip] == OPL) break;
    fprintf(opl_dbg_fp,"%c%c%c",0x20+opl_dbg_chip,leng th&0xff,length/256);
    }
    #endif

    Тем не менее считаю что это вполне реализуемо - запатчить adplug на предмет записи дампа в нормальном формате. Функция записи в регистр есть, не понял только где мне задержки брать.
    Ещё, вроде, есть патченая версия эмулятора DosBox с возможностью записи в .DRO файл. Тоже вариант.

    Добавлено через 1 минуту
    VDMSound штука хорошая. Когда под виндой сидел игрался.
    Последний раз редактировалось 736b; 25.05.2007 в 15:46. Причина: Добавлено сообщение

  9. #18
    Member
    Регистрация
    26.01.2005
    Адрес
    Ревда
    Сообщений
    49
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Практически сделал на базе adplug, конвертор в raw. В аттаче результат работы. Правда пришлось руками в raw прописать clock, но думаю разберусь и с этим.
    Если такая софтина (конвертор * в raw) нужна то могу это дело довести до победного, но что-бы сделать это быстрее хотелось бы знать из каких форматов предполагаеся конвертить. adplug их знает много, причём чуствую большинство из них никому не нужная экзотика. Разом все поддержать не получается, приходится с классом каждого ковырятся.
    Вложения Вложения

  10. #19
    Activist Аватар для Romanich
    Регистрация
    02.11.2006
    Адрес
    Владивосток
    Сообщений
    481
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ура!!! Получилось!!!
    Выкладываю аттач с отконверченными *.rad и *.cal - в формат *.raw - ну просто идеально!!! Зацените

    Теперь моя программа не является грабилкой, скорее всего - это ЛОГГЕР!!! Я перехватил прерывание системного таймера и нашёл там процедуру записи в OPL регистры!!! Немножко её модифицировал - добавил туда int 0xFF ($CD $FF -2 байта), которое тырит регистры al и ah (OPL Index, Data) - тоесть вклинил туда своего ИНТРУДЕРА И не недо больше сканировать каждый раз ВСЕ регистры OPL.
    При каждом вызове функции записи в OPL-регистры прерывание-интрудер снимает текущий регистр и его значения,не читая порты OPL!!!

    Свой OPLLogger зарелизю чуть позже И мануал с принципом действия выложу тоже... работать будет на пару с RdosPlay.exe v0.21b

    P.S. Выложил фотки своей ISA-шной Ямаховской карточки
    P.P.S 736b, результаты посмотрю дома! Спасибо за поддержку
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	OPL3.jpg 
Просмотров:	488 
Размер:	36.0 Кб 
ID:	5331   Нажмите на изображение для увеличения. 

Название:	Chips.jpg 
Просмотров:	520 
Размер:	56.3 Кб 
ID:	5332  
    Вложения Вложения
    EMU Apparatchik Romanich
    http://emu-apparatchik.narod.ru

  11. #20
    Member
    Регистрация
    26.01.2005
    Адрес
    Ревда
    Сообщений
    49
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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