Portuvačky vecí pre ProlinOS terminály

softwareové záležitosti, systémové záležitosti a tak podobne, reversuvačky softwareovej úrovne a doví ešte čo
Post Reply
User avatar
Morc Offline
Posts: 69
Joined: Fri Jul 19, 2024 12:23 pm
Description: 19 | tatar z Biskupovej

Ak som sa volade omýleu tak na mňa kričte.
Contact:

Portuvačky vecí pre ProlinOS terminály

Post by Morc »

"nelegálne a nepodpísané" portuvačky pre PAX S920, dodatky k týmto Linuxovým terminálom a iné srandy, lebo ja zabúdam


Volačo špecificky k našim exemplárom
Keďže na našich termináloch ide už ProlinOS V2.4.144.7795R tak sa zdá, že číňani medzičasom poríšili a opravili póvodný root access exploit a to s potenciálnym vysvetlením, že iba zapali IPv6 a tým pádom ten póvodný xtables modprobe trik znefunkčnili. Možno keby aj bolo IPv6 vypaté tak by to nešlo aj tak, jakože čil to je jedno. Momentálne roota extra moc nepotrebujeme, keby ho treba tak asi nájdeme alternatívu ako k nemu dojsť.


Toolchainové srání a šteluvačky k hax-pax
Na kompiluvačky pod macOSom (keré nepotrebujú volačo s GLIBC) stačí jakýkoľvek arm-unknown-linux-gnueabi-aarch64-darwin.tar.gz alebo arm-unknown-linux-gnueabi-x86_64-darwin.tar.gz na Inteloch z toť tohoto GitHub repozitára.

Pod Linuxom je to s toolchainmi podobná situácia, stačí v podstate bárjaký toolchain čo targetuje armv6, lenže tam je zas a znova šanca naraziť na ten istý GLIBC problém jak pri tom macOSovom.

Z tohto dóvodu kóli okolnosťám jako je GLIBC 2.15 a iným možným dependom sa najlepším zaťál osvedčeu zrovna ten, s kerým boli kompiluvané póvodné veci pre PAX a tým je Sourcery CodeBench Lite 2012.03-57. Jedná sa o arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu kerý ide spokojne aj na najaktuálnejšom 64bitovom Debiane, samozrejme ak sú v ňom nainštaluvané bežné dependy pre púšťaní 32bitových binárek.
Dodatek - Adam: sourcery toolchain dodaný jak príloha k postu, link na dl z póvodnej stránky zjavne prestal ísť


Čo sa týka hax-pax vecí, quick-start má v sebe defaultne apt inštalačkuvačky. Toto keď sa obejde a nainštaluje sa šecko ostatné, python knižnice, M4Crypto a šecko naokolo tak sa dá pekne do PAXu aj tlačiť bez ohľadu na host systém.


GitHuboviny
Spoločné 370networkom vybastlené veci sú na GitHube s tagom paxdevs aby sa predišlo bordelu s repozitármi.

Čil momentálne tam je pax-s920 repozitár s užitočným bordelom jako napríklad pax-docs se zhrabanými PDFkami ohľadom PAXov, ProlinOS-u a ohľadom šeckého tohoto relevantného. Podobne je aj pax-build zložka v kerej sa nachádzajú dodatky a podobné užitočné sprostosti keré samozrejme majú svoj popis pekne hentam.

Samozrejme nachádzajú sa tam aj iné repozitáre, hlavne forky a porty knižníc a iných vecí. Kto je zvedavý a číta, zisťuje a chce, tak nájde.



Existujúce porty a inšoty, či naše alebo cudzé
Z existujúcich vecí mimo našu dielňu existuje už: Z našej dielne vyšlo zaťál:
Attachments
arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
(88.32 MiB) Downloaded 1 time
Image
User avatar
HiImMilan Offline
Posts: 10
Joined: Fri Jul 19, 2024 2:07 pm
Description: ja som niekto
Contact:

Re: Portuvačky vecí pre ProlinOS terminály

