Skocz do zawartości
ethanak

Ciężkie jest życie barmana czyli tiny-tapper na ATtiny85

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Bardzo ładnie!

Przy okazji, ciekawy układ przycisków/joysticka, ale chyba źle trzymasz 😉

Udostępnij ten post


Link to post
Share on other sites

A dziękuję 🙂

Nota bene poprawiłem troszkę funkcję drawBuffer, teraz już nie powinna tracić czasu na krótkie sekwencje identycznych bajtów w obu buforach. Muszę tylko sprawdzić, ile czasu (w jednostkach transmisji bajtu) zajmuje zakończenie transmisji, wydanie dwóch komend i rozpoczęcie transmisji danych (ta dziesiątka to się tam pojawiła jakoś tak bez liczenia).

11 godzin temu, deshipu napisał:

Przy okazji, ciekawy układ przycisków/joysticka, ale chyba źle trzymasz 😉

Układ akurat w tej grze nie jest zły (oba przyciski FIRE mają tę samą funkcję, czyli uniwersalnie dla prawo- i leworęcznych). Co do trzymania - cóż, trzymałem niewygodnie bo pod kamerę, nie mam żadnego statywu tylko taki stojaczek do komórki z thingiversa (nie wiem dlaczego wybrałem akurat najgorszy) 🙂

Udostępnij ten post


Link to post
Share on other sites

128x64 to nawet gorzej niż pierwszy Game Boy z zielonym ekranem mono.. I co, można? Można 🙂

Dobra robota, lubię takie projekty. Szczerze mówiąc spodziewałem się plątaniny drucików (natomiast o kod jakoś byłem spokojny) więc to że w ogóle jest jakaś obudowa wystarczy mi do zaplusowania. Gra wygląda na responsywną a to zawsze poprawia "wczuwkę", super.

Co następne? Lunar Lander? Missile Command?🙂 A może przejście na poważniejszy sprzęt, 128x128 RGB?

https://botland.com.pl/pl/wyswietlacze-lcd-tft-i-ips/2639-wyswietlacz-graficzny-kolorowy-tft-lcd-144-128x128px-spi.html

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Z wyświetlaczami kolorowymi jest ten problem, że nawet najbardziej oszczędny tryb koloru dla nich to 16-bit, a wysyłanie dwóch bajtów na każdy piksel już trochę trwa, nawet przez relatywnie szybkie SPI (niby tryb równoległy lepszy, ale tak naprawdę ma podobne ograniczenie prędkości, bo ono nie wynika z szybkości przesyłania sygnału, tylko z szybkości update-owania taniej pamięci w czipie tego wyświetlacza). Ciekawe są natomiast wyświetlacze z 2-bitowymi albo 4-bitowymi pikselami — niestety zazwyczaj mają tylko odcienie szarości. Szkoda, że jakoś nikt nie wpadł na zrobienie czipu do wyświetlacza używającego palety.

Udostępnij ten post


Link to post
Share on other sites
45 minut temu, deshipu napisał:

Z wyświetlaczami kolorowymi jest ten problem, że nawet najbardziej oszczędny tryb koloru dla nich to 16-bit

Nieprawda. Akurat ten z Botlandu ma minimalane kodowanie RGB566, ale kilka lat temu zrobiłem coś na delikatnie większym 132x132 (kontroler PCF8833, tani ekran z Nokii 6100) i tamten miał tryb 8-bitowego koloru z 16-bitową, interpolowaną paletą i LUT. Tak więc: wpadł i zrobił. A działało jak burza.

https://kamami.pl/wyswietlacze-tft/138918-kamodtft2-modul-z-graficznym-wyswietlaczem-lcd-z-telefonu-nokia-6100-nokia-6610.html

https://allegro.pl/oferta/wyswietlacz-lcd-nokia-3100-6100-7695211302

