A cross-platform, 100% open-source Nintendo Switch emulator developed in Java with JavaFX for educational purposes. This project aims to demonstrate the fundamentals of console emulation including CPU simulation, memory management, and rendering while building a community of contributors to advance emulation research.
This emulator is for educational purposes only. It is designed to work with homebrew and open-source games only, not with copyrighted Nintendo games. The goal is to understand hardware emulation concepts and not to enable piracy.
This project is fully open source under the MIT License. We believe in:
- Transparency: All code is visible and documented
- Community Collaboration: Everyone is welcome to contribute
- Educational Value: Learning emulation concepts together
- Ethical Development: Supporting only homebrew and legal content
- Enhanced ARM Cortex-A57 CPU emulation with extended instruction set
- Expanded memory management (1GB RAM, 512MB ROM)
- Improved GPU rendering with double buffering
- Audio emulation using Java Sound API
- Input handling with support for:
- Keyboard controls
- Xbox controllers
- PlayStation (PS4/PS5) controllers
- Generic USB controllers
- ROM loader for homebrew/open-source games (NRO, NSO, and partial NCA support)
- Cross-platform support for Windows and Linux
- Multi-threaded rendering for smoother gameplay on multi-core systems
- Adjustable resolution scaling (25%-200%) to balance quality and performance
- Frame skipping to maintain speed on lower-end hardware
- Low-end device mode automatically configures settings for best performance
- V-Sync toggle to reduce screen tearing or improve performance
- FPS limiting to reduce battery usage and heat generation
- Memory usage optimization with configurable memory limits
- Performance presets for quick configuration:
- High Performance: Optimized for weaker hardware
- Balanced: Good mix of visuals and speed
- High Quality: Best visual experience
The default keyboard mapping for Nintendo Switch controls:
- D-Pad: Arrow Keys
- A/B/X/Y: X/Z/S/A
- L/R: Q/E
- ZL/ZR: 1/3
- Plus/Minus: Enter/Backspace
- Home: H
- Capture: C
- Left Analog Stick: W/A/S/D
- Right Analog Stick: I/J/K/L
The emulator automatically detects and supports:
- Xbox Controllers: Xbox One, Xbox Series X/S, Xbox 360
- PlayStation Controllers: PS4 and PS5 DualSense
- Generic USB Controllers
Controller mappings can be customized in Settings → Configure Controllers.
Minimum:
- OS: Windows 7/10 or Linux
- CPU: Dual-core 2.0 GHz
- RAM: 4GB
- Graphics: OpenGL 3.3 capable
- Storage: 100MB available space
Recommended:
- OS: Windows 10/11 or Linux
- CPU: Quad-core 3.0 GHz or better
- RAM: 8GB or more
- Graphics: OpenGL 4.5 capable
- Storage: 1GB available space
- Java 21 or higher
- Maven 3.6 or higher
- Clone the repository
- Build with Maven: