Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: New Product: SWYM: Star Wars Yoke Mount  (Read 68068 times)

0 Members and 1 Guest are viewing this topic.

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
New Product: SWYM: Star Wars Yoke Mount
« on: April 18, 2014, 02:17:12 pm »
Howdy-

Interest check on new product: SWYM: Star Wars Yoke Mount. Lets you clamp your Star Wars yoke to your control panel (or any desk or table).

Pitches the yoke up at 50 degrees from mounting surface. Original Atari Star Wars arcade game put it at 45 degrees from horizontal. My cabinet's control panel slopes down 10 degrees, putting the yoke at 40 degrees. Clamp it to a desk/table & it's at 50 degrees.

SWYM consists of 2 parts:
1 - Sheet metal box, waterjet, bent, & welded. 4 flush PEM nuts support a RAM Controls USB interface PCB.
2 - Sheet metal waterjet back panel cover snaps in without fasteners.


SWYM design goal was to minimize outer volume, resulting in less material, lower cost, lighter weight, easier storage, & a form that mimics the size/style of the yoke. Therefore, assembly is not for the weak of heart or the impatient. Ease of assembly was compromised in favor of the aforementioned benefits--fortunately, once it's assembled, it's assembled!

I've got some quotes on fabrication: material supply, cutting, bending, & welding, but not finishing ( Rev A prototype powder-coating courtesy of http://carbonraceparts.com/. ). The price drops dramatically as quantities increase, so I'm hesitant to mention prices yet, but expect a USD 3-digit price, with a "1" in the hundreds place.


I want to gauge interest on purchasing this product. I can't get into the yoke/PCB/hardware business. I am offering just the metal mount parts. You supply the yoke, the USB cables, the PCB, the bar clamp, & all the fasteners. My top assembly drawing bill of materials will detail out the hardware as used on my setup, for easy purchase, but you may choose to use alternate fasteners, feet, clamp, cabling, etc.

I know that this is extremely niche, especially given the scarcity of the RAM Controls PCB. I'm open to being commissioned to modify this design somewhat for you, or to a more generic design that may have a wider audience.


Thank you,
-Jason

PS--If you like what you see, hit me up if you wish to hire me for some design & fabrication work.

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #1 on: April 18, 2014, 02:17:24 pm »
More pics

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #2 on: April 18, 2014, 02:17:34 pm »
More more pics
« Last Edit: April 18, 2014, 02:19:33 pm by jasonbar »

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #3 on: April 18, 2014, 04:08:54 pm »
Perhaps the mounts should be spaced for a KADESTICK PCB instead of the SCAM controls PCB.   ;D


Scott

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #4 on: April 18, 2014, 08:44:40 pm »
Fine idea. I went with what I had on hand for my setup, & I had bought a RAM Controls PCB a while back. I'm not au courant on the Kadestick PCB. Is that the standard interface these days?

If so, I'm happy to throw that option in--it looks to be much smaller than the RAM Controls PCB & the whole SWYM design might even be tightened up a little bit more, as I had to scooch the PCB mount back enough so the big fat Molex connector pair where the adapter harness plugs into the RAM PCB wouldn't interfere with the yoke large gear.

So, that's an easy change & can be the new standard if people chime in & there's demand for a run.

Thanks,
-Jason

Xiaou2

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4128
  • Last login:Today at 06:27:38 pm
  • NOM NOM NOM
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #5 on: April 19, 2014, 12:24:59 am »
Im all for innovative solutions...

  But I think there this is a very tough project for a sales run.   

 The problems, besides the possibly limited supply of yoke owners.. that need such a setup:

  - Control panel height, angle, and mounting lip..  etc..  may be completely different than your setup.

 Also, safety and durability concerns:

 1) When a youngster decides to try to hang their full weight from it
 2) Is running from a game of chase... and smashes into it from the side
 3) Possible marring damages to the CP.
 4) Can that single clamp take abusive strain well?  Ive had similar cheap HF clamps like that Shear off the top section.
 5) Can their CP take the abuse from an angered / frusterated adult, if they swing or shake the yoke?

  If I were to design something like this... it would probably either be a hardened metal shaft system..  with 4 locking holes that you drill into the front of the CP.  A release mechanism could be mounted under the CP.

 Another way could be to use two pieces of square pipe..  that side and lock under the CP, using special heavy duty brackets.  Spring lock in place, with a release mechanism lever or button.  Line the edges (and connectors) with rubber strapping & or grommets, for ability to absorb extreme forces, without shearing or damaging the CP.

 Spring loaded trap-door in the front of the CP, could also hide the input hole..  yet still allow for artwork / paint.
In this scenario, the square shaft tube could be slid into the front of the CP, thru the spring door...  And into an internal slide-lock mechanism, thats bolted into the CPs internal bottom.  With enough length, and strong enough pipe.. you could stand on the thing, and it would still be structurally invincible.


Generic Eric

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4520
  • Last login:July 15, 2024, 09:18:25 pm
  • Restore! Don't maim for MAME, build from scratch!
    • forum.arcadecontrols.com/index.php/topic,143226.0.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #6 on: April 19, 2014, 11:11:18 am »
What did I say folks?  Year of Star Wars!   :droid :droid Don't have a cp to use this on.  It's cool to see folks trying things.   

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #7 on: April 19, 2014, 11:55:23 am »
Fine idea. I went with what I had on hand for my setup, & I had bought a RAM Controls PCB a while back. I'm not au courant on the Kadestick PCB. Is that the standard interface these days?

If so, I'm happy to throw that option in--it looks to be much smaller than the RAM Controls PCB & the whole SWYM design might even be tightened up a little bit more, as I had to scooch the PCB mount back enough so the big fat Molex connector pair where the adapter harness plugs into the RAM PCB wouldn't interfere with the yoke large gear.

So, that's an easy change & can be the new standard if people chime in & there's demand for a run.

Thanks,
-Jason

It might be easier to design your mount with a blank piece of plastic for mounting whatever interface people want to use.

In addition to the KADESTICK and SCAM Controls interfaces, other interface options include USB Sidewinder hack, U-HID, U-HID Nano, A-Pac, and the new I-Pac Ultimate I/O.

**Insert standard disclaimer here for not maiming for MAME** -- Twistywrist has the best prices for the molex connector and pins to connect to the yoke harness without hacking it.


Scott