Więc bez przesady, polecam spróbować (zamiast narzekać), bo mówimy tu o grach w których nie musisz za każdym obrotem głównej pętli rysować od nowa całej ramki obrazu (jak biegane w prawo platformówki typu Mario lub przesuwany w 4 kierunkach rzut z góry typu Zelda), tylko bazujesz na poprzedniej zawartości RAMu wyśwetlacza modyfikując małe fragmenty. A z takim założeniem, dobrym wyborem gry i odrobiną organizacji kodu to nawet małe tiny poradzi sobie całkiem dobrze.

Udostępnij ten post


Link to post
Share on other sites

akurat mam ten wyświetlacz(144x144) i jeśli do czegoś się nadaje, to do wyświetlania godziny (bo minuta mu wystarczy na odświeżenie) i to pod warunkiem, że masz kątomierz albo przymocowałeś go do okularów. zastosowałem toto w moim octomonie (taki monitorek do drukarki) i wkurzam się, bo jeśli nie patrzę prosto to nie mogę odczytać temperatury.

Z nokią się bawiłem, całkiem fajnie to działa, tylko znów bezwładność nie pozwala na dwucyfrowy fps...

@deshipu jeśli możesz podać namiary na jakiś mały dwubitowy wyświetlacz (cztery odcienie wystarczą do 99% zastosowań) to będę wdzięczny...

a co do następnego... na 100% Kazik i jego rozpaczliwa walka z Tatarami, jeśli wymyślę grafikę to pewnie też Kazik w charakterze Indiany Jonesa przemierzający podziemia pełne duchów...

tak przy okazji: plątanina drucików jest skrzętnie ukryta pod obudową, ale jak już wspominałem obudowa jest do kitu 🙂

Udostępnij ten post


Link to post
Share on other sites
2 godziny temu, marek1707 napisał:

Więc bez przesady, polecam spróbować (zamiast narzekać)

Um, jak by to powiedzieć... 

Tak jakby zajmuję się tym od kilku lat. I tak, częściowe odświeżanie pomaga sporo, przynajmniej dopóki ci się nie zbierze akurat za dużo rzeczy na raz do narysowania. Ale to na samd21 z 48MHz procesorem, na attiny to chyba możesz sobie snake-a tak napisać.

2 godziny temu, marek1707 napisał:

zrobiłem coś na delikatnie większym 132x132 (kontroler PCF8833, tani ekran z Nokii 6100) i tamten miał tryb 8-bitowego koloru z 16-bitową, interpolowaną paletą i LUT. Tak więc: wpadł i zrobił. A działało jak burza.

https://kamami.pl/wyswietlacze-tft/138918-kamodtft2-modul-z-graficznym-wyswietlaczem-lcd-z-telefonu-nokia-6100-nokia-6610.html

Ciekawe, na tego konkretnego nie trafiłem, być może dlatego, że trochę starożytny i wymaga strasznie dużo dodatkowej elektroniki do zasilania. Ale przyjrzę się, dziękuję za sugestię.

1 godzinę temu, ethanak napisał:

@deshipu jeśli możesz podać namiary na jakiś mały dwubitowy wyświetlacz (cztery odcienie wystarczą do 99% zastosowań) to będę wdzięczny...

Wszystkie małe wyświetlacze e-ink (na przykład te z Waveshare) są 2-bitowe. Masz też 4-bitowe OLEDy z SH1122, SSD1322 i SSD1327. Generalnie tu masz to, co udało mi się znaleźć: https://github.com/deshipu/displays/wiki

6 minut temu, deshipu napisał:

wymaga strasznie dużo dodatkowej elektroniki do zasilania

Poprawka, widzę, że to tylko ten moduł z kamami tak strasznie wygląda, jedyny problem to te 20V do zasilania, jak ze wszystkimi większymi OLEDami. 

Udostępnij ten post


Link to post
Share on other sites

Wiem, że robisz konsolki itp więc tym bardziej zdziwiło mnie to marudzenie, że już na starcie kolor jest błee, że 16 bitów, że będzie wolno i w ogóle. Przecież piszemy w temacie o barmanie zrobionym na tiny a przewinęły się tytuły gier gdzie musisz narysować głowę i zamalować ogon (Snake), przesunąć 8-pixelowy "statek kosmiczny" (Lunar Lander) lub domalować kolejny kawałek śladu rakiety (Missile Command). Przecież tych konkretnych tytułów nie zmyśliłem z sufitu tylko próbowałem przypomnieć sobie coś, co ma  w miarę statyczne tło i  niewielkie wymagania co do zmiany zawartości obrazu.Oczywiście, jest różnica między zapisem 8 pixeli w jednym bajcie (mono) a wysłaniem jednego pixela w RGB 565 - tego nie kwestionuję, ale nie robimy takich gierek dla grania w nie, tylko raczej dla jakiegoś tam wyczynu programistyczno-intelektualnego. Da się zrobić to grywalne na 8K kodu i  8MHz czy nie? To dużo ciekawsze pytanie (moim zdaniem) niż to ile FPS wyciągniesz na SAMD21 czy innym STM32.

A wyświetlacz o którym wspomniałem (ten od Nokii) to zwykły LCD/TFT więc żadnych dziwnych rzeczy do niego nie trzeba. Nie wiem co tam Kamami naspawało na swojej płytce. Jest szybki, podłącza się wprost do SPI 3V a widoczność jest doskonała. Z moich doświadczeń natomiast wynika, że e-inki do gier nie nadają się kompletnie. No chyba, że mówimy o szachach - o ile nie przeszkadza nam makabryczne odświeżanie.całości przy każdej zmianie.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

To jest chyba kwestia tego po co to robimy. Ja jednak robię te gry po to, żeby w nie grać, a raczej żeby inni ludzie też w nie grali. Dlatego dobieram sprzęt do gry, którą chcę zrobić i projektuję tak, żeby było jak najłatwiej kod gry napisać, a nie odwrotnie. Bo napisanie dobrej gry to już jest wystarczająco trudne wyzwanie, nie widzę powodu żeby to sobie utrudniać, jeśli nic dobre go dla gracza to nie wnosi. Snake, lander czy missile command nie potrzebują koloru wcale, więc po co niepotrzebnie komplikować?

E-inki, szczególnie te małe, mogą się nadawać do snake-a i missile command nawet lepiej niż TFT, właśnie dlatego, że możesz odświeżać tylko kawałek. A już szczególnie dobrze się nadają do wszelkiego rodzaju gier turowych, nie tylko szachów. Fakt, w FPS-a nie pograsz, ale to chyba znowu kwestia tego co kto uważa za typową grę komputerową. Poza tym wydaje mi się, że kolega pytał w szerszym kontekście, nie tylko do gier.

Jest jeszcze jedna opcja jeśli chodzi o odcienie szarości: czarno-biały wyświetlacz z dużo wyższą rozdzielczością niż potrzebna i "wzorki" symulujące odcienie szarości. Takie podejście działa dla mnie do emulowania PewPew na małych OLED-ach, na przykład:

551741556206881375.thumb.jpg.ad23ad6200a390cec49322d63585f236.jpg

Z tego co wiem, PlayDate będzie to tak robił, na swoim sharp memory display, który na razie zapowiada się naprawdę ładnie:

D-AZAFBUEAEP1nM.thumb.jpg.292ea30911e328c57a6f59caf466cbb3.jpg

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
4 godziny temu, marek1707 napisał:

A wyświetlacz o którym wspomniałem (ten od Nokii) to zwykły LCD/TFT więc żadnych dziwnych rzeczy do niego nie trzeba. Nie wiem co tam Kamami naspawało na swojej płytce.

Już wiem co. Podświetlenie ma dwoma LED-ami w szeregu, więc wymaga 6-7V żeby dobrze świeciło i do tego mają ten boost.

Udostępnij ten post


Link to post
Share on other sites

@ethanak Zawsze jarały mnie mini gierki na mikrokontrolerach. Kiedyś zrobię swoją, obiecuję 🙂

Jeśli chodzi o wyświetlacz 2-bitowy to sprawdź OLEDy na SSD1327 który wcześniej wspominał @deshipu. Miałem z nimi do czynienia i są bardzo fajne.

