video/voodoo.cpp: VGA passthrough support for Voodoo 1 & 2
Voodoo 1 and 2 fbiInit0 bit 0 drives to external pin vga_pass, required for switching between multiple devices over the same screen. The catch is that this should also swap between who controls the CRT, which sounds like #5801 league.
fbinit3 bit 11 is a read only bit for VGA_PASS reset value.
Known systems requiring this which can be used for :
- pf2012 bootscreen CPLD
- savquest S3 trio64uv
- konami/nwk-tr.cpp
- konami/gticlub.cpp (hangplt)
This doesn't apply to Voodoo Banshee and Voodoo 3, which has their own 3dfx VGA controller sub-device.
Does racingj in nwk-tr.cpp count as well? That game has a tendency to display both CG board tilemap customs during POST which explains why you can't see some text during POST (and in earlier versions when this was displayed as two screens, you could see the missing text on the other screen). Could be an entirely different can of worms if I'm wrong.
Possibly ya, hangplt is another one (where it definitely wants the back layer to be displayed for the cross hatch test in service mode, in place of Voodoo layer being full white there).
Switching who controls screen timings is something MAME really isn’t good at.
The only way I can think of implementing it right now would be to have some member function on the “cooperating” device (i.e. the VGA’s CRTC in this case) like set_controls_crt(bool) where passing false causes it to suspend setting screen timing parameters, and passing true pushes screen parameters immediately if it was previously false and resumes setting screen timing parameters.