2,326

(23 odpowiedzi, napisanych Fabryka - 8bit)

No póki co tego się nie da ustawić w RUNEXT, a tylko z linii poleceń:

A:>STPLAY HAPPY2.MUZ -1,-1,0,1

Dorobię ustawianie tej panoramy na /P p1,p2,p3,p4.
Dzięki - faktycznie gra źle. Przeoczyłem.

Edit: Oczywiście w STPLAY nie podaje się nru songu, bo zawsze jest tylko 1.

2,327

(23 odpowiedzi, napisanych Fabryka - 8bit)

Nowa lepsza wersja 0.3 gra moduły z SoundTrackera w wersji sprzed 07.
Założyłem rozszerzenie .ST dla modułów w wersji pre 07. Taki SoundTracker miał:
- 4 ścieżki 1-kanałowe o max długości 64 pozycji,
- ilość instrumentów ograniczona do $3C,
- długość obwiedni ograniczona do $2C,
- obwiednia częstotliwościowa zapętlona,
- obwiednia głośności bez zapętlenia,
- choć teoretycznie można w AUDCTL umieścić dowolną wartość, to w praktyce w samym programie można zmienić tylko zegary bazowe (15k, 64k, 1.77M); nie można włączyć 9-bitowego licznika polly.
Format źródłowy plików dla tego SoundTrackera jest nieco inny, niż dla wersji 07/08, natomiast format danych skompilowanych dla procedury odgrywającej jest ZUPEŁNIE inny niż dla następnych wersji. A ponieważ mało kto pewnie widział takie moduły, to pozwoliłem sobie napisać drugi konwerter dla takich muzyczek no i wyjąłem z jego pomocą muzykę z Mieczy Valdgira.
Żeby skorzystać z konwertera i samodzielnie rypać muzyczki trzeba się trochę pobawić monitorem i znaleźć informację o zapętleniu i długości songu. Mając to, trzeba przygotować plik binarny z muzyką (adres muzyki jest ustawiany w procedurze odgrywającej przy inicjalizacji odtwarzania) i odpalić:

$ ./restpre.py MV11.BIN 2 21

co wygeneruje plik MV11.ST zdatny do załadowania SoundTrackerem lub odpalenia playerem.
RUNEXTa można skonfigurować:

ST ,A:>BIN>STPLAY.COM,% /X

po uprzednim wrzuceniu playera do A:>BIN>.
W paczce znalazły się muzyczki ze Świata Olkiego, Pandemonium, Mieczy Valdgira 1 i 2.
Zapraszam do użytkowania i zgłaszania uwag i błędów.

2,328

(3 odpowiedzi, napisanych Fabryka - 8bit)

Może i racja... Tylko konwersje robiłbym raczej przez tablicę ładowaną z pliku a nie na sztywno.

2,329

(29 odpowiedzi, napisanych Emulacja - 8bit)

Tak, jak KOMBII :/ Masakra.

2,330

(3 odpowiedzi, napisanych Fabryka - 8bit)

Zrobiłem małą łatkę do programu xxd pozwalającą na nałożenie maski na znaki ASCII pokazywane z prawej strony. Pozwala to na łatwe zorientowanie się w tekstach zapisanych w inverse video w plikach z Atari.
xxd znajduje się w pakiecie vim-common (w ubuntu 8.04); dostarczany jest z vim więc pociągnąłem wersję 7.3 i tąż połatałem.
A co zrobiłem? Dodałem parametr -m mask, którym podaje się maskę na znaki ASCII. Żeby pokazać znaczki zapisane w inverse wystarczy obciąć ostatni bit znaku - maska powinna być 0x7f, więc po:

$ xxd -g 1 -m 0x7f Wizard.cmc | head

naszym oczom powinna pokazać się sygnatura pliku CMC.

0000000: ff ff 00 80 19 89 a0 e3 ed e3 a0 e4 e1 f4 e1 a0  ...... cmc data 
0000010: e6 e9 ec e5 a0 8e 95 0d 20 06 48 55 00 c1 67 b0  file ... .HU.Ag0
0000020: 05 f3 eb a9 18 90 6b 00 b7 16 57 9b a5 3c e7 29  .sk)..k.7.W.%<g)
0000030: ce d2 f5 16 75 b6 7f ff 00 00 ff ff ff ff ff ff  NRu.u6..........

Poniżej procedura nałożenia łaty i instalacji poprawionego programu u siebie:

$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
$ tar jxf vim-7.3.tar.bz2
$ cd vim73/src/xxd
$ wget http://mono.i-demo.pl/vim-7.3-xxd-1.10-atari.patch
$ patch -p0 xxd.c vim-7.3-xxd-1.10-atari.patch
$ make
$ sudo install -s xxd $(which xxd || echo /usr/local/bin/)

Edit: Przykładowy out.
Edit 2: Dodałem też konwersję znaków z kodów wewnętrznych ANTICa na ATASCII (parametr -A).

2,331

(23 odpowiedzi, napisanych Fabryka - 8bit)

Dracon napisał/a:

Dziwny sposob odgrywanie muzyki w grze PANDEMONIUM to po prostu kaprys autora tej gry - wiem to od niego samego.

Masz na myśli 3 kawałek?
W załączniku muzyczki z Pandemonium. Wygląda na to, że odtwarzane są standardową procedurą.

2,332

(23 odpowiedzi, napisanych Fabryka - 8bit)

No niby mało popularny, ale bardzo lubiłem muzykę z Mieczy Valdgira 1 i 2 a są dostępne tylko sapy.
W Artefakcie nie zauważyłem różnicy między tym, co w grze, a co gra player. Dank należy złożyć Epiemu za napisanie porządnej procedury odgrywającej, którą ja tylko modyfikuję tu i ówdzie :)

2,333

(23 odpowiedzi, napisanych Fabryka - 8bit)

@epi: Bo dobrze gra w ST07? Co do rozszerzeń to nie obstaję przy swoim - chodzi, analogicznie jak w przypadku przeróbek procedury odgrywającej CMC (bo tam też nie zmienił się w żaden sposób format zapisu muzyki), żeby jakoś można było automatycznie rozróżnić muzyczki dla odpowiedniej procedury grającej.
@miker: Pomysł z .ST ok, ale czemu ST9?

2,334

(23 odpowiedzi, napisanych Fabryka - 8bit)

Wersja 0.2 obsługująca:
- tablice basów Stanleya,
- filtr #4 sterowany #2 (wykorzystywany przez Stanleya w Świecie Olkiego).
Poza tym zrobiłem proste narzędzie do konwersji muzyczek skompilowanych w formacie binarnej ST07 i ST08 do postaci źródłowej .MUZ.
Wywołuje się je tak:

$ ./rest.py SwiatOlkiego.bin

no i to zgra z pliku binarnego z muzyką (blok z muzyką musi być 1 blokiem pliku) plik SwiatOlkiego.MUZ.
Ponieważ aktualnie naliczyłem 3 różne playery do .MUZ:
- muzyczki .MUZ wypuszczone oficjalnie z SoundTrackerem 07; player ma 2 tablice częstotliwości: dla dźwięków 1-kanałowych i drugą na 2-kanałowych
- muzyczki z Miecze Valdgira 2; player ma 1 tablicę częstotliwości dla dźwięków 1-kanałowych i 1 dla basów 1-kanałowych (instrumenty o zniekształceniu $c0),
- muzyczki ze Świata Olkiego; player ma 1 tablicę częstotliwości dla dźwięków 1-kanałowych i 2 dla basów 1-kanałowych (instrumenty o zniekształceniu $c0 i $60), oraz na stałe włącza filtr w #4 sterowany #2, którym robi dudnienia - w tym celu bierze wartość z #2, odejmuje 1 i wspisuje do #4.
Ponieważ sam format .MUZ nie był modyfikowany, to proponowałbym zmienić nieco oficjalne nazewnictwo (zaproponowane chyba przez Epiego):
- muzyczki zgodne z ST07 rozszerzać .MUZ,
- muzyczki zgodne z MV2 rozszerzać .ST7,
- muzyczki zgodne ze ŚO rozszerzać .ST8.

2,335

(29 odpowiedzi, napisanych Kolekcjonowanie)

Musi to jakiś żołnierz...

2,336

(45 odpowiedzi, napisanych Sprzęt - 8bit)

@zaxon: Chodzi nam o to, wg jakiego wzoru należałoby liczyć prędkość transmisji w PC tak, żeby komunikacja z Atari działała bezproblemowo. Ponieważ prędkość liczona wg wzoru z Atariki nie działa dla niskich indeksów (w AspeQt 3 najwyższe prędkości mają _predefiniowane_ wartości i bynajmniej nie są to wartości wynikające ze wzoru - są niższe; AspeQt liczy też prędkość transmisji zakładając uśredniony między PAL a NTSC z Freddym zegar taktujący POKEY).

