<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=SAP_%28format_pliku%29</id>
	<title>SAP (format pliku) - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=SAP_%28format_pliku%29"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=SAP_(format_pliku)&amp;action=history"/>
	<updated>2026-10-02T15:53:29Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=SAP_(format_pliku)&amp;diff=3503&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=SAP_(format_pliku)&amp;diff=3503&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Wstęp ===&lt;br /&gt;
&lt;br /&gt;
Plik &amp;#039;&amp;#039;&amp;#039;SAP&amp;#039;&amp;#039;&amp;#039; składa się z dwóch części. Pierwsza (tekst) opisuje typ playera/muzyki oraz zawiera informacje o autorze (lub autorach). Druga - zawiera samą procedurę odtwarzającą oraz dane muzyki - w zwykłym (znanym z Atari) pliku binarnym.&lt;br /&gt;
&lt;br /&gt;
=== Część pierwsza - informacja tekstowa ===&lt;br /&gt;
&lt;br /&gt;
Dla identyfikacji formatu plik zawsze rozpoczyna się ciągiem &amp;quot;SAP&amp;quot;, po czym następują&lt;br /&gt;
informacje o osobie, lub osobach, odpowiedzialnych za dany utwór. Wprawdzie nie ma z góry&lt;br /&gt;
ustalonej ich kolejności, jednak zwyczajowo utarło się podawać je tak jak poniżej. Każda linia powinna kończyć się kodami 0D i 0A (EOL).&lt;br /&gt;
&lt;br /&gt;
Wyświetlane informacje:&lt;br /&gt;
&lt;br /&gt;
* AUTHOR &amp;quot;&amp;quot; - Imię i nazwisko kompozytora. Dla potrzeb [[ASMA]] powinno się podać prawdziwe personalia oraz nick (ksywę scenową) w nawiasach. Nie podaje się grupy. Jeżeli utwór został skomponowany przez więcej niż innego autora, stosuje się znak &amp;quot;&amp;amp;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Przykłady:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; AUTHOR &amp;quot;Dariusz Duma (Dhor)&amp;quot;&lt;br /&gt;
 AUTHOR &amp;quot;Lukasz Sychowicz (X-Ray) &amp;amp;amp; Piotr Swierszcz (Samurai)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NAME &amp;quot;&amp;quot; - Tytuł utworu. W zasadzie bez ograniczeń, stosować można wszystkie znaki prócz cudzysłowów. Zamiast nich można użyć apostrofów.&lt;br /&gt;
&lt;br /&gt;
Przykład:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; NAME &amp;quot;Jocky Wilson&amp;#039;s Darts Challenge&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* DATE &amp;quot;&amp;quot; - Rok &amp;quot;copyrightu&amp;quot; lub rok powstania. Jeżeli dokładna data jest znana, może być przedstawiona w formacie DD/MM/RRRR&lt;br /&gt;
&lt;br /&gt;
Przykłady:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; DATE &amp;quot;1986&amp;quot;&lt;br /&gt;
 DATE &amp;quot;1993-1994&amp;quot;&lt;br /&gt;
 DATE &amp;quot;28/08/1997&amp;quot;&lt;br /&gt;
 DATE &amp;quot;12/2001&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W dalszej kolejności następują informacje dla playera:&lt;br /&gt;
