I just found out the reason why this happens and how to fix it. The Windows Vista bootloader has a special 'disk signature' at position 000001bc on the disk. This is so that if you move hard drives around, Vista will still boot properly by selecting the disk with this signature. One solution proposed by a site I found was to stop Windows using this:
Code:
BCDEDIT /set {bootmgr} device boot
BCDEDIT /set {default} device boot
BCDEDIT /set {default} osdevice boot
Quickly, I put this into the vista command line, changed my boot partition to snow leopard and installed chameleon, however this still didn't work, windows still complained and when I changed everything back, my recovery partition booted and required the bootloader to be fixed. Then I checked the position of the disk signature, 01bc, and found it on my vista mbr, preceded with zeros. Then, checking the chameleon mbr, I found that this space was also empty. This meant that I could cut chameleon down to size and simply replace 436 bytes of the mbr, instead of 446. When I rebooted, the vista partition still didn't load though, but it turns out that my recovery partition boots into vista for me by default, and booting into it worked
Solution
So, to get vista, 7, etc working, simply get boot0 ready, and use the following to install it:
Code:
sudo dd if=/path/to/boot0 of=/dev/rdisk0 bs=436 count=1
The use any partition software to make sure that only your mac partition is set as bootable, install the rest of chameleon to your mac partition, and boot!
The only problem is that when I boot, since I have to boot from my recovery partition, chameleon shows it as an unidentified hard disk, and i can't boot from the actual windows icon, but I should be able to sort that out. Does anyone know how to hide partition in com.apple.boot.plist, and how to add additional partition type images? The recover partition is type 1c, which isn't associated with anything else, and I'd like to give it the windows icon.