A downloadable game

PUBLIC GIT: https://github.com/rester159/side-arms-MD

Capcom's 1986 arcade shooter, rebuilt from scratch for the Sega Genesis / Mega Drive. Smooth 60 fps, 2-player co-op, every section and every boss.

Hi, and thanks for stopping by!

Continuing on my Capcom streak (I am a true fanboy) I have just put the finishing touches on Side Arms, one of Capcom first and most seminal shooters. This is one I started a long time ago and shelved - but thanks to the encouraging response to my Black Tiger port I decided to push through and get it done!

I LOVED this game as a kid and I still think it holds pretty well today. It's simple, but full of ideas that many games have developed in the following years. It came out for the arcades, the PC Engine and some home computers, but it never came to the Sega Genesis / Mega Drive. So I made that version myself. Side Arms MD is a fan-made port, written from scratch for the Genesis, that plays like the arcade game and runs at a smooth 60 frames per second.

Few interesting Facts About Side Arms

  • Akira "Akiman" Yasuda's Debut: The game was the very first project for legendary Capcom artist Akira Yasuda, who later became famous for defining the visual style of the Street Fighter series.
  • Blatant Gundam Inspiration: The enemy roster featured clear lookalikes of Zeon's Zaku mobile suits from Mobile Suit Gundam, complete with mono-eyes. When re-released in Capcom Arcade 2nd Stadium, these sprites were subtly altered to remove shoulder pads and tone down the eye design.
  • Dual-Directional Firing: Instead of standard one-way shooting, the arcade cabinet utilized separate buttons to fire left and right, allowing players to tackle enemies approaching from both the front and the rear.
  • The Alpha/Beta Merge Mechanic: Collecting Greek letter orbs (Alpha and Beta) allowed players to dock with a partner craft into a powerful hybrid mecha capable of eight-way directional attacks.
  • Forgiving Death Penalty: Unlike most brutal 1980s shoot 'em ups that reset your entire loadout or send you back to a checkpoint upon dying, Side Arms only made you lose the single weapon you currently had equipped.

WHAT'S IN THE GAME

  • The whole arcade game. All 10 sections, every enemy, every boss, the final boss and the ending.
  • 2-player co-op. A friend can jump in any time, and the two mechs can combine into one robot, the move Side Arms is famous for.
  • All the weapons, each with its power-up levels: BIT (little helper drones), S.G. (spread shot), M.B.L. (piercing beam), 3WAY and AUTO (rapid fire). Shoot the POW capsules to cycle through power-ups and find the hidden bonuses.
  • The arcade's music, played on the Genesis's own FM synthesiser chip.
  • Saving. High scores, your settings and your best Boss Rush run are remembered when the console is off.

TWO WAYS TO PLAY

ARCADE

It works just like standing in front of the cabinet: press Start to drop in a coin, then Start again to play. You get the attract mode with the arcade's own recorded demo plays, name entry, the continue countdown and the ranking table.

On the INSERT COIN screen, try Up, Up, Down, Down, Left, Right, Left, Right. It opens the arcade board's secret DIP switches, the little switches arcade owners used to set difficulty, lives, bonus lives, continues and demo sounds.

