Jak wyciągnąć z spa info o subsongach, albo może lepiej czym to wyciągnąć.
https://github.com/willyvmm/mouSTer
jmp $e477
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
TURGEN 9.3.0 Kolejna wersja multiplatformowego narzędzia do zarządzania obrazami taśm.
SV 2024 WE - program imprezy Już za tydzień odbędzie się zimowa edycja Silly Venture
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
atari.area forum » Programowanie - 8 bit » Wyciąganie info z SAP'ów
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Jak wyciągnąć z spa info o subsongach, albo może lepiej czym to wyciągnąć.
Było jak zwykle na www.znajdz.se
http://asap.sourceforge.net/sap-format.html
Proste jak konstrukcja młotka...
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
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.
Chyba raczej
less < plik.sap
Nieodmiennie rozwesela mnie nadużywanie narzędzia do konCATenacji wielu plików w miejscach zupełnie od czapy. ;-)
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.
Ależ oczywiście że o koszerność mi chodziło. Najlepsze flejmy są z powodów nieistotnych.
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
Asapconv ma błąd, wyjście na stdout nigdy nie działa.
Zanim fox to naprawi, załączam asapconv.c poprawiony na szybko.
Dzieki wodzu :)
Tak mi sie wlasnie wydawalo, ale nie mialem juz sily sie wczoraj w kod patrzec.
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.
@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.
Zanim fox to naprawi, załączam asapconv.c poprawiony na szybko
Dzięki!
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.
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ć?
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.
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
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.
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.
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
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.
poprawienie Makefile, zeby dalo sie np. podac parametr CC=costam
Zrobione.
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.
Co do numeracji, jest to tylko blad w komunikacie, powinno wyswietlac:
you have requested subsong 2 ...
... but %s contains only 1 subsongsarg_song + 1
Zrobione.
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.
Podziękował.
Nie podoba mi się pomysł, żeby różne wersje asapconv inaczej interpretowały -s.
Jest to argument nie do podważenia.
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.
Za poprawki - również dziękuję.
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ć.
Super, fajnie widzieć że fox znowu komituje ;)
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ę?
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Programowanie - 8 bit » Wyciąganie info z SAP'ów
Wygenerowano w 0.028 sekund, wykonano 68 zapytań