101

(25 odpowiedzi, napisanych Bałagan)

Niech sobie ekspert woła. Przepisanie samych filtrów na asm urwało 6 milisekund z 19.

102

(25 odpowiedzi, napisanych Bałagan)

skrzyp napisał/a:

(...)wymaga 1GHz Pentium III (...)

Czyli mniej więcej mocy 1 rdzenia maliny 2/3.

Ale moja emulacja nie jest też dokładna. Z zegarem 1:1 idą akumulatory fazy i generatory poszczególnych fal. Moduł ADSR tez jest 1:1 - działa co próbkę - ale jest tylko zgrubnym przybliżeniem tego, co robi prawdziwy SID (nie mówiąc już o ADSR Bug). Są filtry, ale tutaj to juz w ogóle są schody, bo nie ma dwóch takich samych sidów, więc filtry sa zrobione zgodnie ze specyfikacją: częstotliwośc ~=wartość rejestru*5.8 + 30. Nie ma póki co mozliwości odtwarzania sampli.

Jeśli chodzi o czas, najwięcej czasu da się chyba zaoszczędzić na module ADSR, zwłaszcza, jeśli się zrobi tak jak w SIDzie, czyli licznik inkrementowany co cykl i dane z tabelki.

Najwięcej w tym przypadku daje przejście na asm, bo kod który wychodzi z kompilatora jest kompletnie nieoptymalny. Jak piszę w asm to na przykład wiem jakie wyniki za chwile wykorzystam i trzymam je w rejestrach; raz ładuję do rejestru wskaźnik do struktury, a później dodaję tylko offsety. Albo wiem ze w tym konkretnym miejscu potrzebuję 64 bitów na wynik pośredni wiec wstawiam tam instrukcję smull  a potem koryguje wynik do 32 bitów zamiast deklarować zmienne jako int64. itd, itp.

Apropos FPGA, docelowo to tam pójdzie :) Zresztą, mam ja sida w swojej retromaszynie (temat retromaszyny jest tutaj: http://forums.parallax.com/discussion/1 … 80-enabled a tutaj http://www.par.pl/Archiwum/2015/2-2015/ … -Propeller jest artykuł )  na FPGA, ale tam za niego robi SIDCog na zaszyty w FPGA mikrokontroler Propeller. Od tego SIDCoga w ogóle zaczęło się moje zainteresowanie SIDem. Ten emulator działa tam na 44100 Hz, wraz z ewentualnymi aliasami. A robiąc własny emulator przynajmniej mogę zrozumieć, jak ten chip pracuje w środku, a bez tego nie ma mowy o własnej implementacji SIDa w FPGA.

103

(25 odpowiedzi, napisanych Bałagan)

Grajka zagrała na malinie. Tyle że: za pierwszym podejściem procedura się nie wyrabiała. Posiedziałem nad kodem, pooptymalizowałem, JEST! Wyrabia się w ramce. 19.5 milisekundy na 20. Na malinie trójce... Ta sama procedura na blaszaku - 600 mikrosekund...

Ten SID o tyle potrzebuje tej mocy, że po pierwsze działa 1:1, 985 kHz, a po drugie uprzestrzennilem mu wyjście, co spowodowało ze zamiast jednego filtra muszą być 3 niezależne dla każdego kanału, a na koniec mikser. Ale tez i kompilator fpc na ARMa daje mało optymalny kod. Pooglądałem go sobie...

Wylazły też inne kwiatki: kompilowany na platformę x64 kod "wytrzymał" obliczenia na 32-bitowych intach, których wyniki pośrednie nie mieściły się na 32 bitach. Po prostu natywny format jest 64-bitowy... błąd związany z przepełnieniem oczywiście natychmiast wyszedł na 32-bitowej malince.

19 milisekund na Raspberry Pi 3 oznaczało po prostu brak możliwości uruchomienia tej zabawki na malince dwójce. W tej sytuacji wyjścia nie było i  tak jak przewidywałem, w ruch poszedł asembler. Na pierwszy ogień do przepisania poszły filtry. Z 19 milisekund zrobiło się 13. Ciekaw jestem ile jeszcze urwę tych milisekund...

Jak już urwę tyle, że zagra na nie podkręcanej dwójce, wrzucę próbkę. Po czym spróbuje podpiąć do grajki także POKEYa, coby zagrała także nasze rodzime SAPy.

104

(25 odpowiedzi, napisanych Bałagan)

Wyniki eksperymentów z programem, odkąd dostał dostęp do katalogów (=HVSC) są takie, że większość PSIDów gra.. ale nie wszystkie. Sporo po prostu nie działa. Coś jeszcze jest niedorobione...

Dwie rzeczy chcę mieć teraz w związku z tym programem. Chcę to mieć na malinie, i żeby odtwarzało także SAPy. Do tego celu trzeba zaimplementować POKEYa, który wygląda na rzecz trochę bardziej złożoną niż SID.

105

(25 odpowiedzi, napisanych Bałagan)

PS: klawiszologia: strzałki w górę/dół - poruszanie się po liście, enter - wybór pliku/katalogu , 1-100 Hz, 2-200 Hz, 4-400 Hz, 3 - 150 Hz, 5-50 Hz, f1,f2,f3 - kanał 1..3 on/off,  p-pause/resume, esc - wyjście, i - raster interrupts :) , f - fullscreen on/off, +,- na klawiaturze numerycznej - zmienia subsong

Program prosi kartę dźwiękowa o 96 kHz/16 bitów.

106

(25 odpowiedzi, napisanych Bałagan)

Jak ktos chce sie pobawic w alpha-testera, załączam próbkę. Potrzebny windows x64. Program oczekuje sidów w D:\sid.

107

(25 odpowiedzi, napisanych Bałagan)

Nieparzyste są zajęte przez 65C02. Zostało mi 7 miejsc. Dlatego jedną (pld) wpakowałem pod $44. Mam jeszcze parę nopów na rozszerzenia poza zakresem 3/7/B/F - 54, D4, F4 5C, DC, FC - póki co, robia NOP. Żeby było konsekwentnie, zdaje się nie obejdzie się też bez segmentu stosu. Tu push i pull nie ma sensu, trzeba zrobic ld i st. Poza tym chcę kiedyś zrobić instrukcje "g32/go8" - wszystkie opcody i adresowanie zostają bez zmian, tyle że A, X, Y, PC i SP dostają 32 bitów. Nic więcej nie chcę dodawać, to ma być nadal tak proste jak 6502.

108

(25 odpowiedzi, napisanych Bałagan)

Grajka dostała 6502. A nawet "65032 (?)". Znalazłem gotowca pod nazwą Fake6502. http://rubbermallet.org/fake6502.c Napisany w C - nie mój język ojczysty - ale czytelnie. Przetłumaczyłem na pascala. Oryginał jest czystym 6502 z illegalami. Dopisałem instrukcje 65C02. Illegale pod x3,x7,xB i XF zostały :). Żeby zrobić z tego coś, co skorzysta z większej ilości RAMu, dodałem mu rejestry segmentowe. Są 32-bitowe, ea:=segment shl 8 + ea6502. Więc jest 40 bitów przestrzeni adresowej :). Instrukcje ldc, ldd, stc, std, phc, phd, plc, pld upakowałem ( z wyjątkiem jednej)  pod x2. Duża przestrzeń jest potrzebna jeśli to coś ma na przykład z poziomu 6502 grać "wszystko" (pliki .dmp mają na ogół  >64 KB)

W rezultacie grajka, oprócz plików .dmp ze zrzutami rejestrów SIDa gra teraz także pliki .sid. Póki co, PSID. RSID muszę jeszcze rozpracować. W następnej kolejności do obróbki pójdzie nasz ojczysty .sap. POKEYa muszę spreparować :).

Paczkę z nową wersją grajki wrzucę, jak zrobię w niej porządek. Bo zagrała prawidłowo 5 minut temu, wyświetla na ekranie mnóstwo info niezbędnego do debugowania zamiast tego co trzeba i wciąż nie porusza się po katalogach, co teraz stało się już niezbędne.

PS: ten 6502 działa na blaszaku z "częstotliwością" ~300 MHz. Około 70 milionów instrukcji na sekundę. Zapuściłem na malinie. Jak zwykle, 1:10, ~30 MHz, ~7 MIPS. Pod SID/SAP/co-tam-jeszcze-playera i 7 MIPS wystarczy :) Ale to nie jest czasowo optymalny kod. Za dużo wywołań funkcji.

109

(25 odpowiedzi, napisanych Bałagan)

Jak to ma być odtwarzacz "do wszystkiego" to jednak najlepiej "zrób to sam"

Malina 3 uciągnie 1080p/60Hz (ale nie 4k). Tyle że malinę 3 trzeba naprawdę dobrze chłodzić. Jeśli nie wiatrak, to naprawdę duży kawał żelastwa, najlepiej połączony termicznie z jakąś metalową obudową

Jak nie malina 3, to płytki x86. Atom, albo podobny chip od AMD. TDP 10..15 W  (też bez chłodzenia będzie ciężko) ale wydajność znacznie większa niż malinki, nawet trójki. Cena też.

Rozwiązanie najtańsze: odtwarzacz DVD Manta z USB. Bierze "wszystko". Za wyjątkiem płyt audio-CD nagranych bez przerw - wstawia przerwy. Druga wada: niezawodność. Miałem taki odtwarzacz.. mam dalej to co z niego zostało - walnął moduł zasilania. Nie do naprawy (miazga totalna na płytce). Ale póki był, to odtwarzał nawet płytki, które kiedyś nagrałem z muzyką w formacie mp2 (2, nie 3)...

110

(522 odpowiedzi, napisanych Bałagan)

Powoli ogarniam retroemulację na Pi3. Na chodzie: Atari 8bit (Atari800), Atari ST/E (Hatari), Amiga (UAE4ARM)i blaszak z DOS/Windows 3.11 (Dosbox).

Z klasyków został jeszcze C64.

111

(522 odpowiedzi, napisanych Bałagan)

To powyżej to 1 kwietnia :)

Hatari to całkiem dobry emulator: poszło na nim We Were @. A malina pozwala ustawić 50 Hz odświeżanie. Szkoda że synchronizacji z vblankiem brak - malina na to pozwala, nawet bez SDLa. W rezultacie braku synchro nawet na 50 Hz  jest tearing - miejsce tearingu powoli płynie sobie z dołu w górę przepływając ekran w kilkanaście sekund.

Odpowiednią funkcję ma fbdev. W swoim sofcie na malinie używam sdl tylko do zainicjowania grafiki coby ewentualnie x się nie wcinał, resztę robię po /dev/fb0 - szybko, prosto i skutecznie.

112

(522 odpowiedzi, napisanych Bałagan)

Przy ośmiu milionach instalacji Raspbiana to jest już jedna z wiodących dystrybucji :) i jak tak dalej pójdzie  to niedługo Debian będzie pochodną Raspbiana zamiast na odwrót :)
---------------
Ogarnąłem w miarę Hatari. Nie polecam na malinie SDL2. Na SDL1 trzeba dać hdmi_mode bodajże 18 - 576p, 50 Hz. Jest dobrze. Big Demo działa, Union Demo też. Nostalgic wyświetla niestety kaszę zamiast main menu; ramek nie gubi, dźwięk, żeby nie rwał, obowiązkowo 48 KHz. Źle synchronizuje z odświeżaniem, no ale SDL1 tego nie potrafi. Zamiast SDLa należałoby na malinie użyć fbdev. Wtedy jest szybki dostęp do pamięci ekranu, normalnie, po ludzku, czyli kawał ramu w który wrzuca się bajty i je od razu widać, a i vsync jest łatwo dostępny.

113

(522 odpowiedzi, napisanych Bałagan)

Przecież Raspbian to Debian jest, tyle że optymalizowany pod HW. Była i Pidora, nie wiem co z niż się stało co prawda, jest OpenSuse i Ubuntu Mate.

Ale postaw na malinie - nawet dwójce - coś co nie jest Raspbianem: KDE z plazmą i do tego PulseAudio =  już po malinie. Chodzi jak muł - testowałem.

Ubuntu Mate jeszcze jakoś się rusza ale też wyrzuciłem po wstępnych testach.

114

(522 odpowiedzi, napisanych Bałagan)

Te alternatywy są wszystkie fajne póki nie zaczniesz użerać się z zapluskwionym kodem przy prawie zerowym wsparciu.

115

(522 odpowiedzi, napisanych Bałagan)

Cyprian napisał/a:

a jak z wydajnością? pokazuje wszystkie ramki czy omija co którąś?

Póki co trudno powiedzieć, bo bawiąc się ustawieniami rozeksperymentowałem sobie dysk. Się skaszanił jeden sektor. Był w miejscu kluczowym dla systemu plików.

Partycję dało się podmontować na blaszaku i zgrać z niej dane, ale fsck reperuje mi ten dysk już n-tą godzinę. Jutro postawię raspbiana od na nowa. Jak się robi eksperymenty, normalka.

116

(522 odpowiedzi, napisanych Bałagan)

Wreszcie mam tryb mono działający w hatari na malinie. Coś poprawili: ściągnąłem wczoraj wieczorem nowe źródła i skompilowałem z SDL 1.2. SDL2.0 na malinie to jest nadal pomyłka. Ale z 1.2 działa teraz dobrze i w okienku i z konsoli. Ekran ST przestał byc mikroskopijny nawet pod X - skaluje się 2:1. Można zacząć używać. Przerzucić TOSy i soft z blaszaka i zapuścić parę demek.

117

(522 odpowiedzi, napisanych Bałagan)

Wreszcie mam tryb mono działający w hatari na malinie. Coś poprawili: ściągnąłem wczoraj wieczorem nowe źródła i skompilowałem z SDL 1.2. SDL2.0 na malinie to jest nadal pomyłka. Ale z 1.2 działa teraz dobrze i w okienku i z konsoli. Ekran ST przestał byc mikroskopijny nawet pod X - skaluje się 2:1. Można zacząć używać. Przerzucić TOSy i soft z blaszaka i zapuścić parę demek.

118

(522 odpowiedzi, napisanych Bałagan)

SDL2 na malinie... :(  Za to nowe hatari z hg, skompilowane z sdl 1, działa lepiej niz wersja stabilna 1.9.0. Tyle że obraz mono dalej *jowy. Teraz jest czarnobiały, ale rozciągnięty z aspect ratio 2:1. Litery trybu mono są kwadratowe. Tryb low wygląda ok, medium.. a niech sprawdzę... też ok...

Będę jeszcze eksperymentował.

119

(522 odpowiedzi, napisanych Bałagan)

Jeszcze tego nie zrobiłęm ale mam wrażenie że oba składniki - i sdl i hatari - trzeba skompilować z najnowszych źródeł. SDL się chwali że od 2.0.4 wspiera malinę, a ja mam na malinie 2.0.2

120

(522 odpowiedzi, napisanych Bałagan)

Skompilowałem właśnie 1.9.0 drugi raz z sdl2. Tragedia. Z konsoli nie chodzi wcale. Spod x chodzi tak "szybko", że nie nadaje sie do użytku. Może trzeba ściągnąc nowy sdl2 i skompilowac ze źródeł - ten, który mam to jest 2.0.2 z repozyorium. Póki co właśnie puściłem mu make z powrotem z sdl 1.2.

Spróbuję tego daily build. Zdaje się trzeba doinstalować najpierw hg

121

(522 odpowiedzi, napisanych Bałagan)

Postawiłem na tej malinie hatari (skompilowałem ze źródła 1.9.0)  i wszystko by działało gdyby nie fakt że uruchomiony spod x jest malusi, a spod konsoli, w trybie monitora mono, zamiast czarno-białego, obraz jest niebiesko-niebieski. Widziałem w necie że ktoś sie też na to żalił, podpowiadali mu żeby ustawił dla hatari bpp, ale g.. to daje. Nieważne czy malina ma bpp 16 czy 32, i czy hatari ma 16, czy 32, obraz ekranu mono jest zawsze niebiesko-niebieski.

122

(522 odpowiedzi, napisanych Bałagan)

thePink napisał/a:

Hmm, to w trójce nie poprawili dźwięku????

tP

Hardware dokładnie ten sam, co w dwójce. PWM + filtr

123

(522 odpowiedzi, napisanych Bałagan)

Za szybko pisałem. Po prostu przenośny twardy dysk. Trójka pozwoliła wpiąć go bezpośrednio, bez aktywnego huba. Posiadany przeze mnie egzemplarz dwójki nie chciał.

Z głośnością bym nie szalał. Driver ma póki co krzaka, który powoduje jego wyjątkowo brzydkie pierdzenie przy większych amplitudach. Rzecz typowa dla takiego algorytmu - trzeba na dzień dobry stłumic wejściowe próbki. Jak ktoś nie chce zerwać słuchawek z uszu podczas oglądania filmu, volume w omxplayerze 6 decybeli w dół. Dałem znać na forum, pewnie poprawią.

124

(522 odpowiedzi, napisanych Bałagan)

Mam trójkę. Jak dla mnie bomba. Pierwsza malina która nie przyprawia o zawał przy przeglądaniu neta. Właśnie z niej teraz piszę.

Tutaj https://www.raspberrypi.org/forums/view … p;t=136445 jest nie szumiący driver do malinowego analogowego dźwięku. Póki co beta, ale działa i nie szumi. Zamiast 11 bitów @48 kHz jest 7 bitów @ ~700 kHz. Niepotrzebny juz chwost USB do audio.

Ta malina pozwoliła też podpiąć do siebie HD USB bez huba. Dwójka nie chciała. A wbudowane wifi działa jak ta lala. Nie testowałem jeszcze tylko bluetootha.

125

(522 odpowiedzi, napisanych Bałagan)

A ja biorę trojkę jak tylko podrzucą mi trochę $$$, czyli za tydzień, dwa :)

Retromaszyna, która wyrabia się na styk w dwójce, na trójce będzie miała luz

Sunvox który na dwójce zaczyna protestować (100% cpu) jak się wciśnie czwarty klawisz w co bardziej złożonym patchu (organy hammonda, na ten przykład), pewnie już nie będzie protestował zmuszając do odpalenia wersji lofi.

Dowolny program w lazarusie kompiluje się na dwójce tak deczko za wolno... na trójce pewnie będzie wreszcie tak jak trzeba.

Mam nadzieję że wersja halt and catch fire mi się jednak nie trafi. Z tego co piszą w necie, istnieją felerne egzemplarze trzeciej malinki które grzeją się mocniej niż inne. Pewnie choroba dzieciństwa. Te inne dadzą się overclockować nawet do 1.5 GHz. Tak czy inaczej zamówię od razu radiatorek.