1

Temat: Wyciąganie info z SAP'ów

Jak wyciągnąć z spa info o subsongach, albo może lepiej czym to wyciągnąć.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

2

Odp: Wyciąganie info z SAP'ów

Było jak zwykle na www.znajdz.se

http://asap.sourceforge.net/sap-format.html

Proste jak konstrukcja młotka...

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

3

Odp: Wyciąganie info z SAP'ów

Można potraktować nagłówek pierwszego bloku binarnego (czyli sekwencję $FF $FF), jako marker końca nagłówka .SAP. Przykładowo:

$ sed -e "/^\xff\xff/ Q" <~/atari/ASMA/Composers/Radecki_Michal/Knight_Lore.sap

Edit:
No a potem to przefiltrować odnośnie potrzebnych wierszy np.:

$ sed -e "/^\xff\xff/ Q" <~/atari/ASMA/Composers/Radecki_Michal/Knight_Lore.sap | grep "SONGS\|TIME"

Jeśli potrzebujesz tylko ręcznie wyjąć informację z pliku, sam ją zinterpretujesz i coś sobie będziesz z tym robił (czyli nie piszesz jakiegoś batcha który przerobi Ci miliony plików), wtedy myślę że bez niepotrzebnych wstępów wystarczy po prostu:

$ grep "^\(SONGS\|TIME\)" ~/atari/ASMA/Composers/Radecki_Michal/Knight_Lore.sap

Ostatnio edytowany przez mono (2015-06-01 09:58:51)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

4

Odp: Wyciąganie info z SAP'ów

Dzieki.
Konstrukcja naglowka jest tak banalna ze mozna to zrobic w czymkolwiek w kilka minut :)
Najprawdopodobniej i tak bede musial napisac jakis prosty parser do tego.

Jednorazowo to nawet
>cat plik.sap | less
zalatwia sprawe.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

5

Odp: Wyciąganie info z SAP'ów

Chyba raczej
less < plik.sap
Nieodmiennie rozwesela mnie nadużywanie narzędzia do konCATenacji wielu plików w miejscach zupełnie od czapy. ;-)

A8CAS - narzędzie do 100% archiwizacji kaset Atari

6

Odp: Wyciąganie info z SAP'ów

Jeśli chodzi Ci o to ">" to jest to śmieć którego tam być nie powinno.
A co do samego nrzędzia cat, cytat z man page 1 przykład użycia:
https://www.freebsd.org/cgi/man.cgi?cat%281%29

EXAMPLES
     The command:

       cat file1

     will print    the contents of    file1 to the standard output.

A jak chodzi o koszerność, to:

less plik.sap

załatwia sprawę.
cnd.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

7

Odp: Wyciąganie info z SAP'ów

Ależ oczywiście że o koszerność mi chodziło. Najlepsze flejmy są z powodów nieistotnych.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

8

Odp: Wyciąganie info z SAP'ów

Jak zmusić asapconv do wyrzucenia streamu na stdout. Niby robie wszystko wg helpa a nie działa.

willy@browar: ~/atari/work % /home/willy/atari/asap/asap-3.2.0/asapconv -o -.RAW -s 1 /home/willy/atari/work/test_dir/test_dir2/Thinker_1.sap
asapconv: /home/willy/atari/work/test_dir/test_dir2/Thinker_1.sap: PlaySong failed
willy@browar: ~/atari/work % /home/willy/atari/asap/asap-3.2.0/asapconv -o dupa.RAW -s 1 /home/willy/atari/work/test_dir/test_dir2/Thinker_1.sap
willy@browar: ~/atari/work % ll
total 9
-rw-r--r--  1 willy  willy  21396438 Jun  1 21:54 dupa.RAW
drwxr-xr-x  3 willy  willy         3 Jun  1 15:15 test_dir
-rwxr--r--  1 willy  willy       604 Jun  1 16:15 tets1.php
-rwxr--r--  1 willy  willy       597 Jun  1 16:06 tets1.php~
-rw-r--r--  1 willy  willy      2719 Jun  1 21:47 tets2.php
-rw-r--r--  1 willy  willy      2721 Jun  1 21:46 tets2.php~
-rw-r--r--  1 willy  willy         0 Jun  1 21:51 ttt.rawa
"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

9

Odp: Wyciąganie info z SAP'ów

Asapconv ma błąd, wyjście na stdout nigdy nie działa.

Zanim fox to naprawi, załączam asapconv.c poprawiony na szybko.

Post's attachments

asapconv.c 19.35 kb, liczba pobrań: 7 (od 2015-06-02) 

Tylko zalogowani mogą pobierać załączniki.
A8CAS - narzędzie do 100% archiwizacji kaset Atari

10

Odp: Wyciąganie info z SAP'ów

Dzieki wodzu :)

Tak mi sie wlasnie wydawalo, ale nie mialem juz sily sie wczoraj w kod patrzec.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

11

Odp: Wyciąganie info z SAP'ów

