-
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_enginenależ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.paszadeklaruj ścieżkę dostępu do bibliotekisfx_engineimusicoraz utwórz deklarację biblioteki w sekcjiuses, np.
{$librarypath './sfx_engine/'}
{$librarypath './music/'}
uses SFX_API, atari;- plik
sfx_engine.conf.incnależy dostosować do własnych potrzeb lub skasować 😄
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.exei przejdź do katalogu projektucd /music -
W linii komend wpisz:
smm-conv music.smm music.asm -reduce:all -reindex:all -MC -MR -Ao:0x7000 -Aa:0Znaczenie 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ć na samym początku programu, przed wywołaniem innych zasobów.
- W programie głównym
main.pasdodaj jeszcze następujące linie:
Begin
SFX_StartVBL();
SFX_PlaySong(0);
repeat until ch<>255; ch:=255;
SFX_End();
End.-
SFX_StartVBLinicjuje 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
