В SGDK, поддерживаются форматы wav и vgm/xgm:
- wav — в основном, используется для звуков, т.к. много занимает места, но можно и для музыки.
- vga, xgm — в них хранится музыка (аналог midi), весит мало.
В этой статье, мы добавим звук прыжка и музыку, в платформер из SGDK. Создание платформера для Sega Genesis
Импортируем ресурсы.
Скачайте ресурсы с MEGA, и поместите их в папку res
В resources.res добавьте следующие строки:
XGM xgm_music "Pump It.vgm"
WAV jump_sfx "jump.wav" XGM
У XGM, синтаксис понятен, это
XGM имя путь_до_файла
У WAV нужно указать драйвер для процессора Z80, который будет проигрывать звук.
WAV имя путь_до_файла драйвер
Из них, самый качественный это XGM. Подробная информация про доступные драйвера и, вообще, про все ресурсы, доступна в SGDK/bin/recomp.txt
Теперь, добавим музыку.
Добавляем музыку.
Откройте main.c, в функции main, добавьте следующее (в любом месте перед while).
XGM_startPlay(xgm_music);
Все, готово. Скомпилируйте и запустите, что-бы услышать музыку.
Добавляем звук прыжка.
Добавьте следующую строку, так же, перед циклом while.
XGM_setPCM(64, jump_sfx, sizeof(jump_sfx));
XGM_setPCM — объявляет новый PCM семпл по следующему синтаксису.
XGM_setPCM(id_семпла, сэмпл, размер_сэмпла_в_байтах);
- id_сэмпла — значения от 1 до 63 используются для музыки, от 64 до 255 занимают звуки.
- сэмпл — имя желаемого ресурса, который подгрузили в resources.res
- размер_в_байтах — выделяемое место под сэмпл.
Далее, в handleInput, в моменте прыжка, я добавил следующую строку:
XGM_startPlayPCM(64, 15, SOUND_PCM_CH2);
Разберем её.
XGM_startPlayPCM(id_сэмпла, приоритет, канал);
- приоритет — значение от 0 до 15, где 0 меньший приоритет, а 15 — больший. Если звук уже проигрывается, то приоритет определяет, должен ли новый звук заменить старый? Т.е. приоритет решает конфликт, двух звуков которые хотят проигрываться на одном канале.
- канал — задает отдельный канал, на котором может проигрываться 1 звук. Доступны каналы от SOUND_PCM_CH1 до SOUND_PCM_CH4. Канал SOUND_PCM_CH1 используется музыкой.
Таким образом, здесь.
XGM_startPlayPCM(64, 15, SOUND_PCM_CH2);
- Мы проигрываем 64-ый сэмпл, в который записали звук прыжка.
- С наивысшим приоритетом (15)
- На 2-ом канале (SOUND_PCM_CH2).
Готово, теперь во время прыжка, вы услышите звук.
На чем писать музыку для Sega Genesis?
Музыка пишется на DelfeMask.
Есть 2 версии, платная и бесплатная:
- платная — стоит 10$, доступен на пк и android. Используется последняя версия программы.
- бесплатная — доступна на версии 0.12.1. Есть только на пк.
Пример музыки написанной в DelfeMask: