src\emu\cpu\upd7725\upd7725.c(349) : warning C4805: '|' : unsafe mix of type 'int' and type 'bool' in operation

I should've known byuu's cutting-edge C++ would run afoul of the "we'd rather you use Visual Basic" compiler ;-)

Does "r = (q << 1) | c ? 1 : 0;" work?

They are trying to force their C# idealism that boolean is not implicitly castable with integers. Even though the C++ spec says that it is.

Three solutions:
r = (q << 1) | (unsigned)c;

My personal favorite:
typedef unsigned int ShutTheFuckUpMicrosoftVisual;
r = (q << 1) | (ShutTheFuckUpMicrosoftVisual)c;

The one you really should do, at the top of upd7725.c:
#pragma warning(disable : 4805)

Warnings are not errors, they are guidelines, and this case, the guideline is wrong. So turn off the guideline to preserve code's intent more clearly without red tape wink