Post by HiImMilan »

Ja dodám, že včera sa nám podarilo už spustit SDL1.2 na zariadení. Fígeľ bol v tom, že SDLko zo základu kontroluje prítomnosť klávesnice a myši, a pokial sa nenajde (čo nenajde, lebo platobný terminál nemá klávesnicu), vyhodí chybu. Myška sa síce dala vypnuť, ale kód na kontrolu klávesnice musel byť nasilu vykomentovaný z SDLka.


dodatek - Morc:
poupravím Milana, kód na kompletnú kontrolu klávesnice (kerý ríšeu že koľko klávesov má, jaký typ a podobné sprostosti) síce zakomentovaný je, ale SDLko stále ďalej s keypadom na PAXe našťastí funguje jak má. Podrobnejší popis sem vyhodím neskór časom keď sa doríša ďalšé okolnosti.
User avatar
Morc Offline
Posts: 69
Joined: Fri Jul 19, 2024 12:23 pm
Description: 19 | tatar z Biskupovej

Ak som sa volade omýleu tak na mňa kričte.
Contact:

Problematické portuvaní SDLka s MilkyTrackerom

Post by Morc »

post dávam ako jeden ale zároveň je rozdelený na dve časti, SDL a MilkyTracker. Má to svoje opodstatnení keďže vývoj jedného portu závisel od druhého, bez jedného som nevedel došteluvať druhé a tak podobne.


SDL 1.2
Najprv sa naskytá otázka, prečo som išóv do SDL 1.2?
Odpoveď je jednoduchá. Chcel som najprv tú. Druhou vecou by sa dalo povedať že by bolo dóvodom to, že to je smíšne a treťou vecou to, že SDL 1.2 rovno podporuje fbcon na priame framebuffer vykresluvaní a dsp na priame tlačení do zvukovky. A zároveň je to staršá a pomerne používaná SDL 1.2, čo neni zlé mať v repertoári medzi existujúcimi portmi knižníc.

Ano, mohol som ríšiť SDL 2ku alebo rovno SDL 3ku, tak ale tam úplne čil momentálne nevím jak je poríšený fbdev, dsp a nechcelo sa mi momentálne s tým zapodívať keďže som túto dependenciu pre MilkyTracker stel mať relatívne friško z krku.

Ve výsledku je tento fork/port zdokumentovaný natoľko, aby som hlavne ja nezabudov že jak som ho vlastne vykompiluval. Opätovné kompiluvačky by polla správnosti už nemali byť treba, ve forku je dohodená narychlo a sprosto spravená keypad podpora, narychlo a sprosto spravená tp touchscreen podpora. Upozorňujem ale, že póvodná podpora pre klávesnice, napríklad po OTG, tam čil neni. Aj tak si nemyslím že by sa oplatilo do PAXu takto po OTGčku rvať periferie.

Takže ešte raz:
Pre už existujúce porty by malo stačiť natlačiť hotovú .so knižnicu na svoje dané místo pekne na /data/app/MAINAPP/lib/libSDL-1.2.so.0. Táto cesta by sa teoreticky nemala meniť, každopádne treba postupuvať polla portov.

Pre záležitosti ďalších nových portov, malo by stačiť normálne nahodiť include súbory a lib, plus dohodiť

Code: Select all

SDL_putenv("SDL_VIDEODRIVER=fbcon");
SDL_putenv("SDL_FBDEV=/dev/fb");
SDL_putenv("SDL_AUDIODRIVER=dsp");
SDL_putenv("SDL_PATH_DSP=/dev/snd/dsp");
aby portuvaná vec vedela že má preferuvať fbcon a dsp pre obraz a zvuk. Samozrejme portuvaná vec možno nebude spolupracuvať a bude treba pomeniť aj inakšé veci v porte, tak ale to je vec portuvanej veci. SDLko by malo byť v tomto ohľade dobre.