@Simius: Wielkie dzięki za pomiary. Przynajmniej wiadomo, że wzór w Atariki jest jednak poprawny, a przyczyna rozbieżności musi leżeć gdzieś indziej.

2,337

(45 odpowiedzi, napisanych Sprzęt - 8bit)

Mnie linux raportuje 24MHz. Dzielniki działające (na brzegach względnie stabilnie) są w zakresie:

divider baud(PC)            dev(pal)            dev(ntsc)
190     126315,789473684    0,0028339991939     0,01192969909216
191     125654,45026178     0,00805476359602    0,01710284202885
192     125000              0,01322114503563    0,02222209805995
193     124352,331606218    0,01833398884373    0,02728830480575
194     123711,340206186    0,02339412292186    0,03230228261603
195     123076,923076923    0,02840235818893    0,03726483501287
196     122448,979591837    0,03335948901449    0,04217674911995
197     121827,411167513    0,03826629363878    0,04703879607873
198     121212,121212121    0,04312353458       0,05185173145207
199     120603,015075377    0,04793195902935    0,05661629561563

Odchylenia liczyłem dla baud=126674,785714286 PAL i 127840,892857143 NTSC wyliczone ze wzoru Atari.
No to teraz jeśli przyjąć że tolerancja POKEYa jest symetryczna, to prawdziwa prędkość transmisji to 123.35kbaud? Skoro tak, to może współczynnik jednak powinien wynosić 7,18610754177378?

Edit: divider w tabelce a nie hsidx; hsidx to oczywiście 0

2,338

(2 odpowiedzi, napisanych Bałagan)

Pytaj na http://www.atari.com/ ?

2,339

(23 odpowiedzi, napisanych Fabryka - 8bit)

Po analizie playerków w wersji 07 i 08 widzę, że:
1. Wersja 07 obsługuje:
- łączenie kanałów (autctl w patternie),
- zegar bazowy 1.77MHz dla #1 i #3 (ustawiany za pomocą yx w edytorze obwiedni częstotliwościowej, gdzie y jest dowolną nieparzystą wartością).
2. Wersja 08 obsługuje:
- filtr w #2 sterowany #4 włączony na stałe i używany do dudnień - wartość z #2 jest zmniejszana o 1 i wstawiana do #4,
- zniekształcenie instrumentu $Cx włącza pierwszą tabelę basów,
- zniekształcenie instrumentu $6x włącza drugą tabelę basów,
- nie ma brzmień 2-kanałowych (aczkolwiek kanały można łączyć w AUDCTL),
- zegar bazowy 1.77MHz dla #1 i #3 (ustawiany za pomocą yx w edytorze obwiedni częstotliwościowej, gdzie y jest dowolną nieparzystą wartością).
Jakby ktoś odkopał pliki dla ST w wersji 08, to mógłbym dodać support do playera.

2,340

(23 odpowiedzi, napisanych Fabryka - 8bit)

Wersja 08 jest tutaj (ST08.COM).
Nie znalazłem instrukcji niestety nigdzie.

2,341

(35 odpowiedzi, napisanych Fabryka - 8bit)

Wersja 0.5 z poprawnym basem Rzóga (do tej pory go wcale nie było).
Załączyłem kawałek Cedynia p.t. HLEJNIA.CMR. Normalny bas można włączyć za pomocą /N żeby zobaczyć różnicę :)
Kierownik może ściągać player stąd.

2,342

(45 odpowiedzi, napisanych Sprzęt - 8bit)

Od czego w ogóle wyszedłem? Od analizy kodu AspeQt, bo tam komunikacja przy niskich indeksach szła pięknie. No i okazało się, że tam w pliku serialport.h jest taki kwiatek:

    static inline int divisorToBaud(int divisor)
    {
        switch (divisor) {
        case 0:
            return 125494;
            break;
        case 1:
            return 110765;
            break;
        case 2:
            return 98797;
            break;
        default:
            return (int)(1781610.0 / (2*(divisor+7)));
        }
    }

1.781610 okazała się przybliżoną średnią między kwarcami PAL i NTSC z FREDDIEm (dokładna wychodzi 1781609.75). Ale poza tym to prędkości dla najwyższych indeksów są jakieś od czapy, bo w żaden sposób nie wychodzą ze znanych wzorów. ALE DZIAŁAJĄ!
Policzyłem w którą stronę jest więc odchylenie no i zacząłem eksperymentować z dobieraniem części ułamkowej do 7 wychodząc z założenia, że dla niskich prędkości błąd będzie nieznaczny i POKEY da sobie radę, a dla wysokich da się ustalić wzór liczący precyzyjnie działającą prędkość. No i metodą kolejnych przybliżeń (kiedy jeszcze działa, a kiedy już nie) wyszło mi 7.13.
Sprawdziłem czy wszystko działa na Atari z PAL, ale nie wiem czy będzie to jeszcze działać dla NTSC. Dla PAL z poziomu PC transmisja działa zarówno kiedy liczę zakładając zegar bazowy PAL, NTSC, NTSC z Freddie, jak i średnią wartość taką jak w AspeQt (PAL - NTSC-Freddie), jak i między dwoma skrajnymi częstotliwościami PAL i NTSC.
Niestety Dracowi już nie zadziałało - dla niego współczynnik wychodzi 7.25.

2,343

(23 odpowiedzi, napisanych Fabryka - 8bit)

Z klawiatury można sterować strzałką za pomocą Shift+kursory i Shift+Return. Shift+P odtwarza muzykę.
Edit: A = Shift+L ładuje song.

2,344

(16 odpowiedzi, napisanych Fabryka - 8bit)

No tak, bo zapomniałem o nrze songu:

MUZ=A:>BIN>FCPLAY.COM,% 1 -1,0,1 /X

2,345

(16 odpowiedzi, napisanych Fabryka - 8bit)

Tam mają być 4 zera. Kanał 1 i 2 jest w zybexie łączony więc warto by go ustawić po jednej stronie :)
Np.

[s]MUZ=A:>BIN>STPLAY.COM,% -1,-1,0,1 /X[/s]

Edit: Nie mogę sprawdzić na Atari bo zwaliło mi się SIO... hehe. Biednemu to wiatr w oczy itd.

Edit 2: No tak - późno już. Myślałem, że piszesz o STplay. Sprawdzę to zaraz.

Edit 3: Na emulu gra na obydwu kanałach równo. Ja żywym Atari nie mam chwilowo stereo jak wiesz...:/

2,346

(23 odpowiedzi, napisanych Fabryka - 8bit)

Kolejny player - tym razem do formatu MUZ/ST7 Sound Trackera Henryka Cygerta (byłoby wcześniej, ale 2 dni walczyłem z głupim bugiem :/).
Player ma te same rzeczy co poprzednie :) Łącznie z odgrywaniem n razy na ramkę (w zasadzie to nie wiem po co).
Nie ma na razie modyfikacji zrobionych przez Stanisława Skwiota.
Nie wyświetla też tempa, bo akurat w tym formacie ta informacja nie jest globalna, ale ustawiana w każdym patternie osobno!
I panorama jest dla 4 kanałów, a nie dla 3 jak w CMC.
Można ściągnąć też stąd.
RUNEXTa ustawiamy:

ST7,A:>BIN>STPLAY.COM,% /X
MUZ,A:>BIN>STPLAY.COM,% /X

A i dzięki wielkie dla Epiego za player oczywiście w wersji źródłowej (jak widać jak ktoś jest utalentowany, to nawet mając źródła narobi głupich bamboli).

Edit: I jak zwykle bugs & requests please!

2,347

(18 odpowiedzi, napisanych Bałagan)

E tam. Napisałbyś Mikey jakiś fajny programik.

Edit: Na ATARI!

2,348

(37 odpowiedzi, napisanych Fabryka - 8bit)

Jasne. Ciekawy pomysł.

2,349

(37 odpowiedzi, napisanych Fabryka - 8bit)

Jeśli w ciągu głównym liczysz współrzędne punktów, a za pomocą cli, sei pozwalasz na wykonanie procedury IRQ, która w międzyczasie nadeszła, to może prościej (i szybciej) byłoby wywołać zwykły jsr bez uruchamienia przerwań. Przyjęcie procedury przerwania wymaga:
- zakończenia bieżącego cyklu rozkazowego (czyli cli) - rozkaz sei pobrany prefetchem podczas wykonania cli zostaje zignorowany,
- przyjęcia przerwania przez cpu - 7 cykli (odłożenie powrotu i rejestru znaczników cpu na stos, wstawienie adresu procedury obsługi przerwania z $fffe do pc),
- przy powrocie z przerwania rti wykona się drugie 7 cykli.
A jsr zajmie 6 cykli + 6 cykli rts, nie komplikuje algorytmu, jest przejrzystsze.

Edit: A jeśli już koniecznie chcesz użyć przerwań, to zrób zamiast cli, sei po prostu brk!

2,350

(37 odpowiedzi, napisanych Fabryka - 8bit)

A nie prościej jsr?