The video driver used in MegaYume supports many different output formats with different sub-modes.
There are 6 variables to control this:
VIDEO_MODE
selects the broad output typeVIDEO_SUBMODE
selects a sub-variant. Can beSUBMODE_AUTO
to select the default.ANALOG_BASEPIN
determines which pins the analog output is sent to (this must be a multiple of 4)VSYNC_PIN
determines where VSync goes (for modes that have it)DIGITAL_BASEPIN
determines which pins the digital output is sent to (this must be a multiple of 8)DIGITAL_REVERSED
sets if digital TMDS signalling should use reverse pin order
Digital HDMI output with embedded audio. 8 TMDS signals are sent to DIGITAL_BASEPIN
.
HDMI audio packet generation is semi-experimental, please report if it works or doesn't work for you.
Supported submodes are:
SUBMODE_TMDS_640x480
standard 4:3 signal (default)SUBMODE_TMDS_768x480
extra horizontal padding for 16:10 monitorsSUBMODE_TMDS_800x480
extra horizontal padding for certain LCD panelsSUBMODE_TMDS_854x480
extra horizontal padding for 16:9 monitors
(Older versions of NeoYume used to default to 800x480)
Same as MODE_HDMI
, but using plain DVI signalling (no data islands or guard bands)
Same as the the above, but with simultaneous analog output. The analog timing is off-spec, so this is not very useful.
Analog RGB output with separate sync signals. HSync, R, G and B are sent, in that order, to four pins at ANALOG_BASEPIN
. VSync is sent to VSYNC_PIN
.
Supported submodes are SUBMODE_1X
through SUBMODE_3X
, corrosponding to different scaling settings. The default SUBMODE_2X
results in a standard 640x480 signal.
Analog RGB output with composite sync. CSync, R, G and B are sent, in that order, to four pins at ANALOG_BASEPIN
.
Everything else is the same as MODE_VGA
Analog RGB output with Sync-On-Green. R, G and B are sent, in that order, to three pins at ANALOG_BASEPIN
+ 1.
Everything else is the same as MODE_VGA
Analog YPbPr output. Pr, Y and Pb are sent, in that order, to three pins at ANALOG_BASEPIN
+ 1.
This supports the same scaling modes as MODE_VGA
, but additionally allows overriding the color space with SUBMODE_FORCE_REC601
and SUBMODE_FORCE_REC709
. By default Rec. 601 is used for 1X and 2X, Rec. 709 above that.
Analog composite video. This can be sent to any ANALOG_BASEPIN
(does not need to be a multiple of 4).
Supports SUBMODE_NTSC
(default) and SUBMODE_PAL
. The latter is infact PAL60.
Analog S-Video. Luma and Chroma are sent, in that order, to two pins at ANALOG_BASEPIN
.
Everything else is the same as MODE_COMPOSITE
Analog S-Video and composite simultaneously. Luma, Chroma and Composite are sent, in that order, to three pins at ANALOG_BASEPIN
.
Everything else is the same as MODE_COMPOSITE
6-bit digital output for ILI9342-based LCD screen.
TODO
A few Megadrive games (notable: 2-player vs. mode in Sonic 2) use the system's interlaced mode. In modes using native 15kHz timing (except MODE_RGBHV
), this is implemented as real interlacing. In all upscaling modes, this is implemented as "Bob" deinterlacing. MODE_RGBHV
with SUBMODE_1X
currently does not support interlace properly.
Some Megadrive games use "H32 mode", which is 256x224 rather than the more common "H40 mode" (320x224). In all analog output modes, H32 images are stretched out to the same size as H40. In digital modes (HDMI/DVI/LCD6), square pixels are maintained, leading to a "squished" image.