Ve výsledku ma celkom teší že poríšiť port SDL 1.2ky išóv celkom ruka v ruke a neboli veci čo by mi spósobuvali extra problémy. Aj keď ano, ze začátku boli veci typu "SDLko padá", tak ale to sa časom vyžehlilo a doladilo keď som pozisťuval že čo jako vlastne funguje a že čo má jak funguvať.


Repo: https://github.com/370network/SDL-1.2-pax/


MilkyTracker v0.90.86
Najprv sa naskytá zas tá istá otázka, prečo som išóv do MilkyTracker v0.90.86?
Odpoveď je zas a znova jednoduchá. Je to posledná verzia čo používa SDL 1.2. Ano, jak som hore spomenul, mohol som ísť do SDL 2ky, tak ale išóv som na veci mierne vypočítavo a spraveu som kombináciu takú, aby som mal friško šecko za sebou.

Samozrejme pri MilkyTrackeri to tak jednoduché úplne nebolo, ten totižto používal najprv autotools (autoconf, automake blá blá) kerý bol voláky rozpannutý a už moc ísť nestev. Našťastí toto som poríšeu s preportuvaním CMake buildsystému z novších verzií MilkyTrackeru a následnou úpravou aby chápal že treba používať crosscompile toolchain, aby chápal že tu vlastne SDL 2 neni, a teda kopa tých cést je tak nešťastne zahardcoduvaných. Našťastí to neni ništ čo by sa nedalo za volákych 5 minút poprehadzuvať tak, jak treba.

Verzia a buildsystém za nami. Čo ešte ostáva? Problémy. Buildsystém mi ešte pár problémov narobeu, nakonec som to ale voláko ukočíruval a ve výsledku sa ždy vykompiluje libppui.so, libmilkyplay.so a libmilkytracker.so.

Týmto sa dá prehlásiť že tento port je zaťál jediným na zemeguli čo je v0.90.86 s SDL 1.2, zároveň CMake, zároveň ukazuje do framebufferu a hrá do dsp a aby toho nebolo málo, je to asi jediný port čo je vykompiluvaný vlastne jak knižnica a né jak klasická executable binárka.

Ešte dodám že MilkyTracker samotný mi hádzal pár problémov pod nohy, ale to boli iba detaily ohľadom zvuku jako napríklad buffer srandy a potom počet kanálov, keré v našom prípade sú neni dva na stereo ale iba jeden na mono.

Celý ten výsledný port neni bezchybný, to zas né že ne. Ale povedzme že to je taký nezvyčajný jennorožec medzi vecami na zemeguli existujúcimi.


Repo: https://github.com/370network/MilkyTrackerPAX/


Dodatek, alebo čo si z toho zebrať na záver
Moja frustrácia z celého tohoto dvojprojektu nebola zrovna malá. Aj keď síce... keď sa na to celé kuknem čil spätne, keď vidím že koľko vecí som ve výsledku nakonec meneu v obidvoch repozitároch a keď sa kuknem na celé tí build procesy, tak ve výsledku to nebolo zas až také zlé jak sa to počas tých portuvačék zdalo.

Zdání klame a ešte raz som rád, že to vyšlo jak to vyšlo.
Image
User avatar
šňupať kýbel Offline
Site Admin
Posts: 36
Joined: Fri Jun 21, 2024 7:53 pm
Description: keď je to posrate icte sa sťažuvať na lampareň

Žuja je zakon!

SDL2 a Rust - jak sa zajác na PAXa dostal

Post by šňupať kýbel »

portuvacé omáčky k release postu


Nakolko mi nápad portuvať Bobbyho na PAXa vŕtal a vŕtal v gebuli som sa pustil do prieskumu jak by to najlepšie bolo spraviť. Hra je J2ME ale celú JVM s podporou J2ME som moc chuť portuvať nemal, tak som sa kukol na opensource prerábky klasického starého zajáca. Napriek tomu že póvodná mobilná hra je z 2004 tak sa z nevysvetlitelného dóvodu v nedávnej dobe roztrhlo vreco s remakami ešte k tomu v šelijakých "trenduvacích" moderných jazykoch. Už dlhší som vedel o tomto odinovom ale keďže sa jenná o jazyk o kerom nikdy nikdo nepočul a ešte to vyzeralo aj dosť vázané na windows, tak som sa poobzíral ďalej.

