Friday, May 18, 2012

Final Blog Post

This blog post will be both the 200th post and the final blog post I leave here. I apologize for the length and I honestly don't expect anyone to wade through all of this so I'll try to carve it out into sections. The purpose of this is to hopefully explain everything I ever did and put it to rest once and for all. Since I still get more than 60 hits a day on this blog consistently and a message every month asking me questions, I feel this is the most I can give back. It's been an incredible ride as Arikado, and I'm honestly pretty upset to hang up the disguise.

On becoming Genya Arikado

I was fourteen years old and I needed a forum handle that no one could connect me with that I could post to programming forums asking for advice with. Having just beaten Castlevania: Aria of Sorrow with the best ending, I chose "Arikado" as my handle. I'm not one for having tons of handles, so I've always stuck with this one throughout anything I ever did online (now I just use my real name for stuff).

Anyways, I was fourteen, I was in eighth grade, and I was a game programmer. Since I was twelve I taught myself C and C++ and had been making text based games. Around the time I was thirteen I graduated into SDL and ALLEGRO and started making games with graphics and sound effects. In so many ways, it was the best time of my life.

I read on Joystiq about Wii hackers and the Homebrew Channel Beta. It blew my fifteen year old mind that there were people who figured out how to run their own code on the Wii. Being able to at least launch a hello world program would be a dream come true for me. I followed the HackMii blog and WiiBrew closely. When the Homebrew Channel was finally released I downloaded every program that was made for it, played them all to death, and then began a month long excursion into discovering how to write my own programs. I learned about things like GCC, GDB, GNU/Linux, data structures, PowerPC, stdlib, the inner workings of computer hardware, application security, and so much more. After reinstalling devkitPPC several times, I was finally able to compile and run a program on my Wii. It was a milestone in my life.

It wasn't soon after that I discovered libwiisprite by chaosteil and I was able to apply my game programming knowledge to creating games on the Wii. I asked a ton of questions in the newly revamped WiiBrew Forums. So many that I was actually quite a nuisance (thanks for bearing with me Muzer, Dykam, Ave, tona, and countless others). It's impossible for me to articulate how much knowledge I gained in just a short period of time. I was in awe of HackMii team and the work being done by others to port popular games and emulators to the Wii. By comparison, I wasn't doing anything for the Wii, but I still felt in awe every single day that I woke up that I was working in such an incredible scene with such exciting software.

Eventually, I got the nerve to release a target shooting game I made called "Wii Shooting Gallery". It was poorly received, but I didn't care. I had built a Wii homebrew application and other people had downloaded and ran it. A few days later I googled it and I was blown away by how many other websites had reported on it. Holy cow! I payed close attention to feedback and I modified Wii Shooting Gallery as commentators suggested. I added new modes and I set the artwork to be loaded externally so that anyone could modify it. I played the final version of the game just before writing this and I was quite surprised that it's a solid fun, five minutes of entertainment. Obviously, I'm biased, but for some reason I remembered it not being much good.

Alongside Wii Shooting Gallery I developed a brick breaker game I called WiiBreaker. A couple of noteworthy things happened during this. First, I wanted to be able to control the paddle with the balance board. There was no balance board support in devkitPPC at the time so I found a hacker named who was working on implementing it, I compiled his libogc patches, and I was able to make some really minor tweaks to it based on what he explained to me about the hardware. Eventually, his code (which I think included my changes) was merged into devkitPPC. It's starting to become ubiquitous with me saying "I was blown away by ...", but I was really blown away that I had made even a minor contribution to a widely used SDK. Wow!

At this point I had a small name for myself on the WiiBrew Forums. I had begun to help more people than I annoyed and I was actually sought out privately by a number of people via IRC for some more consultation and advice. I truly believe that this, right here, right now, was the absolute highlight of my second life as Genya Arikado. I had done some small things, I was recognized by people I didn't know, I actually had some good friends I spoke to a lot, and above all I was having a blast.

Then tona, the only active administrator on the WiiBrew forums, promoted me to being a moderator and then eventually an administrator on the forums. I was a week away from turning sixteen at the time this happened. To be perfectly honest, it really went to my head that I could be regarded as a community voice on the same level as bushing, marcan, and others who were my personal heroes at the time (truthfully, they still are).

