After like a hundred requests for the adapters...
HardwareI checked some wiring diagrams and it seems that there are a few common pinouts:
- Model 1/2 (at least Daytona and Virtua Racing seem identical)
- Model 2A/3 (although small differences on the button mapping)
I need to check the details on the 2B and 2C, most likely they are common to either 2A or 3
That means I should be able to design an "interface" board that can be put into any Sega Model-X Racer.
Also someone noted that the "newer" Sega Racers might work too, although with some slight modifications (MIDI and/or RS-442 serial instead of 8bit parallel)
FirmwareI've tinkered around with the arduino part, and most likely will replace them with teensy2++ sooner or later.
For the time being I developed a new firmware for the MEGAs that works as plain usb gamepad (like unojoy does) - it features only the controls provided by the daytona (4* axis with full 10bit resolution, 24* buttons) AND is able to receive lamps and drive commands via usb itself.
I call it Daytona USB
* 4 axis = X (A0 - Wheel), Y (fixed value), Z (A1 - Gas), Z-Rot (A2 - Brake)
* 24 Buttons
= 1-8 -> VR1, VR2, VR3, VR4, START, SERVICE, TEST, COIN
= 9-16 -> SHIFT0, SHIFT1, SHIFT2, GEAR1, GEAR2, GEAR3, GEAR4, NEUTRAL
= 17-24 -> future use (like RX port on the I/O-Board)
Mapping for Button 9-16 will most likely change in the future, as there is no actual need to have both SHIFT- and GEAR- Inputs - And we are currently missing the "special inputs" (EX.START, EMERGENCY, COURSE0, COURSE1).
I plan to add some "dip switch" style options (initial values on hardware, overridable via software).
- Currently implemented is a "Shifter Decoder" Toggle - If turned ON, the SHIFT inputs (Buttons 9-11) are always off, and the shifter gets decoded to the individual gears (Button 12-16)
[WingWar uses the shifter lines for the fire buttons]
- "alternate axis layout" switch: For cabinets like WingWar it would be better to use X (A0), Y (A1), Z (A2) and RZ (fix value), as many "non arcade" flight simulators have trouble mapping axis correctly.
- "sequencial shifter" switch: For cabinets like Indy 500, to shift up and down in Daytona
- "sequencial views" switch: For cabinets like Indy 500 (or even Sega Rally) with less than 4 view buttons.
SoftwareBecause of "Daytona USB" the software side is getting smaller (and simpler) - No more need for a virtual joystick driver - Just plug in the USB cord and you're done.
The "Driver"-App is starting to become obsolete:
- the old version (serial and vJoy) has been updated to fix some weird "invalid handle" errors
- the new version (USB) will be merged into the "Feedback"-App soon.
The "Feedback"-App will be extended:
- currently still needs a seperate driver app.
- I've added support for SuperModel (svn 274 x86 only*) featuring both Dayonta2 (BotE / PE) as well as SCUD (Australia / Export) and SCUD Plus.
- user-configurable command translator -> Currently the App will translate anything to a reduced** Dayonta / Indy500 command set.
- games to be added: Hard Drivin (just found the drive board controls *yeah*)
- ability to switch the "dip switch" settings on the "Daytona USB" board depending on running game.
* as the app is (for now) written in 32bit VB6, I cannot read the process modules of a 64bit application, which I need to calculate the offsets.
**(I kill the 0x90-0x9F commands, as they don't work on an Indy 500 drive board; used by Daytona USA for the moving seats)
Other stuffAs far as I know there are only two common motor setups used for the Sega Racers:
- "clutched" AC-Motor (Virtua Racing, Daytona USA, Sega Rally)
- "direct" AC-Motor (Indy 500 and later)
It seems the "clutched" setup uses springs to center the wheel by itself while the "direct" setup does center by software.
The command (group) 0x10 (to 0x1F) is used to "let the spring do it's job" - which gets done in software on a setup without spring.
Now the games designed for the "spring" setup only know one "force" while the games designed for the "no spring" setup have up to 16 different - which I cannot reproduce on a "spring" setup (I'll just let the spring do it's job, no matter what).
Are there any other motor setups I need to take care of?