Thanks for the shared roms! Can they be smoothly programmed with Nvflash, or do you need to program the EPROM?Nice stuff! I’m excited to test the 980 rom. I’ll report back with results.
dosdude1 also has some EFI roms on his webserver, can confirm that the 970 one works flawlessly with my 4,1 -> 5,1
http://dosdude1.com/files/macstuff/gpuroms/
I am releasing to the public GT 640 p/n 02G-P4-2645-KR EFI rom modified by MacVidCards. As for the reasons why am I doing this please read MacVidCards Radio Silence
You will have to program a blank GD GD25Q20 2.7-3.6V 2048Kx1S chip with SPI programmer. For this you will need to replace the original chip of the card with the new one as NVFLASH will not reprogram your existing chip.
The Firmware image PCI Device ID is: 0FC0
and the
subsystem ID is 3842.2643.
I am encouraging everyone who had negative experience with MacVidcards to dump their EFI roms to this thread for public benefits.
Edit:
Added GTX 770, 780, 950, 960, 980, 1060, 1070
It depends it might be newer or different part number. Do you mind sharing yours here?I'm seeing different sizes, for example, I have the MSI GTX 1070 MVC ROM and that one is 273 KB, whereas the one posted is only 217 KB.
Not that it is that interesting anymore, considering Mojave has no support for the most recent NVIDIA graphic cards.
Thanks for the shared roms! Can they be smoothly programmed with Nvflash, or do you need to program the EPROM?
So was the ROM with the same device ID as your card? How did you trim it, what did you cut? How did you flash it in case it was different device ID?Okay I downloaded the 980 Mac Rom from OP's archive, I had to trim the rom so it could fit onto the eeprom. I then flashed it to the Asus GTX 980 STRIX that sits in my gaming pc.
It works! - I will be doing more testing to make sure that every output functions with bootscreen but so far it seems to be good.
![]()
![]()
Of course this is going to be temporary for me, I just wanted to help out and verify compatibility as much as I can.
So was the ROM with the same device ID as your card? How did you trim it, what did you cut? How did you flash it in case it was different device ID?
nvflash.exe -6 980.rom
I opened the rom in a hex editor and removed all the zeroes at the end of the file leaving me with a 162KB rom
After that I was able to flash it with NVFlash 5.557.0 by running
Code:nvflash.exe -6 980.rom
There was a PCI board ID mismatch but using -6 I was able to proceed with the flash.
I may be wrong but deleting the 0 bytes at the end do not affect the checksum.Isn't it broke checksums or internal checks? Are rom editors work well after trim?
This means if we delete zeros at the end of rom, we won't need spi programmer or new chip?I may be wrong but deleting the 0 bytes at the end do not affect the checksum.
Did you do a comparison of the ROM on the card and the BIOS you used for flashing? Those old versions are funky. They don't throw an error but if you compare both bioses they show difference (in the ID at least)alright managed to flash my GeForce GT 740 with NVFLASH 5.164
which still has the -4 -5 -6 -j flags which let your Force flash pretty much any ROM onto a card
(a useful one from the PowerPC Flashing days 🙂 )
sadly while the GT 640 ROM does not brick my GT 740, i dont get boot screens and OS X treats it as an unflashed GT 740
I suspect this because of the hardware device ID straps on my GT 740 (sadly im not sure how to edit the device ID of a Kepler VBIOS)
however going by these results, id say if I had an actual EVGA GT 640 the ROM would probably work nicely, and not require any EEPROM soldering 🙂
Did you do a comparison of the ROM on the card and the BIOS you used for flashing? Those old versions are funky. They don't throw an error but if you compare both bioses they show difference (in the ID at least)
I don't think the device ID is hardware encoded here is why:umm I didn't, dump the ROM again after flashing and compering, but I did try flash again
where NVFLASH showed the ROM had indeed been flashed onto the card
but it still complained about the device ID miss match of course (the Device ID is set by hardware straps, which you can sometimes override in ROM and sometimes you cant, sadly in this case it seems like i cant)
(I see in the zip file of ROMs theres another GT 640 ROM, which ill try at some point for giggles)
but I also see theres EFI32 9500 GT ROM, quite happy about that as I can finally flash my 9500 GT for use in my MacPro1,1 and Xserve1,1 which will be very handy 🙂
although my 9500 GT is a 512MB GDDR3 card and I think the ROM is for a 1GB DDR2 card if the pictures are anything to by, so it will be interesting to see how that goes
SPI flash will reveal where is the device ID stored. In my case the same part number can't have different device ID so if an external flash can't change that ,the board has been physically modified by the flasher.sadly? in my case everything does match up, sadly the ROM wont work because of my GT 740s hard coded Device ID, I wonder if anyone has a GT 740 Mac ROM or knows how to edit a Kepler VBIOS's device ID? 🙂
View attachment 833926
the actual legacy VBIOS does not care about the device ID, but it seems like the UEFI or in this case the UGA EFI portion of the Video ROM does care hence why I get no boot screens etc (note that the VBIOS version did change to match the GT 640 ROM, but the device ID did not)
View attachment 833927
SPI flash will reveal where is the device ID stored. In my case the same part number can't have different device ID so if an external flash can't change that ,the board has been physically modified by the flasher.
Well this just proves that the external SPI flash will work. Apparently it is not easy to modify the ROM and NVFLASH can't change the ID. There is probably a checksum error as you said.yeah Im trawling though the ROMs atm seeing if its feasible to edit the GT 640 Mac ROM with the 740s device ID 🙂
[doublepost=1556292449][/doublepost]nope that did not work, just produced a brick LOL
(the device ID is in 2 locations endian swapped, which I replaced with the 740s device ID, also endian swapped which NVFLASH was happy with, it no longer complained about a device ID miss match, but sadly does not work, probably some checksum somewhere that would need fixing)
Well this just proves that the external SPI flash will work. Apparently it is not easy to modify the ROM and NVFLASH can't change the ID. There is probably a checksum error as you said.
Well as I said I have 2 absolutely identical cards but the device ID is reported different. If the straps are resistor values then the resistor(s) has been modified. And this makes sense for the flasher as a way to prevent copying (along with inflation of the bios with 0's and replacing the chip with a bigger one 😉)the hardware straps themselves are resistors on the PCB theres no way software can physically change those,
"They were quick to disable this by changing the drivers to look at only the hardware straps for the PCI ID."
the question lies in, how does MVCs UGA ROM work, it depends if it cares about the hardware straps or does not care about the hardware straps
when im setup for soldering again, ill pull the EEPROM off and manually program it just on the off chance there is something weird going on with NVFLASH in my specific case, but as mentioned the hardware straps themselves are resistors on the PCB which is worth noting for future experimentation
(because if there is something crucial that does look directly at those straps, the only way deal with that would be to solder in new resistor values etc to change the straps)
but this is getting quite technical and pretty much only relevant for my specific situation where im trying to flash a ROM for a GT 640 onto a GT 740
so to clarify to anyone who is getting a bit confused I still believe that you can flash PC NVIDIA GPUs with MVC ROMs using NVFLASH as long as the card matches the ROM (ie GTX 980 card and GTX 980 ROM) as someone did above with their GTX 980 🙂