Gottlieb Mylstar on FPGA (Q*bert and 9 other games working)

Do either of these drive the Q*bert knocker? That circuit keeps self-destructing in my set up

You keep blowing the drive transistors for the knocker ?!?!? If that's the case I'd seriously look at replacing the solenoid coil (!)

- James
 
You keep blowing the drive transistors for the knocker ?!?!? If that's the case I'd seriously look at replacing the solenoid coil (!)

- James
Or, at least check the 1N4004 across the coil.

BTW, that sounds very cool... I'm a big fan of FPGAs, and projects like this seem perfect for using FPGAs.

I also agree on remaking Omega Race on an FPGA, though being a vector game, there's a lot of analog output that you still need to deal with.

DogP
 
Last edited:
JROK sells his multi boards for $165 each, and they're sold out in no time. If you can produce something of the same quality for less, good luck to you.
If I had some FPGA skills I'd be working on an Omega Race replacement....

Matt, I am trying to make it as small, cheap and flexible as possible. If I am allowed to dream, I want to reach a point where I can put the whole thing together into a TV game joystick that you could buy at Walmart for 20 bugs. I am not sure if there is a market out there in US, but in Europe, retro-things from the 80th are booming - seems people are missing the good old days in times of crises.

Omega Race? If you can get the schematics and ROMs from somewhere, you are already home. Download Xilinx free Webpack, buy a card from digilentinc.com, fetch the Z80 IP from opencores.org and just start typing:

entity omegarace is
begin
port ( clk : in std_logic;
rst : in std_logic;
...
:)
 
Last edited:
Some pics

I took it with a phone, so bad quality. But you get the point.

Picture 2 showing the FPGA board needs some explanation: The component right in the middle is the FPGA.

The component below is the Intel strataflash, 16M NOR flash. It boots the FPGA, loads the menu and fills foreground, background (if ROM) sprite ROMs as well as sound ROMs; 8088 CPU program
execution (ROMs and optionally ROMA/ROMB in RAM sockets) is done directly in different sections of the flash depending on the game chosen, i.e. moving pointers. With a reset, the first 2 scratch
pad rams containing high-scores, credits etc are block-written back to flash. So when a game is started again (even after power down), it keeps highscores. An mcs file containing all data is written
one time into the flash via a RS232 interface (you see the white serial cable on the top right). For doing so, the FPGA is configured with a bit-stream that is running a picoplaze embedded cpu connected
to the flash via PLB as well as a serial i/f driver - the code in the rom of the picoplaze runs a simple CLI to read/write/erase the flash. Once this is done, power-up or system-level reset brings the thing
to life.

The cable to the top, left is the VGA cable to the computer monitor - as the card only supports 3-bit color, the colors in the picture are not true but have
been tested to work on the Digilent Nexsys2 board which has 11-bit (4 R, 4 G, 3 B). So no worries.

The small bugs above the RJ45 Ethernet jacket on the left hand side are two 2-channel DAC. The top component, first channel is used for audio, the
second channel for (streaming) voice, both driven by a SPI interface from the FPGA. The DAC is high-current, i.e. can directly drive a (small speaker) or
an audio cable.

On the bottom you would find (if I were a better photographer) cursor switches, a rotary switch, DIP switches and LEDs. My plan is to bring the DIP switch out for folks to do their changes manually
instead of integrating this into the menu software - for a simple reason, I am not intelligent enough to write accurate assembler :)
 

Attachments

  • DSC_0345.jpg
    DSC_0345.jpg
    92.3 KB · Views: 122
  • DSC_0352.jpg
    DSC_0352.jpg
    97.5 KB · Views: 138
  • DSC_0334.jpg
    DSC_0334.jpg
    90.4 KB · Views: 117
  • DSC_0338.jpg
    DSC_0338.jpg
    92.7 KB · Views: 117
  • DSC_0341.jpg
    DSC_0341.jpg
    94.7 KB · Views: 110
Last edited:
More pics

Some more pics (selection)
 

Attachments

  • DSC_0343.jpg
    DSC_0343.jpg
    94.3 KB · Views: 70
  • DSC_0344.jpg
    DSC_0344.jpg
    91.7 KB · Views: 71
  • DSC_0347.jpg
    DSC_0347.jpg
    94.9 KB · Views: 79
  • DSC_0351.jpg
    DSC_0351.jpg
    91.7 KB · Views: 68
  • DSC_0350.jpg
    DSC_0350.jpg
    90 KB · Views: 69
Knocker

Do either of these drive the Q*bert knocker? That circuit keeps self-destructing in my set up; I'd replace the hardware in a heartbeat if it handled that part as well.

Mjenison, you are so much in love with that knocker? The knocker signal is naturally there, but I connected a cell-phone vibrator to it. When putting it in a joystick housing, you feel the flurry character hitting the bottom.

But sure, to drive the knocker, an external transistor with protection diode would be needed - easy job.
 
Matt, I am trying to make it as small, cheap and flexible as possible. If I am allowed to dream, I want to reach a point where I can put the whole thing together into a TV game joystick that you could buy at Walmart for 20 bugs. I am not sure if there is a market out there in US, but in Europe, retro-things from the 80th are booming - seems people are missing the good old days in times of crises.

Omega Race? If you can get the schematics and ROMs from somewhere, you are already home. Download Xilinx free Webpack, buy a card from digilentinc.com, fetch the Z80 IP from opencores.org and just start typing:

entity omegarace is
begin
port ( clk : in std_logic;
rst : in std_logic;
...
:)

Cool ideas, but wouldn't you have to get a licensing arrangement with Gottlieb to do that?
 
Matt, I am trying to make it as small, cheap and flexible as possible. If I am allowed to dream, I want to reach a point where I can put the whole thing together into a TV game joystick that you could buy at Walmart for 20 bugs. I am not sure if there is a market out there in US, but in Europe, retro-things from the 80th are booming - seems people are missing the good old days in times of crises.

Omega Race? If you can get the schematics and ROMs from somewhere, you are already home. Download Xilinx free Webpack, buy a card from digilentinc.com, fetch the Z80 IP from opencores.org and just start typing:

entity omegarace is
begin
port ( clk : in std_logic;
rst : in std_logic;
...
:)

If I see that on the shelves of Walmart you'll surely get my 20 bucks!
Sounds like you're having a good time doing this, and hopefully it will lead to more projects.
I have started working with Xilinx chips... so maybe someday I'll join the FPGA bandwagon. ;)
 
Mylstar Multigame

"Matt, I am trying to make it as small, cheap and flexible as possible. If I am allowed to dream, I want to reach a point where I can put the whole thing together into a TV game joystick that you could buy at Walmart for 20 bucks"

Your dream is impossible to realize given the cost of the components involved even
at very high quantity's. Assuming of course that Gottlieb or someone with rights to
the software does not come after you. Selling a few on a Arcade forum is one thing
selling thousands at Walmart is another.

Mike
 
Legal issues?

Cool ideas, but wouldn't you have to get a licensing arrangement with Gottlieb to do that?

You would, right. But I have thought about this already ;o). I would just sell the joystick without any software on it beside a plain boot-loader and the FPGA bitstream - no ROMs. Then people can slide in a cheap SD card (or USB stamp) with a copy of the ROMs that they somehow got from the Internet and copied with their PC. That would also make it an open platform - remember it´s and FPGA which can be turned into any hardware.
 
Mylstar Multigame

You would, right. But I have thought about this already ;o). I would just sell the joystick without any software on it beside a plain boot-loader and the FPGA bitstream - no ROMs. Then people can slide in a cheap SD card (or USB stamp) with a copy of the ROMs that they somehow got from the Internet and copied with their PC. That would also make it an open platform - remember it´s and FPGA which can be turned into any hardware.[/QUOTE

Does not matter if the ROM's are not there, the bit stream defines the hardware as
Gottlieb/Mylstar which is still copyrighted by them. Based on your description it is
"wire for wire" the same as the original hardware so in essence it is theirs. You are on
a very slippery slope.

Your other assumption is based on that some guy at Walmart is going to buy your
product that is non-functional until he finds the correct rom's somewhere on the internet
and figures out how to put them on a SD card and plug that into your "joystick"
That is a customer service nightmare.

Not trying to discourage you but your business model does not make any sense.

Mike
 
"Matt, I am trying to make it as small, cheap and flexible as possible. If I am allowed to dream, I want to reach a point where I can put the whole thing together into a TV game joystick that you could buy at Walmart for 20 bucks"

Your dream is impossible to realize given the cost of the components involved even
at very high quantity's. Assuming of course that Gottlieb or someone with rights to
the software does not come after you. Selling a few on a Arcade forum is one thing
selling thousands at Walmart is another.

Mike

Mike, I can easily challenge you on the cost statement. I did the math already, and it´s actually very possible. I won´t tell you the actual BOM numbers, but what I have on there:
Spartan6 LX25, qty >10.000, NAND flash (basically USB stick memory), 4-layer pcb 2x2 inches, controller buttons, all plastic - no metal. Also jakks pacifics Namco joystick proves that this is a business and they were running into millions in volume on that particular product, see http://jakks.com/node/1202/2

Also the copyright statement is easy to break. In order for them to claim infringement, they have to prove the copy. A single click in the FPGA design tools encrypts the bitstream and that´s it then - happy reverse engineering.

You have a point in selling a stick without games.

Elmar
 
Last edited:
Added reactor

Hi again,

Reactor uses an older generation of logic board assembly (weaker one) unlike all other games. So far I had this system stand-alone which means that I had to change the bit-stream if I wanted to run it.

I have now integrated the gen-II (reactor) and gen-III (all other games) into a single design which makes it possible to select and run any game from the loader-menu. Also, I am about to add the diffs between the two generations to www.qbert.me. I also wrote code for the trackball interface card which I tested against an X-arcade trackball. Seems all to work nicely.

I really never cared so much about Reactor - my first contact with it on MAME a couple of years back was a 1 minute "what a shitty game"- experience. I only had a keyboard which made it nearly impossible to play and the graphics were not really very tempting, I thought. Now when testing it for a couple of hours on the FPGA with a trackball connected, I actually feel quite differently. I have to say that this game actually ROCKS! Maybe I should rank it higher up in my loader list :)

Some pics below (not color true, 3-bits RGB only).

Cheers, TRORT
 

Attachments

  • DSC_0354.jpg
    DSC_0354.jpg
    93 KB · Views: 48
  • DSC_0356.jpg
    DSC_0356.jpg
    94.6 KB · Views: 42
  • DSC_0357.jpg
    DSC_0357.jpg
    95.8 KB · Views: 42
  • DSC_0358.jpg
    DSC_0358.jpg
    97 KB · Views: 41
Last edited:
Very interesting indeed. I am greatly anticipating JROK's Mylstar board because I need one for my empty Q *bert cab.

Since I am extremely happy with JROK's Williams FPGA board in my Joust I would say running a real processor has my preference. I cannot tell any differnce between his board and the real hardware, unlike f.i. MAME.

But, since you coded your own processor emulation, this might be intersting as well.

I do hope making TV connectable joysticks is not your only goal. On this forum we would much more appreceate a solution that can be run on the original cabinet using a Jamma and Original Gottlieb connecting solution.

The knocker is essential IMHO. The other part is the voice synth reproduction. Will be challenging to make it sound like the real hardware. I wonder how both "systems" will handle that. Do you play back samples or is the voice synth truelly emulated ?

I would also prefer to set everything up through menus like JROKs board. DIP switches totally dont match your idea of doing this "new school" ;)

Where in Europe are you from BTW ?

Anyway, its good to have options hopefully in the future. Maybe this speeds up JROK's board a little bit ;););)
 
Last edited:
Level42,

First of all I have to correct you and I am very strict with that. :eek:) The 8088 CPU is not an emulation, it is the real CPU. If you would put the original CPU and my FPGA CPU on a logic analyzer, you would not be able to point out which is which.

Concerning the synth portion, it´s very tricky. I sampled phonemes into wavs and play them, but it´s sounds crap for 2 reasons:
- The SC01 regulates timing between phonemes to make it sound more natural
- Voice clock and pitch are changed by the R6502 CPU

Just recording the whole speech pattern like the MAME guys did is an option, but it´s against my principle of true reproduction.

If you wanted to do it really really real, you would need to start working with field-programmable analog arrays - the most prominent one here: http://www.anadigm.com/fpaa.asp. They contain all analog parts that are needed like tunable oscillators, filter components, mixers, equalizers, etc.

Luckily enough, Votrax has published their SC01 internals on IEEE as well as patent papers which I got. But I did never dare to start with it as this will eat TONS of time and I am having a real job as well :) Maybe something for you?

I am in Sweden, Stockholm.
 
Level42,

First of all I have to correct you and I am very strict with that. :eek:) The 8088 CPU is not an emulation, it is a simulated real CPU. If you would put the original CPU and my FPGA CPU on a logic analyzer, you would not be able to point out which is which.

Slight correction. I agree it is not emulation, but it isn't a real CPU. It is a simulation of a real CPU.
 
I really never cared so much about Reactor ....

Now when testing it for a couple of hours on the FPGA with a trackball connected, I actually feel quite differently. I have to say that this game actually ROCKS!

I think it's a radically different game with a trackball, at best it's just 'blah' with a joystick. Adding a trackball makes it a lot of a of fun !
- James
 
Slight correction. I agree it is not emulation, but it isn't a real CPU. It is a simulation of a real CPU.

Then again, that also is true for all the "surrounding" hardware in JROKs Williams board....

Thanks for the answers Elmar. Sorry I dont think I have the talent to do the speech for you, but I did read about how speech synths work.

So, for Qbert mame simply plays the whooe sample of a "word" ? I know that in Berzerk the speech synth is actually enulated, which should give better results.

I wonder how JROK is going to do/has done the speech ?
 
Last edited:
Back
Top Bottom