&lt;br /&gt;
* TYPE - typ playera (patrz niżej)&lt;br /&gt;
* PLAYER - adres playera, który będzie wywoływany w odstępach 1/50-sekundowych (lub takich jak zdefiniowano przez FASTPLAY)&lt;br /&gt;
* MUSIC - adres danych muzyki (dla &amp;quot;TYPE C&amp;quot; - typ playera &amp;quot;C&amp;quot;)&lt;br /&gt;
* INIT - adres części playera odpowiedzialnej za jego zainicjowanie (wszystkie typy oprócz &amp;quot;C&amp;quot;)&lt;br /&gt;
* SONGS - ilość utworów. Jeśli pominiemy ten parametr, domyślną wartością jest 1&lt;br /&gt;
* DEFSONG - pierwszy utwór, który będzie odgrywany bezpośrednio po wgraniu .sap-a (np. główny temat z gry). Wartość ta jest liczona od zera (jeżeli w pliku jest 5 utworów a ostatni jest domyślny, bedzie wpisane DEFSONG 4). Wartością domyślną jest 0, jeśli &amp;quot;DEFSONG&amp;quot; został pominięty&lt;br /&gt;
* FASTPLAY - ilość linii, co którą jest wywoływana procedura odgrywająca (312 domyślnie, czyli jeden ekran - 1/50 sekundy). Na przykład dla podwójnej szybkości utworu (&amp;quot;2 razy na ramkę&amp;quot;) wpisz tutaj wartość 156 (312/2). Większość utworów gra z pojedynczą szybkością (&amp;quot;raz na ramkę&amp;quot;), nie jest więc konieczne ustawianie tego parametru. Inne często spotykane wartości: 104 (&amp;quot;3 razy na ramkę&amp;quot;), 78 (&amp;quot;4 razy na ramkę&amp;quot;)&lt;br /&gt;
* STEREO - utwór używa drugiego [[POKEY|POKEYa]] (stereo lub/i 8 kanałów)&lt;br /&gt;
&lt;br /&gt;
Komendy PLAYER, MUSIC, INIT zawierają adresy w formacie hexadecymalnym. Przyjmowane są zarówno wielkie, jak i małe litery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; PLAYER A000&lt;br /&gt;
 MUSIC 1234&lt;br /&gt;
 INIT f42e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Komendy SONGS, DEFSONG zawierają liczby w formacie dziesiętnym:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; SONGS 10&lt;br /&gt;
 DEFSONG 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Komenda TYPE zawiera pojedynczy znak, który określa typ playera. Obsługiwane są następujące typy:&lt;br /&gt;
&lt;br /&gt;
* TYPE C - player do modułów w formacie[[CMC (format pliku)|CMC]] ([[Chaos Music Composer]]). W tym przypadku muszą pojawić się także komendy: PLAYER, MUSIC. Można również zdefiniować SONGS i DEFSONG.&lt;br /&gt;
&lt;br /&gt;
Player zostanie zainicjowany następująco:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        lda #$70&lt;br /&gt;
        ldx #&amp;amp;lt;MUSIC&lt;br /&gt;
        ldy #&amp;amp;gt;MUSIC&lt;br /&gt;
        jsr PLAYER+3&lt;br /&gt;
        lda #$00&lt;br /&gt;
        ldx #DEFSONG&lt;br /&gt;
        jsr PLAYER+3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natomiast co 1/50 sekundy wywołane zostanie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        jsr PLAYER+6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W tym przypadku nie ma potrzeby dodawania playera z CMC, ponieważ jest on zawarty w pliku SAP.&lt;br /&gt;
&lt;br /&gt;
* TYPE B - dowolny player. W tym przypadku także powinny pojawić się komendy PLAYER, INIT. Dodatkowo mozna zdefiniować SONGS i DEFSONG.&lt;br /&gt;
&lt;br /&gt;
Wywołanie playera odbędzie się w sposób następujący:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        lda #DEFSONG&lt;br /&gt;
        jsr INIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natomiast co 1/50 sekundy wywołane zostanie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        jsr PLAYER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TYPE S - [[Softsynth|SoftSynth]]. W założeniach tymczasowy rodzaj playera (podobnie zresztą jak typ &amp;quot;C&amp;quot;). Może on być użyty tylko w przypadku specjalnego typu utworów, które zostały skomponowane za pomocą programu SoftSynth.&lt;br /&gt;
