Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

GBX.ru _ GB: Программирование _ Музыка на ГБА

Автор: Mad Mirror Пятница, 26 декабря 2003, 22:18

Кто-нибудь пробовал разобраться в этом деле?
Я тут позапускал разные игры, покопался в RAM, и обнаружил, что все они (почти) воспроизводят музыку одинаково: недалеко от начала IRAM (0x03...) размещаются структуры, отвечающие за каждый канал. В каждой игре - свое количество каналов и свой стартовый адрес, но сами структуры похожи. Они состоят из нескольких 32-битных слов, часть из которых в процессе воспроизведения меняется редко (видимо, это указатели на сэмплы в РОМе, т.к. имеют вид 0x08...), а другая часть - часто, "в такт" музыке. Вот тут самое интересное. Если также считать эти значения указателями - попадаем в РОМ на кучу будто-бы случайных байт, однако их изменение приводит к непредвиденному изменению музыки (или один канал пропадает или играет быстрее других и т.д). Интересно было бы узнать, какой формат имеют эти "паттерны"...
Если кто-нибудь заинтересуется, приведу пример для конкретной игры.

Автор: balin_victor Вторник, 20 января 2004, 14:51

lol2.gif Расскажи про музычку в Pokemon Saphire !!!

Автор: Manwe/SandS Вторник, 20 января 2004, 15:07

Это обычная трэкерная музыка. Самая обычная.
Существуют разные форматы - MOD, S3M, XM, 669, IT и др., а некоторые плееры конвертируют эти форматы в свой внутренний формат (у каждого такого плеера он свой). Конвертируют обычно для повышения скорости воспроизведения: например, номера инструментов заменяются сразу на адреса памяти, по которым лежат эти инструменты, номера нот - на частоту тона этой ноты и т.д. Однако, общая структура при этом сохраняется. Её ты и наблюдаешь.
А если плеер не конвертит в свой формат, то из игры можно даже выдрать музыку в виде MOD'а или, скажем, S3M'a и слушать отдельно на PC любым плеером. Но это редкость, обычно музыку конвертят и пакуют. В том числе и чтобы не выдирали.
Когда я писал музыку для GBA-шной игрушки, я использовал формат MOD - он небогат возможностями, но зато нетребователен к ресурсам.

Автор: Manwe/SandS Вторник, 20 января 2004, 15:11

Да, иногда, конечно, используют другой метод - включают старый ГеймБоевский муз-процессор о трёх каналах. FM-синтез + шум - ну, кто играл в старый GB, знает: звук такой ala Dandy.
Ещё иногда конвертят midi с набором сэмплов - получается практически то же, что и трэкерная музыка. Только такой фарш уже точно не провернёшь назад (в смысле, выдрать и проиграть на PC не получится).

Автор: Mad Mirror Среда, 21 января 2004, 01:44

Pokemon Sapphire как раз использует и DirectSound и FM-каналы. Драйвер судя по всему "стандартный" Нинтендовский (сигнатура "Smsh" в некоторык участках памяти). Рядом с одним из таких участков находится байт скорости воспроизведения (адрес 0x030073A0).

QUOTE
Некоторые плееры конвертируют в свой внутренний формат... Однако, общая структура при этом сохраняется.

Вот именно! Осталось только разобраться в этом формате, а именно в формате нот. Тогда можно будет использовать их для преобразования в обычный MOD/S3M. Не думаю, что коммерческие игры используют много разных плееров. Максимум, штук 5...

Автор: Manwe/SandS Среда, 21 января 2004, 11:37

QUOTE (Mad Mirror @ Среда, 21 Января 2004, 1:44)
QUOTE
Некоторые плееры конвертируют в свой внутренний формат... Однако, общая структура при этом сохраняется.

Вот именно! Осталось только разобраться в этом формате, а именно в формате нот. Тогда можно будет использовать их для преобразования в обычный MOD/S3M.

В том-то и дело, что это не всегда возможно (см. выше). Например, такая проблема: используются адреса, а не номера, инструментов. Ну, допустим, ты просканируешь все эти адреса и попробуешь восстановить по ним количество инстрментов, их длину и нумерацию. А если на некоторых нотах используется sample offset? Сразу адрес ускакивает на сотни байт вперёд. И пойди пойми - это другой инструмент или тот же, но с offset'ом. Придётся всё вручную расковыривать, сэмплы ручками вытаскивать.

Автор: balin_victor Четверг, 22 января 2004, 17:07

to Manve:
Слушай, а что за игра про которую ты говоришь ?
Если она есть в инете, то дай ссылочку.

Автор: Manwe/SandS Четверг, 22 января 2004, 17:26

to Balin_Victor: Moorhuhn, ссылка со странички www.demoscene.ru/sands

to all: начал я титанический труд по оцифровке музыки из Adwanced Wars 2. Профессиональная саунд-карта, hiss-reduction 8-битного шипения и всё такое. Нужно кому-нибудь это, если в mp3 выложу? или будем ждать, пока кто-нибудь в S3M'ы переведёт?.. Кстати, там почти у всех музонов большинство сэмплов одинаковые, следовательно, хранятся они один раз и в одном месте, а нотные паттерны - отдельно кучей. задача усложняется.

Автор: Mad Mirror Четверг, 22 января 2004, 18:36

mp3 это, конечно, хорошо, но файлы слишком большие...
А есть ли в Advanced Wars 2 soundtest?
Кстати, ты с реального ГБА будешь записывать или с эмуля?

И напоследок: как узнать базовую частоту сэмпла (ту, которая C-5)? На слух что ли? wink.gif Я открываю РОМ в редакторе как raw pcm, а дальше? Стандартная 11025 много, 8000 - мало...

Автор: balin_victor Четверг, 22 января 2004, 18:59

to all:
Подскажите есть ли редактор музыки в играх на gba?
Я хочу сделать total remake Pokemon Saphire. Все могу редактировать кроме музыки >sad.gif .

Автор: balin_victor Четверг, 22 января 2004, 19:01

to Manve:
Слушай, если можешь, сделай прогу, которая могла бы музыку из Pokemon S/R выколупывать и назад вставлять! Или, если знаешь, то дай линк на такую прогу, а то замучался искать.

Автор: PokePerevod Суббота, 24 января 2004, 15:11

QUOTE (balin_victor @ Четверг, 22 Января 2004, 19:01)
to Manve:
Слушай, если можешь, сделай прогу, которая могла бы музыку из Pokemon S/R выколупывать и назад вставлять! Или, если знаешь, то дай линк на такую прогу, а то замучался искать.

http://www.dragoneyestudios.net/index.php?page=utilities&id=22

Автор: balin_victor Суббота, 24 января 2004, 16:48

to Pokeperevod:
Огромная спасиба !!!

Автор: balin_victor Суббота, 24 января 2004, 16:57

Люди, если кто-нить знает как вставить музыку в Pokemon Saphire, помогите !!!!

Автор: Manwe Суббота, 24 января 2004, 18:34

to Mad Mirror: soundtest есть. Могу с GBA оцифровывать, могу с эмулятора. Первым способом уже 4 мелодии оцифровал.

Автор: Mad Mirror Воскресенье, 25 января 2004, 13:54

to Manve: Интересно, сильно ли отличается реальный звук от эмулируемого?

to PokePerevod: Прога - просто артефакт! wink.gif

Оказалось, что она играет музыку из любых РОМов на Нинтендовском муз. движке! Только ее надо правильно найти... Кстати, вот программка для поиска этих самых таблиц: http://www.geocities.co.jp/Playtown-Yoyo/6130/dl/stos.zip
Как выяснилось, все не просто, а очень просто. В каждом РОМе есть таблица указателей на мелодии, притом одному указателю соответствует одна мелодия со всеми своими паттернами! Таким макаром прога может проиграть любую мелодию из РОМа и сохранить ноты в midi.

Автор: Manwe Воскресенье, 25 января 2004, 19:57

Сохранить в midi? Так сохраняй! Переведём в S3M, добавим оригинальных сэмплов - и дело в шляпе!

Автор: Mad Mirror Воскресенье, 25 января 2004, 22:59

QUOTE
Переведём в S3M, добавим оригинальных сэмплов - и дело в шляпе!

Сейчас как раз пишу прогу для выдирания сэмплов из РОМа.

Автор: Manwe Понедельник, 26 января 2004, 10:39

Можно и вручную выдрать, но если получится автоматизировать процесс - вообще супер. Кстати, посмотри - там для каждого сэмпла может указываться громкость и панорама по умалчанию.

