Skip to content

project64 - RetroBIOS

Type standalone
Classification Other
Source https://github.com/project64/project64
Version Dev-4.0.0
Profiled 2026-08-12
Cores project64
Systems nintendo-64, nintendo-64dd
Technical notes

Nintendo 64 and 64DD emulator for Windows. Project64.exe plus the plugin DLLs the same solution builds, driven by the plugin spec in Source/Project64-plugin-spec. ES-DE passes the ROM as the only argument. AppVeyor builds Win32 and x64 only; Source/Android holds no build file.

Cartridge boot reads no file. PostPif is hardcoded true, so Reset seeds the general purpose registers from the CIC identified in the ROM image, points the program counter at 0xA4000040 and the boot block is copied into SP DMEM. The branch that would start at the PIF ROM address is unreachable and the PIF ROM read in the memory handler is commented out, so neither a PIF ROM nor a CIC ROM is opened (Source/Project64-core/N64System/N64System.cpp:911-916, Source/Project64-core/N64System/Mips/Register.cpp:342,371-373,395-535, Source/Project64-core/N64System/MemoryHandler/PifRamHandler.cpp:26).

The CIC is identified from the boot block. ByteSwapRom normalises the image so each 32-bit read yields the ROM's big-endian word, then GetCicChipID sums those words from 0x40 to 0x1000 and matches the total against a table of constants. Three of them are 64DD IPL images: 0xD2E53EF008 for the Japanese retail chip 8303, 0xD2E53E5DDA for the American retail chip 8501, 0xD2E53EF39F for the development chip 8401. IsLoadedRomDDIPL is that test (Source/Project64-core/N64System/N64Rom.cpp:240-273,281-305,500-511).

Aleck64 images are recognised by the same table, through a second sum taken at 0xC00, and get their own boot register seed. No arcade hardware is emulated and no Aleck64 file is opened (Source/Project64-core/N64System/N64Rom.cpp:283,310-316, Source/Project64-core/N64System/Mips/Register.cpp:477-479).

Transfer Pak reads a Game Boy cartridge image and its save from paths the user sets per game. Both are the user's own cartridge dump, and no Game Boy boot ROM is involved (Source/Project64-core/N64System/Mips/GBCart.cpp:695-698,744,788, Source/Project64-core/Settings.cpp:242-243).

The support files under Config ship in the installer and in the nightly package. CIniFile returns silently when the path does not exist, so each of them degrades to the defaults registered in AddHandler rather than failing (Source/Common/IniFile.cpp:493-522, Source/Project64-core/Settings.cpp:134-145).

GLideN64 ships as a bundled plugin, pinned as a submodule at gonetz/GLideN64 c8ef81c7d9aede9f67f6ed3d3426c90541f9f13e, and brings its own GLideN64.ini, GLideN64.custom.ini and translations. Project64's own code names none of them; only Installer.iss and package_zip.cmd copy them (Source/Installer/Installer.iss:38, Source/Script/package_zip.cmd:42-47).

Generated at runtime, never supplied: Project64.cfg, Project64.rdn, Project64.cache3, Project64.zcache, Config/Cheats-User, Config/Enhancements-User, Save, Screenshots, Logs and the texture caches.

12 files | 3 required, 9 optional | 3 in repo, 9 missing

64DD_IPL_v12_JPN.bin required in repo japan
64DD IPL ROM (Japanese retail)

64DD_IPL_USA.bin required in repo north-america
64DD IPL ROM (American retail)

64DD_IPL_DEV.bin required in repo
64DD IPL ROM (development)

Project64.rdb optional missing bundled
ROM settings database

Video.rdb optional missing bundled
Per game video plugin settings

Audio.rdb optional missing bundled
Per game audio plugin settings

Project64.rdx optional missing bundled
ROM database extension

Config/Cheats/*.cht optional missing bundled
Shipped cheat database

Config/Enhancements/*.enh optional missing bundled
Shipped enhancement database

Lang/*.pj.Lang optional missing bundled
Interface translations

Jabo_Direct3D8.dll optional missing bundled
Jabo's Direct3D8 video plugin

Jabo_Dsound.dll optional missing bundled
Jabo's DirectSound audio plugin

Generated on 2026-08-23T16:12:06Z