2,351

(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,352

(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,353

(18 odpowiedzi, napisanych Bałagan)

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

Edit: Na ATARI!

2,354

(37 odpowiedzi, napisanych Fabryka - 8bit)

Jasne. Ciekawy pomysł.

2,355

(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,356

(37 odpowiedzi, napisanych Fabryka - 8bit)

A nie prościej jsr?

2,357

(37 odpowiedzi, napisanych Fabryka - 8bit)

Tak.

2,358

(37 odpowiedzi, napisanych Fabryka - 8bit)

Nie ma przerwań IRQ, które są chwilowo wysyłane. Żądanie IRQ utrzymuje się do chwili, aż je zgasisz. Przez potwierdzenie odebrania przerwania.

2,359

(37 odpowiedzi, napisanych Fabryka - 8bit)

Procesor zajmuje się wykonywaniem Twojego programu. W momencie kiedy pojawi się sygnał przerwania ustawiana jest odpowiednia flaga żądania obsługi w IRQST. Jeśli znacznik I procesora jest zgaszony (a gasi go rozkaz CLI), wtedy wykonywanie programu jest zawieszane, a CPU zajmuje się wykonaniem procedury obsługi przerwania. Po wykonaniu obsługi wraca z powrotem do wykonywania programu od miejsca w którym mu przerwano.
Jeśli znacznik I jest ustawiony, to CPU nie wykonuje przerwania. Do chwili kiedy nie skasujesz flagi I po prostu przerwania nie będą obsługiwane, ale odpowiednie znaczniki ciągle będą się palić w IRQST. Jak odblokujesz przerwania (CLI), wtedy procesor będzie ciągle przerywał Twój program i będzie obsługiwał przerwania do chwili kiedy w IRQST nie zniknie ostatnie żądanie. Żądanie obsługi przerwania znika kiedy następuje potwierdzenie jego obsługi - odbywa się to przez Twoją procedurę obsługi przerwania w sposób, jaki opisano wyżej - przez zablokowanie danego przerwania w IRQEN i ponowne jego włączenie w tym samym rejestrze.

Edit: Jeśli źródło przerwań zgłasza je często (TIMER1 może to robić BARDZO często - szczególnie z ustawionym zegarem 1.77MHz), może się zdarzyć, że podczas obsługi przerwania nadejdzie nowe żądanie. Wtedy po zakończeniu obsługi bieżącego przerwania CPU od razu wejdzie z powrotem do procedury obsługi przerwania.

2,360

(37 odpowiedzi, napisanych Fabryka - 8bit)

Ale rozkazy SEI i CLI, ani żadna ich kombinacja nie powodują wygenerowania przerwania, a jedynie ustawienie CPU w stan kiedy może już przyjmować zgłoszenia przerwań i je obsługiwać (CLI) lub kiedy ich nie będzie obsługiwać (SEI). Dlatego te przerwania nazywają się maskowalne.

Edit: Wygenerowanie przerwania odbywa się po odliczeniu licznika AUDF1 ($D200) od ustawionej wartości do zera. Rozpoczęcie odliczania następuje po wpisaniu dowolnej wartości do STIMER ($D209).

2,361

(37 odpowiedzi, napisanych Fabryka - 8bit)

Z tego co piszesz nie ustawiasz rejestru zezwolenia na przerwanie IRQEN ($D20E) wartością zezwalającą na przerwanie TIMER1 (#1).
SEI powoduje zablokowanie obsługi przerwań przez CPU, a CLI odblokowanie obsługi ale tylko tych, które są dozwolone w IRQEN. W żadnym wypadku NIE WYGENERUJE żadnego przerwania.
IRQST ($D20E) zawiera flagi informujące, że dane źródło przerwania IRQ jest aktywne. Poprawna obsługa przerwania polega na zablokowaniu i ponownym odblokowaniu przerwania w IRQEN dzięki czemu zniknie flaga zgłoszenia w IRQST.

2,362

(12 odpowiedzi, napisanych Fabryka - 8bit)

Żeby ładnie wyglądało w menu :D

Edit: A naprawdę to chciałem grać na 3 kanałach (a nie na 2), ale nie zdążyłem tego zrobić.

2,363

(12 odpowiedzi, napisanych Fabryka - 8bit)

Metoda jest tutaj.
Moja jest tylko minimalnie zmodyfikowana - wygląda tak:

  sei
  ldx #0        ;reset pokey1
  stx audctl
  ldy #%11
  sty skctl
  lda irqens    ;blokada przerwania licznika 1 pokey1
  and #%11111110
  sta irqen
  stx audf1      ;wyciszenie kanalu 1 pokey1
  stx audc1
  
  lda #%1       ;pokey2: baseclk=15khz
  sta audctl2
  sty skctl2    ;reset pokeya2
  sty audf12    ;po 3 liniach skaningowych powinno zlapac przerwanie jesli mono
  stx audc12    ;cisza
  sta irqen2    ;irq licznika 1 pokeya2
  
  sta stimer2   ;uruchomienie licznikow (niekoniecznie potrzebne)
  bit irqst
  ldx #8
?stsyncloop:
  stx wsync
  dex
  bne ?stsyncloop
  
  and irqst     ;czy wystapilo przerwanie licznika 1 w pokey1
  lsr @
  
  stx audctl2
  sty skctl2
  lda irqens
  sta irqen
  txa
  rol @         ;A=0 mono; A=1 stereo
  cli

Była wykorzystana w msx collection XL Digital i w playerze NEO do utworów konkursowych Yerzmyeya i Pinokia w Głuchołazach 2010.
A nie działa?

2,364

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

...karabinem maszynowym. Czyli jednak roboty wykończeniowe.

2,365

(41 odpowiedzi, napisanych Fabryka - 8bit)

Zmodyfikowałem procedurę odgrywającą sample w taki sposób, że nie pozwalam na przejęcie kontroli, ale sam wywołuję odegranie 2 próbek. Zdaję sobie sprawę z tego, że to, co robię na zewnątrz aż do ponownego wywołania procedury może spowodować niestrojenie (właśnie z powodów o których napisałeś - dzięki), ale właściwie to nie ma tam tego wiele - właśnie chodzi mi o potwierdzenie zjawiska.
Procedury testuję sobie na 80 kolumnowym S2: od VBXE a tam ANTIC jest wyłączony, więc efekt powinien być chyba identyczny.

Edit: A nie 24 z 311.5 okresów (dla PAL oczywiście) :D?

2,366

(41 odpowiedzi, napisanych Fabryka - 8bit)

Wersja 0.3 do pobrania (stąd też).
- Zmieniłem player na Jaskrowy. Nie powinno się już tak spektakularnie krzaczyć, jak poprzedni.
- Poprawiłem też synchronizację procedur odgrywających syntetyki i sample dzięki czemu muzyka nie powinna spowalniać.
- Można też zrobić pauzę (poprzednio zaczynało grać od nowa).
Co mi się zdaje, to że sample nie stroją z instrumentami syntetycznymi podczas grania .MD2. Z .MD1 powinno być ok, bo to procedura, która była poprzednio używana. Fajnie gdyby się ktoś kompetentny wypowiedział.
Zapraszam do testowania i zgłaszania uwag oraz błędów.

2,367

(12 odpowiedzi, napisanych Fabryka - 8bit)

Spróbuj tego - powinno działać.

2,368

(12 odpowiedzi, napisanych Fabryka - 8bit)

Oczywiście. Zaraz dorobię.

2,369

(70 odpowiedzi, napisanych Fabryka - 8bit)

Źródło to jeszcze pół biedy. Najczęściej jednak dysponuje się kodem maszynowym hehe.
Z moich ostatnich działań nad playerami źródła miałem tylko do RMT i TMC. Do MPT był co prawda opis, jak wykorzystać ale widać gołym okiem, że nie działa to jak należy :/.

Edit: Doszły jeszcze Jaskrowe źródełka do MPT (już włączone) i CMC (nie zostały wykorzystane) i od Epiego do ST (na razie jeszcze niewykorzystane).

2,370

(12 odpowiedzi, napisanych Fabryka - 8bit)

No i jest.
Powinien poprawnie odtwarzać RMT 4 i 8 kanałowe. Wykorzystałem procedurę Rastra i przerobiłem ją tak, żeby była w pełni relokowalna. Wymagała też uniezależnienia liczby kanałów w module od tego czy użytkownik deklaruje posiadanie stereo czy nie.
Co to robi:
- detekcja 2 pokeya,
- oblicza ilość songów, patternów, instrumentów,
- pokazuje ilość kanałów.
Jeśli moduł nie był "oczyszczony" (strip), to doczytuje nazwę songu i instrumentów i pokazuje je jeśli było /X.
Zapraszam do gry (można też ściągać stąd).

RUNEXT.CFG można ustawić tak:

RMT,A:>BIN>RMTPLAY.COM,%

tym razem bez szczegółów, bo nazwy 64 instrumentów potrafią skutecznie wszystko zaciemnić.

Edit: Bambol w urlu.

2,371

(16 odpowiedzi, napisanych Fabryka - 8bit)

Zdekompilowałem i poprawiłem tak, żeby grał nie upakowaną muzykę, ale plik źródłowy. Bardzo prosty.

2,372

(16 odpowiedzi, napisanych Fabryka - 8bit)

Gdyby ktoś miał problemy z pobraniem muzyki w formacie Future Composera, to można to zrobić stąd (ten zawiera oryginalny zestaw plików .FC) i stąd.
Ponieważ w drugim ATRze niektóre utwory są uszkodzone proponuję najpierw wyjąć pliki z drugiego, po czym nadpisać je tymi z pierwszego. Z poziomu linuxa można to zrobić np. za pomocą franny:

$ F=$(franny -L plik.atr|grep "\\.FC"|cut -c 5-12); for f in $F; do franny -S -i $f.FC -o $f.FC plik.atr; done

gdzie plik.atr to odpowiednio "Future Composer.atr" i "FUTURCOM.ATR".

2,373

(16 odpowiedzi, napisanych Fabryka - 8bit)

Player kawałków z Future Composera. Features są bazowane na CMC Playerze:
- panorama,
- granie n razy na ramkę (domyślnie 1),
- liczy ilość songów, patternów, instrumentów,
- gra w stereo jak jest,
- powinien kończyć działanie po zakończeniu utworu.
Można go ściągnąć stąd lub stąd.
Zapraszam do gry i proszę o bugs & requests.

Edit: RUNEXTa należy wyedytować podając 3-ZNAKOWE rozszerzenie !!!uzupełniając je spacjami z prawej strony!!!, czyli:

FC ,A:>BIN>FCPLAY.COM,% /X

2,374

(35 odpowiedzi, napisanych Fabryka - 8bit)

Żeby odsłuchać drugi kawałek z Lasermanii wystarczy:

D1:>LASER 2

mając skonfigurowanego RUNEXTa.

2,375

(41 odpowiedzi, napisanych Fabryka - 8bit)

A tam. Procedury odgrywające prawie do wszystkiego są, więc ja to tylko robię tu murzyńską robotę.