Anonymous,вот здесь вообще ничего не понятно что ты используешь далее как вообще декодировать звук через Sound Forge, в каком формате он хранится в игре, как и чем его выдрать из игры, что такое loop's?
Окей: в ревизии r1695 помимо добавления полезных ништяков, была выпилена возможность отказаться от использования Viewport, и старый трюк с разворотом окна эмулятора во весь экран перестал работать окончательно.
Несколько ревизий спустя, прозошло весьма радикальное изменение структуры videoengine, и чтобы не лишаться возможности играть в нормальном разрешении, пришлось вручную добавлять из основной ветки эмулятора особо вкусные ништяки. Впринципе можно было остаться на изначальной r1694, но в последующх ревизиях правились ошибки эмуляции звука и процессора, так что я перенёс некоторые апдейты себе.
Что касается звука: лежит он в *.wav, и вся озвучка может быть выдернута из изошки любой граббилкой игровых ресурсов (я использую стырый добрый Dragon unpacker)... только вот сами звуковые данные в *.wav лежат вовсе не в PCM формате, а в Atrac3 либо Atrac3+. Так уж получилось, что опенсорс декодеров atrac3+ не существует, и эмуль может выдать голоса\музыку только, если подхватит из вне уже декодированные файлы.
Для этого нужно решить 2 задачи: собственно декодировать звук, и заставить эмуль его подцепить. Обе эти задачи решаются через задницу
Начну со второй:
По умолчанию, при каждой попытки игры проиграть звук, эмуль высчитывает уникальное имя ему, на основе положения файла внутри изошки и его размера. Если стоит опция "Use jpcsp connector" то этот нерасшифрованый звук сбрасывается на диск в виде файла с тем самым именем.
Дальше по идее ты его можешь декодировать в обычную вавку(вообще-то raw pcm), и если в следуюий раз эмуль наткнётся на этот звук в игре, и найдёт декодированный файл уникальное_имя.at3.decoded - ты его и услышишь. Сам понимаешь, попахивает мазохизмом: чтобы играть полностью со звуком, нужно сначала вдоль и поперёк излазить игрушку в тишине. А вот если выдернуть всю озвучку из изошки, декодировать, и автоматически переименовать... Пришлось подправить исходники эмуля (чтобы он выдавал имена в нужном виде) и написать утилитку. Задача решена, правда под каждую конкретную игру нужно немного править исходники эмуля, но меня это устраивает.
Теперь декодирование:
Глобальным и надёжным официально признаётся декодирование на железной psp... только вот тут 2 проблемы. Нужна большая флэшка и туева хуча времени (за сутки работы psp, было декодировано порядка 30% звука второй дисгайи)...
Второй метод - использование кодека от Sony Sonic Stage + небольшой утилиты (на офф форуме всё разжевано)... только вот Sonic Stage - программа для кодирования\декодирования музыки, специально для Соневских плееров. А так-как it's a Sony, то какой-то светлой голове там пришла в голову мысль "моно ненужен". Сказано - сделано, и сабжевый кодек физически не может декодировать монофонический звук. А это фактически вся озвучка окромя музыки...
Осталась последняя из доступных реализаций кодека Atrac3+ - собственно плагин импорта у Sound Forge... но и тут it's a Sony. Пережевывает он только собственный формат *.oma, а wav с at3 звуком не жрёт принципиально. Конвертеров нет. Внятных спецификаций *.oma также нет. Однако волею случая, наткнулся на один интересный тред:
http://forum.xentax.com/viewtopic.php?f=17&t=3917&start=0&st=0&sk=t&sd=a. Там лежит и пустой oma хидер, и quickBMS скрипт, который довольно успешно привёл почти весь звук в читабельный Sound Forge'м формат.
Звук есть, голоса говорят и музыка играет... правда недолго. Эмулятор не зацикливает музыку (loop) и очень скоро саундтрек заканчивается. Решение проблемы в лоб: так-как звук в виде RAW PCM, то можно тупо скопировать тем же Far'ом файл в конец уже существующего файла, и оно будет играть уже в 2 раза дольше. Повторив для музыки эту процедуру несколько раз, получились саундтреки длиной порядка часа (длительности хватает всегда) и общим обьёмом порядка 20 гигов.