Gdzieś koło poniedziałku dostalem smsa z namiarami na imprezę. Wiadomość była od zaufanej osoby a o imprezie owej w międzyczasie słyszałem
gdzieś w enternetach, że w redłowie coś ma się dziać. Możecie nazwać mnie hobbystą, ale lubię śledzić podziemie. Ostatnio z wielkim zaciekawieniem przeczytałem od deski do deski w kilka dni pierwszą książkę od czasu IDORU, mianowicie UNDERGROUND, o scenie hackerskiej, i to był taki eye-opener, to, o czym śniłem mając pierwsze przebudzenia połączonej świadomości jako dzieciak, to nie były tylko sny. Wchodzenie umysłem w maszynę i przejmowanie kontroli nad losami innych ludzi, a jednocześnie na pierwszym planie sylwetki konkretnych ludzi, i jest jest dobry celebrity bonus, polecam.
Wracając do gdyni, śledząc lokalny repertuar imprezowy trafiłem już na hasło redłowo i teraz, mając dalsze potwierdzenie lokalizacji, i wiedząc z jak pewnego źródła jest to pakiet informacji, nie miałem wyjścia, musiałem poczynić trud odnalezienia tego venue.
Nie miałem innego wyjścia? Oczywiście że miałem inne wyjście, mógłbym siedzieć w domu i piąty dzień z rzędu spędzać na strojeniu mojego nowego systemu audio. Nowy setup na razie zapowiada się wyśmienicie, ale nie o tym miała być mowa.
Ostatecznie wciskając dwie partyjki TA:Springa w trybie FFA udało mi się opóźnić wyjście z domu na tyle by znaleźć się około północy na
stacji bęzynowej w redłowie, rozważając za i przeciw próby podejmowania samotnie takiej misji jak odnajdywanie jakiegoś bunkra w lesie, ale ostatecznie postanowiłem sprawdzić jak się sprawy mają w moim rodzinnym mieście obecnie.
Za i przeciw rozważałem jeszcze kilkukrotnie, przedzierając się od dwudziestu minut przez las na kępie redłowskiej, gdy telefon na bazie
samego gps podawał mi bardzo nieaktualne dane i w rezultacie zamiast prosto do morza doszedłem aż do jakiejś rzeki, fosy, za którą
zbudowano twierdzę z kamerami i wysokim płotem. Stamtąd wylądowałem w orłowie, gdzie wciąż daje się prosto wejść na klif.
Muszę powiedzieć że sam widok i dzwięk spokojnego morza w noc zaduszek, oświetlonego jedynie światłem księżyca, z widocznością jakieś
pół kilometra, dalej już jednolite aż po sklepienie szare niebo pełne chmur, z Klifu ma się widok totalny na zatokę bałtycką, IMAX rzeczywistości, 180' nieograniczonej przestrzeni przed tobą i wiatr. Za tobą las.
A ja wiedziałem że gdzieś w tym lesie usłyszę dziwęk spalinowego generatora prądu. Z jedynego opisu lokalizacji bunkra jaki udało mi się
wygooglać wynikało że kilkadziesiąt do stu metrów od morza wgłąb lasu znajduje się wejście. Gdy w końcu po ok 50 minutach marszu usłyszałem generator, zdziwił mnie brak innych odgłosów. Szum morza interferencją miliona uderzeń kropli wody o siebie zagłusza wszystko w dość szerokim zakresie w środku nocy, nawet gdy wiatr jest niewielki. Próbując rozejrzeć się po okolicy uświadomiłem sobie że stoję plecami
odwrócony do sporej wielkości ukrytej bramy bunkra. Ze środka nie dochodziły żadne odgłosy ale ciemniejsza plama w rogu wskazywała na możliwe wejście. Po spojrzeniu w dolinę zauważyłem znajome światło wyświetlaczy telefonów komórkowych i papierosów, jakieś ściszone głosy zdradzały lokalizację eventu ale najpierw postanowiłem sprawdzić dokąd prowadzą drzwi za mną. Włączyłem latarkę telefonu już w środku otworu, i moim oczom ukazał się krótki korytarz pełen jakichś typowych zwęglonych odpadów, korytarz zdawał się zakręcać. Przeszedlem przez ciasnawy otwór w zamurowanych drzwiach i spojrzałem w głąb korytarza. Był dłuższy niż pierwszy, po prawej stronie mijało się kolejne
pomieszczenia, w tym jedno wyglądające na szatnię, w połowie drzwi prowadziły do następnego koryarza i znowu kilka małych odnóg, i znowu korytarz, rozwidlenie. Bunkier był większy niż podejrzewalem, ściany były z betonu i nawet sufit trzymał się nieźle pomimo pożaru jaki ewidentnie miał tu miejsce jakiś czas temu, nie było czuć śladów bęzyny ale może wypalenie miało miejsce dawno temu, w każdym razie miejsce
wydawało się sterylne, jakby najgorszy grzyb pająki i szczury straciły pożywienie podczas pożaru, nie było też czuć typowego dla niektórych dziur tej klasy zapachu ekstrementów. Gdy światło mojej latarki omiotło jedno z przejść rozległo się szczekanie, raczej małego, domowego psa. Pies poszczekiwał kiedy rozważałem czy iść przywitać się z właścicielem, czy nie. Nie sądze żeby w środku mogło być więcej niż dwie czy trzy osoby, a więc nie była to na pewno właściwa impreza. Przepraszam za najście, pomyliłem bunkry, dobranoc, życzę miłego wieczora.
Po trzech minutach marszu w dół doliny minąłem pracujący generator, ale był nieźle zamaskowany bo go nie zobaczyłem. Przed samym wejściem znadował się kilkunasto osobowy tłumek ludzi, z wnętrza dolnego bunkra wydostawała się muzyka. Byłem na miejscu.
Wnętrze drugiego bunkra przypominało ten pierwszy, choć na wejściu zaskakiwała spora różnica wysokości przez co mało nie porwałem sobie
spodni. Tym razem w bunkrze był ruch, w zasypanych lub ślepych odnogach umieszczone były dla orientacji świeczki, a w powietrzu rozchodził
się znajomy dzwięk acid house z aspiracjami do techno.
Dancefloor nie był duży, podejrzewam że może tam wejść maksymalnie 50-60 osób było może 30, ale było całkiem przyjemnie. Minimalistyczne oświetlenie, dyskretny barek, wizualki puszczone z projektora przywiązanego sznurkiem ze snopowiązałki do wielkiej cegły, gramofony, pomimo niskiego sufitu i pojedynczych palących dało się wytrzymać jeśli chodzi o tlen, co samo w sobie budzi respekt bo do 'wolnego powietrza'
dzieliło nas pewnie ze 30m ciasnego krętego betonowego korytarza pełnego ludzi. Bunkier musiał mieć jakiś system wentylacyjny prawdopodobnie związany z tymi dziwnymi ślepymi zaułkami. Pomimo pewnych nierówności i wystających pozostałośi po różnych metalowych konstrukcjach w ścianach (co niewątpliwie ułatwiło montaż kolorowych światełek zmieniających smutną piwnicę w klub)
typ przebrany za siły specjalne, typ udający czarnoksiężnika, koleś z 40cm irokezem w koszulce 'stay up forever'.... Tak, wszystko było
na miejscu.
To tyle jeśli chodzi o wątpliwość że dzisiejsza młodzież nie umie się bawić. The future looks good and wild.
Przy okazji potwierdziły się moje obawy - byłem pewnie o jedną trzecią starszy niż średnia wieku uczestników.
To poczucie bycia nie na miejscu gdy organizator podchodzi i zaczyna przyjacielsko (pozdro) sondować po co w zasadzie tu jestem, bo impreza ma charakter prywatny i poza jakąś paczką znajomych którzy zostali zaproszeni, nikt z zewnątrz w pewnym sensie wcale nie musiał się pokazywać Gdyby przyszło o 20 osób za dużo, cała akcja mogłaby wziąć w łeb, jakieś prywatne ścieżki garstki przedsiębiorczych ludzi mogłyby zostać poplątane bardziej niż by chcieli. I tu właśnie widzę przyszłość. Szkoda tylko że powoli robię się na to za stary.
Z cykly dziś w biurze:
Szykuję sie właśnie do napisania framweworku w Processingu, służącego do wyświetlania tekstu na wyświetlaczu ciekłokrystalicznym. Nie
zacznę od początku tej, bo byłaby ona wtedy zbyt nudna, opowiem tylko nad czym pracowałem dzisiaj.
Wyświetlacze LCD w postaci 'klasycznego' alfanumerycznego 16x2 (max 20x4), cieszą się popularnością, z racji kilku cech, takich jak
dostępność dokumentacji, powwszechność używanego 'API' (do tego jeszcez wrócimy - wszyscy skopiowali rozwiązanie Hitachi (?) I stało
się ono de-facto standardem.
Do Thinklitez, chcieliśmy więcej, Piskun zamówił więc jakiś wyświetlacz graficzny, Trochę strzał w ciemno podytkowany nieco dostępnością podzespoułu na Polskim rynku, ale prawdopodobnie jednak nada się nieźle do naszych potrzeb. Jest to wyświetlacz oparty na
HDcostamcostam który podobno w ogólnej zasadzie działania i pinoutem jest kompatybilny z ilomaśtam innymi wyświetlaczami, typowo dość małymi, nasz ma 128x160 pikseli i od przyszłego tygodnia będę pewnie prototypował jakąś sensowną metodę 'obrotu' wyświetlacza tak,
aby móc traktować go jako 160x128 pikseli bez zbędnej utraty wydajności na jakieś przekształcenia, które na pewno można wyeliminować
jakimś sprytnym pomysłem. Jednocześnie musi to być zrobione tak, aby ów sprytny pomysł dało się wymienić na inny, sprytniejszy pomysł,
kiedy takowy zasygalizuje swoją konieczność.
Przedstawię może jednak jakieś tło do tej historii, spróbuję bardzo pobieżnie. W przeciwieństwie bowiem do 'starych dobrych' 16x2,
wyświetlacze graficzne często różnią się znacznie pod względem dos†epnych funkci. Można więc kupić wyświetlacze które oprócz komend, pozwalających na ustawienie piksela, dają ci także możliwość narysowania linii, prostokąta, a czasami nawet koła, o zadanym kolorze.
. Dzięki takim funkcjom, wyświetlacz można obsłużyć względnie prosto z poziomu mikroprocesora, o których cały czas mowa.
Mikroprocesor robi czasami dość dużo różnych rzeczy naraz, w wielu z nich pomagają mu wbudowane peryferia, kanały DMA, skomplikowane
hierarchie przerwań, ale wciąż dość dużo operacji trzeba wykonać 'ręcznie' za pomocą stosu i zestawu szybkich, jednocyklowych rejestrów. Takie ręczne liczenie np. gdzie zaczyna a gdzie kończy się krawędź koła, dla każdego z np 128x160 pikseli (szbki cmdtab do
kalkulatora) = 20480 pikseli. Do tego pamiętajmy że fajnie mieć po bajcie na R G i B, daje nam >60kb buffor.
60k to nie jest jakoś dużo w porównaniu do ponad 6M gdy mowa o HD, ale w świecie embedded zasoby są ograniczone.
Tyle wstępu, i teraz moje zadanie na dziś: zanim nie ząłem pisać emulator, chciałem upewnić się że rozumiem model koloru jakiego użyć chciał sterownik wyświetlacza.
Nasz wyświetlacz, jak się szybko nie posiada najprostszych nawet funkcji graficzych, nie uświadczysz ani koła, ani linii, ani nawet funkcji ustawienia pojedynczego piksela niestety nie ma, i stało się oczywiste że będziemy potrzebować pisać do bufora, bez tego ani rusz, bo sklecona naprędce funkcja putPixel(x,y,r,g,b) składającą się modła sę z szeregu roskazów najpierw ustawiających w okno pracy
układu piszącego do pamięci GRAM w kontorlerze wyświetlacza, co realizuje się ani tości w rejestry CASET i PASET, a następnie inicjując transfer danych komendą 0x2A ? po której należy wypluć ów felerny piksel.
Dało się odczuć, że projektujący ten system mieli określone założenia dotyczące tego jak zamierzasz pracować z ekranem, i jedyne w czym
zamierzają ci pomóc to scroll, z czego jeszcez nei wiem czy zamierzam skorzystać,
Ponieważ w aktualnym projekcie nie będzie nam potrzebne precyzyjne odwzorowanie koloru, stało się jasne że warto skorzystać z
zostawionej przez projektantów scalaka furtki do zmniejszenia bufora. Zamiast słać po 3 bajty odpowiadające za R G i B, możnta
skompresować nieco informacje i użyć koloru 16bitwego (paleta 65k kolorów), tak w latach 90 pracowały graficzne komputery osobiste, ponieważ ram był drogi, się poświęcić mniejszą ilość bitów na rozdzielczość kolorów. Podczas obecnie gdy w high-endowych produkcjach wideo spotkać można przesadnie wielkie głębie koloru w rodzaju 32bitowy float na każdą ze składowych koloru plus Aplha, dający niebagatelne 32bit*1920x1080*4(rgba)=33177600bajtów, czyli około 32MiB na klatkę, do wielu zastosowań (np dtp) wysarczał kolor i16bitowy w którym pierwszych pięć bitów przeznaczonych jest na kolor Czerwony, następne sześć na Zielony, ichcreszcie ostatnie cztery
na niebieski. 5 bitów czyli raptem 32 możliwości. Nie za dużo. Jeżeli np zamierzasz wyświetlić precyzyjnie jakiś motyw z nieznacznym gradientem typu niebo, to istnieje ryzyko że całe niebo może zawrzeć się np pomiędzy 23 a 25 rysując a kontury po widonokręgu. Na un uniknięciu takiej właśnie sytuacji wyraźnie zależało projektantom tego sterownika wyświetlacza, albowiem oferuje on serię funkcji skupiających się no detalach implementacji takich jak prąd driveró∑ na różnych etapach analogowego wysterowania alementów optycznych, możliwość tuningu kwarcu pod odbieranie sygnału wideo itp. Ogólnie nuda i z większości funkcji nigdy nie skorzystamy, ale możliwość zredukowania bufora jaki trzeba policzyć do 40kb to juź coś czym możnaby się zainteresować, może się przydać. Ponieważ liczyłem się
z tą możliwością w momencie gdy zacyznałem pisać kod, przejście z 24Bit na 16bit wymagało zmiany *3 na *2 w trzech miejscach oraz dopisania funkcji pakującej bity dla ciekawskich podaję wzór L (r&0x wejwiejre). W zasadzie od razu (po pierwszej kompilacji bez błędów) na ekranie pojawił się migoczący wesoło blonk migoczących (matrix style) znaków demonstrujący zasłysazny w sieci szybki generator liczb pseudolosowych, Wydawałob się to szybkim zwycięstwem ale niestety był pewien problem.
Litery owszem, dało się odczytać ale tekst był jasnofioletowy na ciemniofioletowym zamiast biało na czarnym, a zamiast mojego delikatnego gradientu
blue-green widać było w tle brutalne kloce pozornie przypadkowych kolorów. Coś było nie tak.
Datasheet wskazywał niewiele tropów ale gdzieś mignęła mi wzmianka o LUT do translacji kolorów pomiędzy formatami bitów. Trudnością było zgadnięcie że wypełnienie tabeli LUT wybraną paletą barw jest dla trybu 16bit obowiązkowe, i że bez niego obraz wygląda jak kupa. datasheet mówi o
maksymalnie 18-bitowym kolorze, czyli po sześć bitów na kanał (nie pełne 24bity jak trzeba mu wtedy słać dane), w trybie 16bit dla czerwonego i niebieskiego pośwwięcamy po jednym bicie aby nie marnować pasma magistr(i. Po wygenerowaniu liniowych przebiegów od zera do 31 (dla R) i od 0 do 63 dla Zielonego koloru (dobrze robią, w zieleni wzrok człowieka jest najczulszy), i wyeliminowaniu błędu w arytmetyce wyświetlania 0xFF zamiast 0xFF00, moim oczom ukazał się w pełni kolorowy obrazek testowy. LUT to bardzo potężne, choć trudne do maksymalnego wykorzystania narzędzia e. W trosce o jakość odwzorowania koloru pozwala dowolnie (w tym winwersji i innych dziwnych krzywych) zmapowanie podawanych mu 5-6-5 bitów. na dostępne 6-6-6.
Skoro temat już był rozgrzebany to wydałem jeszcez komendę ustawiania parametru Gamma, przy aktualnym prądzie świecenia wioczne różnice jasności barw były pomiędzy 0 a mniej więcej połową skali, podczas gdy droga od 50% do 100% zdawała się nie piąć już tak stromo. Po sprawdzeniu opcji pierwszej i ostatniej zostałem na ostatniej. Różnica w jasności środka była nieznaczna ale przynajmniej realizuje to analogowo driver i nie musiałem dobierać żadnegj drogiej obliczeniowo funkcji nieliniowej żeby to skompensować.
No to tyle, czwartek w biurze. zbr odmeldowuje się, przepraszam za niejasności, w razie potrzeby pytać.
Za każdym razem gdy google oferowało mi wybór zmiany domyślnego języka z Angielskiego na Polski, klikałem że nie. Nie interesuje mnie ściągaj.pl pobierz.pl ani inne serwisy kradnące ruch, nie interesuje mnie piąta największa wikipedia tylko po prostu wikipedia itp itp. Google sugerowało mi zmianę mniej więcej raz na dwa dni, ale pomimo mojej wytrwałości zmiana i tak nastąpiła. Pewnie niedługo nawet nie będą się pytać. Po prostu program stwierdził że skoro tak długo siedzę w polsce to po prostu MUSZĄ mnie bardziej interesować wyniki wyszukiwań w grafice spersonalizowane do lokalizacji.
Co przypomina mi sytuację sprzed jakichś sześciu, siedmiu lat, kiedy google dopiero testowało personalizację wyników i pierwszy raz można było łatwo zaobserwować 'glitche w matrixie' typu zupełnie inne wyniki wyszukiwania w zależności od komputera z którego wpisujesz zapytanie. Co ciekawe inna przeglądarka z tego samego komputera dawała podobne. Wtedy też wpisałem może trzeci raz 'Edirol V4' a wyszedł w image search krzyż, lokalizacja w polsce dała wyższy priorytet stronie 'Church Videos' zamiast oczekiwanego VJForums. Na szczęście po zalogowaniu anomalia ustąpiła.