• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Radeon HD77xx/78xx/79xx BIOS Editor

Out of curiosity, what exactly is the ASIC, and why is it different across identical GPUs?

I've got 6x MSI TFIII 7950s that I will need to make the same voltage change on. Will I need to dump the BIOS from each one and enter it's ASIC, or can I just do it once and flash the same rom to each of the six cards?
 
its the representation of current leakage...

Efficiency if you will.

A higher ASIC, means less leakage, less voltage needed, less heat, etc.

This is why higher asic oc better on air, and lower ones better under water.

If they all have the same voltage table, and all use the same voltage based on their asic, i would think you should only need to do it once.
 
Last edited:
Out of curiosity, what exactly is the ASIC, and why is it different across identical GPUs?

just "the ASIC" means "GPU", nothing else. The correct term to use is "ASIC Quality", which is a feature on modern GPUs that records the GPU's leakage current in production (how much power it consumes). Each GPU has slightly different electrical properties due to manufacturing differences. This is used to adjust the GPU voltage, higher ASIC quality GPUs need a lower supply voltage to be stable. Lower voltage = lower power consumption
 
So this allows higher voltage to be used than stock? Is that it? I might give it a try.
 
also, can you add the table info back?
Added. I'll add v0.41 later. New version is attached to the first post.

Here you go. (in the attachment)

Thank you!

something wrong with the input box for the asic, i get an exception as well when you press confirm.
Hm, I checked both your BIOSes with different ASICs and everything went smooth. Utility gets the right voltage and signal. Screen is attached. They both have the same volt tables btw.
Which ASICs did u try to enter?
 

Attachments

  • БезымÑнный.jpg
    БезымÑнный.jpg
    165.9 KB · Views: 1,254
Last edited:
could it be a localization issue?

i see you are using "," for decimals..
 
could it be a localization issue?

i see you are using "," for decimals..
You know, I've already thought about it..

Since I have all ASIC's in values like 769/854 and so on (without any splits) in the source table I have to parse the value in text box, split it by "," to get rid of it and convert the entered value to a decimal without any ",".

string[] asictext;
asictext = maskedTextBox1.Text.Split(',');
asictext[0] = asictext[0] + asictext[1];


The text box has a mask "000.0" and a property of culture "ru-Ru" to display "," as a splitter for everyone. But if you have a "." in this place, it will be a problem.

Try the attached build plz, entering a value with "." like on the screen.
 

Attachments

You should rather use

Code:
asictext = maskedTextBox1.Test.Split(System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator);
 
You know, I've already thought about it..

Since I have all ASIC's in values like 769/854 and so on (without any splits) in the source table I have to parse the value in text box, split it by "," to get rid of it and convert the entered value to a decimal without any ",".

string[] asictext;
asictext = maskedTextBox1.Text.Split(',');
asictext[0] = asictext[0] + asictext[1];


The text box has a mask "000.0" and a property of culture "ru-Ru" to display "," as a splitter for everyone. But if you have a "." in this place, it will be a problem.

Try the attached build plz, entering a value with "." like on the screen.

Im at work right not and using a 6xxx, ill try it when i get home.
 
You know, I've already thought about it..

Since I have all ASIC's in values like 769/854 and so on (without any splits) in the source table I have to parse the value in text box, split it by "," to get rid of it and convert the entered value to a decimal without any ",".

string[] asictext;
asictext = maskedTextBox1.Text.Split(',');
asictext[0] = asictext[0] + asictext[1];


The text box has a mask "000.0" and a property of culture "ru-Ru" to display "," as a splitter for everyone. But if you have a "." in this place, it will be a problem.

Try the attached build plz, entering a value with "." like on the screen.

Tried it and it works. However, when I go to actually patch it with 50% power setting, I get an unhandled exception again.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\UsersDrRockerDesktop\_NewBios.rom'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Radeon_HD_7000_BIOS_Editor.BiosRW.writeToFile()
at Radeon_HD_7000_BIOS_Editor.MainForm.btnPatch_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Radeon HD 7000 BIOS Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///F:/Downloads/pwrcolor/Radeon%20HD%207000%20BIOS%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18037 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 
^^ I get the same error
 
You know, I've already thought about it..

Since I have all ASIC's in values like 769/854 and so on (without any splits) in the source table I have to parse the value in text box, split it by "," to get rid of it and convert the entered value to a decimal without any ",".

string[] asictext;
asictext = maskedTextBox1.Text.Split(',');
asictext[0] = asictext[0] + asictext[1];


The text box has a mask "000.0" and a property of culture "ru-Ru" to display "," as a splitter for everyone. But if you have a "." in this place, it will be a problem.

Try the attached build plz, entering a value with "." like on the screen.

tried the attached file, no more error on confirm, but it picks the wrong voltage.

its picking 1110mv, it should be 1170mv. My asic is 83.6

must be a logical operator error in there somewhere.
 
Last edited:
Try the attached build plz, entering a value with "." like on the screen.


I tired this build and the patch seems to be working. Haven't flashed the bios yet, but re-opening the modded rom file shows the changed voltage table.
 
You should rather use

Code:
asictext = maskedTextBox1.Test.Split(System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator);
Thanks. May be a nice solution. Tried it, but I'm getting error about wrong argument for split.

Tried it and it works. However, when I go to actually patch it with 50% power setting, I get an unhandled exception again.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\UsersDrRockerDesktop\_NewBios.rom'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Radeon_HD_7000_BIOS_Editor.BiosRW.writeToFile()
at Radeon_HD_7000_BIOS_Editor.MainForm.btnPatch_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Radeon HD 7000 BIOS Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///F:/Downloads/pwrcolor/Radeon%20HD%207000%20BIOS%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18037 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Do u put the application and bios file in the same dir? If yes - that's the problem, i've wrote about it on previous page. Just put them in different directories. I know about this bug, gonna fix it soon.

