Actually yes, I was thinking about how to do this without a dyno for a while.
If you look up laminar flame velocity relative to stoich conditions, you can try to match it to a different stoich engine operating condition with identical laminar flame velocity.
For the first, there's all these charts that probably work well enough, read the number off and divide by the stoich value:
http://sro.sussex.ac.uk/id/eprint/79...%20Version.pdf
Then for the second (varying air density at constant lambda), I believe the reaction rate is approximately proportional to density squared, since both oxygen and hydrocarbon concentrations are proportionately reduced. I should probably go read some papers that take into account radical formation and whatever but it's probably good enough as an approximation, since no ECU actually has enough parameters to do this perfectly as the results are similar within a few degrees of timing.
So for example, it looks like at 1.4 lambda, laminar flame velocity is typically between 0.5-0.6x that of stoichiometric for a variety of fuels, so the ignition timing at 0.5 bar should be set to whatever the factory timing was at 0.353-0.387 bar. This actually ignores the effect of residual exhaust gas, scavenging/reversion, resonance, and temperature change from the intake to the valves, but it's probably good enough, since those effects change mixture temperature in the opposite direction as they do concentration of oxygen.
If you just stick to the original ignition timing @ sqrt(0.6)*load you're probably ok for 1.4 lambda.