Tprrt's Blog

Yet another blog about embedded Linux, the open source and hardware

Dec 31, 2025

Open-Source Game Engines for Retro Consoles

Introduction

Retro console development has experienced a renaissance in recent years, thanks to passionate homebrew communities and modern open-source tooling. What was once the domain of professional game studios with expensive proprietary SDKs is now accessible to anyone with a Linux machine and a passion for classic gaming hardware.

This guide catalogs the best open-source game engines and frameworks available for developing games on classic consoles, from the 8-bit Game Boy Color to sixth generation systems like the PlayStation 2. All tools mentioned are compatible with Linux development environments, making them perfect for a fully free and open-source workflow.

8-bit and 16-bit Consoles

Game Boy Color (GBC)

GB Studio

For those wanting to create Game Boy games without writing code, GB Studio is the perfect starting point. This visual game editor features a drag-and-drop interface that lets you build complete RPGs, adventure games, platformers, and shooters without touching a single line of code.

Key Features:

  • Full visual scene editor with intuitive drag-and-drop
  • Built-in sprite and background editors
  • Integrated music tracker
  • Event system for complex game logic
  • Exports to actual GB/GBC ROMs that run on real hardware
  • Cross-platform support (Linux, Windows, macOS)

License: MIT

Links: GitHub | Website | Documentation

GBDK-2020

For developers who prefer code, GBDK-2020 is a modern fork of the classic Game Boy Development Kit. It brings C99 support and modern toolchain features to Game Boy development.

Key Features:

  • Modern C99 compiler
  • ROM banking support for large games
  • Libraries for sprites, backgrounds, and sound
  • Compatible with both Game Boy and Game Boy Color
  • Strong toolchain integration

License: Various (mostly permissive)

Links: GitHub | API Documentation

Game Boy Advance (GBA)

Butano

Butano is a modern C++17 game engine built on devkitARM that makes GBA development feel contemporary. It abstracts the hardware complexity while still giving you full control over the system's capabilities.

Key Features:

  • Modern C++17 syntax and features
  • Sprite management with affine transformations
  • Regular and affine background layers
  • Audio support (DMG and DirectSound)
  • Scene management system
  • GBA-optimized math utilities
  • Documentation and examples
  • Active Discord community

License: zlib License

Links: GitHub | Documentation

Tonclib

Tonclib is the veteran of GBA development. While less actively developed, it remains stable and is accompanied by some of the best documentation in retro game development.

Key Features:

  • Hardware abstraction layer
  • Advanced sprite and background management
  • Mode 7 (affine) support for pseudo-3D effects
  • Built-in text rendering
  • Excellent tutorial and documentation (Tonc)
  • Used by many commercial-quality homebrews

License: MIT-like (custom permissive)

Links: GitHub | Tonc Tutorial

Nintendo DS (NDS)

NightFox's Lib

NightFox's Lib provides a high-level 2D game library built on top of libnds, making DS development more approachable.

Key Features:

  • Sprite engine with rotation and scaling
  • Tiled background support
  • Collision detection
  • 2D and 3D text rendering
  • Sound and MOD music playback
  • File system access
  • Includes examples and templates

License: MIT

Links: GitHub

libnds + devkitARM

For those wanting full control, libnds is the official devkitPro library providing low-level access to all DS features.

Key Features:

  • Complete hardware access to both screens
  • 2D and 3D graphics support
  • Touchscreen and button input
  • WiFi networking support
  • FAT file system access
  • Audio subsystem control
  • Most flexible but requires hardware knowledge

License: zlib License

Links: GitHub | Documentation | Examples

Nintendo 3DS

citro2d / citro3d

The citro libraries are the official devkitPro solution for 3DS development, providing hardware-accelerated 2D and 3D graphics.

Key Features:

  • Hardware-accelerated rendering via PICA200 GPU
  • 2D sprite batching (citro2d)
  • Full 3D graphics pipeline (citro3d)
  • Shader support
  • Stereoscopic 3D rendering
  • Text rendering
  • Used by most modern 3DS homebrew

License: zlib License

Links: citro3d | citro2d | Documentation | Examples

Super Nintendo (SNES)

PVSnesLib

PVSnesLib is a modern C library bringing contemporary development practices to the Super Nintendo.

