Thanks heaps Nick. I've done that to both but diff doesn't help me as the dump is much larger (it starts at 0) and I really don't know how to use it properly.
Here's a small example: provided the addressing translates and is correct, they are the same:
From the original 'stk500boot_v2_mega2560.hex' (I've skipped the first part because it's repetitive)
3e0e0: 0d 94 1f f3 jmp 0x3e63e ; 0x3e63e
3e0e4: 41 54 subi r20, 0x41 ; 65
3e0e6: 6d 65 ori r22, 0x5D ; 93
3e0e8: 67 61 ori r22, 0x17 ; 23
3e0ea: 32 35 cpi r19, 0x52 ; 82
3e0ec: 36 30 cpi r19, 0x06 ; 6
3e0ee: 00 41 sbci r16, 0x10 ; 16
3e0f0: 72 64 ori r23, 0x42 ; 66
From the dump (again I've skipped the first part because it's repetitive)
e0e0: 0d 94 1f f3 jmp 0x3e63e ; 0x3e63e
e0e4: 41 54 subi r20, 0x41 ; 65
e0e6: 6d 65 ori r22, 0x5D ; 93
e0e8: 67 61 ori r22, 0x17 ; 23
e0ea: 32 35 cpi r19, 0x52 ; 82
e0ec: 36 30 cpi r19, 0x06 ; 6
e0ee: 00 41 sbci r16, 0x10 ; 16
e0f0: 72 64 ori r23, 0x42 ; 66
Note the very different addressing 'e0e4' on the dump and '3e0e4'. Is the bootloader simply in the wrong address because of the crappy USBasp programmer?