All Projects → nbarkhina → N64Wasm

nbarkhina / N64Wasm

Licence: MIT license
A web based N64 Emulator

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
HTML
75241 projects
Scilab
70 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to N64Wasm

Mupen64plus Core
Core module of the Mupen64Plus project
Stars: ✭ 845 (+76.41%)
Mutual labels:  n64
Sm64tools
Collection of tools for Super Mario 64 ROM hacking
Stars: ✭ 129 (-73.07%)
Mutual labels:  n64
n64-sdk-demo
n64 homebrew demo app
Stars: ✭ 60 (-87.47%)
Mutual labels:  n64
Ryu64
A Nintendo 64 Emulator made in C#!
Stars: ✭ 36 (-92.48%)
Mutual labels:  n64
Papermario
Decompilation of Paper Mario
Stars: ✭ 105 (-78.08%)
Mutual labels:  n64
Mupen64plus Input Bot
An input driver for mupen64plus that consumes from a python web server
Stars: ✭ 184 (-61.59%)
Mutual labels:  n64
Mm
Majora's Mask scripts, with some Ocarina of Time on the side.
Stars: ✭ 24 (-94.99%)
Mutual labels:  n64
angrylion-rdp-plus
A low-level N64 video emulation plugin, based on the pixel-perfect angrylion RDP plugin with some improvements.
Stars: ✭ 143 (-70.15%)
Mutual labels:  n64
Emukit
WebXR immersive console emulator w/ Retroach, Javascript, and WASM
Stars: ✭ 123 (-74.32%)
Mutual labels:  n64
FlappyBird-N64
Clone of Flappy Bird for Nintendo 64 built using the open source LibDragon SDK. Original game design, graphics, and sound effects created by .GEARS
Stars: ✭ 38 (-92.07%)
Mutual labels:  n64
Pseultra
N64 library
Stars: ✭ 60 (-87.47%)
Mutual labels:  n64
Acse
A Save Editor for the Animal Crossing main series games written in C#
Stars: ✭ 99 (-79.33%)
Mutual labels:  n64
Lemuroid
All in 1 emulator on Android!
Stars: ✭ 194 (-59.5%)
Mutual labels:  n64
Mupen64plus Video Glide64mk2
Video plugin for Mupen64Plus 2.0 based on 10th anniversary release code from gonetz
Stars: ✭ 21 (-95.62%)
Mutual labels:  n64
Texture64
N64 Texture Ripper and Editor
Stars: ✭ 68 (-85.8%)
Mutual labels:  n64
Mupen64plus Video Rice
Video plugin for the Mupen64Plus v2.0 project, using OpenGL. This plugin is based on the RiceVideoLinux plugin from earlier versions of Mupen64Plus.
Stars: ✭ 26 (-94.57%)
Mutual labels:  n64
Mupen64plus Ui Python
A frontend for Mupen64Plus
Stars: ✭ 165 (-65.55%)
Mutual labels:  n64
goose64
untitled goose game demake for nintendo 64
Stars: ✭ 62 (-87.06%)
Mutual labels:  n64
ScriptHawk
A collection of Lua scripts and RAM watches for BizHawk.
Stars: ✭ 69 (-85.59%)
Mutual labels:  n64
Rom Properties
ROM Properties Page shell extension
Stars: ✭ 210 (-56.16%)
Mutual labels:  n64

N64 Wasm

Thanks for checking out N64 Wasm! An N64 emulator that runs in the browser. It is a port of the excellent RetroArch ParaLLEl Core to WebAssembly. This project started because I wanted to have a well playing open-source N64 emulator designed for the web. I also wanted to learn OpenGL and this was a good way to dive in. Game compatibility is decent with a good portion of the 3D games playable and at full speed on a mid-range computer - Mario 64, Ocarina of Time etc... There is currently an issue with some 2D games such as Dr Mario 64 and Pokemon Puzzle League which I am still investigating. I also tested on the iPhone 13 Pro and Xbox Series X Browser and it works great.

Supports the following features -

  • Gamepad Support (Xbox and PS4 Controller tested)
  • Button and Keyboard Remapping
  • Save States and SRAM
    • They save in your browser so you can close and come back later
  • Import/Export Save Files (see settings.js)
  • Zoom Controls
  • Full Screen
  • Audio Support
  • Cloud Save States (Host your own server)
  • Multiple Controller Support

You can try it here: https://www.neilb.net/n64wasm/

Build Instructions

I used WSL on Windows but any Linux environment would work as well. First Install Emscripten version 2.0.7

  • create a folder somewhere in your environment to install emscripten
  • git clone https://github.com/emscripten-core/emsdk.git
  • cd emsdk
  • ./emsdk install 2.0.7
  • ./emsdk activate 2.0.7
  • source ./emsdk_env.sh
  • navigate back to the code folder in the N64Wasm repo
  • run make
  • then copy these 2 files from the code\ folder into the dist\ folder
    • n64wasm.js
    • n64wasm.wasm

Hosting

This emulator supports hosting the app yourself with your own rom list. Create a folder called roms in the dist\ folder and copy them there. Then go into romlist.js and uncomment the code and populate the paths and names of your roms.

var ROMLIST = [
    {url:"roms/rom1.z64",title:"Game 1"},
    {url:"roms/rom2.v64",title:"Game 2"},
    {url:"roms/rom3.v64",title:"Game 3"},
];

This will then display a dropdown on the UI to select a game

romlist

You can also enable Cloud Save States with some additional configuration. See this README for information on how to set that up.

Windows Version

If you want to actually do debugging you will want to get the Windows version working on your machine. Debugging in WebAssembly is practically non-existant other than logging print statements. I did all of my debugging and testing using the Windows version with Visual Studio 2019 and then would compile the web version with Emscripten. Make sure you are on a computer that has a graphics card which supports OpenGL.

  • To get it up and running open up the N64_Wasm.vcxproj file in notepad and update the paths
    • update all the paths for the includes and libraries to where these are on your machine
    • the ones referencing the code folders should be where your source code is
    • now you can open up N64_Wasm.vcxproj using Visual Studio 2019
  • Get the Libraries and headers for the following
    • the actual versions could vary but these were the ones I used
    • SDL2 - version 2.0.14
    • SDL2 Image - version 2.0.5
    • SDL2 TTF - version 2.0.15
    • GLEW - version 2.2.0
  • Copy a rom to your working directory
    • and replace the name of that rom in mymain.cpp
    • sprintf(rom_name, "%s", "game.z64");
  • Note - running in Release mode runs much faster than in Debug though you won't be able to set breakpoints

pcversion

Screenshots

screenshot screenshot screenshot screenshot screenshot

iPhone 13 Pro

screenshot

References

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].