AFAICT, the output pcb that ran the outputs in Daytona is not emulated in model2 emulator. Ramjet, Outrun and I have already created "fake" outputs via reading some other memory locations. I have a few of them hooked up in troubleshooter 2 which will send them directly to the latest version of mamehooker. The ini file in memcfg is fairly self-explanatory if you know what you are doing so if you want, you can add the rest from ramjet's borderless app and you are done. No patching necessary.
The lamps (and coin chutes) are handled by two 7 channel darlington drivers; no cpu doing anything. Also, the IO pcb (which contains those darlingtons) is exactly the same as on Model1 hardware.
The only difference between Virtua Racing / Daytona and the "other" games is the fact that VR and Daytona read the current lamp state before trying to update it. WingWar for example does not, and simply writes there.
For that reason lamp outputs in Virtua Racing didn't work for a long time.
I know the ramjetvr script, however I'd prefer the real thing
The Special Type inputs are going to be based on this?
Yup. currently looks something like
this.
A few sega games seem to do this, I've seen it in mame before. Test mode will often send a totally different range of values to the output memory region than the game itself. As most of these games don't have the output hardware emulated either, I can only assume that the boards either had some sort of two-way communication, or some sort of watchdog is set periodically that's ignored in the test menu.
Actually it is very simple once you figured out how it works
I recently did with Virtua Racing / Virtua Formula and all the custom ---steaming pile of meadow muffin--- (airbag control, hydraulic cabinet etc.).
Now I can feed the game with dip switches on the addon hardware, feed data of the VR pot etc.
Still a long way to go though. Getting the "wheel" feedback working simple enough.
Just as example:
VR (as does daytona, like said, same IO board) sends various commands to 0xC00011 and reads from 0xC0000A.
Now for the catch... there is a "feature select" command that controls what can be read from 0xC0000A.
// vr drive bd commands
// 0x10 = spring (do nothing)
// 0x2x = clutch (0x20 - 0x2f)
// 0x3x = centering (0x30 - 0x3f)
// 0x4x = uncentering (0x40 - 0x4f)
// 0x5x = roll left (0x50 - 0x5f)
// 0x6x = roll right (0x60 - 0x6f)
// 0x8x = feature select - 81 = drive board dip bank 1, 82 = drive board dip bank 2, 83 = drive board wheel pot etc.
the "deluxe" VR has 2 pages of airbag registers (and control).
the virtua formula has 3 pages of hydraulic control.
back to topic. I just want to redirect the lamp control to some other memory location, as the m2emulator masks the "real" location. should not be too complicated