Key Features:

  • Modern C API
  • Sprite management (OAM)
  • Background and tilemap support
  • Mode 7 support for rotation and scaling
  • Sound driver integration
  • Gamepad input handling
  • DMA and HDMA operations
  • Documentation

License: MIT

Links: GitHub | Wiki

libSFX

libSFX is a powerful macro assembler framework for SNES development, optimized for performance.

Key Features:

  • Assembly-first with C support
  • Highly optimized for speed
  • Full hardware access
  • Super FX (GSU) support
  • Music and sound effects
  • Can integrate with C code
  • Steeper learning curve but very capable

License: MIT

Links: GitHub | Wiki

Sega Mega Drive / Genesis

SGDK (Sega Genesis Development Kit)

SGDK has become the industry standard for Mega Drive homebrew development, with an incredibly active community and extensive documentation.

Key Features:

  • Complete development framework
  • Sprite engine with hardware scrolling
  • Multiple background plane support
  • VDP (video display processor) management
  • Z80 sound driver with XGM music format
  • DMA operations
  • Built-in collision detection
  • ResComp resource compiler for assets
  • Extensive tutorials and documentation
  • Large, active community
  • Excellent Linux support

License: MIT

Links: GitHub | Wiki | Forums

Neo Geo

NGDK (Neo Geo Development Kit)

NGDK brings C development to the Neo Geo arcade platform and AES home console.

Key Features:

  • C framework for Neo Geo development
  • Sprite system management
  • Background and fix layer handling
  • Input handling for arcade controls
  • Sound support (Z80 + YM2610)
  • Asset conversion tools
  • Example games included

License: Custom permissive

Links: GitHub | Wiki

PC Engine / TurboGrafx-16

HuC (Hudson C Compiler)

The classic HuC compiler has been maintained by the community and remains a solid choice for PC Engine development.

Key Features:

  • C compiler for PC Engine
  • Support for HuCard and CD-ROM²
  • PSG sound support
  • Sprite management
  • Background and tilemap support
  • ADPCM audio for CD games
  • Standard C library subset

License: BSD-like

Links: GitHub

Squirrel (HuDK)

Squirrel (HuDK) is a more modern alternative to HuC with improved optimization.

Key Features:

  • Modern PC Engine framework
  • Better optimization than classic HuC
  • CD-ROM support
  • Active development
  • Growing community

License: Open source

Links: GitHub

Fifth and Sixth Generation Consoles

Sony PlayStation 1 (PS1)

PSn00bSDK

PSn00bSDK is a modern, lightweight SDK that makes PS1 development accessible and enjoyable. It's cleaner and more approachable than the old Psy-Q SDK.

Key Features:

  • Modern, clean API design
  • Hardware 3D graphics (GTE) support
  • 2D sprite and primitive rendering
  • CD-ROM file system access
  • SPU sound support with ADPCM and XA audio
  • Memory card management
  • Controller input (standard and analog)
  • Serial I/O support
  • Examples
  • Excellent Linux support

License: MPL 2.0

Links: GitHub | Wiki | Examples

Sega Saturn

Jo Engine

Jo Engine is a high-level 2D and 3D game engine that makes Saturn development approachable.

Key Features:

  • High-level API for 2D and 3D
  • Sprite engine with scaling and rotation
  • 3D model support with converter tools
  • Audio support (PCM, CD audio)
  • Save game management
  • Collision detection
  • Map and tilemap support
  • USB dev cart support for rapid testing
  • Video tutorials available

License: MIT

Links: GitHub | Website | Wiki

Yaul

Yaul is a modern alternative to the old Sega Basic Library, offering a clean API for advanced Saturn developers.

Key Features:

  • Modern library design
  • Clean API
  • VDP1 and VDP2 support
  • SCU DMA operations
  • CD block support
  • SCSP (sound) support
  • USB dev cart support
  • Excellent documentation

License: BSD

Links: GitHub | Documentation

Nintendo 64

libdragon

libdragon has revolutionized N64 development by making it far more accessible than the old Nintendo SDK.

Key Features:

  • Modern N64 development library
  • 3D graphics via RDP/RSP
  • Audio subsystem support
  • Controller input
  • ROM file system
  • Hardware sprites
  • Much easier than old SDKs
  • Very active community
  • Good documentation

