Incentive játékok 3D motorjának optimalizálása

Módszerek, módszertanok alkalmazása Spectrumon...
Avatar
Asimo
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Elite

Hozzászólás Szerző: Asimo » 2012.03.20. 14:15

doncortio írta:tudjuk mennyire gyík az 1MHz-es MOS6510 a 3.5MHz-es Z80-nal szemben :)
Azért a helyzet nem ilyen egyszerű. :)
A Z80-nál a legegyszerűbb utasítás végrehajtása is 4 órajel-ciklus, ami így 1/3.5MHz*4 = 1.143us.
A 6510 az egybájtos utasításokat viszont csak 2 ciklus alatt hajtja végre, ami így 2us, mindjárt nem 3.5x-es a különbség.
Ráadásul van több olyan (nem tervezett) utasítása is, ami a CPU végrehajtó egységének huzalozása miatt pl. két másik utasítást vált ki. Korai szuperskalár. :)
Tehát csupán az órajel összehasonlítása félrevezető lehet. Kellene pár benchmark (biztosan van is), komplexebb feladatok összehasonlítására.
De volt már erről szó errefelé, egy másik topikban...

A Spectrum speciális képernyő memóriája miatt egy vonalban a pixelek pozíciójának kiszámításához több utasításra lehet szükség.
A C64 multicolor képszervezése miatt kevesebb utasítással lehet nagyobb képterületet mozgatni (citation needed :)).

Nézd meg pl. a C64 Desert Dream demot (Amiga demo remake), mennyire ütős. Elképzelhetőnek tartom, hogy ha az Elite lassabb C64-en, az nem a gép, inkább a programozók gyengesége volt... Esetleg ha valaki kódolt már 3D-t vektorokat C64-en és Spectrum-on is, az hozzá tudna szólni. :)

Avatar
Zozosoft
Hozzászólások: 781
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Elite

Hozzászólás Szerző: Zozosoft » 2012.03.20. 15:38

Asimo írta: Ráadásul van több olyan (nem tervezett) utasítása is, ami a CPU végrehajtó egységének huzalozása miatt pl. két másik utasítást vált ki.
Ilyen akad a Z80-nál is.
Elképzelhetőnek tartom, hogy ha az Elite lassabb C64-en, az nem a gép, inkább a programozók gyengesége volt... Esetleg ha valaki kódolt már 3D-t vektorokat C64-en és Spectrum-on is, az hozzá tudna szólni. :)
A Incentive 3D játékok (Driller, Total Eclipse, Dark Side, stb) is jóval gyorsabbak Z80 procin!
Ettől függetlenül lehetnek programozói gyengeségek is, de mindkét oldalon.
Amúgy konkrétan említett Incentive játékok 3D motorján az egyik EP-s kollégának sikerült jelentősen optimalizálni, akár 30-40%-os gyorsulást elérve. (Így ezek a játékok most EP verzióban a leggyorsabbak :-) )

Avatar
Asimo
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Elite

Hozzászólás Szerző: Asimo » 2012.03.20. 18:49

Zozosoft írta:
Asimo írta: Ráadásul van több olyan (nem tervezett) utasítása is, ami a CPU végrehajtó egységének huzalozása miatt pl. két másik utasítást vált ki.
Ilyen akad a Z80-nál is.
Azt gondoltam, ez kevésbé jellemző a Z80-ra, habár valóban rengeteg undocumented utasítás van, amivel nyilván lehet gyorsítani a végrehajtást is.
Erről az oldalról szemezgettem: http://www.z80.info/z80undoc.htm

Ilyesmikre gondolok, mint az ASO vagy az RLA:
http://nesdev.parodius.com/extra_instructions.txt
Az AXS utasítás pl. másik öt utasítással helyettesíthető.
Zozosoft írta:
Asimo írta: Elképzelhetőnek tartom, hogy ha az Elite lassabb C64-en, az nem a gép, inkább a programozók gyengesége volt... Esetleg ha valaki kódolt már 3D-t vektorokat C64-en és Spectrum-on is, az hozzá tudna szólni. :)
A Incentive 3D játékok (Driller, Total Eclipse, Dark Side, stb) is jóval gyorsabbak Z80 procin!
Ettől függetlenül lehetnek programozói gyengeségek is, de mindkét oldalon.
Amúgy konkrétan említett Incentive játékok 3D motorján az egyik EP-s kollégának sikerült jelentősen optimalizálni, akár 30-40%-os gyorsulást elérve. (Így ezek a játékok most EP verzióban a leggyorsabbak :-) )
A 30-40%-ot sikerült kimérni, vagy csak úgy érzésre?
Persze a teljesség azt kívánná, hogy most valaki felkarolja a C64 verziót és azt optimalizálja. :)
A játékok letölthetők/kipróbálhatók?

Szívesen látnék egy igazi "mérnöki" összehasonlítást, bonyolultabb algoritmusokkal, de belátom, hogy ez sok munka, ráadásul ritka, hogy valaki több platformon is a toppon legyen. Vagy csak nem kerestem még eleget a neten. :)

Avatar
Zozosoft
Hozzászólások: 781
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Elite

Hozzászólás Szerző: Zozosoft » 2012.03.20. 19:56

Asimo írta:
Zozosoft írta:
Asimo írta: A 30-40%-ot sikerült kimérni, vagy csak úgy érzésre?
Persze a teljesség azt kívánná, hogy most valaki felkarolja a C64 verziót és azt optimalizálja. :)
A játékok letölthetők/kipróbálhatók?
Igen, végrehajtási idők lettek mérve, a pálya 1-1 adott pontján állva, meddig tart a képkocka kirajzolás. Fent vannak az ep128.hu-n, az Amstrad verziók lettek így tunningolva. A módosításokat elvileg a Spectrumos verzióba is át lehetne vinni, föleg matematikai rutinok lettek javítva.

Avatar
Asimo
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Elite

Hozzászólás Szerző: Asimo » 2012.03.20. 20:43

Zozosoft írta: Igen, végrehajtási idők lettek mérve, a pálya 1-1 adott pontján állva, meddig tart a képkocka kirajzolás. Fent vannak az ep128.hu-n, az Amstrad verziók lettek így tunningolva. A módosításokat elvileg a Spectrumos verzióba is át lehetne vinni, föleg matematikai rutinok lettek javítva.
Megtaláltam, a Castle Master játékkal indult a "sorozat", tényleg jó. A két gép (EP, Amstrad) egyaránt 4MHz-en hajtja a Z80-ast, és a szövegből az derül ki, hogy a legtöbb időt nem a kirajzolás viszi el. Ez jelentheti azt, hogy a nem optimalizált változat ugyanannyi ideig futott mindkét gépen (első képkocka kirajzolása)?

Megvan forrás szinten is a módosított verzió? Akkor tényleg meg lehetne ejteni egy ilyen Speccy verzió javítást.

Most látom, hogy OFFoljuk a topikot. Lehet nyitni kellene ennek a témának egy újat, pl. Freescape címmel.
(meg egy másikat, pl. optimalizálás, benchmark stb :))

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég