1,451

(26 odpowiedzi, napisanych Programowanie - 8 bit)

W załączniku wersja poprawiona.
Poprawek wymagały:
- procedura ładowania sampla (nie przepisywane były $0FF i $1FF bajt sampla),
- procedura zapisu zestawu sampli (zapisywane było $1000 bajtów z obszaru $7E00..$8DFF zamiast $0A00 bajtów z $7300..7CFF).

Dokładny patch:
$9521: $EA $EA
$9548: $0A
$954b: $72
$954e: $72
$9552: $72

Edit: Jeszcze pojedyncze sample wyjęte z CMCSM.

1,452

(20 odpowiedzi, napisanych Software, Gry - 8bit)

Dzięki! Tablica basów jest dokładnie taka, jak u Rzóga.

1,453

(20 odpowiedzi, napisanych Software, Gry - 8bit)

Hmmm. Podejrzewam, że miał być załącznik, ale go gdzieś wcięło... :)

1,454

(26 odpowiedzi, napisanych Programowanie - 8 bit)

No dobrze. Tutaj jest wersja 1.0, ale o ile potrafi poprawnie zgrać patterny i tracki, to nie potrafi poprawnie zgrywać instrumentów (czyli zestawu sampli).
Swoją drogą jakie Monsoft proponowałeś rozszerzenia dla tracków, patternów i kompletu sampli?

Edit: Instrukcja w załączniku (nie pamiętam gdzie to leży na pigwie).

1,455

(20 odpowiedzi, napisanych Software, Gry - 8bit)

Czy ktokolwiek dysponuje wersjami CMC:
- od Stanley'a - zmodyfikowana tablica basów,
- od Jaskier'a - metrum 3/4 metodą Henryka Karpowicza z Serious#5
i mógłby podesłać?
Uprzejmie proszę o pozytywne ustosunkowanie się do mojej prośby :P

1,456

(16 odpowiedzi, napisanych Fabryka - 8bit)

W czwartej minucie słychać strzały :P

1,457

(50 odpowiedzi, napisanych Zloty)

Ale kto, kogo będzie zjadał?

1,458

(16 odpowiedzi, napisanych Fabryka - 8bit)

Jednak efekty studyjne potrafią zrobić straszne rzeczy z dźwiękiem. Nigdy bym wcześniej nie przypuścił, że oryginalne brzmienia generuje CMC + NEO :) Kawałek brzmi świetnie. Dzięki Y!

1,459

(23 odpowiedzi, napisanych Programowanie - 8 bit)

Czy ja dobrze rozumiem, że ustawiasz stały interwał a zmienna LINE odlicza Ci linie w których wykona się kod rastra albo nie? Dlaczego tak?

Czy nie prościej i wydajniej zmieniać wartość AUDF co przerwanie? Mając oczywiście na względzie, że interwał z AUDF jest przepisywany do wewnętrznego TIMER:
- po przekręceniu TIMER,
- po zapisie do STIMER.
Tak więc zgrubsza:

lda intervals
sta AUDF
sta STIMER
lda intervals+1
sta AUDF
lda #2
sta index
...
...
irq:
index = *+1
  lda intervals
  sta AUDF
  rti

intervals .db 0,1,2,3,4,5,6,... i jakie tam interwały nas interesują

Edit: Można też oczywiście uzyskać granulację 1/4 skanlinii albo co do cyklu CPU. No i kod poza przerwaniami powinien być tak skonstruowany, żeby koniec rozkazu przypadał na moment rozpoczęcia obsługi przerwania (żeby sekwencja wejścia w przerwanie nie czekała zbyt długo). Niezależnie jednak od tego timing liczników będzie precyzyjny - jedyne wahania to oczekiwanie na zakończenie cyklu rozkazowego CPU przed rozpoczęciem obsługi IRQ, ale nawet synchronizacja przez WSYNC ma wahania 1, 2 cykle oidp.

1,460

(13 odpowiedzi, napisanych Fabryka - 8bit)

