26 Ostatnio edytowany przez seban (2015-06-08 18:52:58)

Hej!

Kompiluje na RPI2:

pi@raspberrypi ~/atari800/src $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
pi@raspberrypi ~/atari800/src $ gcc --version
gcc (Debian 4.6.3-14+rpi1) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

oczywiście Twoja binarka działa bez problemu, tylko pierwsze uruchomienie było lekkim zaskoczeniem, bo jakieś obłędne ustawienia palety były :) i miałem ze 4 razy jaśniejszy obraz o mega kontraście :)

pi@raspberrypi ~/atari800/src $ sudo apt-get install build-essential
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności       
Odczyt informacji o stanie... Gotowe
build-essential jest już w najnowszej wersji.
0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.

27 Ostatnio edytowany przez seban (2015-06-08 19:53:13)

@Sim_Piko: zadam głupie pytanie... skąd brałeś źródła Atari800-3.1.0? Bo spróbowałem skompilować źródła z tego co podesłałeś i wychodzi na to że ./configure --target=rpi --host=arm-linux poszło bez najmniejszego problemu. Właśnie poleciał make, również bez problemu.

Ja źródła pobrałem z tej lokalizacji:

http://sourceforge.net/projects/atari80 … 800/3.1.0/

Właśnie sprawdziłem MD5 i wszystko się zgadza:

pi@raspberrypi ~/Downloads $ md5sum atari800-3.1.0.tar.gz 
354f8756a7f33cf5b7a56377d1759e41  atari800-3.1.0.tar.gz

Tyle że 'src' od Ciebie się kompiluje bez problemu, a pliki z sf.net tak jak to widać powyżej ;/

28 Ostatnio edytowany przez Sim_Piko (2015-06-08 20:00:29)

Ja pliki brałem prosto z repozytorium(tak to sie na to mówi?) http://atari800.cvs.sourceforge.net/viewvc/atari800/ , czyli najświeższe możliwe źródła jakie są dostępne.
Zaraz sprawdzę, czy paczka 3.1.0 u mnie działa...

A to z tymi paletami to normalka, też się za pierwszym razem przestraszyłem. wystarczy .cfg usunąć/na chwilę zmienić nazwę, bo w cfg się parę nowych opcji pojawiło dotyczących przestrajania palety, głównie tej z pliku.

29

A widzisz... i tu jest "przysłowiowy" pies pogrzebany :)  na początek porównałem pliki "configure", są inne... masz świeższą wersję, ze sporą ilością zmian.

30 Ostatnio edytowany przez Sim_Piko (2015-06-08 20:36:01)

no powiem tak, 3.1.0 wywala ten sam błąd co tobie
przejrzałem config.log-a, a ten stwierdził, że kompilator nie istnieje

...
configure:2825: checking for C compiler version
configure:2834: /bin/arm-linux-gnueabihf-gcc --version >&5
./configure: line 2836: /bin/arm-linux-gnueabihf-gcc: No such file or directory
configure:2845: $? = 127
configure:2834: /bin/arm-linux-gnueabihf-gcc -v >&5
./configure: line 2836: /bin/arm-linux-gnueabihf-gcc: No such file or directory
configure:2845: $? = 127
configure:2834: /bin/arm-linux-gnueabihf-gcc -V >&5
./configure: line 2836: /bin/arm-linux-gnueabihf-gcc: No such file or directory
configure:2845: $? = 127
configure:2834: /bin/arm-linux-gnueabihf-gcc -qversion >&5
./configure: line 2836: /bin/arm-linux-gnueabihf-gcc: No such file or directory
configure:2845: $? = 127
configure:2865: /bin/arm-linux-gnueabihf-gcc -o conftest -O2 -Wall -I/include -I/include/SDL -I/include/interface/vmcs_host/linux -I/include/interface/vcos/pthreads   -Wl,--unresolved-symbols=ignore-in-shared-libs -L/lib conftest.c  >&5
./configure: line 2867: /bin/arm-linux-gnueabihf-gcc: No such file or directory
configure:2869: $? = 127
configure:3082: checking whether we are cross compiling
configure:3120: result: yes
configure:3124: checking for suffix of object files
configure:3146: /bin/arm-linux-gnueabihf-gcc -c -O2 -Wall -I/include -I/include/SDL -I/include/interface/vmcs_host/linux -I/include/interface/vcos/pthreads  conftest.c >&5
./configure: line 3148: /bin/arm-linux-gnueabihf-gcc: No such file or directory
...
configure:3166: error: cannot compute suffix of object files: cannot compile

