The EFI emulator you speak of is so that OS X can boot on a BIOS system. BIOS boots PC_EFI, which turns around and boots OS X.
On a real Mac system, you can't emulate the EFI firmware on the video card with PC_EFI, since it will never get a chance to load at the right time. Nvinject is commonly used /with/ PC_EFI, but it doesn't use it. Nvinject just matches up video cards with a different ID and force the Apple drivers to load.
EDIT: As a side note, I would like to point out the VGA vs EFI firmware on a video card only really gets used early on during boot. Once the OS loads drivers for the card, the firmware isn't even used. The reasons why a PC video card don't work is two-fold: 1) the boot-time firmware is different (VGA instead of UGA), 2) the OS X drivers don't recognize the card.
Hi Krevnik,
I just registerd to this forum to tell you one thing: You are wrong!
Ok, here is what happens
The graphics card has a vga-bios or a efi-firmware. In order to display something before the actual os-graphics-driver loads, a BIOS on a PC/Hacknt0sh initializes the vga-card by using the bios. On EFI-systems like the Mac Pro, a UGA-driver, part of the efi-firmware, does th same.
The uga-driver for a graphics-card using efi-firmware instead/in addition to a vga-bios (dual, efi-firmware and vga-bios in one ROM) sets variables in IOregistry. you can see, which variables it sets by booting into singleuser-mode and do an ioreg -l. The driver matches against those values and reinitializes the graphics-card.
NVinject, ALCinject, ATIinject etc. do, what your the efi-firmware + the uga-driver does. It writes values to the IOregistry. For the driver in os x ,it doesn't matter if you have a bios or efi-firmware in this case. It just doesn't care.
The situation changes when your Mac Pro won't boot at all with a vga-bios-graphics-card attached. Since the uga-driver of the efi-firmware cannot initialize the card in the pre-boot-phase it may be a problem with the actual efi-firmware from the motherboard. Or more simple, the boot.efi (MacOS' bootloader) just won't start if it detects that the uga-driver is not loaded (because it could not find a graphics card with efi-firmware).
So no, NVinject does not modify the drivers to detect more cards. The only thing it does it to set settings which hopefully would have been set with a efi-firmware too. Thats why there are so many versions. Not all of the values are known neither do the developers exactly know how the values need to be modified to enable display detection, resolutions, all outputs etc. It is hust trial and error due to the few efi-firmware nvidia cards against the wide range of different vga-bios nvidia pc-cards.
Hope to made some things clear.
Anybody can try a non-mac nvidia or ati card in his/her mac pro and also try to adjust those values set by nvinject.
Max
PS: BTW the efi-emulator does not emualte a efi-enviroment at all. This is just another inject game. The kernel reads values, fsb-speed, cpu-speed, xd-bits set yes/no, vanderpool enabled/disabled, pci cards, address space, onboard devices + id's etc. from variables within the efi firmware.
This "efi-emulator" just reads those values from your BIOS, and puts them into the place, where the efi-firmware usually puts them so that the actual osx-kernel "finds" them. As soon as it has read those values, there is no more(*) difference for osx in running in an efi enviroment or bios enviroment.
*well, if you use programms, trying to access the efi's nvram, they will of course fail, or at least write something into a, by efi-emu defined, section in your RAM, but it won't affect anything.