Matt Hackmann

MattHackmann

The thoughts and goings-on of some programmer dad.

Returning to my Roots

They say all good things must come to an end. Such is true for my one week of summer vacation. It was brief, yet enjoyable. Got to celebrate my birthday with my family, eat grilled food and lots of potato salad, and also take the usual trip to Tulsa. It's a pity that it was so short, but I'm complaining too much. The school is giving me a bachelor's degree in less than two years, so this time next year I'll be out of school. But that's a story for another day.

As you may recall, last month began my two month long journey through the wonders of Flash. Last month focused primarily on Flash as it pertains to design, teaching us the interface, motion tweens, and just a hint of ActionScript. This month, however, is dedicated to nothing but ActionScript. To demonstrate these "newly acquired skills" our final project consists of making a game.

Now, I put "newly acquired" in quotes for a reason. For anybody who's frequented this blog long enough you should know by now that I am, or at least used to be, heavy into coding. Because of this I have an unfair advantage over the rest of the class in this regard and as such I am taking my project to ridiculous extents (far above the scope of the course). The nice thing, though, is that the instructor actually acknowledges the fact that I am as proficient as I am, so much so that I took the place of the lab instructor for one day (whilst the real one was waiting in line for his iPhone 3G). Being able to talk to the instructor about geeky stuff as equals is a nice departure. But, enough ego stroking, about the actual project itself.

I chose to challenge myself and create essentially a dumbed down clone of Street Fighter, but be completely extensible through external configuration files. The first thing I avoided was the use of graphics inside Flash itself opting instead to load sprite sheets from external sources. Everything is configured through XML sheets that define how a character should react, define where animations are within a sprite sheet, stages, etc. Amazingly, I've achieved most of this and all very, very quickly. The biggest problem I foresee is the addition of enemy AI, but I've got ideas on how to achieve this as well. Overall, though, I'm loving being back at the helm of the coding ship. I'd forgotten how much of a thrill can be derived from hours of typing if statements and nested for loops. Damn, it's good to be back.

Metal Gear Music Day!

I missed a week again, but here I am performing my civic duty whilst on vacation. Today, the music of choice is Metal Gear Solid. I recently just finished the first one and as soon as I return from vacation will begin work on MGS2. If you have a PS2 and have not plaed any of these games I highly recommend picking up the recently released Essential Collection as I did. Three games for thirty bucks is a really good deal for excellent games such as these. But anyways, on to the music.

Continue Reading

It's Super Awesome Vacation Time!

Summer is here, and with it vacation. Unfortunately for us Full Sailors, we only get about a week of summer vacation (I get ten days because all my classes let out early). However, that's not to say I'm not going to take advantage of the time off. Quite the contrary. Tomorrow I will be heading back to the good old midwest and chill with my folks. It's been over half a year since I've seen them, so I'm definitely looking forward to going back. I'm especially looking forward to potato salad. Mmmmmm....

Interestingly enough, tomorrow is also one year from my graduation. It hardly seems like I've been here for nine months, but there it is. It probably helps that I'm usually pretty busy and that most of this is pretty fun. Though, I will admit, Flash was pretty boring. Don't get me wrong, I enjoyed working on my projects, but they were small enough that I finished pretty quickly. And the last half of the course was a beginners guide to programming, something that I really don't need. So, while I did try to do more advanced things than what the project originally called for, there wasn't a whole lot of room to flex my muscles, as it were. You can check out my final project here. Yes, it is an homage to egoraptor's series of awesomeness (who I had the great pleasure of helping recently). My other class this month was 3D modelling. That class was a lot of fun. The teacher was cool, the project was fun; I just enjoyed the entire class. I'll have my final project up on YouTube sometime soon.

In other news, I have begun and am about half way through animating a real Flash cartoon, one which will be entitled Phoenix Awesome. I hope to have it up on Newgrounds sometime over break.

Well, that's about everything. I'll leave you with my MGP final project which I never actually posted on here. Enjoy

youtube video

Game Music Friday - Gerudo Valley

One of the first video game songs I remember really enjoying was Gerudo Valley from Zelda: Ocarina of Time for the Nintendo 64. Back when I had a crappy computer and little hard drive space, I would listen to MIDI files and Gerudo Valley was one of the few songs that had a pretty good version out there. Of course, now that disk space isn't an issue, I've moved on to MP3s. However, I still find myself listening to more remixes than the actual original itself (because, let's face it, the N64 instrument library sucked). But, anyways, here are this weeks Gerudo Valley music picks.

Continue Reading

Xbox Modding - An Epic Fight, An Epic Win

The internet has and continues to change the way society operates. The biggest thing the internet has going for it is instant availability for anything you could ever want. Be it from news, to sports, to knowledge, whatever, it's out there and waiting to be accessed whenever your heart desires. It's no surprise that this on demand media is killing the mediums of old: radio, newspapers, magazines, etc. However, the one that seems to be taking a hit the most, recently, is television. Why wait for a show to come on when you can just watch it on the internet whenever you want? Okay, this isn't really about the philosophies of the internet, but it seemed a nice segue into a recent project of mine.

For anybody who's perused the geek community long enough, you've probably heard of console modding. The act of taking a console and breaking it's will so that it becomes your little bitch and does whatever you say. I've done this before, most notably with the PS2 and the DS. I'd been using my PS2 to watch videos, but the media programs out there for it are nowhere near as extensive and awesome as Xbox Media Center (XBMC). This program is truly amazing. It is, by far, the best media center program in existance (yes, it trumps Windows Media Center and Front Row). XBMC has it all: support for more video codecs than actually exist, a beautiful interface, a robust scripting engine (a la Python), and it's open source to boot. It was this promise of media tranquility that pushed me to purchase a second hand Xbox ($60 from GameStop) and take a shot at modding its brains out. What I didn't realize, was that the road that lay before me was a long and bumpy one.

There are many ways to mod your Xbox, but all of them fall under two categories: modchipping and softmod. Modchipping (a word that I honestly just made up) is the act of actually soldering a chip to your Xbox that overrides it's flash bios and runs its own software. Having no soldering skills, I decided to go the safer route and did a soft mod. There are a goodly amount of softmods out there, but I used a combo of a game save exploit and hot swapping to get the job done. Hot swapping, in this case, is the act of swapping the IDE cable of the Xbox hard drive to hook it up to your PC so you can read and write files to it. It has to be done while the Xbox is running becase the drive is locked and only the Xbox that its shipped with can unlock it. I may post a condensed quide to the approach I used later, but here begins (finally) the sordid tale of my three days of agony.

Actuallt, I lied. A little more exposition is needed. The reason I chose to do a hot swap mod instead of the safer transfer a game save to the Xbox via USB drive was due solely to impatience. I would have needed to buy an adapter with which to hook up my fash drive which would mean ordering from some shady mod chip store online, waiting a week or two for delivery and I just didn't want to wait that long. Plus, being a guy whose messed with computer hardware before, I was pretty confident in my ability to pull this off.

So, I got home from buying my Xbox and set to work immediately. I was only a minute into the operation when I ran into my first major problem: the Xbox had torx screws, and I was fresh out of torx screwdrivers. So, instead of bugging my room mate to take back to the store to aquire said screwdrivers, I did what I usually do in this situation: find something else. In this case, I used the spare keys for my bike chain. A few minutes and torn up fingers later, the top came off and I was ready to do the swap.

Being that I only have a laptop, I couldn't plug the hard drive directly into my computer. As such, I had to go through a USB enclosure. This itself presented a myriad of problems, though I didn't realize it at the time. Perusing the intewebs had told me that I needed a program called hdd_driver to copy my stuff to the drive. So, going through the usual channels, I acquired myself a copy of that and was greeted by five thousand missing DLL errors. So, instead I decided to look for an alternative. The next thing I came across was a Linux distro with built-in FatX support (the file system type of Xbox). Attempting to use this raised one issue, though: it would only recognize drives plugged into an IDE channel (hda). Being that I've had some experience with various virtual machines, I knew qemu emulated this. So, I set up my environment and booted. However, I was greeted with "Xbox partitions not found".

I didn't realize it at the time, but I was not going about unlocking my drive properly at the time. Getting this done correctly is something that requires fast movements and, when you've bricked the dashboard, precise timing. Once I realized this and had gotten the drive recognized, I attempted to install my exploit (which was, at that time, a fonts exploit and not the game save one) via a handy little install script that came with the Linux distro. How nice is that? What I didn't realize at this point was that though my drive was recognized and could be read from, writing was not working correctly. So, this script did it's thing: it went and formatted the C drive and replaced all the dashboard files with the hacked versions... or at least tried to.

It came back with a few "unable to copy" errors which unnerved me a little, but I reconnected my Xbox correctly and booted it up only to be greeted by the ambiguous error 21. My dashboard was completely unbootable and with it so shrank my window of opportunity to hot swap while the drive was still unlocked. After about twenty or so tries I finally managed to get a good swap again and found that my C drive was in ruins... and there wasn't anything I could do about it. Everything I tried to do resulted in "Unable to copy. Read-only file system." At this point I thought it was because it couldn't delete the gibberish files that had been written from the script I had run. So, I decided to wait until the next day and pick up a copy of Splinter Cell and use the game save exploit for it.

So, I picked up Splinter Cell and proceeded to get the files necessary. After some time I managed to get a succesful swap again, erased my E drive (where the save games are stored) and attempted to copy over the data. I was again greeted with ominous "Read-only file system" error. I spent the rest of that day and most of the next basically doing the same thing: turn on Xbox, swap the drive, attempt to copy, fail, change something, rinse and repeat. Nothing worked, and I was afraid that I'd just wasted sixty bucks on a console that could only play games. Needless to say, I got really good at swapping the drive.

I was about to give up when I decided to blame something other than the Linux distro I was running. I decided to do two things: swap differently, and use a different IDE cable. The cable I had been using was a one device, 40-wire cable. I moved up to a two device, 80-wire cable and unplugged the DVD drive from the Xbox as well. By unplugging the DVD drive I gave myself a larger window of opportunity to swap as the system will fail that before it checks the hard drive. So, after I'd done this I went through the usual paces and, lo and behold, files were copied. To say I was ecstatic would be an understatement. With the exploit running and the FTP server working, I now had an easy way to transfer my files to and from the box and the rest went down pretty easily (there was one more minor hiccup, but something that I figured out pretty quickly).

So, now my Xbox is fully modded and running XBMC, and it is really freakin' sweet. All the pain and emotional anguish I suffered had finally paid off, and I now have cable television for the price of my internet connection and a one time fee of $60.