You will probably want to refer frequently to several different cameras. I'd suggest the SX10 101A as one, because it is recent and much of the work was done by ewavr who has a very high level of CHDK knowledge. The a720 is one of the original dryos ports and is very mature, so it's also a useful reference, but some simpler ways of doing things have been used in more recent ports. It is also quite old, so the canon firmware may be less similar.
You will also find that some ports are better documented than others. I suggest S5 101b and my SD990 port as fairly well documented.
I'm not personally a fan of making a copy and then trying to "correct" it (many people disagree with me, and that's OK!) What I did with the SD990 was go through the directory tree of a reference port, and for each file, create the corresponding file in the new port. Within each file I would copy/paste stuff that obviously didn't need changing, but I avoided copying files wholesale. Advantages of doing it this way are:
- Forces you to examine each file.
- Forces you to pay attention to thing's you don't understand. You can still copy/paste and hope it works, but you'll at least have a chance to put a big TODO comment on it.
- Avoids bugs caused by copy/pasting incorrect values. You can still set unknown values to some nonsense to make it compile, but again you are forced to notice they are unknown.
- Makes it easier to use multiple reference firmwares. This is useful because different parts of your port will be closer to different cameras.
Note that by suggesting that you go through each file, I am not saying that you have to make it fully functional before you try to run it. For example, in boot.c you can just put in a comment where the things that start the various customized tasks would go, and start the standard ones instead. You can build this without having completed capt_seq.c or movie_rec.c at all. Then you can progressively add/enable things as you get it booting correctly up to various points. I strongly suggest working this way.