For years, i’ve considered writing an NES, Game Boy or maybe even a SNES homebrew title. I’m not expecting to make a knockout success but whatever I make, I’d like it to be easily distributable.

I’ve dabbled in the area of homebrew game dev before but I’ve never taken it to far because I’d also like to have the potential/option to release it as a stand alone app for PC/Mac/Linux and even to smart phones and possibly even distribute it through Steam.

I know that when you create multi-platform software, it’s generally a task of designing cross-compilable software that compiles down to bitcode for each target device. That might be the case for a project like this but since my #1 goal is to essentially make a ROM that can be played on legit early console hardware, I’d assume there might be special tools out there that help you take game ROMs and then wraps them into specific “emulation” applications which can be served to these other platforms types of devices and run on various operating systems.

I’m curious if anyone has had experience creating an old console homebrew project and has also distributed their game for multiple platforms like I’d like to do. What had worked and what hasn’t? I’m not trying to ask to broad of a question. I assumedly see two paths I could take— create a ROM title and wrap it in an emulator or setup a cross platform project that can also compile down to multiple platforms. What’s the best way to start a project like this, and set it up correctly from the beginning, so I can worry as little as possible about cross-platform development, and focus on writing the game logic?

  • 2
    \$\begingroup\$ I think if you "set up a cross platform project that can also compile down to multiple platforms" you'll be very constrained by the old console target, meaning most of your work will end up being written with its needs in mind. Your cross-compilation layers for the other consoles will effectively be an emulator in all but name — taking content written for the old console and wrapping it in structures that achieve similar effects on modern hardware. So I don't think the choice is "to emulate or not to emulate" but rather how much of the emulator you want to have to maintain in your own code. \$\endgroup\$ – DMGregory Apr 2 '19 at 11:36
  • 3
    \$\begingroup\$ I'd also recommend that if this is your first retro game, don't worry about cross-platform support yet. You're going to make enough mistakes and false starts with your first project, or first half-dozen projects, that trying to make it future-proof at the same time is just going to slow you down and not produce anything shippable cross-platform anyway. Keep it simple for the first few, so you can rapidly iterate and learn the tech/game conventions inside-out. Once you've done that, you should have much less difficulty moving it to other platforms, even if you need to re-do much of it. \$\endgroup\$ – DMGregory Apr 2 '19 at 11:40

Trying to create a game which is able to cross-compile natively to both modern platforms and retro consoles will likely be futile. Some frameworks and game engines I know which can create PC games might be able to target current generation consoles, but I could not name a single one which implements support for old legacy consoles. Legacy consoles often have very specialized and unique hardware which requires specialized and unique programming methods to utilize.

The most promising approach would be to develop it as a classic game ROM, but then bundle it with an open source emulator for relase on modern platforms. That's actually not that uncommon. You can find most of SEGA's old Mega Drive game library on Steam which runs that way. Most of Nintendo's old catalog found on the Virtual Console service is also taking that route.

But keep in mind that the legal situation of emulators is a bit shaky. Some console manufacturers feel that 3rd party emulators violate their intellectual property rights, even if the whole implementation of their technology was made from scratch. So just because SEGA puts their old console games on Steam with an emulator doesn't mean they will allow you to do the same thing.

Another interesting route I have seen taken a few times is to create a cartridge which fits into a vintage console but actually contains a modern system-on-a-chip. The whole game runs on the cartridge. The vintage game system doesn't do anything but supply power and controller input signals and deliver the audio and video output to the TV set. But you can hardly claim that you actually created a homebrewed vintage console game when it requires modern hardware to run and degrades the vintage hardware to a glorified cable adapter.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.