User Interface

User interface

You navigate the OLED interface by pressing the B button to advance to next screen. A button will change an option or execute a command.

The OLED has a screen-saver that will turn off the display after 5 minutes. Press the B button to wake it up.

Status Screen (default)

This screen will show if USER-LOCK switch is enabled, if SyncGuard is OK or blocking, and the JAMMA voltages for 5v and 12V.

Input Test

This screen will show the status of your JAMMA edge, and is a convenient way to troubleshoot either your JAMMA cabinet or if you suspect something is up with your MiSTer installation. Active inputs will be highlighted in real-time.

SE=service button, C1/C2=coin1 coin2, TS=test button

Video Input

Shows number of lines, horizontal and vertical frequency of the video signal coming from MiSTer.

SyncGuard

This is where you configure SyncGuard to match your monitor. The default is 15kHz/JAMMA. Options are:

  • 15kHz/JAMMA
  • 15/25 Auto
  • 25 kHz/EGA
  • 31 kHz/VGA
  • Tri-Sync
  • Off

USB mode

Selects if the Expander operates in MAM Keyboard or 2xGAMEPAD mode.

Keypress (Space).

Only available when in Gamepad mode, press B button to issue the ‘Space’ key to MiSTer.

Keypress (Enter)

Only available when in Gamepad mode, press B button to issue the ‘Enter’ key to MiSTer.

MiSTer menu

Default is ‘All Options’ which lets you control MiSTer volume and settings by using joystick and buttons on your cabinet. If you only want to enable core selection, change it to ‘Core only’.

Save Config

You need a micro sd card inserted to save your settings.

Voltages

Displays various voltages:

  • JAMMA 5V
  • JAMMA 12V
  • USB VBUS – the voltage supplied to the Expander from the DE10 via the USB OTG cable
  • Int 3.3V – Internal 3.3V supply.

Info

Shows Expander serial number, PCB revision and current firmware version.

MiSTer Tips & Tricks

As stated in the Caveat / Disclaimer, I am not an authority on everything MiSTer and I’m not directly involved in the development of MiSTer.

Supporting arcade core developers

Most of the value in the MiSTer project when it comes to cores, stem from a few developers.  I suggest sending a dollars their way to show support and keep them motivated.  If the maintainer of the MiSTer project was a bit more accommodating towards arcade, I would include his Patreon as well 🙂

Jotego

Jotego is doing fantastic work, and his cores are probably the main reason arcade enthusiasts are getting into MiSTer.  He’s behind CPS1/1.5/2 and a lot of other good stuff.

https://www.patreon.com/jotego

Furrtek

Furrtek does reveverse-engineering of decapped IC’s, this enables his and other cores to be truly 100% accurate.  Very impressive stuff!

https://www.patreon.com/furrtek

Updating a DE10-Nano MiSTer that’s mounted on the Expander

New method

The PC launcher, linked to from the https://github.com/theypsilon/Update_All_MiSTer page is the fastest and easiest way to update your MiSTer installation.  it allows you to update the SD card directly from your PC.

Old method

The original Expander does not have any USB ports, and there is nowhere you can plug a wifi-dongle into it.

Here is what I do to update my MiSTer install.

  • Remove from cabinet
  • Disconnect DC cable from Expander
  • Connect a network cable
  • Connect a DC adapter to the DE10

I then SSH to it and run the update_all script, by default the username is root and the password is the number 1.

This is not a linux/ssh tutorial, but the commands are:

cd /media/fat/Scripts/

./update_all.sh

Operation – Gamepad

Gamepad/Joystick Mode

I could write pages about what I think about the input system of MiSTer, bottom line is that it’s bit of a mess and not very user or arcade friendly.

You can use the Expander with 2 player cores that require gamepad input and I have put some effort into making it as easy as possible, but given the way MiSTer is designed, it is not plug & play.

Test and Service will likely not work at all in Gamepad mode.

The MiSTer ‘Virtual Gamepad’

MiSTer has the concept of a ‘virtual gamepad’, and before you can do anything, you need to set this up by pressing buttons on your controller/cabinet.  The idea is that you can plug in whatever, map your particular variant to a Virtual Gamepad, and the cores will communicate with this Virtual Gamepad.

MisterAddons suggest this mapping, I’m not sure if there is a rationale behind it:

Virtual GamepadBARYXLSelectStart
Actual Controller123456CoinStart

Easy enough, but unfortunately not so – the way arcade cores use this virtual gamepad is consistently inconsistent. You can be pretty sure that Start is not start, and that Select is not coin.

The game 1943, use L for coin, R for start, and Start for Pause.

Joust use Start for start (good?) R for coin, and X for Pause.

Marvel vs Capcom uses YXBALR for buttons, Select for start and Start for coin.

The reason you don’t have 6 buttons, plus coin and start for start (never mind test and service), is the intended audience – console / supergun users. From the maintainer of the MiSTer project:

MiSTer is targeted for gamepads primarily. If you count amount of games for all supported consoles and computer cores then arcades are small fraction of that. So main input device is gamepad.

In effect, the Arcade Cores when used with gamepad are (out-of-the-box) consolized arcade versions – a few cores even have coin and start mapped to the same button, not something you would like in your arcade cabinet.

What can you do?

The general consensus seems to be that you have to define buttons in-game, for every game, even if you use an actual gamepad.  This has to be done pr game, pr controller – as the mapping you do in-game is relative to the physical device and not the virtual gamepad (what was the purpose of this thing again?).  If someone was crazy enough to do sane mappings for all cores and variants (Hi Porkchop :)), it would only work for a specific controller.

How the Expander works in gamepad mode

Interaction with MiSTer itself, like volume, core menus etc, is fixed and not affected by gamepad/keyboard mode. If you really want to use Gamepad mode, you first need to configure the virtual gamepad from the MiSTer main menu:

When you see this screen, you MUST switch the Expander from keyboard to gamepad mode:

  

When you are 100% sure it is in Gamepad mode, you can start pushing the buttons on your cab to set up the virtual gamepad.

You will be prompted for non-relevant input such as mouse buttons etc, you can ignore this by pressing space on a keyboard.  Since you don’t have a keyboard in your cabinet, you can do this from the Expander:

 

After completing this, you also have to define inputs for each core.

BIG CAVEAT

It s possible to define a Virtual Gamepad with keyboard input, MiSTer will then no longer regard the used keys as keyboard – but rather gamepad input.  This will place your setup in in limbo where MiSTer sees some input as gamepad and some as keyboard.

Therefore, DO NOT define joystick buttons when the expander is in Keyboard mode.

Operation

Joysticks & Buttons

Basics

The Expander presents itself to the DE10-Nano as a keyboard with standard MAME button mapping by default, this will work with most of the arcade cores without any further configuration or mapping.

Use the joystick to navigate menus, then press button 3 to launch a game.

Interacting with MiSTer

The JAMMA Expander is designed with 3 use scenarios in mind:

  • All options – you can bring up the MiSTer menu change settings
  • Core only – you switch games from your cab, but nothing else
  • PCB replacement – no interaction with MiSTer menus
Combo 1P Start+Resulting KeyMiSTer functionAll optionsCore only
(Hold 1P Start for 2+ seconds)ALT+F12Core menuXX
LeftEnterAccept a changeX 
RightF12Settings menuX 
UpVolume IncrementIncrease global volumeX 
DownVolume DecrementDecrease global volumeX 

Toggling the ‘USER LOCK’ switch to enable will set the expander to PCB replacement mode, this can be done on the fly. The idea is to set up the cabinet, then flip the ‘USER LOCK’ switch to avoid users accidentally making changes or changing games.  If ‘USER LOCK’ is enabled, it will show on the OLED display.

Troubleshooting input

If you’re having input issues, you should first check your cabinet – there may be stuck buttons you don’t know about that will interfere with MiSTer.  You can do this by navigating to the input diagnostics screen, any switches that are pressed will show up as highlighted.  In this example, the test switch is pressed.  

Troubleshooting Video

If you get a garbled picture, there is a good chance the Expander is blocking the sync signal, the OLED will then read “SyncGuard block”.  This is to protect your CRT from non-compliant sync signals.

You can navigate to the Video Input screen to get details on what MiSTer is sending.

FAQ

JAMMA Expander FAQ

What do I need in addition to the JAMMA Expander?

You need a DE10-Nano Kit, and a 128MB SDRAM module.  

Why is there no fan on the expander, do I need fan?

The DE10-Nano does not need a fan.  Neither Intel who makes the FPGA nor Terasic who makes the DE10-Nano has a fan in their designs.  The Intel Cyclone® V SE 5CSEBA6U23I7 has an operating temperature up to 100C/212F.  If you normally buy 500 USD gold plated network cables with an outer jacket of unobtanium, kissed by virgins and washed in purified water from a glacier – go ahead and add a fan 🙂

Is the DC connector JST-VL or JST-VH?

On PCB’s with serial numbers up to 101, the marking on the PCB is wrong.  The connector used is JST-VH

 

 

 

Hardware Installation

Hardware installation

Required tools:

  • Torx T10 screwdriver

1 – Check Included Parts

  • JAMMA Expander PCB
  • JST-VH to DC cable
  • 4 M3x6mm T10 screws
  • USB OTG Cable
  • HDMI Cable

2 – Connect USB OTG Cable

3 – Mount DE10-nano

4 – Connect HDMI Cable

After connecting, give the slack in the cable a little push to make it square to minimize force on the HDMI connectors.

5 – Routing the USB cable

Care should be taken when routing the USB cable, it should not look like this:

If you first give it a bend:

Then a gentle twist upwards, taking care not to put stress on the DE10 connector:

It should end up looking something like this:

6 – Connect DC power

You are done 🙂

Firmware Update

Firmware update

The firmware can be updated using a standard Micro SD card. The card must be formatted with a FAT file system.  It is not possible to ‘brick’ or damage the unit during firmware update, if you experience an error – simply try again.

Download zip file below, and extract file to root of sd card.

Update procedure

  • Power off system
  • Insert SD card into Jamma Expader
  • Press and hold both A and B button
  • Power on system, MiSTer (not stock DE10 software) needs to run on the DE10 for the Expander to be powered reliably during update.
  • Follow instructions on screen

Instead of powering off/on system, you can also disconnect/reconnect the DC jack on the DE10-nano.

Firmware, all revisions

Will be published here when available, and generally announced on Twitter if it’s something major/important.

2023-09-16 – Fixes/improvements in this release

  • Missing pull-up values on some SDIO lines causing instability writing config to SD card.

2023-09-14 – Fixes/improvements in this release

  • New USB stack and surrounding code reworked from scratch, everyone is encouraged to update
  • Libraries and build-tools updated

2022-12-08 – Fixes/improvements in this release

  • Minor changes required for Expander PCB rev 2.0

2022-12-04 – Fixes/improvements in this release

  • VGA setting for Sync-guard now actually works
  • A condition where inputs could get ‘stuck’ in keyboard mode

2022-04-29 – Fixes/improvements in this release

  • USB mode saving fixed, it can now boot to gamepad mode

2021-12-22 – Fixes/improvements in this release

  • Relaxed voltage tolerances on startup
  • More intuitive voltage error screen
  • Configurable sync-guard

MiSTer installation

MiSTer installation

This page describes what you must do before installing the JAMMA Expander.  I recommend doing this on a desk with a normal HDMI monitor, network cable and keyboard connected.

Required Hardware

  • DE10-Nano kit
  • Micro SD card – I use a normal 16GB card and have plenty of space left
  • 128MB SDRAM module
  • Computer with micro SD card reader
  • USB OTG adapter for connecting a keyboard (one is provided with the Expander)
  • USB keyboard
  • HDMI cable and monitor

Step 1 – Preparing the SD card

First you need to install “Mr. Fusion – Universal MiSTer installation image” on an SD card, https://github.com/MiSTer-devel/mr-fusion.  You do this from a normal computer, instructions in the link.

Step 2 – Power up and update MiSTer

For the initial setup, it’s probably best to do it on a desk with a keyboard, an ethernet cable and a normal HDMI monitor.

Boot up MiSTer, press F12, navigate to “Scripts”, and choose “update”, let it do it’s thing. You will at this point have a lot of games and consoles you can launch, but they won’t run correctly as you don’t have the required ROM files – proceed to step 3..

Step 3 – Making MiSTer useful

How MiSTer organizes cores, roms, launching files etc is a bit of a moving target and can be confusing and frustrating to set up from scratch.   Luckily, there is a script that does everything for you:

https://github.com/theypsilon/Update_All_MiSTer

Run this script, and it should take care of making your MiSTer useful.

Step 4 – Verify that your MiSTer is working

At this point, you should have a working MiSTer and be able to launch games.

  • DO NOT proceed until you have a working MiSTer installation
  • DO NOT remap/configure inputs – this will be done in a later step.

Step 5 – Making your MiSTer cab ready

Launch the script ini_settings.sh, you can do this by pressing F12 and pressing left once MiSTer has started.  There are 4 settings you should change:

  • composite_sync=on –  JAMMA uses composite sync
  • direct_video=on  – Cores will output native resolution and colors via the HDMI port
  • bootcore=lastcore – The last game played will be launched automatically next time you power up
  • bootcore_timeout

Hardware Details

Hardware Details

This page will go into some detail about the design and features of the JAMMA Expander.

 

Controls

Player controls are read from the JAMMA Edge and the CPS2 Kick connector.  The JAMMA Edge will have 5 buttons by default (JAM), and can switched to read 6 buttons (CHAM).  

Make sure your cabinet is wired for 6 button operation with Chamma, or button 6 will be read as permanently pressed.  You can also use a CPS-2 kick harness for buttons 4 to 6.

 

If you cabinet has volume UP/DOWN buttons that is routed via the CPS-2 kick, the Expander will read these buttons and control MiSTer global volume.

Video

Video is sourced from the DE10 Nano and routed to the Expander with the included HDMI cable.  Using HDMI for video will provide the best possible color fidelity.

There is no video processing on the Expander, and it utilizes the direct_video feature of the MiSTer.  

The HDMI video signal is converted to analog RGB, and amplified to JAMMA levels, about 3V peak-to-peak.

Sync is also sourced from HDMI, and is amplified to JAMMA levels.

Audio

I2S digital audio is sourced via HDMI and the Expander uses a dedicated high quality audio DAC to convert this to analog audio.

Depending on your cabinet, you have two audio options, selectable via a switch on the Expander.

  • Amplified mono via JAMMA edge, downmixed from stereo.
  • Stereo via RCA connectors

The volume potentiometer only controls the amplified mono.

 

Power & LEDs

The Expander will power the DE10-Nano from the JAMMA edge connector in your cabinet, this is passive delivery via an included DC barrel cable.  

The electronics on the Expander itself is powered in turn from the DE10-Nano.  This is to protect both the DE10-Nano and the Expander itself, as the DE10-nano has excellent power protection.

The Audio amplifier is powered directly from 12V on JAMMA edge.  All the power rails have LEDs.