Xiaou2

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4128
  • Last login:Today at 06:27:38 pm
  • NOM NOM NOM
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #8 on: April 19, 2014, 12:42:38 pm »
FYI - Molex connectors are not really meant to be plugged in and out frequently.   They are difficult to do so.. and they are not durable... often having pins bend, and or soldier joints crack, or the wires fall out (when not soldiered into the pins).

 Its also unlikely that people are going to be putting these back into original machines.  Being that many of them have been destroyed or converted, due to the vector monitor crapping out.

 So IMO, hack away.   In fact, you may even want to rewire the entire yoke... due to possible wire sheath cracking, and possible internal wire breakage.  At very minimum, contacts should be cleaned in the handle switches.

 And I also agree, that a universal controller mount, is something that would have more sale potential.  However, that does present a lot more challenge in design... as well as increased costs...   and I think that if you can build an entire cabinet..  is it that difficult to make a mount for your own CP?

 Maybe I overestimate the builders out there...?




Generic Eric

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4520
  • Last login:July 15, 2024, 09:18:25 pm
  • Restore! Don't maim for MAME, build from scratch!
    • forum.arcadecontrols.com/index.php/topic,143226.0.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #9 on: April 19, 2014, 12:57:31 pm »
Fine idea. I went with what I had on hand for my setup, & I had bought a RAM Controls PCB a while back. I'm not au courant on the Kadestick PCB. Is that the standard interface these days?

If so, I'm happy to throw that option in--it looks to be much smaller than the RAM Controls PCB & the whole SWYM design might even be tightened up a ulittle bit more, as I had to scooch the PCB mount back enough so the big fat Molex connector pair where the adapter harness plugs into the RAM PCB wouldn't interfere with the yoke large gear.

So, that's an easy change & can be the new standard if people chime in & there's demand for a run.

Thanks,
-Jason

It might be easier to design your mount with a blank piece of plastic for mounting whatever interface people want to use.

In addition to the KADESTICK and SCAM Controls interfaces, other interface options include USB Sidewinder hack, U-HID, U-HID Nano, A-Pac, and the new I-Pac Ultimate I/O.

**Insert standard disclaimer here for not maiming for MAME** -- Twistywrist has the best prices for the molex connector and pins to connect to the yoke harness without hacking it.


Scott
I second the idea of the universal mount for the pcb

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #10 on: April 19, 2014, 03:02:48 pm »
FYI - Molex connectors are not really meant to be plugged in and out frequently.   They are difficult to do so.. and they are not durable... often having pins bend, and or soldier joints crack, or the wires fall out (when not soldiered into the pins).
Didn't recommend it for frequent plugging and un-plugging -- just reminded people to avoid needlessly hacking the harness when the connector and pins are available for <$2.30 + shipping.

So IMO, hack away.   In fact, you may even want to rewire the entire yoke... due to possible wire sheath cracking, and possible internal wire breakage.
WRONG!!!!   :banghead:

Atari used special wire with a higher strand count (more flexible) than commonly-available wire.

If it ain't verifiably broke, don't "fix" it for the same reason that you shouldn't throw away a good CRT to "upgrade" a cab to an LCD/LED monitor. 

If Atari was still making the harnesses, I would agree with your "hack away" sentiment, but there aren't many NOS harnesses still floating around. (5 or 6 on KLOV in the last few years IIRC)

Unhacked harnesses are very desirable to collectors trying to restore/repair an original SW yoke.

Needlessly hacking the harness removes value and options if/when someone decides to sell their yoke or use it on a dedicated SW/ESB/Jedi machine while they rebuild that machine's yoke.


Scott

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #11 on: April 19, 2014, 06:32:37 pm »
Good points all around, guys. I made this for myself, to my specs, for my needs, & if there are any like-minded folks in the same tiny boat as I, then let me know. I have realistically low expectations for sales on this! :]

Not intended for arcade use. Just for respectful mature adult use, clamped on to any desk/table/CP (you can use the 12" bar clamp version & clamp to pretty much anything that has a bottom face) only when used, not left on, without needing to modify your CP/table at all. Just pretend it's a clamp-on PC steering wheel--same deal.

Thanks,
-Jason

Generic Eric

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4520
  • Last login:July 15, 2024, 09:18:25 pm
  • Restore! Don't maim for MAME, build from scratch!
    • forum.arcadecontrols.com/index.php/topic,143226.0.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #12 on: April 19, 2014, 06:42:30 pm »
I think the visible sides are waiting for some of this treatment.

Malenko

  • KNEEL BEFORE ZODlenko!
  • Trade Count: (+58)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14015
  • Last login:April 05, 2025, 05:48:41 pm
  • Have you played with my GingerBalls?
    • forum.arcadecontrols.com/index.php/topic,142404.msg1475162.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #13 on: April 19, 2014, 06:53:17 pm »
its a niche product in a nicher market.  Id advocate the same premise for mounting Logitech G27s and the like.  If you use the idea, no compensation required :)
If you're replying to a troll you are part of the problem.
I also need to follow this advice. Ignore or report, don't reply.

Xiaou2

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4128
  • Last login:Today at 06:27:38 pm
  • NOM NOM NOM
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #14 on: April 19, 2014, 07:13:34 pm »
Quote
WRONG!!!!   :banghead:

Atari used special wire with a higher strand count (more flexible) than commonly-available wire.

 Are you saying its impossible that the special wire - which is not really as special as you think..  is never capable of breakage after 20+ years?

 Lets just say this...   I used to Manage an Arcade.   One of the games I repaired frequently, was a  Road Riot 4wd.
Its some what similar to the Yoke design.  Its wires were original.   They were thin, and broke every other week.

 I finally got tired of re-repairing them..   and decided to use thicker gauge speaker wire.  I tore out the old wire, and re-wired the entire thing.   Worked like a charm..  and no wires had broke, in the remaining 2yrs I was at that location.

 The wheels spring system was a mess however, and there was constant maintenance on the spring holder clips, from metal grinding wear.   It quickly became my least favorite game, due to the poor mechanical design.  Atari was usually very good about making durable controls.. but this wasnt one of those times.


Quote
If it ain't verifiably broke, don't "fix" it for the same reason that you shouldn't throw away a good CRT to "upgrade" a cab to an LCD/LED monitor.


 Um..  Where did I say anything about tearing out a  CRT / VECTOR  ?   I cant stand LCDs for arcade displays of classics.
This is a wiring harness.  Its nothing special.   And unlike some crazy pinball harness, or unique game harness that would be very difficult to rewire & figure out...  this is none of that.  Its basic switches and pots..  with plenty of manuals and diagrams to easily figure out the wire order - should you somehow get a fresh supply of Vector monitors... and other related parts.


Quote
If Atari was still making the harnesses, I would agree with your "hack away" sentiment, but there aren't many NOS harnesses still floating around. (5 or 6 on KLOV in the last few years IIRC)

Unhacked harnesses are very desirable to collectors trying to restore/repair an original SW yoke.

Needlessly hacking the harness removes value and options if/when someone decides to sell their yoke or use it on a dedicated SW/ESB/Jedi machine while they rebuild that machine's yoke.


 Ok, so I could have said..   Re-wire and sell that harness.   Maybe get 2$  off of ebay for it, after 3 yrs of re-posting.
But I understand your point.   Im a collector Btw.   IMO, there are things that are worth saving.. and maintain and command high dollar value... and then there are things which have no real value to most non-OCD people...


PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #15 on: April 19, 2014, 11:04:00 pm »
Didn't think I had to point this out, Steve, but the corollary to, "if it ain't broke, don't fix it" is "if it is broke, fix it."   :lol

Are you saying its impossible that the special wire - which is not really as special as you think..  is never capable of breakage after 20+ years?
Obviously not, hence "if it ain't broke, don't 'fix' it" instead of "it'll never break, so you'll never need to fix it."  :banghead:

We both know how to select the proper wire for this application, but picture some noob trying to wire a yoke with solid-core doorbell wire.  :duckhunt

Figured I'd leave some hints to nudge them in the right direction if they misunderstood your advice and hacked up a perfectly good harness.   ;D

Um..  Where did I say anything about tearing out a  CRT / VECTOR  ?   I cant stand LCDs for arcade displays of classics.
The point is that if the original hardware is working (not broken), you shouldn't replace it with an inferior substitute -- it appears that we both agree on this concept.   :cheers:

Ok, so I could have said..   Re-wire and sell that harness.   Maybe get 2$  off of ebay for it, after 3 yrs of re-posting.
But I understand your point.   Im a collector Btw.   IMO, there are things that are worth saving.. and maintain and command high dollar value... and then there are things which have no real value to most non-OCD people...
My point was (and still is) that having a functioning, unhacked harness on your yoke increases resale value and usage options over the same yoke with the Molex chopped off.


Scott

pbj

  • Trade Count: (+4)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11038
  • Last login:Today at 08:50:26 pm
  • Obey.
    • The Chris Burke Band
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #16 on: April 19, 2014, 11:16:01 pm »
Lets just say this...   I used to Manage an Arcade.

And he woulda gone pro if it weren't for that bum knee.


jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #17 on: May 01, 2014, 03:10:02 pm »
GONE--THANKS!!!

I have for sale my first prototype. I call this SWYM-10, because it kicks the yoke up at 10 degrees from the mounting surface. Its shape mirrors the yoke housing.

Unfortunately, my control panel slopes down at 10 degrees, so this put the yoke steering axis horizontal to the floor, rather than at the 45-degree angle on the original Star Wars game. This didn't work for me--not ergonomic, difficult to get full +Y travel.

It works a bit better when clamped to a horizontal table/desk surface, especially if you sit low. Or, it could be clamped to a surface that's angled "up" to give you a comfortable angle.

I paid $150 + PEMs for the fab, spray painted it, built it up, tested it, & shelved it.

I'll sell it for $100 shipped to the US, or $120 shipped abroad. This includes only the welded/painted box & the painted back snap-in cover. You need to supply the yoke, the feet, the PCB, the clamp, the cables, the fasteners, etc. I'll give you guidance on what I used.

Thanks,
-Jason
« Last Edit: June 23, 2014, 06:20:21 pm by jasonbar »

Generic Eric

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4520
  • Last login:July 15, 2024, 09:18:25 pm
  • Restore! Don't maim for MAME, build from scratch!
    • forum.arcadecontrols.com/index.php/topic,143226.0.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #18 on: May 01, 2014, 03:29:57 pm »
I wonder if you could diagram a larger tilt mechanism as the base and then mount this or other controllers in it. 

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #19 on: May 01, 2014, 03:33:31 pm »
Capital idea. I already explored it, though.

I was so happy w/ the compactness & aesthetics of this 10-degree version that, when I knew I needed to kick up the angle to make it comfortable, I spent a while racking my brain, trying to figure out how to simply kick it up with a tilt mount.

I didn't come up with anything that was simple, robust, cost effective, & elegant, especially since I wanted to design in some adjustability to make it universal (or at least useful for a variety of angles).

Thanks,
-Jason

lamprey

  • Trade Count: (+3)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 636
  • Last login:January 17, 2019, 07:03:11 pm
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #20 on: May 01, 2014, 04:22:04 pm »
First I just want to say, that is very cool and I think it's awesome you are sharing your idea with the community.

Maybe you should start a poll to gauge interest in this?

I kind of assumed (perhaps wrongly) that people in this hobby that really want a yoke would have it built into their CP or have swappable CPs. Not to project, but that's my plan. :)

Again I think it's a cool idea and if you can sell a few to people and make a couple of bucks, then why not, eh?  :applaud:

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #21 on: July 06, 2014, 04:09:43 pm »
Can't believe I missed this!  I need something like this for my modular panel.   :(    :'(
S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #22 on: July 06, 2014, 11:01:35 pm »
Howdy-

Sorry you missed this earlier. The SWYM-10 prototype did find a good home.

PM me if you want to discuss me making you a new one or sharing with you the source CAD & manufacturing files with you (if you have access to sheet metal, laser cutter/waterjet, press brake, welder, powder coater, press, etc.).

Thanks,
-Jason

PS--nice modular cabinet--I skimmed your site very quickly & I didn't see any pics showing how you store those tons of panel parts, or how you deal with MAME/Windows addressing various controllers so that their IDs stick.

PPS--nice username!
« Last Edit: July 06, 2014, 11:03:37 pm by jasonbar »

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #23 on: July 07, 2014, 12:28:09 pm »
Howdy-

Sorry you missed this earlier. The SWYM-10 prototype did find a good home.

PM me if you want to discuss me making you a new one or sharing with you the source CAD & manufacturing files with you (if you have access to sheet metal, laser cutter/waterjet, press brake, welder, powder coater, press, etc.).

Thanks,
-Jason

PS--nice modular cabinet--I skimmed your site very quickly & I didn't see any pics showing how you store those tons of panel parts, or how you deal with MAME/Windows addressing various controllers so that their IDs stick.

PPS--nice username!

Hi Jason,

I would be interested as I need to come up with a way to hookup my SW yoke (and a paperboy yoke, and at some point a pole position wheel) to my cabinet, ideally it would be something like you've created that I can attach to one of my modules.  I store everything in a big cabinet with drawers (if you scroll to the bottom of the control panel page you can see an example).

I run Linux on my cabinet now, but even with Windows, I've had no issues really with swapping devices as everything goes through the ipac/optipac.
S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #24 on: July 07, 2014, 03:53:01 pm »
PM Sent!

evh347

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 93
  • Last login:July 22, 2022, 04:58:20 pm
  • I want to build my own arcade controls!
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #25 on: April 30, 2019, 10:22:49 am »
duplicate post
« Last Edit: April 30, 2019, 01:22:54 pm by evh347 »

evh347

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 93
  • Last login:July 22, 2022, 04:58:20 pm
  • I want to build my own arcade controls!
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #26 on: April 30, 2019, 10:48:18 am »
Good points all around, guys. I made this for myself, to my specs, for my needs, & if there are any like-minded folks in the same tiny boat as I, then let me know. I have realistically low expectations for sales on this! :]

