Welcome, Guest. Please login or register.


Author Topic: Web emu (Read 156614 times)

Offline DrPrery

  • EP user
  • *
  • Posts: 264
  • Country: hu
Re: Web emu
« Reply #480 on: 2014.September.03. 09:51:19 »
Most tűnt csak fel (na ja, kissé lassú vagyok), hogy ez a Javascript nem nagyon tűnik valami multicore-t kihasználó dolognak. Nem lehetne az emu-ban valamit párhuzamosítani, pl. a parallel.js-sel vagy effélével? :smt017

Ebben a benchmark-ban illusztrálják, hogy mit lehet elérni:

http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html

Meg egy másik:

http://extremelysatisfactorytotalitarianism.com/projects/experiments/2010/03/boxdemo/index.html

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #481 on: 2014.September.03. 14:13:28 »
Quote from: DrPrery
Most tűnt csak fel (na ja, kissé lassú vagyok), hogy ez a Javascript nem nagyon tűnik valami multicore-t kihasználó dolognak. Nem lehetne az emu-ban valamit párhuzamosítani, pl. a parallel.js-sel vagy effélével? :smt017

Ebben a benchmark-ban illusztrálják, hogy mit lehet elérni:

http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html

Meg egy másik:

http://extremelysatisfactorytotalitarianism.com/projects/experiments/2010/03/boxdemo/index.html
Igen, a JavaScript alapvetoen egy szalu dolog, ezen nehez valtoztatni. Van a WebWorker nevu JS krealmany, ami elso ranezesre annak tunhet az embernek amire vagyik: thread-eket lehet inditgatni, aztan lehet orulni. A problema ezzel csupan az, hogy nem olyan thread ez, pl a valtozok nem osztottak stb, es a worker-ok kozotti kommunikacio igen primitiv es lassu folyamat. Alapvetoen inkabb arra jo, hogy van egy hosszu szamitasi folyamat JS-ben, az kirakod egy worker-be, igy nem akasztja meg az oldalon levo tobbi JS futasat, amig az a hatterben elszoszmotol. Aztan a vegen "jelentkezik" az eredmennyel. Intenziv adatcsere worker-worker kozott nehezkes es lassu, semmikeppen nem alkalmas egy gep emulalasara aztan plane.

Node, vonatkoztassunk el a webtol es a javascript-tol, tegyuk fel, hogy C-ben ir az ember egy emulatort. Vagy akar assembly-ben. Itt persze a thread-ek hasznalata joval hatasossabb lehet, gondolna az ember. Azonban meg itt sem egyszeru a dolog. Eloszor is, ha olyan gepen futtatod, ahol csak egyetlen core van, eleve joval lassabb lesz, tehat ket emu verzio kene, single core-os, es multicore-os. A masik problema az OS: a modern multiask OS-ek eleg komplex dontest hoznak, hogy adott CPU core-on eppen mi fut (az utemezo, azaz a CPU scheduler csinalja). Ez raadasul valtozik is, lehet adott idopontban pont idoszeletenkent egymas utan egy core-on fut a ket thread-ed, maskor meg ket kulon core-on parhuzamosan, hiszen egy modern OS eseten altalaban tobb tucat process var arra, hogy kapjon CPU idot minden idopillanatban. Ez egy gep emulacioja eseten komoly problema. Miert? Nezzuk az EP emulaciot! Nagyjabol pl ami sok idot visz el az a Z80 emulacio, es a nick kepfelepites. Tegyuk egy-egy thread-be. Ekkor az igazi gepet utanozando eleg precizen idoziteni kell, hogy ezek megfelelo szinkronban legyenek. Azaz a ket thread jelentos idejet az vinne el, hogy egymasra varnak. Tippem szerint gyorsabb meg mindig ha inkabb megcsinalod single thread-esre, es meg pontosabb is. Ha most visszaterunk az js/web temahoz, ott a szitu meg rosszabb: ha meg lenne is vmi szuper web worker verzio, amivle nem problema az adatmegosztas, ott az OS-en kivul a browser is elfedi meg jobban a host hw jelleget, tehat meg nagyobb problemakba fogsz utkozni.

