This post covers about 20 years of starting a hobby project with friends to fully licensed and published games released on consoles and home computers.
Shoot’em-up arcade games were much more common in the 1980’s and early 1990’s when there were plenty or arcade halls to visit. A lot of nostalgia remains for these games and this story starts just after that era ends.

Background
Johan K, Magnus and me originally met at a blue house on the west coast of Sweden. There was a computer meetup on Saturdays where we ate pizza and made demos on the Amiga computer. We joined groups like Rebels and The Silents and got pretty good at 68000 assembler programming.

The 68000 CPU was used in many computers, game consoles and arcade machines so it was a big part of game tech at the time. A good understanding of how machine code works on the 68000 was essential for the project in this post.
Those demos (and a letter) basically got me my first job in Oslo, Norway. Since we needed more programmers I pulled in my old friends to help port Samurai Shodown and Fatal Fury to SEGA CD and bring Deadly Skies to 3dO. I had started working on a santa claus game for Sunsoft. Eventually we wanted to try our own thing so we started our own game with an artist named Dennis and another programmer named Johan A.
As the game we built didn’t sparkle with publishers we met with, we had to give up our independence. We had already secured jobs at Looking Glass Studios in the US. Dennis and Johan A decided against joining us so we helped Dennis move back to Copenhagen and dropped Johan A off in Stockholm at a place called Target Games.
The project begins
At this point, in 1997, we had to wait for work permits before we could move to the US. Johan K had already created arcade emulators for Gradius and Salamander, so Magnus found a Usenet group where people posted requests for arcade games no one had emulated yet. He picked up a game called Flying Shark and convinced me to join in the effort. Johan K released something called Neo Geo Teaser.

As soon as Magnus had the game running on screen he said “This isn’t the game I expected”, we think he might have expected Tiger Heli. But we kept working on it, released it as the “Shark Emulator”. We continued to add more arcade games that looked similar. Most of the games we ended up with were originally developed by a Japanese company named Toaplan.

The first publishing attempt
Looking Glass Studios (at least Erik and Yuji) were enthusiastic about our efforts and tried to help us reach out to the arcade teams that owned the rights and connect with a publisher. Unfortunately even with their help we could not convince the owner of the Toaplan rights to talk to us or SNK to consider other platforms.
When we finally got our work permits we moved on and switched focus to the games we were paid to make. I got to work at a variety of companies making Pac-Man World 2, Shrek 2, True Crime 1 & 2, Playstation All-Stars Battle Royale, a Pokemon game and even a bit of Shovel Knight & friends. Magnus spent a lot of time with the God of War games and Johan has worked for a long time on Call of Duty.
As we stopped working on the emulators we worked with the MAME team to make sure they were fully supported in MAME, including my primitive Yamaha 3812 sound emulation (that quickly got improved when the team listened to it).
20 years or so later..
I decided to move back to Sweden for personal reasons after over 20 years in the US. I started talking to a friend, Martin Lindell, about making retro console ports of games from the publisher where he worked. We started talking about making a SNES version of a popular pixel art game but that didn’t get started.
… It starts to come back
At one point Martin joined Embracer. When we talk some time later, it turns out that former Toaplan staff had founded a new company called Tatsujin. Embracer then acquired both the rights to the Toaplan games and also Tatsujin.
And since I already made a Toaplan arcade emulator, maybe I was interested in making a PC version?
Back where it all began

The Shark Emulator was originally developed in Gothenburg, Sweden and this is where I was living at the time. Embracer had also acquired a small studio in Gothenburg called Bitwave where I ended up picking up the Shark Emulator where we had left it.
I talked to Magnus about the projects and we agreed I could take over the project if I bought him a proper Swedish pizza.
Bitwave
Bitwave had one big project (Gimmick 2) with a full team, and a small rag-tag team of programmers and an artist working on porting games like Songs of Conquest and Ultros to consoles and me porting emulators from Windows to .. well, modern Windows.
Alchemy
The name of the rag-tag team was Alchemy and each day brought new challenges to overcome for the team. Songs of Conquest was an indie strategy game released on PC and it needed to run on Switch, and Ultros was also PC first and took some effort to run on physical media on PS5. While this was going on I was busy adding modern features to old games all day.
What I actually worked on
An arcade emulator is not particularly much code when you exclude CPU and sound emulation. We originally relied on the SoundBlaster midi which included a real Yamaha 3812 sound chip. Our emulator also had a simple fallback 3812 emulator I pieced together from data sheets.
Most of the work creating the emulators was running the game until it crashed or froze and figure out what was wrong. Usually we’d look at the 68000 CPU disassembly of the machine code and try to figure out what writing certain values to certain addresses did. For Flying Shark we mostly just guessed what the calculated, the game would write a value and it would turn out it might be an angle and the protection chip would return a position. It also handled some collision with bullets if I remember correctly.
Each time you figure something out you rinse and repeat the process until all the graphics ended up at the right place. Or nearly the right place until another enthusiast tells you some helicopter shows up in the wrong place.
Technical Issues
The challenge of updating the project ended up being rebuilding all the parts that any modern computer game needs: rendering, audio, controller input, etc. etc. and to fix all the remaining bugs. It turns out it doesn’t matter so much if you make a small or a big project, the basic stuff takes a lot of work.
Other people have made this easy so I ended up using Sokol that almost automatically allowed us to ship for Linux and Mac (apart from rewriting the shaders for each platform). So just a few components were needed from scratch.
Game Controller Issues
Windows is the worst operating system for games for one reason: The various code libraries that read controllers are old or handle only one type of controller or supports everything but you don’t know which button “Button 4” is on the controller.
Steam has done a lot of work to make this easier so we relied mostly on Steam Input, but it treats a lot of controllers that are popular with retro gamers as “Generic Input”. I decided to go one step further and also support RawInput. I grabbed every type of controller we had in the office and asked people in the office to bring in more unusual controllers. I’d just manually map each of them to the closest we could for the games.
On Linux it was the complete opposite, Joystick Events are super clean and easy to work with. I still had to manual remap buttons but the code for Linux input is so much cleaner than the code for Windows.
On Mac I tried to figure something out but I just couldn’t. It probably is doable if you’re willing to use XCode.
And the rest..
And then of course we had to add all the modern quality of life stuff like achievements, load and save, rewind and more. And a user interface. Players can’t get enough of user interfaces.
Since each game didn’t have a lot of time to finish up there was even less time to make the achievements and I’d normally implement four games of achievements in a day. I hope they are working now.
One huge win was creating a full debugger for all the games and CPUs (and sound chips). The debuggers are all integrated in the project but here is a similar one I previously made for my Commodore 64 projects: IceBro Lite.