główna różnica między "configure" z 3.1.0 a najnowszą wersją z repo, dzięki której jest taka:

---3.1.0---
if [ "$a8_target" = "rpi" ]; then
    CC="${RPI_SDK}/bin/arm-linux-gnueabihf-gcc"

---HEAD---
if [ "$a8_target" = "rpi" ]; then
    [ -z "$RPI_SDK" ] && RPI_SDK="/opt/vc"
    CC="arm-linux-gnueabihf-gcc"

... co by znaczyło, że 3.1.0 jest wręcz nastawiony na cross-compile z peceta (kompilator musi wtedy być podany w zmiennej RPI_SDK), a w najnowszej wersji, jeżeli RPI_SDK nie istnieje/jest puste, to główniejsze pliki związane z RPi bierze z standardowego dla raspbiana miejsca "/opt/vc/", a kompilator jest brany z tego co siedzi pod poleceniem "arm-linux-gnueabihf-gcc", niezależnie od platformy.


...wow, nie wiedziałem, że tyle wiem ._. (albo właśnie odkryłem wodolejstwo)

EDIT: A na tej stronie co Ci podałem jest taki link "Download GNU tarball" który Ci spakuje do pobrania najnowszą wersję kodu :P

31 Ostatnio edytowany przez seban (2015-06-08 20:56:23)

Hej!

Dzięki wielkie za pomoc... małymi krokami do przodu, czyli:

1) pobrałem archiwum (tarball)
2) odpaliłem autoconf (nie było pliku 'configure')
3) autoconf wygenerował sobie cośtam, po czym odpaliłem configure --target --host...
4) miłąchał, miąchał .... i mu nie wyszło...

