OCELOT ARCADE SYSTEM

The Ocelot Arcade System is a unique home arcade console, based on the Microchip dsPIC33 microcontroller, that brings cutting-edge graphics and sound technologies into your living room.

Unlike other consoles which provide only blurry, dark or indistinct outdated raster output, the Ocelot produces its images using stunning real-time vector graphics!

Connect an Amiga or Atari joystick, or Master System or Mega Drive pad to the JOYSTICK connector, wire up your oscilloscope, and prepare to enter a world of semi-portable table-top arcade entertainment!

What is the Ocelot Arcade System? 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! Incredible real-time vector 3D graphics at 60 FPS.

Many dynamic 3D game objects on screen at once.

Multiple terrifying insect-themed enemy designs; expect attacks from both in the air and on the ground!

A thrilling encounter with a multi-part boss enemy with a complex attack pattern.

Polyphonic 4-channel music output with simultaneous sound effects.

Highest scorers are recorded (while power is active).

Animated cartoon introductory briefing cutscene.

Four original songs composed specifically for Star Lynx on the Ocelot by Mathew Carr. 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! Smooth 2D graphics with dozens of rotating objects.

Asteroids and bonus saucers!

Flawless 60 FPS display.

Polyphonic 4-channel music output with simultaneous sound effects.

Highest scorers are recorded (while power is active).

Ingame soundtrack composed by Jonathon Carr. Visit screenshots page for high-resolution images.

How does the Ocelot work? 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.

I want circuit boards and source codes and stuff! 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!

Got any making-of pictures? Do I ever!

History 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.

Frequently Asked Questions Is the Ocelot for sale? 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. Why didn't you use the dsPIC33's internal DAC to provide the display signals? 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 Why don't you combine it with a laser galvanometer array to produce a macroscopic projected image? Keep watching. 🤔 Why didn't you do 'other cool thing'? 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! Connect the MCU to a discrete synthesizer chip such as a retro Master System PSG or Mega Drive FM, or a MIDI system through UART.

Use the spare processor time to synthesize an existing chip's sound (or some new programme of your own design) in real-time and output this audio through the internal DAC (mono or stereo).

Add support for additional controllers with a multiplexed input bus.

Connect the MCU to a dedicated graphics driver chip to have raster output. (Shame on you.) But then again, nobody said it had to be *exclusively* raster. Consider dismantling an LCD display to get a semi-transparent overlay piece that can be mounted in front of the oscilloscope's CRT to create a simultaneous hybrid raster screen with oscilloscope bright lines.

Use the non-volatile storage of the dsPIC (program space) to store highscores. I suppose you'd allocate space for this in the linker by declaring an array in C and then using library routines to access the space you've set aside. If this space wasn't located at a fixed address in the link script, it would be destroyed every time the program was rebuilt and the memory assignments recreated - but that's only important if the highscores should survive a firmware update.

LCD backlit displays. Where? Everywhere. Why? Everywhere. No, wait. Because I said so. What's your e-mail address? How can I contact you? ocelot@mrdictionary.net Apologies if you received any bounce e-mails during October. If I don't reply in a reasonable time, try the alternate e-mail address on the front page of mrdictionary.net