The Ocelot Arcade System is a table-top home arcade system designed for use with an oscilloscope!
It uses a high-speed, high-precision, dual-channel DAC to generate 2D vector output. Two phono connectors on the side of the case allow connection to an oscilloscope configured in X‑Y mode. The 9-pin port on the front panel accepts common Amiga or Atari joysticks as well as correctly powering and reading Master System and Mega Drive controller pads (both 3- and 6-button pads).
The microcontroller within the Ocelot is powerful enough to calculate and draw sophisticated 2D and 3D wireframe graphics in real-time, as well as produce four-channel polyphonic sound amplified and output by a built-in amplifier and speaker section within the case.
Check out the software available for the Ocelot below!
You are Starlynx, ace pilot! When your home planet of Pawneria is attacked by a malevolent mechnical insect army, you must fly your trusty Lynxwing starfighter craft through the ruins of Catsden City to defend your world and confront the ultimate foe: Menace Mantis!
Visit screenshots page for high-resolution images.
Instructions: Shoot the rocks. Shoot all the rocks. I mean seriously, you just hate rocks.
An arcade classic is brought into the psuedo-modern-retro era with an authentic vector graphic display!
Visit screenshots page for high-resolution images.
All of the processing is done by the central dsPIC33 microcontroller. This chip runs the game software, reads the input port, generates the sound waveforms and communicates with the 2-channel DAC to produce the images on the screen.
When a frame is started, games are able to send requests to draw lines or characters to the oscilloscope screen. These are simplified and stored in a buffer of instructions to move the cursor within a virtual 2D plane. An DMA-triggered interrupt handler rapidly reads instructions from this buffer and translates them to DAC-compatible SPI instructions to alter the voltages at the X‑Y ports, which are then read by the oscilloscope to produce the graphics.
Sound is produced by rapidly toggling GPIO pins from 0 to 1 at the correct frequency. Currents are summed together in a junction to produce a final voltage that can be passed to the built in amplified board. Music and sound effects playback is handled by routines in the Ocelot runtime.
Put on your best nerd hat, 'cause we're going into the technical zone.
Anything missing? Get in touch and let me know what you want to see!
Do I ever!
After following a tutorial by little-scale on how to convert a Master System cartridge into a reprogrammable EEPROM cartridge, resulting in Gravity Beam: Master Gaiden, I wanted to continue on and create something for the Mega Drive. Due to the more complex nature of Mega Drive cartridges, I decided to be more ambitious and learn enough about PCB and hardware design to produce my own cartridges. I asked for advice on PCB design at DoES Liverpool and saw all of the electronics gadgetry for visitors to use.
For many years, I'd been curious about using the stereo analogue sound output of a computer to drive cursor of an oscilloscope set to X-Y mode. The combination of sound hardware and vector display, I figured, would make a keen 'ghetto Vectrex', (a vector display-based home video game console produced in 1982). DoES had plenty of oscilloscopes and miscellaneous wires ready to use so soon I was visiting frequently, taking my (now deceased) laptop to the Maker Nights and trying to get something recognisable displayed on the oscilloscope screen.
When the limitations of my laptop's sound hardware became readily apparent, I started messing around with DoES' collection of Arduino Duemilanove units. The basic Arduino is nowhere near powerful enough to provide an analogue signal of sufficent slew directly. Using heavy filtering, I could use PWM to display a sweeping cursor at a slow speed, but nothing like the rapid flicker of the Vectrex. The big boss of DoES let me use his prototype super-Arduino Due with built-in high-quality DAC output instead, and the result was a fun Christmas scrolly thing.
I started gathering information on microcontroller kits, wanting to try and make my ghetto Vectrex a reality. I looked into the dsPIC33FJ128GP802, as it seemed a very powerful microcontroller with built-in dual DAC output, available as straightforward 0.1 inch pitch DIP, mountable on stripboard. From there, I sketched out the basics of the input interface, using basic pull-ups to connect an Amiga joystick. After that, I realised that the abundant timers within the dsPIC could toggle GPIO pins to provide the start of a very simple, low computation polyphonic synthesizer. With it all planned out on paper, I knew I had to make it for real.
As it turns out, the picture I chose for the Ocelot logo isn't actually an ocelot after all, it's a margay. The more you know!
“The margay is very similar to the larger ocelot in appearance, although the head is a little shorter, the eyes larger, and the tail and legs longer. It weighs from 2.6 to 4 kilograms (5.7 to 8.8 lb), with a body length of 48 to 79 centimetres (19 to 31 in), and a tail length of 33 to 51 centimetres (13 to 20 in).”
I can't find the source of the original 'Ocelot' margay picture. Could be here perhaps.
No, there's only one in existence, and it's mine. You can't have it. And besides it's still a prototype. :)
Take a look at the technical page to see what's involved inside that nifty laser-cut case, and then check out my 'Ocelot kit/board' FAQ.
That was my original plan. I chose the dsPIC33FJ128GP802 because of its built in dual-DAC output. The upper right of the Ocelot mainboard was to be dedicated to the graphics output through the dsPIC33's internal DAC output pins.
However, tests showed that the internal DAC was an 'audio DAC' (i.e. a filtered POS) and not suitable for the high slew rate graphics that I wanted from the Ocelot.
Luckily, I could configure a SPI channel to work through these same pins, and install the DAC chip in that position between the dsPIC33 and the graphics output pin header.
I chose the TLV5618A because it was a dual-output 3.3V DIP-packaged SPI-driven chip that has a special instruction for buffering up new values into one channel, then outputting new values to both channels simultaneously. It was a sample provided by TI. :D
The Ocelot was built up, one system at a time, based on what was simplest and cheapest. The microcontroller, DAC and regulators were all samples provided by Microchip, Micrel and Texas Instruments. Originally it wasn't even going to use the DAC, but the low quality of the internal MCU DAC prevented that.
If you've got unlimited time and money, there's lots of cool things you could do!
Ocelot board and case design, runtime software and Mattsteroids game © Mathew Carr 2014-2017. Starlynx game © Mathew Carr 2017. Ocelot 'Ask For The Future' © Mathew Carr 2017. Site design and content © Mathew Carr 2017.