A Nintendo Entertainment Emulator running on th Nintendo 64. Run it on real hardware using a flash drive, or an emulator.
Note
This project is more of a fun thing for me to try if it works. It runs way too slow to be really usable and playable. I don't know if the emulator will ever run at full speed. Help is always welcome.
It has a unlicensed built-in game "Blade Buster", but you can replace it with your own game. See below.
Built with Libdragon
- D-Pad: Move
- A: Button A
- B: Button B
- Start: Start
- Z + A : Toggle frame rate display
- Z + R : Toggle sound (default off)
The emulator code is ported from Infones by Jay Kumogata
To try the emulator with the free built-in game Blade Buster, download infones64.z64 from the releases page en copy it to your flash card.
- Install the Libdragon SDK. For more info and instructions, see https://github.com/DragonMinded/libdragon
- Make sure the environment var N64_INST points to the installed SDK
- Get the sources and build
git clone https://github.com/fhoedemakers/InfoNES64.git
cd InfoNes64
make
Then copy infones64.z64 to your flash drive.
One of the ways to do this is:
- xxd -i myrom.nes > myrom.c
- Copy myrom.c to the assets folder
- edit myrom.c
// Change the define
#define BUILTINROMNAME "myrom"
// Change murom_nes[] to builtinrom[]
unsigned char builtinrom[] = {
0x4e, 0x45, 0x53, 0x1a, 0x10, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xa9, 0x08, 0x8d, 0x00, 0x20, 0xa9, 0x00, 0x8d,
0x01, 0x20, 0x20, 0xd6, 0xe1, 0x20, 0xeb, 0xe2, 0xa9, 0x00, 0x20, 0xe6,
0xd0, 0xa0, 0x0c, 0x84, 0xe
...
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff
};
// change variabele from myrom_nes_len to builtinrom
unsigned int builtinrom_len = 393232;
- Edit builtinrom.c
Insert
#ifdef BUILTINROM_MYROM
#include "myrom.c"
#endif
as shown below
#include "builtinrom.h"
#ifdef BUILTINROM_BLADEBUSTER
#include "bladebuster.c"
#endif
#ifdef BUILTINROM_SMB3
#include "smb3.c"
#endif
#ifdef BUILTINROM_GALAGA
#include "galaga.c"
#endif
#ifdef BUILTINROM_CV1
#include "CV1.c"
#endif
#ifdef BUILTINROM_CV2
#include "CV2.c"
#endif
#ifdef BUILTINROM_CV3
#include "CV3.c" // not working
#endif
#ifdef BUILTINROM_MYROM
#include "myrom.c"
#endif
- edit builtinrom.h
#pragma once
// Specify the name of the built-in ROM to include
#define BUILTINROM_MYROM
extern unsigned char builtinrom[];
extern unsigned int builtinrom_len;
#ifdef __cplusplus
extern "C"
{
#endif
char *GetBuiltinROMName();
#ifdef __cplusplus
}
#endif