Archive for the 'Projects' Category

Reverse Engineering the Sega Versus City Arcade Billboard System.

This a synopsis of this project from concept to prototype, I’d like to take it further but I’ve done all I can do given what I know. Hopefully I’ll gain more knowledge and be able to bring this project to completion sometime in the future.

If you don’t know what a Sega Versus City or a Vs Billboard is, here is a brief history lesson:
Sometime around 1996 Sega made a “Versus City” arcade cabinet. This was essentially a Siamese-Candy Cabinet; two cabinets back to back merged into one.  The idea was for this to be used with games that supported 2 players pitted against each other. In most cases one game PCB could be loaded into the cabinet the video and audio signals split and fed to each side, with each player getting their own dedicated control panel and screen to enjoy the game. Some games that shipped in this cabinet (such as Virtual On) used a separate PCB for each player, but the concept remained the same.


One interesting feature of this cabinet was the “Vs Billboard System”. This included a large “WINNER” lamp for each player as well as a 2-digit 7-Segment display on each side designed to show that player’s consecutive win count. Sega enabled these displays to do much more however, showing off animations and scrolling text, the way each game supported this is different. For games that didn’t support the billboard the system could be set to display a generic Attract mode loop.

Sega eventually made a follow up cabinet called the “New Versus City” as well as Vs. Billboard upgrades for the Blast City and Megalo 410 cabinets.

versuscity2p1r megalo

Blast_city_versus_billboard Blast_city_versus_billboard2


What games supported the Vs. Billboard System?:
While the generic “Attract Mode” video above is pretty cool, the billboard system is rather pointless unless it actually functions within the context of a game. Despite seeing many copies of Street Fighter II loaded up in these cabs, that game pre-dates the original Versus City and the Vs. Billboard system by several years and sadly there is no indication I’ve found that ANY Capcom games support it. Looking through the games available on the various Sega hardware platforms starting around 1996 and seeing which games detailed a “Billboard output” option either in the service manual or present in the game test mode. I’ve compiled the following list, though this may not be complete:

  • Sega ST-V Games:
    • All Japan Pro Wrestling Featuring Virtua /Zen Nippon Pro-Wrestling
    • Critter Crusher / Tatakot (maybe? supports 7-seg displays but might not be billboard system)
    • Hanagumi Taisen Columns : Sakura Wars (needs cabinet type set to vs in game test mode)
    • Mausuke no Ojama the World / Kiss Off (winner lamp only, I think)
    • Super Major League / Final Arch
    • Taisen Tanto-R ‘Sasissu!’ / DaeJeon! SanJeonSuJeon (winner lamp only, I think)
    • Tecmo World Cup ’98 (winner lamp only, I think)
    • Virtua Fighter Remix
  • Sega Model 2 Games:
    • CyberTroopers Virtual-On
    • Dead or Alive
    • Dynamite Baseball (winner lamps only, I think)
    • Dynamite Baseball 97 (winner lamps only, I think)
    • Fighting Vipers
    • Last Bronx
    • Sonic Championship /Sonic The Fighters
    • Virtua Striker
  • Sega Model 3 Games:
    • CyberTroopers Virtual-On Oratorio Tangram MSBS 5.2
    • CyberTroopers Virtual-On Oratorio Tangram MSBS 5.4
    • Fighting Vipers 2
    • Virtua Fighter 3
    • Virtua Fighter 3tb
    • Virtua Striker 2
    • Virtua Striker 2 ’98
    • Virtua Striker 2 ’99
    • Virtua Striker 2 ‘99.1
  • Sega NAOMI Games:
    • CyberTroopers Virtual-On Oratorio Tangram MSBS 5.66 (needs billboard enabled in game test mode, otherwise it’s winner lamp only)
    • Virtua Striker 2 Ver.2000
    • Virtua Tennis
    • Virtua Tennis 2
  • Sega NAOMI 2 Games:
    • Virtua Striker 3
  • Sega Tri-Force Games:
    • Virtua Striker 2002

If you know of any other games or other hardware that supports the Vs. Billboard please let me know.

How does the Vs Billboard hook up to these games?
The Vs. Billboard has a control PCB that can run both sides in Versus City cab at the same time. This PCB has 8 digital input pins that can receive commands from the game PCB and properly interpret them into displaying text or animations on the 7-segment displays or flashing the WINNER lamps.

On newer JVS game boards such as the NAOMI and Tri-Force, any JVS I/O board with at least 8-output pins will use those first 8 pins for the Vs. Billboard output. Some games (such as Virtual-On OT 5.66) will need the billboard output enabled before it will start sending data, other games (such as Virtua Tennis) will have billboard output enabled by default. It was originally thought that JVS games required the use of the Sega JVS to JAMMA Rev A I/O board for billboard support, since that was the only board mentioned in the official Sega documentation, but that is likely because all of the billboard enabled cabs were wired for JAMMA and that was the only official Sega JAMMA compatible JVS I/O at the time. (though I should note that particular board does need the jumper JP1 set to position “B” to set the extra pins to output mode instead of input mode).

On the Sega ST-V, connector CN32 is used for billboard output according to official Sega documentation. Though it’s not clear if additional jumpers need to be set to use this as an output port since this connector is often used for player 3 input.

On the Sega Model 2 and Model 3 boards the typical output connector is NOT used for the billboard, instead the billboard output pins are split across 2 connectors using the “4-Bit I/O” pins available on each of the larger Analog input connectors. See my Model 2 and 3 filter-board pinout guide. Model 2 and 3 boards seem to be the only ones that are capable of supporting the billboard in addition to other lights and outputs since the normal 6 pin output connector isn’t used.

The PCB that controls these look like this:

fileThis is a part number 837-11854 from a Versus City cabinet. The Blast City kit used part number 837-12792-02 which I’ve been unable to find a picture of. I don’t even know the part numbers for the New Versus City or the Megalo 410 kits. The connector on the left is power input. The small black connector is for data input, the large black connector is for output to all the lamps. It’s unclear the function of the dip-switches though I believe  they can be used to turn on and off attract mode or (presumably) to configure which side is which player or which side is connected to the control pcb.

What I set out to do:
Now that you know what the Vs Billboard system is, what games support it and how it works My goal is simple: Reverse Engineer the billboard control PCB, learn how to interpret the data coming out over those 8-wires and emulate that on an Arduino with some off-the shelf 7-Segment displays and LEDs so that I can build my own Vs. Billboard from scratch and hook up to my (Model 3) Virtual-On OT Twin unit.

The first step was to gather as much information about this as possible. Most of what I learned is outlined above.  Then I made some guesses and speculation as to how the data protocol might work given the year in which the first cabs were made, the kind of chips I can see on the PCB pictures as well as the fact that these output ports are typically used for simple light blinking, not data. Some of my guesses turned out to be spot on, others completely wrong. I posted all of my thoughts and discoveries during this process over on Arcade-Projects if you’re interested in the nitty-gritty details.

Correlating the Billboard displays to the data going in:
Finding information on this system was fairly difficult, more-so every video I’d ever seen only showed the attract mode of the billboard, never any gameplay output. Speculating as to how things work is one thing but it’s impossible to reverse engineer something without actually knowing what it does; like trying to translate a new language without any context.

The first big break came from someone named majors over on ArcadeOtaku who owns one of these cabs and was kind enough to film Virtua Tennis 2 output to the billboard from test-mode.  Now I had something I could actually work with. While I was working on a method of capturing the output data from the game board MetalliC on Arcade-Projects gave me a head start by giving me the raw output hex data from the Demul emulator running the NAOMI version of Virtua Tennis 2 in the same test mode. This was extremely helpful but without knowing how that output data was timed made it difficult to determine which bits of data applied to which change on the screen.

My first test setup was simply attaching each output from the NAOMI to an LED so I could watch the data in binary in real time. I recorded a video of this in slow motion.

You can see in the videos there are some flashes then a pause then some flashes then a pause. This was obviously correlated to each time the numbers changed on the billboard about 1 second apart. I was then able to convert the binary pattern in the LEDs to hex and look for a corresponding hex value in the output data that MetalliC provided. I was able to step frame by frame in the video I shot of the binary output, and then confirm that with the data MetalliC provided. I now also had timing to the data output and was able to piece together a basic code. Further, I ran the test for the player 2 side and even without a video, simply assuming it was the same test pattern on that side I could see the difference in the commands between the player 1 side and the player 2 side.

I from this I figured out that the last 3 bits determine which of the 4 7-segment displays are being updated. and the first 5 bits represent the number being displayed. I also discovered that if you were to invert and reverse the first 5 bits the number simply counted in binary 0000 for “0”, 00001 for “1”, 00010 for “2”, up through 01010 for “A”. I would later discover that this continued through most of the alphabet, albeit with several letters removed such as O, since it looks the same as 0 and there aren’t enough bits to go around for the full alphabet. I’ve been able to extrapolate up through the letter P but after that I’m unsure. since there needs to be at least 4 letters removed after that. Assuming S and Z are two of them since they have the same pattern on a 7-segment display as 5 and 2 but I know it’s not r,T,U,v, or y since those letters are used in the attract mode pattern. That means out of Q, W and  X, at least two of those letter’s probably aren’t available.

For the Winner Lamps if the last 4 bits were 0110 then then the first 4 bits were used to control the winner lamps with the 4th bit selecting which side. Interestingly they didn’t send an on, off, on, off, on command to make the lamps blink. Rather they simply send a command to start blinking, and then another command later to stop blinking. My guess is that they wanted to blink the lamps at a rate that was faster then they were able to send data so this was more efficient.

Unlike the letters with only 2 winner lamp commands to go by (“start blinking” and “off”) it’s nearly impossible to extrapolate a pattern for the other winner lamp commands. I’ve observed several different commands come through that I believe are for the winner lamps, one of them I can make an educated guess is simply for “on” but there are at least at least 7 total unique commands per side. These could represent different blink rates, or maybe blink patterns with different on and off timing, or maybe something else altogether. it’s impossible to determine without seeing a video of how the billboard is supposed to react to these commands.

There are several other commands I’ve observed that don’t fit the pattern for the winner lamps or a character output. so I’m at a complete loss for what these do and I’d suspect I wont get much further in this project until I get more video footage of some of these unknown commands, or I manage to get my hands on an actual PCB so I can send it these commands and see what it does (Which would also be nice to confirm some of my educated guesses).


Building the Prototype:
Once I got the Arduino and other parts in I started by programming the Arduino to output to a 7-segment display. I used some shift-registers as described in the ShiftOut example program. this allowed me 32 outputs for the 7-segment displays using only 6 output pins. This could have been reduced to just 3 pins if I chained them all together, but since the commands only specify one character at a time I figured it was much cleaner to make each shift-register/7-segment combo uniquely addressable. Each winner lamp gets it’s own output pin just for simplicity. Here’s what my prototype Vs billboard looks like:


The first program just simulated a few of the attract mode patterns I’d seen in various videos (like the one near the very top of this post).  The timing, I’m sure, is way off since I just eye-balled it, but i got to better understand how to output to 7-segment displays through the shift-registers. here’s a brief video of one of the attract mode patterns that I posted to Instagram:

A video posted by Mike (@twistedchu) on

Once I had that down I got set on reading in the actual command data. I quickly discovered that the Arduino was able to read in the data so quickly that I would often read incorrect commands as the data pins were transitioning from one command to the next. I added some code to not act until it read the same command twice in a row there by verifying that it was a legit command. I even setup serial output to display the commands to the serial monitor on my PC with a text description of the command if I knew it, or an “UNKNOWN” text if I did not. When testing this out with various games this let me quickly and easily identify any new and never before seen commands that came through.

To manage the blinking WINNER lamp outputs and allow for blinking at different rates while still checking for new commands constantly I used the millis() counter function to keep track of how long each lamp has been on or off for and check after every loop if it’s time for one or the other to change states.

In any case what I’ve built so far can perfectly replicate the test mode from Virtua Tennis just like the original video I received. Here’s a demo of my Arduino Vs. Billboard running the Virtua Tennis Test mode. You can also see the serial output to my PC. Take note that it can start and stop both sides independently and even blink the WINNER lamps at different timing.

I ignore codes that it doesn’t understand, or in the case of the WINNER lamp commands I simplifying them by programing it to just turn on for anything but the clear command or the one known blink command. Even with only about half of the potential commands known it’s mostly usable. Here’s a demo of it being used in Virtua Striker 3:

If you’re reading this and you know someone who has an original billboard setup that they’d be willing to sell me the control PCB, or even let me borrow it for a few days please let me know. I’d be very interested in getting access to one of these boards to determine the remaining commands and make a 100% compatible Arduino clone.

I don’t want to release my Arduino code publicly until it’s in a more complete form, but if you are so inclined to build your own 7-segment/shift register circuit and would like to play around with it, let me know and I’ll gladly send you what I’ve developed so far.

Expect a follow up post once I have more to share on this project.

Bitches in the Parking Lot…

I’m sure most of you have seen this video:

if you haven’t… well watch it now

I’m looking for someone who can make up some stickers for me on the cheap…

I had an idea and I was inspired…

This was the result after spending 15 minutes capturing the perfect still frame and playing around with photoshop for a while:

Bitches in the Parking Lot...

I would love to have a dozen or two of these as stickers.

Killer Bunnies Case

Years ago a good friend of mine turned me on to a great card game called Killer Bunnies. I instantly fell in love with the game and like most of my hobbies I decided to actively collect all the different expansions and rarities associated with it. The starter box holds a number of cards and Dice and had room to spare for 2 or 3 of the expansion packs. Past that I purchased 4 more expansions but never used them, simply because they wouldn’t fit in the box and carrying a whole stack of boxes around with you when visiting friends and family is rather cumbersome. Not to mention using the starter box you had to be creative when putting the game away to ensure that everything fit.

For months I looked for a reasonable case, poker cases were nice but they only held a small number of cards and the rest of the space was dedicated to chips, not easily modified either. Card cases for baseball collectors were either cheap cardboard boxes that held cards en-masse for storage or books where the cards were made be looked at rather then used. Even card holders for other games were almost always emblazoned with logos and artwork dedicated to that game (like Pokémon or Yugi-oh). I eventually found a company called Vanguard who makes cases for photo equipment. The cases are nice looking sturdy and contain half-cut foam cubes that you can remove to appropriately store your equipment. Most of the cases were too thin or small for what I needed but I finally found a case with a depth appropriate to fit cards, the Vanguard VGP-3202.

