StarEagle: Defenders of the Galaxy Game Reveal!

StarEagle: Defenders of the Galaxy
Game Reveal!


     Way back during Fall 2015, for graduation from RMU with my now-obtained, B.S. Engineering w/conc. Software Degree, all engineering students had to take a class known as Integrated Engineering Design (IED) class. Basically, this class was a senior project, where students would use their knowledge and skills learned throughout their college career in order to research, to engineer, and to make/do something related to their engineering major.

     As frequent followers of EagleSoft Ltd and this blog may already know, earlier during my Software Engineering college career during Fall 2014 semester, I designed Ultra Air Hockey DX in Unity3D/C# for PC and Android. This game was a deluxe, 3D version of Ultra Air Hockey, which was my first real video game written in QB64. UAHDX was created for Fundamentals of Software Engineering class, which received an "A" for the class project, which received RMU's Software Engineering Award in Spring 2015, and which was my first Unity3D/C# game. Fundamentals of Software Engineering basically taught about the basics of proper, industry-standard Software Engineering practices (Software Requirements, SDLC/waterfall and other scrum-based methods, basics of Software Verification and Validation, Gantt Charts, and other tools for proper project management.)

Original game prototype

Ultra Air Hockey DX Trailer

Academic achievement unlocked!

    During Spring 2015, the fellow classmate/co-developer of Ultra Air Hockey DX and I had to take Distributed Systems class (but at different time slots, unfortunately). All students taking the class (regardless of time slot) had a class project of writing an application utilizing distributed systems concepts. Basically, Distributed Systems class taught about distributed systems architecture, which is distributing computing power between multiple machines/servers over a local network or across the Internet. The project was to write an application fetching data from a database in a language of choice, from both a primary and a secondary server. If the primary server went down, the data should be fetched from a redundant, secondary server. (One requirement for the project intentionally was to disconnect access to the primary server, and prove that the secondary server would kick in for usage.)

    For the Distributed Systems project, a different classmate and I took up an alumnus' unfinished Distributed Systems project, which was written in MIT App Inventor Classic (eww) for Android and called The Equator. This unfinished application was an educational application which would fetch a mathematical equation name, the equation itself, and an image related to the equation from an online database, cache everything offline into a local database on the device, and display all of the equations in a list. The images were hosted on The Equator's project page at EagleSoft Ltd. Once an equation was clicked from the list, it would bring up the default email client on the device, and allow you to send an email to somebody with all of the equation information. If the primary server went down, the secondary server would kick in, in order to download and to update the local, offline database cache on the device.

   The other classmate and I finished The Equator project, by fully implementing the features detailed in the previous paragraph. We imported the project into MIT App Inventor 2, which is a fake, noobish "language" and "IDE" that allows younger programmers to write Android applications by connecting literally code blocks (graphical puzzle pieces with language syntax keywords on them, and other interconnects for parameters and data for each language keyword). This programming "environment" abstracted away both Android programming internals and networking support (no need for handling networking sockets or ports), but had the drawback of having to write complex if/then/else blocks to get everything to run. Overall, MIT AI2 is really meant for younger programmers, instead of college students (whom really should be writing code by then in real programming languages/IDEs, such as C# or Visual Basic in Visual Studio), but the only reason I had to use it was due to the original, unfinished application being written in MIT AI Classic ¯\_(ใƒ„)_/¯.

The Equator app icon

Main app form

  Meanwhile, my other classmate (the UAHDX co-developer) at his Distributed Systems class wrote a simple Unity3D/C# PC tech demo game, called Colonial Combat. This game was a simple prototype, which was a 1-on-1 2D fighting game, consisting of two recolored Megaman characters looking like some school's mascot. Players could walk around, jump, and hadouken swords to deplenish each other's health. No endgame scenario was programmed in (the game would just continue running on player death). To comply with the class' projects requirements, the game had simple online multiplayer support. Two machines running the application within a wired LAN network could type in each other's IP address in an UI dialog box within the game, could connect to each other, and then control one of the characters and play against each other. The game utilized RPC functions, so no intermediary servers were needed (it just did a direct IP connection for online multiplayer). The game had a bug where if you jump and collided with level geometry properly, the player could rotate, and thus would cause movement to move parallel with the new rotation, causing space-like physics. The game was simple, but very incomplete. That classmate graduated in Spring 2015.
   After the release of Ultra Air Hockey DX, I had plans to work on a new, more ambitious Unity3D/C# game. During summer 2015, during lunchtime breaks at an internship, I was working on a new Unity3D/C# game called StarEagle: Defenders of the Galaxy. At the time, it was a game planned to be a Shadow Squadron/Stellar Assault (Sega 32x) 3D space simulator shmup clone. Unfortunately, all of the Unity3D project files were lost sometime after Fall 2015, except for the game's WIP music (which was at the time uploaded and re-downloaded to/from EagleSoft Ltd's music section), a wallpaper of the title screen, and a promotional 3D printed model of one of the game's characters (King Flight). All I had of the game at that time was a rudimentary Main Menu, a Training test level (where you could fly your spacecraft StarWing in a 6DoF environment and shoot down asteroids), some music and sound effects, a simple FMV system, and an introduction FMV. The game had no UI, no endgame scenario, and literally was just a test level prototype for flying.

Shadow Squadron (32x) Review

   Come Integrated Engineering Design class, and my group and I had to decide whether to make a Unity3D/C# video game of StarEagle or finish my other classmate's Colonial Combat video game. Due to lack of 3D experience for the game's scope, due to the StarEagle's project scope being too large for the class' timeline, we chose Colonial Combat instead. Post-graduation in 2016, I was underemployed for a year in fast food, while working on finishing Colonial Combat outside of school and Socket the Hedgeduck. Fortunately, I then got hired at a local game studio and from 2017-Fall 2018, and even got two commercial games released there (Coffee Crisis for Sega Genesis as co-developer and Coffee Crisis for PC/Xbox One in Unity3D/C#). Unfortunately, I ended up leaving that job in Fall 2018, and have been underemployed since at the time of this writing.

  Due to development on Socket the Hedgeduck and Colonial Combat in 2016, due to having a professional gamedev gig from 2017-2018, and due to losing most of the Unity3D project, StarEagle: Defenders of the Galaxy went on the backburner. However, now with a lot of freetime on my hands outside of underemployment jobs, StarEagle is now back in development! Due to having a lot more experience with Unity3D (including new professional Unity3D assets to streamline and simplify development), I believe I now have the means to realize the game's technical and artistic vision.

About StarEagle: Defenders
of the Galaxy

    "StarEagle: Defenders of the Galaxy” is an in-progress, story-driven, Indie shmup video game that is a combination of a 3D scrolling on-the-rails and free-roam shmup game. It is a story-driven game with an art style modeled after the early, flat-shaded, low-poly 32-bit and 64-bit 3D polygon video games. It is heavily inspired by classics such as StarFox (SNES), StarFox 64 (N64), and Stellar Assault (Sega 32x, aka Shadow Squadron). The game has on-rails flight sections, 3D free range sections (similar to "All-Range Mode" in StarFox 64), and 6DoF space battles similar to those in Star Wars Battlefront 2 (2005 Pandemic, not the EA garbage), and player movement/action control scheme similar to StarFox 64's. Game planned to be released sometime late during 2020 for Windows, Mac OSX, and Linux through Steam.

   Essentially, the game is a StarFox 64 clone but with an additional flight mode of Space Mode for 6DoF levels, and has the following unique features:

  • Original, hand-drawn, low-poly, flat shaded 3D polygon models
  • 16-Bit MS-DOS -like UI graphics (White-on-Blue text and some ASCII art)
  • Sega Genesis and Soundblaster chiptune music and sfx 
  • SteamWorks support
  • StarFox 64-styled cutscene dialog system for teammates and enemies
  • StarFox 64-styled gameplay (including 3 helper teammates)
  • Gameplay
    • Standard StarFox 64 StarWing actions
    • 3 gameplay modes
      • Current mode changes at different points in levels
      • On-the-rails mode
      • 3D Free Range mode
      • Space Mode
    • Powerups
      • Same types as in StarFox 64
      • Rings
        • Checkpoint
        • Small Silver Rings
        • Big Silver Rings
        • Gold Rings
      • Bombs
      • Laser powerups
    • Story Mode
      • Ability to save/load up to 3 game slots
      • Levels
        • 7 missions per story
        • Branching story paths
        • 2 different endings (good/bad)
        • 18 levels available
        • Medals earned for beating devteam's highscores
      • Map system
        • Each planet has up to 2 available paths
        • Map system rotatable on X, Y, and Z axises
        • Map Menu
          • Ability to change which path to take on certain planets
          • Retry the previous mission (sacrifice a life)
          • Go back to main menu
    • Training Mode
      • Teaches the player how to play the game
    • Video Settings menu
      • Allows tweaking of various retro video settings
      • Can preview current settings
        • Console palette colorspace in use
        • Sample paletted image with the colorspace
        • Rendered scene displaying settings
      • Tweakable graphics
        • Retro palette colorspace to render graphics in
        • Dither texture style, strength, and size
        • PSX Shader texture distortion
    • VectorVision™
      • Branch of Linux MPV co-utility that can vectorize the game's graphics and output vector graphics to
        • A retro, CRT-based monochrome oscilloscope in XY Mode
        • Raster-based CRT monitor converted to a fancy color vector monitor using Fred K's kit.
      • Uses a custom VGA circuit
    • Peripheral support (Unity3D Rewired library)
      • Remapping of buttons (flightstick/gamepads) and of keys (keyboard)
      • Supported peripherals
        • XBox 360/One controller support (XInput)
        • Generic dual-analog stick
        • Generic HOTAS flightstick support 
        • Saitek ST290 Pro flightstick support
        • "Unknown" controller support
          • Everything else that Rewired library doesn't natively detect
          • The "unknown controller" will work as long as it supports the minimum amount of axises/buttons the game uses for remapping everything
    • Various game options
Full details and progress on the game's development can be found both at the game's project page and here at the blog, respectively. Below is a video of a test level showcasing a quick engine test.

More details about the game's development as it comes at this blog!

DreamPi: DIY Industrial LVI

DreamPi: DIY Industrial LVI

    In a few prior posts, I have detailed some information about getting a Sega Dreamcast back online by using a DreamPi. A DreamPi is a standardized set of software (a customized Linux distro) and a set of hardware created by a fellow named "Kazade" which will create a simplified DC-PC server, for getting a Dreamcast back online to connect to the Internet for browsing and online gaming, via resurrected, private game servers. In a few other posts I have also detailed using and writing a customized DreamPi NOOBS-compatible image that I have created for adding the DreamPi Linux distro onto an SD card in a mulit-boot setup (via NOOBS/PINN bootloader).

   One of the main hardware components that is often required for setting up a DreamPi is a Line  Voltage Inducer. Most of the dial-up 56k modems models built into most Dreamcast models require voltage on the red wire (+power line) of the RJ11 phone cable; a Line Voltage Inducer (LVI) is a simple circuit, consisting of an electrolytic capacitor, a resistor, and a 9V battery, which will apply the proper voltage to the red wire (+power line) of the RJ11 phone lack for proper operation of the Dreamcast's dial-up 56k modem.

Simple depiction of an LVI
(Not electrically functional just depiction, duh)

  Although fellow DC scener PCWizard does sell both awesome, Linux-compatible USB RJ11 modems for DreamPis and even complete DreamPi kits at the Dreamcast Live shop, when I built my DreamPi back in January 2018, I built my own kit from scratch, by shopping for the components on eBay and making my own DIY LVI. (If you are not technical, if you would just want to have a simple complete kit, and if you have the money, I do recommend buying from the Dreamcast Live shop in order to support both DC Live and the scene.) Making my own DIY kit was done both to save money and for the fun/learning factor; if I remember correctly, I gathered everything for about $50, so I saved some money. (In comparison, at the time of this writing, a complete Standard DreamPi kit from the Dreamcast Live site is USD $79.99, and a Raspberry Pi 3 DreamPi Kit with WiFi support is $99.99 . My DreamPi consists of a used Raspberry Pi Model 2B kit from eBay, which uses an Ethernet connection for the internet. I saved a little more money since I already had spare components available for assembling the DIY LVI.) For the DIY LVI, I just cut open a spare RJ11 cable in half, and soldered the LVI circuit in between the halves on a spare RadioShack prototype PCB. (RIP brick and mortar RadioShack stores, you are still greatly missed in 2019 ๐Ÿ˜ข.)

   At a previous job many years ago, I once had a summer job doing some contract EET work of wiring up some safety-related electrical equipment, which was my highest payable job to date (my High Score) of a whopping $20/hr. The main task of the job was cutting open RJ45 Ethernet cable, twisting certain pin pairs of the cable, crimping the pairs into spade terminals, and inserting the spade terminals into screw terminals of the safety devices, in order to wire up a Modbus protocol cable for the devices. Since that job, I have disliked dealing with RJ45/RJ11 cable, due to how difficult stripping, splicing, and dealing with the small gauge of this stranded wire was.

    Like with the old job, one problem I found with creating that LVI (which I will now call "LVI 1.0" throughout the article) was that it was flimsy and hard to solder down. Some wizards just make their own DIY LVI by soldering the circuit components directly between RJ11 wires (no PCB used, like with the simple LVI depiction above); I find doing soldering in between wires like that very difficult. Standard RJ11 wire is both very small gauge wire (either 22 or 24 AWG gauge wire, with 24 being the standard) and is usually stranded (the wire itself has various strands, must be twisted for easy soldering, and soldered down properly as a whole for stable electrical conductivity). After some attempts, for LVI v1.0, I soldered down the RJ11 wire onto the board, and had to apply some electrical glue to prevent strain on the fragile, soldered RJ11 wire as the ends moved. Despite this, however, some of the RJ11 wires soldered down still would sometimes break off from the PCB, and I would have to redo the soldering for the affected wires. It was annoying.

LVI v1.0

  A few months ago, after repairing and breaking the circuit for a 2nd time, I decided enough was enough, and to design a solderless, industrial-strength LVI. Instead of even soldering and dealing with the small, fragile, stranded gauge of wire that is RJ11 wire, I designed a better LVI (LVI v2.0). LVI 2.0 is a far more stable design, consisting of x2 4P4C RJ11 wall plates (which utilize user-friendly screws and wire terminals for each pin), a mini breadboard for the LVI circuitry itself; shorter, replacement plate screws and washers; and small gauge, solid-core, copper wire and 22-16 spade terminals to connect both RJ11 wall plates together and to wire up the red wire (power+ pin) to the mini breadboard with the LVI circuity. To wrap up the industrial-strength LVI, it is all enclosed in a fancy metal box, with the wall plates screwed into the top lid and bottom case (with washers), and cuts to insert the RJ11 keystones.

  The whole thing cost ~<USD $15 if I remember correctly, and was pain-free to create (compared to dealing with that pesky RJ11 24 AWG gauge wire).

Parts/approx. cost:
  • Metal box
    • Acquired on sale from a Pat Catan's closing sale
      • Pat Catan's was a local craft store, which also went RIP like RadioShack earlier this fall ๐Ÿ˜ข.
      • It's inventory and business has since been absorbed into Michaels another local Craft store
    • Equivalent box from Michaels
  • RJ11 keystone wall plates
    • Steal of $0.50 each from a Pittsburgh Goodwill store ๐Ÿ˜€
  • Box of 20 22-16 Spade Terminals

  • Shorter RJ11 plate screws and washers for about $2 total both from Lowe's
    • Shorter screws needed because screws that came with plates were too long to fit into box
    • Washers needed to clamp down wall plates to metal box halves
  • LVI Circuitry
    • 1ฮผF electrolytic capacitor
    • 390ฮฉ resistor
    • 9V battery terminal
    • Some from either RadioShack or from part grab-bags elsewhere online
  • Mini breadboard
    • $4 for pack of 6 from Frentaly (eBay)
    • Not depicted/used yet; to be bought later
    • Temporarily using a small segment from my main breadboard (which currently has a prototype Sony Super Multi circuit on it)
     Assembly was easy; just measure and Dremel out holes for the RJ11 wall plates, drill out holes for the plate screws, screw in the plates (with washers inside the box), and then assemble solid-core, copper, jumper wires for wiring up everything. The drilled screw holes and the square cuts for the keystones were filed down (they were too sharp initially). Each jumper wire was cut and stripped, and spade terminals applied to the ends as needed. The black, yellow, and green RJ11 pins between both wall jacks were respectively connected by screwing the spade terminals jumper wires between them (direct connection), while the red pins (power+) from each plate was connected via spade terminal and into a small breadboard (bare solid wire). This breadboard contains the LVI circuity itself for applying the voltage.

   And voila, a high quality, industrial-strength LVI was created! This LVI has served to be much more sturdier than v1.0, and has been working flawlessly since. Never again do I have to deal with that pesky RJ11 wire for tweaking. Pictures below of the industrial-strength LVI masterpiece.

Entire DreamPi setup
(excuse the mess, semi-temporary living quarters)
Raspberry Pi

Sega Dreamcast

Industrial Strength LVI
LVI Circuit (on temporary breadboard)
LVI Setup

Connecting to the internet with DreamPi
and Industrial-strength LVI
(DreamPi distro output,
Quake 3 Arena,
PlanetWeb connecting to EagleSoft Ltd.)

    EagleSoft Ltd. and Labs has been kinda quiet lately, but behind the scenes, I have been working on a new ROM hack (a Knuckles Chaotix hack for the almighty Sega 32x), and EagleSoft Ltd's first self-published, commercial, Unity3D/C# Indie video game, titled StarEagle: Defenders of the Galaxy. More details about both games in the next 2 blog posts.

   Also, that repair of getting that Sega Model Virtua Fighter arcade board is still ongoing (saving up money to gather parts needed), and also a blog post about getting that awesome NeXT Cube boot up coming soon (also saving up money for parts).

Stay tuned for those upcoming blog posts and game announcements!

DreamPi NOOBS-compatible image updated (v1.2/v1.7 DLE)

DreamPi NOOBS-compatible
image updated! (v1.2/v1.7 DLE)

  During 2018, I released a DreamPi NOOBS-compatible image for Raspberry Pi for the Sega Dreamcast. A DreamPi is a standardized set of software (a customized Linux distro) and a set of hardware created by a fellow named "Kazade" which will create a simplified DC-PC server, for getting a Dreamcast back online to connect to the Internet for browsing and online gaming, via resurrected, private game servers. The stock DreamPi image is one which must be written to the entire SD card, and doesn't easily allow a multi-boot setup with other OSes on other SD card partitions. This DreamPi NOOBS-compatible image is compatible with NOOBS or (by extension, the recommended, superior) PINN. NOOBS is a simple bootloader, which allows one to install NOOBS-compatible distro images in such a way as to allow a simple multi-boot configuration, while PINN (derived from NOOBS) is a enhanced version of NOOBS, which fixes some design flaws and adds new useful, convenient features. PINN is recommended over NOOBS.

  The DreamPi NOOBS compatible image works with NOOBS/PINN, and allows one to install a DreamPi distro with others in a multi-boot configuration. Recently, the stock DreamPi image was upgraded to v1.7 DLE. This has the same features as v1.7, but with the speed stability bugfix applied and an updated DreamPi WiFi Config Wizard packaged with it. 

Also, since the original v1.7 was released around last summer, 3 new Dreamcast games have had their online functionality resurrected:
  • Samba De Amigo
  • Sonic Adventure 2
  • San Francisco Rush 2049

You can read the Dreamcast Live blog post and forum thread from the previous link for information about the Changelog for v1.7 DLE.
   I have updated the DreamPi NOOBS-compatible image against the updated DreamPi v1.7 DLE stock image. Summary of changes for this version of the image:
  • Updated NOOBS image against v1.7 DLE DreamPi image
  • Updated installer slideshow
    • Added optional WiFi connection to the list of minimum hw requirements
    • Updated list of online-compatible games, and added link to list of online games at Dreamcast Live website
    • Added slide with info about DreamPi Companion app
    • Added slide with info about the DreamPi WiFi Config Wizard
    • Removed slide about the speed bugfix

You can download the latest DreamPi NOOBS compatible image and read the guide at this EagleSoft page.

Have fun playing online and having DreamPi multi-boot with other OSes on NOOBS/PINN!


Virtua Fighter Arcade Repairs, Part I: Introduction

Virtua Fighter Arcade Repairs
Part I: Introduction

  June 2019 was a great month! While surfing the local Pittsburgh Craigslist video gaming/electronics ad sections online, I came across a listing for a Virtua Fighter (Sega Model 1 arcade) ROM board set, with the owner selling it for $20/offer. I've never owned an arcade machine before (let alone an awesome Model 1 machine), and for the super cheap price of $20, I couldn't refuse to check it out!

Background Information
on the Sega Model 1 arcade hardware

   The Sega Model 1 arcade system was developed by Sega (specifically by the legendary Yu Suzuki and his AM2 team) from 1990-1992 as their very 1st dedicated arcade machine designed to handle flat-shaded, polygonal, 3D graphics, and was released to the market in 1992 with the launch title Virtua Racing. Ironically, Virtua Racing was developed internally as a game to test the Model 1 system's raw power; however, the game proved to be such a success at Sega, that Virtua Racing and the Model 1 system were commercially released anyways to the public. During this era, Namco was the industry leader with 3D polygon technology with its System 21 arcade hardware running games such as Galaxian^3 and StarBlade; Sega intended to compete with Namco with its new Model 1 hardware. Sega's new polygon crunching arcade machine to hit the block was originally known as the "CG Board", but was retroactively given the name "Sega Model 1" after its successor, the Sega Model 2 system, was created a few years later. The Sega Model 1 system handled rendering its cutting-edge, flat-shaded, 3D polygon graphics by using some Fujitsu MB86233 DSP chips (aka the TGP chip, Sega 837‑7894), and can output anywhere between 120k-410k polygons/sec based on the rendering mode. Some of these TGP chips were stock chips, other ones were modified with custom Sega microcode in order to be used as coprocessors, and others were modified with T&L hardware 3D rendering functions. The TGP chip has hardware support for handling 32-bit floating point, 32-bit fixed point, and 24-bit integer data types, which greatly helped with speedily pumping out the math needed to plot high-precision 3D polygons. Other early 3D games of that era may have used custom 16 or 32-bit fixed-point data types and math on CPUs that didn't support hardware-based fixed/floating point calculations (they used fixed point software emulation), and thus had much overhead and wasted CPU cycles in handling the 3D math needed. Due to the overhead, such games ran at low FPS and had low-precision, jittery polygons. Such games include the original Doom on PC (when not using an Intel x87 FPU coprocessor) or StarFox on the SNES.

A TGP chip

    Model 1 machines do not use the now-standard JAMMA wiring, but a machine-specific wiring setup, and they are "medium resolution" machines, meaning that they use RGBS CRT monitors running at 24 kHz and at a resolution of  496×384 px. As for sound, the machines use two MultiPCM sound chips. The MultiPCM chip is a custom Sega 315‑5560 chip based on the Yamaha YMF278 (OPL4) chip, which has been customized with the FM synthesis removed and just having Wavetable PCM support. These chips output 28 PCM channels running at an audio data rate of 16-bit, 44100 KHz stereo. One MultiPCM chip is used for music, while the other is used for sound effects. On the MultiPCM sound board, the MultiPCM chips are controlled with a Toshiba TMP68000N‑10 (a Motorola 68k chip) at a speedy 12 MHz, and with a Yamaha YM3834 chip (which is only used for sound timing). The machine also has an I/O board for handling the game's controls, and is run by a Z80 CPU at 4 MHz. The main machine itself runs on a NEC V60 CPU, running at a whopping 16 MHz. This CPU interfaces with all of the hardware and subboards for controlling the game.

Sega Model 1 Sound Board

 Sega MultiPCM chip

 MultiPCM music sample
(Guns and Wings Yak 141, Wing War)

  Sega Model 1 arcade games were incredibly cool and technically impressive for their time. While other home video game consoles during 1992 still were primarily using lame, boring 2D sprite and tilemap-based games, the Sega Model 1 system blew them out of the water with 60FPS, flat-shaded, 3D polygon graphics. Unlike with some of the early 3D polygon games (such as StarFox on the SNES) which were software-rendered, had low FPS, or had jittery polygons, the Model 1 was able to hardware render accurate, high-precision polygons at a whopping, steady 60 FPS, and even had hardware T&L to accelerate everything too. Compared to games on the Namco System 21, the Model 1 ran at a solid 60 FPS, and many of their games supported multiplayer and multiple camera angles. The flat-shaded 3D models on the Model 1 were bright, crisp, colorful, fast, and plentiful, and the MultiPCM music and sound were rich and deep. Due to the high FPS, games ran fast, and gave a feel of high-powered 3D arcade action!

    Due to being Sega's first cutting-edge 3D arcade machine and having some customized chips, Sega Model 1 hardware was expensive back in the day, and these machines weren't too common in the arcades compared to other games. Due to this, during its lifespan (1992-1995), only 5 games were ever released for the Model 1 hardware:
  • Virtua Racing (1992)
    • A high-speed F1 arcade racing game
    • Launch title
    • Alternate game called Virtua Formula available  
      • Virtua Racing but with cabinet machine linking support
      • Utilizes a special Comm board for linking up each cabinet (ran by a Z80 CPU at 4MHz)
      • Medium sized attraction game
      • 4-8 players per attraction
      • Spectator mode of current multiplayer race
      • "Virt McPolygon" announcer guy
    • Uses a special Motor PCB to handle the steering wheel and force-feedback
    • Game ports
      • Sega Genesis (SVP cart)
      • Sega 32x
      • Sega Saturn
      • PS2 (Sega AGES)
      • Nintendo Switch

  • Star Wars Arcade (1993)
    • 3D Star Wars game
    • Shoot up Tie Fighters in space, attempt to destroy the Death Star from within
    • Game ports
      • Sega 32x

  • Virtua Fighter (1993)
    • 3D 1v1 fighting game
    • One of the world's first major 3D fighting games
    • Game ports
      • Sega 32x
      • Saturn
      • PS2

  • Wing War (1994)
    • 3D aircraft dogfighting game 
    • No home ports available

  • Dennou Senki Net Merc (1995)
    • Rare Sega-VR compatible game
    • Virtual reality land-shmup game
    • Only 70 arcade machines in existence, never officially released to the arcades
    • No home ports available, not emulated in MAME yet
Brief history and legacy of the
Sega Model 1 arcade hardware

  Virtua Racing and Wing War were unique 3D games for their time, having high-speed driving/flying action, and for having buttons to allow for multiple, dynamic camera views. Both games had multiplayer support. Virtua Racing has a pit section, which has some blocky, bone-rigged characters that animate and perform maintenance on your car, and some characters which celebrate when you win, which were quite cool and creative features for a racing game. Wing War was a 1v1 2P cabinet, while the twin-cabinet version of Virtua Racing was 2P. There also existed a deluxe version of Virtua Racing called Virtua Formula, which was a medium-scale attraction with either 4 or 8 life-sized car cabinets, allowing for 4-8 players to compete against each other in a multiplayer race. These machines could be linked amongst each other (using a unique Model 1 communication board), and had a center screen on top with a spectator view of the current gameplay and a commentator named "Virt McPolygon". Virtua Racing/Formula were the only games to use the Motor PCB board for the Model 1 hardware, which enabled force feedback and support for a racing wheel controller, and Virtua Formula was the only game to use the communication board for cabinet game linking.

Virtua Formula: BIG-time racing!
   Wing war was relatively unique for being a 1v1 dogfighting flight arcade game, while other 3D flight games at the time were just sluggish flight simulator games. Star Wars Arcade was the 1st 3D polygon Star Wars game (excluding the Atari wireframe, color vector-based games), and had a huge sense of scale. Dennou Senki Net Merc was an incredibly rare, Japanese-only VR-based game, which used a Sega VR headset. Only 70 machines were produced, and the game itself isn't fully emulated in MAME yet.

  Virtua Fighter was a 1v1 fighter game, using bone-rigged 3D polygon fighters that animate, and which featured simplistic arenas, realistic movement and physics, and plenty of different fighting moves. Virtua Fighter is cited by most as being the world's first 3D fighting game, and it revolutionized the fighting genre of video games, as well as kicked off 3D animation for bone-rigged humanoids. It and Virtua Racing/Formula popularized the usage of 3D graphics among a wider audience of video gamers and arcade goers, and its pioneering development into 3D graphics led the way to development of texture-mapped 3D during the 5th Video Game Generation (particularly for the Sega Saturn and the Sony Playstation consoles). Virtua Fighter acted as the basic design template for 3D fighting games, and helped inspired such fighting franchises such as Namco's Soul series, Tecmo's Dead or Alive, Namco's Tekken, and obviously Sega's own Virtua Fighter series.

Virtua Fighter gameplay
(real Model 1 hardware)

The Craigslist Virtua Fighter board

    Back to the original topic, according to the Craigslist ad for the Virtua Fighter board, the owner said that the PCB board stack powers on and works, but that the "polygons disappear". Also, the listing was just for the 3-board PCB stack itself (no other boards, power supply, or wiring harnesses). The 3-board stack consisted of the following subboards:

  • Model 1 Memory BD
    • This board is the game ROM data itself (Virtua Fighter)
    • Sega part no. 834-10170
    • Smaller, top board
    • Board which contains
      • PROM chips
      • A few EPROM chips
      • Chips types
        • AMD AM27C1024
          • PROMs
          • 40-pin chips, DIP40 package
          • 16-bit
          • 128 KB
          • Virtua Fighter game code/data
        • ST Micro 27C040
          • Some EPROMs, most PROMs
          • 32-pin chips, DIP32 package
          • 8-bit
          • 512 KB
          • Virtua Fighter game code/data
        • ST Micro 27C160
          • PROMs
          • 42-pin chips, DIP42 package
          • 16-bit
          • 2MB
          • Virtua Fighter polygon data

  • Model-1 CPU Board
    • Sega part no. 833-10016/833-10169 (middle board)
    • Sega part no. 837-7864-02 (bottom board)
    • Boards which contain the Model 1 hardware itself (Video and NEC V60 CPU)

   I figured for the low price, I would pickup and purchase the Virtua Fighter ROM board (which I happily did, for $25), begin gathering the other components online needed to assemble a working VF Sega Model 1 arcade machine, and repair the video issues (if any). Since I do not currently live at my own, permanent place (and thus don't have the room for a full-sized, upright arcade cabinet at the moment), I would be looking into consolizing the game into a wooden box, with long, wired arcade stick boxes for controls. The seller and I chatted, and he had this spare board due to the one in his working VF machine going bad. He tried replacing it with this one, but it had the issue of polygons disappearing; he ended up replacing the board with another which worked perfectly, but was selling this spare one due to the polygon flaw. Hopefully the polygon issue will be easy to detect and to fix!

    During the trip home, I stopped at a nearby yard sale, and found a super rare NeXTCube computer and B&W MegaPixel monitor, many old Linux, Sun, and Digital Equipment Corporation (DEC) tech documents and discs, and what appears to be development hardware of a networking device from DEC, all for $10. I believe the sellers at that yard sale were the family of the owner of the equipment (the original owner I am very sure was a senior ex-DEC or ex-IBM employee with diabetic problems). (That pickup/repair log of the NeXTCube and other items from the yard sale to be discussed another day in an upcoming blog post ๐Ÿ˜€. )

The Potential PAL Problem

    Once back home from the trip, a premlinary Google search on my part found a few forum posts mentioning that early Model 1 boards (especially Virtua Fighter) have a tendency of the solder joints breaking off on some of the TGP chips, due to the manufacturer using not enough solder on the chips' pins, and causing the polygons to disappear once the solder joints get loose. One thing I did notice after I got home, unfortunately, was that there was a sticker on the CPU board reading "PAL.A", which could mean that this board might be an "A" revision meant for PAL regions (50Hz PAL vs. NTSC 60Hz video used in the U.S. and a few other countries). After emailing back the seller asking if this board were PAL (and if it perhaps the polygon issues were due to him mixmatching a PAL board inside an NTSC machine), he replied that the board is "probably" PAL. If the board is indeed PAL, this will probably make assembling a working Virtua Fighter arcade machine harder, since I'll probably have to get matching PAL components for the other subboards used by the Model 1 hardware, as well as power and video region converters to get it to work on the US's power standards and with the NTSC-U video standard of my monitors. (I unfortunately live in the United States.)

50Hz PAL is not my pal

    One fact I cannot seem to verify through online research is if Model 1 machines really have separate PAL or NTSC versions of machines for all games like with game consoles, and if so, how badly do parts between the 2 regions differ. MAME for example only has one Model 1 game that has ROM dumps for different regions in the Good MAME romset (separate Wing War ROMs for US, Japan, and World, with assumed video formats on my end of NTSC-U, NTSC-J, and PAL respectively). However, the Sega Retro page for Virtua Fighter shows 3 different release dates/prices for Virtua Fighter (October 1992 for both Japan and Europe, and just the year of 1992 listed for US), so it's possible there are 3 different regions of hardware for the game (unlikely). Perhaps not all region variations of Virtua Fighter have been dumped for MAME yet; either that or the same hardware was released for all 3 regions (at different dates) and shipped with arcade CRTs and hardware that all run at the same frequency and video standard (possibly 60Hz NTSC), with just a different power supply shipped to step up/down the voltage/current from the country's power standards to whatever specs the machine needs. If indeed there is only one variation (universal hardware for all regions), then the separate WingWar ROMs are probably just slightly different ROM sets with language/localization changes. In fact, a quick differencing between the 3 ROM configurations from the current version of the model1.cpp driver in MAME just shows 2 ICs changed between all 3 revision

WingWar region differences
Only 2 IC checksums changed

  The Hardware Hunt

Assuming there isn't a thing as different region hardware for Model 1 games (requiring different region hardware components), in order to get the machine up and running, I will need to gather other Model 1 hardware components for Virtua Fighter:

  • A power supply
  • Appropriate wiring harness or JST NH connectors to wire all subboards together
  • Controls
    • x2 Happ joysticks
    • 12 buttons total
  • Gonbes GBS-8200 Video converter
    • To convert the Model 1's medium resolution 24 KHz EGA graphics to modern 31 KHz VGA graphics
    • Allows usage of 24KHz EGA graphics on an ordinary VGA monitor

  • Sega Filter Board 839-0629
    • Receives the power supply's main power
    • Filters out interference from other electrical or magnetic devices
    • Has individual JST NH connectors which wire to the Model 1's various subboards
    • Supplies the proper type of power to the various components (3.3V, 5V, and 12V where necessary)
    • Most arcade operators consider them unnecessary
      • Sometimes cause more problems than good
      • However, allows for neat, organized wiring
      • Arcade operators can bypass needing the filter board and just directly wire machine components to the appropriate power voltages

  • Sega CPU Connector 839-0630
    • Interfaces between the CPU board (the 3-board stack I have), and the I/O board, provides power
    • Receives the appropriate voltage power from the filter board (or directly from PSU if bypassed)

  •  Sega I/O Board 837-8936-91
    • Contains a 4MHz Z80 CPU
    • Handles the game's control inputs
    • Uses a JST NH 25-pin connector for controls (white jack on the bottom of pic)
      • This connector is actually 26-pin, with one pin unused
      • Array of 2x13 pins (like an IDC25 ribbon cable port)
    • Uses a different connector for motor PCB (long black connector on the right of pic)
    • Connects to the Motor PCB for Virtua Racing/Formula

  • Sega Sound 837-8679
    • Contains the MuliPCM hardware for sound
    • Each game has separate ROMs containing PCM samples
    • Each game has different sound driver ROMs

  • Sega Soundamp 838-10018

    • Connects to the Sega Sound board and amplifies the audio

  •  Sega Ampmixer
    • Connects to the sound board/soundamp somehow and mixes/amplifies audio?


  At the bare minimum, just to power up the machine and check out its functionality, I would need to get some sort of compatible power supply, the appropriate wiring, the filter board (nice to have for organized wiring, but optional if I just want to directly wire components up), the CPU connector, the I/O board, and a GBS-8200 convert for the video output (for displaying the medium resolution video on my VGA monitor). (According to this forum post, the I/O board is necessary to boot up the game.) It is possible to boot the game up without sound or controls wired in (it will run, just no sound or controls). Some of these boards are not very common to find online or on eBay and can be somewhat pricey, so I'll have to save up money and gather components over time to assemble a working machine. Despite the costs, assembling the machine component-by-component would be cheaper than buying a complete Virtua Fighter machine in good condition, hence this repair/arcade machine consolization project. Not only is it cheaper, but it is a fun learning process/project too!

  For the power supply, I could get the original one (heavy, expensive, hard to find, has a weird connector), or I could utilize a standard PC ATX power supply (much easier to find and cheaper). A supplier online used to produce a Sega PSU to ATX adapter, but unfortunately, it doesn't seem to be manufactured anymore. Post #2 in this forum thread has the power pinout from the filter board, as well as some information on a guy's power attempt with an ATX PSU. The power supply would need to be adjusted to apply the correct amount of power wattage and current (not all ATX power supplies can supply the beefy power needed for Model 1 games without cranking the power up, according to the forum thread), and I would need a breakout board for the ATX power wiring (such as this one from RetroElectronik). Fortunately, I've already picked up a cheap ATX power supply from a thrift store, and will just need to make sure it works reliably. The board I have will need 5V supplied to it at a certain power spec for testing its operation.

Moar ATX powa for your ($5) bucks

 ATX Power Supply
Cheap ATX Power Supply + breakout board
+ Model 1 arcade machine = epic win!

    Since I'm making the fully assembled machine as a consolized arcade machine, all of the hardware (model 1 components, ATX power supply, GBS video converter, and wiring) will be housed into a wooden box I'll cut out and assemble. Model 1 machines use a 25-pin connector on the I/O board for the game's main controls. (The connector is actually an IDC26 connector with one pin unused, and is arranged in an array of 2x13 pins. This type of connector is common with wiring up external 25-pin parallel ports to vintage PC motherboards.) The last post in this forum thread has the pinout for Virtua Fighter. For my consolized arcade machine, I'll be placing the controls for each player into smaller arcade-stick styled boxes, which will connect to a custom interface box via an IDC26 ribbon cable.

    This interface box will contain a simple custom circuit with 2 IDC26 input ports (one for each player), and 1 output IDC26 port. The circuit will perform a logical OR between each input port's signals, pin by pin, and will output the resultant control signals to the I/O board's 25-pin input control port. Since each control is wired to only one input switch, one input for the OR gate would always be logical false (0), while the other may be logical true (1) if pressed. (0 OR x) = x. (Example, there is only one Player 1 Kick button between both players). This interface box would allow a standard connection type for all players (IDC26), without doing any funky wiring, and make the wiring simple. Ideally I would use XOR gates for the circuit (since there is only 1 type of each control), but I already have a few OR gate chips handy and they are cheaper/easier to use than XOR chips. Furthermore, I could use this box in the future for additional model 1 arcade games or other machines with a JST 25-pin I/O input port in the future; just wire up different controls and send them over a IDC26 ribbon cable to the interface box. The interface box would be modular, reusable, and useful. Just for fun, I'd also color code some of the controls for my Virtua Fighter machine, based on the player and control type (colors from the Sega 32x port's options screen). Maybe I'll end up creating a FOSS PCB schematic of this interface box, fab a few PCBs on OSHPark, and put up a few kits for sale (and call it the Sega JST I/O Interface Box, or S-JIF for short) ๐Ÿ˜€.

 Common IDC26 ribbon cable
(as seen on parallel port connections
on PC motherboards)

Virtua Fighter controls pinout/color coding

S-JIF Circuit idea
(Virtua Fighter wiring)

Checking the Craigslist VF board for bitrot

   Unfortunately, I cannot do anything with the Virtua Fighter board from Craigslist right now until I get the minimum amount of components ordered needed to boot it up, and then afterwards I will need to verify and look into that "polygons disappearing" problem. Also, only then will I know for certain if the board is indeed PAL and may require PAL-based components (assuming that is even a thing with Model 1 arcade machines). If the polygons issue is due to faulty solder connections on some of the TGP chips, I'll probably have to end up getting an arcade repair person to resolder the chip downs. (I suck at surface mount soldering, and there is no way I am attempting that on a valuable, vintage arcade board I got for dirt cheap and risk ruining the board.)

    In the meantime, I can use my handy GQ-4X4 multi-chip programmer (and ADP-054 16-bit chip adapter) I picked up during 2016 to dump the game's ROMs off of the Model 1 Memory BD, and compare their checksums against the ones in the Virtua Fighter ROM set in MAME. This would allow me to do the following:
  • To verify what revision of the game I have
    • Check if I do indeed have a "PAL.A" revision of game (if such a thing exists)
    • Check if I have some mysterious undumped revision of the game

  • To check for bitrot (if this game is indeed a known revision)
    • Compare checksums between my dumped chips and MAME's for Virtua Fighter
    • Burn new chips for bitrotten chips
    • Rule out bitrotten ROMs as the cause for the polygon issue

The venerable USB GQ-4X4 multi-chip programmer
with 16-bit EPROM adapter:
Chip Overlord!

    Do recall that Sega Model 1 machines are relatively "old" (from the early 1990s). Although PROM mask chips can hold their data for a very long time, they don't eternally, and will begin losing data over a very long period of time ("bitrot"). EPROM chips (those with glass windows on top, which can be erased by exposure to UV light and then reprogrammed) can be slightly more prone to bitrot, even with a sticker on top preventing most stray UV photons from erasing data. To determine what revision of board I have and to rule out bitrotten ROMs from causing the polygons disappearing issue, I dumped my ROMs.

After dumping my game ROMs and comparing the checksums against MAME's only known dump of the game, curiously enough, the Virtua Fighter Model 1 board I have matches 1:1! This means the PCB I have may not be a unique revision or a "PAL.A" version as labeled on the board. (And if it is indeed some type of PAL revision, it uses the exact same game ROM data as in MAME. If the board does differ, it could differ with the other GAL and TGP chip ROMs on the other boards on the stack I didn't bother try dumping, due to surface mount components and other pains.) This fact reduces my doubt of this being a weird "PAL.A" revision, but doesn't eliminate them. Another thing to remember is that the Craigslist guy was able to boot up the game in his machine, but then ran into the "polygons disappearing" problem. Assuming he wasn't trying to put this dubious "PAL.A" version into what probably was his own NTSC machine (if regions even exist for Model 1 hardware, which I doubt), this meant it booted up and was playable (albeit with disappearing 3D polygon graphics). Either that, or the board I got was some type of Frankenstein board: a "PAL.A" board with NTSC roms inserted. Another possibility is that the "PAL.A" label could just be an indicator from Sega meaning that this hardware was sold within PAL regions; the hardware is exactly the same as all other regions.
   Dumping these chips with my GQ-4X4 multi-chip programmer and with my ADP-054 16-bit adapter were pretty easy, once I figured out what chip settings to use for reading them; fortunately for me, 2 out of the 3 chip types (the EPROM types) had their exact chip ID type printed on them. The 3rd type (the 42-pin ones on the right side of the board, which stores 3d polygon model data) I had to guess.

    For anybody reading this post who has a Virtua Fighter or other Model 1 game and wishes to dump their own ROMs with this programmer/adapter, refer to the Model 1 Memory BD section under the "The Craigslist Virtua Fighter board" section of this post for settings to use for dumping. I'm assuming you know how to use the USBPrg software and general knowledge on how to use this programmer. Just align the chips at the bottom of the appropriate ZIF socket (with ADP-054 16-bit adapter in use as applicable), make sure the alignment notch of the chip is facing towards the top, and read it with the appropriate chip type set in USBPrg. If any chips end up being bitrotten, just replace with the same type of EPROM chip as listed, and burn the appropriate rom image from MAME.

 Chip dump settings for Model 1 hardware
(GQ-4X4 programmer with ADP-054 16-bit adapter as needed)

   Unfortunately I made the stupid mistake of second guessing myself on what type of chips were in the purple section when reading my first one. I was assuming they should be read as a generic ST Micro 27C160 (2MB 42-pin) EPROM, but was stupid and tried making a new chip profile for a Fujitsu "8316200 16M mask ROM (DIP42)" as reported in MAME's Model1.cpp driver. That was a big mistake, and trying to read the mpr-16102.32 chip like that ended up killing the chip with random $00s and $FF data (oops)! I'll have to replace that one with a 27C160 EPROM chip and burn the new image to it when I begin gathering my other Model 1 parts ๐Ÿ˜ž.

What's Next?

    Picking up this cool Sega Model 1 arcade machine with Virtua Fighter was crazy for the $25 cost! My first in-progress Sega arcade machine ๐Ÿ˜€! After picking it up, I learned a ton more about this system's computer architecture and general information about it through online research (NEC V60 CPU with custom TGP chips for 3D rendering, OPL4 MultiPCM sound hardware, medium resolution video hardware, etc). Unfortunately, it is just a 3-board PCB stack (VF game with CPU/video hardware), and it is missing other Model 1 arcade components and wiring harnesses to assemble a complete, working VF game.

    After gathering the minimum amount of Model 1 arcade parts needed, wiring, and my ATX power supply breakout board, the next step will be to try and wire it up correctly, and then boot it up for the first time within my posession of the game. This part will be tricky, since the information on the proper wiring of VF and Model 1 hardware online is scarce. (There are some forum threads linked in this blog post to help out with that, but the information is still rather scarce). After it is booted up, I will then be able to verify for certain if this board is some weird "PAL.A" revision, and then witness first hand the issue with "polygons disappearing" that the Craiglist seller reported on the sale ad. Hopefully I will be able to identify and to fix whatever is causing that problem, whether that be due to some TGP chips having faulty solder joints or something else altogether.

   After the basic board setup is wired up and the polygons issue is fixed, the final step to complete this arcade project would be to wire up the remaining hardware (sound hardware and controls) and put everything into a wooden box, for consolization. I will design my own Sega JST I/O Interface Box (S-JIF) circuit to handle custom controls wired up to IDC26 ribbon cables, and then design both arcade fighting stick controllers for the S-JIF circuit. After everything is complete, I am thinking about researching into doing a simple ROM hack of the game within MAME (and then testing code out on the real hardware with newly burned ROM chips). This ROM hack would consist of adding the unused characters as new entries into the character select screen, as well as possibly implementing other unused content from the game. I'll probably call the ROM hack Virtua Fighter DX  ๐Ÿ˜ƒ.

   Stay tuned for the next post in this arcade repair log, Virtua Fighter Arcade Repairs, Part II: Bootup !

Copyright EagleSoft Ltd. Powered by Blogger.