Archive for the 'Hardware' Category

Change of Plans

I think I’ve fixed my recent hardware problems. As you may recall, my system was occasionally turning itself off, suddenly and without warning. Graphically-intensive games seemed to be the cause: I first noticed the problem in Team Fortress 2, but later observed it in other games, including ones that I had played without problems before. This is weird behavior for a PC: the sort of problem that can be triggered by running a game generally manifests more mildly, with the game dumping you back to the desktop with an “illegal operation” dialog. At most, you expect a system lock-up, not a system shut-down.

Well, when I was blowing the dust out of the case the other day, I noticed that some internal cables were out of place. This box keeps its wiring tidied up with plastic clips stuck to the metal of the case walls with adhesive pads, and one of those pads had come unstuck. The cables didn’t seem damaged, but they were hanging vary close to where the video card sits, and some of the dust was actually blackened. My theory is that the cables were actually touching the video card’s heat sink. Once the card started really working, the metal of the wires would carry that heat straight into the heart of the PSU, which has to take things like sudden heat spikes seriously and really has only one way of dealing with them.

With the wires re-secured, I was able to get through all of the TF2 Developer Commentary tracks without incident. So I’m ready to give the high-graphics games another try. Now that I know what was going on, I’m pleased that the system handled the situation as gracefully as it did, and apparently avoided permanent damage.

New Failures

Games on Steam that I’ve tried and failed to play in the last 24 hours:

Majesty 2: Sequel to a game that I quite liked. Steam had it on sale for $10, so I picked it up. Before I was done with the tutorial, it triggered the spontaneous-shut-off problem that I first observed in Team Fortress 2. This has happened in a few other graphically-intensive games lately.

Audiosurf: Included in that Steam indie sale pack that I’ve played most of by now. (Mr. Robot was in the same pack.) Launching it with Steam already running brings up a featureless white window that either goes away after a fraction of a second or freezes up and has to be killed through the task manager. Launching it without Steam already running somehow lets it get far enough to put a bunch of text in that window, then crash with the error “Questviewer.exe has encountered an error and must close”.

Gish: Part of the same sale package as Audiosurf, although I already had a registered copy from pre-Steam days. After twice temporarily feezing up with a dusting of random pixels and then coming back with a video driver error saying that the hardware had to be reset, it finally turned off the machine like Majesty 2. This from a 2D game.

I’m really going to have to get a new video card. I’m willing to put it off for a while, though. There are still plenty of games that don’t need it.

TF2: Tech detectoring

Playing TF2 at home continues to pose problems. I mentioned before how playing the Developer Commentary caused my machine to shut off. Sometimes it does this during a real game as well. Other times it doesn’t. There is one new development: sometimes, instead of shutting the machine off, it just gets stuck for a while, looping a second or so of sound and puting some garbage pixels on the screen before popping up a system dialog stating that the graphics hardware stopped responding and it’s had to reset them. After this, I can resume the game as if nothing happened except the loss of some valuable time during which I naturally got killed.

What’s more, I’ve now seen this happen outside of TF2. It also happened in Darwinia — a game I finished some years ago, but I gave it another look simply because it was in that Steam Indie Pack. Anyway, it’s a pretty clear confirmation that the problem isn’t just in TF2. It really seems like a malfunction of the graphics card, and I turned all my graphics settings down to the minimum during today’s session to see if that would help. It seemed to, and I had a nice crashless session (during which I managed to get one more Achievement as a Heavy), but I still got a crash when I tried Developer Commentary mode.

Well, the one real difference in Developer Commenty is the voiceovers. And in fact I had voice chat turned off in my online session — it seems to get turned back on automatically sometimes, and I specifically turned it off while I had the Options menu open to change the graphics settings. So my working hypothesis at this point is that the real cause has to do with sound, and that the reported graphics problems are just a symptom. We’ll see how that works out.

Tender Loving Care: More tech stuff

After my post about my difficulties getting TLC working, I got a couple of comments with suggestions. Unfortunately, neither has been enough to get things working.

The first suggestion, from Jason Dyer, was to get the official patch from Unfortunately, the copy there seems to be corrupt: it’s a self-extracting executable, and it failed to unzip itself. However, finding a patch there inspired me to look for patches elsewhere, and I found a working zip file (not a self-extractor) at This had a tangible effect: after installing it, I no longer got the error messages about inability to adjust the DVD volume. However, it still skipped over all the video content.

The second suggestion, from malkav11, was to use a video player, such as VLC. A surprising suggestion, perhaps, but apparently Groovie isn’t so much a programming language or development system as a video playback system with a certain amount of scripting capability. Which explains a lot about the design of The 7th Guest. True, it’s a bit more powerful than ordinary DVD scripting — consider T7G‘s infamous microscope puzzle. But even an ordinary DVD player has to be capable of doing more than just playing a sequence of data tracks on a playlist. DVD data includes menus, and that means responding to user input in a scriptable way. Viewed thus, there’s no reason a DVD player couldn’t handle TLC if it could load its scripting engine.

That said, after an evening of fiddling with VLC, I still haven’t convinced it to do anything more than play the individual noninteractive video and audio tracks. Much of the video content is in the form of VOBs, the familiar elements of ordinary video DVDs, but since they’re not in a directory called VIDEO_TS, DVD players won’t recognize the disc as something playable. So, obviously I’m hoping that malkav11 will respond with more details about how he got this to work (although I’m not hopeful, because he barely remembered as much as he said).

Browsing forum posts, I find it suggested that my problems might stem from the lack of an MPEG2 decoder card. Now, I hope that isn’t the case, because that would be silly. No one who has a machine capable of playing Half-Life 2 needs dedicated hardware for DVD decoding. But I don’t know a lot about how Windows DVD drivers work; I’ve basically assumed that programs that need to do MPEG2 playback just make some system call that can be handled through either software or hardware, but what if I’m wrong?

[ADDENDUM] I’m seeing some evidence that there are in fact two different DVD versions: a Groovie-based DVD-ROM one (which is what I have), and a standard DVD version that can be played in an ordinary DVD player. It seems like the simple-DVD version would lose any advanced Groovie scripting, but I don’t know how much TLC takes advantage of that anyway. It’s kind of like the whole problem with “Choose-Your-Own-Adventure” interfaces: the interface tells you very little about the underlying model. You just can’t tell how deep or shallow it is from a single playthrough. It might be all on the surface, a simple series of forking paths, or it might be keeping hidden variables, using all your past actions rather than just your present choice to determine what happens next. At any rate, I’m giving up on the play-it-in-a-media-player route for now.

The recent unpleasantness

Last Tuesday, my server went down. This is not unusual; when you run your own server, you come to expect service to be interrupted once in a while. Usually it’s the router, and usually all I need to do is power-cycle it. Until recently, if this happened while I was at work, I’d just dash home and fix it. My current commute makes this impractical, so the downtime can last multiple hours, until I get home.

This time, it was even worse. When I got home, before I even got in the door, I could hear the alarm from my battery back-up. Something had gone seriously wrong with the system, presumably with the PSU. The machine was unbootable.

In times past, when my server suffered catastrophic hardware failure, I’d fix it with a transplant from my Windows machine, and then go buy a replacement part as soon as the shops open the next day. But this assumes a certain equivalence of hardware. Ever since I moved across the country, and left my old server behind to minimize downtime, my server has lived in a small-form-factor Shuttle box. This has a nice quiet PSU, but it’s a nonstandard size and shape, designed to fit snugly in the one case it was optimized for. I do like the system a lot, and I’ve been saying for some time that I should replace my big noisy Windows machine with another Shuttle box when I upgrade again, but since I started this blog, and have devoted most of my gaming hours to old stuff, I’ve had little motivation to upgrade.

There was another option for a transplant, though: move the hard drives into the Windows machine. Having done this, it failed to boot. Attempting to do an emergency repair of the OS, I discovered that the version of Linux I was using (Debian Sarge) didn’t recognize several of the system’s internal devices, including the specific ethernet adaptor and the SATA port. So it couldn’t access my data or the Internet, which kind of made it a failure as a server.

At this point, I was thinking that I’d need to get some replacement hardware before I could get the server up and running again. Which posed another problem: With my current commute, I can’t shop for hardware on weekdays. My job is in a location with nothing around it except cheap office space. My home is within walking distance of an excellent computer store, but it’s not open yet when I leave in the morning and closed when I get home. In desperation, I placed a rush order with newegg, telling them to deliver to the office, but this ran into validation problems because my credit card company didn’t have the office listed as an address of mine. By the time this got striaghtened out, the advantage of ordering online had been lost: the weekend was approaching, so I figured I might as well wait it out and buy the necessary components personally.

Which, ultimately, I didn’t do. When Saturday rolled around, I got the server up again by upgrading Debian Linux to the newest stable release, which recognizes the hardware on my working machine. Upgrading to a new release of Debian is always a pain — that’s why I was still running Sarge after all this time. Even now, after a day of tinkering, I don’t seem to have the mail server completely right. Nonetheless, it’s up, as you can tell by the fact that you’re reading this.

It’s not entirely happy with the new hardware, though. The load average keeps on getting into double digits. I’ve set up a cron job to restart mysql and apache every 15 minutes, which keeps it from getting entirely wedged, but clearly this is not an ideal solution. Also, it was periodically overheating, especially when doing something computationally intensive, like attempting to install upgraded Linux packages. The OS is smart enough to throttle down when this happens, but whenever it did, it would issue a warning to all consoles (messing up any text editor I had open) and beep. And then it would beep again a second or two later when the temperature came back to acceptable parameters. It’s as if the system had hiccups. I managed to turn off the warning and the beeping, but it’s just one more reason I need to get this system back into something it’s happy with, before it burns down the house or something. It all makes me wonder what was going on when the same hardware was running Windows. Was it running hot and simply not telling me?

Anyway, I have more hardware on order — not a rush order this time, because the crisis has passed. But in the meantime, I’m without a Windows machine. Which means it’s time to switch over to the PS2 for a while. As far as I’m concerned, the big lesson from this whole experience has been that it’s really inconvenient to not live near where you work and also work near where you shop. I suppose other people would derive a different lesson: that it’s not worth it to run your own server, not in the 21st century when there are plenty of reliable free alternatives. But that’s crazy talk.

Pokémon: Trading again

So, I’ve finally done something about the Gameboy cable problem. It turns out that GBA cables are wired slightly differently than the original Gameboy and Gameboy Color: where the older model just has two of the wires cross over, the GBA does something tricky to accomodate plugging in another cable in the middle. Furthermore, the type of connection that a game expects depends on the hardware the game was created for, not the hardware it’s actually running on — so in order to trade original Pokemon on a GBA, you need an old-style cable. This is the sort of fact that’s easy to find documented on the web, provided you’re looking for it in the first place.

I’ve seen it suggested that an official GBC cable will fit in a GBA socket (although not vice-versa), which would solve the problem if I had an official GBC cable. But I don’t, and I’m not really willing to spend any more money on this problem (buying second GBA was about my limit for this project), so I took apart the GBA cable I had formerly called “defective” and rewired it. And it works great! I’ve pulled off my first successful pokémon trades trades in something approaching ten years, and stand ready to do more.

Of course, given my track record, I couldn’t justify asking someone to trade with me until I knew it worked. Which presents a bootstrapping problem. Fortunately, I had someone else’s Pokémon Red cartridge on hand — he wasn’t using it, so he let me borrow it. (With the stipulation that, once I got trades working, I had to take in his raichu. It’s the one pokémon that he wants to still have available if he starts over.) In short, I had to engage in some behavior I had spoken of derisively before: solo trading.

Still, this was a fairly satisfying conclusion to the whole problem, because I got to play with a soldering iron. I’ve played games where I had to read the data files in order to figure out how to win. I’ve played games where I had to read the source code, or even reverse-engineer the executable — it wouldn’t be exaggerating much to say that this is how I learned how to program. But how often does the pursuit of completion descend to the hardware level like this? Actually, pretty frequently, if you count the games that you can’t even start playing until your system meets the right specs. But this is different somehow.

Pokémon: Cable Conundrum

I’m posting this several days late: again I’ve spent a week out of town, and that means Pokémon. I actually didn’t do much with the game this time, but I did make another trade attempt.

The last time I tried to trade pokémon between two GBAs, I had problems. To trade, you go (in the game) to the Cable Club, an area found in every Pokémon Center. If you’re connected to another gameboy via gamelink cable, the Cable Club receptionist tells you to wait for the other party to join; if you’re not, she sends you away. So it’s easy to tell who the system thinks is and is not connected. The Cable Club was consistently accepting one side and rejecting the other. Furthermore, when I unplugged the cable and plugged it back in the other way around, it switched which one it accepted and which one it rejected. I concluded that there was something wrong with the cable.

Well, now I’ve tried it with a different cable, and I’m usually seeing the same symptoms. Tantalizingly, the bad end occasionally manages to recognize the connection, but never for long enough to actually execute a trade, as if there’s a loose connection. Or maybe it’s just the wrong sort of cable for this game: some docs I’ve found online suggest that I have to hack around the middle socket (which wasn’t even present on the first cable, but whatever). I’m not completely sure if that’s what I actually need here, though. Like all other gameboy hardware documentation I’ve found online, it assumes more knowledge than I have. But what the heck, I’ll dig out the multimeter and soldering iron and give it a try. The worst that can happen is that I’ll lose a cable that was useless to me anyway.

The Typing of the Dead: Getting Started

totd-struggleAnd while we’re talking about words as weapons, I really should bring this one out. One of the most absurdly-conceived educational games ever, The Typing of the Dead is a rail shooter — specifically, House of the Dead 2 — transformed into a typing tutor. Zombies stagger out labelled with words; typing the words damages them, with a gunshot sound accompanying each keystroke. The genius of this is that it naturally encourages touch-typing: you don’t dare look down at the keyboard when there are zombies shambling toward you, and there are as many in-game motivations to type quickly and accurately as there are to shoot quickly and accurately in the original game.

totd-keyboardThe most completely brilliant thing about it, though, is that this change in the world model carries through to the character models. Everyone who has a gun in House of the Dead 2 instead has a keyboard strapped to their chest, connected to a Sega Dreamcast on their back (even in the PC port). You don’t normally see your own shots being fired, but there are some cutscenes where you can see NPCs typing the zombies to pieces.

The fact that it was originally a Dreamcast game actually poses some problems for the modern PC gamer. Many console ports from that era use graphics with palettized texture maps, which is something that’s been dropped from recent graphics cards. So much for Direct3D backward-compatibility! Playing this game with my ATI card makes the game revert to software rendering, which is not just slow and low-res, it’s glitchy. Transparency in textures seems to just not work at all. I’ve solved the problem by reinstalling my previous graphics card, the nVidia one. I had given up on this card because of its inability to handle recent games well, but it seems to do alright with something this old. (Also, having inspected it again, I have some suspicion that its only problem was overheating due to parts of the heatsink being clogged with dust.) It looks like I may be doing a lot of card-swapping in the future, as the Stack contains games that are incompatible with either card. Or maybe I should just clear all the console ports of that generation from the Stack at once.

Anyway, even though it shares a basic conceit with Bookworm Adventures, it’s not really the same type of game at all. Bookworm Adventures is turn-based, and asks you to come up with the killing words on your own, thus rewarding people with large vocabularies (both in the sense of vocabularies containing many words and in the sense of vocabularies containing large words). The Typing of the Dead is all about reflexes, and always tells you exactly what you should type.

Pokémon: Hardware Compatibility

I haven’t even mentioned my problems with trading. There are still several pokémon that I won’t be able to get any other way, either because they’re not available in the Blue version, or because the game forced me to choose a single pokémon out of two or three options. Since I started playing again, I’ve gotten together with one friend who had an old Gameboy and the red version, both untouched for years. We were all set to trade (or, more accurately, he was all set to charitably give me what he no longer had any interest in), but we hit a snag: he had a Gameboy Pocket, and I had a Gameboy Advance. And Nintendo, for whatever reason, saw fit to make the cables incompatible.

Now, for all I know there may be sound technical reasons for this. Maybe the two devices transfer data at different speeds or something. Or maybe the only difference is in the shape of the plug. It’s been difficult to get information about this. All I can say with any certainty is that, although Nintendo has made a “universal” Game Link adapter before the GBA, they never made an adapter for connecting the GBA to earlier versions. I’ve seen mention of a third-party adapter that might work, something billed as allowing you to use your old Gameboy cables with a GBA, but (a) it requires an old cable to plug into it and (b) it’s described in such vague terms that I don’t know for sure that it’ll do what I want anyway.

At this point, I’m thinking that the most cost-effective solution might actually be to buy a second GBA off ebay. That way I’d have everything necessary to consummate trades regardless of what hardware the other party has — indeed, all the other party would need to provide is the cartridge. It may even be cheaper than the adapters I’d otherwise need. My only hesitation is that doing trades between two Gameboys that are both mine, possibly by myself in the privacy of my room, is awfully close to “trading pokémon with myself”, which I’ve already gone on record as calling sad. (If I hadn’t made such a comment, I could probably do it without embarassment, of course. Heck, just playing Pokémon Blue at all in 2007 is something a lot of people would consider embarassing.)

Radeon HD 2600 XT

So, I’ve been seeing slow framerates on my machine under multiple games lately: first Myst V, then certain brief bits of Lego Star Wars 2 (which was generally pretty smooth, presumably because its style allows for a pretty simple world model), and now large sections of Psychonauts. Worse, I even had speed problems in Eternal Daughter, a retro sprite-based 2D platformer which I tried when it was featured on Play This Thing. Clearly something had to be done.

The problem is, when games are slow, it’s hard to figure out why. It could be either the CPU or the graphics card, and unless you have multiple machines, it’s impossible to test them individually. So I asked myself: If I bought a replacement for one of these things, and the replacement didn’t speed up these games, which one would I regard as less of a waste? And there was a clear answer to that: the graphics card.

See, my nVidia GeForce 7800 GTX card was giving me problems anyway. The GeForce drivers for Windows XP have a known bug that affects 3D objects displayed on a 2D bitmap background: frequently, random patches of the background will cover up any 3D elements. It’s really a quite striking visual effect, reminiscent of the scenes in Labyrinth and Indiana Jones and the Last Crusade where things that look like background turn out to be foreground, except not done on purpose. I wish I could post a screenshot that captures it, but (a) to get the full effect you really have to see it in motion and (b) to reproduce it I’d have to reinstall the GeForce card. Anyway, it makes several graphic adventures on the Stack unplayable. It’s been a a few years now since I first encountered the problem, and nVidia has issued multiple driver updates, but the problem remains. I’ve contemplated dealing with it by installing Windows 98, which uses different drivers that don’t share the problem, but switching to a non-nVidia card will spare me the trouble.

So, Psychonauts runs perfectly smoothly on my new Radeon, and I confidently expect to start blogging about Myst V soon. The new card has larger numbers associated with it than the old one, but I don’t want to say that that’s the reason for the the performance increase, as the old one was released after most of the games that gave it problems. More likely there was some sort of hardware malfunction. In researching the problem, I saw one person on a support forum who suffered abysmal framerate simply because the graphics card’s cooling fan wasn’t spinning. That wasn’t the case here (I checked), but it could easily be some similar failure.

Older Posts »