Našov som toto čínske repo, ktoré obsahuje port zajáca v Ruste, Zigu a v Haxe (zas voláky neznámy moderný jazyk). Rozhodol som sa zamerať na Rustovú verziu hlavne kóli lákavému SDL2 v mene a tomu že to bude asi najpodporuvanejší a najvyzretejší jazyk z ponúkaných možností.

SDL2 "DRIVERLESS"
SDL2 síce zní jak ulahčení roboty, no SDL2 neni SDL1.2 (ktoré už máme funkčné). Problém je hlavne v tom, že dvojka už nemá podporu pre priamy výstup do framebuffera (fbcon v 1.2ke) a na PAXovi je len framebuffer. Pri snahe nájsť ríšení tohoto problému som narazev na tento post. Autor mal podobný problém, a vyríšev ho celkom originálne a jennoducho ešte aj bez potreby zásahu do SDLka!
Fígel bol celkom jennoduchý, video driver z SDLka uplne vyradíme a sami budeme valiť pixely ze SDL surface rovno do framebuffera z nášho aplikačného kódu. Toť je ukážka kódu z og postu:

Code: Select all

def refresh():
    # We open the TFT screen's framebuffer as a binary file. Note that we will write bytes into it, hence the "wb" operator
    f = open("/dev/fb1","wb")
    # According to the TFT screen specs, it supports only 16bits pixels depth
    # Pygame surfaces use 24bits pixels depth by default, but the surface itself provides a very handy method to convert it.
    # once converted, we write the full byte buffer of the pygame surface into the TFT screen framebuffer like we would in a plain file:
    f.write(lcd.convert(16,0).get_buffer())
    # We can then close our access to the framebuffer
    f.close()
    time.sleep(0.1)
(pygame2 je vlastne binding SDL 2ky do pythona)

Ohurený touto ideou (kerá neni voláka revolučná ale mňa by to hneď nenapallo lebo já som sprostý) som sťáhol SDL 2ku zdroják a vykompiluval ho s túto konfiguráciu:

Code: Select all

CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' ./configure --disable-audio --disable-video --disable-joystick --disable-haptic --disable-hidapi --disable-sensor --disable-video-vulkan --disable-dbus --prefix=/home/parallels/sdlout/ --host=arm-none-linux-gnueabi
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make install
prakticky mi išlo o to vyvaliť šecky driver komponenty a využiť SDL len na skladaní obrazu, šecko ostatné vyríšiť pomimo, takto si to nevyžaduvalo zásah do kódu ani rozumení tomu jak to funguje. Knižnice mi to pekne vyprdlo do príčinku nastaveného do --prefix=

Prvotná próba s jennoduchým Cčkovým test kódom bola úspešná, pocit eufórie značný:

Code: Select all

#include "./SDL2/SDL.h"
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

__attribute__((constructor))
int app_start() {
    SDL_Surface *surface = SDL_CreateRGBSurface(0, 320, 240, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000);

    SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 0, 0, 0)); 

    SDL_Rect rect = { 50, 50, 100, 100 }; // x, y, width, height

    SDL_FillRect(surface, &rect, SDL_MapRGB(surface->format, 255, 0, 0));
    
    SDL_Surface *convertedsurface = SDL_ConvertSurface(surface, SDL_AllocFormat(SDL_PIXELFORMAT_RGB565),0);

    
    int fb = open("/dev/fb", O_RDWR);
    write(fb, convertedsurface->pixels, surface->pitch * surface->h);
    close(fb);

    SDL_FreeSurface(surface);
    SDL_Quit();

    return 0;
}
Prvý štvorec z SDL 2ky!
Prvý štvorec z SDL 2ky!
IMG_20241106_214749.jpg (169.95 KiB) Viewed 38 times
Treba ale ešte bolo aj SDL_image a SDL_gfx. Tam kompilácia prebehla bezproblémovo, tak jak pri okresanom hlavnom SDLku.
Z imagea som nehal len hlavné obrázkové formáty, bmp, gif, jpg, png, neh tam neni kadejaký webp a podobný bordel čo moc treba nebolo. Kompiluval som takto:

Code: Select all

CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' ./configure --disable-avif --disable-jpg-shared --disable-jxl --disable-png-shared --disable-svg --disable-tif --disable-xcf --disable-xpm --disable-xv --disable-webp --disable-qoi --disable-lbm --disable-pcx --disable-sdltest --with-sdl-prefix=/home/parallels/sdlout/ -prefix=/home/parallels/sdlout/ --host=arm-none-linux-gnueabi
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make install
Ze SDL_gfx bol minimálny problém že bolo treba do config.sub prihodiť aarch64 medzi rozpoznané procesor typy. SDL_gfx je staré, aarch64 nefičalo vtedy a mašina na kerej som crosscompiluval aarch64 je, configure skriptu to voláko prekážalo že to nepozná, vyríšlo sa to teda takto. Hentak volák jak v tomto príklade by to malo stačiť pridať:

Code: Select all

# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
	# Recognize the basic CPU types without company name.
	# Some are omitted here because they have special meanings below.
	1750a | 580 \
	| a29k \
	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
	| am33_2.0 \
	| arc | arm| aarch64 | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
        | be32 | be64 \
	| bfin \
a takto skompiluvať:

Code: Select all

CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' ./configure --with-sdl-prefix=/home/parallels/sdlout/ -prefix=/home/parallels/sdlout/ --disable-mmx --host=arm-none-linux-gnueabi --build=aarch64-linux-gnu
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make
CC='/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc' make install
(ano to --disable-mmx je také absurdné ale fakt to sťelo kompiluvať s mmx podporu na arm)

Na sťáhnutí ponúkam vykompiluvané knižnice s headermi. gfx a img aj zdílané ale samotné SDLko len statické, keďže s takúto podivnú implementáciu je lepšé systém radšej nešpiniť a nalinkuvať si ju staticky len do vlastnej aplikácie de víme, o čo sa jedná
sdl2driverless+image+gfx-pax.tar.xz
(2.04 MiB) Downloaded 3 times

Rust (na nepodporuvanom systéme :trol: )
SDLko máme poríšené (divne ale máme), no na kompletného zajáca treba aj Rust. Keď sa kukneme na podporuvané platformy v dokumentácii tak to moc ružovo nevyzerá. Čo Čil?
Ani kernel ani glibc, čo s tým..
Ani kernel ani glibc, čo s tým..
Screenshot 2024-11-11 at 01.57.10.png (138.48 KiB) Viewed 38 times
Nemáme na to ani správnu verziu jadra a ani glibc. Crosscompile v Ruste je celkom jednoduchý, stačí pridať podporu pre target

Code: Select all

rustup target add arm-unknown-linux-gnueabi
a pri kompilovaní špecifikovať cross gcc na linkuvaní. Lenže, ze starým klasickým dobrým sourcery 2012 toolchainom to funguvať nechcelo a s novým z debian repa to síce skompiluvalo, no samozrejme pri spustení na PAXe vyhodilo klasickú chybu, kerú vyhadzuje keď je použité moc nové glibc. Samozrejme sťeli sme dynamickú knižnicu takže v cargo.toml je treba špecifikuvať takto

Code: Select all

[lib]
crate-type = ["cdylib"]
To nám ale pomóže trt, keďže to nejde.
Ríšením sa ukázalo použiť místo gnueabi arm-unknown-linux-musleabi a musl staticky nalinkuvať. Tým pádom obijdeme potrebu nového glibc. No prúser 2, rust nesťel vyrobiť cdylib knižnicu pri použití musleabi. Ríšení sa ukázalo byť celkom zaujímavým spósobom. V ruste vykompilujeme jak statickú knižnicu a nalinkujeme si to do dynamickej knižnice ručne pomocou gcc.
Cargo.toml treba zmeniť takto:

