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

User Tag List

Страница 61 из 267 ПерваяПервая ... 575859606162636465 ... ПоследняяПоследняя
Показано с 601 по 610 из 2664

Тема: Xpeccy

  1. #601
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так-с...
    Со звуком получилось довольно просто с использованием сигналов-слотов Qt.
    С GS как-то двуяко. Синхронизировать надо во время чтения-записи в его порты и в момент записи сэмпла в звуковой буфер. Второй вариант автоматически выполняется в другом потоке, а первый - не очень.
    PS: пока никуда не закоммитил.
    Все любят гипножабу

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

  3. #602
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Так-с...
    Со звуком получилось довольно просто с использованием сигналов-слотов Qt.
    С GS как-то двуяко. Синхронизировать надо во время чтения-записи в его порты и в момент записи сэмпла в звуковой буфер. Второй вариант автоматически выполняется в другом потоке, а первый - не очень.
    PS: пока никуда не закоммитил.
    Ну с ГС легко. На изменения регистров вешаешь кондишн и все. Зато весь звук отдельно. Я-бы вообще все генераторы звуков сделал как отдельные потоки. Тогда синхронизация только по фрейму и регистрам с основным потоком. Ну и оптимальнее всего заюзан проц.
    PS: Коммить давай уже. 8)

  4. #603
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    PS: Коммить давай уже. 8)
    Фазы AY и так высчитываются только при заполнении буфера, на записи в регистры фиксируется момент записи и период.
    Beep/SDrive выносить в отдельный поток - явно лишнее.
    Ещё мофон может издавать звуки, но там тоже не особо много кушается.
    С GS ещё пораскину мозгом.
    PS: закоммитил сегодняшнее.
    Все любят гипножабу

  5. #604
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Фазы AY и так высчитываются только при заполнении буфера, на записи в регистры фиксируется момент записи и период.
    Beep/SDrive выносить в отдельный поток - явно лишнее.
    Ещё мофон может издавать звуки, но там тоже не особо много кушается.
    С GS ещё пораскину мозгом.
    PS: закоммитил сегодняшнее.
    Я собрал. Звук хрипит по-прежнему непонятно почему. При этом ты сломал SDL 8) и каким-то макаром сделал более быструю Qt отрисовку. У меня теперь работает в Qt все ок и видео не тормозит.

  6. #605
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    Я собрал. Звук хрипит по-прежнему непонятно почему. При этом ты сломал SDL 8) и каким-то макаром сделал более быструю Qt отрисовку. У меня теперь работает в Qt все ок и видео не тормозит.
    Тысяча чертей! Да, SDL сломан - не обрабатываются события. Закомментировал одну строку, когда эксперименты проводил. Залил исправленное.
    Трещит оно всё потому же - кроме заполнения звукового буфера, всё остальное до сих пор в одном потоке. Работаю над тем, чтобы разорвать собственно эмуляцию и обработку всякой околоэмуляторной нечисти.

    ---------- Post added at 21:31 ---------- Previous post was at 20:13 ----------

    Не-SDL звук хрипит, сбита синхронизация.
    При отсутствии образа SD-карты применение опций всё валит.

    ---------- Post added at 22:46 ---------- Previous post was at 21:31 ----------

    Во, так должно быть лучше. Эмуляция отдельно от обновления экрана; GS синхронизируется не на все in/out, а только на свои; звук починен обратно; на тормоза из-за эмуляции звук должен вытягиваться (конец недозаполненного буфера забивается последним сэмплом);
    Закоммичено.
    Все любят гипножабу

  7. #606
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Тысяча чертей! Да, SDL сломан - не обрабатываются события. Закомментировал одну строку, когда эксперименты проводил. Залил исправленное.
    Трещит оно всё потому же - кроме заполнения звукового буфера, всё остальное до сих пор в одном потоке. Работаю над тем, чтобы разорвать собственно эмуляцию и обработку всякой околоэмуляторной нечисти.

    ---------- Post added at 21:31 ---------- Previous post was at 20:13 ----------

    Не-SDL звук хрипит, сбита синхронизация.
    При отсутствии образа SD-карты применение опций всё валит.

    ---------- Post added at 22:46 ---------- Previous post was at 21:31 ----------

    Во, так должно быть лучше. Эмуляция отдельно от обновления экрана; GS синхронизируется не на все in/out, а только на свои; звук починен обратно; на тормоза из-за эмуляции звук должен вытягиваться (конец недозаполненного буфера забивается последним сэмплом);
    Закоммичено.
    Резюме: Скорость возросла. Звук по-прежнему хрипит (SDL). Не икает, а именно хрипит. Причем если в настройках переключиться с 14.0МГц на 3.5МГц прямо во время игры, то звук становится сразу практически вменяемым. Надо проверять либо порядок (endiannes), либо размеры буферов.
    Под ALSA звук вроде-бы не хрипит, зато икает. Такое впечатление что просто нехватает буфера для проигрывания, либо проигрывается быстрее чем расчитано и буфер кончается раньше чем должен, но и зацикливания не происходит.
    SDL-отрисовка работает, но тупит раз в 5 сильнее чем Qt-отрисовка. Как у тебя так получилось - хз. 8)
    Плюсом, сделай плиз в опциях еще и 48000. На некоторых современных встроенных звуковухах ресампл из 48000 в 44100 работает хреново.
    Последний раз редактировалось Q-Master; 03.01.2013 в 13:29.

  8. #607
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Закоммитил следующее
    • Добавлен вывод на 48000Гц
    • Обновление окна выведено в свой поток. Если до следующего раза нарисоваться не успело, оно пропускается.

    Обновления каких-нибудь либ были? Если да, можно попробовать пересобрать эмуль целиком (make clean && make). У меня иногда такое бывает после обновления - звук заикается, кнопки не работают...
    Чтобы узнать степень заполнения буфера, можно в sound.cpp в sndFillToEnd() раскомментить строку printf("tail: %i\n",sndChunks - smpCount);. Если в консоль польются нули - буфер заполняется как надо. sndChunks - вычисленное кол-во сэмплов в буфере на 1/50 сек, smpCount - счетчик сэмплов, в начале кадра обнуляется.
    Последний раз редактировалось SAM style; 03.01.2013 в 14:56.
    Все любят гипножабу

  9. #608
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    397
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Жаль, что для этого изделия на дешевой массовой модели SoC ARM (еще и старой к тому же), ценник далеко не "демократичный" навешен в 6500рублей.
    Кто же вам мешает купить более современную и дешевую? а если нет, то взять и сделать?

  10. #609
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Закоммитил следующее
    • Добавлен вывод на 48000Гц
    • Обновление окна выведено в свой поток. Если до следующего раза нарисоваться не успело, оно пропускается.

    Обновления каких-нибудь либ были? Если да, можно попробовать пересобрать эмуль целиком (make clean && make). У меня иногда такое бывает после обновления - звук заикается, кнопки не работают...
    Чтобы узнать степень заполнения буфера, можно в sound.cpp в sndFillToEnd() раскомментить строку printf("tail: %i\n",sndChunks - smpCount);. Если в консоль польются нули - буфер заполняется как надо. sndChunks - вычисленное кол-во сэмплов в буфере на 1/50 сек, smpCount - счетчик сэмплов, в начале кадра обнуляется.
    Теперь по пунктам. Либы не обновлялись. Вчера игрался с кодом и смотрел что как.
    Первое:
    Код:
    if ((err = snd_pcm_set_params(alsaHandle,SND_PCM_FORMAT_U8,SND_PCM_ACCESS_RW_INTERLEAVED,sndChans,sndRate,1,100000)) < 0) {
    последнее число, а именно 0.1 сек - слишком большая задержка и в результате у меня звук играется не подряд, а с паузами. При этом, если эту задержку уменьшить, то щелчки учащаются.
    Второе:
    Код:
    SDL_MixAudio(stream,sndBuffer,len,SDL_MIX_MAXVOLUME);
    Вот эту строку надо заменить на простое
    Код:
    memcpy(stream, sndBuffer, len);
    . Исходя из документации MixAudio нужен только если идет микширование каналов. У тебя его нет. Ты микшишь до этого в момент генерации.
    Третье:
    Под SDL такое впечатление что звук играет медленнее, как-бы заторможенно. При этом он еще и хрипит. Такое ощущение что там либо с порядком байт что-то не то, либо он модулируется чем-то... Я не понял в чем дело пока. Надо пытаться слить буфер в файл и попробовать так проиграть.

  11. #610
    Banned
    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    [QUOTE=SAM style;562697]Для эмуляции TS нужны спецификации, и чем подробнее, тем лучше.[COLOR="Silver"]
    ОК, со временем будут.

Страница 61 из 267 ПерваяПервая ... 575859606162636465 ... ПоследняяПоследняя

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

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

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

Ваши права

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