This is my success story about flashing generic consumer *ATI HD 2600 XT* board to make it works with MacPro 3,1
I did it against three boards:
* Sapphire HD 2600 PRO (DDR3)
* Sapphire HD 2600 (DDR2)
* Asus HD 2600XT
Apple/Mac version of *ATI HD 2600 XT* board and consumer version of board has different SPI ROMs. Consumer board equipped with 64k ROM (25P05 usually) but Mac/Apple version is equipped with 128k (PM25LV010) to store additional EFI rom. You need to install 128k ROM (i used MX25L1005 ic) onto board.
Desolder existing SPI ROM chip from board. Read it with SPI programmer. Upload original VBIOS to new MX25L1005 (for one board i used salvaged PM25LV010 from dead mac ati board). Solder it back. Put into PC and check if it works.
If it works, then use DOS boot (rufus can make DOS bootable USB) and dos version of ATIFLASH.EXE (you can find it at dosdude1's site https://dosdude1.com/files/gpuflashing/atiflash379.zip or link could be found at his videos on youtube) to read VBIOS of current card. Start dos and read VBIOS into file:
Sometimes atiflash dump VBIOS sized file but sometimes it dumps whole ROM content. So i did a *cut* of resulting file.
Check that size against EfiRom.exe :
It outputs:
As seen
is actualy 0xF000 (61440) bytes, so cut it:
Now you need to update Sub Vendor ID to 0x106B ( 0x106B - Apple Computer ), run Radeon Bios Editor and modify:

and save modified VBIOS.
Next step is to compose new VBIOS image from original image you have and EFI code supplied with original Mac/Apple version of *ATI HD 2600 XT*. I had one and i dumped vbios. You can find it at https://www.techpowerup.com/forums/threads/mac-version-ati-radeon-hd-2600-vbios.331543 You can use EFI code from attachment or extract from VBIOS i uploaded at techpowerup:
Lets compose new ROM:
Resulting file will have a size more then 64k. It will contains legacy rom and another rom part that store compressed EFI code:
Put new rom on DOS bottable USB with atiflash. Boot on PC and flash new IC:
Tools you could need:
* EfiRom.exe - https://github.com/tianocore/edk2-BaseTools-win32/blob/master/EfiRom.exe
* UEFIRomExtract.exe - https://github.com/andyvand/UEFIRom...ract_Windows/Release/Win64/UEFIRomExtract.exe
* atiflash - https://dosdude1.com/files/gpuflashing/atiflash379.zip
* RBE_128.exe - https://www.techpowerup.com/download/techpowerup-radeon-bios-editor/
Before buying consumer *ATI HD 2600 XT* board of second-hand-market, ask seller to post GPU-Z screenshot and FurMark screenshot (at least five minutes of running). Otherwise returning post/delivering fee could be higher then a board cost.
I did it against three boards:
* Sapphire HD 2600 PRO (DDR3)
* Sapphire HD 2600 (DDR2)
* Asus HD 2600XT
Apple/Mac version of *ATI HD 2600 XT* board and consumer version of board has different SPI ROMs. Consumer board equipped with 64k ROM (25P05 usually) but Mac/Apple version is equipped with 128k (PM25LV010) to store additional EFI rom. You need to install 128k ROM (i used MX25L1005 ic) onto board.
Desolder existing SPI ROM chip from board. Read it with SPI programmer. Upload original VBIOS to new MX25L1005 (for one board i used salvaged PM25LV010 from dead mac ati board). Solder it back. Put into PC and check if it works.
If it works, then use DOS boot (rufus can make DOS bootable USB) and dos version of ATIFLASH.EXE (you can find it at dosdude1's site https://dosdude1.com/files/gpuflashing/atiflash379.zip or link could be found at his videos on youtube) to read VBIOS of current card. Start dos and read VBIOS into file:
Code:
atiflash -s 0 origin.rom
Sometimes atiflash dump VBIOS sized file but sometimes it dumps whole ROM content. So i did a *cut* of resulting file.
Check that size against EfiRom.exe :
Code:
EfiRom.exe -v -d origin.rom
It outputs:
Code:
EfiRom tool start.
Image 1 -- Offset 0x0
ROM header contents
Signature 0xAA55
PCIR offset 0x01C0
Read PCI data structure from file M25P05.rom
Signature PCIR
Vendor ID 0x1002
Device ID 0x9588
Length 0x0018
Revision 0x0000
DeviceListOffset 0x00
Class Code 0x030000
Image size 0xF000
Code revision: 0x0A3B
MaxRuntimeImageLength 0x00
ConfigUtilityCodeHeaderOffset 0x5441
DMTFCLPEntryPointOffset 0x2049
Indicator 0x80 (last image)
Code type 0x00
EfiRom tool done with return code is 0x0.
Code:
Image size
Code:
dd if=origin.rom of=origin_cut.rom bs=1 count=61440
Now you need to update Sub Vendor ID to 0x106B ( 0x106B - Apple Computer ), run Radeon Bios Editor and modify:

and save modified VBIOS.
Next step is to compose new VBIOS image from original image you have and EFI code supplied with original Mac/Apple version of *ATI HD 2600 XT*. I had one and i dumped vbios. You can find it at https://www.techpowerup.com/forums/threads/mac-version-ati-radeon-hd-2600-vbios.331543 You can use EFI code from attachment or extract from VBIOS i uploaded at techpowerup:
Code:
UEFIRomExtract.exe "113-B14801-027 RV630 GDDR3_16Mx32 128bit 256MB.from_NLE.rom" ATI_Radeon_UGA_Driver_01.00.252.efi
Lets compose new ROM:
Code:
EfiRom.exe -f 0x1002 -i 0x9588 -v -o 2600xt.rom -l 0x030000 -b origin_0x106B.rom -l 0x030000 -ec ATI_Radeon_UGA_Driver_01.00.252.efi
Resulting file will have a size more then 64k. It will contains legacy rom and another rom part that store compressed EFI code:
Code:
EfiRom tool start.
Image 1 -- Offset 0x0
ROM header contents
Signature 0xAA55
PCIR offset 0x01C0
Read PCI data structure from file 2600xt.rom
Signature PCIR
Vendor ID 0x1002
Device ID 0x9588
Length 0x0018
Revision 0x0000
DeviceListOffset 0x00
Class Code 0x030000
Image size 0xF000
Code revision: 0x0A3B
MaxRuntimeImageLength 0x00
ConfigUtilityCodeHeaderOffset 0x5441
DMTFCLPEntryPointOffset 0x2049
Indicator 0x00
Code type 0x00
Image 2 -- Offset 0xF000
ROM header contents
Signature 0xAA55
PCIR offset 0x001C
Read PCI data structure from file 2600xt.rom
Signature PCIR
Vendor ID 0x1002
Device ID 0x9588
Length 0x001C
Revision 0x0003
DeviceListOffset 0x00
Class Code 0x030000
Image size 0x9C00
Code revision: 0x0000
MaxRuntimeImageLength 0x00
ConfigUtilityCodeHeaderOffset 0x00
DMTFCLPEntryPointOffset 0x00
Indicator 0x80 (last image)
Code type 0x03 (EFI image)
EFI ROM header contents
EFI Signature 0x0EF1
Compression Type 0x0001 (compressed)
Machine type 0x0EBC (EBC)
Subsystem 0x000B (EFI boot service driver)
EFI image offset 0x0038 (@0xF038)
EfiRom tool done with return code is 0x0.
Code:
atiflash -p 0 2600xt.rom
Tools you could need:
* EfiRom.exe - https://github.com/tianocore/edk2-BaseTools-win32/blob/master/EfiRom.exe
* UEFIRomExtract.exe - https://github.com/andyvand/UEFIRom...ract_Windows/Release/Win64/UEFIRomExtract.exe
* atiflash - https://dosdude1.com/files/gpuflashing/atiflash379.zip
* RBE_128.exe - https://www.techpowerup.com/download/techpowerup-radeon-bios-editor/
Before buying consumer *ATI HD 2600 XT* board of second-hand-market, ask seller to post GPU-Z screenshot and FurMark screenshot (at least five minutes of running). Otherwise returning post/delivering fee could be higher then a board cost.