Техническое задание: Исправление звукового канала DMC в эмуляторе NES
Контекст проекта
Существует эмулятор игровой консоли NES, написанный на TypeScript. Исходный код проекта доступен в открытом репозитории. В текущей реализации обнаружена ошибка в работе звукового синтезатора, а именно в канале DMC (Delta Modulation Channel), который отвечает за воспроизведение семплов.
Суть проблемы
При запуске определенной игры (файл ROM прилагается) на заставке возникает артефакт: в момент, когда морда динозавра полностью появляется на экране, звук начинает работать некорректно. Требуется найти и исправить причину этой неполадки в коде эмулятора.
Технические детали и требования
- Проект: Эмулятор NES на TypeScript (форк оригинального репозитория).
- Среда выполнения: Проект использует стандартные npm-пакеты. Для запуска необходимы команды
npm i (установка зависимостей) и npm run start (запуск dev-сервера на localhost:3000).
- Задача: Провести отладку и рефакторинг кода, связанного с аудио-процессором APU (Audio Processing Unit) эмулятора, уделив особое внимание реализации канала DMC.
- Цель: Добиться корректного, соответствующего оригинальной консоли, воспроизведения звука в проблемной игре и, по возможности, в других ROM.
- Результат: Исправленный исходный код с комментариями по внесенным изменениям.
Что предоставляется
- Модифицированная кодовая база эмулятора для удобства анализа.
- ROM-файл игры для воспроизведения конкретного бага.
Ожидаемые навыки исполнителя
Понимание архитектуры NES, принципов работы эмуляции, опыт работы с TypeScript/JavaScript и цифровым звуком. Приветствуется знакомство с документацией на аудио-процессор NES (APU).