Nyilvan egy kis demonal, ahol effekteket mutatnak be ez meg elmegy, de pont fentebb vazoltam, hogy egy gep emulalasnal nem art kb Z80/nick/stb orajel pontossagra szinkronban lenni (amugy ez az JSEP-ben sem teljesul teljesen: az un "nick slot clock" es a Z80 clock aranyat probalja tartani, ami par slot bizonyotalansagot okoz "lebegve" a ket allapot kozott, hogy a Z80 kesik a nick-hez kepest vagy siet, ennel pontosabban megcsinalni joval lassabb lenne).

Offline DrPrery

  • EP user
  • *
  • Posts: 264
  • Country: hu
Re: Web emu
« Reply #482 on: 2014.September.03. 14:58:28 »
A válasz kimerítő, a tanulság hervasztó... :)

Márpedig ha a JS ennyire hadilábon áll a multithreading dologgal, akkor nem tudom mire a nagy felhajtás egy olyan világban, ahol a proccokban már több a mag mint egy dinnyében (a közönség diszkrét unottsággal röhög... "régi poén...")
Csinálnának már itt Unreal engine-eket is JS-re, de így hogy fognak Crysis X-eket futtatni böngészőben...? :twisted:
Na, ez most már egyre zavarosabb...

(Megyek a képemet plasztikáztatni, mert a JS és JSEP területén már annyiszor esek arcra, hogy már halaszthatatlan... :mrgreen: )

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #483 on: 2014.September.03. 15:13:44 »
Quote from: DrPrery
A válasz kimerítő, a tanulság hervasztó... :)

Márpedig ha a JS ennyire hadilábon áll a multithreading dologgal, akkor nem tudom mire a nagy felhajtás egy olyan világban, ahol a proccokban már több a mag mint egy dinnyében (a közönség diszkrét unottsággal röhög... "régi poén...")
Csinálnának már itt Unreal engine-eket is JS-re, de így hogy fognak Crysis X-eket futtatni böngészőben...? :twisted:
Na, ez most már egyre zavarosabb...

(Megyek a képemet plasztikáztatni, mert a JS és JSEP területén már annyiszor esek arcra, hogy már halaszthatatlan... :mrgreen: )

Azert nem mondom, hogy nagy koponya vagyok advanced JS/web dolgokban mint pl a web worker, nagyjabol ezeket tudom rola, igazabol nem talalkoztam vele meg "eloben" :) Ez azonban ugye az az "agazat" ami nagyon durvan fejlodik mostanaban (marmint webes dolgok), szoval ki tudja, akar csak egy ev, es tok mas lesz a leanyzo fekvese. Amugy barmilyen vicces, egy modern 3D jatekot WebGL-el stb nemi szempontbol egyszerubb csinalni, mint egy gepet emulalni, ui ott a "belso" mukodese mindegy, az a lenyeg mi jelenik meg. Egy gep emulalasa eseten viszont nem eleg emulalni azt, hogy mit latsz/hallasz, hanem az emulalt gep belso mukodeset is nyilvan minnel pontosabban prezentalni kell, hogy fussanak rajta az eredeti sw-ek azert :) Ez kb az a pelda, hogy kedvenc EP jatekodat atirod web-re, ahol az a cel, hogy tok ugyanugy nezzen ki es viselkedjen. Nyilvan, "belulrol" a kod szempontjabol lehet, tok maskepp fog kinezni (eleve ugye az eredeti jatek Z80-on fut stb, a "clone" meg JS akkor), de elvileg pixelre/stb pontosan meg lehetne csinalni ugyanolyanra. Egy gep emulalasa viszont ugye nem ez az irany, hanem, hogy az eredeti sw-k menjenek az emulalt gepen (azaz az erdeti jatek peldankban), ami teljesen mas teszta.

