Awesome
Jak skorzystać z SFX-Engine w MAD Pascalu
-
Wejdź na stronę repozytorium SFX-Engine i ściągnik plik ZIP, klikając w przycisk CODE i Download ZIP (jak na poniższym obrazku)
-
Paczkę rozpakuj gdzieś na swoim dysku
-
Katalog
sfx_engine
należy skopiować do katalogu swojego projektu.Przykładowa struktura katalogu projektu, może wyglądać tak:
+ /Projekt
|
+- /sfx_engine
| | sfx_engine.conf.inc
|
+- /music
| | {pliki wygenerowane przez smm-conv}
|
+-- main.pas
|
- w głównym pliku swojego programu
main.pas
zadeklaruj ścieżkę dostępu do bibliotekisfx_engine
imusic
oraz utwórz deklarację biblioteki w sekcjiuses
, np.
{$librarypath './sfx_engine/'}
{$librarypath './music/'}
uses SFX_API, atari;
- plik
sfx_engine.conf.inc
należy dostosować do własnych potrzeb lub skasować :smile:
Wykorzystanie programu smm-conv
Przed użyciem, należy skompilować program, ale z racji świąt, mam dla Was mały prezent.
Skompilowana wersja 1.0.1 dla Windows
- Skopiuj ściągnięty plik do katalogu
/music
Załóżmy, że nasz plik z muzyką nazywa się music.smm
i jest on umieszczony w katalogu /music
projektu.
-
Uruchom
cmd.exe
i przejdź do katalogu projektucd /music
-
W linii komend wpisz:
smm-conv music.smm music.asm -reduce:all -reindex:all -MC -MR -Ao:0x7000 -Aa:0
Znaczenie parametrów:
music.smm
- nazwa pliku źródłowego (nasza muzyczka)music.asm
- nazwa pliku wyjściowego - dane w assemblerze-reduce:all
- wyłącza z pliku wyjściowego nieużywane definicje SFXów oraz TABów (opcjaall
)-reindex:all
- układa kolejno indeksy definicji SFXów oraz TABów
Powyższe dwie opcje redukują rozmiar pliku wynikowego oraz zapotrzebowanie na pamięć w ATARI.
-MC
- generuje plik konfiguracyjny dla SFX_APIsfx_engine.conf.inc
-MR
- generuje plik z definicją zasobów dla MAD Pascalaresource.rc
-Ao:0x7000
- określa adres (tzw. globalny) dla generowanyh danych w assemblerze-Aa:0
- powoduje wyłączenie buforowania audio (rejestrów POKEY) w pliku konfiguracyjnymsfx_engine.conf.inc
Po więcej szczegółów nt. konwertera odsyłam do pliku README.md programu SMM-CONV.
Uruchomienie powyższej komendy, spowoduje wygenerowanie następujących plików w katalogu /music
+- /music
| music.asm
| resource.rc
} sfx_engine.conf.inc
WAŻNE Należy dodać ścieżkę w wygenerowanym pliku music/resource.rc
, gdyż kompilator MAD Pascal odwołuje się względem położenia pliku głównego main.pas
, nie zaś położenia pliku zasobu który jest dodany do programu.
SFX_ORG rcasm 'music/music.asm';
W pliku głównym projektu dodać należy jeszcze wczytanie pliku zasobu muzyki.
{$librarypath './sfx_engine/'}
{$librarypath './music/'}
uses SFX_API, atari;
{$r "music/resource.rc"}
UWAGA! W przypadku rozdzielenia danych za pomocą przełącznika -Ad:
(w konwerterze smm-conv
) należy, wczytanie pliku zasobu {$r "music/resource.rc"}
umieścić <u>na samym początku programu</u>, przed wywołaniem innych zasobów.
- W programie głównym
main.pas
dodaj jeszcze następujące linie:
Begin
SFX_StartVBL();
SFX_PlaySong(0);
repeat until ch<>255; ch:=255;
SFX_End();
End.
-
SFX_StartVBL
inicjuje silnik SFX, podpinając go pod przerwanie VBLANK. -
SFX_PlaySong(0)
uruchamia odtwarzanie muzyczki od wiersza 0. -
SFX_End()
kończy działanie silnika SFX -
Skompiluj plik
main.pas
- jak to zrobić najwygodniej? Odsyłam do dokumentu @Bocianu MAD Pascal i Geany -
Uruchom XEXa
I to tyle - można się cieszyć muzyką z programu SFX Music Maker (aka SFX-Tracker) w swoim projekcie :)
Powyższy przykład w całości znajduje się na GitHubie