86Box / 86Box

Emulator of x86-based machines.
GNU General Public License v2.0
2.79k stars 348 forks source link

ATI 3D Rage Pro emulation #677

Closed anabate123 closed 1 year ago

anabate123 commented 4 years ago

Is your feature request related to a problem? Please describe. 86Box doesn't have ATI 3D Rage Pro emulation

Describe the solution you'd like I would like 86Box to emulate the ATI 3D Rage Pro video card

Describe alternatives you've considered I've considered using either ATI Graphics Pro Turbo (Mach64 GX + Voodoo2) or ATI Video Xpression (Mach64 VT2 + Voodoo2)

Additional context The ATI 3D Rage Pro so for, I think, had these specs:

ghost commented 4 years ago

Implementing cards with 3D acceleration capabilities is extremely difficult. As an owner of a Rage IIC & a Rage 128, i would like to see Rage emulation happening too. There's a Riva 128 implementation in the works, though not that much progress is reported. Imagine the ATI Rage now.

fuel-pcbox commented 4 years ago

Hey, I'm the person who's worked on the nVidia Riva 128 emulation. AFAICT, there simply isn't enough documentation on ATI Rage cards before the Rage 128, and the only docs available for that card are open source drivers :P Simply put, it's not likely at all, I'm afraid.

ArtiomWin commented 4 years ago

@qeeg VGAmuseum has some documentation for Rage cards, Here's link to datasheet for 3D Rage Pro (Rage LT Pro is mobile version of that card): http://www.vgamuseum.info/index.php/cards/item/download/118_15798fb50539a5a89c7a14598f82440b

ghost commented 4 years ago

the fact that documentation exists is known but yet it's pretty difficult to make. There has to be a proper reason for someone to implement this.

maximumspatium commented 3 years ago

I'm probably late to the party but there is an ongoing effort to write an emulator for ATI 3D Rage Pro video card: C++ source and header.

This GPU serves as a soldered on-board video in some late PowerMacintosh models. Their ROMs (i.e. BIOS) include both OpenFirmware and Mac OS drivers for this chip.

I'm analyzing the way those drivers communicate with the HW right now. Next step is to implement frame buffer handling and HW cursor. 3D features, despite being used in a couple of games, aren't probably required yet. Not sure about the 2D acceleration.

VGA Museum hosts a couple of confidential ATI docs including the datasheet and a RRG (register reference guide). Linux sources bring an additional clarification about some obscure bits/features.

I think a basic emulation of this card will be available soon. Advanced features will be added on-demand...

Raulshc commented 2 years ago

Available hardware documents:

WhiteMagicRaven commented 1 year ago

i posted a long ago https://github.com/86Box/86Box/issues/1786

and i spot that https://github.com/dingusdev/dingusppc/blob/master/devices/video/atirage.cpp partially done emulation is updated 4 months ago.

Cacodemon345 commented 1 year ago

ATi 3D Rage chips may be more doable as they were supported by Mesa3D in the past, which means source code documentation to work off.

maximumspatium commented 1 year ago

VGA museum hosts register reference guides (RRGs) as well as programming references for various ATI Rage ASICs. Unfortunately, none of them is complete. Especially, I didn't see any halfway complete description of the 3D engine registers for Mach64. We even don't know how its 3D pipeline looks like, not to mention its internals. The 3D section of RAGE 128 is better documented. Real Rage 128 ASICs seem to relay on a microcode engine responsible for performant parsing of CCE packets internally. ATI drivers usually upload a comparable short (2KB) microcode program to the engine at startup. We do know absolutely nothing about this microcode except certain assumptions that the Rage 128 GPU has some kind of VLIW architecture that expects fixed size opcodes (QWORDS). Implementing a high-performance emulation of such an engine based on this scarce documentation will be challenging. 2D stuff is indeed doable as recent experiments with its basic emulation in Dingusppc show...

maximumspatium commented 1 year ago

ATi 3D Rage chips may be more doable as they were supported by Mesa3D in the past, which means source code documentation to work off.

https://gitlab.freedesktop.org/mesa/mesa/-/tree/faa6d8af59c69b0c0239f64363b170619e2a9827/src/mesa/drivers/dri/mach64

OBattler commented 1 year ago

Closing because maximumspatium is right: Implementing a high-performance emulation of such an engine based on this scarce documentation will be challenging. Well, that is, unless we only do 2D but such partial emulation would be contrary to our goals. As such, this is being closed with a "Can't do".