Code: Select all

[lib]
crate-type = ["staticlib"]
Vykompilujeme potom pomocou:

Code: Select all

cargo build --release --target=arm-unknown-linux-musleabi
a Rust nám vypluje .a statickú knižnicu, linker v tomto prípade ani špecifikuvať neni treba, ten použijeme teraz čil ručne. Místo klasického toolchainu s glibc nám bude treba muslový, ten som zebral odťálto arm-linux-musleabi-cross.tgz
zalinkujeme to do .so knižnice takto:

Code: Select all

/home/parallels/arm-linux-musleabi-cross/bin/arm-linux-musleabi-gcc -shared -fPIC -o sharedlib.so -Wl,--whole-archive libfromrust.a -Wl,--no-whole-archive  -nostartfiles -static
musl sa zalinkuje staticky a takáto knižnica už na PAXe pójde

Poďme s tým na zajáca
cargo.toml som upravil aby místo normálnej binárky urobil knižnicu, tú potom načítavame pre zjednodušení ešte z loader medziknižnice kóli špecifikáciám spúšťaňá vecí v PAXe. Zdroják zajáca som upravil tak aby rval sdl surface do framebuffera a čítal klávesy místo cez SDLko rovno z /dev/keypad evdevu. Renderuvaní obrazu bolo treba otočiť o devadesát stupňov aby to bolo správne na výšku. Nesťem moc ten rust kód popisuvať, nakolko je dosť chujovo spravený a nerozumím sa do toho, bolo to skór len pokus omyl. Každý si ho móže prečítať ve zdrojáku. Na záver zajáca vykompilujeme takto:

Code: Select all

RUSTFLAGS='-L /home/parallels/sdlout/lib' cargo build --release --target=arm-unknown-linux-musleabi
/home/parallels/arm-linux-musleabi-cross/bin/arm-linux-musleabi-gcc -shared -fPIC -o rustbobbytest.so -Wl,--whole-archive '/home/parallels/bobby-carrot/rust-sdl2/target/arm-unknown-linux-musleabi/release/libbobby_carrot.a' '/home/parallels/sdlout/lib/libSDL2_gfx.a' '/home/parallels/sdlout/lib/libSDL2_image.a'   -Wl,--no-whole-archive  -nostartfiles -static
podotknúť toť sťem ešte to, že RUSTFLAGS='-L tam mosí byť kóli tomu, že SDLko rust zapakuje do tej statickej knižnice čo vyprdne už sám (features = ["static-link"] v cargo.toml)
ostatné knižnice ale ten debil nezapakuje, preto su zas špecifikuvané ve finálnom linkuvacom príkaze, keďže som sťel šecky sdlkoviny mať staticky

pre kompletnosť ešte príkaz na skompiluvaní loader medziknižnice:

Code: Select all

/home/parallels/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu/arm-2012.03/bin/arm-none-linux-gnueabi-gcc -shared -fPIC -o rustload.so rustload.c -nostartfiles -ldl
Zdrojáky toť:
hrdzavy-zajac-pax-src.tar.xz
(100.53 KiB) Downloaded 2 times
Na záver ešte voláke obrázky jak to prebíhalo:
Prýv štvorec vyplutý cez SDLko z Rustu, hurá hurá
Prýv štvorec vyplutý cez SDLko z Rustu, hurá hurá
sdlrust.jpg (87.77 KiB) Viewed 38 times
Už tam máme zajáca
Už tam máme zajáca
prvyrender.jpg (53.4 KiB) Viewed 38 times
Konečne aj správne otočeného
Konečne aj správne otočeného
renderspravne.jpg (144.98 KiB) Viewed 38 times
Image
Image
Image
Post Reply