SGDK. Добавляем музыку.

В 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:

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!