It's interesting how Mame works internally. Basically it obviously emulates all the chipsets that were used by a particular game. Then it 'virtually wires' your real PC inputs to the places were the game ROM expects to find this information.
Beyond that, Mame doesn't get involved - it merely allows the game 'brain' to do what it normally does. That means that Mame doesn't know if the game is in attract mode or not, or even if credits are inserted or a game is started. It doesn't need to know - the game ROM takes care of everything.
That's why at the moment, you have to supply these signals in the text files yourself. However, I'm trying hard to reduce the amount of events you need, and that those you do need are as easy to find as possible. Fewer (easier) events = more people successfully supporting games.
For example, originally I needed 2 custom signals to show that a 1player or 2player game was started (tricky to figure out).
I then realised that I can I find out if a player start button was pressed from Mame. But that doesn't tell me if the game was actually started (the button could be pressed at any time). Mame doesn't know.
But, together with the ATTRACT_MODE on/off message (which is useful for other things too, eg. idle animations), I can figure out that a game was started, and which button started it. I then use the CREDITS counter to handle the flash logic automatically.