Wednesday, November 22, 2017

VIDEO UPDATE + The ControlBlock Switch

  • Wiped the SD card and reinstalled the latest RetroPie OS.
  • Installed the ControlBlock Service.
  • Discovered the RESET switch I have wired to control power is not going to function as-is. The power switch is meant to be an on-off toggle, not a momentary switch.
  1. Resolve the switch issue.
  2. Build the custom arcade controllers.
  3. Get the Teensy keyboard code working.
  4. Reinstall the keyboard port.
  5. Load additional ROMs (look into MAME etc.).
UPDATE re: power switch -

After thinking about it a bit, I realized by far the easiest solution is to install small toggle switch on the back.  But I won't be deterred from my desire to use the keyboard.  Thus, I'll be doing something like this:

Check eBay and sure enough, there's a sub-$5 Chinese circuit for that.

This is also an interesting and super simple circuit, though it requires 2 switches:

Tuesday, November 21, 2017

Controllers & ControlBlock update

The ControlBlock provides 16 GPIO extended inputs for each of 2 players. To use all of these, I needed a 17 pin connector (16 inputs + ground).  After playing with the 15 pin HD DSUB15 connector, I decided that was too complicated and was going to break.  So I settled on the RJ45 socket - 2 of them superglued together into a pair.  That yields 16 pins & 15 switches.  I may reduce it to 14, and instead bring a +5V line into each controller, to light switches, etc.

The connectors are inexpensive (less than $1 ea.) and easy to "punch down".  Ethernet cable is practically free.  The best thing is if a cable has an issue or you need a longer pair, just replace them, cheap.

I had to cut out the joystick holes quite a bit and, as you can see, cut and glued the case plastic.  They're held in place with SuperGlue gel.  Works very well.

I followed the color code "A" printed on the sockets.  Then I figured out, L-R looking at the front of the RJ45 socket with the pins on the bottom, what the order of the wires were - and mapped these to the ControlBlock, starting with the ground wire (brown on the left socket) all the way to B (white-green on the right socket).

I skipped "start" on controller 2, as unfortunately the screw does not tighten.  I think it's missing an internal nut.  Rather than take it all apart and replace the terminal strip, I am hoping that I can simply remap "8" to "start".  Probably don't even need "start" on the 2nd controller.

This wiring scheme is before I considered feeding +5V (for lights, etc.).  So I will likely redo this a bit.  Just a bit.

The idea now is that if I want a simple controller with 4 directions, start, select, and fire (7 functions), I can use just the left RJ45 port on each.  If I want complex arcade controls (up to 14 functions) or +5V, then I can opt to use both ports with no internal rewiring or need to remap via software.

I decided to let my boys do their first soldering project and make their own arcade controllers.  I'm going to get them each a briefcase to act as a lap controller, then a big joystick and illuminated buttons, a panel mount RJ45 socket.  Should be fun.

Tuesday, November 14, 2017

VIDEO UPDATE: Status of the project

Almost done with the build!  Here's an overview and demo of the power switch and LED.  To-do list:

  • Modify & compile the keyboard code on the Teensy 2.0.
  • Install the 4 RJ45 jacks for the 2 arcade game style controllers.
  • Install & compile the PowerBlock code on the Raspberry Pi.
  • Finally, build the controllers.
I suppose I should say, "almost done with the build ... of the Atari case."  There's still much to do!

Raspberry Pi Pinout

Posting this here because I'm always having to go look for it.

Monday, November 13, 2017

Controller Ports To Be Standard RJ45 Ethernet

OK! I found a solution for the controller ports that is not too difficult nor expensive.

I ordered 10 of these from eBay for $8 shipped.  2 of these glued together is 16 pins, which works out to 15 switches and a ground.  So, only "giving up" 1 potential switch in each controller.  No custom cables to build or maintain.  Just cheap Ethernet cables.

2 Ethernet cables for each controller.  I'll likely band them together with heat shrink tubing or something similar, to make 1 cable going to each controller.

Controllers Ports Headache

Alas, now that I determined the epoxy is soft and not adhering well, I confirmed I was able to dislodge the DSUB-15 male connectors I'd intended to use for controller ports.

So I peeled it all off and set the ports I'd soldered aside.

Got me to thinking maybe I could use a high-grade monitor cable and then secure that with screws.  I was (briefly) excited when I verified ALL the pins had connection all the way through.  I thought I recalled that SVGA cables use some subset of the 16 available pins (15 + shield).

Well, I was right.  It's 13 (12 + shield).  The 3 "extra" I'd been seeing connected (pins 6, 7, & 8) are indeed connected - TO THE SHIELD.  Alas.

So now I'm back to reinstalling my 15/16 connector ports (15 + shield).  Technically, I need 17 if I want to use every last possible control pin from the ControlBlock.  That may be unnecessary, as what game requires that many?  But I hate to limit it from the get-go.

So I'm still looking for something that will fit those controller holes and carries 17 or more connectors.

Friday, November 10, 2017

Keyboard & ControlBlock update

Keyboard adapter: 

I added wires for 3 pins from the Atari keyboard:
  • 18 is common ground for the power LED and the 4 keys RESET, OPTION, SELECT, & START.
  • 23 is the RESET key.
  • 24 is the LED (+5V).


These will go to the ControlBlock (which arrived, BTW, some time ago!). They will provide a power switch and status indicator for the Raspberry Pi!  Pretty cool.  See the video.

The ControlBlock has its own power socket (mini-USB), so I had to make another hole.  I've 2 holes now I can patch.  The way it works, power is fed to the CB, which then routes it to the Pi.  I haven't checked the Pi 3 or later boards to see if they finally resolved the lack of a power switch.

As you can see from the labeling on the CB, it's arranged with 2 controllers in mind - and quite a few functions for each!  Each of these will run to the joystick ports, where there will be 15 pin connectors.  I'm debating redoing those connectors with pre-fab ribbon connectors or something that may hold up to wear better.  Now that I've seen that the epoxy does not hold very well, I can see them popping off.

Audio redo

The sound quality of the stereo speakers, freed of their cases, was disappointing.  I examined adding baffling behind them, but the bulk created space issues.

ALSO - one of the speakers popped off the case, despite being secured with epoxy.  Came to discover the epoxy rather easily came off the plastic everywhere.  So I removed it from the Pi and audio amp standoffs and replaced it with cyanoacrylate (Super Glue).  Seems to be holding.

I had this old mono speaker module from a discarded laptop. I knew I'd use it one day. It's actually bass-reflex design, with a port! Really sounds nice. So I rewired the audio amp to bridge the stereo output to mono, removed the unnecessary on-off switch, and replaced the audio-in plug with a right-angle version from some dead headphones.  That way it won't stick-out too much when plugged into the Pi.  I debated rewiring the Pi to send it internal, but external allows the port to be used for A/V also (it has a composite out, I think).

Wednesday, November 1, 2017

UPDATE: My boys and I have been using this from time to time. I've yet to install the control block or build the controllers. I believe I'll get back to this project soon.

Wednesday, December 30, 2015

Awaiting the Control Block ...

Finished the soldering and mounted the controller ports. Turns out there were 80 (!) wires in the cable - 40 data and 40 ground in twisted pairs. I removed the ground wires and after connecting 30 wires, 10 remain for repairs.

Tuesday, December 29, 2015

Custom Arcade Controllers

While we have used the USB SNES like controllers the past week, I've been ruminating on better and more accurate controllers for a more enjoyable gameplay.

I ordered a RetroPie Control Block, which is on back order. Apparently, they had some mix up with the batch that was recently delivered. That board attaches to the GPIO header and will control the power to the Pi as well as break-out two arcade controllers.

I needed to find a high-density and robust connector to interface the external arcade controllers to the Control Block.  The CB provides 2 channels of 16 switches - requiring 17 pins (16 switches and a ground).  The best compromise I found was to use a 15 pin D-SUB connector, familiar to most of us as the standard VGA connector.  That provides 14 switches for each controller (14 switch and 1 ground pin).  Theoretically, I could use the shield of the connector as a 15th connector, but that's not good practice.

The nice thing here is that the connectors will fit perfectly in the holes for the 2 Atari joystick ports.  Those are 9 pin D-SUB connectors, the same physical size as the 15 pin ones.  It will also allow some continuity with the original Atari 600XL usage - that the controllers are properly labeled (unlike the situation on the backside).

I found a nice bundle of connector wires in the form of an old PATA cable.  I believe there are 40 discrete wires in this bundle.  Now on to solder 30 connections!

Wednesday, December 23, 2015

Keyboard Interface Update

Someone asked me how this is going, so I thought I'd post an update. I almost got it working before things got shutdown for Christmas. But alas, not enough time to debug. I finished 99% of the soldering and connected the Teensy 2.0 to my Linux workstation, loaded a couple of sample HEX programs. One blinks the LED, which you see in the photo. So that is working. I loaded the Arduino IDE and the Teensy extensions, but could not get the code to compile. Looks like it's not the mods I made. The code Pixelpracht provided would not compile either. Looks like it's missing header library calls. I'll have to debug it next week. I will reach out to Pixelpracht and see if I can get some direction. One thing I'd like to know is why his code includes a matrix with 23 of the 24 Atari keyboard lines and not the 22 I think it should be. One (19) is not connected, giving 23, but the 24th trace also is not connected, as it goes to the power LED. I plan to feed that from the RetroPie Control Block. 

Friday, December 18, 2015

Internal audio amplifier and speakers

Found a cheap ($5) stereo audio amplifier on eBay, with the right size speakers and 5V input. Disassembled and installed into the 600XL. Will put a jack eventually on the back, so that a short jumper can run from the output of the Pi to the amplifier (rather than running the input out the back as it is now. Also, the 5VDC input is temporarily off the GPIO header, until the Control Block arrives. Power will then come off the Control Block master.