Killer Bunnies Case (Vanguard VGP-3202) Killer Bunnies Case (Vanguard VGP-3202)

Removing a few foam peaces you can easily create rectangular shapes just popping out foam with your hands. Each foam square is 1/2 inch by 1/2 inch and there are 2 depths, half way down the case and all the way down the case. (~2 3/4 inches total depth)

Killer Bunnies Case (Vanguard VGP-3202)

After determining the layout I wanted to use I removed all the appropriate foam pieces and did a test fit. I was careful to nail down the layout before I started and not break-off any foam that I didn’t intend to. I suppose I could have tried to glue some of it back on if I made a mistake but luckily that didn’t happen.

Killer Bunnies Case (Vanguard VGP-3202)

now that I have the cards in it would seem that the lid requires pressure to close completely. This would be find if I was using it to hold camera equipment but I’d rather not put pressure across the cards. They have a slight amount of pressure across them horizontally and that holds them in place, I would imagine vertical pressure from the uneven foam lid could potentially cause damage to the cards down the road.

Killer Bunnies Case (Vanguard VGP-3202)

Checking the depth of the lid’s foam with a needle there is more then enough space for the lid to close comfortably if I remove the foam. Carefully pulling the foam out and testing this proves correct. But now I have a different problem.

Killer Bunnies Case (Vanguard VGP-3202)

The glue used on the lid is some nasty stuff, breaking out my trusty Goo-Gone (never failed me in the past) only seemed to make it worse! After scrubbing at it for a half hour and wasting nearly a quarter bottle of goo-gone to no avail i decided it might be best to cover it up. The walls of the case are covered with a a thin foam material similar to what you might find in a crafts store. Off to Walmart down the street I picked up 2 sheets of foam for 48 cents a piece, even better the foam has a peel and stick backing, so I wont even have to break out the spray adhesive. While I was there I had the idea to affix an envelope to the lid to hold the manuals. Now that the original egg-carton foam has been removed there is ample head-room for the game manuals. So picked up some envelopes while I was there.

A single sheet of the foam covered the base of the lid perfectly covering up the bulk of the ugliness.

Killer Bunnies Case (Vanguard VGP-3202)

Unfortunately there was some glue spillage from the original foam on the walls as well so using a razor blade (and a scrap 2×4 as a backer to protect my desk) I cut some strips out of the second piece of foam and re-covered the inside walls of the lid

Killer Bunnies Case (Vanguard VGP-3202)

Once the lid was completely lined in fresh foam I put an envelope down for a test fit. I specifically went for a square flapped envelope as opposed to a triangle cut. I also have enough foam left over that I’ll be able to cover the envelope once it’s in palace.

Killer Bunnies Case (Vanguard VGP-3202)

I peel off the backing from the remaining foam sheet and center the envelop with the bottom aligned along once edge. I then cut off a bit of the envelope’s top so it’s the same size as the foam. The foam should hold it in palace once installed but to keep from accidentally putting the manuals BEHIND the envelope as opposed to IN the envelope I placed a thin strip of electrical tape along the back edge of the envelop that will create a smooth connection between the lid and the envelope making it easier to open the pocket and slide in papers.

Once that’s done the case is ready for use, and holds all the current decks as well as leaving space for the future installments

Killer Bunnies Case (Vanguard VGP-3202)

I’m very please with how the case turned out, it’s portable and durable and holds everything current and future which is exactly what I was looking for. Since it was originally intended as a camera case it has locks on the latches which is also very beneficial considering the card collection inside is easily worth over $100.

Saturn Ion Gen-Y Package

Saturn Ion Gen-Y Package

During my Senior year at Rensselaer I worked on special team of students in conjunction with General Motors tasked with developing an options package for the Saturn Ion that would appeal to buyers in the “Generation Y” demographic.

We spend a good several months doing nothing but market research, then sketched and brainstormed based on then, then made photoshop and CAD concepts, then more market research to validate our ideas.

Saturn Ion Concept 1Saturn Ion Custom Wheel CAD

Once all that was done we made some prototypes. Most of the prototypes were pretty lame and really poor attempts at recreating what was in the sketches. While not the prettiest thing in the world my good friend Brandon and I spent nearly 72 hours straight recreating, in the flesh, the most popular front facia concept. I had created numerous concept facias using photoshop and the marketing guys determined that the “J1” concept was the clear winner. The “J’ stood for Japanese as the design used queues from Honda and Nissan sports models. I was pretty pleased with the outcome.

Saturn Ion Facia Prototype TopSaturn Ion Facia Prototype Front