Frogger, same as above

tried the attached file, no more error on confirm, but it picks the wrong voltage.

its picking 1110mv, it should be 1170mv. My asic is 83.6

must be a logical operator error in there somewhere.
Well, it picks the voltage right according to the algorithm I wrote. It's completely based on a method written by another men <link>.
It needs to be understood in the following way: if your ASIC chip is less than 76.1% then it is selected VID = 1170mV, and VRM «signal is sent" = 139

If ASIC is less than 84.5% but more than 76.1% of the then VID = 1110mV a "signal" = 129 and so on ...
Your table has two strings:
VID: 1170 mV, Signal: 139, ASIC: 76,1 %
VID: 1110 mV, Signal: 129, ASIC: 84,5 %
According to it 1170mv will be applied if a card has an asic < then 76.1. If it's higher then 76.1 but still < then 84.5 card will pick the second string with 1110 mV. So 83.6 ASIC gives u 1110 mV which utility succesfully detects. I see no errors in logic.
 
Last edited:
Well, it picks the voltage right according to the algorithm I wrote. It's completely based on a method written by another men <link>.

Your table has two strings:
VID: 1170 mV, Signal: 139, ASIC: 76,1 %
VID: 1110 mV, Signal: 129, ASIC: 84,5 %
According to it 1170mv will be applied if a card has an asic < then 76.1. If it's higher then 76.1 but still < then 84.5 card will pick the second string with 1110 mV. So 83.6 ASIC gives u 1110 mV which utility succesfully detects. I see no errors in logic.

umm....my asic is 83.6

it should be 1170, which is what ADL returns (see my post on prior page for ADL readout) , and the table in your program (less than 84.5 should return 1170) , and is what is ACTUALLY used in 3d mode on my card...

Either there seems to be a faulty assumption somewhere, or my bios is messed up.

Since ADL is returning 1170, i have to assume thats what the bios is using, and any changes i make to 1110 will have no effect.
 
Last edited:
I tired this build and the patch seems to be working. Haven't flashed the bios yet, but re-opening the modded rom file shows the changed voltage table.

I successfully flashed the rom with atiflash. Problem is, the voltage changes were ignored. I opened up the rom file in a hex editor and found the area of the voltage table. It appears there is ANOTHER voltage table directly above the one you are editing that my card actually uses. I manually made the changes to that voltage table, and they are successfully being applied.

Not really sure why there's two different voltage tables. Probably some sort of "if" statement in the original code. Something you may want to look into. I've attached my bios (for an MSI TFIII 7950).
 

Attachments

Do u put the application and bios file in the same dir? If yes - that's the problem, i've wrote about it on previous page. Just put them in different directories. I know about this bug, gonna fix it soon.

Doesn't matter what directory or drive it's on, I get the error.
 
I successfully flashed the rom with atiflash. Problem is, the voltage changes were ignored. I opened up the rom file in a hex editor and found the area of the voltage table. It appears there is ANOTHER voltage table directly above the one you are editing that my card actually uses. I manually made the changes to that voltage table, and they are successfully being applied.

Not really sure why there's two different voltage tables. Probably some sort of "if" statement in the original code. Something you may want to look into. I've attached my bios (for an MSI TFIII 7950).

geez, the plot thickens...
 
geez, the plot thickens...

According to one of the original posts (http://people.overclockers.ru/test2013/17571/Sposob_redaktirovaniya_chastot_i_izmenenie_predela_uvelicheniya_chastot_v_bios_AMD_Radeon_HD7_serii.) it seems that my card has this "boost" feature;

1) If you have a card on the Tahiti core with an additional mode Boost, then you have to change for 2 tables, similar to table mode 3D, in its BIOS, there is a table for the Boost mode is edited by the same principle. To find keep going to the top of the file after the 3D table with the same step in 6 bytes. Unfortunately konretno HEX-string to search for it could not be detected.
 
Boys are successful to flash my bios of the GV-R787OC-2GD the ASIC of the card read with gpu-z and 74.8% inserted manual in the bios editor
then I have tried to manually increase the VRM signal to 150 and new voltage 1244mv at last patch the VID. .mi saves the newbios flash all with winflash
to boot the extra-high tension it remains of defaul to 1219mv does not change in no way. .Help me I have not understood to me well which value of asic I must insert in order to increase the tension
what they give bios the publisher to me or that one of gpu-z the tension of default does not change remains always the same one. :confused:
I leave also my bios originates them if someone succeeds to modify it with a tension of 1.244-1.250mv for a greater one overclock.
THANKS


http://i40.tinypic.com/vhv75.png

http://www.mediafire.com/download/758f7ma22gpa805/Origin.rar
 
wut...

google translate strikes again...
 
Hi i got a Sapphire 7870 Boost (the one with a Tahiti LE Chip)i added my bios selected the 7900 series and addedt the asci wich my board has 62.9% . I get this
Referance card : yes
3d voltage 1188mv
Vrm signal 141

What means VRM signal ?I saw if i change that i get higher gpu vcore but i will get much higher VRM temps ?
 
Mine worked (asus 7970 TOP )

But the problem is defalut V is highest voltage :) You can adjust it lower, but when I touch default button, it goes to highest :)

Also we were searching for Asus 7970 TOP series card unlocked bios methods here

http://www.overclock.net/t/1390275/...ssflash-to-matrix-project-and-gen-info-thread


modded bios : befıre 1.170V

LL


just works with Gpu Tweak. with AB and modded trixx doesn't work.

1180 - 1263V
LL
 
Back
Top