To jeszcze do poprawek bym dopisal, poprawienie Makefile, zeby dalo sie np. podac parametr CC=costam.
Makefile zaklada na sztywno ze w systemie jest zainstalowany domyslnie gcc. niestety w systemach bez gcc trzeba recznie wprowadzic zmiany.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

12

Odp: Wyciąganie info z SAP'ów

@Krótki : Poprawiona wersja dziala oczywiscie. Przewidywalnie.

Jest tylko smieszny blad jak podam '-s 1' a w pliku jest tylko 1 song:

you have requested subsong 1 ...
... but %s contains only 1 subsongs

,D
ot taki folklor.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

13

Odp: Wyciąganie info z SAP'ów

Krótki napisał/a:

Zanim fox to naprawi, załączam asapconv.c poprawiony na szybko

Dzięki!

willy napisał/a:

To jeszcze do poprawek bym dopisal, poprawienie Makefile, zeby dalo sie np. podac parametr CC=costam.
Makefile zaklada na sztywno ze w systemie jest zainstalowany domyslnie gcc. niestety w systemach bez gcc trzeba recznie wprowadzic zmiany.

Przykład takiego systemu?
Makefile zakłada też, że jest przetwarzane przez GNU Make.

willy napisał/a:

Jest tylko smieszny blad jak podam '-s 1' a w pliku jest tylko 1 song:

you have requested subsong 1 ...
... but %s contains only 1 subsongs

Indeksy od zera są lepsze dla komputerów, niż dla ludzi. :) Masz pomysł, jak to poprawić?

https://www.youtube.com/watch?v=jofNR_WkoCE

14

Odp: Wyciąganie info z SAP'ów

Bardzo przydałaby się też możliwość tworzenia przez asapconv SAP-ów z muzyczek w MPT z samplami (wszelkie obsługiwane rodzaje). Jak dotąd obsługuje to tylko stary SAPMaker.

Powszechnie wiadomo, że kamień potrafi myśleć. Na tym fakcie opiera się cała elektronika.

Terry Pratchett - Równoumagicznienie

15

Odp: Wyciąganie info z SAP'ów

Fox napisał/a:

Przykład takiego systemu?
Makefile zakłada też, że jest przetwarzane przez GNU Make.

FreeBSD >= 10

Programy gnu kompiluje sie np tak:

gmake CC=clang

Mozna zainstalowac gcc, (ale nie ma symlinka do gcc domyslnie) i uzyc CC=gcc48.

Co do numeracji, jest to tylko blad w komunikacie, powinno wyswietlac:

you have requested subsong 2 ...
... but %s contains only 1 subsongs

arg_song + 1

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

16

Odp: Wyciąganie info z SAP'ów

Fox napisał/a:

Przykład takiego systemu?

Np. każdy, na którym zainstalowany jest kompilator C Intela zamiast GCC. Oraz: kroskompilacja.

W ogóle dziwię się że pytasz. Konfiguracja kompilatora za pomocą $CC to w Uniksach standard.

Fox napisał/a:

Makefile zakłada też, że jest przetwarzane przez GNU Make.

Nieprawda, zadziała z każdym kompatybilnym zamiennikiem. Wypadałoby więc też, żeby działał również z kompatybilnymi zamiennikami GCC.

Ostatnio edytowany przez Krótki (2015-06-03 09:30:35)

A8CAS - narzędzie do 100% archiwizacji kaset Atari

17

Odp: Wyciąganie info z SAP'ów

Fox napisał/a:

Indeksy od zera są lepsze dla komputerów, niż dla ludzi. :) Masz pomysł, jak to poprawić?

Usage: asapconv [OPTIONS] INPUTFILE...
Each INPUTFILE must be in a supported format:
SAP, CMC, CM3, CMR, CMS, DMC, DLT, MPT, MPD, RMT, TMC, TM8, TM2 or FC.
Output EXT must be one of the above or XEX, WAV or RAW.
Options:
-o FILE.EXT --output=FILE.EXT  Write to the specified file
-o .EXT     --output=.EXT      Use input file path and name
-o DIR/.EXT --output=DIR/.EXT  Write to the specified directory
-o -.EXT    --output=-.EXT     Write to standard output
-a "TEXT"   --author="TEXT"    Set author name
-n "TEXT"   --name="TEXT"      Set music name
-d "TEXT"   --date="TEXT"      Set music creation date (DD/MM/YYYY format)
-h          --help             Display this information
-v          --version          Display version information
In FILE, DIR and EXT you may use the following placeholders:
%a                             Music author
%n                             Music name
%d                             Music creation date
%e                             Original extension (e.g. "cmc")
%s                             Subsong number (1-based), one file per subsong
Options for XEX, WAV or RAW output:
-s SONG     --song=SONG        Select subsong number (zero-based)
-t TIME     --time=TIME        Set output length (MM:SS format)
Options for XEX, WAV output:
            --tag              Include metadata in the output file
Options for WAV or RAW output:
-m CHANNELS --mute=CHANNELS    Mute POKEY channels (1-8, comma-separated)
-b          --byte-samples     Output 8-bit samples
-w          --word-samples     Output 16-bit samples (default)
Options for SAP output:
-s SONG     --song=SONG        Select subsong to set length of
-t TIME     --time=TIME        Set subsong length (MM:SS format)
Options for native modules (output format same as input format):
            --address=HEXNUM   Relocate music to the given address

In FILE, DIR and EXT you may use the following placeholders:
%s                             Subsong number (1-based), one file per subsong
Options for XEX, WAV or RAW output:
-s SONG     --song=SONG        Select subsong number (zero-based)
Options for SAP output:
-s SONG     --song=SONG        Select subsong to set length of

Trochę bałagan panuje.

Indeksy od zera są lepsze dla komputerów, niż dla ludzi. smile Masz pomysł, jak to poprawić?

Dla 6502 miało by to oczywście sens, ale w dzisiejszych czasach dla niestety już nie.
Może to uporządkować i przyjąć 1-based (human friendly) numerację. Ten program jest dla ludzi :D

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

18

Odp: Wyciąganie info z SAP'ów

Krótki napisał/a:

Asapconv ma błąd, wyjście na stdout nigdy nie działa.

Zrobiłem lepszą poprawkę, bo umożliwia też zapis na stdout SAPów, XEXów i natywnych modułów.

willy napisał/a:

poprawienie Makefile, zeby dalo sie np. podac parametr CC=costam

Zrobione.

voy napisał/a:

Bardzo przydałaby się też możliwość tworzenia przez asapconv SAP-ów z muzyczek w MPT z samplami (wszelkie obsługiwane rodzaje).

Oraz bezpośrednie odtwarzanie MPT z samplami.
Ścieżka przetarta, bo najbliższa wersja RECOIL będzie obsługiwać obrazy zapisane w dwóch plikach.

willy napisał/a:

Co do numeracji, jest to tylko blad w komunikacie, powinno wyswietlac:

you have requested subsong 2 ...
... but %s contains only 1 subsongs

arg_song + 1

Zrobione.

willy napisał/a:

Może to uporządkować i przyjąć 1-based (human friendly) numerację.

Nie podoba mi się pomysł, żeby różne wersje asapconv inaczej interpretowały -s.

https://www.youtube.com/watch?v=jofNR_WkoCE

19

Odp: Wyciąganie info z SAP'ów

Podziękował.

Fox napisał/a:

Nie podoba mi się pomysł, żeby różne wersje asapconv inaczej interpretowały -s.

Jest to argument nie do podważenia.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

20

Odp: Wyciąganie info z SAP'ów

Fox, co powiesz na pomysł dodania muzyczek z automatów do gier do ASMA? Część z nich miała na pokładzie 6502, a reszta Motorolę 6809, no i od jednego - przez dwa - do czterech POKEY-ów. Podobnie jest z grami na Atari 7800, z których część miała POKEY-a na płytce kartridża. Do nagłówka SAP-a można by było wtedy dodać tagi ARCADE i/lub 6809 (dla rozróżnienia emulowanego procesora) oraz 7800.

Powszechnie wiadomo, że kamień potrafi myśleć. Na tym fakcie opiera się cała elektronika.

Terry Pratchett - Równoumagicznienie

21

Odp: Wyciąganie info z SAP'ów

Za poprawki - również dziękuję.

Fox napisał/a:

Nie podoba mi się pomysł, żeby różne wersje asapconv inaczej interpretowały -s.

Zawsze możesz:
- dodać opcję o nowej nazwie z nową semantyką, a stare -s deprecate'ować
- zmienić numer wersji następnego asapconv z 3.x na 4.x, wówczas taka poważna zmiana w interfejsie programu będzie dozwolona
- wykazać się pragmatyzmem i jednak ujednolicić interfejs tak jak proponuje willy, bo ASAP to nie jest enterprise software z dziesiątkami tysięcy płacących użytkowników, i taka zmiana nie będzie nikomu przeszkadzać.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

22

Odp: Wyciąganie info z SAP'ów

Super, fajnie widzieć że fox znowu komituje ;)

"Was powinny uzbrojone służby wyciągać z domów do punktów szczepień, a potem zamykać do pi* za rozpowszechnianie zagrożenia epidemicznego" - Epi 2021
"Powinno się pałować tylko tych co tego nie rozumieją. No i nie szmatki i nie chirurgiczne tylko min FFP3, to by miało jakiś sens. U mnie we firmie, to jak przychodzi bezmaskowiec, to stoi w deszczu przed firmą" - Pin 2021

23

Odp: Wyciąganie info z SAP'ów

A ja może nieco obok tematu, ale poprosiłbym o kompilację (w)asapa z alternatywną emulacją POKEYa (wspierającą wszystkie niestandardowe dźwięki - m.in. piły i trójkąty), np. z ostatniej Altirry albo Atari800. Nawet niech to będzie wersja z zastrzeżeniem - "for high-end hardware".
Da radę?

I Ty zostaniesz big endianem...