...
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for _LARGEFILE_SOURCE value needed for large files... no
checking for library containing tgetent... no
configure: creating ./config.status
config.status: creating Makefile
config.status: error: cannot find input file: `config.h.in'

pewnie coś nie tak robię z autoconf-em?

EDIT: pomogło 'autoreconf -i', teraz zapuszczam make... zobaczymy :)

32 Ostatnio edytowany przez Sim_Piko (2015-06-08 20:55:31)

yyy... powinien być skrypt "src/autogen.sh" i tym tworzysz configure'a

EDIT: albo uruchom "autoheader" przed/po(?) "autoconf"

33

Wszystko się skompilowało, trochę faktycznie dziwne scieżki ma domyślnie wpisane (/opt/vc/) dla gcc, ale nie przeszkadza to w kompilacji. Skompilowało się na RaspPI2 i działa :) Dzięki WIELKIE za pomoc! :)

ps) RP2 ma niby 4 jajka, a kompiluje używając jednego :)

34

Panowie, wielkie dzięki za cenne wskazówki :)

Co do 4 rdzeni, to trzeba kompilatorowi powiedzieć, żeby używał więcej niż jednego.
Na szybko znalazłem w sieci:
make -j 4
(nie testowałem, ale powinno pomóc)

Mam pytanie, czy sprzętowe wspomaganie będzie działać sensownie dla rozdzielczości 1024x768 (taki mam display)?
W opisie configa znalazłem poniższe tryby:

hdmi_mode=16   1024x768   60 Hz
hdmi_mode=17   1024x768   70 Hz
hdmi_mode=18   1024x768   75 Hz
hdmi_mode=19   1024x768   85 Hz
hdmi_mode=20   1024x768  120 Hz

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3

35 Ostatnio edytowany przez Sim_Piko (2015-06-09 11:23:21)

seban napisał/a:

(...)trochę faktycznie dziwne scieżki ma domyślnie wpisane (/opt/vc/) dla gcc, (...)

najważniejsze, że naprawili, aby configure patrzył na to co system ma, a nie liczył na gotowego kros-kompilatora pod RPI_SDK

seban napisał/a:

ps) RP2 ma niby 4 jajka, a kompiluje używając jednego smile

następnym razem użyj "tajnej " opcji: "make -j4" gdzie 4 to liczba  rdzeni
Domyślnie gcc kompiluje tylko jednym rdzeniem (chyba taka wsteczna kompatybilność do jedno-rdzeniowców) :v
EDIT: ajj, montezuma mnie wyprzedził :V

seban napisał/a:

Dzięki WIELKIE za pomoc! smile

Nie polecam się :P i powodzenia w naprawianiu tego buga

EDIT: @montezuma, nie mam zielonego pojęcia, ale oby Ci się nie wykrzaczył SDL. Jak raz próbowałem odpalić emulca na monitorze z 1280x1024, to SDL dał ducha (warstwa GLES w kolorze czarnym + wyłączona klawiatura) i trzeba było zdalnie restartować. 1280x720 i 1680x1050 dzałały bez problemu. eSDeLek z linku w poście 19 o dziwo naprawił sprawę. To chyba mogło być przez audio HDMI, ostatnio miałem problem z Kodi... ale to już inna historia... :v

EDIT @down https://youtu.be/SrdBHYT4q7A?t=29m07s tekst numernabisa

36 Ostatnio edytowany przez seban (2015-06-08 21:56:57)

no człowiek uczy się całe życie... dzięki za oświecenie... 'make -j4' działa i zasówa jak trzeba :)

real    0m47.898s
user    2m23.970s
sys    0m4.950s

normalna kompilacja (one-core):

real    2m21.126s
user    1m54.630s
sys    0m3.830s

@Montezuma: a jak taki display podłączasz? Masz jakąś przejściówkę HDMI->VGA? W życiu nie podłączałęm pod RPI nic innego niż monitor FullHD przez HDMI lub po prostu TV do wyjścia TV w RPI1.

@Sim_Piko: A dlaczego się nie poleczasz? Pomogłeś i to bardzo :) dzięki za cierpliwość i wyrozumiałość :)

ps) do tej pory nie miałem pojęcia o opcji -j bo korzystałem z gotowców, tzn. serwer i środowisko do kompilacji (cross-compiler) przygotowane miałem przez ludzi którzy się na tym znają i nie wnikałem, jak widać to był poważny błąd. Dostawałem gotowego skonfigurowanego LTIB-a czy Yocto do pracy i nie musiałem martwić się o konfigurację tego wszystkiego. Dzięki wam nadrabiam zaległości :)

37

Display wygląda tak:
http://www.abbuc.de/phpBB3/download/file.php?id=1991
a dokładniej tak:
http://www.ebay.de/itm/HDMI-VGA-2AV-Aud … 2a2e1e3550
Jest podpięty przez HDMI.

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3

38 Ostatnio edytowany przez paptak (2015-06-09 12:43:30)

A może w takim razie ktoś zebrałby te wszystkie informacje i napisał tu taki szybki tutek krok po kroku. Co i skąd ściągnąć i jak prawidłowo skompilować najnowsze źródła atari800 na rpi2 bo jestem zielony jeśli chodzi o kompilowanie źródeł a też chciałbym mieć najnowszą działającą wersję tego emulatora.

Dodam tylko, że przeczytałem cały ten wątek od początku do końca ze 4 razy i nadal kompilacja mi nie wychodzi.

Ja bym lepiej spaliłem się. Wybierać nie Tobie.

39

hmmm...

1. z repozytoriów Raspbiana pobieramy i instalujemy kompilator i biblioteki wraz z plikami nagłówkowymi, powinno wystarczyć coś w stylu "sudo apt-get install build-essentials libsdl1.2-dev libsdl1.2debian libreadline-dev autoconf", ale nie jestem pewien, które konkretne biblioteki są potrzebne.
2. stąd http://atari800.cvs.sourceforge.net/vie … /?view=tar pobieramy najnowsze źródła atari800 i wypakowujemy je.
3. wchodzimy przez konsolę do folderu wypakowanych źródeł, a potem do podfolderu "src"
4. odpalamy tam "./autogen.sh", który dotworzy parę plików niezbędnych do kompilacji.
5. następnie uruchamiamy "./configure --target=rpi --host=arm-linux"
6. potem "make -j4" (kompiluje emulca do pliku wykonywalnego, wykorzystując wszystkie cztery rdzenie malinki2)
6a. (opcjonalnie) można zainstalować tak przygotowany emulator za pomocą "sudo make install"
7. odplalamy emulator komendą "./atari800" (bądź "atari800" jeżeli wykonaliśmy krok 6a)
7a. (opcjonalnie) jeżeli korzystaliśmy z wersji 3.0.0, możliwe jest, że po uruchomieniu paleta ustawi się na maxymalną jasność. Wtedy wychodzimy z emulca klawiszem F9 i usuwamy/zmieniamy nazwę pliku "/home/pi/.atari800.cfg". (spowodowane jest to dodaniem opcji przestrajania palety(jasność/kontrast) dla palet z pliku).
9. (głosem Pascala B.) et voila, prosta kompilacja gotowa, smacznego grania :P
ps. dla maniaków synchronizacji pionowej, http://atari800.cvs.sourceforge.net/vie … iew=markup info jak ją uzyskać na 720p oraz 1080p


jak gdzieś się pomyliłem/czegoś zapomniałem, to mnie poprawujciepoprawcie

40 Ostatnio edytowany przez Monsoft (2015-06-10 10:10:29)

seban napisał/a:

@Montezuma: a jak taki display podłączasz? Masz jakąś przejściówkę HDMI->VGA? W życiu nie podłączałęm pod RPI nic innego niż monitor FullHD przez HDMI lub po prostu TV do wyjścia TV w RPI1.

Chociazby cos takiego http://cpc.farnell.com/element14/piview … CMP=HP_RPi

Lub taniej http://www.ebay.co.uk/itm/1-5m-2m-3m-HD … 1e9f9c8990

41

Dzięki @Sim_Piko.

Nareszcie wszystko poszło tak jak trzeba.

Ja bym lepiej spaliłem się. Wybierać nie Tobie.

42 Ostatnio edytowany przez Montezuma (2015-06-10 08:19:09)

Sim_Piko napisał/a:

ps. dla maniaków synchronizacji pionowej, http://atari800.cvs.sourceforge.net/vie … iew=markup info jak ją uzyskać na 720p oraz 1080p

Dzięki za instrukcję :)
Czyli RPI z display-em o rozdzielczości 1024x768 (podłączonym przez HDMI), będzie najlepiej emulował ATARI w wersji NTSC?

hdmi_group=2
hdmi_mode=16   1024x768   60 Hz

A jakie problemy mogą sie pojawić jeśli display odświeżany jest częściej (60Hz) niż wyświetlany obraz (PAL 50Hz)?

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3

43

nie mam zielonego pojęcia, co złego mogło by się stać.
Ja jakoś gram na tym, co mi system zapodaje, bez żadnego grzebania w config.txt

Prędzej @seban wyjaśniłby (albo właściwie już wyjaśnił w postach 20 i 22) dlaczego VSync jest tak ważny.

44 Ostatnio edytowany przez Montezuma (2015-06-10 16:05:55)

Pytałem, bo RPI nie ma trybu 50Hz dla rozdzielczości 1024x768.
Używam więc hdmi_mode=16 (1024x768 60 Hz) i jak rozumiem, w tym trybie tylko emulacja ATARI NTSC będzie działać idealnie.

Zastanawiam się, czy to, o czym wspominał Seban: "mam mdłości gdy widzę przycinające się srcolle i inne uboczne efekty" występuje również jeśli display odświeżany jest z 60Hz dla emulacji ATARI PAL.
Jak można to obiektywnie stwierdzić? Ja nie dostaję bowiem żadnych mdłości :)

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3

45

gdy mam odświeżanie ustawione na 60Hz i emulator na PAL to w przypadku platformy Windows i emulatora Atari800Win-Plus czy Altirra to efekt jest równie straszny, szarpanie scroll-ami, tryby interlace zamiast wyglądać jakby miały więcej jasności/kolorów z lekkim migotaniem, wyglądają okropnie, drżąc i wyświetlając nierównomiernie dwie klatki obrazu składającego się na cały obrazek w interlace, wygląda to okropnie, w przypadku RaspPI / SDL gdzie nie było Vsync, wyglądało to równie okropnie.

Dziś sprawdzę Ci jak wygląda różnica gdy przestawię RPI2 na 60Hz i odpalę emulację w trybie PAL. Wydaje mi się że będzie ciekawie bowiem emu wydaje sie być zatrzymywany do czasu wystąpienia V-Sync (stwierdzam to po fakcie że nie działa Turbo Mode / F12) gdy go włączę nadal mam 100% wydajności emulatora, tylko dźwięk zostaje wyłączony, a render-pipeline i tak uwiązany jest do V-Synca.

46 Ostatnio edytowany przez Waldow (2015-06-10 21:47:27)

Montezuma napisał/a:

Pytałem, bo RPI nie ma trybu 50Hz dla rozdzielczości 1024x768.

Wpisy w config.txt dla 1024x768 50Hz

hdmi_mode=87
hdmi_cvt=1024 768 50 1 0 0 0

#hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
#width        width in pixels
#height       height in pixels
#framerate    framerate in Hz
#aspect       aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
#margins      0=margins disabled, 1=margins enabled
#interlace    0=progressive, 1=interlaced
#rb           0=normal, 1=reduced blanking
###

atari800 działa dość dobrze (v-sync, scrole, itp) także przy odświeżaniu monitora 75Hz.

Edit 2

seban napisał/a:

(stwierdzam to po fakcie że nie działa Turbo Mode / F12) gdy go włączę nadal mam 100% wydajności emulatora, tylko dźwięk zostaje wyłączony, a render-pipeline i tak uwiązany jest do V-Synca.

Powyższe dotyczy tylko wersji 3.0 atari800 w wersji 3.1 turbo działa.

Edit 3
U mnie nic takiego się nie dzieje, na rpi1 leci od 250 do 450%.

Edit 4
Na 50Hz turbo działa lecz ze zrywami 2-3 sekundy 250% potem powrót do 99% na parę sekund i znowu przyspiesza do 250% i tak w koło macieju.

Post's attachments

atari000-3.1_rp1_Demon_Attack.png 1.27 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

47 Ostatnio edytowany przez seban (2015-06-10 22:17:45)

Cześć,

Waldow napisał/a:

Powyższe dotyczy tylko wersji 3.0 atari800 w wersji 3.1 turbo działa.

Niestety nie ;/ Turbo działa mniej więcej przez 0,5sek (prędkość ~350%) po czym prędkość spada do 100%, tak jakby "turbo mode" zostało wyłączone, ponowne wciskanie F12 lub włączenie turbo mode w opcjach emulatora nic nie zmienia.

EDIT:

Przełączyłem na tryb 1080p @ 60Hz ... no i niestety przy PAL scroll-e szarpią widocznie, wszystkie efekty które normalnie wykonują się "in one frame" (żargonowo "wchodzą w ramkę") wyglądają paskudnie. Ale za "turbo mode" działa... od ~450% do ponad 800% w zależności od tego co się dzieje na ekranie.

Co ciekawe w trybie 1080p @ 60Hz, po przełączeniu emu na NTSC, Turbo Mode również działa...

http://seban.pigwa.net/aa/a800_trb.png

48

Waldow napisał/a:

Wpisy w config.txt dla 1024x768 50Hz

hdmi_mode=87
hdmi_cvt=1024 768 50 1 0 0 0

Przetestowałem, działa, ale nie mam dźwięku (nie wiem czy to RPI czy mój chiński "monitor").

Waldow napisał/a:

atari800 działa dość dobrze (v-sync, scrole, itp) także przy odświeżaniu monitora 75Hz.

hdmi_mode=18   1024x768   75 Hz

To jest chyba dobry kompromis. Mam dźwięk (przez HDMI) i wszystko działa :)

Czy Wam też emulator okropnie zwalnia po włączeniu emulacji drugiego POKEY-a?

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3

49

Montezuma napisał/a:

Przetestowałem, działa, ale nie mam dźwięku (nie wiem czy to RPI czy mój chiński "monitor").

dodaj wpisy

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
hdmi_drive=2

# enables the ignoring od EDID/display data if your display is a crappy
# Chinese one
hdmi_ignore_edid=0xa5000080

50

Tego wszystkiego już próbowałem.
Kiedyś odczytałem nawet ustawienia EDID z elektroniki od display-a.
Bez

hdmi_ignore_edid=0xa5000080

wogóle nie da się wiele zrobić, bo urządzenie ogłasza, że wspiera tylko 1080i (a jako fallback 640x480).
Elektronika jest "uniwersalna" i sprzedawana na ebay-u w zestawach z display-ami o różnych rozdzielczościach.
Do tej pory przy zabawach z emulatorami korzystałem z rozdzielczości 640x480.
RPI i atari8000 radził sobie z tą rozdzielczością bez GPU, a elektronika displaya skalowała to na 1024x768.
Teraz ustawiam RPI na natywną rozdzielczość display-a (1024x768, w trybie hdmi_mode=18, 75 Hz), a atari800 ze wspomaganiem GPU śmiga i jestem happy :)

ATARI 65XE + SIO2BT
http://atari.pl/hsc/ad.php?i=22.3