Wouldn't it be possible to just simulate the hardwired TEV with a fully programmable pixel shader? At least they know what's inside the box, but would it be possible from a technical view?
Dolphin, the GC/Wii emulator does
It emulates TEV quite well too! Though, it's about a factor 15 slower on my dual core 2GHz laptop than my Wii is (and if I'm not mistaken, homebrew still runs GC mode, thus lower clock freq). Anyway, these guys deserve some respect for building it.
BTW hardwired is a sort of short cornered term for Flipper/Hollywood; what you actually do to program it is wiring outputs to inputs and specify parameters to generate outputs using fixed calculations. For example, in the vertex shader, you can *wire* up a texture coordinate with a bump offset function and specify a base coordinate *parameter* to base the offset on.
@Entropy, my knowledge isn't complete at all. So there is still a large unexplored, fuzzy, area for me. For example, I don't have a clue how to use dual transform and it didn't came clear to me reading the patents either. Besides that, I don't have a degree in HW 3D programming, just some experience with software rendering, so things I'd like to see now could be obsolete for experienced HW programmers.
But stuff I would like to see from a fixed function point of view would be:
* Generation of interpolated, tangent space, light direction vector (per HW light, possibly accesible through color channel) if not possible yet (I doubt it is)
* Ability to wire up a tangent space light direction vector to the 3x2 dot3 unit instead of just being able to pass 2D texture coordinates
* Ability to read/write texture coordinates from Recirculating shader unit
* Ability to have an alternative to the blending operation D + (C-1)A + CB, such as AB + CD (this would enable to add diffuse and specular light in 1 tevstage instead of 2)
* More color channels (8, one for each light); my current normal mapping setup uses diffuse attenuation to switch the normal mapping stages on or off (when the light moves behind the surface). Since the Wii only has 2 channels, I'm basically limited to 2, or 4 if the alpha is used separately, HW lights as well
* A relative jump function that enables to loop between a number of stages
* for HD I guess it would be feasible to increase clock to >500MHz and use 16 pixel pipelines
Or:
Have the ability to do more "primitive" stuff in the Recirculating shader unit, such as dot3, matrix transforms, generating texture coordinates and more blending alternatives. But if they go that way, I'd rather see a modern GPU.
@DeadlyNinja, does this site have a repository to upload stuff? What I can show right now is a simple cube (got most of that from existing GC demo) with a single light, diffuse and reflective normal mapping and ambient color normal mapping (i.e. the ambient light is done using a virtual lightsource that's always in front of the surface, but I'll replace that with a direct texturemap since that will be faster). You can switch to diffuse only and diffuse+reflective using mote A and B buttons. If no options to upload it here, I'll host it myself as long as I have bandwith available. Check again end this week.