Life and Wii64 in 2012

Wow, 2012, who would’ve thought we’d still be updating Wii64 nearly 5 years after its inception. I won’t be the first to admit that we have been putting off updating this blog – but sadly there hasn’t been all too much to talk about. When Wii64 started, as a team, we were all just university students messing about with our new understanding on how hardware works. Fast forward 5 years, we have mortgages to pay, relationships, etc… and real life doesn’t have a time slot in the day labelled “Wii64 development” on most days/weeks/months. Don’t get me wrong, there’s still the drive to get Wii64 to a nice and polished version, but it is taking its time now due to real life really hampering down on everything.

Now that the excuses/truth are out of the way, it’s time to actually divulge the progress (or lack thereof) we’ve made.

Dynamic recompiler re-write “rec2″

Tehpola has been working out the finer/final details surrounding the design and implementation of the new recompiler core which we’ve simply labelled “rec2″. In the interim, we’ve removed the non pure interpreter out of Wii64 as it was never working nor going to be useful for us. Rec2 is actually at the point of being coded now but not in a working state obviously as there is still the current recompiler to rip out. Once coding is complete, there’s bug fixes, potential minor re-writes if the design doesn’t cover a specific use case, etc.

Rice / glN64

There have been some minor improvements to glN64, but the big addition in the next release will be Rice, which is substantially faster than glN64 and supports more ucodes. Rice still has some combiner issues that need to be ironed out. Also, Rice doesn’t currently support framebuffer textures. We’d at least like to fix the combining issues before the next release.

Miscellaneous / Optimizations

I have been keeping Wii64 up to date behind the scenes with all the various libOGC changes/advancements. I’ve also been making minor optimizations such as saving 512KB of RAM by consolidating some memory structs, adding more previously interpreted instructions to the recompiler and other small adjustments. There are also other things we’ve picked up from other emulators that should help us gain further compatibility such as Blast Corps and DK64 intro fixes.

Before you all ask, why haven’t you released partial builds with the above features? It’s simply because, due to the recompiler changes, major parts of the emulator are unstable or totally broken when compared to the last publicly released version.

Not64

In case you haven’t seen it already, Not64 is a “Experimental Modification” of Wii64 v1.1 by Extrems over at GC-Forever. It attempts to gain performance by doing some GC/Wii specific hardware optimizations as well as integrating patches from various mupen64plus sources. It is also compiled with the latest libOGC/etc so you will have better device (USB amongst other things) support compared to the last public release of Wii64. I personally recommend it if you’re looking for something newer than Wii64 1.1 to hold you over until the next official release.

Still alive and kicking

We’re just writing to let the fans know that we’re still alive and kicking, but unfortunately, finding very little free time on our hands these days for emulation development. We’ve still got big plans for all of our GC/Wii related projects, and development has been still progressing. We’re also planning on releasing builds with IOS58 support, but we’ve been waiting for the libogc USB2 wrinkles to be ironed out.

Be sure to stick around; we appreciate all your support and feedback in both the fast and slow development times.

Classic Controller (and PRO) calibration test data wanted

In an effort to fix the classic controller pro analog stick ranges in WiiSX and Wii64, we’d like users to run this DOL and report back their findings via the comments button on this post. All values should be posted back here that are on screen, both calibrated and from moving the sticks, oh and don’t forget to mention the type of controller the data is for!

Thanks to everyone in advance :)

WiiSX Beta 2.1 Release

Without further adieu, we would like to present a quick bug-fix release for WiiSX and CubeSX – Beta 2.1 :)

Get it now!

This release mainly addresses the issues to do with games resetting to their title screens and having unresponsive controls as well as a few other minor bugs. Save states made in the previous version will no longer work in this version as a result of some changes made to save audio state.

For more detailed changes on what’s new in WiiSX Beta 2.1:
* Fixed issues where saving was not actually saving
* Many input plugin improvements
* Added “Home” button as a menu combo for CC
* Fixed inverted Y-axis for nunchuk and classic controllers
* Fixed rumble and added “disable rumble” setting
* SMB correction to allow anonymous user and password
* Threaded network init and proper error messages when it fails
* Audio state saved/loaded for save states

We’d like to thank the quick and responsive users which have reported the issues we’ve addressed above.

Enjoy WiiSX Beta 2.1, and if you feel like donating to support our projects, please feel free to visit our Donations page :)

June 2010 Progress Update

It’s been a while since we’ve said much about what’s going on behind the scenes in terms of general progress and development, so here we are, filling you all in on what we’ve been working on.

