Project64

From Emulation General Wiki
Revision as of 18:04, 10 July 2021 by WebMint (talk | contribs) (From latest Wayback Machine snapshot)
Jump to navigation Jump to search
Project64
Project 64 logo.png
Original developer(s) zilmar
Jabo
Current developer(s) Project64 Team
Latest version 3.0.1
Active Yes
Platform(s) Windows
Architecture(s) x86
Emulates Nintendo 64
Website PJ64-emu.com
Support ($) Patreon
License GNU GPLv2
Source code GitHub
BIOS/Keys Required for 64DD

Project64 is a free and open source, plugin-based Nintendo 64 emulator.

Download

Windows Official Public releases
Windows Official Nightly builds

Windows Unofficial dev builds
Compiled by emucr, may contain old/deprecated plugins
Windows Unofficial bundle
Includes PJ64 1.6, PJ64 2.1 and various other plugins

Windows 64DD.org builds
Recommended for 64DD emulation
Android 2.3.3

History

It first came out as a purely experimental emulator by developers zilmar and Jabo. It quickly revolutionized the N64 emulation landscape. For many years afterward, it was considered to be the best N64 emulator, with only Mupen64 and 1964 posing any real competition. By version 1.6, it was touted as being not only highly compatible but also the most stable of the lot.

However, upon announcing the development of version 1.7, the project became closed off to most of the public. The only way to keep up with the latest developments was to donate $20 to obtain beta testing privileges. However, there were several development version leaks, most of which turned out to be unstable, prone to crashes, and full of performance and compatibility regressions, which cast doubt upon the competency of the developers. Upon Jabo's departure from the project in 2011, most people came to regard Projec64 as being stuck in development limbo, if not completely dead.

In 2013, however, zilmar, now the lone developer of Project64, released version 2.0, including its complete source code. Quickly afterward, version 2.1 was released. However, these versions proved to be a mixed bag in comparison to the older, long-standing 1.6 release, and even the leaked 1.7 betas in some respects. Several compatibility issues were fixed, and the interface was cleaned up, but the default plugins were largely inferior to earlier iterations, and even the core itself saw compatibility regressions in some games. And though the source had been made public, there was no public repository for developers to contribute fixes or pull requests, resulting in the project to becoming dormant again.

In 2015, zilmar created a public Project64 repository on GitHub, at last opening the gates for public contributions. Development picked up at break-neck speed and has yet to cease. Many of the issues with earlier versions of Project64 have now been fixed. It has been mostly ported to 64-bit, and there is even an effort underway to make it more portable and eventually work on non-Windows platforms.

Problems

Malware and nagware

A user complaining on the PJ64 forums after installing bundled malware

Up to version 2.2, the official installer for PJ64 included opt-out malware in the installer. In July of 2016, the malware was removed from both the source code and installers.[1] However, version 2.3 introduced a benign but irritating nagware screen that pops up when launching PJ64 after starting it multiple times, which grows more persistent with successive launches as a forced waiting period is installed. This can be disabled by modifying project64.cfg to appear as follows:

[Support Project64]Run Count=-1

Alternatively, you can type "thank you from project64" as the notification code.

Project64 2.4.0.1555 New Support Code Nag Scheme

UPDATED MARCH 19, 2021 -There is now a per-machine ID that gets generated on the user side and requests a confirmation code associated with it.

-Setting the Run Count to -1 in project64.cfg no longer stops the nag.

-The "thank you from project64" code no longer works (obviously, since they are now unique for every machine).

9 JULY 2021 - Thanks for the heads-up, some notes.

-You should be able to reset the new counter by removing registry key "user" in HKEY_CURRENT_USER\Software\Project64 (this is just a reset though)

-Project64's nag screen won't activate itself too quickly, making testing a little... interesting.

-Any change that prevents reading the registry key should also stop Project64 from advancing the run counter.

-Code validation is done with a server. Not possible to stop without proxy or patching.

-Registry key is also machine ID keyed, however code MAY only be checked on first entry, and a dedicated program could easily generate the registry key for any given machine ID.

-Those with even basic W32 API knowledge and C knowledge, consider studying https://github.com/project64/project64/blob/develop/Source/Project64/UserInterface/ProjectSupport.cpp

-I think even a Python script could do it, just be sure to GPL the results so someone else can take over. It's just good practice, morals and transparency anyway. I feel like Project64 have just shown they want to wage a war on their users. But also me.

Windows 10 BSOD

Following the stable release 2.0, Windows 10 users had a high likelihood of encountering a BSOD upon attempting to run Project64.[2] This was fixed before the release of version 2.3, so Windows 10 users are encouraged not to use versions 2.0–2.2.

Plugins

Main article: Recommended N64 plugins

Project64 still ships with Jabo's video and audio plugins and for many years used them as defaults (along with his input plugin). These plugins are closed-source, haven't been updated since the 1.7 days, and even have regressions compared to Jabo's 1.6.1 versions. However, Project64 now defaults to its own branded video, audio, and input plugins that are a fork of Glide64, a new audio plugin loosely based on Azimer's and mupen64plus's code, and original respectively. It additionally ships with GLideN64 and N-Rage's input plugin, both of which are recommended over the defaults. Users may still prefer additional plugins for accuracy or feature set, such as Angrylion video, Azimer's audio, and HatCat's RSP interpreter.

Netplay

Uses Kaillera or AQZ.

Downloads

Review (Kaillera)
PROS
  • Support for up to 4 simultaneous people playing
  • No fiddling with router settings and port forwarding
  • Netplay traffic is handled by dedicated central servers as well as other less populated servers
  • Master server list of all servers. As well as waiting games option of cached games in the master server list
  • Private game chat support and public chat to speak people outside your game room
  • Being able to drop out of a game at any time usually without disrupting your teammate(s)
  • Kicking/banning/muting people from your room
  • It's a matchmaking service where you can join other people's rooms, too
  • Has recording and playback for emulation
CONS
  • Disables Transfer, Rumble and Memory Pack emulation (AFAIK, not 100% sure about Memory Pack)
  • It sometimes fails to properly initialize Glide64 video plugins, giving them a black screen when the game starts
  • It also seems to hate certain older video plugins,' causing massive FPS drops
  • It's slightly (significantly still) prone to freezing/crashing/BSOD (in that order)
  • Random, inconsistent FPS drops due to the server trying to keep everyone synced, sometimes stuttering. It's annoying, but rarely does it make it unplayable
  • Everyone needs to have the exact same ROM version or netplay won't work (if it somehow does, it'll desync rather quickly)
  • After 18 minutes you will desync on Kaillera Servers.
  • You need to constantly switch focus back and forth between chat and emulator window in order to chat.
  • You will hear no sound while the window is unfocused.
Review (AQZ)
PROS
  • Allows for unlimited connections (4 players only, the rest are spectators)
  • Unusually low bandwidth usage
  • Can change latency on the fly to smooth out netplay experience at the expense of input lag
  • Works very well with 2 to 3 players, even with +200ms
  • Only the host needs to open a port
CONS
  • Definitely disables Transfer, Rumble and Memory Pack emulation
  • If a client drops while a game is in session, the entire server stops automatically
  • The server seems to work reliably smooth with 3 people, but might stutter and lag with 4, regardless of latency
  • It sometimes fails to properly initialize Glide64 video plugins, giving them a black screen
  • It also seems to hate certain older video plugins, causing massive FPS drops
  • It's sometimes troublesome to get it to properly sync during the first few minutes but works flawlessly after you get it working
  • Randomly freezes the emulator with no warning
  • Very rarely produces a BSOD

References

External Links