The underlying fw function (which delivers both minimum and maximum Av) can be found on a larger set of cameras. Newer DryOS era is the easiest, older models are probably more difficult.
Yeah, I noticed that too, not sure if it's worth finding for ND cameras. It is nice to have identified for analysis. I've been calling it GetUsableAvRange
For ND filter, I think we can get the value directly. I'm still trying to figure out the best way to get it in the sig finder, and what to do with the oddballs
Some notes
All (
or almost all, still need to check verified all have except the M3 and M10) cameras have ReloadNdFilterAdjustment. The underlying function also appears in the jumptable API.
On cameras without an ND, this function is noop (return, return 0, possibly with some veneers)
On cameras with an ND, it sets a pointer in a struct associated with the ND task, which includes a short with the actual ND value. I verified / found this on d10, elph130, elph180 and g7x. The fact that's its associated with adjustment data suggests it may vary per camera.
There are also other functions that get this value in the ND code. On ND-only cameras, GetUsableAvRange ends up calling one of them. There are also functions that get the current ND value (0 if out, ND value if in), which in turn gives a way to get the current ND state.
With the ND value available directly, there's less need for GetUsableAvRange on ND-only cameras.
Some functions I've identified
get_nd_value: returns the APEX96 value of ND. Firmwares often have two identical copies. This value is always available, even in play mode.
elph130
ff3502dc, ff35031c. value @ *(short *)(0xCF48+0x34)
elph180
ffad8eec, ffad8f2c. value @ *(short *)(0xB5B4+0x34)
d10
Code is a bit different, appears to call a zoom related function, but result doesn't seem to depend on zoom
ffa39d2c, ffa39d94 value @*(short *)(0x9918+0x30)
g7x
fc3cf6e4, fc3cf712. value @*(short *)(0x00026c90+0x34)
get_current_nd_value: returns 0 if out, nd value if in. Firmwares have two or more identical (except for assert line numbers) copies. Calls a function that returns 0/1 for ND state.
elph130
ff35027c, ff3502ac, ff3502ec
elph180
ff35027c, ff3502ac, ff3502ec
d10
ffa39d50, ffa39ce8
g7x
fc3cf6a8, fc3cf6ee,
Underlying function called by ReloadNdFilterAdjustment
elph130: ff434d18
elph180: ffbb55fc
d10: ffab52e0
g7x: fc502c4c (code is somewhat different from the others)