I'm pretty sure this is what PSXjin actually does:
Two different options (compile time) float or fixed, and two different output paths (run time) 15 or 24 bit (because the PSX backbuffer can be 15 bit or 24 bit)
floating point:
R1 = 1.40200 * Cr
G1 = -.3437 * Cb -.7143 * Cr
B1 = 1.77200 * Cb
fixed point:
R1 = 1.4013671875 * Cr
G1 = -0.3427734375 * Cb -0.7138671875 * Cr
B1 = 1.771484375 * Cb
15 bit:
R = (clip(Y + R1 + 128))>>3
G = (clip(Y + G1 + 128))>>3
B = (clip(Y + B1 + 128))>>3
24 bit:
R = clip(Y + R1 + 128)
G = clip(Y + G1 + 128)
B = clip(Y + B1 + 128)
According to wikipedia, http://en.wikipedia.org/wiki/YUV this is neither rec601 nor rec709, but that in it self doesn't mean it's wrong. Disregard, that page is for limited range.
The only goal of course is to produce exactly what the real MDEC hardware does; standards be damned.
Edit:
FFmpeg's MDEC decoder is here:
http://ffmpeg.org/doxygen/trunk/mdec_8c-source.html
It doesn't handle yuv->rgb internally, instead passing the YUV directly out of the decoder for swscale to handle.
It marks PIX_FMT_YUVJ420P, which is labeling the YUV as compliant to the JFIF standard. Assuming all of that is correct, that would be full range rec601 ("PC.601" in avisynth lingo).
The JFIF standard
http://www.jpeg.org/public/jfif.pdf is exactly what psxjin does, but somehow that's wrong...