In terms of WiiSX progress, we’re nearing the beta 2 milestone we have had in mind for a few months now. The majority of features and bug fixes we have had planned are nearing completion. To be specific, WiiSX beta 2 will encompass a feature rich graphical user interface much like that seen in Wii64 and in the preview video posted below. Some other important features to note include newly ported CDR, Sound and input plugins, boasting features such as dual shock, configurable controllers, clear crisp audio and a good range of CD image support, including subchannel data. Most of the features have been implemented, but we are currently ironing out some show stopping bugs such as seen in certain Capcom fighter games.

On the Wii64 front, we managed to finish migrating the private SVN commits to the public googlecode repository up to Beta 1.1 Honey, so now you can see all of the individual commits and work that went into the last version. Since the last release, we’ve made some progress with bugfixes in the code, but we have larger plans ahead of us for the next beta in order to increase speed and compatibility. Once WiiSX beta 2 is out, we are looking forward to giving Wii64 some more of the TLC it deserves. :)

Here’s one last juicy tidbit for you all… There’s yet another emulator that the Wii64Team has been longing to see on the GC/Wii, so we’ve started working on a port in our spare time, and we’re hoping that it will arrive in all of your Homebrew Channels later this year. Kudos to anyone who can guess the platform (although we’re not promising to confirm if you’re right…) ;)

Merry Christmas ’09

The Wii64Team would like to wish everyone a very Merry Christmas.

We have been quite busy working on our upcoming Wii64 and WiiSX betas in the little time we can find in between our real lives and other work.

Rest assured we’re all still alive and kicking, and working on your favorite emulators, with many surprises in store.

Happy Holidays!

Developers’ Retrospective Part 1: emu_kidid’s nostalgia

Since that first post I made, all the way back on the 27th of May 2007 over at tehskeen.com .. the emulator sure has progressed! Back at the time which I created that thread, I considered myself a rather experienced coder, but nothing could’ve prepared me for the long road of development we had ahead of us. Looking back, I think we were all a little naive at how quickly this could be done. It wasn’t until we had an alpha version out that we realized what hard work lied ahead of us. Wii64, then known as mupen64gc simply because we only thought it would ever run on a Gamecube, would soon change my knowledge of N64 hardware, coding and debugging forever.

It was only a few months after that post in which tehpola (mainly) and I quickly got together a mupen64 port which would actually do something on a GC. One of the first games we ever saw emulated in mupen64gc was Rampage World Tour. I remember it would run with bad graphics, no sound, very bad input, direct saving (which would take up to a minute each time a single byte wanted to save), and on top of all that, it wouldn’t even reach past 4 or 5 FPS before eventually crashing anyway due to a limited software rendering graphics plugin. We eventually got Super Mario 64 to work with the software rendering plugin at around 4-5FPS too, but we soon realized we would need a better hardware accelerated plugin.

A little bit of trivia, we actually emulated the public domain ROM “Fire Demo by LaC” before anything but we didn’t see it running as the software graphics plugin was rendering the screen too dark :P

Very shortly after our initial work and after our search for a graphics coder, sepp256 joined the project. He was keen to learn about the N64, and showed us quick results by porting the mupen64 software rendering graphics plugin to work with some GX hardware acceleration and Super Mario 64 was running at around 35% of the speed. Around this time (October 2007), we released the first alpha for the general public to see, known as the “Basic GX Build” which was followed shortly by the “DVD Loading Build”, enabling users to load ROMs from their Gamecube DVD drive. These builds had quite a large number of graphical glitches, extremely screechy audio, and general lack of features, however the emulator was starting to show positive progress.

As time progressed and we entered the new year of 2008, there was new hope on the horizon, Wii homebrew would soon be possible thanks to Team Twiizers, so we were quite motivated to move forward. The mupen64gc project would continue, with many bugfixes, a GUI with a menu system now slowly coming together, threaded audio emulation, a ROM cache, a TLB cache, native saves working and even more graphics plugin bugfixes and improvements than you could poke a stick at! There was yet another alpha version released for the GC at this point to show the public some more progress, labelled “New Year’s Edition”. This was the first official alpha release to feature the GX graphics plugin and the version 1 menu (pink coloured backdrop made by brakken from tehskeen).

Shortly after this, we were given the ability of being able to load homebrew on the Wii (thx Team Twiizers!), this was great news for us as we would now have so much more CPU horsepower and memory to play with, not to mention the new peripherals. It didn’t take us long to have our code working on the Wii, and we quickly realized how much more power we had in our hands thanks to the Wii. Word got out around the scene, and we were special enough to have a build labelled “Wii64 Tiizer Edition” be included in the Homebrew Channel initial release. This alpha build was pretty far along, but used a very early port of the glN64 graphics plugin port and the Pure Interpreter for everything.

After May 2008′s Tiizer edition release, we started to see a very large influx in the amount of unofficial builds popping up with Wiimote support, and 100′s of different button mappings and other attempts to better the emulator. As a result of this, we were bombarded with bug reports which weren’t even ours to fix, and even more so, there were bugs introduced in the unofficial builds because of bad tool chains people were using to build the emulator which took us a while to track down the causes of (thinking they were problems in our code too). After that, things went a little quiet for a bit as we all continued on with our real lives, but development continued to trickle into the public googlecode repository as we made changes.

Shortly after this time, sepp256′s port of Orkin’s glN64 graphics plugin work was showing major progress and we would soon have a working port on the GC/Wii with hardware acceleration via GX. Although, this was never yet marked with a milestone alpha version as there was a silent boom of progress in another part of the emulator we were awaiting to happen. Around early January 2009 and after a few rewrites, the dynamic recompiler was actually starting to run games and most homebrew demos. This was not a quick step, and whilst things were actually starting to run on the new core, there were major issues. The first notable thing to run on the dynarec was “Fire Demo by LaC” .. which is quite interesting since it was the first thing to run on the pure interpreter. By “run”, you’d all probably think, full fps, etc .. , but in truth, it only executed enough code to emulate 90 video interrupts which showed us about 3 frames of graphics on screen. It wasn’t realized until I coded a N64 demo by hand to print the instruction execution count to the screen that we would need to be a lot more accurate in our emulation.

During early February 2009, we decided to setup a private SVN to get us through what was basically going to be a complete rewrite of the most major part of the emulator, the MIPS to PPC dynarec. You can imagine our relief at the time, it would be the first time in a long while that we could now work on the crucial parts of the emulator at our own pace and not have to worry about people compiling every single small changed revision and making complaints. We did this because the working copy of the source code would be obviously broken until major work was done in the areas of the Dynarec and the menu.

During this time, there was a great increase in progress, tehpola was hard at work on the dynarec, sepp256 was making progress in leaps and bounds on the glN64 bugfixes and the new menu system, and I was tinkering with various areas of the emulator such as thinking about ways to fit the expansion pak support into the emulator and testing everyone’s code out. From this point on, the positive progress never stopped, sure there were hard times when we would find bugs that not even days of debugging would solve, but we always moved on. Some bugs were so hard to debug on the Wii that tehpola found it easier to resolve them by porting his dynarec to the PS3 (which is further explained in this article).

In about a 7 month period after this, which leads us up to this beta 1 release, to sum things up, we managed to transform the emulator to go from only running 3 frames of a homebrew demo to playing The Legend of Zelda Majoras Mask with 2xSaI filtered textures, framebuffer effects, expansion pak support, all at a very playable frame rate with a nice new menu backing the emulator with artwork from Wii homebrew artist drmr.

The future of Wii64 is looking pretty optimistic with many bugfixes and optimizations up our sleeves to better it. We expect to have a minor version out shortly to address some of the bugs which users have come across in beta 1.

I hope on behalf of the team that everyone enjoys emulating their old favourites with the Wii64 beta 1 release as much as I had developing and testing the emulator. Since release, we have had some very positive reviews from you all, which have provided us with motivation to get working on beta 2 and making the emulator more compatible and feature rich in the coming versions. We also really appreciate everyones support towards our hardware and hosting donations fund.

Wii64 Beta 1

It’s out!
Downloads are available for Wii64, Cube64, and the source.

We’ve put a lot of hard work into this, and we hope you guys will have as much fun playing as we have developing it. If you’re feeling generous, we’re always accepting donations to keep this site running and to purchase any hardware we need for testing. You can donate here.

A few notes about this release

Wii64 users (Wii build):

The emulator can be controlled with any combination of GC controllers, Classic Controllers, and Wiimotes with Nunchuks (sorry, Wiimotes must have nunchuks). See the included readme for details on the controls. You can load ROMs (only uncompressed) and saves from a FAT formatted SD or USB (details on the folders required are in the readme).

Cube64 users (Gamecube build):

Due to memory limitations, there is no expansion pak support, it uses TLB cache, 2xSaI and FB Textures may break things and of course ROMs will run slower.

Fellow Developers:

We don’t want to discourage other people forking and working on the emulator; however, any unofficial builds must not be called “Wii64″ or “Cube64″ nor use the Wii64 or Cube64 logo in order to avoid confusion. For now, we’re just releasing a snapshot of the source used to build Beta 1, but we’re planning on updating the public repository with each commit we’ve made to our private repository so that everyone can see the progression of the code. This process will begin soon. Public SVN is up to date with beta 1 code.

Support:

Finally, there is a support forum located on TehSkeen, so if you are having trouble with Beta 1, please seek help there before submitting issues to the Google code tracker. You can also join in and discuss the project with other users there.

Sadly, TehSkeen is no longer around, it served as a great website for the GC/Wii homebrew community, for now, you may post any issues you have on the GoogleCode tracker.