The implementation in Gaussian was intended as a modest
generalization of the Becke formula and the B3LYP case, while very
popular it is a little non-standard and makes it less clear.
First, Becke's A parameter is potentially split into two
pieces P2 and P1*P4 allowing ways of balancing the local exchange
and exact exchange which are not possible in Becke's formula.
We implemented and your reading is close. P1 cannot be zero unless
you mean no DFT exchange but it is handy for scaling the
overall DFT exchange but we have implemented B3LYP with as 1.0