Thanks waterwingz for doing all the work on this. The code is now in the trunk, and the 101c port is available from the trunk autobuild. Test builds for other versions are still in this thread.
A few comments:
The loader/generic/compat_table.h from the patch was different from what I got by running make compat-table (PID address 0xfff60040 vs 0xfff20040, and also missing the #elif for encoding 12)
I checked in the newly built version.
There's a comment in notes.txt
value for focus_len_table in stubs_min.S found for 1.01c by memory search - assumed valid for other f/w versions - FIXME?
I think different subs generally have the same value, but this can be verified in dumps with a hex editor.
in platform/lib.c there's a comment on the jogdial functions:
//RotateJogDialRight FIXME : not checked
This can be checked by calling wheel_left() and wheel_right() in lua and verifying they behave the same as the real jogdial.
Cameras that have a ND controllable in the Canon UI should generally define CAM_HAS_NATIVE_ND_FILTER. This causes the propcase to be updated to correctly reflect ND state when ND is overridden.
Some blink code seems to be hooked up in the boot.c files. I would generally disable this kind of thing for stuff that's in the autobuild.
init_required_fw_features can go away completely
stubs_entry.S reports several modes missing from the mode map. There's a few that don't make sense to add to the modemap (like C mode) but if any of them are normal settable modes, they should be added.
The active_bitmap_buffer value in stubs_min.S is different from the sigfinder value. I'd the sigfinder value is incorrect, let me know. The value should toggle between 0 and 1 when the UI updates. It's possible they both work.