játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | [1] [2] [3] [4] > 5 <
Geri - Törzstag | 2186 hsz       Online status #201916   2014.03.10 04:27 GMT+1 óra  
Geri - Törzstag | 2186 hsz       Online status #201895   2014.03.09 15:51 GMT+1 óra  
Idézet
Calmarius :
akkor az minimum egy goto-zós state machine, űberronda kóddal. Felejtsd el a szép rendezett kódot, mert ha sok branch mispredictiont csinálsz, akkor máris 20-szor lassabb vagy. (Remélem nem egy ciklusban futó switch-et álmodtál meg).



bocsi, de ez a része, mint már említettem, titkos.

   
Calmarius - Tag | 8 hsz       Online status #201893   2014.03.09 14:46 GMT+1 óra  
Idézet
Geri :
igen, elkezdtem írni egy ilyet, és ide fogom blogolni.

kezdjük máris a háborgást:

x86-on a floppy típusát a bios időmérőjéből kell kiolvasni



Nem ismerlek, nem tudom, hogy mennyire vagy otthon a témában, de ez nem egy hétvégés project.

Ha gyors emulátort akarsz (ami gyorsabb mint az általad lassúnak bélyegzett QEMU), akkor az minimum egy goto-zós state machine, űberronda kóddal. Felejtsd el a szép rendezett kódot, mert ha sok branch mispredictiont csinálsz, akkor máris 20-szor lassabb vagy. (Remélem nem egy ciklusban futó switch-et álmodtál meg).
   
Geri - Törzstag | 2186 hsz       Online status #201889   2014.03.09 04:16 GMT+1 óra  
a probléma az, hogy x86on kívül nem nagyon tud semmi sem 80 bites lebegőpontos számokat, tehát mindenképp máshogy kell implementálni. az most, hogy belül mi történik, az mindegy is, a többi emulátorban a problémát egyszerűen teljesen szoftveresen (software floating point!) szokták lezongorázni, amitől tud az emulátoruk izomból kb 2 megaflopsot, ami hát kissé csekélyke

a baj ott kezdődik, amikor egyes szoftverek nekiállnak, és mondjuk elkezdik az időt long doubleként reprezentálni (például többek között az én saját szoftvereim régebbi verziói is ilyenek).

mondjuk ezt lehetne szűrni a precizitás alapján, merthogy az fpu tud olyat is, hogy precizitás, amit állítani lehet, csak a precizitáskontroll implementációja részemről egyelőre egy ; karakterben kimerül.

de most az fpuról ennyit, minimálimplementáció, ami a linux kernel bebootolásához kell, az megvan, a többi perpill nem érdekel, jön a cpu ,,monolit'' megalkotása, a projekt utolsó mérföldköve a pszeudókód -> c99 átalakítás előtt. a jövő hét végére már c kódot akarok magam előtt látni, nem akarok túl sok időt beleölni a projekt első szakaszába.

amit a floating pointtal kezdeni fogok:

-azokra az architektúrákra lefordítva, amelyek tudnak 64 bites floating pointot - például mips - ott az fpuban 64 bites floating pointot fogok használni, később pedig ha a precizitáskontrollt megírom, szoftveresen implementálom nagyon nagyon optimálisan a 80 bites precizitást.

-armokon az fpu annyira lassú, hogy nem is tudom hogy lenne -e értelme egyáltalán vfp3mat használni, hanem 64 vagy 128 bites fixpontot kéne használnom precizitástól függően.

-mindenesetre az első build egyszerű 64 bites doublet fog használni, ami fut, fut, ami nem, nem, megy, ahogy megy, és kész.

valószínűleg végső soron 4 féle képpen kell implementálnom az FPU-t:

-csak simán double, lásd: most

-float / double/long double-vel, ha x86on szeretné futtatni valaki (ami addig, amíg nincs 64 bit, úgy sem fog bekövetkezni, mert nem nagyon fogja senki sem x86on használni az emulátort, hisz oda hatékonyabb lenne egy virtuális gép)

-float / double / 128 bit integerrel azokon az architektúrákon, ahol max 64 bites fpu van (mips, akármi)

-long long / 128 bites integer azokon az architektúrákon, ahol nincs fpu (arm)


és akkor még az SSE/SSE2-ről nem is szóltunk, mivel az egy full külön történet, és persze ott van még az MMX is, amit még életemben nem láttam, de azt már látom, hogy ocsmány egy jószág