Connecting with the originators
Since Embracer helped set up Tatsujin (now owning the Toaplan rights) with some of the original staff from Toaplan we had meetings with Masahiro Yuge, Tatsuya Uemura and Koetsu Kusaka. When I told Yuge-san about our own publishing efforts he laughed and said he was grateful we didn’t succeed otherwise Tatsujin Games couldn’t exist today.

Since the project was not that big or needing much text we didn’t translate to most languages but to honor the origin of the games we decided to at least add Japanese. We reached out to 8-4 that specialized in that and I’d been in touch with previously at Yacht Club Games.

On a side note, 8-4 also publishes games together with Limited Run Games as SuperDeluxe games. They had signed a small developer named Ancient to make a new SEGA MegaDrive game and as things happened they reached out to us to bring that game to modern platforms!
While I wrapped up the final bits of the Toaplan games for home computers I had a meeting with John Ricciardi, Makoto Wada and Yuzo Kashiro. We discussed porting Earthion to every current platform. (I hope to write a post about porting the Toaplan emulators to run MegaDrive games and Earthion, but that is for another time!)

At the same time as we started Earthion, Bitwave had finished Gimmick 2. This meant there were more programmers available to continue porting Toaplan projects so they got started adding more console platforms.
In the end we had brought the Toaplan games to Windows, Mac, Linux, Switch, Playstation 4 and 5 and XBox One and XBox Series S|X.
Following up on the release
As the only person working full time on the Toaplan project I did not have time to handle the support or feedback, and having a community manager on site helped keep everything smooth while the COO and production handled support. Even Martin Lindell and Uemura-san stepped up to make sure we didn’t miss anything.
We released the games in batches so time was limited to update patches but I hope we got most of it sorted.
Moving on..
We ended up with 16 games, released in four collections on home computers and two volumes on consoles. It was a very unique project and I could fully understand the difference between a hobby project and a commercial project. Although it was probably not perfect, the end result was significantly improved over the early releases.
We often lose perspective of the quality of games we work on, both missing important things and losing faith in features that work well.
Today…
Today Clear River Games has stepped in as the publisher of the Toaplan games and employs some of the staff from the Alchemy team at Bitwave and have released patches for post release issues.
Another part of the Alchemy team founded Yuki Guni games where they continue porting games.
As the studio was slowing down I ended up talking to a bigger company in Stockholm. Many companies in Gothenburg were shutting down and I didn’t see any work opportunities without moving somewhere else. I don’t really want to work remote.
I didn’t get to talk to this company for very long before they sent me a job offer and I think I know why. After we dropped off Johan A in Stockholm at Target Games, the team had bought the company IP from the original company and rebranded as Paradox Interactive. Johan A still works there as a studio manager/director in their Spanish office and probably put in a decent word for me.
Conclusion
Don’t give up on your youth projects, one day you can pick it up again and turn it into something bigger!
For anyone working on retro game development for fun, never be intimidated by other games, just continue doing things the way you like. And for anyone working on large budget games, don’t lose faith in what you have created, with enough time and love it will turn out great!
I’ll let you in on a little secret: Most of what I do at work today is improving the performance of Crusader Kings 3. Some of that is fairly generic like limiting how much is calculated per day, but a good deal involves inspecting the compiled disassembly code to understand why it isn’t faster. Not that different from looking at the 68000 disassembly from Flying Shark and trying to understand what happens when you write to address $30000.
I’m still doing my own retro game dev for fun, mostly on Commodore 64 and a bit on SEGA MegaDrive when I feel like it. You can check out some of my projects at https://spacemoguls.com/games/!
Links
The Toaplan games are available on Steam, GoG, Nintendo Switch, Playstation 4 & 5, Xbox One and Series. Earthion is also on Steam, Nintendo Switch, Playstation and XBox. The original Shark Emulator seems to be around on Zophar’s Domain.
During development I made a web site with the Toaplan games but I gave it up and handed it to another enthusiast, you can check it out at the Toaplan Museum.