[Guide] How I got my GA-970A-D3 Award BIOS successfully modded

Vendor/Name: Gigabyte GA-970A-D3 v1.0
System Type: MB
Chipset/SB: AMD SB950
Inserted BIOS modules: AMD AHCI 3.3.2.0 + F3 bios Realtek LAN ROM v?.??
Success: Yes

My initial issue was that the AHCI rom 3.3.2.0 (AMD_AHCI-ROM_DEV-4391_v3.3.2.0 from AHCI & RAID ROM Modules) was larger than the one in the F13b bios I wanted to modify. I eventually discovered a smaller-sized Realtek LAN ROM in the F3 bios, the combination of which (ahci.BIN and RTEGPXE.LOM) would result in less space used than the default modules (important due to MEMINIT.BIN’s starting offset needing to be identical) which enabled me to mod the BIOS by compensating for the space with a dummy file (in my case, a .BMP).


My method was as follows:

1) Found out starting offsets of ahci.BIN, RTEGPXE.LOM and DBIOS.BMP (DBIOS.BMP so I could find out where RTEGPXE.LOM ended) in the original bios, using HxD. Read about offsets >>here<<; basically, each “file” starts 7 spaces (00h, 01h and 02h - 06h) left of the file’s “name” e.g. ahci.BIN, and ends in 00 right before another “file” starts (this will be relevant further in the guide).

2) Noted the total compressed size of ahci.BIN, RTEGPXE.LOM and DBIOS.BMP in the original BIOS, using CBROM198fixed.exe (summed up using calc.exe in programmer mode hex). In my case, that would be 3A38+75DD+520=B535.

3) Used CBROM198fixed.exe to add (into a test copy of the F13b BIOS) the newer ahci.BIN, older F3 RTEGPXE.LOM, noted their compressed sizes, added that of DBIOS.BMP, and subtracted this sum from the sum of the originals to find out the size I needed to compensate with. 3B0F+71BA+520=B1E9. B535-B1E9=34C.

4) Since I’m not savvy enough to mess with code-filled dummy files, I used AWBMTools to convert DBIOS.BMP into .TIFF, which I then edited with mspaint (LOTS of trial and error) using only the colors found in that file (to preserve the color palette, otherwise CBROM would refuse to handle it), after each edit adding it to the test BIOS using CBROM198fixed.exe (/logo2 DUMMY4.bmp) until its compressed size matched the size I needed in step 3 (34C). I then re-added logo1 DBIOS.BMP (but this could have been anything) so I could find out where DUMMY4.bmp ends in the file (going by DBIOS.BMP’s starting offset, which is easy to identify, as I mentioned earlier). Note that DUMMY4.bmp is an actual .BMP, as I did not convert it back to awbm.

5) I then used HxD to copy (from the test file) the compressed (3.3.2.0) ahci.BIN, (F3 v?.??) RTEGPXE.LOM where they were intially (one after the other), then pasted DUMMY4.bmp between RTEGPXE.LOM and DBIOS.BMP in the final F13b bios (using an unmodded copy, not the test version mentioned previously), such that ahci.BIN started at the original ahci.BIN offset and DUMMY4.bmp ended where the original RTEGPXE.LOM used to end (right before DBIOS.BMP).

6) To fix the checksum-8, I used CBROM198fixed.exe to extract and re-add LOGO Bitmap 2011.BMP which was at the end of the file and more importantly, after the location-sensitive MEMINIT.BIN.

7) Finally, I used AwardTool to verify the BIOS, which I then successfully flashed.


Information used:
Gygabyte GA-880GM-UD2H (rev. 1.3) (5)
[Guide] Award/Phoenix BIOS Modding
[Guide] Enhanced BIOS Modding of Award BIOSes
https://sites.google.com/site/pinczakko/…ring#_7_1_6_6_a

Tools used:
CBROM198fixed.exe from [Guide] Enhanced BIOS Modding of Award BIOSes (2)
AwardTool v1.53 from http://forums.mydigitallife.info/threads…on-Modification
AWBMTools from http://www.blackfiveservices.co.uk/awbmtools.shtml
HxD from https://mh-nexus.de/en/hxd/
mspaint.exe and calc.exe