Ezt a hozzászólást Geri módosította (2014.03.09 04:25 GMT+1 óra, ---)

   
Akybron - Törzstag | 456 hsz       Online status #201887   2014.03.08 22:35 GMT+1 óra  
Ha úgy csinálod meg, hogy 80 bites hozzáférés működik, akkor nem (attól eltekintve, hogy a pontosság nem lesz 80 bites).
A sokak által lenézett Delphi támogatja a 80 bites típusokkal való számításokat, ne csináljon egy ilyen progi hülyeségeket.
   
Geri - Törzstag | 2186 hsz       Online status #201886   2014.03.08 20:19 GMT+1 óra  
egyelőre az FPU 64 biten fog működni a specifikált 80 bit helyett. bízom benne, hogy ez nem fog gondot okozni.

   
Marcsello - Tag | 228 hsz       Online status #201885   2014.03.08 20:00 GMT+1 óra  
pff... az meg minek, hisz minden magától értetődő
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201881   2014.03.08 15:15 GMT+1 óra  
...nincs dokumentálva rendesen, de ezt megszokhattuk.

   
Geri - Törzstag | 2186 hsz       Online status #201866   2014.03.07 20:12 GMT+1 óra  
ide kész, most az fpu következik majd.

   
Geri - Törzstag | 2186 hsz       Online status #201811   2014.03.05 22:26 GMT+1 óra  
hát szóval x86on el lehet érni a portokat 8, 16, 32 és 64 biten. 16 biten egyszerre elérsz 2 db egymás mellett lévő 8 bites portot, 32 biten 4-et, 64 biten 8at, csakhogy ugyanazon portok mindig máshogy viselkednek, ergó, lehet, hogy a két-4-8 db port, ami egymás mellett van, ugyanarra mutat mindig, lehet, hogy az alsó byte egy adott dologra mutat, a következő meg már más dolgot állít ugyanazon az eszközön, az is lehet, hogy csak az egyik működik, a többi nem, és az is lehet, hogy az adott porton kiadva/beolvasva az adatot mégsem egymás melletti portokat címzel, hanem kizárólag pontosan azt, és csak is azt a portot. persze nincs általános konvenció, ezt még az adott eszközön belül is változik, pl ami eszköznek 10 portja van, az összes port működése tetszőleges szélességekkel, tetszőleges biten eltér az eszköz összes többi portjának az adott működésétől

csodálatos dolog ez az ájbíem ikszté

   
Geri - Törzstag | 2186 hsz       Online status #201804   2014.03.04 23:50 GMT+1 óra  
100as bogomips.

   
Marcsello - Tag | 228 hsz       Online status #201803   2014.03.04 23:47 GMT+1 óra  
ezt így miből ?
--
Mondjuk így már értem, hogy miért megy viszonylag "gyorsan" a 98, egyedül a képfrissítése borzasztó, de azt az SDL-nek tudom be
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201802   2014.03.04 23:38 GMT+1 óra  
50 mhz

   
Marcsello - Tag | 228 hsz       Online status #201801   2014.03.04 23:31 GMT+1 óra  
Egy kommentel előtted jártam csak sokáig tartott rájönnöm, hogy ahelyett, hogy bepötyögöm, le is screenshot-olhatom

Nyah, DSL négy pingvinnel:





Érdekes, hogy a bongomips az egyre szarabb, mondjuk szerintem ez a négy mag miatt van, fogalmam sincs miért ennyire nyomtam, eleinte, 2-őt akartam, nem tudom hogy lett belőle 4...
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201800   2014.03.04 23:15 GMT+1 óra  
ha egy linuxot elindítassz, és beírod, hogy cat /proc/cpuinfo , és idemásolod
akkor megmondom, mit tud

   
Marcsello - Tag | 228 hsz       Online status #201799   2014.03.04 23:13 GMT+1 óra  
Most leteszteltem gyorsan, a Win98 bebootol 2 perc alatt, és csak 5 hibát dob fel, de rendes használatra nem alkalmas, viszont amire kíváncsi voltam, azt nem tudtam meg, se a jelentéskezelő sem semmi más nem tudja megállapítani a processzor sebességét Mhz-ben, úgyhogy majd benchmark-al fogom letesztelni a sebességét és azt viszonyítom a másik rendes pure 98-at futtató 233mhz csodával, de előtte majd még teszek egy próbát DSL-el hátha az kiírja...
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201798   2014.03.04 23:08 GMT+1 óra  
természetesen, ha másra nem lesz igény, akkor alapvetően csak armos binárisok lesznek elérhetőek. egy az fpu nélküli armokra, meg egy az fpu-s változatra. ezek linuxos binárisok lesznek, és X11 kell majd nekik. elvileg androidon is használni lehet őket, majd csinálok nekik virtuális billentyűzetet szerintem.

   
Marcsello - Tag | 228 hsz       Online status #201797   2014.03.04 22:59 GMT+1 óra  
És várható lesz arm-re is ?
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201796   2014.03.04 22:57 GMT+1 óra  
marcsello_ pontosan, a jelenlegi emulátorok kb 1-2 mhz-t tudnak, a windows 98nak meg alapvetően 66 mhz kéne, én elvileg találtam módot, hogy ezt lehetővé tegyem, viszot azt nem tudom, hogy be fogom -e tudni bootolni a windowst a nagyon összetett IO igénye miatt.

   
ddbwo - Tag | 1625 hsz       Online status #201795   2014.03.04 22:53 GMT+1 óra  
Geri

Túl rövid lett és nem összeszedett.

A sebességet nem a sorok száma dönti el programozásban. A gyors gyakran a legegyszerűbb.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Marcsello - Tag | 228 hsz       Online status #201794   2014.03.04 22:49 GMT+1 óra  
Akkor azért tart nekem 30 percbe, míg bebootol a windows 98, igaz ez csak egy mezei 2x1.6-os arm, tehát többet nem is várok tőle, csak qemu-n kívül, másról nem tudok, hogy futna rendesen arm-en
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201793   2014.03.04 22:46 GMT+1 óra  
röviden és tömören: van 16, 32, 64, 32 bites kompatibilitási, védett, valós, virtuális 8086 mód, lapozással, lapozás nélkül, valós módú és user módú lapozással, szegmensregiszterekkel, tlb-vel, laphibával, kontrolregiszterekkel, flagekkel, pae-vel, továbbfejlesztett pae-vel <- na az itt leírtak tetszőleges kombinációja lényegében mind mind különböző számítógépes környezetet jelent abból a szempontból, hogy az opkódok mit jelentenek, ezen kívül változó hosszúságú utasításokkal, amik tetszőleges módon (minden utasítás esetében egyéni módon) felülírják az utasítás jelentését, memóriacímzését, vagy az utánuk következő utasítás jelentését, miközben kvázi minden utasítás tetszőlegesen végezhet műveletet a regiszterekkel, memóriával, memóriába mappelt regiszterekkel, speciális kivételekkel itt-ott. normális implementálása 100ezer sor alsó hangon, a minimálimplementáció természetesen néhány ezer (vagy mégkevesebb) sorból is kihozható, ha valakinek erre van zsánere, persze a sebesség feláldozása érdekében. én olyan 30 ezer sorral meg fogok elégedni, hardverkezeléssel együtt. ezen kívül van fpu, legacy bios hívások, pci, interruptok, bármilyen utasítás triggerelhet interruptot, időzítők, portok, dma, és kb 1000 utasítás, és mindezek egymásba hackelve.

az x86 hatékonyságáról annyit, hogy a tranzisztorterület 95%-a arra megy el, hogy értelmezze az utasítást

   
ddbwo - Tag | 1625 hsz       Online status #201792   2014.03.04 22:13 GMT+1 óra  
Igazából ez egy hosszú és unalmas elfoglaltság, szóval nem nekem való. De nincs egy összeszedett, rövid rátekintés sehol?
---
1000 c file-t nem igazán lapoznék végig.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
ddbwo - Tag | 1625 hsz       Online status #201791   2014.03.04 22:04 GMT+1 óra  
"quadruple-precision floating-point format" ... Nagyon jó! ...
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Geri - Törzstag | 2186 hsz       Online status #201790   2014.03.04 21:55 GMT+1 óra  
ja, meg még volt egy nagyon hatékony emulátor, amit az intel fejlesztett, IA32-EL névre hallgatott, a windowsba épülő emulátor volt itaniumhoz (user-mode only). ez olyan 40%-os hatásfokot tudott leadni állítólag.

   
Geri - Törzstag | 2186 hsz       Online status #201789   2014.03.04 21:51 GMT+1 óra  
a qemu nagyon lassú.

(fontos megjegyezni, hogy x86on a qemu, és a dosemu, és hasonló cuccok sem emulációt használnak, hanem egyszerűen on the fly próbálják futtatni a kódot, meg a tlb-vel variálnak, sőt, újabban meg már a hardveres virtualizációs utasításkészleteket használják. )

nekem kb fél mhz-t tudott a 333 mhz-s armomon produkálni tavaj, amikor néztem. de lehet, hogy az a dosbox volt, a fene emlékszik rá.

   
Marcsello - Tag | 228 hsz       Online status #201788   2014.03.04 21:48 GMT+1 óra  
És a qemu, összesítésben ? csak hogy tudjam, hol állhatok nagyjából
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201786   2014.03.04 21:45 GMT+1 óra  
Idézet
ddbwo :
Á dehogy. Már van elég.



összesen két megfelelő sebességű x86 emulátor létezik a világpiacon.

-az a kínai államé, és hardveres rásegítést használ, nem igazi emulátor, csak plugin egy létezőhöz...

-a másik transmeta vállalat néven futott egy hardveres vliw chipben. felvásárolta az izraeli állam egyik befektetővállalata 2x annyi pénzért, mint amennyibe a paksi reaktorok kerülnek. magával rántotta az egész izraeli tech szektort a csődje, kb 20 évet vesztettek.

   
Geri - Törzstag | 2186 hsz       Online status #201785   2014.03.04 21:39 GMT+1 óra  
ddbwo: sehol. javaslom a többi emulátor forráskódját. persze nagyrészt elég érthetetlenek. én ezen a projekten amúgy immáron kb 4 éve rajta vagyok, ez már a 4. nekifutásom.

   
ddbwo - Tag | 1625 hsz       Online status #201784   2014.03.04 21:35 GMT+1 óra  
Á dehogy. Már van elég.
Csak az alapjai érdekelnének. Az asm-be is bele néztem már a demoscene témánál valamennyire.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Marcsello - Tag | 228 hsz       Online status #201783   2014.03.04 21:32 GMT+1 óra  
Konkurenciát akarsz Gerinek ?
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
ddbwo - Tag | 1625 hsz       Online status #201782   2014.03.04 20:57 GMT+1 óra  
Ha akarok írni egy x86 emulátort, hol találok hozzá dokumentációt, segítségnek? Valamivel el kell kezdeni.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Geri - Törzstag | 2186 hsz       Online status #201781   2014.03.04 19:55 GMT+1 óra  
fogalmam sincs, hogy mennyire lesz gyors, nem akarom elkiabálni. ha párszor gyorsabbra tudom megírni, mint amit a jelenlegi emulátorok produkálni tudnak (ez szerintem nem lesz nehéz), akkor eladható.

   
Marcsello - Tag | 228 hsz       Online status #201780   2014.03.04 19:52 GMT+1 óra  
Akkor nem lenne üzlet, ha a piacon kapható leggyorsabb emulátorról mindenki tudná hogyan működik
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201778   2014.03.04 19:42 GMT+1 óra  
bocsi, a cpu emuláció titkos.

   
versio - Tag | 659 hsz       Online status #201770   2014.03.04 18:26 GMT+1 óra  
JIT-es lesz az emulator? mert ha nem neki se allj
   
Geri - Törzstag | 2186 hsz       Online status #201768   2014.03.04 17:55 GMT+1 óra  
64 bites windows 7-et, és linuxot szeretnék majd futtatni rajta. erre első körben azonban nem fog sor kerülni, mert annak előfeltétele az mmx, a pae, az sse, és az sse2, 64 és 80 bit precizitásra képes fpu, illetve maguk a 64 bites utasítások. egyelőre eléggé ezoterikus sejtéseim vannak arra vonatkozóan, hogy ezeket hogy lehetne egyáltalán megírni.

   
Marcsello - Tag | 228 hsz       Online status #201766   2014.03.04 17:29 GMT+1 óra  
És elsősorban mit fogsz futtatni rajta ? (avagy a célközönség)
Az élet szép, csak tele van Bugokkal
http://marcsello.com/
   
Geri - Törzstag | 2186 hsz       Online status #201764   2014.03.04 03:34 GMT+1 óra  
egér és billentyűzet kész. 32 elemű fifot implementáltam hozzájuk, remélem, annyi elég lesz. egérgörgőt majd később...

   
Geri - Törzstag | 2186 hsz       Online status #201762   2014.03.03 21:42 GMT+1 óra  
ami hátra van most:

-soros és párhuzamos portok
-egér
-billentyűzet
-svga
-cpu + fpu
-ide

aztán lefordítani, összekínlódni, hogy legalább a boot loaderig eljusson

amit majd később:
-fpu precizitási módjai
-hangkártya
-ethernet
-pae
-mmx
-sse
-sse2
-64 bit

   
Geri - Törzstag | 2186 hsz       Online status #201756   2014.03.03 12:52 GMT+1 óra  
Idézet
Akybron :
Szőrszálhasogatás:
x86 emulációhoz nem kell floppy.
PC (amiben x86-os proci van) emulációjánál már más a helyzet.


hát nyilván perszonális kompjutáló, nem scak a proci.


Idézet
Akybron :
6510 processzorhoz (Commodore 64) írtam anno emulációt Turbo pascalban. később Delphiben készült órajel szintű változat is (pl. üres for ciklus jellegű időzítések helyesen futnak le), mellé a C64 hangchipje és egyéb hardware elemek részlegesen elkészültek. Így már képes voltam C64 SID zenék (amik tulajdonképpen C64-en futtatható exe-k) lejátszására.
Az első JF verseny nevezésemben (MiniGame Retro, Blue Tetris) ez a rendszer adta a zenét.
Úgyhogy van egy sejtésem arról mekkora fába vágtad a fejszédet, sok sikert hozzá.



kösz. hozzátenném, hogy létező emulátorok alapján írom, azokat reverse engineerelve, mert amúgy full hülye vagyok hozzá (a forráskódjukat természetesen nem használom fel). annyira nem vészes, de hogy az mmx-et, sse-t, sse2-t, pae-t, és a 64 bitet hogy fogom hozzá megírni, az már egy másik kérdés (de valószínűleg ebben a sorrendben). igazából az a lényeg, hogy kitaláltam egy emulációt, amivel a jelenlegi emulátorokhoz képest elvileg brutális sebességnövekedést érhetek el, ha sikerül megvalósítanom.

   
Geri - Törzstag | 2186 hsz       Online status #201755   2014.03.03 12:48 GMT+1 óra  
Idézet
MaNiAc :
Milyen OS az ami nem bootol floppy nelkul?



windows 95, nt, 98, 2000, xp, vista, 2003, 7, 8, linux, dos, freedos, freebsd. ha nincs floppymeghajtó a gépben, biosból egy rejtett kamu floppymeghajtót kell emulálni számukra. a baj azzal a módszerrel van, ahogy x86on felderítik a kernelek a floppymeghajtót: ha nincs floppymeghajtó, végtelenciklusba kerül a rendszer..

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #201753   2014.03.03 10:28 GMT+1 óra  
Milyen OS az ami nem bootol floppy nelkul?
Dare to imagine!
http://www.insaneidea.hu
   
versio - Tag | 659 hsz       Online status #201752   2014.03.03 09:48 GMT+1 óra  
geri szereti olyan faba vagni a fejszejet amihez a stilfuresz is keves
   
Akybron - Törzstag | 456 hsz       Online status #201749   2014.03.03 05:08 GMT+1 óra  
Szőrszálhasogatás:
x86 emulációhoz nem kell floppy.
PC (amiben x86-os proci van) emulációjánál már más a helyzet.

6510 processzorhoz (Commodore 64) írtam anno emulációt Turbo pascalban. később Delphiben készült órajel szintű változat is (pl. üres for ciklus jellegű időzítések helyesen futnak le), mellé a C64 hangchipje és egyéb hardware elemek részlegesen elkészültek. Így már képes voltam C64 SID zenék (amik tulajdonképpen C64-en futtatható exe-k) lejátszására.
Az első JF verseny nevezésemben (MiniGame Retro, Blue Tetris) ez a rendszer adta a zenét.

Úgyhogy van egy sejtésem arról mekkora fába vágtad a fejszédet, sok sikert hozzá.
   
Geri - Törzstag | 2186 hsz       Online status #201746   2014.03.02 23:05 GMT+1 óra  
mit nem értessz azon, hogy floppy call nélkül nem indul el az oprendszer?

   
versio - Tag | 659 hsz       Online status #201745   2014.03.02 22:55 GMT+1 óra  
de 10 eve nincs floppy a gepemben , tenyleg kell ezzel foglalkozni ?
   
Geri - Törzstag | 2186 hsz       Online status #201744   2014.03.02 22:30 GMT+1 óra  
az egy olyan ősi divájsz, amit ha nem enumerálsz rendesen io portokon, a 300ezer forintos i7 processzorodon nem tud bebootolni az óperenciás rendszer.

   
versio - Tag | 659 hsz       Online status #201743   2014.03.02 22:24 GMT+1 óra  
mi az a floppy ?
   
Geri - Törzstag | 2186 hsz       Online status #201742   2014.03.02 21:44 GMT+1 óra  
igen, elkezdtem írni egy ilyet, és ide fogom blogolni.

kezdjük máris a háborgást:

x86-on a floppy típusát a bios időmérőjéből kell kiolvasni

   
Frissebbek | [1] [2] [3] [4] > 5 <