&lt;br /&gt;
* TYPE D - Digital (sample). W tym typie pliku SAP powinny być zdefiniowane komendy INIT i PLAYER. PLAYER (zupełnie jak w typie &amp;quot;B&amp;quot;) ustawia adres procedury, która będzie wywoływana co 1/50 sekundy i (także jak w typie &amp;quot;B&amp;quot;) będzie kończyć się rozkazem RTS. INIT tym razem działa nieco inaczej. Ustawia on adres procedury, która będzie wywoływana (z numerem utworu w rejestrze A) do zainicjowania programu, ale nie może się kończyć RTS-em. Procedura ta powinna odgrywać sample w nieskończonej pętli. W playerze SAP emulowane są dwa rejestry [[ANTIC (układ)|ANTIC-a]] ($D40A i $D40B). Pomagają one odgrywać sample. Rejestr $D40B zwiększa swoją zawartość co 2 linie obrazu, natomiast $D40A wstrzymuje [[Procesor|procesor]] do końca aktualnie rysowanej linii. SAP emuluje Atari w systemie PAL z wyłączonym ekranem. Znaczy to, że mamy do dyspozycji 312 linii/ekran, gdzie każda zabiera 105 cykli procesora i 9 cykli na odświeżenie pamięci (co daje 114 cykli na linię).&lt;br /&gt;
&lt;br /&gt;
* TYPE M - póki co identyczny z typem &amp;quot;B&amp;quot;. Zróżnicowanie to ma na celu wykorzystanie w przyszłych wersjach SAP-a.&lt;br /&gt;
&lt;br /&gt;
* TIME xx:xx - Czas trwania utworu z dokładnością do tysięcznych częsci sekundy. Aktualnie jest on rozpoznawany przez pakiet [[ASAP]] oraz wszelkie jego &amp;quot;odgałęzienia&amp;quot;. W zależności od ilości subsongów jest on powtórzony odpowiednią ilość razy (kolejno dla każdego subsongu).&lt;br /&gt;
&lt;br /&gt;
Planowany był również &amp;#039;&amp;#039;TYPE R&amp;#039;&amp;#039; - Rejestry.&lt;br /&gt;
W tym typie część binarna nie ma postaci pliku binarnego. Część ta zawiera wartości, które będą bezpośrednio wpisywane do rejestrów POKEYa ($D200-$D208) w odstępach 1/50-sekundowych (lub takich jak zdefiniowano przez FASTPLAY). Próby zastosowania tego parametru podjął się Don Mahurin (oto jego [http://sap.openright.org strona]). Wątpliwe jest jednak, by typ R zyskał wsparcie w oprogramowaniu w postaci zaproponowanej przez Dona, z uwagi na dodakowe paramery w stylu AUDCTL (niekompatybilne z żadnym z istniejących odtwarzaczy) oraz brak wsparcia dla możliwych zapętleń i subsongów. Także w przyszłości najprawdopodobniej typ ten zostanie zastąpiony przez &amp;#039;&amp;#039;TYPE B&amp;#039;&amp;#039;, tylko z odpowiednio napisaną procedurą odtwarzającą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Przykład nagłówka:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; SAP&lt;br /&gt;
 AUTHOR &amp;quot;Jakub Husak&amp;quot;&lt;br /&gt;
 NAME &amp;quot;Inside&amp;quot;&lt;br /&gt;
 DATE &amp;quot;1990&amp;quot;&lt;br /&gt;
 SONGS 3&lt;br /&gt;
 DEFSONG 0&lt;br /&gt;
 TYPE B&lt;br /&gt;
 INIT 0F80&lt;br /&gt;
 PLAYER 247F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Część druga - dane binarne ===&lt;br /&gt;
&lt;br /&gt;
Część ta zawiera dane playera oraz muzyki zapisane w pliku binarnym. Format ten to [[COM]]. Bloki typu &amp;#039;&amp;#039;Init&amp;#039;&amp;#039; ($02E2,$02E3) nie są obsługiwane.&lt;br /&gt;
&lt;br /&gt;
=== Jak stworzyć plik SAP ===&lt;br /&gt;
&lt;br /&gt;
Pierwsze co należy zrobić to wyciąć muzykę z gry lub dema i zapisać ją w pliku binarnym. Następnie należy stworzyć plik tekstowy z opisem (tak jak opisano wyżej), po czym można&lt;br /&gt;
zbudować plik .sap poprzez połączenie tych dwóch plików. Można tego dokonać na przykład za pomocą DOSowej komendy COPY:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; copy /b music.txt+music.bin music.sap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Plik SAP jest gotowy!&lt;br /&gt;
&lt;br /&gt;
=== Linki ===&lt;br /&gt;
&lt;br /&gt;
* [http://asap.sourceforge.net/sap-format.html Specyfikacja pliku]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Formaty plików]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>