I just built a version of the bootloader file that can support either uart1 or uart0 all you have to do is go into the ATmegaBOOT.c file and either leave uart1 defined or comment it out. then compile. I have attached the files. both hex files are available along with the code. To use the bootloaders you will need a reset button (connected to atmega640 reset, and ground) or a method or auto reseting. The arduino method is to tie the dtr line of the ftdi chip to a .1uf cap, then attach the other lead of the cap to the atmega's reset line. This will trigger a reset in software. If you use a button simply press it immediately after pressing upload in the arduino environment. Speaking of which I will post my modified version of that soon. I currently built in defines for all of the pins to where instead of calling a pin# in the pinMode, the digitalWrite, and other functions you can call the pin name.
//G0 represents PG0 or digital pin 41
//to turn on the pin simply use
I did this because my board will have these labels not the arduino pin #s. I also feel this makes the transition to programming in AVR Studio easier, which is one of the premises of my design.