Автор: balin_victor Вторник, 27 января 2004, 15:25

to all:
Люди, если будете делать такую прогу, плз, сделайте возможность вставки мидишек назад !!!

Автор: Manwe Вторник, 27 января 2004, 16:01

Это сложнее.
Потому что там не midi, а хрен знает что. Кто-то умный сумел разобраться в этом и (по слухам) конвертировать в mid. А вот чтобы обратно, надо заново расковыривать этот формат и писать конвертор - задача сложная и никому из программистов не нужная, я полагаю.

Автор: Mad Mirror Вторник, 03 февраля 2004, 03:13

http://www.user.nnov.cityline.ru/~stealthh/GBAsr.zip, дописал прогу для рипа сэмплов. Если найдете баги - сильно не пинайте wink.gif

Насчет вставки midi обратно - пока есть только одна игруха, с которой можно проделать подобное без особого гемора: Wario Ware Inc. Там используются обычные midi-файлы, формат 2.

Автор: OraNge_MuCKs Вторник, 03 февраля 2004, 07:22

Зверская программа, супппппер!!!!

Автор: Manwe Вторник, 03 февраля 2004, 10:53

Факт.
Итак, благодоря программке Sappy и великому мастеру программирования Mad Mirror'у я получил два трэка из Advanced Wars 2 в удобном и популярном формате IT, плюс набор в 256 сэмплов. С 55-го по 233-ий сэмплы музыкальные, остальные - саунд-эффекты. Всё круто, но разобраться на слух в 173-х звуках очень сложно. Не может ли великий мастер Mad Mirror усовершенствовать свою волшебную программу, чтобы она как-то информировала пользователя какой инструмент какому каналу соответствует? Например, скидывать в текстовый файл что-то типа:
01. Sample004.wav
02. Sample153.wav
03. Sample072.wav
04. Sample224.wav
...
20. Sample142.wav

Автор: Mad Mirror Вторник, 03 февраля 2004, 15:31

Какой я нафиг "великий мастер программирования"? blush.gif

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

Manwe, выложи, плиз, куда-нибудь it-шки, хочется послухать, че получилось, и получилось ли вообще smile.gif
Кстати, ты в чем их делал? Я специально подгонял сэмплы под формат ModPlug Tracker'а для поддержки loop'а.

Автор: Manwe Вторник, 03 февраля 2004, 15:51

Ну вот в ModPlug'e и делал! Только я пока не все сэмплы родные подставил - сложно на слух. Предстоит ещё работёнка. Закончу - выложу обязательно. И, скорее всего, это будут S3M'ы (там же 8 бит)

Автор: Wish Четверг, 11 ноября 2004, 11:13

3dnews пишут...

Замечательный польский секстет Gameboyzz Orchestra Project создает всю музыку на шести карманных приставках Nintendo Game Boy. Примечательно, что группа спонсируется локальным дистрибьютором продукции Nintendo, польской компанией Lukas Toys.

http://www.gameboyzz.com/

ninja.gif

Автор: GNUS Четверг, 11 ноября 2004, 11:37

В Б2 в том году был финский фестиваль и там был классный диджей, играющий 8-ми битную музыку как раз на 2-х гба и вертушках.

Автор: Flash Четверг, 11 ноября 2004, 13:45

Люди, только дайте линк нормальный, или выложите куда эту прогу, а то сайтик-то тот тю-тю...

Автор: PokePerevod Четверг, 11 ноября 2004, 14:33

QUOTE (Flash @ Четверг, 11 Ноября 2004, 13:45)
Люди, только дайте линк нормальный, или выложите куда эту прогу, а то сайтик-то тот тю-тю...

http://desnet.fobby.net/index.php?page=utilities&id=22
wink.gif

Автор: piu_piu Вторник, 07 декабря 2004, 12:53

народ ,
я слышал про nano loop для гба, может ктонить рассказать по подробнее.
З.Ы. почему-то не могу запустить саппи

Автор: toitoi Вторник, 08 февраля 2005, 14:38

QUOTE (EXODUS @ Вторник, 07 декабря 2004, 12:53)
народ ,
я слышал про nano loop для гба, может ктонить рассказать по подробнее.
З.Ы. почему-то не могу запустить саппи
*


про нанолуп подробно здесь http://www.nanoloop.de/