Dzięki za uściślenie P: - poprawiłem w Atariki.

Jako ciekawostkę może (dla niektórych, bo pewnie sam to zauważyłeś) przytoczę, że CMC jest jednym ze starszych edytorów, ale chyba jedynym (nie zauważyłem niczego takiego w żadnym innym trackerze), który dynamicznie rozkłada dźwięki na kanałach zależnie od użytych rodzajów brzmień (stąd mimo, że pozwala na użycie tylko 3 kanałów muzycznych, to faktycznie dźwięk generuje przez 4 kanały POKEY-a). Był taki wątek o nowym TMC, w którym rozważaliśmy taką funkcjonalność i wydawało mi się że nikt czegoś takiego nie robił, a tu po analizie standardowego playera CMC by Janusz Pelc okazało się, że oczywiście jestem w błędzie :)

1,461

(13 odpowiedzi, napisanych Fabryka - 8bit)

Dzięki za wyjaśnienie tej pauzy :) Wrzucę opis do Atariki przy opisie formatu pliku CMS.
Program nazywa się CMC 2000 v 1.02 ale jednak pochodzi z 6.11.1999 - na załączonej dyskietce masz plik CHAOS2K.XEX.
W przykładowej muzyce GRAVE.CM2 na samym początku jest przykładowe użycie rozkazu V:. Po lewej stronie za to przy każdym układzie są 3 wartości głośności. Na dyskietce są też dokumentacje i program do odczytu tychże (nie umiem się nim posłużyć).
Ładowanie muzyki odbywa się analogicznie, jak w SDCMC ale czasem jak program zawiśnie trzeba wcisnąć RESET i ładować jeszcze raz - zazwyczaj się udaje.

1,462

(13 odpowiedzi, napisanych Fabryka - 8bit)

Dzięki! Tak się to faktycznie robi :)

Jeśli Twój Kolega byłby tak miły, a nie nadwyrężyłbym zbytnio jego uprzejmości, to poprosiłbym jeszcze o ten dokument. Jest to opis drugiej wersji CMC 2000 v.2.02. Obydwa programy są dość podobne, i niewykluczone że instrukcje też bardzo się nie różnią.

1,463

(13 odpowiedzi, napisanych Fabryka - 8bit)

Ooooo. Dzięki :)
Są zdaje się dwie wersje tego edytora różniące się sposobem implementacji funkcji głośności i double-play.

Edit: Mogę się za to podzielić instrukcją.

A klawiaturologia w jakimś skrócie (nie znam czeskiego):

Okno song:
- inverse - zmiana trybu normal/double play
- ctrl+e - o pięć linii w górę
- ctrl+d - o pięć linii w dół
- ctrl+c - skok do pozycji 0 (chyba)
- ctrl+n - zmiana nazwy modułu
- ctrl+s - zapis na kasecie w formacie turbo
- ctrl+l - odczyt z kasety w turbo
- shift+esc - wejście do menu dyskowego

Dodatkowe komendy w songu:
- shift+v: zmiana głośności kanału - V: xx ustawia głośność wszystkich kanałów, V: xx yy ustawia głośność wszystkich kanałów pierwszego pokeya na xx, drugiego na yy (wartości podaje się dziesiętnie 00..15)
- shift+m: zmiana trybu odtwarzania - M: 00 to normal, M: 01 to double
- shift+p: pauza - P: xx yy pauzuje odtwarzanie na czas podany w dziesiętych częściach sekundy (ale jak to podać, skoro wartości w polach songu mogą być 00..63?)

W menu narzędzi dyskowych warto uważać na to, co się wciska, bo:
- shift <,> - zmiana napędu
- 1,2,3,4 to fromatowanie, usuwanie, lock, unlock
- space - katalog
- strzałki - przemieszczają kursor po katalogu
- return - ładuje z dysku wybrany utwór

Ale konia z rzędem temu, kto wie, jak ZAPISAĆ utwór na dysk.

