# GPU-Z BIOS saving bug?



## darkhmz (Sep 27, 2013)

I've found something really weird while trying to help someone in the vbe7 thread. He used vbe7 to modify his bioses, and made backup of his bioses with gpu-z before modifying them.
One of the modded bioses didnt work, but strangely the stock bios didnt work either. When he opened the suspect stock bios in vbe7 it reported checksum error. Later he posted both stock bioses and i've compared their content. There were two differences, two 256 bytes long blocks filled with zeros, and apart from that they were identical. Then ive downloaded some more hd7000 and hd6000 bioses from the tpu database and tested them. To my surprise i found more bioses with similar problems, including hd6000 bioses too.

Today someone asked for help and posted his stock bios. Ive opened it in vbe7 and it reported checksum error. what the... Opened the file in a hex editor and after a bit searching i have found something strange. Random bytes followed by 256 bytes of zeros then random stuff again. Then i asked the guy to save his bios again and post it on the forum. This time he saved it with atiflash (before he used gpu-z v0.7.3). The two files were different, the difference was the mentioned 256 bytes of zeros. The bios saved with atiflash opened fine in vbe7 without checksum error.

Related posts staring here in the vbe7 thread.

I have attached some comparison pictures and some corrupted files.


----------



## W1zzard (Sep 28, 2013)

Could you link me to such files in our BIOS database? Or how to find them


----------



## darkhmz (Sep 28, 2013)

There you go, few examples below:

0x7500 - 0x75ff (bios charset)
Sapphire.HD6850.1024.101125.rom
Sapphire.HD6850.1024.101125_3.rom

0x1e00 - 0x1eff (part of the rom init function)
Sapphire.HD6850.1024.110620_1.rom
Sapphire.HD6850.1024.110620_3.rom

0x1e00 - 0x1eff (part of the rom init function)
HIS.HD7970.3072.120105.rom
HIS.HD7970.3072.120105_1.rom

0x2800 - 0x28ff
XFX.HD7970.3072.120110.rom
XFX.HD7970.3072.120110_1.rom

Always the same thing, 256 bytes differ. Usually this area is filled with zeros, except the last example, that seems like some random stuff from the memory. And the corrupted file's checksum is invalid.


----------



## W1zzard (Sep 28, 2013)

I added some CRC checking code to the BIOS DB and it returned around 100 BIOSes. I looked at all of them and it seems to be a completely random issue. Ancient cards like HD 2400 are affected just as much as HD 7900. I did see quite a lot HD 6850 BIOSes, but that could be due to the popularity of the card.

I deleted all those invalid files, most of which were never public (I need to approve every BIOS manually because people fail at entering correct data)

Edit: I also noticed that a lot of these BIOSes had "... original BIOS .." mentioned in the comments, which suggests people edited them and wanted to pass them off as original


----------



## darkhmz (Sep 29, 2013)

Thanks, i still found one with invalid checksum though. Downloaded all hd7xxx BIOSes and all seems ok except this one.
Anyway, why does this weird thing happen? Any idea?


----------



## Vario (Sep 29, 2013)

I don't have the 7870, but I do have a solid XFX DD 7850 bios if you need one.


----------



## W1zzard (Sep 29, 2013)

darkhmz said:


> Downloaded all hd7xxx BIOSes and all seems ok except this



I saw that one and left it up because it's the only one I have for this card. So I added the warning text instead.



Vario said:


> I don't have the 7870, but I do have a solid XFX DD 7850 bios if you need one.



Just upload using GPU-Z, it will tell you if it's already in the database. Basically, whenever you get a new card, upload once using GPU-Z, done.



darkhmz said:


> Anyway, why does this weird thing happen?



Not the slightest idea, it looks completely random. 

Problem could be
a) during flash at factory
b) with flash chips
c) reading with GPU-Z
c1) maybe overclocking related
d) handling and transmission to BIOS database

Then there is also a sizable amount of people who modify their BIOS manually and don't fix the checksum


----------

