Wednesday, January 6, 2010

It's here. The second beta release of our series leading up to 2.0: Mupen64Plus v1.99.2 has been tagged. I'm not creating official source and binary packages of this tag, because it is primarily meant to be a Developer Preview for the new native Win32 build of Mupen64Plus.

This is the first ever release of Mupen64Plus which can be compiled either by GCC in unix-based operating systems or Visual C++ in Windows. No other N64 emulator has ever been able to claim this level of platform independence. So, for you Win32 developers who would like to build and run this preview release, here is the software that you will need:

1. Mercurial (TortoiseHG)
2. Visual Studio .NET 2005

That's it; no other tools or libraries are needed. I chose to base the project files on VS 2005 (MSVC8) because that is the latest version which is officially supported by SDL. It may be possible to import/upgrade the sln/project files to VC9 but I haven't attempted this. To get started,

1. Use your Mercurial client to clone tag "1.99.2" of the following repositories (put them in the same parent directory):

http://bitbucket.org/richard42/mupen64plus-audio-sdl/
http://bitbucket.org/richard42/mupen64plus-core/
http://bitbucket.org/richard42/mupen64plus-input-sdl/
http://bitbucket.org/richard42/mupen64plus-rsp-hle/
http://bitbucket.org/richard42/mupen64plus-ui-console/
http://bitbucket.org/richard42/mupen64plus-video-rice/
http://bitbucket.org/richard42/mupen64plus-win32-deps/

2. Open up the solution file: mupen64plus-ui-console\projects\msvc8\mupen64plus-ui-console.sln

3. Build it in Debug or Release mode

4. Run it. You can use 'winrar' or similar to unzip the mupen64plus.v64.gz test ROM file in mupen64plus-core\roms\ and drop it into the build directory, then click the "Run" button in visual studio. Or, you can open a DOS shell and 'cd' to the build dir and run your own roms with "mupen64plus-ui-console.exe \path\to\my\rom.z64".

Caveats (Read this before complaining):
  1. There is no GUI application for selecting the ROMs. The GUI code was removed during the re-architecture for the sake of platform independence. There is only a command-line front-end application. If you would like to have a GUI front-end, I encourage you to write one. The core library API is fully documented and published on our emuwiki site.
  2. The console-based front-end only accepts uncompressed ROM images. If your ROMs are zipped, you will have to unzip them.
  3. The included Rice Video plugin seem to be sensitive to a parameter called ScreenUpdateSetting. The value which worked best in Linux causes a lot of flickering in Windows. If you have this problem, you can change the setting either on a per-ROM basis by editing the RiceVideoLinux.ini file or on a global (default) basis in the mupen64plus.cfg file, which is in a subdir of your home directory called "Application Data\Mupen64Plus".
So the important question: How does it run? I have a core 2 duo laptop with an Intel 965 chipset (X3100 integrated graphics) and Mario Kart runs beautifully. The dynamic recompiler works (you have to enable it with --emumode 2), the audio playback is great, and the new joystick auto-configuration works. I haven't tested it extensively, so there are bound to be a few latent bugs. Give it a shot and let me know how it runs!