"Przyczepiłbym" się do obudowy. Mimo, że rozumiem pośpiech(sam czasem nie dbam o obudowy) i wstyd wobec STLa to polecam robić zawsze jedną rzecz - zasłaniać wyświetlacz. Jes to na prawdę proste. Pisałem o tym jak to się robi: 
https://msalamon.pl/nigdy-nie-rob-tak-z-wyswietlaczem/

BTW jeżeli nie wstydzisz się ani trochę swojego produktu to znaczy, że jest już za późno na pokazanie go światu także robota wykonana bardzo dobrze 😄

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
33 minuty temu, msalamon napisał:

polecam robić zawsze jedną rzecz - zasłaniać wyświetlacz

Tu zamiar był troszkę inny - wyświetlacz maksymalnie podniesiony do góry (najchętniej aby był w jednej płaszczyźnie z obudową, ale ze względu na taśmę to niemożliwe) . Zauważ: o ile w LCD zawsze coś świeci na boki (ledy podświetlenia) - przy OLED nie ma tego efektu, margines spokojnie może zostać. Praktycznie zasłonięcia wymaga wyłącznie dolna część (tam, gdzie wchodzi taśma), ale ponieważ obudowa była (jak wspominałem) nieudana (nie ze względu na wygląd, ale na parszywą i niewygodną do składania wewnętrzną część z mocowaniami do elektroniki) postanowiłem dać sobie z tym spokój. Szczerze mówiąc - w czasie grania niespecjalnie to przeszkadza 🙂

Dzięki za namiary na artykulik, akurat będę robił niedługo panel czołowy do takiego jednego ustrojstwa więc na pewno skorzystam!

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
Dnia 1.07.2019 o 13:23, deshipu napisał:

Ciekawe są natomiast wyświetlacze z 2-bitowymi albo 4-bitowymi pikselami — niestety zazwyczaj mają tylko odcienie szarości. Szkoda, że jakoś nikt nie wpadł na zrobienie czipu do wyświetlacza używającego palety.

Nie ma problemu aby zrobić konwerter pośredniczący pomiędzy mikrokontrolerem a wyświetlaczem, który akceptował będzie dane 8, 4 a nawet 2-bit a wyświetlał w 16-bit. Pytanie czy będą chętni na takie urządzenie? Budowa prosta i stosunkowa tania (mikrokontroler z wymaganą ilością RAM i DMA), ale nie ma szansy konkurować z FT8xx. Czy jest więc sens budować coś takiego? Zależnie od rozdzielczości wyświetlacza, cena mikrokontrolera będzie wahać się w granicach 8..20zł. Czy do wyświetlacza np 128x160 za 23zł dołoży ktoś "konwerter" za ok 15zł jeśli zamiast powolnego AVR (bo chyba o nich mowa) dać ARM za owe 15zł?

Klientów widzę jedyne w miłośnikach Arduino. Ilu by chciało coś takiego kupić?

Udostępnij ten post


Link to post
Share on other sites

Zgodzę się:  nie ma sensu. Mikrokontrolery typu tiny nie służą do pisania gier czy obsługi szybkich wyświetlaczy. Tego typu programy jak mój Barman czy wszystkie Tetrisy i Pacmany to raczej sztuka dla sztuki - o, pokażemy że to da się zrobić. Nie kupiłbym takiego konwertera bo to żadna frajda - tu chodzi o to, aby zmieścić się z grą w tych paru kilobajtach, żeby z tego pół kilo ramu wykorzystać 99% a nie 101... i bez żadnych dodatkowych układów.

Ale...

Sam pisałeś coś na C64 (ja na C16 czyli z pamięcią jeszcze mniej wesoło), pamiętasz co się robiło na procku z całym megahercem zegara... to była zabawa, wyzwanie.

I niech tak zostanie. Powspominajmy sobie przy piwie stare dobre czasy, popatrzmy z góry na tych, co muszą mieć gigahercowy procek z fafnastoma rdzeniami i gigabajtem ramu do tego, co myśmy robili na komodorkach czy atarynkach...

Na zdrowie!

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...