Skip to content

keiz7en/NintendoSwitchEmulator

Repository files navigation

Open Source Nintendo Switch Emulator

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.

Disclaimer

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.

Open Source Commitment

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

Features

  • 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

Performance Optimization

  • 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

Controls

Keyboard Controls

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

Controller Support

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.

System Requirements

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

Requirements

  • Java 21 or higher
  • Maven 3.6 or higher

Setup and Build

  1. Clone the repository
  2. Build with Maven:

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages