The nouveau project have reverse engineered the majority of the BIOS script format for older nvidia hardware. I've
There's a few caveats. First, it doesn't support nv50 based hardware (8000 series and above). There's a hacky alternative method that basically works there for now. Secondly, it doesn't restore text mode correctly. Your consoles won't work again. Thirdly, it doesn't reinitialise the 3D core at all. If you're using nouveau then this means that it'll wedge itself unless you disable acceleration (option "NoAccel" "true" in xorg.conf). If you do use it with nouveau, you need to load the nv_bios module before the nouveau module is probed, since otherwise it'll grab the PCI device. And fourthly, this obviously won't work at all with the binary nvidia drivers. They ought to be doing much the same thing anyway.
The code's here, and I'm interested in finding out how well it works. Especially on desktops, which I can't test myself.
Thanks go to Stuart Bennett, who not only took a painfully bad laptop off my hands but also helped me hugely in working out why the existing code didn't quite work on my hardware (the ptimer values need saving and restoring, for those who have an excessive degree of interest)