MiSTer N64 Core by FPGAZumSpass
This document will be updated frequently with updates and changes
Screenshots might be from older cores before fixes
Compatibility
Currently FPGAZumSpass is working on the chips that run N64 Software - compatibility is high and growing.
Graph by GPink
Test Versions
You can download the test versions from
The MiSterFPGA Discord channel named #test-builds
See below for the join link
Supported
- Sound
- The following format N64 / n64 / z64 / v64 can be loaded
- Up to 4 controllers
- Auto detection with the help of a database
- Texture Filtering
- EEPROM Save
- S-RAM Save
- Exact Analogue Out
- Controller Pak (selectable in the menu)
- Rumble (selectable in the menu)
- PAL Timing
- Dithering
- VI (Currently WIP for smaller functions)
- Transferpak
- CRT support (Y/C-support is coming soon)
- SNAC - WIP by a 3rd party
- Microphone (SNAC with OEM Voice Recognition Unit)
- Translation Lookaside Buffer (TLB) functionality
- Fast Loading
- Level Of Detail (LOD)
- All major RDP functions
- Cheats
Not (Yet) Supported
- RTC
- Transfer Pak support for the following mappers: MBC1,MBC3A,MBC3B,MBC1B,HuC-3 and HuC-1
Not Planned For Now
Error Codes
Please use the error decoder in the top bar to find the Description of an Error code. Here is a breakdown on the meaning per bit:
Something Went Wrong
The BIOS file
The N64 BIOS file (also called PIF ROM) should be renamed to
boot.rom (US Version) and
boot1.rom (EU Version), both file should be placed into the /games/N64 folder.
Here are some verified BIOS versions:
Bios File Name | Region | Version | SHA1 |
boot.rom | US/JP | NTSC 60hz | B7A0070CBE4B9BCAA08EC0B76B8C4955B2AE535A |
boot1.rom | EU | PAL 50hz | 15C23C3B671A8828302603F30C81D464B24A7FB1 |
boot.rom | BR | PAL-M 60hz | A749C815E858A2487F4105022D23E7001EE6F0EC |
The N64 Database \ Custom Database
The creation and maintenace is a joint effort by these contributors:
The purpose of the database is to recognize and set up the core for the ROM that is inserted.
To make this process smooth, just drop the file into the
/games/N64 directory and it will be picked up and used automatically.
You can download the file
DataBase_20240119032810.txt. Download with right-click and select "Save As" N64-database.txt (CAUTION - Case Senstive).
The list contains MD5 hash values over the first 4096 bytes in a ROM file. If you add a non existing entry you can use the full MD5 hash value
To get the md5 value over the first 4096 bytes you can use this command in Linux
head -c 4096 '/media/fat/games/N64/romname.z64' | md5sum
The core also supports a customer user database, in case the main database gets updated the user can preserve their custom settings in the file
N64-database_user.txt
Getting Your Games to Run Smoothly
Since the core is still in its ongoing development stage, it's important to keep in mind that not all games will work flawlessly. To see if your games are running as expected, you can check out
The Compatibility Tracker (Moondandy is the owner) for user experiences with the same titles.
The following formats are supported:
- n64 - Little Endian
- N64 - Big Endian
- z64 - Big Endian
- v64 - Byte Swapped
The core supports ROMs up to 64MB (might change in the future)
No patches are needed anymore, all games should boot without patches!
If you're having trouble with certain games, you might need to apply a patch for a temporary fix until the core becomes more stable. This can help improve the compatibility of those games.
justZ00t's patches (Not needed anymore)
yxkalle's patches
You can find an online patcher here here.
Known issues (by Meauxdal)
Due to technical limitations of the de10 nano combined with the N64 hardware it might not be possible to get all games running flawlessly. Meauxdal (Elle) created an overview of which games crash randomly. You might want to look at the same games in other regions that might work as expected
Conker's Bad Fur Day (Europe/USA) | |
Gauntlet Legends (Europe/USA/Japan) | Play the PSX version [Differences] |
Iggy's Reckin' Balls (USA/JP) | Play the European version or use the Turbo Core (bypass 9-2 crash) |
Jet Force Gemini/Star Twins (Europe/USA/Japan) | Find a patch here |
Nintama Rantarou 64 Game Gallery (Japan) | |
Polaris SnoCross (USA) | Play the PSX version |
Pro Mahjong Kiwame 64 (Japan) | Runs fine on the turbo core |
Resident Evil 2/Biohazard 2 (USA/Japan) | Play the PSX version |
Rugrats in Paris - The Movie (Europe/USA) | Play the PSX version |
Star Wars Episode I - Battle for Naboo (USA) | |
Tonic Trouble (Europe) | Play the US Version |
Wonder Project J2 - Koruro no Mori no Jozet (Japan) | Runs fine on the turbo core |
Here is a very detailed list of the issues:
Google Docs Issue List by Meauxdal (Elle)
Cheats
Cheats have been implemented as of February 16, 2024, by Yxkalle. You can download the cheat archive
here (updated 2024-03-07). This archive is dated February 18, 2024, and may receive updates in the future.
After downloading the cheats, please ensure to place the included individual zip files on your MiSTer at the following location: /media/fat/cheats/N64
Cheats will be automatically loaded and the cheat option will become available in the MiSTer Menu. Once installed, cheats will be automatically loaded, and the cheat option will become available in the MiSTer Menu. Remember to enable cheats in the same menu..
The Controller Layout
Here you see the layout of the controller for the N64 core - I have A and B linked to my Left and Right Analogue stick push. The N64 Analogue Stick Always gets mapped to Analogue Stick 1 and does not need to be configured. Up to 4 controllers are supported.
Left Shoulder | | Z Trigger | | Right Shoulder |
|
| Up | | C-UP | |
Left | D-Pad | Right | | Start | | B | | C-Left | C-Pad | C-Right |
| Down | | A | | C-Down | |
|
| Analogue Stick | |
External Links
FPGAZumSpass Pages
Test and Demo roms
Handy Links
Timeline
Date | Milestone | link |
2023-01-06 | N64 Core Exploration starts | |
2023-01-16 | Work on Emulator Starts | |
2023-02-02 | Core Announced | link |
2023-03-28 | First Game Booting in Emulator | link |
2023-04-13 | Discord N64 sub channel started - Testers Galore! | |
2023-05-26 | First Public Release | link |
2023-06-11 | NICCC Demo Running | link |
2023-07-04 | FPU implementation complete and passes all tests | link |
2023-07-09 | Controller and PIF (BIOS) handling implemented | link |
2023-07-09 | First game playable - Namco Museum | link |
2023-07-10 | Sound Added | link |
2023-08-02 | RSP Implementation now fulfills all n64-systemtests. Work on RDP starts | link |
2023-08-13 | First 3D games show signs of life. Game like Mario64 / Mario Kart 64 / StartFox 64 are working with limited functionality | link |
2023-08-16 | @Markun Implemented the N64 ROM Database for auto configuration | |
2023-08-19 | Perspective correction / 32bit RGBA texturing and other RDP updates | Link |
2023-08-20 | 4 Controller Support Implemented | Link |
2023-08-21 | Z-Buffer implemented | Link |
2023-08-26 | Massive RDP Update over the last few days which make several games run almost perfectly | Link |
2023-08-30 | Initial Data-cache implemented - Disabled by default | Link |
2023-09-01 | Save/Load for EEPROM saves | Link |
2023-09-02 | Texture Filtering | Link |
2023-09-04 | As of today's release 52% of the US entries are playable with some approaching almost perfect | |
2023-09-07 | In game Mario now has a face! | |
2023-09-09 | PAL (50Hz) timing support | |
2023-09-19 | Controller Pak/Rumble Support - Assign Rumble or CPAK in the MiSTer Core Menu | |
2023-09-25 | Dithering implemented / Regular OOT boots now | |
2023-09-30 | VI: Implement bilinear filtering/scaling | |
2023-10-11 | VI: The Processing part is done | |
2023-10-22 | OSD controller settings redesigned (on/off,snac,paktype for each controller) (includes SNAC implementation from blue1 added yesterday, supporting gamepads and cpak, rpak, tpak) | |
2023-11-19 | Initial TLB has been implemented - Mario now has a face! | |
2023-12-06 | The last non bootable game is now playable. This only leaves 4 game not playable of the US ROM library | |
2023-12-07 | TLB Functionality 100% complete | |
2023-12-15 | Fast Loading Implemented | |
2024-01-15 | Level of Detail (LOD) Implemented | |
2024-01-30 | YUV Textures Implemented - this completes the major RDP functionality |
2024-02-16 | yxkalle put in the groundwork for N64 cheats | |
2024-03-13 | Core Development has ended | |
FAQ:
- Help game XXXXXXXXX doesn't look right
- Check the tracker and let us know on discord (see above)
- While loading a ROM I see 'auto detect failed', what does it mean?
- It means the ROM you are loading has not been found in the N64-database.txt file
- I get this error on the core 'Controller pak damaged, can't save this game. Please turn power off' what do I do?
- if you see something like that, just reboot the core, it's the easiest way to fix (should only happen if you have an old savefile for e.g. only eeprom or you play a second game without rebooting the core)
- When will we get YC (YC TV Adapter) Support?
- From MikeS (who created the YC cores):I talked to Robert about it, and it really doesn't make sense to add in a bunch of hacks right now, it will all get ironed out when he makes the async module and just sets one resolution and scales all the games to it like original hardware
- Will the DE10Nano be powerful enough for this
- This is a reply from FPGSAZumSpass: As some of you worry about the overall speed/memory bandwidth or so not being enough on the de10-nano: this is not really the case here. First: when we speak about memory, it's always DDR3. The sdram only stores the rom, which is very slowly accessed and should be no issue at all. In terms of DDR3: We run the memory/cpu on the same clock for plenty of builds now without any issue. And it's used a lot, as nearly every component accesses it. Even more suspicious is that the instruction cache, that always works fine and stable for many builds, uses the same memory access as the new datacache. It's the same ports of the cpu module. So the issue must be somewhere else. It stinks like a timing issue as it changes between different boards and builds, but then it seems 100% stable over temperature and the build i made had timing closure, so quartus would lie. But a mistake i made is much more likely. So i will continue to research it. I might post builds here in the channel that some people could test to find out if the randomness is gone
- I bought a Brawler64 from RetroFighter - I can pair but it doesn't do anything
- It seems the instructions are written by misinformed hamsters. Hold the Pairing Button+A to switch to Xinput pairing mode (the 2 middle blue LEDs are lit up). Pair as per usual instructions with the MiSTer and it will work.
- We were told there would never be an N64 Core
- We got told the same with a PSX core. FPGAZumSpass is a FPGA god - don't argue.
- Does the core have sound?
- Yes, but your experience may vary
- So I added some random letters and stuff like the other entries into N64-database.txt, now [insert homebrew program] won't load. Why is this core so bad?
- As with anything - you should know what you're doing!
- Does Robby Love N64?
- I had no idea anyone read this page!
- I heard the maintainer of this page is a @#@#@!
- Correct - I can't deny that