25/06/22

Vesmírne preteky, boj o 3D priestor

Dobre známy americký gigant Texas Instruments /TI/ v roku 1987 neúspešne oslovil Nintendo a Sega, aby ich presvedčil, že nastal čas v hrách skočiť aj do 3D priestoru už v generácii konzol Super Nintendo a Sega Megadrive. Určite vás napadne z akého modrého neba ten návrh vlastne spadol. Nuž TI sa na vianoce roku 1985 podarilo dokončiť prototyp pravdepodobne svetovo prvého, jednočipového 32 bitového grafického procesora - TMS34010 s možnosťou programovateľného mikrokódu. Išlo naozaj o proto-formu toho čo dnes poznáme ako GPU. Predviedli to vtedy v demonštračnej podobe PC grafickej karty "The Flippy". Zvládlo to 2D /aj 16 bitová paleta/, 3D grafiku, fyziku, DSP funkcie aj generovanie stereo zvuku. Ďalší krok - smer konzolácky gamebiz, avšak dvojka Nintendo a Sega povedala nie. Škoda Wolfenstein/DOOM/GTA revolúcia mohla prísť práve z konzol.

 
AGC Mobile Operations Simulator (AMOS) - GTA pre policajtov na čipe TMS340xx

TI teda odpochodovalo za inou americkou firmou Atari a do ich arkade kabinetov napchali mobo s trojicou TMS340xx až na 50MHz /ako rasterizér alebo geometrický či fyzikálny procák/ a vznikla kolosálna 3D hra Hard Drivin /1988/ s DLC aj technicky v "GTA" sandboxe. A keďže treba zamachrovať aj pri 2D gamesách, tak navštívili Midway a v ich arcade herniach sa zjavili hry ako je opäť veľmi slávny Mortal Kombat /1992/. A ako ste si správne domysleli - MK beží tiež na HW platforme čipu TMS34010 ! Takto jednoducho sme dokázali, že bolo možné dostať 3D hry na svetlo božie skôr ako bláznivé Nintendo s N64 v 1996, alebo chaotické pokusy v 1994 s SEGA 32x. Ako vizionárska sa teda javí skôr snaha Atari Jaguar a Panasonic 3DO na konci 1993, ktoré to jasne videli aj v 3D a obe veľmi slušne vedeli rozbehať aj DOOM 1. Čo bol budíček do nových časov.

starring Texas Instruments TMS340xx

TI po TMS34010 vypustilo v 1988 aj značne vylepšenú TMS34020, ktorú bolo možné spárovať s FPU koprocesorom TMS34082 /1989/. Celá táto kombinácia vedela generovať 60 mega vertexov /nemýliť si s polygónami/ za sekundu. Iba na okraj spomeniem, že TI sa snažilo presadiť aj svoj vlastný profi grafický štandard TIGA /Texas Instruments Graphics Architecture/ a vyrobilo aj výkonné PC grafické karty cez fy Number Nine a Hercules. Presadila sa však VESA, SVGA konkurencia. Iné premenné, iný článok. TI aspoň presvedčilo Mircosoft, aby WinOS komunikovalo s externými grafickými kartami na otvorenom API. Do Win verzie 3.0 to MS kódoval "natvrdo" pre daný HW.

Hard Drivin' by Texas Instruments TMS340xx .. 4 fps a mizerná draw distance na SNESe

Skočíme ku PlayStation 1 /vianoce 1994/. SONY inžinieri vedeli čo je treba urobiť, takže na overené CPU MIPS R3000ku /aj v starých SG grafických mašinách/ prilepili vlastný akcelerátor geometrie plus rýchly rasterizér a na celej čiare to vyhrali. PS1 však samozrejme časom narazilo aj na arcade hry urobené práve pre TMS34010 ako je NBA Jam /1993/ a Chris Kirby v tomto odkaze hovorí, ako sa s konverziou v 1995 na prvý pohľad na oveľa výkonnejšom SONY HW pekne potrápili. Slabá dokumentácia SONY ku PS1ke. PS1 bola navyše úplna novinka a Chris mal iba 18 rokov. S Chrisom inak dnes veľa kecám, lebo sa motá aj okolo ZX Spectrum Next a pred rokmi  riešil ako natlačiť na frame 256 pixelov po vertikále ako na arcade automate do Next gfx módov. Hovorím mu, že to nejde, lebo "tile mod", tam ešte nemajú a bitmapa ide v 256 farbách iba do výšky 192 pixelov. Takže to vyrieši cez virtuálny priestor sprite enginu /je možné zvýšiť rozlíšenie obrazu strankovaním do adresného priestoru sprajtov/. Oponujem, že narazí na scanline sprite overflow limit. Chris si však už dnes poradí so všetkým a do roka sa aj tak celé grafické jadro Nextu prekopala a už to ide natívne 320×256 - 640×256px a bez drakonických sprite obmedzení.

Naspäť ku PS1 a 18 ročnému Chrisovi. Vybalili PS1 dev kit. Spustili pribalené demá a ostali v šoku pri pohľade na 8000 sprajtov/frame na 60 fps. Doterajšia domáca špička Sega Megadrive dávala 80 /!!/ sprajtov na frame, maximálne 20 na scanline. PS1 bolo teda úplne monštrum. A kedže som dobrák od kosti, tak ten demo disk aj viem zohnať. Sám som ho už veľmi dávno skúšal. Megadrive inak zvládne ten NBA Jam celkom v pohode /samozrejme menej farieb, menej animácie a menšie rozlišenie ako v arkáde, TMS340xx !!/. Chris bol proste vtedy ešte zelenáč a PS1 zas priliš nový design a 2D grafika sa tam rieši cez 3D rasterizér. Bodka na záver. Ak by všetko išlo rýchlejšie, viac odvážnejšie tak Sega Megadrive /štart jeseň 1988/, alebo Super Nintendo /štart jeseň 1990/ mohli pri akceptovaní texaskej ponuky preháňať 3D otextúrovaný engine dávno pred Carmackom s jeho DOOM 1 a dnes by ten hňup nebol slávny a čuchal by toulén pod mostom. Keby nebolo keby, boli by sme v nebi ?

21 comments:

  1. Skvělý článek, děkuji na něj. O TMS34010 jsem neměl ani potuchy a je to přesně to pravé co bych si býval představoval jakožto návrhář herního hardware v 80. letech. Takže přece jen se někdo pokusil! Mimochodem ten NBA Jam z roku 1993 mám v MAME emulátoru ve výběru dobrých her, a ten procesor je tam taktovaný na 50 MHz, což nevím jestli v 80. letech by bylo možné... Hra plynule skroluje (podlaha po řádcích - LINESCROLL (he he)!) a má masivní sprajty, takže je vidět že i pro 2D ten čip byl velmi použitelný. Škoda no.

    ReplyDelete
  2. ... 50mhz bola naozaj normalna rychlost toho procaku pri Hard drivin, ale na mobo bol parovany aj 68000kou na 8mhz.

    ReplyDelete
  3. Nedávno jsem s někým řešil a hledal jestli PS1 měla sprity jako real sprity nebo to byly jen fake textury na 3D polygonech se zamčenou osou Z... no je to asi něco mezi. jestli to chapu správně v 2D modu udělá PS1 2 polygony přes celou obrazovku jako čtverec a pak se sprity vykreslují do toho polygonu jako textura a všechno jede softwarově. Což je prakticky chování dnešních shaderů.. ale ty informace se pořádně nedají najít a tohle někdo říkal v nějakým foru co jsem vygooglil, znělo to věrohodně.

    ReplyDelete
    Replies
    1. ... heh .. jeden koder poedal, ze staci ps1 sprajty naklopit a hned dostanes znamy woble efekt chybajucej perspekt. korekcie, su to polys s texturou nie sprajty.

      ... a zasmejem sa este lepsie .. ps1 jedna najcastejsie udava sprite perf na 4000 na frame, co je cirou nahodou to iste cislo ako poly perf v hrach.

      ... v clanku vsak pisem o 8000 sprajtoch na frame .. wtf .. heh pointa .. tie sprajty v tom dev deme su NEtexturovane a vtedy ich ps1 zmakne raz tolko .. vyuzivany to jav aj v hrach .. Crash, Spyro, Tobal, aj FF7.

      Delete
    2. Správná odpověď je tato:

      "They're called "sprite" commands because they work on rectangles, not triangles. You specify the upper left corner, and the width and height which can only be 8x8 or 16x16. Sprite commands are limited, but very fast - as fast as the fill rate allows.

      If you want rotation and scaling, you have to use the 3D quads (the GPU splits them internally into triangles). Since it's 3D, you can do tilting, rotation, and scaling."


      Chilly Willy, Sega-16 forums

      PSX = blitting beast

      Delete
    3. ... fillrate - polys - quads - sprites .. PS1 je 3D jadro aplikovane na 2D veci .. podobne ako amiga vyuzivala napr. blitter na fill plochy pre flat shaded polys, tak aj PS1 setri dychom a vyuziva 3D HW na 2D hry .. nie je to optimalne a je to o tom vela clankov /port SF2 na PS1 a stazuje sa aj Kirby pri NBA Jam porte/ ale staci to ..

      Delete
    4. Na druhou stranu "nablituješ" si kam chceš kolik chceš, pokud ti to fill rate a tvůj kód dovolí... Takže tě neomezuje nějaké předdrátované VDP že máš mít jen 2 pozadí atd. Když to zmákneš, uděláš si 5 pozadí!

      Delete
    5. ... ano .. HW a SW amiga sprajty to maju stejne .. a existuju dema pre Jaguara a 3DO ako blbnu s 2000 sprajtami na frame na 60 fps /jak budem na PC, tak ich tu dam/.. vsetky zmaknu skvele 2D veci.

      Delete
    6. Tady tato hra má krásných nějakých 4-5 pozadí, particles, padající kmeny... všechno smooth nádhera... PSX is da beast.

      Delete
    7. ... sekundu som myslel, ze kliknem a uvidim - In the Hunt .. heh ..


      ... Neo Geo - Blazing Star .. sleduj tu giganticku malovanu bitmapu co sa vzadu objavi.

      Delete
    8. ... videa, 2000 sprajtov na 60 fps:

      3DO

      jaguar

      Delete
    9. 4000 quadů = 2x triangle = 8000 poly. Co jsem četl bylo to, že ten velkej polygon je jako framebuffer a že se v SDK píše sprite a to se propisuje do toho framebufferu ale transformace to bude mít jako 3D objekty.. takže je otázka jestli pro vykreslení PS1 skutečně dělá polygony.. právě se mi zdá že se myslí že jo, ale že v tom přímo sprite modu ne že rovnou kopíruje ty texturový data na daný místo v paměti.. že poly použije až když chceš použít transformace/rotace/scale.

      Delete
    10. Chilly Willy
      08-20-2012, 02:43 PM
      Gotcha, two triangles per tile I imagine.

      Not really - they're called "sprite" commands because they work on rectangles, not triangles. You specify the upper left corner, and the width and height which can only be 8x8 or 16x16. Sprite commands are limited, but very fast - as fast as the fill rate allows.

      If you want rotation and scaling, you have to use the 3D quads (the GPU splits them internally into triangles). Since it's 3D, you can do tilting, rotation, and scaling.


      The genesis/snes/pce/neogeo/x68000/nes/sms all draw their sprites in real time. The chip is drawing sprites as the beam races the television screen. If you have too many on a line the chip can't keep up and you get flickering.
      The Amiga(1985!!!)/PSX/Saturn/N64/3DO/any other modern system don't race the beam. What they do instead is store a picture in memory, draw into that as fast as they can, and then have another chip just read that and send it to the screen. If for some reason they can't draw that picture in 1/60 of a second, then it might take 2/60, or 30fps. You lose framerate instead of getting flickering.

      Sega-CD scaling games work kinda the same way. They're just using tiles on the genesis VDP as a giant image. Same for Super-FX chips on the SNES.

      The Amiga had "true" sprites... they are loaded in the horizontal blank and displayed when the screen reaches the set point for the sprite. You could have eight 4-color sprites, or four 16-color sprites on a horizontal line without any tricks. That was big for 1984 when the hardware was designed. You could use the COPPER to reload the sprites on a line for more than 8/4 per line.

      The Amiga also had the BLITTER, which would allow "unlimited" drawn sprites in the frame buffer. These were called "BOB"s - Blitter OBjects. The graphics library had built in support for animation using linked BOBs, so cell-sprite animation was very easy to do on the Amiga.

      Very similarly, the Atari Jaguar also has "true" sprites and drawn sprites. The OP (Object Processor) could display regions at raster time that would be called sprites in any other system. It also had a BLITTER capable of unlimited drawn sprites.



      Draw me a sprite


      ... PS1 ma proste v MEM obrazok ako texturky, prdne ju na 2 triangle ako na quad sprite a je to.

      Delete
    11. PS1 nerozlišuje texturu nebo sprite oboje jsou data v TIM formatu, ale zda se mi že to je rozšířenej omyl nebo nepřesnost.. protože když si čteš jak se to dělá, tak se vyloženě nakopíruje TIM data do screen bufferu na konkretní pozici, jako blit. Ja to pak zjistím od těch lidi z PSXDev.

      Delete
    12. ... v clanku za menom Chriss Kirby je odkaz ako mal sprite data pre panakov v syst. RAM, ihrisko v VRAM a ako blittuje panakov cez speci scratch pad RAM, nieco ako malicka keska a ked si pmatam mala ju aj PS2.

      Delete
    13. ... hej, 16 kilo na PS2, extremne rychla, pri PS1 doslova ako L1 keska, CPU temp stack working space ovEla rychlejsi ako syst. RAM.

      Delete
  4. Ten Dreamcast engine vypadá slibně...!

    ReplyDelete
    Replies
    1. ... v 1993, sega arcade, F1 Super lap .. vsetko sprajty, ked najdes video dobrej trate, tak uvidis pekne sprajtozne 3D kopce.

      Delete
  5. PS1·Sprite

    A sprite is a textured rectangle, defined as a rectangle with coordinates on a texture page. Like the rectangle is drawn much faster than the polygon equivalent. No gourad shading possible. Even though the primitive is called a sprite, it has nothing in common with the traditional sprite, other than that it's a rectangular piece of graphics. Unlike the PSX sprite, the traditional sprite is NOT drawn to the bitmap, but gets sent to the screen instead of the actual graphics data at that location at display time.

    http://www.raphnet.net/electronique/psx_adaptor/Playstation.txt

    ... proste direkt data blittom na frame.

    ReplyDelete
    Replies
    1. Yep, as I said, a blitting beast. No need to post a hundred comments about it... Ale zdá se mi že Deloix si tu hraje na jediného vševěda a ignoruje cokoliv sem někdo jiný na téma Playstation dá a furt si jede to svoje...

      Delete

**** pre vloženie hypertextového odkazu do komentára použi CSS kód: hyperlink ****