No i zauważyłem, że nie lubi się toto z pamięcią rozszerzoną :/ (u mnie zawisa nawet na DOS II/D+).

1,464

(10,041 odpowiedzi, napisanych Bałagan)

Między USA a Chinami.

1,465

(6 odpowiedzi, napisanych Kolekcjonowanie)

Tylko kto to był ten "Verte" ? :>

1,466

(16 odpowiedzi, napisanych Fabryka - 8bit)

Dziękuję. Chętnie się przyjrzę tym modyfikacjom.
A co skłoniło Cię do poprawienia slide-ów? Czy muzyka z Lasermanii inaczej grała w grze a inaczej w CMC?

1,467

(50 odpowiedzi, napisanych Zloty)

To ja też poproszę o wpisanie mnie i jada na Mega Grail Party!

Edit: Oczywiście na listę Szanow(a)nych Gości.

1,468

(10,041 odpowiedzi, napisanych Bałagan)

Problem z przeludnieniem? Gdzie?
A co w takim razie znaczą kary za produkcję żywności ponad ustawową ilość?

1,469

(22 odpowiedzi, napisanych Programowanie - 8 bit)

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

1,470

(5 odpowiedzi, napisanych Fabryka - 8bit)

Poprawione działanie klawiatury - błąd analogiczny, jak w MPTPLAY.

1,471

(41 odpowiedzi, napisanych Fabryka - 8bit)

Dzięki.

Pin napisał/a:

BUG rep#1:
zatrzymaj odgrywanie modułu MPT spacją. Spróbuj w dowolnie wybrany sposób (oprócz reset i wyłączenia komputera) wyjść do DOS ;).

Faktycznie. Poprawione. Proszę ściągać wersję z ostatniego miejsca.

Pin napisał/a:

poza tym, jak na razie częstotliwości odgrywania sampli jak do tej pory są całkowicie prawidłowe. Tak, jak mówiłem szczekam z utęsknieniem na "reverse stereo" made by MacGyver i Megaplayer ;)

Później. Na razie musi poprawnie grać :)

Pin napisał/a:

MD2 na Rapidusie grają niepoprawnie. Sample grane są jak by w tej samej częstotliwości, ale wycina próbki. Tak mi się wydaje.

Zbadam w czym rzecz. Obszar rejestrów hardwareowych chodzi ze standardową prędkością?

1,472

(10,041 odpowiedzi, napisanych Bałagan)

A ja mam w banku coś takiego, jak automatyczny periodyczny przelew.

Edit: Niechby system informatyczny realizujący przelewy z przeróżnymi restrykcjami kosztował te 60 mld. Płacimy raz, koszty utrzymania niech będą na poziomie kilkuset milionów rocznie. Płacimy 100 urzędnikom obsługującym zdarzenia losowe kolejne kilkadziesiąt milionów i nie mamy dziury w budżecie.

1,473

(41 odpowiedzi, napisanych Fabryka - 8bit)

Okazuje się, że niektóre utwory ponazywane są .MD1 gdy tymczasem powinny być .MD2. I tak jest z VICVERSA.MD1 i np. MOON.MD1.

Edit: Co można w takiej sytuacji zrobić:
1. Zmienić rozszerzenie modułu.
2. Użyć przełącznika /M DIGI2.

Z innej beczki (choć w tej podobie) - w przypadku kiedy mamy do czynienia z MD1 a sample mają rozszerzenie .SMP lub .DRM, wtedy player zakłada częstotliwość 15kHz. Jeśli sample mają być odtwarzane z 8kHz wtedy można:
1. Zmienić rozszerzenie sampla.
2. Użyć przełącznika /L.

Z jeszcze innej beczki - niektóre moduły zapętlają się w kółko, lub wyraźnie kończą się ale zamiast rozkazu $FE w tracku użyty jest skok o pattern wyżej ($FF z numerem pozycji). Skutkuje to odtwarzaniem w nieskończoność.
Może przydać się wtedy opcja /T 3:00 umożliwiająca ustawienie maksymalnego czasu odtwarzania utworu.

Gorąco polecam też ustawianie parametrów w zmiennej środowiskowej zamiast w RUNEXT.CFG. Dlaczego? Otóż SDX bazując na definicji wywołania z RUNEXT.CFG składa całą linię, która jest uruchamiana przez system. A bufor linii poleceń ma jak wiadomo tylko 63 znaki, więc przy sporej liczbie często używanych przełączników kompletne wywołanie może się nie zmieścić.
Zmienna środowiskowa ma tę zaletę, że nie jest dołączana do wywołania polecenia, a jest przetwarzana po uruchomieniu programu, ale przed parsowaniem linii poleceń. Wywołanie komendy jest więc krótkie, a co najfajniejsze - można wywołując program w linii poleceń nadpisać działanie przełączników wstawionych do zmiennej środowiskowej.
Tak więc:

SET MPTPLAY=/XBT 3:00 /P -1,1,1,-1

będzie wyłączało ekran ANTIC-a podczas grania modułów digitalizowanych, wyświetlało szczegóły budowy modułu, ustawi maksymalny czas trwania utworu na 3 minuty i ustawi panoramę dźwięku tak, jak robi to MegaPlayer dla każdego wywołania programu, ale wywołując z palca:

BOREMLOZ.MPT /T 0 /P 0,0,0,0

(mając oczywiście podmapowane rozszerzenie MPT w RUNEXT.CFG) spowodujesz, że dla tego wywołania zmieni się panorama każdego kanału na środek i kawałek będzie grał w nieskończoność.

Edit 2: Na koniec jeszcze mała dygresja :) Sposób działania RUNEXT.SYS i playera powoduje że:
a) najpierw przetworzone zostaną kolejno parametry umieszczone w zmiennej środowiskowej,
b) W następnej kolejności będą przetwarzane parametry podane w linii poleceń złożonej wg definicji w RUNEXT.CFG. Więc dwa przykłady:
1. RUNEXT.CFG:

MPT,MPTPLAY,% /T 0

spowoduje zawsze odtwarzanie utworu w nieskończoność niezależnie od tego, jaki /T podasz z palca.
2. RUNEXT.CFG:

MPT,MPTPLAY,/T 3:00 %

spowoduje, że domyślnie utwory będą grać 3 min, ale z palca możesz przełącznikiem /T zmienić ten czas (lub go zniwelować sposobem opisanym wyżej).

Edit 3: Oczywiście przy intensywnym korzystaniu ze zmiennych środowiskowych przyda się ENV.SYS.

1,474

(41 odpowiedzi, napisanych Fabryka - 8bit)

Ponieważ ten player był najbardziej zabagniony ze wszystkich, usiadłem i oto wersja 0.6.
Zmiany:
- poprawione odtwarzanie .MD1 i .MD2
- przełącznik /M SYNTH|DIGI1|DIGI2 pozwala na wymuszenie rodzaju modułu
- przełącznik /T [mm:]ss[.dd] pozwala na ustawienie maksymalnego czasu odtwarzania
- przełącznik /B pozwala wyłączyć ekran na modułach digitalizowanych
- przełącznik /A addr pozwala ustawić adres drugiego POKEY-a gdyby ktoś miał go niestandardowo :)
- poprawiona panorama dla wszystkiego (dla sampli również)
- sample mogą mieć rozszerzenie .DRM (bałagan z tymi roszerzeniami)
Powinno grać poprawnie zarówno na ANTIC/VBXE, jak i na 1.77/Rapidus.
W zmiennej środowiskowej MPTPLAY można ustawić często używane parametry.
Kolejność parametrów nie ma już znaczenia.
Bugi i życzenia mile widziane.
Smacznego.

1,475

(5 odpowiedzi, napisanych Fabryka - 8bit)

Update (bez zmiany wersji).
- Przełącznik /B wyłączający ekran na digitizowanych modułach.
- Blokowanie VBLKD celem jak najmniejszych opóźnień podczas odtwarzania sampli.