Dolphin, the GameCube and Wii emulator - Forums

Full Version: My five year anniversary with Dolphin!
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello everyone,

Most of you know me here for working on getting Dolphin onto Android devices which has such been dubbed “Dolphin Mobile.” Little do most people know, is that I’ve been with the Dolphin team for five years. I’ve mostly been lurking in the shadows and not paying much attention, enough so that I hadn’t made a forum account until just a bit ago. To put in perspective how long ago five years is; Let’s start with when Dolphin went open source. ector originally pushed the Dolphin source code to GoogleCode on July 12th of 2008; My first push into the code base was on July 20th 2008. I joined Dolphin only eight days after it went open source! I was one of the first besides the original authors, ector and F|RES, to join Dolphin when it went open source. From that point forward, many people joined the project and the project grew exponentially quickly.

To get started, let’s go through a brief history of what I’ve done with the project. My initial commit to the Dolphin code base, and many more to follow, were fixes to Linux support. As many should know, I’m a strong advocator of Unix and barely use Windows in my daily life. The initial state of Dolphin on Linux was abysmal. ector made a fine effort prior to getting Linux working and compiling, but he is a Windows developer so it fell to the wayside quickly. At first; it wouldn’t compile, the JIT recompiler was broken, there wasn’t any video, input was pure Win32 code, everything was using Tomaha font, etc etc. All I was working on at that start was bringing up Linux support again.

Around August 3rd, I had finally pestered ector enough to begin work on bringing up the JIT to work on Linux. This was, at the time, much too high of a difficulty for me to do. It worked at this point! Although it was extremely slow and ran at about the same speed as the current ARM JIT on cell phones. A start nonetheless. Fast forward a bit; did some UI work, UI-less work, worked towards GL plugin hires rendering...

Fun issue when you mess up rendering at higher resolutions. This was somewhere around September 15th in 2008.


On October 15th 2008, I finally committed something that was new and nobody had worked on before. I had begun work on the Gamecube microphone. This was an accessory that you plugged in to a memory card slot and you could yell at games. Not many games used this, but it was fun in any case. The work was incomplete and my tinkering could never quite get it to work. It took until October 17th 2011 that shuffle2 took the initiative to complete the device. To this day, it may or may not actually work, the voice recognition on Gamecube games was terrible and you really never knew if it worked or not.

Quickly after I started work on another major project within Dolphin. I started work on the Gamecube Broadband adapter, or better known as the BBA. This was a huge undertaking since the hardware is nearly /completely/ undocumented. I got lucky this time around and managed to persuade fellow Gamecube emulator developer Masken, who made the amazing emulator Whinecube, to release his source to his emulator. His emulator at the time completely emulated the BBA to the extent that homebrew games/apps would run without a hiccup. I took his code as inspiration towards getting the BBA in to Dolphin. This was a project a spent months fiddling with and I only ever got it as far as Phantasy Star Online getting an IP address via DHCP. This was another project that I started and would eventually get finished by someone else. The BBA got finished by sktsqrl on June 21st 2012. This feature isn’t quite for OSX and can be tracked with our issue tracker here(https://code.google.com/p/dolphin-emu/is...ail?id=647).

So to save time here, let’s just make a short timeline.
  • March 26th 2009 - Work on Linux Wiimote support
  • April 24th 2009 - Begin work on OS X support.
  • ??? - Boatloads of BBA work
  • June 22nd 2009 - Linux Wiimote works!
  • July 15th 2009 - Work on Dolphin on PowerPC host architecture
  • July 15th 2009 - Get kicked off Dolphin project
  • August 2nd 200 - I’m back! Fixed emulated Wiimote in Linux.
  • Sept 24th 2009 - Audio in OSX!
  • Sept 30th 2009 - Begin work on OpenCL texture decoder.
  • Jan 29th 2010 - Fix JIT cores in OSX
  • March 9th 2010 - First time delving into the heart of the JIT core
I do want to take a small pause here. Somewhere around the time of July 2010, I had finally begun work on removing our Nvidia CG dependency from the OpenGL plugin and switching over to GLSL. Now I had originally wanted to do this because I had on and off been working on bringing Dolphin to old PowerPC iMacs and iPhone 3GS devices. At that point, my knowledge of OpenGL wasn’t the greatest and to be honest, my OpenGL experience still pales in comparison to someone that is halfway decent with it. I want to bring this up because this is a /very/ large change that can’t be broken down, affects /everyone/ that uses the OpenGL plugin, and in a lot of cases it was actually /slower/. In the end, it was decided(mostly by me at that time) that I was going to remove Nvidia CG at all costs and bring in GLSL. This was a costly mistake. I spent the better part of the next two years working on trying to bring up GLSL support. There were bugs /everywhere/ because I didn’t understand simple tasks in OpenGL and their were absolutely enormous speed regressions on hardware I couldn’t test with. In the end, it went through somewhere around five rewrites and absolutely tons of tinkering. It wasn’t until around May 26 2012 that someone experience enough came to the project and really did all the heavy lifting. This person came through and fixed every bug in the GLSL code base, made many improvements along the way, made the speed regressions that happen be minimal at worst, and overall just fixed our OpenGL backend in every way imaginable. This hero is none other than degasus, I commend him for putting up with our crappy code base for over a year to bring up GLSL support, and he is still working on further improving Dolphin every way he can.

< degasus> hey, i like to do boring things - specially if i would be able to run dolphin in future - far future …

On December 17th 2012, I pushed my initial code to the master branch to start getting Dolphin working on ARM Devices. This code basically made it so one could compile without our OpenGL backend. In a separate branch earlier in the year, on Janurary 11th to be precise, I had begun working on the ARM JIT recompiler. It has taken this long to get to the point it is and it is /still/ impressively slow. From that point on, I haven’t done much besides ARM work with Dolphin. Basically I worked on the ARM JIT recompiler, and helped degasus with getting the GLSL rewrite merged since it would be a requirement for ARM support.

One problem I knew when starting the ARM work in January, I knew no mobile devices could run our OpenGL backend, but the rumoured OpenGL ES 3 was supposed to bring the mobile platforms in to the new age and support /everything/ needed for Dolphin support. So I bid my time, working on my recompiler core while waiting for hardware to become available. Eventually the new CPU core could actually run games; Albeit, very slowly. My ARM device of choice was a Pandaboard. This was a small board that ran a OMAP4430, dual core 1Ghz Cortex-A9 and 1GB of RAM. The thing ran /stupidly/ slow even when I first got it. I didn’t care at the time, I just wanted the CPU core to work, I didn’t care about speed. Eventually October rolled around and Samsung announced a new Chromebook! It featured an Exynos5250 dual core Cortex-A15 at 1.7Ghz and 2GB of RAM. Best of all, it ran a Mali-T604, the first mobile GPU on the market to physically support OpenGL ES 3... Too bad the drivers weren’t there. This device wouldn’t get the drivers until July 16th 2013. Just a few days ago.

The next device then came out the day before Thanksgiving, the HTC Droid DNA or HTC Butterfly in Japan. This was the first Snapdragon device features Qualcomm’s new Adreno 320 which also supports OpenGL ES 3...Except the drivers again weren’t there. This device /still/ doesn’t have OpenGL ES 3 support. Alright, I’ve been bitten twice by ARM hardware that is supposed to support OpenGL ES 3, but doesn’t. This time I’ll wait and be 100% certain it has the software to backup the hardware. This wouldn’t come until April 26th 2013, when the Samsung Galaxy S4 was released.

This is where I really am impressed with the community around Dolphin, this was literally the very first device that could offer what Dolphin needed to run on Mobile hardware. I was 100% certain that the latest drivers that the Samsung was running was indeed OpenGL ES 3 capable. Only problem at this stage, is that I was running low on money. I couldn’t afford running out and buying a nearly $700 phone without contract for programming with. I was debating with a few of the other devs if I should cave in and start a kickstarter to bring up support of the device.

In the end, as most of you should know, I didn’t actually start a kickstarter. I started a donation drive for the phone using a simple flash widget for donations which actually donated the money directly into my Paypal account. While many complained that they wanted the security that a Kickstarter offered them, there was a overwhelming amount of support from the community here on http://dolphin-emu.org/ and also on Reddit. We managed to hold the front page on /r/Android for about eight hours straight, which is where over half of the donations came from. One month later, which was a week before the Samsung Galaxy S4 was to be released at that point in time. We were sitting just shy of the amount of money needed to pay for the Galaxy S4. I figured at that point, I would just swallow the difference and buy the rest of it. So the Saturday it was released, I drove nearly 500 miles to get to the nearest AT&T non-corporate store to buy one because corporate stores only sold them to actual AT&T customers. I ended up buying it from the Nebraska Furniture Mart store in Omaha Nebraska. Surprisingly, the next couple of days, a few late submissions to the donation party came through and actually managed to be enough to pay for the phone, tax, gas, and a meal on the way there.

So in the end, I really have to throw my arms up and thank the entire community that has allowed me to continue working on Dolphin Mobile support. Without the community, the emulator would not be anywhere where it is on mobiles and might have been abandoned at this point. I really can’t thank everyone enough that has contributed to the donation drive that I held, and I hope to rectify the bugs with the Adreno and Mali chipsets within the coming months.

With that, I’d like to say that the last five years with the Dolphin team has brought the biggest challenges I’ve ever faced, and it has improved me in ways I would have never expected. I’d also like to thank the Dolphin team itself for putting up with me for the past five years. I haven’t been the most mature, and most things I push is broken garbage, but it seems that at least most of you can handle some garbage from me once and awhile. So once again, thank you to everyone that has contributed and I have worked with, and I hope the coming months will still be as enjoyable as before.
Thanks for all you've done over the years Big Grin
Congrats!

[Image: audience.gif]
My sister and I just played a round of NSMB Wii on my computer last night with real Wiimotes. I think someone deserves some thanks for that Smile

Congratulations, I can't wait to see what else next you'll be working on. The community appreciates everything you do.
I don't remember you getting "kicked out". I think there were a few commits that were unwanted at that time, but you were still a part of the team, afaik. Wink

Either way, it's good to have you around.
Thanks for everything you have done, the community appreciates it alot!
[Image: Obama-Funny-Face-300x293.jpg]
[color=#ff0000]GOOD JOB![/color]
Great contributions, keep it up! i'm suddenly curious as to what all the other devs have ever done Wink