Main > Consoles

Sega Dreamcast Reset-to-Menu function and automating it?

(1/3) > >>

ZTylerDurden717:
I have a Dreamcast in my cab and I love it to death.

One feature I would love to have is a reset-to-menu function if the game is idle for ~5 minutes so that it rolls the intro scenes like a normal cab would after 0 credits.

The Dreamcast has a reset-to-menu function by manually pressing the facebuttons+start at the same time.  I wanted to pick your brain and see if it was possible to somehow automate the reset through some rewiring process (2 player setup).  I was thinking an Arduino could be dropped in there and wired along with the arcade stick pcb with a timer to "press" the buttons, but I'm unsure about added latency and practicality on a 2 player setup.

Do you all remember when Dreamcasts were displayed at game stores (powerstone is what I remember) and they reset by themselves after a certain amount of time?  It'd be something like that except the reset should happen only when idle and not active.

PL1:

--- Quote from: ZTylerDurden717 on April 28, 2022, 09:08:57 am ---I was thinking an Arduino could be dropped in there and wired along with the arcade stick pcb with a timer to "press" the buttons, but I'm unsure about added latency and practicality on a 2 player setup.

--- End quote ---
If the arcade stick PCB is "active low" (ground applied to an input port triggers the output), it should be possible using the approach outlined below.  It shouldn't cause any latency issues.   ;D

Get 5v and ground to power the Arduino from the Dreamcast controller connection.

Wire the Arduino in parallel with your current arcade stick PCB.
- Wire 4 Arduino input ports to the 4 D-Pad input ports on the arcade stick PCB.
- Wire 3 5 Arduino output ports to the facebutton and start input ports on the arcade stick PCB.

The Arduino program loop would be fairly simple:

- Define and initialize the input and output pins.
(Internal input pullup resistors are your friend https://www.arduino.cc/en/Tutorial/DigitalInputPullup and you can use the serial monitor output to troubleshoot/verify your code before you connect the Arduino to the arcade stick PCB)

- Start a more than 5 minute long for/next loop. (The idea is to keep resetting the counter variable before it reaches the end of the loop.)
-- Increment the for/next counter variable.
-- Read the 4 input ports.
-- If any of the 4 ports is logic low (D-pad pressed), reset the counter variable value and resume the for/next loop.
-- If the counter variable value indicates that it has been more than 5 minutes since the D-pad has been pressed, pull the 3 5 outputs low, wait enough miliseconds for the reset to trigger, pull the outputs high again, reset the counter variable value and resume the for/next loop.

Assuming that the reset-to-menu combo doesn't cause problems when you're already in the menu, this approach should work.   :cheers:


Scott
EDIT: You need 5 Arduino outputs for the combo, not 3.

ZTylerDurden717:

--- Quote from: PL1 on April 28, 2022, 11:13:25 am ---
--- Quote from: ZTylerDurden717 on April 28, 2022, 09:08:57 am ---I was thinking an Arduino could be dropped in there and wired along with the arcade stick pcb with a timer to "press" the buttons, but I'm unsure about added latency and practicality on a 2 player setup.

--- End quote ---
If the arcade stick PCB is "active low" (ground applied to an input port triggers the output), it should be possible using the approach outlined below.  It shouldn't cause any latency issues.   ;D

Get 5v and ground to power the Arduino from the Dreamcast controller connection.

Wire the Arduino in parallel with your current arcade stick PCB.
- Wire 4 Arduino input ports to the 4 D-Pad input ports on the arcade stick PCB.
- Wire 3 Arduino output ports to the facebutton and start input ports on the arcade stick PCB.

The Arduino program loop would be fairly simple:

- Define and initialize the input and output pins.
(Internal input pullup resistors are your friend https://www.arduino.cc/en/Tutorial/DigitalInputPullup and you can use the serial monitor output to troubleshoot/verify your code before you connect the Arduino to the arcade stick PCB)

- Start a more than 5 minute long for/next loop. (The idea is to keep resetting the counter variable before it reaches the end of the loop.)
-- Increment the for/next counter variable.
-- Read the 4 input ports.
-- If any of the 4 ports is logic low (D-pad pressed), reset the counter variable value and resume the for/next loop.
-- If the counter variable value indicates that it has been more than 5 minutes since the D-pad has been pressed, pull the 3 outputs low, wait enough miliseconds for the reset to trigger, pull the outputs high again, reset the counter variable value and resume the for/next loop.

Assuming that the reset-to-menu combo doesn't cause problems when you're already in the menu, this approach should work.   :cheers:


Scott

--- End quote ---

Awesome, Scott!  Thank you.  I had to read this like 8 times to make sense of it since I'm not well versed.  It makes sense though and it's encouraging to start on my side.

Let me ask you this as a test case.  If we're playing a beat 'em up 2 player, and I'm out of continues as 1st player while 2nd player keeps going.  What happens after 5 minutes, does the arduino reset the game?  In other words, is your wiring proposal taking into account 2nd player inputs?

PL1:

--- Quote from: ZTylerDurden717 on April 28, 2022, 12:55:33 pm ---If we're playing a beat 'em up 2 player, and I'm out of continues as 1st player while 2nd player keeps going.  What happens after 5 minutes, does the arduino reset the game?  In other words, is your wiring proposal taking into account 2nd player inputs?

--- End quote ---
If there are no P2 inputs wired to the Adruino inputs and P1 doesn't press any buttons wired to the Adruino inputs for 5 minutes, the Arduino will trigger the reset-to-menu combo.

You can wire the Arduino inputs to any non-analog (i.e. not the thumbstick) arcade stick PCB inputs that you want.

As long as you choose button or D-pad inputs that P1 or P2 will press at least every couple of minutes, you will be good to go.   ;D

For more specific advice, it would help to know what encoder PCB(s) you are currently using for your cab.
- PCB(s) connected to arcade-style controls would be the easiest hack.
- Hacking one original controller is probably doable, but a tight fit (no idea if there's enough room) and you would still have the P2 long-play issue you mentioned.
- Hacking two original controllers could be messy because you'd need at least one or two wires running from the P2 controller to the Arduino hidden in the P1 controller.   :banghead:


Scott

ZTylerDurden717:

--- Quote from: PL1 on April 28, 2022, 03:23:46 pm ---You can wire the Arduino inputs to any non-analog (i.e. not the thumbstick) arcade stick PCB inputs that you want.

As long as you choose button or D-pad inputs that P1 or P2 will press at least every couple of minutes, you will be good to go.   ;D


--- End quote ---

Ok, cool!  I've got two MC Cthulhu PCB's (love those things).  You mind double checking I got this right using a basic example?

1) Currently MC Cthulhu Dpad Down input port has one wire coming out of it for 1P and 2P.  They're both going to their respective fight stick down direction on the other end.  Solid.

2) I bring out a new wire for 1P.  One end goes into the Dpad Down input port of the pcb and the other end goes into the arduino input port.  The arcade pcb now has two wires coming out of its Dpad Down input port.

3) Same thing for 2P.  Is the new wire going to the same input port location of where 1P's wire went/is on the Arduino?

Navigation

[0] Message Index

[#] Next page

Go to full version