HOME

  • Options: difficulty (a new EASY, the arcade's levels 1–8, and a new HARD), lives 1–7, bonus lives, continues (off, limited or unlimited), credits 1–9, colour mode, parallax, and a sound test with every song and sound effect.
  • Boss Rush (new in 1.0): all 12 bosses back to back, in the arcade's order. Instead of lives you get an energy bar with 8 segments. Each hit costs one, and beating a boss gives two back. A timer runs during the fights, and your best run is saved. A friend can join any time.
  • Parallax scrolling (new in 1.0): the background gets depth (more on how below). Prefer the original look? Switch it off in Options.

CONTROLS

A fires left · B fires right · C switches weapon · Start starts the game or adds a coin.

  • Put any action on any button.
  • Got a 6-button pad? X, Y and Z can jump to the previous or next weapon, pick a specific weapon, or LOCK FIRE, which keeps shooting the way you're facing without turning around.
  • Turn on autofire for each fire button separately.
  • A+B+C+Start together takes you back to the mode select.

COLORS

  • ARCADE: as close as the Genesis can get to the original colours.
  • VIVID (default): a bit brighter and more colourful. The Genesis has fewer shades to choose from than the arcade, and many emulators make Genesis games look darker than they should, so VIVID gives the colours a small boost.

PORT BEHIND THE SCENES

Think of the arcade board and the Genesis as two kitchens. Both can cook the same meal, but they have different tools, different amounts of counter space, and chefs who speak different languages.

Side Arms arcade board (1986)Sega Genesis (1988)
Brain (main processor) Z80 chip 68000 chip, a completely different family that speaks a different "language"
Screen width 384 pixels 320 pixels
Colours 4,096 to choose from 512 to choose from, at most 61 on screen at once
Level maps one giant 4096 × 4096 pixel map, always available 64 KB of video memory, enough for only a small piece of a map
Sprites (moving objects) 128 on screen 80 on screen
Sound two sound chips with 12 voices one FM chip with 6 voices, plus a simpler chip with 3 tones and a noise channel

So you can't just copy the arcade game onto a Genesis cartridge. The Genesis wouldn't understand a single instruction of it. There are two ways to port a game like this:

  1. Translate the arcade program line by line into something the Genesis can run. It's quicker to get working, but it's like reading a book through a phrase-by-phrase dictionary: everything is slow and a bit clumsy. I tried this on an earlier port, and it couldn't go faster than 48 frames per second.
  2. Rewrite it. Study the original until you know exactly what it does, then write a brand-new game for the Genesis that does the same things.

Side Arms MD is a rewrite. It's like learning a song by ear, writing down the sheet music, then playing it on a different instrument. Same song, new instrument.

Before writing any of the game itself, with the help of AI I took the arcade game apart to see how it works:

  • Reading its "recipe". The arcade program was turned back into human-readable instructions, so I could find the exact spots that move your mech, send in enemies, run each boss and play each song.
  • Recording the real thing. I wrote little helper programs that run the original game in the MAME arcade emulator, with no screen, and write down everything that happens, frame by frame: where each enemy is, when it appears, how fast every bullet flies. These recordings are my "answer key".
  • Taking notes. Everything went into notes that became the blueprint for the port.

My one big rule was no guessing. Every speed, timer, hit box and score in the port comes from the original. When something didn't match, I didn't nudge numbers until it looked about right. I went and found the real reason.

GRAPHICS

The level maps: a train window. The arcade keeps its whole world map available at all times, a huge picture 4,096 pixels on each side. The Genesis only has room for a small piece of it, so the port works like the view from a train window. As you fly forward, the next bit of scenery is loaded just before it comes into view, and the bit you've passed is cleared away to make room. The scenery is built from square blocks, and the Genesis keeps a little "pantry" of 56 blocks: exactly what the screen needs right now. I compared it with the arcade, and the scrolling lines up pixel for pixel.

The stars: painted in advance. On the arcade, the twinkling starfield behind the levels comes from a special circuit built just for that. The Genesis doesn't have one. So I worked out the circuit's entire star pattern ahead of time and saved it as a picture the Genesis can slide around by itself, almost for free.

The narrower screen. The arcade screen is 64 pixels wider than the Genesis screen. The port keeps the action centred, and where needed things are nudged to fit: for example, some bosses sit a little further left so they don't get cut off at the edge.

The colours: a smaller paint box. The Genesis has far fewer shades than the arcade, and fewer colours on screen at once. It's like repainting a picture with a smaller paint box. A tool picks the best possible set of Genesis colours for each area of each level and for every enemy and object.

The scoreboard. Your score, lives and weapon bar sit on their own layer. Halfway down the screen, the Genesis quickly flips that layer from the top rows to the bottom rows, so the game can show both without covering the action in the middle.

SOUND

The arcade has 12 voices for music and sound effects, and the Genesis has 9 voices plus a noise channel, split across two chips.

  • Music. The arcade's music is played by 6 FM synthesiser voices, and the Genesis has exactly 6 FM voices of its own, the same kind of instrument. So the songs are played on the same kind of synthesiser. The build tools convert every song, then "play" all of them in a simulation and check that each of the 12,081 notes and rests starts at exactly the right moment. If even one note is late, the build stops.
  • Sound effects. The arcade uses 6 voices for effects, and the Genesis has 3 to spare. So at each moment, the Genesis plays the 3 loudest parts of the effect. You lose a little detail, but the punchy parts come through.
  • A sound engine built from scratch. The Genesis has a second, smaller processor that I gave a single job: running the sound. It updates the music about 249 times a second, the arcade's own tempo, so the music never drags, even when the screen is full of explosions.

GAMEPLAY

The game itself is brand-new code, written in a way the Genesis likes. Each player, enemy, bullet and boss is its own little object with its own behaviour, copied carefully from the arcade, quirks included. For example:

  • The arcade can only juggle a set number of enemies at once. If it's full, a new enemy simply doesn't appear. The port has the same limits, because they're part of how the game feels.
  • Difficulty works just like the arcade's: it changes how many enemy bullets can be on screen and how fast they fly, using the arcade's own tables.

How do I know it plays the same? I gave the arcade and the port the exact same button presses and compared them frame by frame. In the first stage, over almost 5,000 frames, the camera, every enemy's path and all 358 of the player's shots showed up on the same frames and flew the same paths.

KEEPING IT SMOOTH

The arcade game runs at 60 frames per second, so the port has to as well. That means the Genesis has 1/60th of a second to do everything before it draws the next picture: move every object, check every hit, update the scenery and the scoreboard.

The tricky part: on paper the Genesis's brain is about as fast as the arcade's, but it has more to do, because the arcade had special helper chips for jobs the Genesis does by hand.

So I built a robot tester, a little program that plays every section from start to finish, alone and with two players, through every boss to the ending, and counts every frame that comes in late. The first version was late on up to 14% of frames with one player and 23% with two. Then I fixed the slow spots one by one. A few examples:

  • Big enemies used to be assembled piece by piece while the game ran. Now they're prepared in advance, like cooking with ingredients already chopped.
  • The score display used a slow way of turning numbers into digits. Now it uses a much quicker trick.
  • The scoreboard trick used to interrupt the processor 28 times per frame. Now it's twice.

Where it stands now: with one player, about 0.2% of frames come in late, so it's very close to perfectly smooth. With two players, 1–3% at the busiest moments, like big enemy waves with both players using rapid fire. Fun fact: the original arcade slows down in some of the same busy spots.

"ONLY ON GENESIS": PARALLAX SCROLLING

"Parallax" is the effect you see from a car window: nearby trees whizz past, while faraway mountains barely move. That difference in speed is what makes a flat picture feel deep.

The arcade only has one layer of stars behind the action, so in Home mode I added depth:

  • Four layers of stars. The starfield is split into four layers. Faint stars are "far away" and move slowly, and bright stars are "close" and move faster. The Genesis can scroll each line of the screen at its own speed, so every row of stars glides at its own pace.
  • Faraway scenery. In section 1 the hill at the back end of the level scrolls more slowly and In section 5 the cave wall slides along behind the rock, like a backdrop.
  • Same game. Only the look changes. Walls, enemies and bosses are exactly where they always were, so the game plays the same, still at 60 fps.

I'D LOVE YOUR FEEDBACK!

Your feedback on my Black Tiger port has been invaluable and made the game SO much better. So, for Side Arms I'd love more of the same... Version 1.0 is out, but so far it's only been tested in emulators. Your help would mean a lot:

  1. Real hardware. Tried it on a real Genesis or Mega Drive with a flash cart? Tell me how it went (slowdown, glitches, sound, saving), and which console and region you used.
  2. Colours. Do you like ARCADE or VIVID better? Does any level look wrong? Screenshots are super helpful.
  3. Feel. If you know the arcade game well, does anything feel off? Tell me which section and roughly where.
  4. Sound. Does any sound effect sound wrong, or clash with the music?
  5. Two players. Did you notice any slowdown? Did it bother you?
  6. Boss Rush and parallax. Too easy, too hard, too busy? Love it?
  7. Make Home mode more unique. What could I add to differentiate it further from arcade?
  8. Anything else. Bugs, crashes, ideas, wishes.

Leave a comment here or open an issue on GitHub. Thanks so much for reading, and have fun!

— RESTER 159

Side Arms is © Capcom. Side Arms MD is a free, non-commercial fan project and isn't affiliated with Capcom or Sega. It contains only original code and tools, with no Capcom data: you need your own copy of the arcade ROM set to build it.

Updated 11 hours ago
Published 2 days ago
StatusReleased
Rating
Rated 5.0 out of 5 stars
(4 total ratings)
Authorrester159
GenreShooter
Tags2D, 80s, capcom, Pixel Art, Retro, Shoot 'Em Up, Sprites
AI DisclosureAI Assisted, Code

Download

Download
side-arms-md-v1.2.bin 2.5 MB

Install instructions

Use on original hardware with an Everdrive or similar carts, any Genesis emulator or MiSTer FPGA

Development log

Comments

Log in with itch.io to leave a comment.

Awesome game !

i think some sound effects may be missing, i hear some SFX during gameplay but its either to quiet during boss fights or just completely missing

Music volume is still too high in V.1.1. It doesn't completely overpower the sound effects now, but In my opinion it should be balanced to the "SEGA" voiceover at the start to have a baseline, as it's definitely too loud compared to other Megadrive/Genesis games.

Speaking of music, down the line I think the Home version would benefit of having an option for the PC-Engine Hucard version tracks which are a vast improvement over the Arcade originals.

Turboxray attempting to stink up someone else's work in the comment section of their projects, looking bitter about his own Pc-Engine contributions not being held up in the same light because they were never as important. Not even surprised to see him here doing this.

He's from back in the PCEngineFX era. He did some minor things, but none of his projects amounted to anything even remotely as important as your SideArms and Black Tiger ports, because he was never really committed to doing much of anything really important. Best he has to show for is a rom hack at the end of the day.

His ilk are part of why the homebrew scene on the TurboGrafx side of things has stayed so stagnant for over twenty years, and what what little home brew that has been released outside of the Aetherbyte releases has been of so little value. I'm not even surprised to see him here ranting against people doing better projects than he could ever dream of.

He's old and bitter now. Ignore him and proceed with your projects. He is part of a bygone era of a dead forum no one cares about anymore, in part because it died due to people like him festering it. He's just bothered that he's been left behind.

Do you take suggestions on Arcade games to port? I was going to suggest Crystal Castles.

Tried on Mister FPGA, just get a white screen?

In my first test (Mega Everdrive X3 and Picodrive), I’ve encountered the same issue as Zanac28 so far: In the released version (1.0), the music volume is too high, completely drowning out the sound effects. Other than that, it’s really great, and kudos for the excellent technical explanations!

Correction: The game doesn't work on the Mega Everdrive X3. I was able to play it on my Mega SD (TerraOnion)

Can you include the "Before Christ" mode from the pc-engine port?

Great port! My only problem is that in the released version (1.0) the music volume is too high, completely overpowering the sound effects. 

Awesome!

(1 edit)

Wow. Even your write-up was done by AI hahah.

"Before writing any of the game itself, with the help of AI I took the arcade game apart to see how it works"

 You mean, before AI written any of the game itself.

(+1)

At the end of the day, this is not a competition for who is the best coder/ porter. I don’t claim I am and have no issue stating that, without AI, I would not be able to do this. If you are looking for a pure humanly made port, this ain’t it. 

My philosophy is less about the process and more about the outcome. I am trying to get games from my childhood available on the console of my childhood, in a form that is (hopefully) as true as possible to what it would look and feel like back then (so no weird mash ups or things like that) and adding as many new features as possible. As part of that, I’m trying to make ‘home’ modes as unique and interesting as possible. I also enjoy the interaction with the community, who is catching issues neither I or the AI caught and making the port more ‘human’. 

At the end of the day I’m not here to convince anyone this is good or bad. If you enjoy it, you are welcome. If you don’t, I respect it and there are many options out there.

(+1)

Ignore these haters. You are doing God’s work here. P.S. This is a good way to get a hold of me so we can talk shop https://discord.gg/tpnjevGbj

(2 edits)

Are you that ignorant? He's not doing god's work.. AI is doing god's work here 100%. Anybody and their mother can do this with a top model. It takes no skill or anything.. just some money. Which is fine, but reading over the description.. again careful wording on his part makes it look like he did the work.. with "just some help of AI". Disingenuous. That it isn't hate. That's calling out BS shenanigans. 

(1 edit)

Im saying I use AI - not hiding it, it’s in the text, its in the disclosure. Not sure where the issue is TBH. I’m not trying to compete with anyone or say I’m better than anyone. You do everything yourself? Good for you, I really respect it. At the same time, I know there are ppl that want this porta (me being one of them) so what’s wrong with providing them? I don’t see me being disingenuous if I am stating I am using it. FWIW it’s worth I did not say with “some” help of AI. You said it. I said “with the help of AI”

I'm from the same viewpoint, if the tool is there available and helping us to save huge time and effort on something we dreamed about for decades, why not using it?  I really can't get the haters view about this 

piss off troll.

Sure, brotard.

Sure, fail troll. 

(+1)

How about Tiger Road? Capcom actually attempted to port the game to the Sega Genesis, but the project was cancelled. The following information was posted on a Japanese website.

MD タイガーロード(カプコン)

  • カプコンがMD参入当初に発表していたタイトル。AC版『虎への道』の海外版タイトルと同名なので、同作の移植かリメイクと思われる。
  • 『虎への道』自体はPCEにも移植されているが、そちらはキャラクターのSD化やステージ構成の変更、BGMの総入れ替え等移植というよりはリメイクに近い内容である

    MD Tiger Road (Capcom)
    A title announced by Capcom early on after entering the Mega Drive market. As it shares its name with the overseas version of the arcade game Tiger Road (Tora e no Michi), it is presumed to be a port or remake of that title. While Tiger Road was also ported to the PC Engine, that version featured "super-deformed" (SD) character designs, altered stage layouts, and a completely new soundtrack. Consequently, the game is closer to a remake than a faithful port.
(+2)

I made a Double Dragon game if you’d like to check it out.


I’m a big fan! Can we talk shop? I’d love to collaborate! Hmu?

for sure! how do I contact you

theghostofmadtitan@gmail.com

P.S. You can hit me up on discord https://discord.gg/tpnjevGbj

I emailed you

ROM tested on an Everdrive v3 on a European PAL Mega Drive Model V4 with a 50/60Hz Region-Free mod.
It does not work.

The file loads successfully into the ROM, but after loading and launching the game, it displays a blue screen in full compatibility mode (Region Free) and NTSC mode. In PAL mode, it freezes when the words "Produced by..." appear, before even reaching the blue screen.

Great ported version! I also hope to see a ported version of 1943 KAI, preferably with the addition of 4 stages unique to the PCE version, although it may not be realistic.

Thanks for this FANTASTIC port

(1 edit) (+1)

Works great on Bizhawk but I do not seem to be able to run it on an original V1 everdrive (of which I have 2 units). Anyways, impressive port, almost more impressive than the already jaw dropping Black Tiger. Great work!

(1 edit)

Great so far, these suggestions hopefully will help, add a turbo option for the shoot button, sometimes the music will play fast for a second and sometimes will stutter but doesnt affect gameplay

Another thing worth looking into is the pc engine version included some extra mode called before christ, some differences in gameplay but i dont know if they could adapt here

Hey i cannot wait to play this when its ready, i hope its not bothersome to ask but there are two games i would really like to see ported over to genesis that were made around the same time as black tiger and side arms

1. 1943 and 1943 Kai

2. A better port of forgotten worlds

(1 edit)

1943 is on my list... forgotten world was not too bad! And this is ready - try it out