A 3D engine stb temahoz (bar nem igazan ertek hozza): imho manapsag azt mar a GPU csinalja (ha webes dologrol van szo, elvileg erre valo a WebGL), szoval nem nagy ervagas, hogy most nincs szuper tiz szalas JS futtatas. Bar lehet, igy is lehet pl audio-t web worker-be rakni, nem tudom az mukodne-e pl. Elkepzelheto (EP emu eseten _nem_ mert ugye egy jateknal egyszeru hogy legyen X-Y-Z hang, de egy EP emuban a Z80 emulacio stb-re opcode-onkent valtozhat barmi, ott ez nem mukodik egyszeruen).
« Last Edit: 2014.September.03. 23:11:43 by lgb »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #484 on: 2014.September.11. 13:18:04 »
Na, lassan lehetne gamepad tamogatas is :D

https://hacks.mozilla.org/2013/12/the-gamepad-api/

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #485 on: 2014.September.29. 13:13:59 »
... mivel jelentkezo nem volt (aki kirpobalna az altalam kuldott url-en a teszt oldalt - vmi masik topic-ban irtam), kertem kolcson egy xbox controllert. Nalam mar megy vele az JSep, belso joy gyanant mux, plusz a boxsoft eger mozgast is update-eli ezzel parhuzamosan, szoval mar joy-al is lehet egereszni, akkor is, ha a program pl csak egerre keszult. Kovetkezo project: a control port 2-on levo joy-ra is replikalni a mozgast a gamepad-rol. Saja 1-es portot foglalja a boxsoft mouse, oda nem lehet. A fejlesztes meg nincs publikalva, mert vannak anomaliak ...

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #486 on: 2014.September.29. 21:47:20 »
http://ep.lgb.hu/jsep/demo.new/ szokasos. Gamepad emulacio. A megoldas egyszeru, gamepad csatlakoztat (en xbox controllerrel teszteltem linux alatt firefox-szal, chrome nem tudom megy-e), vagy lehet mar csatlakoztatva is. A lenyeg, hogy vmit csinalni kell vele, ekkor megjelenik egy figyelmeztetes, hogy erzekelte a gamepad-ot. Innentol akar a kurzort is mozgatni lehet vele. Illetve, a mozgast masolja az eger emulacio fele is (ehhez nem is kell mouse grab/lock), tehat pl paintbox-ban lehet probalkozni gamepad-dal is, bar eleg gaz kockas lesz :D Az "elso" button pedig a space-el egyenerteku. A problema eloszor is az, hogy nem tudom megmondani, az xbox controller 8 analog cucca kozul ami nalam az elso, az mi a controlleren, foleg ha mas controller az :) Ugyanigy a gomboknal.

http://lgb.hu/temp/gamepad.html Ezt meg lehet nezni segitsegkent. Ha megrangatunk par dolgot, meg kell jelennie infonak, ki lehet probalni minek hatasara mi valtozik. Az emulator a button 0-at hasznalja space-nek, es az "axes" 0/1-et a mozgatasra X/Y alapon.

Nemi problema: amig a gamepad emulacio aktiv, kicsit elrontja az egerklikkelest :-( Ennek oka az, hogy a gamepad emulacio alapjan frissiti mindig, igy torli a mouse button press-t mert gamepad-on nincs nyomva. Ezt majd nemi allapot figyelessel fixalom.

Amugy feelingnek nem rossz, mar a "start" program is iranyithato igy eleve gamepad-del ...

Jatszani nem szoktam, ezert nincs sok ilyesmi periferiam (ezt az xbox controllert is kolcsonkertem egy munkatarsamtol a project miatt). Pl nem tudom h vmi usb-s joy is megy-e vele, megteveszto lehet a "gamepad" fogalom ...
« Last Edit: 2014.September.29. 22:06:58 by lgb »

Offline DrPrery

  • EP user
  • *
  • Posts: 264
  • Country: hu
Re: Web emu
« Reply #487 on: 2014.September.29. 22:03:06 »
Logitech Dual Action...

Csak a jobboldali analógra mozog a kurzor, de kissé furán...
A LE-re jobbra, a FEL-re balra, a BAL-ra fel, a JOBB-ra meg lefelé megy... totally confused... :ds_icon_cheesygrin:

Mellesleg ez Firefox-on. Chrome27-en meg "status: running", képernyő fekete meg egy becsordogáló mini-ablak érdeklődik, hogy az ep.lgb.hu ki akarja lőni a mouse pointert és ehhez áldásomat adom-e...? Adom én, de akkor se történik semmi... :smt017
« Last Edit: 2014.September.29. 22:08:46 by DrPrery »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #488 on: 2014.September.29. 22:09:41 »
Quote from: DrPrery
Logitech Dual Action...

Csak a jobboldali analógra mozog a kurzor, de kissé furán...
A LE-re jobbra, a FEL-re balra, a BAL-ra fel, a JOBB-ra meg lefelé megy... totally confused... :ds_icon_cheesygrin:

Na igen, ezek szerint maskepp van az erzekelok kiosztasa mint az xbox controlleren :( Fogalmam sincs, ezt hogy lehetne megoldani, az JS gamepad API-ban nincs tul sok segitseg ehhez :( Esetleg amit irtam tesztoldal megnezheted, nincs-e vmi extra info a "mapping =" felirat utan. Na majd rakeresek, az "okosok" hogy oldjak meg az "ok, van egy rakas adatom, de honnan tudjam mi mihez csatlakozik a controlleren" problemat ................. xbox controllerrel, pont jo, minden a megfelelo iranyba mozog :D

Offline DrPrery

  • EP user
  • *
  • Posts: 264
  • Country: hu
Re: Web emu
« Reply #489 on: 2014.September.29. 22:14:05 »
"mapping =" , másszóval semmi...
Azon tűnődöm, hogy a win7 jól konfigurálja be, vagy kellene valami külön tool-szerűség, amivel esetleg át lehetne definiálni az irányokat?

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #490 on: 2014.September.29. 22:21:19 »
Quote from: DrPrery
"mapping =" , másszóval semmi...
Azon tűnődöm, hogy a win7 jól konfigurálja be, vagy kellene valami külön tool-szerűség, amivel esetleg át lehetne definiálni az irányokat?

Elolvastam par oldalt, a standard draft azt ajanlja, hogy a browser mappelje at, ha felismeri a controllert, akkor a mapping = erteke vmit mutat. Hat itt nem (amugy nalam se), ebben az esetben a nyers hw szintu kiosztast mutatja, de ugye az mindig mas :( Gondolom amugy egy OS/program/akarmi onnan tudja, hogy megvan a controller tipusa, ebbol van adatbazisa egy csomorol (vagy driver kell?) es megcsinalja, csak a browser nem (lehet, meg tul uj ez a "gamepad API"). Legrosszabb esetben kene lehetoseg, hogy JSep-ben beallitani mi mihez tartzik (aztan azt pl cookie-ban is tarolhatja, kov alkalommal mar abbol tudja). Akkor sem szep ez igy :(

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Web emu
« Reply #492 on: 2014.September.30. 18:19:45 »
visszavonom: működik, de csak Firefox alatt... :-)
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #493 on: 2014.September.30. 19:30:43 »
Quote from: Povi
visszavonom: működik, de csak Firefox alatt... :-)

Igen, chrome kisse maskepp viselkedik gamepad ugyben (eleg meglepo modon!), az akasztotta meg. Most talan mar jo. Egyreszt, az en hibam, tesztelnem kene firefox/chrome-on is :) Amugy en chrome parti voltam erosen, mostanaban firefox viszont, joval gyorsabb pl az JS :) Meg dinamikusabb is nehol a fejlodes, ami regen forditva volt! Masreszt: chrome-on is van JS console (ctrl shift j), szoval ha valami fura van, kerlek nezd meg, ir-e oda hibat, itt is segit :) Koszonom szepen, es nem kioktatas akart am lenni (bar benne vagyok, ma 2-szer 3 oraban tartottam eloadast dns, http es mail ugyben eppen, yeah).

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Web emu
« Reply #494 on: 2014.September.30. 22:54:34 »
Semmi gond, csak tegnap még működött, ma meg már nem, és elsőre nem is értettem, miért, aztán leesett, hogy biztos megint JS un-kompatibilitási probléma, de lusta voltam nézegetni, inkább egyből kipróbáltam FF-on. Viszont emiatt egyre inkább a FF tetszik... :-)
*** Speicherplatz zu klein