All Projects → Dillonb → n64

Dillonb / n64

Licence: other
experimental low-level n64 emulator

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
lua
6591 projects
CMake
9771 projects

Projects that are alternatives of or similar to n64

Ryu64
A Nintendo 64 Emulator made in C#!
Stars: ✭ 36 (-61.7%)
Mutual labels:  emulator, emulation, n64
Provenance
iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: https://wiki.provenance-emu.com |
Stars: ✭ 4,732 (+4934.04%)
Mutual labels:  emulator, emulation, n64
angrylion-rdp-plus
A low-level N64 video emulation plugin, based on the pixel-perfect angrylion RDP plugin with some improvements.
Stars: ✭ 143 (+52.13%)
Mutual labels:  emulation, n64
faucon
NVIDIA Falcon Microprocessor Suite
Stars: ✭ 28 (-70.21%)
Mutual labels:  emulator, emulation
SkyEmu
Game Boy, Game Boy Color, and Game Boy Advanced Emulator
Stars: ✭ 59 (-37.23%)
Mutual labels:  emulator, emulation
Punes
Nintendo Entertaiment System emulator and NSF/NSFe Music Player (Linux, FreeBSD, OpenBSD and Windows)
Stars: ✭ 217 (+130.85%)
Mutual labels:  emulator, emulation
Emu Docs
Emulator documentation archive
Stars: ✭ 222 (+136.17%)
Mutual labels:  emulator, emulation
js-nes-emulator
NES emulator in javascript.
Stars: ✭ 12 (-87.23%)
Mutual labels:  emulator, emulation
Lemuroid
All in 1 emulator on Android!
Stars: ✭ 194 (+106.38%)
Mutual labels:  emulator, n64
Scanr
Detect x86 shellcode in files and traffic.
Stars: ✭ 16 (-82.98%)
Mutual labels:  emulator, emulation
GhidraEmu
Native Pcode emulator
Stars: ✭ 25 (-73.4%)
Mutual labels:  emulator, emulation
ness
A work-in-progress SNES emulator written in Rust
Stars: ✭ 31 (-67.02%)
Mutual labels:  emulator, emulation
Emupedia.github.io
The purpose of Emupedia is to serve as a nonprofit meta-resource, hub and community for those interested mainly in video game preservation which aims to digitally collect, archive and preserve games and software to make them available online accessible by a user-friendly UI that simulates several retro operating systems for educational purposes.
Stars: ✭ 206 (+119.15%)
Mutual labels:  emulator, emulation
Bsnes Plus
debug-oriented fork of bsnes
Stars: ✭ 209 (+122.34%)
Mutual labels:  emulator, emulation
Yuzu
Nintendo Switch Emulator
Stars: ✭ 17,405 (+18415.96%)
Mutual labels:  emulator, emulation
Washingtondc
Open-source Sega Dreamcast emulator
Stars: ✭ 201 (+113.83%)
Mutual labels:  emulator, emulation
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (-39.36%)
Mutual labels:  emulator, emulation
mupen64plus-libretro-nx
Improved mupen64plus libretro core reimplementation
Stars: ✭ 139 (+47.87%)
Mutual labels:  emulation, n64
Openemu
🕹 Retro video game emulation for macOS
Stars: ✭ 13,369 (+14122.34%)
Mutual labels:  emulator, emulation
Segs
💪 SEGS - Super Entity Game Server
Stars: ✭ 190 (+102.13%)
Mutual labels:  emulator, emulation

n64

Experimental low-level N64 emulator written in C and a bit of C++.

Still under heavy development and not ready for prime time. Compatibility is not high and performance is not great (yet.)

The goals of this project are to create a low-level emulator with good compatibility, while learning a lot along the way.

Build Documentation Status

Mario Face

Download

As the emulator is still in heavy development, there are no stable releases. The files linked below are built automatically every time code is pushed to this repository.

There may be problems. Feel free to open an issue if you find one!

You'll need a fast CPU and a modern GPU that supports Vulkan 1.1.

Links

Goals

  • Reasonably accurate low-level emulation
  • Decent performance. Because this is a low-level emulator, it will never be as fast as high-level emulators.
  • Reasonable amount of automated testing

Features

  • Keyboard and gamepad support
  • GDB stub for debugging

Limitations & TODOs

  • Only Linux and Windows are currently supported. MacOS support is not currently possible, since parallel-rdp does not support it.
  • The dynamic recompiler currently only supports x86_64. aarch64 support is planned in the (distant) future.
  • Only little-endian host platforms are planned to be supported.
  • Only gcc and clang will be supported. I unapologetically use extensions like case ranges and binary literals.
  • Only software that uses NTSC video modes is currently supported. PAL games will work, but will run at an incorrect framerate. This is planned to be fixed.

Building

For Linux:

  1. Install dependencies: SDL2, Vulkan, and optionally Capstone
  2. Run the following commands:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

For Windows:

  1. Install dependencies: Visual Studio 2019 with the clang workload, vcpkg, CMake.
  2. Run the following commands, replacing the vcpkg path with where you installed it:
vcpkg install sdl2[vulkan]:x64-windows
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -T clangcl -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake ..
cmake --build . --config Release

Running

Run with no parameters to use the default settings and load your ROM using the GUI, or run with options:

./n64 [OPTION]... [FILE]
n64, a dgb n64 emulator

  -v, --verbose             enables verbose output, repeat up to 4 times for more verbosity
  -h, --help                Display this help message
  -i, --interpreter         Force the use of the interpreter
  -r, --rdp                 Load RDP plugin (Mupen64Plus compatible) - note: disables UI and requires ROM to be passed on the command line!
  -m, --movie               Load movie (Mupen64Plus .m64 format)
  -p, --pif                 Load PIF ROM

https://github.com/Dillonb/n64

Progress

CPU

An interpreter and a basic dynamic recompiler are available, able to be switched at launch time with a command line flag.

The dynamic recompiler currently only supports x86_64.

RSP

Reasonably complete, enough for most games to run.

Hardware-verified over the EverDrive 64's USB port using rsp-recorder.

Still greatly in need of optimization.

RDP

Very early stage. parallel-rdp by Themaister is integrated to provide RDP functionality in the meantime.

Credits

Libraries Used

  • DynASM as the emitter for the dynamic recompiler
  • SDL2 for graphics, audio, and input
  • Capstone as a MIPS disassembler for debugging
  • parallel-rdp as the RDP until I write my own
  • Dear Imgui for the GUI
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].