I'd like to add a few tutorials to this thread. The first one I am going to be adding is for BIOS modders (or "aspiring" modders). This tutorial will teach you how to fix a PhoenixTool error message that occurs when repacking the modified TEMPLAT module. PhoenixTool says that the file is "4 bytes too long" or some other number of bytes too large or small even though the TEMPLAT file is EXACTLY the same size as before.
The reason that this issue occurs is compression. When you modify bytes, the entire file must recompress differently. In some cases, the modification will cause the modified file to be bigger when compressed than the original file. Since PhoenixTool does NOT want to change the offsets of the modules, it refuses to repack if the repacked file size is different. The different recompression is also why, when repacked, the modded BIOS image will have a massive number of sequential modified bytes in the place where the TEMPLAT module is in the image.
CREDITS: Yen from MDL taught me about why this happens and how to fix it. I am just converting his tip into a full tutorial for public use.
NOTE: In this tutorial, I will be using my BIOS image (R0070J4) as an example. Here is the link. The file "bios.wph" in the linked archive is a flashable BIOS image. You will only need the unmodified BIOS image ("bios.wph") for this tutorial, but the following 2 files serve as an example. The "TEMPLAT0_mod.ROM" file contains an example of the "spacing" in the offset range 0x686B-0x689D. Notice how I replaced the text with spaces (In hex a space is 20h). Compare this with the "TEMPLAT0.ROM" file (original unmodified TEMPLAT).
NOTE: I will be using HxD Hex Editor in this tutorial as well.
Reproduction of this error:
1.) Perform your modification (such as adding a menu or changing an option, you only need a single byte to reproduce the error) on TEMPLAT0.ROM, but keep the file size EXACTLY the same.
2.) Attempt to repack the image with PhoenixTool.
•No SLIC, no other options checked that will modify the image (no ID replacement, etc.)
•Dynamic style mod (This error also appears with SSV2)
1.) Perform your modification to the TEMPLAT0.ROM file. Make sure the file size stays EXACTLY the same. Copy the modified file to another directory before continuing to the next step (as it will undo your work). The best way to do this is to unpack the image, copy the TEMPLAT module to a nearby directory, mod it from there, and then copy paste it back to the DUMP directory whenever you want to repack the image with PhoenixTool.
2.) Try to repack the image with PhoenixTool. Take note of the error message (specifically how many bytes the file is "too large" or "too small"). This number of bytes will be the approximate number of bytes in the text string to replace with spaces.
3.) Search (plain text) for "PCI SCSI:" or just "PCI". You should come across a text string. In this BIOS, it is "PCI SCSI: LSI MPI Boot Support".
4.) After the "PCI SCSI:" (you could do it before, but this will make it difficult to differentiate the text string from the hex code which you do NOT want to edit), click in some part of the text string in the text column of the hex editor and replace characters with spaces. The number of spaces will be approximately the number of bytes in the error message from step #2.
Example:
If the file was "4 bytes too large," you would turn
Into...
5.) Save this file and copy it back to the DUMP directory for repacking. When repacking, if the file it still "x bytes too long," try replacing x number of bytes in the text string with spaces, then try repacking again.
6.) If the image successfully repacks, check the little log portion of the PhoenixTool window for a message saying that the TEMPLAT module was "x bytes too small." If so, replace x number of spaces with the original text in the text string and repack again.
7.) Perform steps #5 and/or #6 as many times as necessary. For my full(ish) unlock of 3 new parent menus, it took 2 tries.
8.) Congratulations, you now have a modified BIOS!
Be sure to unpack the file to verify that the modules weren't mutilated in the normal repacking process (I do this for ALL BIOS mods, regardless of whether or not the size issue is present). You can test your image in PBE.
NOTE: I will be updating this thread with more examples within the tutorial. If you have any questions or suggestions, feel free to contact me.
~Steven
The reason that this issue occurs is compression. When you modify bytes, the entire file must recompress differently. In some cases, the modification will cause the modified file to be bigger when compressed than the original file. Since PhoenixTool does NOT want to change the offsets of the modules, it refuses to repack if the repacked file size is different. The different recompression is also why, when repacked, the modded BIOS image will have a massive number of sequential modified bytes in the place where the TEMPLAT module is in the image.
CREDITS: Yen from MDL taught me about why this happens and how to fix it. I am just converting his tip into a full tutorial for public use.
NOTE: In this tutorial, I will be using my BIOS image (R0070J4) as an example. Here is the link. The file "bios.wph" in the linked archive is a flashable BIOS image. You will only need the unmodified BIOS image ("bios.wph") for this tutorial, but the following 2 files serve as an example. The "TEMPLAT0_mod.ROM" file contains an example of the "spacing" in the offset range 0x686B-0x689D. Notice how I replaced the text with spaces (In hex a space is 20h). Compare this with the "TEMPLAT0.ROM" file (original unmodified TEMPLAT).
NOTE: I will be using HxD Hex Editor in this tutorial as well.
Reproduction of this error:
1.) Perform your modification (such as adding a menu or changing an option, you only need a single byte to reproduce the error) on TEMPLAT0.ROM, but keep the file size EXACTLY the same.
2.) Attempt to repack the image with PhoenixTool.
•No SLIC, no other options checked that will modify the image (no ID replacement, etc.)
•Dynamic style mod (This error also appears with SSV2)
Instructions
1.) Perform your modification to the TEMPLAT0.ROM file. Make sure the file size stays EXACTLY the same. Copy the modified file to another directory before continuing to the next step (as it will undo your work). The best way to do this is to unpack the image, copy the TEMPLAT module to a nearby directory, mod it from there, and then copy paste it back to the DUMP directory whenever you want to repack the image with PhoenixTool.
2.) Try to repack the image with PhoenixTool. Take note of the error message (specifically how many bytes the file is "too large" or "too small"). This number of bytes will be the approximate number of bytes in the text string to replace with spaces.
3.) Search (plain text) for "PCI SCSI:" or just "PCI". You should come across a text string. In this BIOS, it is "PCI SCSI: LSI MPI Boot Support".
4.) After the "PCI SCSI:" (you could do it before, but this will make it difficult to differentiate the text string from the hex code which you do NOT want to edit), click in some part of the text string in the text column of the hex editor and replace characters with spaces. The number of spaces will be approximately the number of bytes in the error message from step #2.
Example:
If the file was "4 bytes too large," you would turn
Quote:Ã..PCI SCSI: LSI MPI Boot Support.....................
Into...
Quote:Ã..PCI SCSI: ___ _PI Boot Support.....................
Note: In this example, I used 4 underscores, because the site would not let me keep the spaces. In your modification, you would input spaces, not underscores.
5.) Save this file and copy it back to the DUMP directory for repacking. When repacking, if the file it still "x bytes too long," try replacing x number of bytes in the text string with spaces, then try repacking again.
6.) If the image successfully repacks, check the little log portion of the PhoenixTool window for a message saying that the TEMPLAT module was "x bytes too small." If so, replace x number of spaces with the original text in the text string and repack again.
7.) Perform steps #5 and/or #6 as many times as necessary. For my full(ish) unlock of 3 new parent menus, it took 2 tries.
8.) Congratulations, you now have a modified BIOS!
Be sure to unpack the file to verify that the modules weren't mutilated in the normal repacking process (I do this for ALL BIOS mods, regardless of whether or not the size issue is present). You can test your image in PBE.
NOTE: I will be updating this thread with more examples within the tutorial. If you have any questions or suggestions, feel free to contact me.
~Steven
!!!!!PLEASE READ!!!!!! Our Ukrainian friends are undergoing atrocities right now and need support. There are two things you can do for starters:
1.) Donate to one of various organizations offering medical, military, and psychological support to those impacted: Support Organizations
2.) Combat misinformation on social media.
Also, please feel free to PM me if I have not replied again about your BIOS mod request after 5 days.
1.) Donate to one of various organizations offering medical, military, and psychological support to those impacted: Support Organizations
2.) Combat misinformation on social media.
Also, please feel free to PM me if I have not replied again about your BIOS mod request after 5 days.