I’d like to thank Fernando and SummoneR, without whom I could not have done this. I went in knowing nothing, and after around 8 hours over three days I finally managed to succesfully mod the BIOS.

For those interested, I have attached the final modded BIOS.

Original:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
              ********   970AD3.13b BIOS component ********
 
No. Item-Name Original-Size Compressed-Size Original-File-Name
===============================================================================
0. System BIOS 20000h(128.00K) 125DEh(73.47K) 970AD3.BIN
1. XGROUP CODE 0EBE0h(58.97K) 09E1Bh(39.53K) awardext.rom
2. ACPI table 07B35h(30.80K) 0370Ah(13.76K) ACPITBL.BIN
3. GROUP ROM[18] 04670h(17.61K) 02DAAh(11.42K) ggroup.bin
4. GROUP ROM[20] 075F0h(29.48K) 043D1h(16.95K) ffgroup.bin
5. SETUP0 01980h(6.38K) 00ABFh(2.69K) _ITEM.BIN
6. TSEG0 06100h(24.25K) 03990h(14.39K) y2group.bin
7. YGROUP ROM 0EDA0h(59.41K) 0785Eh(30.09K) awardeyt.rom
8. GROUP ROM[22] 0F630h(61.55K) 00D2Eh(3.29K) tgroup.bin
9. GROUP ROM[23] 0F630h(61.55K) 004C4h(1.19K) t1group.bin
10. GROUP ROM[24] 0F630h(61.55K) 00483h(1.13K) t2group.bin
11. GROUP ROM[25] 0F630h(61.55K) 014BFh(5.19K) t3group.bin
12. GROUP ROM[26] 0F630h(61.55K) 0015Ch(0.34K) t4group.bin
13. GROUP ROM[ 0] 083A0h(32.91K) 030C1h(12.19K) _EN_CODE.BIN
14. PCI ROM[A] 10000h(64.00K) 0F3E1h(60.97K) SATARAD5.BIN
15. OEM1 CODE 05800h(22.00K) 05828h(22.04K) MISCRAD5.BIN
16. PCI ROM[B] 06600h(25.50K) 03A38h(14.55K) ahci.BIN
17. PCI ROM[C] 0D000h(52.00K) 075DDh(29.47K) RTEGPXE.LOM
18. LOGO1 ROM 00B64h(2.85K) 00520h(1.28K) DBIOS.BMP
19. OEM5 CODE 01132h(4.30K) 009B0h(2.42K) TPMMPDRV.ROM
20. GROUP ROM[21] 00050h(0.08K) 00078h(0.12K) TCGSMI32.BIN
21. OEM0 CODE 034F6h(13.24K) 02658h(9.59K) SBF.BIN
22. GV3 05223h(20.53K) 022FAh(8.74K) AGESACPU.ROM
23. MINIT 0DD23h(55.28K) 0DD50h(55.33K) MEMINIT.BIN
24. HTINIT 05381h(20.88K) 053AEh(20.92K) HT.DLL
25. 2 PE32 in MB 006BDh(1.68K) 0070Ch(1.76K) HT32GATE.BIN
26. OEM3 CODE 015A0h(5.41K) 00C46h(3.07K) MATSINIT.ROM
27. LOGO BitMap 4B30Ch(300.76K) 10C12h(67.02K) 2011.BMP
(SP) NCPUCODE 03800h(14.00K) 03800h(14.00K) NCPUCODE.BIN
 
Total hole area space = 120000h(1152.00K)
Total compress code space = B3000h(716.00K)
Total compressed code size = 863B6h(536.93K)
Remain compress code space = 2CC6Ah(179.10K)
 
** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
-------------------+--------------------+--------------------+-------------------
01000085 00001040 |
 


Modded:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
              ********   970AD3.13b BIOS component ********
 