Not intended for arcade use. Just for respectful mature adult use, clamped on to any desk/table/CP (you can use the 12" bar clamp version & clamp to pretty much anything that has a bottom face) only when used, not left on, without needing to modify your CP/table at all. Just pretend it's a clamp-on PC steering wheel--same deal.

Thanks,
-Jason

I purchased an Alan-1 Star Wars yoke reproduction and I’m in need of a way to mount to my Mame cabinet.

PM sent
« Last Edit: April 30, 2019, 01:23:12 pm by evh347 »

Malenko

  • KNEEL BEFORE ZODlenko!
  • Trade Count: (+58)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14015
  • Last login:April 05, 2025, 05:48:41 pm
  • Have you played with my GingerBalls?
    • forum.arcadecontrols.com/index.php/topic,142404.msg1475162.html
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #27 on: April 30, 2019, 01:02:50 pm »
Congrats to you for bumping a 4 year old thread to announce you sent a private message.
If you're replying to a troll you are part of the problem.
I also need to follow this advice. Ignore or report, don't reply.

Toonout

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 1
  • Last login:January 23, 2025, 01:39:13 am
  • I want to build my own arcade controls!
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #28 on: February 07, 2021, 10:42:18 pm »
This thread is really old but if your still into making these things Glen’s retro show created a Star Wars yoke that myself and 250 other people bought on Kickstarter and is now selling on amazon. It doesn’t come with a mount. There’s a c3d printable option from Wagner’s tech talk but it looks like you could make something way better and metal. There’s no gear shaft hanging out the back so it could be a smaller cleaner mount than what’s going on above.

negative1

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1199
  • Last login:February 08, 2025, 08:27:09 am
  • I want to build my own arcade controls!
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #29 on: February 08, 2021, 10:56:24 am »

jasonbar

  • Trade Count: (+10)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2247
  • Last login:July 30, 2023, 02:52:55 am
  • Dr. Inferno
    • The Infernolab
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #30 on: February 08, 2021, 12:09:36 pm »
That's pretty slick. I hadn't heard of it--I haven't been around here much lately.

If I were to make a production run of my SWYM mounts, I'm pretty sure they'd cost more than the GRS Flight Yoke itself..

Thanks,
-Jason


This thread is really old but if your still into making these things Glen’s retro show created a Star Wars yoke that myself and 250 other people bought on Kickstarter and is now selling on amazon. It doesn’t come with a mount. There’s a c3d printable option from Wagner’s tech talk but it looks like you could make something way better and metal. There’s no gear shaft hanging out the back so it could be a smaller cleaner mount than what’s going on above.

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #31 on: March 31, 2025, 01:56:03 pm »
Crazy necro, but this is a continuation.... I am finally getting around to setting this up.  I sold my original yoke and got an Alan-1 yoke.

Long ago I purchased the welded metal mount from @jasonbar (pics above), but I have a regular (angled down slightly) metal control panel, and the mount is pretty much flat so the yoke would not sit up at an angle.  I didn't take this into consideration when purchasing that.

I've been searching online and have found a few 3d printed things, but they are for the GRS which does not have the protruding gears etc like the original/Alan-1.  I just need something wedge shaped that would angle the mount I already have back 45 degrees or so.

Just looking for ideas on what I could use... or an altogether different idea is OK too.  I'm not married to the metal mount I have.

S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #32 on: April 03, 2025, 03:45:24 pm »
Long ago I purchased the welded metal mount from @jasonbar (pics above), but I have a regular (angled down slightly) metal control panel, and the mount is pretty much flat so the yoke would not sit up at an angle.  I didn't take this into consideration when purchasing that.
It would be fairly easy to make a simple 3d printable wedge-shape if you can make a cardboard prototype for clarity regarding shape, size, connection points/methods, etc.
- With a few pictures and the desired angles and measurements, I can make a custom printable model for you.   ;D

I've been searching online and have found a few 3d printed things, but they are for the GRS which does not have the protruding gears etc like the original/Alan-1.  I just need something wedge shaped that would angle the mount I already have back 45 degrees or so.

Just looking for ideas on what I could use... or an altogether different idea is OK too.  I'm not married to the metal mount I have.
If you're looking for more of a standalone controller and are good at woodworking, you might be able to make something like this.
https://forum.arcadecontrols.com/index.php/topic,123347.msg1310086.html#msg1310086

If you're not-so-good at woodworking, I've been working on a 3d printable SW yoke housing.  The outer shell is mostly done, but it definitely needs supports added because the yoke weighs about 8 pounds, plus all the other stresses added by vigorous gameplay.
- Not sure if the yoke's center of gravity and leverage will cause the housing to tip over too easily.  Worst case scenario, use the four foot screw holes to attach the housing to a board that extends behind the housing and clamp the back of the board to a stable surface or put a weight on it.
- The holes on the back are for a Neutrik USB feedthru.
- The square button holes on the front are for mechanical keyboard switches.
- The OpenSCAD code for the housing is designed so it is fairly easy to customize it with round button holes, embossed art/text labels, etc.


Scott

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #33 on: April 04, 2025, 02:07:59 pm »
Hey PL1, thanks for all that info!

I'm definitely NOT good with woodworking at all.    :lol

Ideally I'd just have some wedge thing that would change the angle of the metal enclosure that I bought from jasonbar, it's very solid and can handle the ALAN-1 yoke just fine.  The enclosure has 4 holes on the bottom corners which could be used for attaching to the wedge, and then I can just attach the wedge to my control panel in the same way (I have a modular panel, so it would just be attaching to what is essentially an aluminum removable plate that attached to my actual control panel).

Here's my cab: https://www.briansturk.com/mame.html
Modular panel pics (for reference): https://www.briansturk.com/mame/controls.html

If you could make some kind of wedge for me to have 3d printed, that would be so awesome as I have no experience with 3d printing at all.
I can definitely take measurements of the enclosure I have, and angle of my control panel etc.

~telengard

Long ago I purchased the welded metal mount from @jasonbar (pics above), but I have a regular (angled down slightly) metal control panel, and the mount is pretty much flat so the yoke would not sit up at an angle.  I didn't take this into consideration when purchasing that.
It would be fairly easy to make a simple 3d printable wedge-shape if you can make a cardboard prototype for clarity regarding shape, size, connection points/methods, etc.
- With a few pictures and the desired angles and measurements, I can make a custom printable model for you.   ;D

I've been searching online and have found a few 3d printed things, but they are for the GRS which does not have the protruding gears etc like the original/Alan-1.  I just need something wedge shaped that would angle the mount I already have back 45 degrees or so.

Just looking for ideas on what I could use... or an altogether different idea is OK too.  I'm not married to the metal mount I have.
If you're looking for more of a standalone controller and are good at woodworking, you might be able to make something like this.
https://forum.arcadecontrols.com/index.php/topic,123347.msg1310086.html#msg1310086

If you're not-so-good at woodworking, I've been working on a 3d printable SW yoke housing.  The outer shell is mostly done, but it definitely needs supports added because the yoke weighs about 8 pounds, plus all the other stresses added by vigorous gameplay.
- Not sure if the yoke's center of gravity and leverage will cause the housing to tip over too easily.  Worst case scenario, use the four foot screw holes to attach the housing to a board that extends behind the housing and clamp the back of the board to a stable surface or put a weight on it.
- The holes on the back are for a Neutrik USB feedthru.
- The square button holes on the front are for mechanical keyboard switches.
- The OpenSCAD code for the housing is designed so it is fairly easy to customize it with round button holes, embossed art/text labels, etc.


Scott
S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #34 on: April 05, 2025, 02:57:59 am »
Ideally I'd just have some wedge thing that would change the angle of the metal enclosure that I bought from jasonbar, it's very solid and can handle the ALAN-1 yoke just fine.  The enclosure has 4 holes on the bottom corners which could be used for attaching to the wedge, and then I can just attach the wedge to my control panel in the same way (I have a modular panel, so it would just be attaching to what is essentially an aluminum removable plate that attached to my actual control panel).
Sounds good.

Here's a WIP wedge design for use with commonly available 1/4" wood or sheet metal screws.
- It is parametric so it is easy to adjust sizes/angles/positions by changing variable values.
- Four screws at the corners to attach the metal enclosure to the wedge. (red)
- Four screws in a diamond configuration to attach the wedge to the aluminum plate. (blue)
- Hollows added to reduce filament needed. (white, purple, green)

Measurements needed:
- Metal yoke mount base X-axis width (HousingBaseX - line 9)
- Metal yoke mount base Y-axis depth (HousingBaseY - line 10)
- Metal yoke mount screw hole center-to-center X-axis distance (HousingBoltX - line 13)
- Metal yoke mount screw hole center-to-center Y-axis distance (HousingBoltY - line 14)
- Front metal yoke mount screw hole center to front edge of housing Y-axis distance (no associated variable, just need to verify proper clearance for the yoke)
- Aluminum plate/base of wedge X-axis width (BasePlateX - line 18)
- Aluminum plate/base of wedge Y-axis depth (BasePlateY - line 19)
- Desired wedge angle (WedgeAngle - line 29)

If you'd like to see and manipulate this in 3d, download OpenSCAD and copy/paste the code below into the code window on the left side of OpenSCAD.

Adjust the variables on lines 9 thru 56.
- All measurement values are in mm.
- Line 29 is in degrees.
- Scale variable values are multiplier values. (used to stretch a cylinder into an oval hollow)
- "//" indicates that the rest of the line is a comment.

Click on the preview icon (3rd from right) to see how the part looks with the current variables.
- Left click and drag in the preview window to rotate the view angle.
- Right click and drag in the preview window to move the view position.
- Scroll wheel while cursor is in the preview window zooms in/out.

WIP Telengard wedge OpenSCAD code
Code: [Select]
// Wedge for mounting metal Star Wars yoke housing by Jasonbar.

// Use 1/4" wood or sheet metal screws.

/////////////////////////////
//  Define the variables
/////////////////////////////

HousingBaseX = 120; // Metal housing mount base X-axis width
HousingBaseY = 160; // Metal housing mount base Y-axis depth

///////////// Rendered in red /////////////
HousingBoltX = 80; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 120; // Metal housing mount bolt hole center-to-center Y-axis distance
HousingBoltXOffset = 0; // Metal housing mount bolt pattern X-axis offset distance from center
HousingBoltYOffset = 0; // Metal housing mount bolt pattern Y-axis offset distance from center

BasePlateX = 130; // Base plate X-axis width
BasePlateY = 170; // Base plate Y-axis depth

///////////// Rendered in blue /////////////
BasePlateBoltX = 70; // Base plate diamond mount bolt pattern X-axis center-to-center distance
BasePlateBoltY = 100; // Base plate diamond mount bolt pattern Y-axis center-to-center distance from center
BasePlateBoltXOffset = 0; // Base plate diamond mount bolt pattern X-axis offset distance from center
BasePlateBoltYOffset = 0; // Base plate diamond mount bolt pattern Y-axis offset distance

FrontDrop = 40; //  Right angle drop height at front of wedge
BackHeight = 10; //  Height at back of wedge
WedgeAngle = 30;  // Wedge angle

RoundoverDia = 10; // Edge roundover diameter

BoltDia = 6.5; // Bolt hole diameter
BoltDepth = 12; // Bolt hole depth

///////////// Rendered in white /////////////
HollowDia = 50; // Center hollow diameter
HollowScaleX = 1; // X-axis scale for HollowDia
HollowScaleY = 1.6; // Y-axis scale for HollowDia
HollowHeight = 200; // Hollow height

///////////// Rendered in purple /////////////
FrontHollowDia = 35; // Front hollow diameter
FrontHollowScaleX = 1; // X-axis scale for FrontHollowDia
FrontHollowScaleY = 1.6; // Y-axis scale for FrontHollowDia
FrontHollowHeight = 60; // Front hollow height
FrontHollowOffsetX = 40; // Front hollow X-axis offset from center hollow
FrontHollowOffsetY = -40; // Front hollow Y-axis offset from center hollow

///////////// Rendered in limegreen /////////////
BackHollowDia = 30; // Back hollow diameter
BackHollowScaleX = 1; // X-axis scale for BackHollowDia
BackHollowScaleY = 1.6; // Y-axis scale for BackHollowDia
BackHollowHeight = 20; // Back hollow height
BackHollowOffsetX = 40; // Back hollow X-axis offset from center hollow
BackHollowOffsetY = 35; // Back hollow Y-axis offset from center hollow

// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.

/////////////////////////////
// Define modules
/////////////////////////////

module SquareHoles(){

translate([-HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front left

translate([HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front rightt

translate([HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back right

translate([-HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back left

} // End SquareHoles module
  //

module DiamondHoles(){

translate([0, -BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front

translate([0, BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back

translate([-BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Left

translate([BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Right

} // End DiamondHoles module
  //

/////////////////////////////
//  Make the part
/////////////////////////////

difference(){

    hull(){

        translate([RoundoverDia/2,RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front left lower corner

        translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front right lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Back right lower corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Back left lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front right drop corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front left drop corner

    } // End hull
//

    color("red")
    translate([BasePlateX/2, BasePlateY - RoundoverDia/2, BackHeight])
    rotate([-WedgeAngle, 0, 0])
    translate([HousingBoltXOffset, HousingBoltYOffset - HousingBaseY/2, RoundoverDia/2])
    SquareHoles(); // Call SquareHoles module

    color("blue")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
    DiamondHoles(); // Call the DiamondHoles module

    color("white")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, HollowHeight/2])
    scale([HollowScaleX, HollowScaleY, 1])
    cylinder (HollowHeight + 0.01, d = HollowDia, center=true); // Center hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset - FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front left hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset + FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front right hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset - BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back left hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset + BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back right hollow

} // End difference
//




Scott
EDIT: Fixed errors in code for spheres.
« Last Edit: April 11, 2025, 03:07:35 am by PL1 »

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #35 on: April 10, 2025, 09:18:54 pm »
Awesome, thanks so much for that!  I'm so excited that I will be able to get this thing going, I've had my cab now for 25 years and have yet to play SW on it.    :applaud:

So, I filled in the variables.  I made HousingBaseX|Y the same as BasePlateX|Y, mostly because I didn't understand the difference.  Taking into account the angle of the mount I have (10 degrees up), and the angle of my control panel (20 degrees down), to get a 45 degree up for the yoke, I put in 55 degrees.  I think that's right?

The bottom has a lip in the Y direction on each side of maybe 1 or 2 mm wide and the same height, so I choise my HousingBaseX to fit between there with a little wiggle room to spare.

Also, I get these warnings, not sure if they are important:

WARNING: variable center not specified as parameter in file sw_yoke.scad, line 125
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 128
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 133
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 138
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 143
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 148

Here are some pics, the wedge seems super steep, but taking into account my control panel angle, it is probably OK.
S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #36 on: April 11, 2025, 02:32:30 am »
1. What values did you plug into the variables from HousingBaseX (line 9) thru BoltDepth (line 34)?
- There are some variable adjustments that will improve the hollows, but I need to know where you're starting from to fine-tune them so they don't punch through the front of the wedge they do in your screencap. 

2. Would you like a drill template for the bottom (blue) screw holes?
- It's mostly just copy/pasting some code from the current model, making a few adjustments, and adding some text to indicate which end of the template goes toward the player.

Awesome, thanks so much for that!  I'm so excited that I will be able to get this thing going, I've had my cab now for 25 years and have yet to play SW on it.    :applaud:
Glad to assist.   :cheers:

So, I filled in the variables.  I made HousingBaseX|Y the same as BasePlateX|Y, mostly because I didn't understand the difference. 
HousingBaseX|Y variables are for the top face of the wedge where it meets the base of the metal yoke housing that Jasonbar made. (the face with red screw holes)

BasePlateX|Y variables are for the bottom face of the wedge where it meets the control panel aluminum plate. (the face with blue screw holes)

Taking into account the angle of the mount I have (10 degrees up), and the angle of my control panel (20 degrees down), to get a 45 degree up for the yoke, I put in 55 degrees.  I think that's right?
It's steeper than I expected, but your math sounds right.
     +55 (wedge angle) = +20 (from control panel to level)  +  +45 (desired angle)  +  -10 (from mount to level)

You might want to check if that wedge angle adds too much height (~6" above the panel?) for good ergonomics.

Also, I get these warnings, not sure if they are important:

WARNING: variable center not specified as parameter in file sw_yoke.scad, line 125
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 128
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 133
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 138
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 143
WARNING: variable center not specified as parameter in file sw_yoke.scad, line 148
Sorry about that.  I'm running an older version of OpenSCAD that doesn't throw those errors, but they don't cause any problems with the model.

To get rid of those messages, delete ", center=true" from the lines mentioned in the error.
 -   Bad code:  sphere (d = RoundoverDia, center=true);
 - Good code:  sphere (d = RoundoverDia);

The "center=true|false" option works for cylinders and cubes.
- The default is "false", but the math in this model needs it to be "true", so don't delete it from the cylinders.
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids

Cylinder center=false (Z-axis increases from starting position [0,0,0])


Cylinder center=true (Z-axis centered on starting position [0,0,0])



Scott
EDIT: Fixed the code for spheres in the earlier post.
« Last Edit: April 11, 2025, 03:11:47 am by PL1 »

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #37 on: April 12, 2025, 02:24:25 pm »
Updated the code to add a tilt angle variable for the center hollow (white) and a drill template with labels.

WIP 2 Telengard wedge OpenSCAD code
Code: [Select]
// Wedge for mounting metal Star Wars yoke housing by Jasonbar.

// Use 1/4" wood or sheet metal screws.

/////////////////////////////
//  Define the variables
/////////////////////////////

HousingBaseX = 120; // Metal housing mount base X-axis width (top face of the wedge)
HousingBaseY = 160; // Metal housing mount base Y-axis depth (top face of the wedge)

///////////// Rendered in red /////////////
HousingBoltX = 80; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 120; // Metal housing mount bolt hole center-to-center Y-axis distance
HousingBoltXOffset = 0; // Metal housing mount bolt pattern X-axis offset distance from center
HousingBoltYOffset = 0; // Metal housing mount bolt pattern Y-axis offset distance from center

BasePlateX = 130; // Base plate X-axis width (bottom face of the wedge)
BasePlateY = 170; // Base plate Y-axis depth (bottom face of the wedge)

///////////// Rendered in blue /////////////
BasePlateBoltX = 70; // Base plate diamond mount bolt pattern X-axis center-to-center distance
BasePlateBoltY = 100; // Base plate diamond mount bolt pattern Y-axis center-to-center distance from center
BasePlateBoltXOffset = 0; // Base plate diamond mount bolt pattern X-axis offset distance from center
BasePlateBoltYOffset = 0; // Base plate diamond mount bolt pattern Y-axis offset distance

FrontDrop = 80; //  Right angle drop height at front of wedge
BackHeight = 10; //  Height at back of wedge
WedgeAngle = 55;  // Wedge angle

RoundoverDia = 10; // Edge roundover diameter

BoltDia = 6.5; // Bolt hole diameter
BoltDepth = 12; // Bolt hole depth

///////////// Rendered in white /////////////
HollowDia = 50; // Center hollow diameter
HollowScaleX = 1; // X-axis scale for HollowDia
HollowScaleY = 1.5; // Y-axis scale for HollowDia
HollowHeight = 200; // Hollow height
HollowAngle = 25; // Hollow angle

///////////// Rendered in purple /////////////
FrontHollowDia = 35; // Front hollow diameter
FrontHollowScaleX = 1; // X-axis scale for FrontHollowDia
FrontHollowScaleY = 1.6; // Y-axis scale for FrontHollowDia
FrontHollowHeight = 100; // Front hollow height
FrontHollowOffsetX = 40; // Front hollow X-axis offset from center hollow
FrontHollowOffsetY = -34; // Front hollow Y-axis offset from center hollow

///////////// Rendered in limegreen /////////////
BackHollowDia = 30; // Back hollow diameter
BackHollowScaleX = 1; // X-axis scale for BackHollowDia
BackHollowScaleY = 1.6; // Y-axis scale for BackHollowDia
BackHollowHeight = 32; // Back hollow height
BackHollowOffsetX = 40; // Back hollow X-axis offset from center hollow
BackHollowOffsetY = 35; // Back hollow Y-axis offset from center hollow

DrillTempThick = 3.1; // Drill template thickness


// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.

/////////////////////////////
// Define modules
/////////////////////////////

module SquareHoles(){

translate([-HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front left

translate([HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front rightt

translate([HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back right

translate([-HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back left

} // End SquareHoles module
  //

module DiamondHoles(){

translate([0, -BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front

translate([0, BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back

translate([-BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Left

translate([BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Right

} // End DiamondHoles module
  //

module Label(letter, size=12) {
        rotate ([0, 0, 0]) {
            color("black")
            linear_extrude(height=DrillTempThick/2 + 0.01, convexity=4)
                text(letter,
                     size=size*22/30,
                     font="Bitstream Vera Sans",
                     halign="center",
                     valign="center");
        }
} // End Label module
  //


/////////////////////////////
//  Make the part
/////////////////////////////

difference(){ // Wedge body minus holes and hollows

    hull(){ // Wedge body

        translate([RoundoverDia/2,RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front left lower corner

        translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front right lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Back right lower corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
        cylinder (RoundoverDia, d = RoundoverDia, center=true); // Back left lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front right drop corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front left drop corner

    } // End wedge body
//

    color("red")
    translate([BasePlateX/2, BasePlateY - RoundoverDia/2, BackHeight])
    rotate([-WedgeAngle, 0, 0])
    translate([HousingBoltXOffset, HousingBoltYOffset - HousingBaseY/2, RoundoverDia/2])
    SquareHoles(); // Call SquareHoles module

    color("blue")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
    DiamondHoles(); // Call the DiamondHoles module

    color("white")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
    rotate([-HollowAngle, 0, 0])
    translate([0, 0, HollowHeight/4])
    scale([HollowScaleX, HollowScaleY, 1])
    cylinder (HollowHeight + 0.01, d = HollowDia, center=true); // Center hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset - FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front left hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset + FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front right hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset - BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back left hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset + BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back right hollow

} // End wedge body minus holes and hollows
  //


translate([-BasePlateX-20, 0, 0]) { // Drill template

    difference(){ // Template base minus drill holes and labels

        hull(){ // Template base

            translate([RoundoverDia/2,RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front left lower corner

            translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front right lower corner

            translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back right lower corner

            translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back left lower corner

        } // End template base
          //

        color("blue")
        translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
        DiamondHoles(); // Call the DiamondHoles module

        translate([BasePlateX/2, BasePlateY/2 + 20, DrillTempThick/2])
        Label("SW Yoke Wedge");  // Call the label module for SW Yoke Wedge

        translate([BasePlateX/2, RoundoverDia, DrillTempThick/2])
        Label("Player");  // Call the label module for Player

        translate([BasePlateX/2, BasePlateY - RoundoverDia, DrillTempThick/2])
        Label("Monitor");  // Call the label module for Monitor

    } // End template base minus drill holes and labels
      //

} // End drill template
  //


Scott

telengard

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 780
  • Last login:Yesterday at 10:25:07 am
  • Yeah, it's a classic! 21+ on BYOAC and still goin
    • S T U R C A D E
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #38 on: April 14, 2025, 08:54:03 pm »
Awesome, thank you!

This looks very good.  The hole pattern on the bottom (that attaches to my cp) doesn't really matter as I'll be attaching everything to an aluminum plate (a module).

One thing I noticed when measuring tonight is I have about 160mm or so of useable Y on the module (it could probably go to 180 if it had to).  The 2 center holes on the bottom seem to be well within that on viewing the "bottom".

I tried making the base smaller than 170mm, but the render got a little weird looking.  It's OK if it takes up the entire Y of the module, I was just futzing around.

I re-measured again just to be sure now that I understand what the parameter names map to, and did this in your updated script.  These were my changes:

HousingBaseX = 125; // Metal housing mount base X-axis width (top face of the wedge)
HousingBaseY = 130; // Metal housing mount base Y-axis depth (top face of the wedge)

HousingBoltX = 86; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 87; // Metal housing mount bolt hole center-to-center Y-axis distance

BasePlateX = 125; // Base plate X-axis width (bottom face of the wedge)
BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge)              <--- this one could be larger, but if it works at this it would be ideal

The angle on the render seems to be > 55, but I'm not really good at gauging this kind stuff.

« Last Edit: April 14, 2025, 08:58:42 pm by telengard »
S T U R C A D E     M.A.M.E. Cabinet
http://www.briansturk.com/mame.html

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9633
  • Last login:Today at 08:49:31 pm
  • Designated spam hunter
Re: New Product: SWYM: Star Wars Yoke Mount
« Reply #39 on: April 15, 2025, 06:04:03 am »
Thanks for those variable values.   :cheers:

BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge)              <--- this one could be larger, but if it works at this it would be ideal
It looks pretty good at 150.
- If you go larger, you'll be adding print time and filament.
- With the original estimates, it was a 2+ day print.

With the latest code below, the wedge by itself is a 125 x 150 x 112.49mm print.
- At 30% infill, it would take about 38 hours 19 minutes and 396 grams of filament on my old printer.  I usually use 30% infill for mechanical prints like this.
- At 20% infill, it would take about 31 hours 53 minutes and 304 grams of filament.  This is the lowest I would recommend.
- At 3% infill, it would take about 20 hours 50 minutes and 147 grams of filament.  A print like this would only be good to verify fit and ergonomics.  The 8 pound SW yoke and gameplay forces would likely crush it.   :scared

----------------------------------------------------

I think we're down to the fine tuning stage with the current code, but it might be worth it to completely change how the part is made (i.e. make the solid outer faces and add a grid of internal walls) to increase the amount of hollow space, improve print speed, and reduce the amount of filament.

If we don't do that complete changeup, we could do some more adjustments to FrontDrop (line 27) and the hollows code to reduce the print volume, but we're almost at the point of diminishing returns.

WIP 3 Telengard wedge OpenSCAD code
- Updated with the provided variables.
- Increased the bottom screw pattern X + Y size to make the wedge slightly more torque resistant.
- Changed RoundoverDia and updated the code so the wedge is 7mm shorter than before.
- Decreased FrontDrop (line 27) so there's less total volume to the print.
- Adjusted the position, size, and angle of the hollows.

Code: [Select]
// Wedge for mounting metal Star Wars yoke housing by Jasonbar.

// Use 1/4" wood or sheet metal screws.

/////////////////////////////
//  Define the variables
/////////////////////////////

HousingBaseX = 125; // Metal housing mount base X-axis width (top face of the wedge)
HousingBaseY = 130; // Metal housing mount base Y-axis depth (top face of the wedge)

///////////// Rendered in red /////////////
HousingBoltX = 86; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 87; // Metal housing mount bolt hole center-to-center Y-axis distance
HousingBoltXOffset = 0; // Metal housing mount bolt pattern X-axis offset distance from center
HousingBoltYOffset = 0; // Metal housing mount bolt pattern Y-axis offset distance from center

BasePlateX = 125; // Base plate X-axis width (bottom face of the wedge)
BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge)

///////////// Rendered in blue /////////////
BasePlateBoltX = 100; // Base plate diamond mount bolt pattern X-axis center-to-center distance
BasePlateBoltY = 120; // Base plate diamond mount bolt pattern Y-axis center-to-center distance from center
BasePlateBoltXOffset = 0; // Base plate diamond mount bolt pattern X-axis offset distance from center
BasePlateBoltYOffset = 0; // Base plate diamond mount bolt pattern Y-axis offset distance

FrontDrop = 70; //  Right angle drop height at front of wedge
BackHeight = 3; //  Height at back of wedge
WedgeAngle = 55;  // Wedge angle

RoundoverDia = 6; // Edge roundover diameter

BoltDia = 6.5; // Bolt hole diameter
BoltDepth = 12; // Bolt hole depth

///////////// Rendered in white /////////////
HollowDia = 50; // Center hollow diameter
HollowScaleX = 1; // X-axis scale for HollowDia
HollowScaleY = 1.5; // Y-axis scale for HollowDia
HollowHeight = 200; // Hollow height
HollowAngle = 30; // Hollow angle

///////////// Rendered in purple /////////////
FrontHollowDia = 35; // Front hollow diameter
FrontHollowScaleX = 1; // X-axis scale for FrontHollowDia
FrontHollowScaleY = 1.6; // Y-axis scale for FrontHollowDia
FrontHollowHeight = 68;  // Front hollow height
FrontHollowOffsetX = 40; // Front hollow X-axis offset from center hollow
FrontHollowOffsetY = -34; // Front hollow Y-axis offset from center hollow

///////////// Rendered in limegreen /////////////
BackHollowDia = 32; // Back hollow diameter
BackHollowScaleX = 1; // X-axis scale for BackHollowDia
BackHollowScaleY = 1.4; // Y-axis scale for BackHollowDia
BackHollowHeight = 35; // Back hollow height
BackHollowOffsetX = 42; // Back hollow X-axis offset from center hollow
BackHollowOffsetY = 28; // Back hollow Y-axis offset from center hollow

DrillTempThick = 3.1; // Drill template thickness


// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.

/////////////////////////////
// Define modules
/////////////////////////////

module SquareHoles(){

translate([-HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front left

translate([HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front rightt

translate([HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back right

translate([-HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back left

} // End SquareHoles module
  //

module DiamondHoles(){

translate([0, -BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front

translate([0, BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back

translate([-BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Left

translate([BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Right

} // End DiamondHoles module
  //

module Label(letter, size=12) {
        rotate ([0, 0, 0]) {
            color("black")
            linear_extrude(height=DrillTempThick/2 + 0.01, convexity=4)
                text(letter,
                     size=size*22/30,
                     font="Bitstream Vera Sans",
                     halign="center",
                     valign="center");
        }
} // End Label module
  //


/////////////////////////////
//  Make the part
/////////////////////////////

difference(){ // Wedge body minus holes and hollows

    hull(){ // Wedge body

        translate([RoundoverDia/2,RoundoverDia/2, RoundoverDia/8])
        cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Front left lower corner

        translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, RoundoverDia/8])
        cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Front right lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/8])
        cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Back right lower corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/8])
        cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Back left lower corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        sphere (d = RoundoverDia); // Back left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top right upper corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, 0])
        sphere (d = RoundoverDia); // Top left upper corner

        translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front right drop corner

        translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
        rotate([-WedgeAngle, 0, 0])
        translate([0, -HousingBaseY, -FrontDrop])
        sphere (d = RoundoverDia); // Front left drop corner

    } // End wedge body
//

    color("red")
    translate([BasePlateX/2, BasePlateY - RoundoverDia/2, BackHeight])
    rotate([-WedgeAngle, 0, 0])
    translate([HousingBoltXOffset, HousingBoltYOffset - HousingBaseY/2, RoundoverDia/2])
    SquareHoles(); // Call SquareHoles module

    color("blue")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
    DiamondHoles(); // Call the DiamondHoles module

    color("white")
    translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
    rotate([-HollowAngle, 0, 0])
    translate([0, 0, HollowHeight/4])
    scale([HollowScaleX, HollowScaleY, 1])
    cylinder (HollowHeight + 0.01, d = HollowDia, center=true); // Center hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset - FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front left hollow

    color("purple")
    translate([BasePlateX/2 + BasePlateBoltXOffset + FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
    scale([FrontHollowScaleX, FrontHollowScaleY, 1])
    cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front right hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset - BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back left hollow

    color("limegreen")
    translate([BasePlateX/2 + BasePlateBoltXOffset + BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
    scale([BackHollowScaleX, BackHollowScaleY, 1])
    cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back right hollow

} // End wedge body minus holes and hollows
  //


translate([-BasePlateX-20, 0, 0]) { // Drill template

    difference(){ // Template base minus drill holes and labels

        hull(){ // Template base

            translate([RoundoverDia/2,RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front left lower corner

            translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front right lower corner

            translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back right lower corner

            translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
            cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back left lower corner

        } // End template base
          //

        color("blue")
        translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
        DiamondHoles(); // Call the DiamondHoles module

        translate([BasePlateX/2, BasePlateY/2 + 20, DrillTempThick/2])
        Label("SW Yoke Wedge");  // Call the label module for SW Yoke Wedge

        translate([BasePlateX/2, RoundoverDia, DrillTempThick/2])
        Label("Player");  // Call the label module for Player

        translate([BasePlateX/2, BasePlateY - RoundoverDia, DrillTempThick/2])
        Label("Monitor");  // Call the label module for Monitor

    } // End template base minus drill holes and labels
      //

} // End drill template
  //


Scott