Broken Rock Band pedal
The excitement of New Year's Eve got a little out of hand.
New Wii
Mini-Mii is in color and happy again:
Amusingly, when I first took the picture "I" blinked:
Broken Wii
Doh. While fooling around with my homemade Wii component cables I accidentally broke off the Pb and Pr pins of my Wii's YPbPr connector:
Trying to fix it just made it worse. I only have the Y signal left, so mini-Mii is angry now that he only shows up in black & white:
Super Mario Bros
I'm ashamed to admit this in public, but I don't recall having ever beat the original Super Mario Bros back on the NES when I was a kid (without using some sort of cheats), despite having played it for hundreds of hours on end. World 8 was just too difficult.
Today I downloaded the Wii "Virtual Console" version, played it through and beat it on the first try, and only died once (on the last boss).
I'm not exactly sure what to make of this. I have not played the game in more than 15 years, so seemingly the ability to beat the game is unrelated to having played it recently (though I did eerily remember the locations of every single powerup and warp point as if it was just yesterday).
I suspect that I must have much better hand-eye coordination and timing now than I did when I was 5 years old, because it seemed much easier to control Mario this time around, especially through all of the tricky jumps which were so difficult back in the day. The strange thing is that I don't remember having felt like I had "bad" coordination back then, but I must have. I guess 15 years of playing video games is useful for something 🙂
Homemade Wii component cables
I still haven't been able to get real Wii component cables in order to display in progressive scan (Nintendo seems to be thumbing their nose at their most loyal fans with the Wii), so I found a guide online for making your own homebrew cables. It works, but the main problem is that you have to destroy your composite A/V cable to do it.
Wiring like this is the moral equivalent of goto statements and spaghetti code. My E.E. professors would be ashamed..
Paperclips to the rescue! Obviously not a long-term solution, but it works.
Yay for finally being able to select 480p! I just noticed in this picture that my camera has no IR filter, so you can see all the LEDs in the Wii 'sensor bar.' I am surprised that it has 4 on each side..
Waiting for Wiidot
I don't know why, but this idea came to me while I was in the shower. Don't ask - I have no idea ;). My apologies to Samuel Beckett fans. (If you don't get it..)
Waiting for Wiidot
A tragicomedy in one act
A Wal-Mart parking lot. A bench. Night.
Estragon, sitting on the bench, is trying to warm up his feet.
(enter Vladimir)
Estragon: (giving up) Nothing to be done.
Vladimir: That’s what I’m saying.
Estragon: And might I inquire where you just went?
Vladimir: Behind the dumpsters at the back of the store, in the bushes.
Estragon: That’s disgusting you know.
Vladimir: Of course. But what else are we to do?
Estragon: You could wait. Like me.
Vladimir: Ah, how well is that working out for you?
Estragon: Not that well.
Vladimir: I doubt you’ll make it until they open in the morning.
Estragon: I have to.
Vladimir: It’s too much for one man.
Estragon: Suppose we gave up.
Vladimir: Now? It’s two in the morning; we’re half-way there. And we have a good spot in the line.
Estragon: What if they run out? Do we wait another week?
Vladimir: We don’t have anything else to do.
Estragon: So we wait until we get one.
Vladimir: Of course.
(enter Pozzo)
Pozzo: Cheerio!
Estragon: Are you handing out the Wii tickets?
Vladimir: He doesn’t look like a Wal-Mart employee.
Pozzo: The what tickets?
Estragon: Wii tickets.
Pozzo: You tickets?
Vladimir: No, we’re in line to buy the Wii, you see.
Estragon: ..and we thought you might-
Pozzo: In line to buy yourselves? I say, that sounds like a strange thing to do.
Estragon: Nintendo Wii.
Vladimir: It’s a game console.
Pozzo: A what? You’re making no sense.
Vladimir: I don’t think it’s us.
Estragon: Look, it’s just called Wii and we’re in line to buy it. At some point they said they were going to come around and hand out tickets to people in line.
Pozzo: I don’t have any tickets.
Vladimir: And you’re not in line?
Pozzo: No.
Estragon: Why are you here in the middle of the night?
Pozzo: How would I know?
Vladimir: You’re cracked.
Pozzo: Am I? You’re the ones waiting in a line to buy yourselves.
Estragon: No, the Wii is a gaming device -
Vladimir: Let’s just drop it.
Pozzo: Drop what?
Vladimir: Nothing, we were just confused.
Pozzo: I’ll say you were; I’ve never heard such boffo. Anyway, I’m off! Adieu.
(exit Pozzo)
Estragon: That was weird.
Vladimir: Maybe he’s been in line for a few days and just lost it.
Estragon: I didn’t see him when we walked by.
Vladimir: Or maybe he waited for a PS3 and didn’t get one.
Estragon: At least it passed the time.
Vladimir: It would have passed either way.
Estragon: Yes, but not so rapidly.
(Long silence)
Estragon: How much longer?
Vladimir: Still six hours.
Estragon: I’m so bored I could hang myself.
Vladimir: Do it.
Estragon: What would you do?
Vladimir: Laugh.
Estragon: I knew it.
Vladimir: Do you hear something up ahead?
Estragon: I believe I do.
Vladimir: I think they’re handing out the tickets for the Wiis.
Estragon: It’s about time.
(enter Wal-Mart Employee)
Employee: .. 52 .. 53 .. 54. (stops)
Vladimir: What about us?
Employee: That’s it.
Estragon: But we didn’t get tickets. Where are the rest of the tickets?
Employee: We only got 54 Wiis delivered. You’re number 55.
Vladimir: But the other lady said you had 75.
Employee: The day manager? She’s a little flaky. I counted them. 54.
Estragon: How could you only get 54? That’s not even a round number.
Employee: I just work here.
Vladimir: But we have to get one! We’ve waited all night.
Employee: We’d still have the same number of Wiis if you’d waited a year.
Estragon: This is crazy! Off by one.
Employee: You could try the Beaverton store. Or wait until we get another shipment next week. Sorry.
(exit Wal-Mart Employee)
Estragon: Should we wait?
Vladimir: Are you nuts?
Estragon: I will be if we don’t get a Wii.
Vladimir: You could hang yourself.
Estragon: (looks up at light pole) I could, you know. In fact, I think I will. (gets up, takes off belt)
Vladimir: Is it long enough?
Estragon: I think it is. (pants fall off)
Curtain.
Monome Apps
Here's a video (below) of a few of the more interesting monome apps I've made so far (see this post for an explanation of what a monome is).
- "Grid" game: I haven't thought of a better name, but this game is sort of like Othello or Go. Players play as "light" or "dark" and try to capture the opponent's territory by toggling his/her pieces and then capturing any surrounded squares. It's interesting to play at first, but after playing several people without finishing a game, we determined that it's probably not actually winnable as long as both players always make intelligent moves. But, interestingly enough, a "greedy" AI that plays against itself will often end up winning (and losing), as long as it doesn't get stuck in an infinite loop.
- "Raindrop": this is a raindrop ripple simulator. You can create ripples by pushing buttons - the more you push, the bigger the ripples. It's pretty cool.
- Pong: the classic. The resolution (8x8) is a little low, but it actually works pretty well since the computer simulates the board at higher resolution. The main problem I see with Pong is that each player has only 2 inputs (up and down), so it's not using the full power of the 64 buttons, which it seems like good monome apps should.
Here's the YouTube video:
Kafka vs. Kefka
I just read The Metamorphosis by Franz Kafka, whom I was previously unfamiliar with. I wasn't always precisely sure what constitutes a "Kafkaesque" situation, but now I have a much better idea.
After reading, one thing that struck me was the connection to Final Fantasy III's villain Kefka. I totally missed this connection as a child but now it seems quite obvious. Everything from his theme music ("Metamorphosis") down to the extreme existentialism and absurdism of the character is clearly an homage to Kafka's philosophy. It may not be the most complimentary portrayal, but it's still quite interesting.
The Adventures of Bruto
Amber commented on a previous post, expressing interest in playing the game I mentioned there. Here is a link to download it:
You will need to have the Isis Game Engine installed in order to play. Unzip bruto.zip and double-click bruto.iss to launch it (if you didn't use the Isis installer, run bruto.iss with the 'ivmconsole' program).
You control the dragon and must protect your hometown from marauding invaders. Fly around using the I, J, K, and L keys. Spacebar breathes fire, and the F key sucks in air in order to shoot fireballs (if you don't like those controls, you can edit dragon.iss in notepad and change them). You win after defeating 20 ships, or you lose when your town and castle are destroyed.
If you don't want to download the game but still want to see it in action, here is a WMV video of me playing. Note that the video has no sound because the game has no sound. Here's a low-quality YouTube copy of the video:
Isis
A couple of people were curious about the game engine behind Osiris, so I have written up a little page about it:
There's not much on that page yet, but it has an introduction to IsisScript and a couple of sample games. There are also links to the installer as well as the source code if you are interested in checking it out.
Osiris
I've been asked a few times for a copy of Expedition: Osiris, an educational computer game I worked on while in college. Unfortunately some of the images of Egyptian artifacts that are in the game are copyrighted by the university, so the game cannot be distributed publicly. But, I did get permission to create a "public domain" version of the game, as long as all the artifact images were obscured. Today I finally got around to doing it. Here are download links: (they are about 17 MB each)
- Osiris for Windows (Installer-less version)
- Osiris for Mac OS X (PPC only, sorry)
The system requirements are pretty modest: a 1 GHz processor and a 32 MB video card should play the game just fine.
Here is a medium quality WMV video of me playing the game for a few minutes: Osiris Video. It's a big file but it should stream OK. Here's a low-quality YouTube copy:
The purpose of the game is to teach the basics of a freshman 'Archaeology 101' class. You play the role of a college professor who organizes an Egyptian dig and are supposed to learn how to do the following things:
- Acquire funding
- Create a team of graduate students, specialists and local workers
- Manage the digging process to maximize efficiency and minimize artifact breakage
- Fend off attacks from mummies, crocodiles, scorpions, thieves and evil genies
- Manage team morale and energy while keeping within the budget
- Interpret your findings
- Publish your results in respectable journals to increase your prestige
Here are a couple of screenshots:
Setting up the team
Managing the dig
FSAA mini-benchmark
Have you ever looked at the FSAA settings in the control panel for your graphics card and wondered what the real visual difference is between them?
I was curious myself and decided to do a mini benchmark test. I pulled up a game I wrote a while ago called "The Adventures of Bruto" where you fly around as a dragon and fend off a naval attack. All of the graphics in the game are vector images, so it is a good visual test case for FSAA:
I took screenshots of the game at each FSAA setting level for a comparison. Here are closeups of the castle at 0x, 2x, 4x and 8x:
0x
2x
4x
8x
Overall the screenshots seem to confirm the idea that "more is better" when it comes to FSAA, but once you get past 2x the improvements don't seem to be that noticeable. I'll probably leave games on 2x or 4x and bump up other settings like model/texture detail if I need to make a tradeoff.
Phone SNES
Last weekend I became distressed that the 500 MHz processor in my cell phone (i-mate Jasjar) was going to waste for most of the day, so I decided to do something about it. I searched around a bit and came across PocketSNES, a Super Nintendo emulator for Pocket PCs (in a strange twist of fate, PocketSNES is maintained by somebody who works for the same company I do). When I was a kid, I was (still am?) a huge SNES fan, so this sounded perfect.
Unfortunately PocketSNES was built for PocketPC 2003 (not 2005), and was hard-coded everywhere for portrait-mode 240x320 screens. After fixing a lot of bugs and recompiling with the latest SDK, I was able to get it to work in 480x640 mode:
Now it was more or less usable, but it was very slow. I debugged it and discovered that Windows Mobile 5.0 was using an emulated framebuffer for GAPI games, which was slowing everything down considerably. After poking various memory addresses (and crashing the phone several times - so much for Windows CE memory protection..), I found that the video memory for the Intel PXA embedded video begins at virtual address 0xA87AA000, and is laid out linearly (480x640x16). Replacing the GAPI code with direct video memory access and turning on compiler optimization made PocketSNES run quite fast (even the sound worked pretty well).
Now the only problem was that it was a huge pain to play using the little on-screen keypad. Using the phone's keyboard didn't work too well either since it had a hard time accepting multiple simultaneous button presses. After some more searching, I came across the Chainpus BGP100 Bluetooth gamepad (yeah, they need a new name for it):
It looks hideous because it's designed to fit around a cell phone (my phone was too big). It was surprisingly easy to set up and associate it with the phone using Bluetooth. The software for it, on the other hand, was very poorly implemented and translated. It had also not been recompiled for Windows Mobile 5.0 either. As a result, there was almost a 1-second delay between a button press on the gamepad and when it was recognized by the game (this was mainly because PocketSNES was using 100% of the CPU). Unfortunately the source code was not available, so I had to re-implement its functionality by hand in order to fix that problem. The gamepad implements the Bluetooth Serial Port Profile (SPP), and it sends sequences of 3 bytes for each button press & release event, so it was actually extremely easy to work with. I just had to create a virtual COM port using the Bluetooth control panel, open the 'file' COM3 and read bytes from it when it was input time.
When that was all done, I was able to play at a comfortable distance from the phone:
This should be very useful for boring meetings at work 🙂
Here's a video: