holy crap I think I've got it... Or at least I've gotten it enough to be playable.
in src\drivers\miidyunit.c
at the function "static WRITE16_HANDLER( term2_sound_w )" immediately after the first "{" add the following monstrosity of code:
------------------------------------------------------------
if ( ((data & 2048) != 2048) and ((data & 1024) == 1024 ) )
{
output_set_value("Left_Flash_1", (data & 1)/1 );
output_set_value("Left_Flash_2", (data & 2)/2 );
output_set_value("Left_Flash_3", (data & 4)/4 );
output_set_value("Left_Flash_4", (data &
/8 );
output_set_value("Right_Flash_1", (data & 16)/16 );
output_set_value("Right_Flash_2", (data & 32)/32 );
output_set_value("Right_Flash_3", (data & 64)/64 );
output_set_value("Right_Flash_4", (data & 128)/128 );
}
if ( ((data & 2048) == 2048) and ((data & 1024) != 1024 ) )
{
if (((data & 16) == 16) and ((data & 32) == 32) and ((data & 64) == 64) and ((data & 128) == 128) and ((data & 1) == 1) and ((data & 2) != 2))
{
output_set_value("Left_Gun_Recoil", 1 );
}
else
{
output_set_value("Left_Gun_Recoil", 0 );
}
if (((data & 16) == 16) and ((data & 32) == 32) and ((data & 64) == 64) and ((data & 128) == 128) and ((data & 2) == 2) and ((data & 1) != 1))
{
output_set_value("Right_Gun_Recoil", 1 );
}
else
{
output_set_value("Right_Gun_Recoil", 0 );
}
if (((data & 16) == 16) and ((data & 32) != 32) and ((data & 64) == 64) and ((data & 128) == 128))
{
output_set_value("Left_Gun_Green_Led", 1 );
}
else
{
output_set_value("Left_Gun_Green_Led", 0 );
}
if (((data & 16) != 16) and ((data & 32) == 32) and ((data & 64) == 64) and ((data & 128) == 128))
{
output_set_value("Left_Gun_Red_Led", 1 );
}
else
{
output_set_value("Left_Gun_Red_Led", 0 );
}
if (((data & 16) == 16) and ((data & 32) == 32) and ((data & 64) == 64) and ((data & 128) != 128))
{
output_set_value("Right_Gun_Green_Led", 1 );
}
else
{
output_set_value("Right_Gun_Green_Led", 0 );
}
if (((data & 16) == 16) and ((data & 32) == 32) and ((data & 64) != 64) and ((data & 128) == 128))
{
output_set_value("Right_Gun_Red_Led", 1 );
}
else
{
output_set_value("Right_Gun_Red_Led", 0 );
}
}
--------------------------------------------------------------------------
I don't think I have it 100% right as sometimes the recoil seems to slow or be a little un-responsive, but it is as far as I can go with it. I'll clean up my code and send it to mamedev within the week. I can say this, the problem is NOT with the improper bit-address(es). I NEVER get a false mis-fire now. The problem is I think my conditions are a tad too strict, and every once in a while a fire gets missed, but as I said, this is as far as I can go without hardware schematics, the actual hardware to send data to, ect....
On a side note, how do you like my output names?? I couldn't decide on a propr standardization, so I simply took the text that appears in the "driver board test" menu. I pretty much had to use these names as I was debugging because it became too confusing to keep track otherwise. I think this might be the way I need to do revX as well. As for operation wolf and thunderbolt, they don't have a debug menu, so we can name them whatever we deem appropriate.