License: Unlicense (public domain)

Links: GitHub | Documentation

Sega Dreamcast

KallistiOS (KOS)

KallistiOS is the de facto standard for Dreamcast homebrew, with an incredibly mature ecosystem.

Key Features:

  • Complete OS-like framework
  • 2D and 3D graphics (PowerVR)
  • Network support (modem, broadband adapter)
  • VMU (Visual Memory Unit) support
  • Input device support
  • CD-ROM file system (ISO9660)
  • AICA SPU audio support
  • Threading and multitasking
  • USB development support
  • Extensive library ecosystem
  • Very mature and well-documented

License: BSD-style

Links: GitHub | Documentation | Forums

Additional KOS libraries include GLdc (OpenGL-like API) and SDL ports, making cross-platform development easier.

Sony PlayStation 2 (PS2)

PS2SDK

PS2SDK provides complete access to the powerful PlayStation 2 hardware.

Key Features:

  • Complete PS2 development SDK
  • Graphics Synthesizer (GS) support for 2D/3D
  • Emotion Engine and I/O Processor access
  • Vector Unit (VU) programming
  • Sound library (audsrv)
  • USB and network support
  • Memory card management
  • DVD file system access
  • Excellent Linux compatibility
  • Large, active community

License: BSD/Academic Free License

Links: GitHub | Website | Examples

Nintendo GameCube / Wii

devkitPPC + libogc

The official devkitPro toolchain for GameCube and Wii provides hardware access.

Key Features:

  • Official devkitPro toolchain
  • Full hardware access for both systems
  • GX 3D graphics library
  • ASND audio library
  • Controller support (PAD/WPAD)
  • Network library
  • USB and SD card storage
  • DVD reading
  • Homebrew Channel integration (Wii)
  • Large community

License: Various (permissive)

Links: GitHub | Documentation | Examples | devkitPro

Sony PlayStation Portable (PSP)

PSPSDK

PSPSDK is the complete homebrew SDK for PSP development.

Key Features:

  • Complete PSP SDK
  • 3D graphics (GU library) with hardware acceleration
  • 2D sprite rendering
  • Multi-format audio support
  • WiFi and networking
  • USB support
  • Memory Stick access
  • Save data management
  • MP3, AAC playback
  • Mature and stable
  • Great Linux support

License: BSD/GPL

Links: GitHub | Forums | Examples

PlayStation Vita

Vita SDK

Vita SDK provides a complete homebrew development solution for Sony's handheld.

Key Features:

  • Complete PS Vita SDK
  • OpenGL ES-like graphics
  • Touch screen support
  • Accelerometer and gyroscope
  • Camera support
  • Network and WiFi
  • Trophy system support
  • Save data management
  • Multi-format audio
  • Very active homebrew scene

License: Various

Links: GitHub | Website | Documentation | Examples

Xbox (Original)

nxdk

nxdk is a clean-room open-source Xbox SDK with no Microsoft code.

Key Features:

  • Open-source Xbox SDK
  • Direct3D 8-like graphics API
  • Audio support
  • Controller input
  • Network support
  • Hard drive access
  • SDL port available
  • Growing community

License: Various (LGPL/MIT)

Links: GitHub | Wiki | Examples

Development Tools and Workflow

DevkitPro Toolchain

Many frameworks (GBA, DS, 3DS, GameCube/Wii) require the devkitPro toolchain, which works excellently on Linux:

  • Website
  • Getting Started Guide
  • Includes devkitARM, devkitPPC, and associated libraries
  • Available via pacman (devkitPro package manager) on Fedora

Graphics Tools

For a fully open-source workflow, these tools are all free, open-source, and Linux-native:

Pixel Art Editors:

  • Pixelorama (MIT): Modern pixel art editor with animation support, built with Godot. Excellent Aseprite alternative. Website
  • LibreSprite (GPL v2): Fork of old GPL Aseprite with familiar interface. Website
  • GrafX2 (GPL v2): Inspired by Deluxe Paint, excellent for retro graphics. Website
  • Piskel (Apache 2.0): Web-based and offline pixel art editor. Website

Tilemap Editor:

  • Tiled (GPL v2/BSD): Industry-standard tilemap editor. Website

General Graphics:

  • GIMP (GPL v3+): Full-featured image editor. Website

Music and Sound Tools

All tools below are free, open-source, and Linux-native:

Chiptune (Hardware Chip Emulation):

  • Furnace (GPL v2+): Multi-system chiptune tracker supporting 60+ sound chips (NES, SNES, Genesis, Game Boy, etc.). Perfect for authentic retro console music. Available on Flathub. GitHub

Module Trackers (Sample-based):

  • MilkyTracker (GPL v3): FastTracker II-inspired tracker for MOD/XM formats. Website
  • Schism Tracker (GPL v2): Impulse Tracker clone for S3M/IT formats. Website

NES/Famicom Specific:

  • FamiStudio (MIT): DAW-style NES/Famicom music editor with expansion chip support. Available on Flathub. Website

Audio Editor:

  • Audacity (GPL v2/v3): Multi-track audio editor and recorder. Website

Emulators for Testing

All emulators below are open-source and Linux-compatible:

  • mGBA: Game Boy Advance - Website
  • DeSmuME: Nintendo DS - Website
  • Citra: Nintendo 3DS - Website
  • bsnes: Super Nintendo - GitHub
  • Genesis Plus GX: Sega Mega Drive - GitHub
  • Mednafen: Multi-system (PC Engine, PS1, Saturn, etc.) - Website
  • DuckStation: PlayStation 1 - GitHub
  • PCSX2: PlayStation 2 - Website
  • Dolphin: GameCube/Wii - Website
  • PPSSPP: PlayStation Portable - Website
  • Vita3K: PlayStation Vita - Website
  • Flycast: Sega Dreamcast - GitHub
  • Mupen64Plus: Nintendo 64 - Website
  • xemu: Original Xbox - Website

Recommendations by Experience Level

Beginner-Friendly

8-bit/16-bit:

  • GB Studio (GBC): Visual editor, no coding required
  • GBDK-2020 (GBC): Simple C development
  • SGDK (Mega Drive): Excellent documentation and community

Fifth/Sixth Generation:

  • PSn00bSDK (PS1): Clean, modern API
  • Jo Engine (Saturn): High-level engine with tutorials
  • PSPSDK (PSP): Well-documented and stable

Intermediate

8-bit/16-bit:

  • Butano (GBA): Modern C++ with great docs
  • PVSnesLib (SNES): Comprehensive library
  • NightFox's Lib (DS): High-level 2D development

Fifth/Sixth Generation:

  • KallistiOS (Dreamcast): Mature ecosystem
  • devkitPPC (GC/Wii): Official toolchain
  • Vita SDK (Vita): Active community

Advanced

8-bit/16-bit:

  • libSFX (SNES): Assembly-first, highly optimized
  • citro3d (3DS): Direct hardware access
  • libnds (DS): Low-level control

Fifth/Sixth Generation:

  • PS2SDK (PS2): Complex but powerful
  • Yaul (Saturn): Modern low-level library
  • libdragon (N64): RDP/RSP programming
  • nxdk (Xbox): Direct3D 8 development

Community Resources

General Communities:

  • NESDev Forums: Multi-platform retro development - Forums
  • GBAtemp: DS/3DS homebrew - Website
  • devkitPro Discord: Nintendo handheld development

Platform-Specific:

  • GBADev: Game Boy Advance - Website
  • PSXDev: PlayStation 1 - Website
  • PS2Dev Forums: PS2, PSP - Forums
  • DCEmulation: Dreamcast - Website
  • SegaXtreme: Saturn, Mega Drive - Website
  • N64brew: Nintendo 64 - Website
  • GC-Forever: GameCube/Wii - Website
  • r/vitahacks: PS Vita homebrew

Conclusion

The retro console homebrew scene has never been more vibrant or accessible. With modern open-source toolchains, documentation, and active communities, developing games for classic consoles is now within reach of any motivated developer with a Linux machine.

Whether you want to create a simple Game Boy puzzle game with GB Studio's visual editor, or push the limits of the PlayStation 2's Emotion Engine with assembly-optimized code, the tools are available and the communities are welcoming.

The best part? This entire workflow can be accomplished with 100% free and open-source software, from the development tools to the graphics editors to the music trackers. This guide should give you everything you need to start your retro game development journey.

Happy coding, and may your sprites never flicker!