Sometimes I surprise myself.
I thought about the fake recoil problem and decided it might be nice to be able to broadcast the trigger/reload positions to mamehooker. I've got to keep track of those values anyway, it's just a matter of sending them over.
The output system already has support for custom functions "swp" and "swd" (steering wheel power and direction respectively) due to the odd way sega racers encode the force feedback values.
In the memcfg these racers have the usually numeric "BitMask" value set to a string like so
BitMask=swp|0|100|101|200
The values are unimportant, but I decided to add to this function the positional data so a entry of
BitMask=pos|shoot1
Will send the status of the player 1 trigger. But normally a output looks up an address... in this case I'm just sending over a value from the ts2 program, so the address entry is in the memcfg is worthless. So what I decided to do is use the address as an optional conditional value. If a memory address is provided, the output can't be set to 1 if the memory address returns a zero value.
So if you take those addresses I mentioned last post that have the bullet count, and plug those into the memory address option, the fake recoil value won't turn on if you are out of bullets! Also since most of the games don't set the bullet value to 6 until the game starts, it won't recoil if you are in the attract mode either!
I tried it out in vcop and it works great. The only hitch (which is intentional due to the analog gun games) is that if you hold down the trigger, the recoil output stays a 1. This is correctable in mamehooker though.
*edit*
I should also mention that none of this is model 2 specific. So it could be used to add recoil to the pc games as well. Recoil on HOTD3 sure would be nice.