No. Item-Name Original-Size Compressed-Size Original-File-Name
===============================================================================
0. System BIOS 20000h(128.00K) 125DEh(73.47K) 970AD3.BIN
1. XGROUP CODE 0EBE0h(58.97K) 09E1Bh(39.53K) awardext.rom
2. ACPI table 07B35h(30.80K) 0370Ah(13.76K) ACPITBL.BIN
3. GROUP ROM[18] 04670h(17.61K) 02DAAh(11.42K) ggroup.bin
4. GROUP ROM[20] 075F0h(29.48K) 043D1h(16.95K) ffgroup.bin
5. SETUP0 01980h(6.38K) 00ABFh(2.69K) _ITEM.BIN
6. TSEG0 06100h(24.25K) 03990h(14.39K) y2group.bin
7. YGROUP ROM 0EDA0h(59.41K) 0785Eh(30.09K) awardeyt.rom
8. GROUP ROM[22] 0F630h(61.55K) 00D2Eh(3.29K) tgroup.bin
9. GROUP ROM[23] 0F630h(61.55K) 004C4h(1.19K) t1group.bin
10. GROUP ROM[24] 0F630h(61.55K) 00483h(1.13K) t2group.bin
11. GROUP ROM[25] 0F630h(61.55K) 014BFh(5.19K) t3group.bin
12. GROUP ROM[26] 0F630h(61.55K) 0015Ch(0.34K) t4group.bin
13. GROUP ROM[ 0] 083A0h(32.91K) 030C1h(12.19K) _EN_CODE.BIN
14. PCI ROM[A] 10000h(64.00K) 0F3E1h(60.97K) SATARAD5.BIN
15. OEM1 CODE 05800h(22.00K) 05828h(22.04K) MISCRAD5.BIN
16. PCI ROM[B] 06800h(26.00K) 03B0Fh(14.76K) ahci.BIN
17. PCI ROM[C] 0C800h(50.00K) 071BAh(28.43K) RTEGPXE.LOM
18. LOGO2 ROM 0195Ch(6.34K) 0034Ch(0.82K) DUMMY4.bmp
19. LOGO1 ROM 00B64h(2.85K) 00520h(1.28K) DBIOS.BMP
20. OEM5 CODE 01132h(4.30K) 009B0h(2.42K) TPMMPDRV.ROM
21. GROUP ROM[21] 00050h(0.08K) 00078h(0.12K) TCGSMI32.BIN
22. OEM0 CODE 034F6h(13.24K) 02658h(9.59K) SBF.BIN
23. GV3 05223h(20.53K) 022FAh(8.74K) AGESACPU.ROM
24. MINIT 0DD23h(55.28K) 0DD50h(55.33K) MEMINIT.BIN
25. HTINIT 05381h(20.88K) 053AEh(20.92K) HT.DLL
26. 2 PE32 in MB 006BDh(1.68K) 0070Ch(1.76K) HT32GATE.BIN
27. OEM3 CODE 015A0h(5.41K) 00C46h(3.07K) MATSINIT.ROM
28. LOGO BitMap 4B30Ch(300.76K) 10C12h(67.02K) 2011.BMP
(SP) NCPUCODE 03800h(14.00K) 03800h(14.00K) NCPUCODE.BIN
 
Total hole area space = 120000h(1152.00K)
Total compress code space = B3000h(716.00K)
Total compressed code size = 863B6h(536.93K)
Remain compress code space = 2CC6Ah(179.10K)
 
** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
-------------------+--------------------+--------------------+-------------------
01000085 00001040 |
 

970AD3.rar (994 KB)

@blackguard :
Welcome at Win-RAID Forum and thank you very much for your interesting report.
It is really admirable how you managed it to get your old Award BIOS updated despite the fact, that the target AHCI ROM module has been above the location sensitive MEMINIT module.
Since your detailed description about how you found, extracted, customized and re-merged the different modules seems to be interesting for other users with a similar problem, it may be a good idea to move this thread into the “BIOS Modding Guides and Problems” Sub-Forum and to give it another (more common) thread title. What do you think about it?
Regards
Dieter (alias Fernando)

The main reason I decided to create an account and post my experience was to save others some grief. If you think that’s where it’ll be more useful to others, please go ahead. I’ll make a few more clarifications in the original post after you’ve moved the thread. Let me know!

@blackguard :
Thanks for having agreed to my proposal and thanks for your willingness to add some details to your guide.
Meanwhile I have moved your guide into this better matching Sub-Forum and customized the thread title. Please feel free to choose any other title.
Additionally I have added a link to this guide into >this< BIOS Modding Success/Failure table.

The title is just fine. I have subscribed to the thread so that I may answer questions others might have, if any.