FPS_TIMER_A_MIN and FPS_TIMER_B_MIN are the hard limits you are trying to find. Lower values are unsafe, but you need to find how low you can go, so first define it to something like 100. Even with those bogus values, if you start at default FPS, ML should pick default timer values, which are safe. From there, you try to push them until the image breaks.
With the bogus hard limits, there are modes that work just fine, and modes that do not work at all. The safest option would be to never allow overcranking, but then the exact FPS option may not be able to find an exact solution (since it usually overcranks one timer a bit, but "relaxes" the other). So, the best way is to allow a tiny bit of overcranking, but we need to find out how far we can go, and then go back on the safe side a bit.
Current values appear to be tweaked for one particular video mode only (probably 30fps). See
https://docs.google.com/spreadsheet/ccc?key=0AgQ2MOkAZTFHdFFIcFp1d0R5TzVPTVJXOEVyUndteGc#gid=3 for default timer values.
Examples of why the current values are bogus:
- at 25/50 fps, default timer A is 640. Cranking it to 520 sounds a bit too much to me, unless you use NEW_FPS_METHOD.
- at 24fps, default timer B is 2527. Cranking it to 1970 also sounds a bit too much.
- EOS M applies some FPS settings only when you record H.264 (unlike all other cameras), and current hard limit definitions do not consider this.
To see behind ML menu, normally you need to press the LiveView button or the Zoom In button. Do you have any of those on M?
If not, tag the menu entries you want to edit with LiveView visible, with this:
.edit_mode = EM_MANY_VALUES_LV,
Values at 50 fps can't be equal to those at 25. Those are probably in standby mode, where EOS M uses 30 fps, no matter what Canon settings you have.
There are also 30fps and 60fps modes.
Crop mode and 5x zoom are not the same thing. You posted some dumps a while ago, so you already know these modes.