!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!                 WARNING               !!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Don't use this tool if you have no way to recover from a 
bad flash! I have tested it, but not every possible BIOS 
patch. A bogus profile entry will either cause the 
patcher to fail, or hose the BIOS file.

Use this software at your own risk.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Thanks to Paul Bartholomew for xbflash, to superfro for 
his BIOS mods, and to k3rn3l and MomDad for ideas, 
info and support. Thanks to SantMat for his ultra-smooth
no-animation patch. To Team Phoenix. Without these people,
XBtool would, at  best, be much less functional than it is,
and, at worst, nonexistent.
============================================================
Extracts, compiles, and patches XBOX BIOS/kernel files.

You'll need to supply your own RC4 key for older BIOSes. If
you are working with a BIOS which works with both the old 
xbox and the "1.1" xbox then you don't need an RC4 key.

The DVD checkbox is used to disable the DVD check so that 
the Xbox will boot with no DVD drive installed. This might 
be useful if your DVD drive is dead.
===========================================================
About the new boot options in 1.0.1

Back-slashes can be used for dashes in subfolders.

X2 BIOSes have 3 partions options and XBtool pools the
space for the dash strings. It'll try to boot the top one
first and then go on to the next one if the dash isn't
found on that partition, then the next... The total space
for dash names depends on how many dash options you use.
There are a total 129 bytes available. However, each dash
option needs 29 bytes for the partition info plus a null
terminator. If you make one option blank you'll gain that
extra 30 bytes for the total dash name pool. There is, of
course, a minimum requirement of one boot partition/dash,
so the longest dash name available would be 99
characters. The first dash option must not be blank.

Evox has two boot partition/dash choices. The second dash
name can be 18 characters long. Dash stings cannot be
pooled in Evox because the stings are not in contigous
space.

I tested using a backslash in the name on an evox dash and
was able to boot a dashboard in a subfolder. I haven't
tested this on an X2 BIOS, but I assume it will work.
XBtool checks the file foldername lengths, but not for
valid characters.
===========================================================
About the BFM packer in 1.0.1

Packs kernels so that they can be used with the Phoenix
loader. I believe they should work using the debug BFM
function also, but I haven't tested this.

This may not work with all BIOSes. I have tested x2 4977,
Evox D.6, and TATX successfully. Complex 4627 Debugv 1.03
failed to load using the Phoenix loader. It might simply
be a matter of finding the correct reainder and 2bl
images.

In order to enable this feature you'll need to place a
config file and two image files named "bfm_remainder.img"
and "bfm_2bl.img" in the "Config\BFM\" folder. You can get
the image files by unpacking a BFM BIOS and renaming its
2bl and remainder images. The config file should be a
debug config named bfm.ini and should contain an RC4 key--
preferably a debug RC4 key. The remainder image used
should be big enough to accomodate your kernel. Debugs
are natively 512k, for example.

The BFM option is only for packing/saving BIOS files. It
has no effect when opening or unpacking. If the BFM packing
option is selected then the config file chosen under BIOS
Type is ignored (when saving/packing).
===========================================================
"Config\More Configs" folder

This folder contains some useful config files. You will
need to enter the proper RC4 key and copy them to the
Config folder to use them.
===========================================================
Things to do:

-Better documentation.

-Some docs for developers
==========================================================
Bug reports to [email protected]

I need good feedback if anyone suspects a bug. Bug reports
like, "Sometimes xbtool makes bad bioses," are not
helpful. If you suspect XBtool made a bad BIOS, reload
that BIOS into XBtool and see if it reads ok. Then note
the settings and include them in your report. If possible,
try to see if the bug is repeatable. I may ask to see a
bad BIOS file, but please don't send any unless I ask. 
==========================================================
History:

1.0.2--

-Detect target ROM size smaller than native remainder.img
 size.

-Ask if boot flags should be patched so kernel can remain
 identical to retail kernel if need be.

-1.0.2 sources released.

1.0.1--

-Fixed Evox D6 patcher.

-If you used the D6 patcher from a previous version and
 get a hang on a black screen press the eject button and
 the Xbox should boot.

1.0.1b5--

-Fixed 4976 patcher as per changes in 1.0.1b4

1.0.1b4--

-Removed kernel expansion due to conflict with IGR
 (reverted back to name pooling).

-Added pack as BFM option.

-Fixed crash which could occur if the wrong config was
 used.

1.0.1b3--

-Removed dash name pooling and just moved dash names by
 expanding the kernel size.

-x2 Dash names can now be up to 128 characters each.

-Dash file/folder name length checking.

--Not thoroughly tested (use at your own risk).

1.0.1b2--

-Fixed: crash on loading x2 4976.*.

1.0.1b1--

-Dash names are pooled (see boot info above).

-------------------------------------------------------------
The flash packing/unpacking code is based on 
Paul Bartholomew's xbflash util.
-------------------------------------------------------------

-NghtShd