Skip to content

Conversation

@Endprodukt
Copy link
Contributor

Hooks outputs for Thrill Drive, RJ 1+2

@happppp
Copy link
Member

happppp commented Nov 28, 2025

Do you have a better name for this? I assume you copy pasted it from pcbdigit, which are 7segs mounted on the PCB. What do these outputs do, name it after that? If it's 8 separate bits, best separate the outputs too, and if it's 1 thing combined, eg. motor strength (just guessing), you won't need an array, output_finder<> instead.

@Endprodukt
Copy link
Contributor Author

Endprodukt commented Nov 28, 2025

changed name to "wheel" but removing the array will not work. At least for me it wont compile.

it's force feedback outputs for the wheel motor.

@happppp
Copy link
Member

happppp commented Nov 28, 2025

IMO wheel_motor is a better name then. Is it all 8 bits controlling a single thing, or separate bits controlling separate parts of the motor? Or even multiple mechanical elements.

How to do a single output finder:

m_my_output(*this, "abcd")
output_finder<> m_my_output;
m_my_output.resolve();
m_my_output = someval;

@Endprodukt
Copy link
Contributor Author

Thank you very much for explaining. It's very much appreciated as I'm a noob :)

@Hydreigon223
Copy link
Contributor

Hydreigon223 commented Nov 28, 2025

U.S. Konami cabs were known for using a Happ Motor Controller pcb. I'm aware Konami did make their own FFB board too but the protocol remains unchanged from Happ's motor pcb with two added functions. This kind of protocol was used in midnrun, windheat, gticlub, racingj, thrilld, code1d, gticlub2, thrilld2 and xtrial.

The standard protocol consists of a 5-bit port. Bits 0-3 determine the wheel strength and bit 4 determines determines the wheel direction (0 = left, 1 = right). Writing a non-zero value to bits 0-3 enables the motor.

Some Konami games set either bits 5 or 7 depending on the game. Bit 7, used by all Konami games, supposedly enables the motor. Since writing a non-zero value to bits 0-3 also enables the motor, the use for this function is situational. Bit 5, used in mindrun, windheat and gticlub, supposedly centers the motor. While this could have been useful, most newer games don't ever set this bit.

Eventually, this kind of FFB protocol should be made into a device because of maxspeed and ftspeed in dc_atomiswave.cpp utilizing this in addition to the previous Konami games mentioned. Later PC based arcade games way out of MAME's reach like Chase HQ2 and Ford Racing Full Blown would also use this protocol.

Edit, maxspeed and ftspeed would arrange the bits differently with bit 0 assigned to the wheel direction and bits 1-4 assigned to wheel strength.

@happppp
Copy link
Member

happppp commented Nov 29, 2025

Ok, I guess the thing that receives the output can mask the relevant bits.
Out of curiosity, did you try it with any force feedback device? Maybe with this? https://github.com/Endprodukt/FFBArcadePluginMAME

@Endprodukt
Copy link
Contributor Author

of course, what you see there is my version of ffbplugin. works perfectly with ffb wheel.

@happppp happppp changed the title nwk-tr.cpp: Outputs for Thrill Drive, Racing Jam 1/2 nwk-tr.cpp: Wheel FFB outputs for Thrill Drive, Racing Jam 1/2 Nov 30, 2025
@happppp happppp merged commit 15143d6 into mamedev:master Nov 30, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants