В GBA используется двухканальный проигрыватель сэмплов, который работает в связке со звуковай системой Game Boy.
Функционал
Вот разбор каждого звукового компонента на примере Sonic Advance 2:
PCM
Новая звуковая система теперь умеет проигрывать PCM сэмплы, она предоставляет два канала под названием Direct Sound, куда приходят сэмплы через очередь FIFO (реализована в виде 16-битного буфера).
Сэмплы 8-битные и со знаком (кодируются в значениях от -128 до 127). Частота дискретизации по умолчанию 32 кГц, хотя это зависит от игры: так как бо́льшая частота означает больший размер и большее количество циклов процессора, не каждая игра выделяет одинаковое количество ресурсов аудиочипу.
Следовательно, DMA необходим во избежание лишней траты циклов ЦП. Таймеры также доступны для синхронизации с очередью.
PSG
Хотя подсистема от Game Boy не делится ресурсами ЦП, доступ к своему PSG она дает. В целях обратной совместимости используется тот же подход, что и в оригинальном Game Boy. Ранее я уже писал эту статью, в которой подробно рассказывается о каждом канале в отдельности.
Большинство игры GBA используют его для аккомпанемента или эффектов. Более поздние оптимизировали музыку под PCM, а PSG зачастую оставляли незадействованным.
Комбинирование
Наконец, все автоматически микшируется и выводится через динамик/разъем наушников.
Несмотря на то, что GBA имеет только два канала PCM, вы можете заметить как некоторые игры магическим образом проигрывают более двух семплов за раз. Как такое возможно? Хотя на бумаге наличие только двух каналов может показаться немного слабым, основной процессор может одолжить часть своих циклов для обеспечения как секвенсирования, так и микширования семплов в одном канале (это должно дать вам представление о мощности ARM7TDMI!). И в самом деле так и было задумано: в разделе "Операционная система" вы обнаружите, что само ПЗУ BIOS предоставляет секвенсор аудио в помощь разработчикам с этой задачей.
Лучшее из обоих миров
Некоторые игры развили концепцию дуальности PCM-PSG еще дальше и "сменяли" ведущий чип в зависимости от контекста.
В этой игре (Mother 3) игрок может войти в две разные комнаты, одна относительно нормальная, а другая в ностальгическом сеттинге. В зависимости от того, в какой комнате находится персонаж, одна и та же самая музыка будет звучать современно или восьмибитно.