The forum moderation never went nearly as well as I had hoped. I learned a few very powerful, valuable lessons:
  • You don't have to contribute to everything in your realm of interest, just for the sake of contributing. Try to add to the discussion with new information, not just a rehash of what's obvious (except when appropriate)
  • There are real people sitting on the other end of computer screens. Even though it's fun, the Internet is just an abstraction of life, not a game.
  • Most importantly: Don't be a dick. 
To everyone who ever put up with a bout of my youthful asshattery on the forums or elsewhere I sincerely apologize (hey WaxyPumpkin72 and z4001500187). The learning process involves making mistakes. In my case, many, many, many mistakes. But I attribute each and every mistake as a reason I was able to evolve into (hopefully) a much better adult. I look at some of the kids on the forums across Anonymous and in other scenes (particularly all the 15 and 16 year old iOS hackers) and sometimes I muse if I was really as big of a jerk as some of them. Usually, I was worse.

DOP-Mii

DOP-Mii got started when someone on the WiiBrew forums wanted to patch an IOS (an IOS is essentially like a kernel for the Wii, it has very many of them) to install fakesigned content (content lacking an official signature from Nintendo like custom channels or customized IOS's). However, patching an IOS required loading an IOS with a bug in it and this particular user could only do so if the software loaded an IOS other than the default IOS. So, I modified the program to let you load any IOS available on your Wii. I called the new version of the program DOP-IOS MOD. I didn't know hardly anything about how IOS worked, but DOP-IOS MOD got thousands of downloads in just a few days. I started adding more and more features to DOP-IOS MOD. Some from other programs, some that I developed carefully myself (the bootmii NAND backup was a life saver by the way).

With the frequent updates Nintendo was making to the Wii, it was hard to keep DOP-IOS MOD up to date as I was working through school. I got a ton of community support. One community member, Lunatik, was particularly helpful and soon became an official maintainer of DOP-IOS MOD. Lunatik built a new framework in C++, added more features using the framework, and eventually we both decided to rename the program to DOP-Mii as it no longer shared any real resemblance to the original program (of course, we still accredited the original author).

Only until recently in my life, DOP-Mii was the most competitive piece of software I ever worked on. Every single day there was a new branch of it with a minor change and some clown claiming all of the credit for the code base and refusing to share the source code. Lunatik and I worked our assess off to keep DOP-Mii as up to date as possible meanwhile adding new features to DOP-Mii.

There was one particularly bad clone by WiiWu that was just a WAD Installer added on top of an old version of DOP-IOS MOD (note, NOT the DOP-Mii code base) with no credit whatsoever given to me. This ensued in quite a lot of heated argument from me over at GBATemp which resulted in me getting banned there (for my third time, actually).

I learned some important lessons from this:
  •  If you have a good idea, people are going to try and steal it. It's as natural as the sunrise ever morning and the sunset every evening.
  • Don't take what software people choose to use so seriously. I was passionate about my work being represented in only it's finest form, but I should have realized that if people were dumb enough to use dangerous clones, that I shouldn't bother trying to stop them. After all, it doesn't effect me.
Today, I'd like to say that the DOP-Mii debacle has made me much more mellow in the world of software development. One of my apps on the Android market recently got cloned to a T and I hardly batted an eyelash. I just added more stuff to mine, relished in the fact I had a larger audience, and moved on with my life. It didn't cause me any stress or even remotely upset me. As someone who closely reads many programming blogs and websites, I can certainly affirm we need a lot more level heads in the world. But I now realize that levelheadedness is only achieved through experience.

Today, last I checked, while it has a few bugs for some users, DOP-Mii is still pretty solid and works perfectly for most. I think some people have forked and seriously improved it. I have no more desire to ever return to DOP-Mii except to perhaps use the code base as a means to revitalize some of my knowledge.


DeSmuME Wii


Porting DeSmuME to Wii was the coolest thing I did as Arikado. Seriously. I did a ton of reading on how software emulation works, and I followed the porting process on a few other projects so I had a good idea of how to do it. It took me over a year, from the time I was sixteen to seventeen, but I was able to port DeSmuME to the Wii and it was amazing. Humongous thanks go to scanff who helped me fix a memory allocation error that was the last bug preventing emulation from occurring.

Let me go in reverse order this time and tell you what I learned from porting DeSmuME to Wii first:
  •  Never, ever, ever, ever, EVER announce that you are developing or porting something unless you either have a perfect reputation or you already have a prototype. Some of the messages I received while I was porting DeSmuME really upset me at the time. I was only sixteen, and you trolls can be damn effective when you want to.
  • When porting something, first compile and mess with it on it's intended platform first. Doing so would have probably saved me a few months of understanding run time errors.

Software emulation is really, really difficult and complex. Porting a software emulator is in many ways just as complex as writing one, especially if you intend to port it well. I think in the end, as it is now, DeSmuME Wii is pretty amazing.

When I started porting it, WinterMute (devkitPRO maintainer) basically told me it couldn't be done, or if it could be done, it would be so slow that it wouldn't be playable. Without drastically changing the emulation core, we were able to get some lightweight Nintendo DS games to run at nearly full speed or even full speed (DS homebrew, tingles balloon flight, NAMCO arcade classics). Some of the heaviest games ran at as much as 20% of full speed.

I am still confident, as I always was, that if the emulation core was drastically rewritten such that CPU emulation dynamically recompiled instructions from ARM to PPC before run time, if the Wii's unique floating point instructions were fully taken advantage of, and if a faster version of our GX renderer were implemented, that there is no reason why most if not all DS games could have been emulated at full speed.

Having said all that, I personally do not have ability nor the desire to do this. In fact, even the famous emulatemii team might not be able to do this.

Immediately off the top of my head though, recompiling the DeSmuME Wii with the latest libogc should speed it up a barely noticeable amount and should fix the sound issues that were caused when a bug was introduced in libogc. Dancingninja has told me he intends to look into this over summer.

Our version of DeSmuME, DeSmuME Wii, was also used as the base for a port of DeSmuME to the Playstation 3. Last I checked over a year ago, it was running games like Yoshi's Island 2 at full speed. This is probably your best bet for a full speed console emulator of the Nintendo DS unless you yourself wish to write one.

NullDCe

Remember that first lesson I learned while working on DeSmuME Wii? Well, yeah. I happened across drk||Raziel on IRC and persuaded him to let me work on NullDCe. I added a full control scheme to the emulator, some minor rendering fixes, and then I was kicked off the project without warning because I was working too slowly. It ran surprisingly decently and drk||Raziel promised me he would have it running at full speed. I have no idea if drk||Raziel will ever release it. I'm not going to be an asshole and release an old version of it though. And I'm certainly not going to share any of the source code out of respect for drk||Raziel. My last build isn't worth playing. Sorry about how this one turned out, Internet.

I was working on a ton of different project on the Wii when I jumped on the opportunity to take on nulldce as well. It was a dumb idea in retrospect.

Heretic, HeXen, and Strife

I don't remember the whole story of how I decided to port these. I was 99% done porting HeXen but having an issue loading WAD files. Endianness at the time was my programming Kryptonite. I posted my HeXen source code and asked for help, a week later Hermes posted a working port of HeXen. Only two days after, feeling slighted by Hermes, I ported Heretic to the Wii. I then went back and finished my HeXen port. Next, I blasted Hermes's ports out of the water by enabling add-on packs to work in my ports, adding a better and full control scheme, adding USB support, and other features. I never did get around to implementing cheats though unlike Hermes did in HeXen.

Shortly after I started working on porting Strife. I got the game to load, but the engine seemed to crash after about a minute. Mr. Peanut who ported Wolfenstein 3D to the Wii gave me a hand but we were both pretty unsuccessful. The code for Strife is up on Google Code still if you ever want to take a look at it.

There's still room for improvement on all three of these projects. I think they would be great for someone bored or someone who wants to really learn about porting to work on.

 ALLEGRO

I mentioned towards  the beginning of this post how I had started learning game programming with the ALLEGRO library. When I was working on porting RealityBoy over the to the Wii, I was trying to port over some of ALLEGRO. I was contacted privately by DarkNation who had gotten some of it working in his spare time. Together, we were able to make some stuff work but only very little. I think it would be awesome if someone forked our work and finished it. There are a ton of programs written using ALLEGRO and it would be great to see some of these on the Wii.

 WiirtualBoy and Mednafen for Wii

I was contacted by raz0red who had gotten some of Mednafen to run on the Wii so that you could emulate the virtual boy on the Wii. I did some work speeding up the port, but raz0red really did pretty much everything. He deserves, well, all the credit for both WiirtualBoy and Mednafen. I was thrilled to have done some work on both of the projects. raz0red is extremely talented and has been behind a ton of neat projects. It was an honor working with him.

DOOM

The DOOM port was done by porting the prboom engine to the Wii. It was done long before I ever made DOP-Mii. Toward the end of my Wii programming career, the port had gotten old and had a number of bugs from libogc updates. It was also lacking many widely requested features (USB support, control changes, customization options). I was able to get in touch with the project maintainer and I was able to fix those bugs, add those features, and even get sound working for the first time (with a hand from MrPeanut). Oddly though, I've been repeatedly criticized as "credit whoring" for my participation in the DOOM project. Yes, I've contributed to a lot of things, I have my name in a lot of places, but I don't just put my name on things for the sake of putting my name on things. I apologize though if my contributions to this project were never perfectly clear, feel free to look at the diff record on the repository for more information.

Social Activism

I did two things under the name "Genya Arikado" that I'm quite proud of. The first, was going after someone who was selling my software. I ended up forcing him to get a lawyer and costing him legal fees before he complied with my requests and I dropped my case. It was the most hilarious hing in the world receiving e-mail written in heavy legalese to castlevania7689@yahoo.com addressed to "Sir Arikado". The second was raising awareness of scams perpetuated by people selling poor GUI development tools like Wii Game Studio. I got bunches of fun threats from my comments I made about them.

If I could go back in time I probably wouldn't have bothered with either incident, even though I'm rather pleased with how they turned out. Carrying on a charade as "Genya Arikado" probably wasn't the best idea I ever had and my have had some ramifications for me had my adversaries been just slightly more intelligent or capable than rocks.

Running newskeen.com and 1ntrusion.com

For awhile I became bothered by the lack of a quality "scene" news site since brakken quit running tehskeen. To some extent, I still am. GBATemp sucks. But I was definitely not fit to report the news. It's extremely time consuming and very mentally draining. I gained a lot of respect for those who do do it. I also, erm, "broke up" with Len from newskeen in a way that wasn't the nicest. I simply had no more desire to participate in the site and Len didn't seem to be able to accept that at the time. If you're reading this, sorry Len. I don't remember all of the details, just that it got a bit ugly. Yet another one of my hot headed hormonal adventures through the process of growing up.

Donations

I want to seriously thank anyone who ever sent me money. The money really, really helped me. However, in retrospect, I should have never accepted donations. Writing homebrew is something that should only be done purely for passion. Again, thank you. I don't think I'll ever to repay all of the kindness and generosity I was given through donations.

Unreleased Hax

I found an exploit in Silent Hill Shattered Memories but I wasn't able to completely break the hashing algorithm used to protect it from tampering. Apparently the checksums have checksums. I did a lot of writing on this as I was working on it so I'll be releasing that writing in case anyone finds it useful.

I also found an exploit in Boom Blox. There wasn't any hashing used to protect the savefile from tampering so I was able to edit the name string and create a buffer overflow. The next step would have been to open up an assembler and code in a DOL/ELF loader. Here is a previously unreleased video of this hack at work.

scanff and I got Duke Nukem 3D to play on the Wii. We never finished it. Apparently there's a decent eduke port for the Wii now which is also what ours was based off of. I think I mentioned this publicly a few times so I felt it worth addressing.

Saying goodbye to Genya Arikado

So today, four and a half years since I started writing code for the Wii, I find it appropriate to officially distance myself from my life as Genya Arikado. I haven't touched anything on Wii for six months, and I'd be lieing if I said I was planning on working on anything this summer. I might touch something on the Wii, but I also might not. I'm betting on the latter as I'm currently employed doing web development and mobile app development for Android. Finally, I have much more of a social life than I used to, so it's just really hard to squeeze in time to play on the Wii even though in all honesty I wish I could.

If I ever come back to doing gaming homebrew, I've decided I'll probably do so under a different moniker to avoid any confusion and drama. Maybe I'll change my mind on this, I don't know what the future holds, but I find it unlikely I would use the name Arikado again.

These have been the best four and a half years in my life and I am eternally thankful to everyone I have met during them. I can not express my gratitude no matter how hard I try to find the right words to do so.

I hope this post clears up, well, everything about me ever. If you have any questions, I'll probably browse the comments for about a month or so until shoving off from this identity for good.

Thank you again. Everyone. For everything.

27 comments:

  1. Fair thee well good sir. Thank you for your contribution and your honesty. There are few who can boast what you have done for the coding community, but I'm sure you are on to bigger and better things. I hope the future holds everything you could ever want and more.

    ReplyDelete
  2. Arikado, you don't know me, but I've always looked up to you. You've been a great inspiration.

    I'm interested- what kind of android applications do you write?

    ReplyDelete
  3. Great story, keep your passions alive forever.

    ReplyDelete
  4. Don't you forget about wii! http://www.youtube.com/watch?v=CdqoNKCCt7A

    ReplyDelete
  5. @Anonymous1: Thank you, I really appreciate that.

    @Shane: Nothing special. Just stuff that's useful to me personally and a few contracted apps..

    @Anonymous2: Thank you, I'll try!

    @owen: Nice to hear from you! Don't worry I won't :-)

    ReplyDelete
  6. Wut? I seriously don't remember you getting banned EVER on the temp. Especially not in the last 3 years when I've been moderating the Wii section there.

    Also, I know that you've retired and stuff, but would you care to elaborate on the fact that GBAtemp sucks? You know, I always like to hear complaints so that I can try to improve the site.

    You will be missed as a really capable dev. I hope that you'll stick around nonetheless.

    Bye~

    ReplyDelete
  7. @raulpica Was first banned from temp for posting about some hacking I was doing to Twitter. It was a apparently too hardcore and dangerous so I was banned for two weeks. Second and third time I was banned for "trolling" when I was really just trying to be as crystal clear as possible when talking about some of my work. None of the bans lasted a long time, but they were each pretty ridiculous and unjustified. If you want, dig through my account "OArikadoO". I only made very few posts on temp so I'm sure you'll see why.

    As I said in this post though, if I could back in time, I probably wouldn't have even bothered participating on temp or a number of other forums in order to support as many of my users as I possibly could.

    GOOD NEWS though: I think that you coming here and inquiring about it is a strong sign that temp is improving. Good luck moderating the site, I'll bet you're doing a great job!

    ReplyDelete
  8. Well, it's been a blast. Thanks for everything; I never actually did get around to adding all of what I wanted to DOP-Mii but if you look close enough, you will find a half-completed scripting engine.

    Being 17 now I can relate to a lot of what you went through then as I go through random hormonal rage now. I'd write about them, but this is your blog, not mine.

    Life. Have a good one.

    ReplyDelete
  9. @lukegb We'll definitely be keeping in touch as I bet you can assume. Feel free to relate as much or as little as you want in the comments here though, I don't mind :3

    ReplyDelete
  10. Oh, I see... they were just suspensions then. I'm really sad to hear about that. That happened while I wasn't a mod yet (January 2010, just checked your logs!), otherwise I'd have probably took care of them myself, obviously in a different way.

    Back then mods were a lot quicker in jumping the gun, nowadays we're a lot more lax in modding, especially with heated arguments.

    The Wii section is still a mess, but I'm seriously trying my best to keep it in shape ;)

    All the best, yet again! See ya around :yay:

    ReplyDelete
  11. Hmm, I didn't realize you were so young. I guess that makes your achievements all the more impressive ;) I still wish the DeSmuME Wii would be more compatible but you won't find me complaining about its progress. Thanks for all of your contributions and good luck with your future endeavors!

    ReplyDelete
  12. hi Arikado
    thks for all of your contributions
    good luck for the future

    ReplyDelete
  13. Final Blog? Meaning you wont do any post again?.

    ReplyDelete
  14. good luck in your life arikado and thanks

    ReplyDelete
  15. does it mean we won't have a great time reading an article from you" sad to hear that.. but I wish you a happy life ahead of you..

    ReplyDelete
  16. Even though you don't know me (and obviously I don't know you personally either), I always had utter respect for you and supported you since the very beginning. It's sad to see a talented young man like yourself go without a doubt, but nothing lasts forever, or so they say.

    Before I wish you all the best in your future endeavours, kindly let me add my input to particular topics you mentioned:

    1) Someone selling your applications:
    I not entirely sure anymore on what applications we are talking here.I would guess DOP-Mii was the application in question? If so, then just for your information the whole legal steps were pointless from the beginning due to DOP-Mii's license which explicitely allows other people to sell your software.

    2) the "temp":
    Please don't get fooled by a single moderator's opinion of the "temp". While I consider raulpica the best moderator this site ever had, the "temp" is still a place with hundreds of disrespectful posts daily and staff members who aren't doing their job properly (especially one of the new recent mods who keep makes mistakes after mistakes).

    3) Donations:
    There is absolutely nothing wrong about recieving donations. The homebrew scene would be nothing if it wasn't for the people who make homebrew. Please keep in mind that a donation is no payment. You weren't getting paid for your work, you just recieved donations as a token of gratitude and support.

    (If you still have doubts, you can always say you were young and needed the money :P)

    With that said I send you warmest regards and wish you the very best for your future life.

    Goodbye :)

    ReplyDelete
  17. Hey Arikado! Remember me? Back a few years ago I was extremely active on the forums. I had a lot of fun and we had a few conversations. I will always remember the time you banned Flyguy. That really taught me a lot about public behavior. So in some ways, you did help me, and for that, I would like to thank you. You were a great moderator/admin and you made the forums great. I had the uppermost respect for you. Like some others said, I honestly expected you to be much older. You are a very well mannered young man. I too am around your age. You helped me (TopGun) so much with all these wii things, and you introduced me to coding, so once again, thank you. I am sorry for all the times I (Flyguy) was annoying and out of place! So (forgive me if this is weird) I would just like to say that if you need anything, and I am there to help, it would be my honor. I wish you the best of luck in your future. We were never really in contact too much so I can't really say stay in touch. :P
    With the highest regards.
    TopGun/Flyguy

    ReplyDelete
  18. Your work has made a lot of people (myself included) very happy. From what I know of you I suspect that when next gen consoles get released I'll be reading bout you again

    ReplyDelete
  19. Great read. Now sadly I will remove this site from my bookmarks, Enjoyed reading all your posts. Maybe one day...nah, but who knows? :)

    ReplyDelete
  20. Hopefully see you around dude.
    I played wii shotting gallery a few weeks ago when I was messing around with the wii for the first time in months. Didn't realise that was you.

    Good luck with with the future.

    ReplyDelete
  21. Arikado, what happened to the supposed WiiDoom update you mentioned in the Sporadia Update?

    http://arikadosblog.blogspot.mx/2010/12/update-sporadia.html

    You mentioned that MrPeanut already had the background music working and a release was about to be out to the public just after some minor bug fixes (which was about 2 years ago)

    Any possible news on that?

    ReplyDelete
    Replies
    1. Try using RetroArch Wii, it has compatibility for prboom and cam ne [;aued with background music, you just gotta find the mp3 files as the soundtrack.txt says.

      Delete
  22. Hey Arikado this is Waxy. I just saw this post and I wanted to say that I totally accept you're apology and I'm sad to see you go. All that homebrew business was a fun part of my life, and since you're leaving its like its complete now. haha. Good luck with the rest of what you decide to do with your life man.

    ReplyDelete
  23. Please come back, bro. Miss you so much! :(

    ReplyDelete
  24. I know you'll probs never see this but I just found this post now & had to comment. You were an awesome coder back in the day (as I'm sure you still are) & an inspiration to us all. What nostalgia to find this blog & go back through the memories of it all... Thanks for DOP-Mii & the rest, your work was very helpful & awesome. Have a good one!

    ReplyDelete
  25. This is probably too late, but what applications have you took part in/made for Android?

    ReplyDelete
  26. Hey, I just want to say that 14 years later, your blog posts on C, C++, and Wii homebrew are helping me (a 16 year old) learn. The Wii has always been my favorite console and I've grown up with it for almost my whole life, and I've scoured the entire internet for tutorials on Wii homebrew, although I'm pretty late to the party. Although you've moved on from the community, thank you for your work and the resources you've published.

    ReplyDelete