Main > Main Forum
The whole 8 way as a 4way joystick issue
Druin:
Yeah originally I wasn't going to have 3/4 player layout, I rarely expect even 2 players to be used, but my limitation is based on 2 things...
1 being I want the standard 1 / 2 player dimension cab, which by nature doesn't have much space on the panel when you add the trackball and spinner and extra buttons..
2 being I am planning to go with a modular control insert scheme, where each insert block will likely be the same size, which is 6inches square. So there will be dead space on joystick inserts but 6 button inserts would be just right for width. With 5 of these 6inch inserts, it pretty much maxes out the width of a panel that I'd like to have, and that would give player 1 joystick, buttons, player 2 joystick, buttons, and then trackball in the middle...5 blocks wide.
And presumably I'd have the 8 ways on there. With the modular design of course I could just have a 4way stick insert to stick in when needed, but even with a modular design I would like to minimize the swapping as much as possible.
So on a side note, how do I plan to make interchangeable block modules that are stable to support gameplay? I am still working on my concept but I have some motors with threaded shafts and I am hoping to put a matching nut on each module box, and have a motor in each control panel slot so I drop in the box, activate the motor to pull it in the last bit, and then it's locked plus stable for game play...the shafts seem strong and I can add some degree of restriction with metal plates (wooden panel)
Why all the modules anyway? And why all 6 inches equal size if joysticks don't need that much?
Because I want to be able to take any module and plug it into any slot, and it will auto-recognize what it is based on jumpers on the insert module. So I can just interchange joystick and button inserts to turn right handed into left handed players, and the config jumpers on the inserts would allow me to plug a joystick into anywhere and it's still showing up as player 1, if that's how it's set.
No harnesses to plug and unplug....just a row of pins on the inserts, and a socket on each panel space, so the insert will plug in and out of the socket belonging to that panel slot through the action of the motor pulling or releasing the insert.
Rather than pull out the insert and then fumble harnesses, I just hit the release button, the motor shoots the block up a bit, I grab it and pull it out, done...drop it somewhere else and it still works as configured.
I have to custom design this interface scheme obviously but it's my hobby and I've thought about it for 2 years now so I'm ready to go on it. My cab is going to be weird....but if it all works out, I think everyone will like it.
With that panel setup...I can swap anything, analog spinner/trackball, or digital keyboard buttons/joysticks...if I want a trackball on the far left for some reason (player 1 joystick normally) I just drop the trackball in there and it works as a trackball still.
So I wanted to try to digitally make an 8 way into a 4 way so I can just throw another switch and have it happen rather than swapping the new 4way insert block....I'd like to keep the swapping down to bare necessity like obviously when it's time to play spy hunter or Tron or Xenophobe, I need those inserts, or karate champ, I need to swap the 6button insert for another joystick insert....but if I can convert 8way to 4way electronically...that's what I'll attempt.
To get player 3 and 4 support while maintaining the look of a 2player cab, I will just settle for satellite control panel addons that can be brought up and plugged in when needed, which is not often.
Druin:
--- Quote from: paigeoliver on May 06, 2003, 11:36:52 pm ---
--- Quote from: slug54 on May 06, 2003, 11:32:19 pm ---
--- End quote ---
they would have to open up the panel, find the switch without disturbing the wiring. etc. FORGET THAT.
--- End quote ---
I plan to have any switching mechanisms externally accessible...so noone has to dig inside...it won't be in plain sight, maybe flip down a "control panel" (?) for it...
Maybe a tiny switch near the joystick itself that wouldn't interfere with playing.
It's inconvenient one way or the other to do it but in my mind, having alll those extra controls adds to the enthusiasm of having a custom designed unit to play around with.
It could even be software controlled (but that to me is inconvenient)...pull up a menu and click something and it toggles the circuit via parallel port output. But that would be hard to do if you're already in a game.
Well first step is get the concept validated to begin with
jerryjanis:
I'm thinking that it would be a worthwhile software addition to Mame to set up the 4way joystick processing to work like that.
I realize that it wouldn't work quite as well as your circuit: Do I have this right? Windows is doesn't process keyboard key presses quickly enough to detect minute changes (like whether left or up was pressed first when hitting a diagonal).
Tommy Boy:
I like the idea. Though I agree with the other poster that said this might be better implemeted for the average user as a MAME code change rather than a physical circuit. If you get the logic to work in hardware then it should be pretty easy to copy it in software.
If you can pull it off, this would be a great improvement for big 8-way trigger sticks that aren't compatible with OSCAR restrictor plates. There's been a lot of talk on this board lately about the whole Tron 'stick issue. This could potentially solve that problem.
Good luck! ;)
u_rebelscum:
The problem is 8way sticks do diagonals, and no software or hardware can tell if you're moving from up to left, or if you accidently are pushing up-left when you still want up.
There's only four real solutions: a) get a 4-way, b) get a restrictor plate, c) get an 8-way with small diagonals, d) get an analog stick and add analog-to-4way logic to mame / hardware. A bad solution: become very good at staying straight up or down or left or right, and never hit diagonals.
Mame's source:
/* If joystick is pointing at a diagonal, acknowledge that the player moved
* the joystick by favoring a direction change. This minimizes frustration
* when using a keyboard for input, and maximizes responsiveness.
*
* For example, if you are holding "left" then switch to "up" (where both left
* and up are briefly pressed at the same time), we'll transition immediately
* to "up."
*
* Under the old "sticky" key implentation, "up" wouldn't be triggered until
* left was released.
... code logic ...
/* If we are still pointing at a diagonal, ....
* the player moved the joystick from the idle position directly
* to a diagonal, or from one diagonal directly to an extreme diagonal.
*
* The chances of this happening with a keyboard are slim, but we still need to
* constrain this case.
*
* For now, just resolve randomly.
*/
This logic is fine if you have small diagonals, but if you have pretty big diags, so big you sometimes accidentally hit the diag when you don't want to, this logic can case problems. IE, you're holding up, and slide to mostly-up but hitting-a-"up-left"-diag, mame assumes you're switching from up to left. All of a sudden, you're going left even though you're holding mostly up.
BTW, this logic is exactly what most people discribe when making a hardware logic board that switches 8-way to "be like a 4-way".
Mame used to do it the other way (ie: the direction which was hit first stayed as the "4-way direction" until that direction was stopped being pressed.) But that ran into "to slow" complaints, and was dropped.
BTW, this logic is exactly what others discribe in their hardware logic board that switches 8-way to "be like a 4-way".
So many people complain about both software/hardware ways of simulating 4-ways, some driver writers have said, "screw it, I'll call it an 8way in the driver, and let the user have to use real 4-way hardware" instead of having to listen to all the complaints.
I seriously doubt there is a way to simulate 4way with 8way sticks that works with all 8way sticks and keyboards so well it satisfies most people. They all have been tried.
BTW, that analog solution + hardware logic board can have a switch to a 8 way or 4 way. You could even have it switch between analog, 8way, and 4way logic. Only way if you really want to be able from 8way to 4way on the same stick, besides a restrictor plate of course.
Analog logic:
Send analog signal straight through.
4way logic:
(this is set so if they're push far enough, which ever direction is pushed more is set as the direction. See shown, the 45 degree directions favor up and down over left and right, but it has to be exactly a diagonal. Assuming up and left being negative values on the analog stick. This can also be done in software, too, be currently isn't in mame.)
If |X| > min angle and |X| > |Y|
{
if X is negative {direction = "left"}
else {direction = "right"}
}
else if |Y| > min angle and |Y| >= |X|
{
if Y is negative {direction = "up"
else {direction = "down"}
}
else
direction = "center"
8way logic
(many ways to do this. The following is pretty much how swithes on an 8way do it, assuming up and left being negative values on the analog stick)
If X < min up value, up = true
if X > min down value, down = true
if Y < min left value, left = true
if Y > min right value, right = true