Faking a GameBoy Camera

If you just want to download the Photoshop actions, the link for that is right here. The boarder is available here.

A couple years ago, I thought I would be funny by posting a black and white photo of my new GameBoy Color. I kept editing it, though, eventually lowering the resolution and color depth. At some point, I thought it would be cool to make it look vaguely like a GameBoy screen, or like it was taken with a GameBoy Camera. I got close, but three important things were wrong: resolution, color depth, and the boarder.

About a week ago I saw an article about a Formula 1 photographer who used a custom lens mount to shoot a race with a GameBoy Camera, which made me remember my Photoshop filter project. After doing some additional reading on the camera’s technical specifications I got to work.

Next, I’ll explain every step the action takes, and what its effect on the image is. If it all looks too complicated to you, just read step 2 below. When the Levels adjustment box appears, just click OK, then follow step 9 to import the frame.

  1. Flatten Image
    Actions, at least how I make them, work much better if the work space starts in a known state. Here, we’re just smushing all the layers into one to make things simple.
  2. Crop
    This one is deceptively important. The GameBoy Camera creates images that are 128 pixels wide and 112 pixels tall. For the effect to look convincing, we need to copy these exact dimensions. One thing to note is that, when you’re selecting the area to crop, which the action prompts you to do automatically, you need to keep the aspect ratio wide. If you accidentally create a tall image it will not fit inside the border correctly. When you’ve got the picture framed how you want it, press enter or click the check mark at the top of the screen.
  3. Make adjustment layer
    The first adjustment layer creates a Black and White conversion layer. We could convert the image to black and white any number of ways, but I feel like this one creates the best results and has the most flexibility. If you click the empty box next to the check mark, you’ll be prompted to make adjustments to the layer the next time the action is run. Doing this, you can make certain colors brighter or darker for better contrast, detail, and creative effect.
  4. Make adjustment layer & Set current adjustment layer

    This step is probably the most complicated. It creates a Levels adjustment layer, which we use for determining the white, back, and middle gray points. Basically, because we’re so limited on colors, we need to make sure we’re not wasting any detail on parts of the image that don’t really matter. Press and hold ALT on your keyboard, then drag the white slider (circled in blue) to the left. You’ll see the image turn black and white, with the white portion growing. The white shows where the brightest part of the image is. Move the slider until the bright parts of the image, where detail is not important, are covered in white. Do the same thing with the black slider (circled in blue), to push all the dark areas of the photo, where details are not important, just like before. Next, move the middle slider back and forth until the important areas of the image have a lot of detail. In the example here, with Grummy the Dog, the white slider was moved in until the fur next to her nose starts to become all white, the black slider was moved in until the fur under her ears becomes all back, and the grey slider was moved left until the detail in her head and face became clear. When this is done, press enter. Once the filter completes, if you’re not happy with the result, this is the number one place to go back and make changes.

  5. Flatten Image
    The next step only seems to work if the image is a single layer, so we need to squish it again.
  6. Convert Mode
    Here is where the secret sauce comes in. It compresses all the various shades of grey we had into only 4, just like in the actual GameBoy Camera. Specifically, we’re using Indexed Color with the following settings:
    Palette: Local (Perceptual)
    Colors: 4
    Forced: None
    Transparency: (unchecked)
    Dither: Pattern
    Each of the three ‘Local’ variations typically look the same, but I’ve had better luck using Perceptual. The GameBoy Camera generates 4 shades of grey, so we set that here as the number of colors, and the dither type of Pattern creates the regular variations that create that fake sense of additional colors. There’s a few ways dithering can be used, but the GameBoy Camera uses a patterned dithering, and so will we.
  7. Convert Mode
    Most of Photoshop doesn’t really work well, or at all, using indexed color, so we need to jump back over to RGB color space.
  8. Canvas Size
    The boarder sits around the photo, not on top, so we need to clear out some space for it to go. It’s 16 pixels on each side, so we need to expand the image 32 pixels in height and width, leaving the image centered.
  9. Place
    This is where the boarder gets placed. If Photoshop doesn’t locate it automatically, double-click this step in the actions menu and find it in Explorer. The new location will automatically be saved for next time.
  10. Rasterize current layer
    When we enlarge the photo in the next step, we want to make sure our pixels are big and sharp. If we don’t do this, the photo will be enlarged correctly but the boarder will get all smeared and blobby.
  11. Image Size
    Here we’re making the image 4x larger than it was originally. Double-clicking this step will allow you to put in any value, but I feel like 400% just feels like the right size.

There’s one more option, an action called GameBoy Camera Color. Of course, the GameBoy Camera was never made to take color photographs, but it is possible to use multiple filtered photos to composite a color photograph from the GameBoy Camera‘s black and white sensor. In fact, it’s essentially the same way modern digital cameras work, they just do it more elegantly. In a nutshell, it works the same way the other filter does, but it manipulates the individual color channels rather than the entire image. Due to the increase in color detail available, I’ve removed the requirement to adjust the black and white points in the image, which means the resulting photo is both more detailed and simpler to generate. The results are far more detailed than if this were done using real hardware, but the source photos are also taken with impossibly better cameras, so there’s that. Maybe if we had manual control of the GameBoy Camera and used better lenses we could achieve similar results.

That’s all for now. I’ll update the post once I’ve uploaded a YouTube video on how to use the actions.

PC Gaming Under $100

A while back I picked up a Dell Optiplex 755 from RE-PC, a local computer recycler, for $25 with the intention of making it a dedicated retro PC gaming rig that could run DOS games without the need for DOS Box. Games like Rainbow Six, Quake III Arena, and Nightmare Creatures run beautifully with all the visual settings maxed out at 1080p and the system seems to be damn near asleep while doing it.

Fast forward to November 25th when OzTalksHW uploaded this video documenting his build of the “OzBox”, a $160-ish gaming build.

“…if you’re thinking about building your own OzBox then definitely tweet at me and use the hashtag #OzBox because I really want to see you guys’ creations.” Challenge accepted.


Our starting points are pretty similar. They are small form factor computers, originally designed for business tasks and general home computing with very little in terms of upgradeability. The key is that they both have a single unused PCI-Express x16 slot.

FakeGamerBox OzBox
Base System Dell Optiplex 755 HP Compaq 6000 Pro
CPU Core 2 Duo E6550 @ 2.33 GHz Core 2 Duo E6300 @ 2.8 GHz
RAM 2 GB DDR2 800 MHz 4 GB DDR3 1333 MHz
Storage  80 GB SATA 250 GB SATA
Price $20 $50

The OzBox comes with a newer, faster CPU, double the memory, and three times the storage for an extra $30 (or 2.5x the price, if you want to make it sound more sensational). To be fair, that $30 different is entirely the shipping cost from the eBay auction, so if you could find a similar deal locally that would be the way to go.

For $20 you can buy a Core 2 Quad E6700 at 2.66 GHz. For another $10 you can pick-up a 2x2GB kit of RAM to replace the 2x1GB sticks it comes with, or even suppliment the RAM your system comes with. I happened to have a 2x2GB kit laying around, so I replaced the old memory with the new stuff.

Our video card of “choice” (that is, out of the very limited selection of low-profile graphics cards available, this is the one I felt like spending my money on) is a nVidia GT 730 by PNY. I picked this 2GB model up for  $54, so depending on what upgrades you need we’re looking at $79-109 before tax.

Falling at the Starting Line


My original goal was to keep Windows XP on this machine, and that’s how I started the testings. Unfortunately, running XP meant I’m limited to 4 gigs of RAM (the board supports 8), spotty driver support, questionable-at-best security, and, most importantly, most modern games and benchmarking utilities simply won’t run. This limited me to testing older titles which didn’t reflect what a “gaming PC” should be able to play, so after countless software crashes and failed benchmarking attempts I eventually caved and installed Windows 7. Depending on wether or not your computer came with Windows 7 installed, or it came with the OEM license stuck to the top or back, of if you need to purchase a whole new copy, this could add some amount of cost to the build.


I couldn’t decide if I wanted to test across an array of resolutions or target a common low resolution like 1280×720. Eventually, I decided on 1280×960 for a couple of reasons. First, it seems to be the resolution of choice for pro Counter-Strike players, so that’s the resolution I wanted to test there. I also thought it would be ideal to use the same resolution across all the games to get more comparable results. I also did all my benchmarking with four gigs of memory installed. Originally I was going to test with two gigs installed, then four, but it seemed like a huge hassle when the cost to upgrade (assuming you don’t have some laying around) is so little.

Dual Core

For my first round of testing, I went with the PC game I play the most often: Counter-Strike. Unsurprisingly, Global Offense had the lowest average frame rate at 62.4 FPS. 90th percentile frame times were 20.8 ms (48 FPS).

Going back to CS 1.6, I saw an expected boost in performance, but also an unexpected boost in erratic frame times. Average frame rate was 168.9 FPS, 90th percentile frame times were 7.2 ms (139 FPS), and a frame time deviation of 39%. Ideally, we would see the individual frames bunched as close as possible to the average (which we see with Source and Global Offensive), rather than scattered across the chart.

I was most impressed with CS: Source. Here I saw the highest average FPS between the three games, 212.3, the lowest 90th percentile frame time with 5.9 ms (169.5 FPS), and the lowest frame time deviation at 22%. This gave the best sense of responsiveness and fluid gameplay out of the three.

Unreal Tournament has always been a game that combined incredible graphics with fast gameplay and blazing frame rates. I remember being absolutely floored by Unreal Tournament 2003 on my AMD AthlonXP 1000+ and nVidia MX440, then again by Unreal Tournament 3 on the high-end machines at work back in 2007. So how do these titles hold up on our budget hardware?

UT 2004 had an average frame rate of 146.2 FPS and a 90th percentile frame time of 8.6 ms (116.3 FPS). Despite the modest frame rate and low video settings the game still looked great and was an absolute blast to play again.

I had my doubts about how well Unreal Tournament 3 would run, but those were soon laid to rest. With an average frame rate of 74 FPS, I was concerned it would dip below 60 FPS, but the 90th percentile frame time was 8.6 ms (64.9 FPS) it managed to stay consistently playable. Most surprising was the frame time deviation which was only 14%, meaning the frame times were very consistent.

It shouldn’t have surprised me as much as it did, but Left 4 Dead runs amazingly on this setup. Since there are tight corridors and large outdoor areas flooded with zombies I figured I should measure the performance of both scenarios, which were really quite similar. Indoors saw an average frame rate of 101.3 FPS with a 90th percentile at 12.9 ms (77.5 FPS). Outdoors, while being swarmed by zombies, the frame rate averaged 100.1 FPS with the 90th percentile at 14.3 ms (69.9 FPS). My playthrough of the first mission was very smooth with no noticeable frame drops, stutters, or other performance issues. Then again, it’s an 8-year-old title at this point, so the impressive performance does make sense.

Quad Core

I replaced the dual core E6550 with a Q6700 quad core processor (a surprisingly simple task in this machine), which is the best CPU this motherboard supports. In addition to the extra cores we also get a 333 MHz clock speed increase, so even single-threaded games should see a performance boost.

CS 1.6 saw a huge boost to average FPS, jumping from 168.9 to 211.0, and more importantly, the average frame time deviation (how far away each frame was compared to the average) dropped from 39% to 12%. That means that, rather than having a frame rate that consistently jumps up and down, it stays stable throughout gameplay.

CS: Source had its average frame rate drop from 212.3 to 181.5 while its frame time deviation swelled from 22% to 35%. Not sure why this happened, but it was consistently happening.

CS: GO got a modest increase from 62.4 FPS to 75.3 FPS with minor reduction in frame time deviation.

Both Unreal Tournament games saw virtually no change whatsoever, which leaves me to believe that the game is being bottlenecked by the video card.

L4D got a substantial 13.2 FPS gain while dropping it’s frame time deviation from 27% down to 12%.

This was originally going to be the end of my benchmarking since the selection of modern games that could still run on Windows XP was limited, but I decided to install Windows 7 and see what this hardware was really capable of.

Quad Core on Windows 7

Now that we can install pretty much whatever we want (that will fit on the measly 80 GB drive), it’s time to really put the hardware through its paces.

When I loaded 3DMark the recommended benchmark was Firestrike Extreme, which made me audibly laugh. After selecting the standard Firestrike test, which I already knew would be too much for the system to handle, it came back with a score of 639.

A more fair test would be SkyDiver which came back with a score of 2,639, exactly 2,000 points higher. Still not great, but at least it’s a real score this time.

CS 1.6 saw another boost to average FPS, hitting 232.9 on average. CS: Source continued to drop, this time hitting 153.0, down from 212.3 with a slower dual core CPU on Windows XP. I just can’t wrap my mind around this. Maybe it’s servers, maybe it’s something hardware or operating system related, I have no idea. CS: GO managed nearly identical results with an 115.4 average FPS and nearly identical 90th percentile frame time.

UT 2004 also saw a drop in average frame rate, down from 142.6 to 109.2 with the 64-bit patch. Without the patch, the average frame rate was 100.1. This might be something OS-related, but considering how rarely I play UT 2004 and how little that extra 40 FPS actually matters, I’m just going to leave it alone. UT3 saw no notable change.

L4D, unsurprisingly, was nearly identical to the previous results under Windows XP. Average frame rate grew from 113.3 to 115.4 which is well within the margin of error.

Finally, we get to look at some results from new games that didn’t run on XP.

I wasn’t expecting much out of DiRT 3. It’s a great-looking modern racing title heavy on physics. I lowered the resolution to 1280×720 and ran three benchmarks. The first was with all visual options turned to their lowest settings or completely disabled. The second was the “medium” preset, and the last was with the “high” preset.

This result floored me. I didn’t know the puny hardware inside this little case was capable of playing modern titles like this. Granted, it is at a low resolution and moderate graphics settings, but for $100, that’s not too shabby.

Rocket League is another game that shocked me with how well it performed. With all the visual options low or disabled I saw a respectable 58.6 FPS average with 90% of the frame times being at or above 20.2 (49.5 FPS). Leaving the Render Detail on “High Performance” while turning the Render Quality to “High Quality” resulted in a pleasing image that ran at 43.5 frames per second. While mid-to-low 40s might not usually be an idea frame rate, I found that, with Rocket League, it was plenty for knocking the ball around in the standard 3v3 game type and I didn’t feel like I was limited by the computer’s performance at all.

The last game I tested was 2013’s Tomb Raider, which… It ran, and seems playable, but only with the “Low” graphics preset at 720p and with motion blur and screen effects disabled. It’s possible to play the game at the “Normal” preset, but with frame rates down into the 20s it makes for an unpleasant experience.


Did we accomplish our goal of spending about $100 to play PC games? Yes, absolutely. Is it a good experience? No, not really. You’re better off buying an Xbox 360 or PS3 than trying to built an ultra-budget gaming PC, but if money is really tight and you just need to play those PC-only titles like Counter-Strike: Global Offensive, League of Legends, or DOTA2 this is certainly a possible solution.

Compared to the OzBox this built is based off of, how did we do? Well, it’s hard to compare directly. We have different games, so our benchmarks are going to be different. The OxBox hardware is better, there’s no doubt about that; the GTX 750Ti he picked out for his build costs as much as our whole system did, if not more. Comparing a roughly $100 PC to a $180 PC doesn’t exactly make sense, so I would say this version of the build is for people who want to play older titles or some newer titles if budgets are limited. Ozi’s original version would aim more toward the casual gamer who wants the option to play modern titles either at a low resolution with pretty visuals turned up or a high resolution with lower graphics settings, but still maintaining a 60+ FPS target.

I’ve ordered some parts for a follow-up article, seeing just how far we can push the limits of this compact gaming rig (possibly making it not so compact), so check back for updates.

Retro Gaming in the Modern World, part 1

You know that feeling when you start to look up something on WebMD and you start to panic because you think you have some terrible disease? That’s kind of what happened to me when I started looking up retro gaming video quality. My WebMD, in this case, was the My Life in Gaming RGB Master Class. I had been doing a lot of research on playing retro games on modern displays, but my only modern display was a Panasonic plasma TV, which is not ideal for retro games due to the risk of image retention and burn-in. As luck would have it my large CRT has started to act really strange when it first turns on and has only been getting worse. The replacement for my failing CRT handles retro games with surprising grace but still falls flat in a few areas. To address those issues I’ve purchased a video upscaler. Why not just plug in my consoles and let the TV do it’s thing? Well, that takes a lot of explaining. In part 1 we’ll address some of the technical information we need to know before diving head-first into what the scaler does.

Pixels, Sub-pixels, and Resolution

An example 4-pixel by 3-pixel display with each red, green, and blue sub-pixel shown.
An example 4-pixel by 3-pixel display with each red, green, and blue sub-pixel shown.

When an image is displayed on a screen you’re actually looking at small squares called pixels (short for ‘picture elements’) that, when viewed from a distance, make up an image. On top of that, each pixel is made up of three sub-pixels, each one displaying either red, green, or blue (RGB). Colors are created by changing the brightness of each red, green, and blue sub-pixel individually. For example, if red and green are at full brightness and blue is completely darkened you get a bright yellow.

Standard definition is 480i, or 480 lines (rows) of horizontal resolution with interlaced video. Interlacing displays only the odd lines of a video frame (1, 3, 5…), then the even lines of the next (2, 4, 6…). Modern displays are typically 1080p, with 1,080 lines of horizontal resolution with progressive scan. Progressive scan means the whole image is drawn in a single pass, on every line, rather than alternating the lines. The result is a much better quality video when there’s fast motion or scrolling test.

It should be noted that I’m only mentioning horizontal resolution. This is because the vertical resolution, or the vertical rows that made up the image, could vary wildly. Even the true resolution of standard-definition was much wider than what the TV was able to display, and some games ran at wider resolutions than other, even though the horizontal resolution was the same.

Retro game consoles only had the processing capability to generate 240p video, which, despite being a non-standard resolution, TVs were able to display without issue. It wasn’t until the Sega Dreamcast that consoles could display 480i and 480p images. Most modern TVs are able to accept and display a 240p image, but they see this non-standard resolution as 480i and attempt to deinterlace an image that is not interlaced to begin with, ironically making the image appear interlaced and introducing other potential issues. This can be as minimal as a blurry image, but can also interfere with flickering transparency effects, effectively making some sprites and characters disappear when taking damage. The process of upscaling this “480i” signal to 1080p can also introduce input lag, making time-sensitive games like MegaMan or Beatmania impossible to play.

Connection Types

So now we understand what makes up a picture, but how does that picture get from the console to the TV? When the console generates each frame of video it leaves the image processor and enters a digital-to-analog converter (DAC), which turns the video into a signal that the TV can display. The quality of the video that gets sent to your TV depends largely on two things: the quality of the DAC, which you can’t change, and the connection type used, which you usually can.

RF adapters

RF adapter for the Nintendo Entertainment System.
RF adapter for the Nintendo Entertainment System.

There was a time where many consumer TVs in the United States only had a single input for their video; the coaxial connection also called the antenna connection. This was used for both over-the-air TV signals as well as cable TV signals and was often the only way to plug in your video games. Internally the game system would convert the video signal, which is digital when it’s originally created, converts it to an analog signal, then sends it to an RF (radio frequency) adapter which converts the analog signal to another kind of analog signal that, to the TV, looks just like a TV broadcast. If you remember having to use radio adapters to listen to your iPhone in your car, it’s the exact same thing but with a physical connection. The signal was also susceptible to interference from other devices, like TV broadcasts, which would create distortions and ghost images. All this, combined with cramming all the audio and video information into a single cable, really took a toll on the image quality.

As a side note, even if you wanted to connect your console to your modern high-definition TV, many no longer come with analog TV tuners (since it’s no longer used in the US), so this may not work at all.


Typical composite cables, red and white for audio and yellow video.

Where RF combines audio and video data into a single connection, composite only transmits video data; audio is transmitted over one or two separate RCA cables (white and red). Picture quality is greatly improved because there’s less information to transfer over a single connection, there one less signal conversion and the connection is not susceptible to the same interference as RF. A lot of newer TVs support composite, but not s-video, so for some situations, this may be the only connection type you can use.

This connection is also referred to as “AV” or “RCA”, though RCA the physical connection type and doesn’t refer specifically to composite video.


S-video cable, carrying separate chroma and gamma .
S-video cable, carrying separate chroma and gamma .

S-video, short for ‘separate video’, splits the video signal into two connections: one for color information and one for gamma (brightness) information. Composite video carries both of these signals on two separate frequencies. These signals can interfere with each other, causing blurriness in the image. Separating these into their own connections means they cannot interfere with each other, providing a higher quality image.

If your TV supports it, S-video is typically the way to go. Most consoles support it and it’s typically the best video quality you can get with a very minimal investment.


Component cables for YPbPr video. Audio cables not shown.
Component cables for YPbPr video. Audio cables not shown.

The correct name for this connection is YPbPr, but is known largely as ‘component’. It carries video over three separate RCA cables; one for gamma, (which is basically a combination of the red, green and blue color information), one for gamma minus red, and one for gamma minus blue. Green is created by subtracting red and blue from the gamma information. It’s also possible to carry an RGB connection over this connection, which the PlayStation 2 has the option to do, but most TVs don’t support this option.

For consoles with AV multi-ports it should be possible to get YPbPr video by using a SCART cable with an SCART-to-component adapter, though your results may vary depending on the console and TV used. You’ll also be getting 240p output, so you’ll end up with similar blurring, interlacing, and input lag issues that you would get with composite and s-video.

What’s the Result?

I took a screenshot of Super Mario World and did some Photoshop work on them to give you an example of the kinds of image quality differences you can expect with each connection. For a more real-life comparison check out the RGB Master Class series.

So What’s the Solution?

There’s a group of video products called scalers that take standard-definition and output them at 720p and 1080p. Most of these devices are expecting a 480i signal, so while you might have less input lag and other issues caused by the TV’s misinterpretation of the 240p signal, you might still end up with some distortion. Common issues are halos around sprites from heavy-handed sharpening and image stretching to fill the TV screen. While there are plenty of options out there, the best so far seems to be the Micomsoft XRGB Mini, also known as the Framemeister. This piece of hardware was designed specifically for 240p video, allowing for proper, distortion-free scaling. Mine was just delivered today, and I’ll be documenting my experience with it as soon as I’m back from Korea.

Another solution is console-style emulators like the Retron, but I’ve never liked that solution. Yes, it uses cartridges, but there’s nothing authentic about the feel of it, the controller is garbage, there’s apparently some amount of input lag, and I already have a PC to connect to the TV, so why pay for an emulator that you could legitimately download for free?

There’s also official emulation from Nintendo, Sony, and Microsoft, as well as backwards compatibility from newer consoles with higher quality output. Some consoles offer perfect compatibility, like playing PlayStation games on a PlayStation 2, but the Xbox 360’s emulation of original Xbox games hit hit-or-miss, but usually ‘miss’. Having a single solution that solves all my video issues, rather than a dozen bandaid solutions, is the better option for me, and the HDMI-out from the XRGB Mini also allows for easy capture of extremely high quality video for streaming or recording gameplay videos.

Pokemon GO: Gyms, Eggs, and Being Beefy

In the last post I talked about Pokemon GO’s basic gameplay mechanics and optimizing item use to gain maximum player level. Today we’re going to take a look at gyms, what they do and how to fight, how to incubate and hatch eggs, and what you can expect after power leveling.

So What Are Gyms?

After you reach level 5 you’re asked to choose one of three teams, Mystic (blue), Valor (red), and Instinct (yellow). Your allegiance has no effect on the game other than what gyms you can defend or attack.

Gyms are currently the only place in the game where you can battle with your Pokemon. They come in different levels, which I’ll explain in a moment, which determines how many Pokemon can be stored there. A level 1 gym can store 1 Pokemon, a level 4 gym can store 4 Pokemon, etc. Swipe left to see the rest of the Pokemon in the gym. If you come across a gray gym it means that no one has claimed it for their team, or the occupying team has recently been defeated and is up for grabs. To claim the gym for your team simply deposit one of your Pokemon in the gym.

Entering a friendly gym, controlled by your team, let’s you drop off Pokemon if it isn’t already full, or spar with your teammates’ Pokemon. Doing this increases your XP and your gym’s prestige level. Higher prestige results in a higher gym level, meaning more Pokemon can defend it from opposing teams. After your sparring match you’ll need to heal your Pokemon. Because it’s a friendly match your Pokemon are never knocked out, meaning you don’t need to use and recovery items.

Gyms controlled by other teams are a lot more interesting. In the friendly sparring matches you only choose one of your Pokemon to battle against the whole gym, one at a time, but here you’re selecting six. As your Pokemon’s hit points near zero, or if you have another one that has a type advantage against the opposing Pokemon, you can switch out during the battle. As you win battles the prestige of the gym drops, opposing Pokemon are kicked out, and eventually the gym become free for the taking. In suburban areas a gym might belong to a team for a few days at a time, but in busy areas with lots of trainers a gym might change owner multiple times an hour.

Defending gyms isn’t just for ego. Each gym you defend rewards you with coins, which can be spent on items like Lucky Eggs and Incubators, as well as XP. Individually each gym isn’t worth much, and bonuses can only be claimed once every 20 hours, so it might be worth the effort of finding a secluded gym without much foot traffic and claiming it.

So How Does Fighting Work?

The simple answer is that your Pokemon have two attacks, a primary and secondary. The primary attack typically does much less damage than the secondary attack. Quickly tapping on your Pokemon during battle will trigger its primary attack. While you’re doing this you’ll see a segmented blue bar near the top-left corner of the screen fill up. Once one of these segments is full you can tap and hold on your Pokemon to trigger its more power secondary attack. These attacks take longer to perform and can be dodged but can also deal massive damage.

The longer answer is that there are multiple attributes that contribute to the battle: CP, HP, typing, attack typing, and attack power. Since I haven’t defined these yet I’ll go ahead and do that now.

  • CP – Short for Combat Points, it’s a way to determine your Pokemon’s strength in battle.
  • HP – Short for Hit Points, this is how much damage your Pokemon can sustain before being knocked out.
  • Typing – All Pokemon have one or two types, such as grass, fire, flying, psychic, etc. Each of these types had strengths and weaknesses. Example, fire attacks do double damage to grass types.
  • Attack types – Each attack does damage of a certain type, like those listed above. These attack types typically correspond with a Pokemon’s typing, but not always.
  • Attack power – Each attack has a base amount of damage it deals before other calculations are done. A primary attack might have a power of 10 and a secondary attack might have a power of 50, dealing 5x the damage.

Like in the normal game, an attack with a power of 10 typically doesn’t do 10 damage. There are a number of calculations that are made to determine the actual strength of the attack and the damage dealt to the opposing Pokemon. We don’t have all the formulas and details for GO just yet, so here’s how things seem to work so far.

First off, CP rules everything. Even with a type advantage it’s incredibly difficult to take down a Pokemon with a significantly higher CP than yours. That is, against a CP 800 Weepinbell, your CP 700 Magmar is going to have a bad day.

Typing is the second most important thing to take into account. GO seems to follow the same strength/weakness rules as the current main Pokemon games, and it’s pretty easy to figure out who has the advantage. Fire attacks to double damage to grass types, but half damage to rock types. That said, Pokemon can have attack types that don’t correspond to their own typing. One example of this is my Slowbro, a psychic and water type, who happens to have Ice Beam, an ice type attack. Making sure you pair your Pokemon appropriately with the defending Pokemon of the gym is critical to getting the win.

Your Pokemon’s attacks and attack power will change during evolutions so unless it has already reached the end of its evolutionary line there’s no reason to pay too much mind here. Once you’ve got a gang of fully evolved Pokemon you can start evaluating which is going to be best suited for battling and start powering them up. Powering up your Pokemon increases their CP and HP at the cost of Stardust and candies. This can get very expensive so avoid powering up your Pokemon until they have a CP over 8-900 when caught, evolved, or hatched. They’ll end up stronger in the long run.

Speaking of Hatching…

Of the three ways to get new Pokemon hatching, or “incubating”, requires both the most and least amount of work.

Spin enough PokeStop medallions and you’ll get eggs along with your pokeballs and potions. Your eggs can be found by going to your list of Pokemon and swiping left. Tap an egg, then tap ‘incubate’, and select one of the incubators to put the egg in. Each egg has a distance requirement before it can hatch: 2, 5, and 10 kilometers. The game tracks how fast you’re moving so riding in cars won’t count for your incubating progress. The game also needs to be running for your progress to count, so keep that in mind before going out for a run. Eggs with longer incubation period result in stronger, rarer Pokemon, as well as more candies for that evolutionary line.

You start the game with one incubator that can be used unlimited times. As you level up you’ll receive additional incubators that can only be used three times each. If you’re going to hatch 2 km eggs they’re best put in the infinite use incubator since they hatch quickly and typically don’t have a lot of good stuff in them. You can choose to use them as you get them, wait to use them all simultaneously (which, combined with a lucky egg, can result in huge XP gains), or you can pay for additional incubators and go to town.

Life at a Higher Level

During your lower levels the temptation to power up seemingly strong Pokemon is overwhelming, but it simply isn’t worth it. Why? When I was a lower level, maybe 10, I evolved an Eevee into a CP 400 Jolteon and spent all my Stardust powering it up to a seemingly massive 660. Now, at level 18, 19, 20, I’m encountering wild Pokemon between CP 400 and 850 regularly. I evolved another CP 520 Eevee into a CP 1300 Vaporeon. That was without using a single mode of Stardust.

PokeStops are also dropping different items. They had started dropping greatballs but are now dropping ultraballs.

Basically, everything is better and I could have some pretty monstrous Pokemon if I had saved my dust and candies from pointless power-ups.

Pokemon GO: A Beginner’s Guide

Today I’m going to skip the rambling introduction and get right to the meat and potatoes.

What Is Pokemon GO?

GO is an augmented reality game, meaning it blends the game into the real world. Using your phone’s GPS you and your friends can search for Pokemon. All players share the same instance of the game, meaning that if one player finds a Pokemon other players should be able to find that same one in the same place. The main objectives are to collect Pokemon, train them to make them stronger, and defending your team’s gyms while battling other teams’ gyms. Also getting exercise and being social are important but that doesn’t really need explaining.

How Do You Play?

After downloading the game from the Google Play or iTunes App Store you’ll sign in with your Gmail account. Once you’re in the game you’re greeted by Professor Willow who gives you a brief overview of the game and its mechanics. You then get to choose your starter Pokemon, Bulbasaur, Charmander, or Squirtle. Which one you choose actually makes very little difference since you can’t go to gyms until your player level reaches five. Also, your starter’s CP, or Combat Points, are only 12 which is completely useless for battling or leveling up as I’ll explain shortly.

So now we need to catch Pokemon, but to do that we need Pokeballs. You get those by going to PokeStops and spinning the medallion, which drops items that are automatically added to your inventory. Once you’ve collected a bunch of Pokeballs it’s time to start catching Pokemon. Simply wondering around is usually enough to start some of your core catches: Pidgey, Weedle, and Rattata. For the first few player levels this is pretty much going to be your focus; spin, spin, catch, spin, catch.

“But that sounds boring!” I hear you cry. Yes, it might be hard not to evolve or level up that Krabby or Slowpoke you caught, but trust me, it’s worth it, and I’ll explain why later.

Tips For Catching Pokemon

In the bottom-right corner of your screen there’s a small list of nearby Pokemon. Tap this list to open a larger list of every Pokemon that’s around you. The number of footprints indicates relative distance each one is from you. If there’s a particular Pokemon in that list you want to catch, tap on it. The window will shrink and only display that Pokemon, along with its distance. If the number of footprints increases, or it disappears entirely, you’re going the wrong way. If the number of footprints decreases you know you’re on the right track. If there are no more footprints you’re basically standing on top of it. Look for russling grass in the game; this should give you a hint for where to look. Eventually it should jump out and you’re ready to catch it.

Once you’ve tapped on the Pokemon and the catching interface has appeared you’ll see the Pokemon and your Pokeball. Around the Pokemon there will be two circles; a white one that stays the same size and a green one that shrinks, gets big, then shrinks again. The basic goal is to throw the Pokeball into the white circle to catch the Pokemon, but you get more experience and a higher catch-rate for hitting the green circle. The smaller the circle the bigger your bonus.

You can also throw one of two ways. The first way is by simply dragging the ball up quickly with your finger and releasing. The second is by spinning the ball and throwing at an angle. This is a more difficult throw but gives you another boost to the catch rate.

Just like in the game, better Pokeballs will have better catch-rates. If you don’t have Greatballs, or if you really just want to make sure the Pokemon doesn’t get away, you can use Razz Berries to give a bonus to the catch-rate. They’re one-use items and only work each time you attempt to catch the Pokemon. This means if it pops out of the Pokeball you’ll need to use another Razz Berry to get the bonus again.

Leveling Up with Pidgey Power!

You can power up a weak Pokemon but you’ll end up using all of your resources, Stardust and Candy, and the end result will be a mediocre Pokemon and depleted resources. The best course of action is to simply catch a Pokemon that’s already strong and then level it up. But, in order to catch strong Pokemon, your player level needs to be high. So how do you do that? By taking advantage of an in-game item called Lucky Egg. This item doubles your player’s experience gain for 30 minutes. When combined with evolving Pokemon, your player level can make huge jumps. I went from level 10 to 14 in the course of about 10 minutes.

Each Pokemon caught gives you 3 Candy, plus 1 more if you transfer it to Professor Willow, for a total of 4. Pidgey requires only 12 Candy to evolve (a more typical amount is 50) and nets you 500 XP, or 1,000 if you’re using a Lucky Egg. By level 9 it wouldn’t be much of a stretch to have caught maybe 50 Pidgey, netting 150 Pidgey Candy. That’s enough for 12 evolutions. 10 evolutions times 1,000 XP each gives you 12,000 XP total, enough to hit level 10. Weedle is another Pokemon to use for quick leveling. They are at least as common and also require 12 Candy to evolve, so that’s easily another 12,000 XP, so you’ve gained another level. Repeat this for all the common Pokemon with low evolution costs and you’ll gain levels en mass. You’ll get another Lucky Egg at level 10, then again at level 15, so there are plenty of changes to bulk up.

Once your player level is up you’ll start getting better items from PokeStops, like Greatballs and Super Potions, and encountering Pokemon with higher and higher CP. Since you have hopefully not spent any of your Stardust you can start capturing monsters with a CP of 500+ right off the bat, which results in much higher CP in the long run.

Soldering and Desoldering guides

I’ve screwed up plenty of electronics trying to add or remove components with poor solder technique. Lifted pads, burned components, the lot. If I’m going to be attempting to repair and modify consoles and handhelds I should probably learn how to do things right. After searching YouTube I found these incredible guides filmed in 1980 and 1982 by PACE, Inc. These are definite must-watch videos if you’re interested in soldering.

Basic Soldering Lessons 1 – 9

Rework & Repair Lessons 1 – 8

Retr0briting a white PS2 controller

This spring I came across a Japanese Playstation 2. Not just a Japanese Playstation 2, but a white Japanese Playstation 2. For like $50. Normally fat J-PS2s run $80-100 so getting a non-black one half that was pretty sweet. It even came with the original white controller. At least, it used to be white.


Yeah. It’s kind of gross. I’m not sure if it’s UV damage or smoke damage, either way it’s pretty nasty. Maybe it’s supposed to be pale yellow? Let’s find out.

Top half of the controller compared to the inside of the bottom half.
Top half of the controller compared to the inside of the bottom half.

Oh no. Hell no! Ew, ew, ew! Not only is it gross yellow, it’s also filled with dirt. Since we’re going to attempt restoring the plastic we’ll need to tear it apart and clean it anyway, so let’s do that.

I'm done.
I’m done.

How? How?! At least this is the last time this controller will ever be this dirty.

After the bath I mixed up some Oxy-Clean and hydrogen peroxide. The peroxide was only 3%, not the recommended 6-12%, and I didn’t have xanthan gum to make it into a easy-to-apply paste, so I just had to dunk the top half of the controller into the liquid  solution (I couldn’t fit both halves in the container) and pray.

Brightened top compared to the yellow and original white.
Brightened top compared to the yellow and original white.
Brightened vs as-is.
Brightened vs as-is.

It looks surprisingly good but it’s still not where it should be. I’m guessing it was because the hydrogen peroxide was too diluted. Time to try a more powerful solution.

The top half of the controller looks yellow because of the lighting.
The top half of the controller looks yellow because of the lighting.

Continuing my testing on the top half I gave it multiple coatings and sessions out in the sun and didn’t see much of a change. Most of the reports I’ve read claim that it only requires 60 to 90 minutes in the sun, but after 2 hours I wasn’t seeing much, if any, change.


While not being white-white it’s certainly much better than it was (go back and look at the first picture again). I think this is as good as I’m going to get, so time to move onto the bottom.


It was hard to make out in photos but the lightening on the bottom was a bit uneven. I recoated it and let it sit longer but didn’t get a better result. I think the liquid hydrogen peroxide diffuses the light, lightening the plastic more evenly than using the hair cream. Regardless, the controller looks white at a glance, especially with indoor lighting, and it doesn’t feel like touching it is going to give me emphysema, so overall I’d say this was a success. Maybe in the future I’ll find a really yellow piece of plastic I can chop up and do some scientific testing.

Gameboy Advance Restoration – Day 2

In the last post I had finished taking the Gameboy Advance apart and scrubbing it clean. It made no difference at all but the prep-work was important for the next step: hydrogen peroxide and lots of sunlight. Note: The photos in the previous post were taken with my DSLR; these photos were taken with my phone so they’re going to look quite a bit different.

I wasn't able to get all the air bubbles out so I had to weigh the parts down.
I wasn’t able to get all the air bubbles out so I had to weigh the parts down.

At about 8 in the morning I set the container out in the sunlight. It was supposed to be sunny all day long so I figured this would be a perfect time to test how well the hydrogen peroxide works. What I didn’t realize is that our patio would be cast in shadow around 9 or 10, and since I was at work I couldn’t move it.

I probably should have left it at this state but I figured there was more color to be brought back.
I probably should have left it at this state but I figured there was more color to be brought back.

So this is the result after basically a full day of shade. It looks pretty good (by which I mean it isn’t that greenish black anymore) but I was curious if I could get the purple back if I left it in direct sunlight. I rinsed the parts, replenished the hydrogen peroxide, and placed it somewhere it would get full sunlight all day.

You can see the richer purple on the bottom of the system.

Once it was done I washed it again and put it all back together. It is purple, but it’s a faded, sort of ashy-looking purple; not quite what I was expecting.

With all the black banished from the plastic it’s time to restore the color. I had recently restored the plastic trim on my car using Back to Black, so I decided to try that on the GBA’s plastic shell. The bottle claims it repairs “light oxidation” but is “safe for all colors”, so why not give it a try?

Top half recently treated with Back to Black.
Top half recently treated with Back to Black.

The initial difference is pretty staggering. I was a little worried about the darker areas, not sure if they were stress marks or what, but it was just from there being a heavier layer of gel on those areas.

After a complete application.
After a complete application.

After treating the whole surface I buffed the remaining gel off and compared it to the correctly-colored plastic. In my mind it was looking a little better but comparing the before and after photos it pretty much looks the same. I noticed that where the gel was applied very liberally the color looked perfect before buffing and drying, so I did something a little crazy.

There's no kill like overkill.
There’s no kill like overkill.

Yes, that is exactly the color I was going for! Absolutely perfect! I knew it wasn’t going to last, but maybe it would at least help.


Maybe… maybe a 5% gain? I want to believe it looks better but honestly it looks pretty much the same. At this point I have fewer options. I could:

  • Wet-sand the top layer of plastic to bring fresh plastic to the surface, but lose all texture and effectively ruin the shell.
  • Paint it, and ruin the shell.
  • Replace the case with a new one.
  • Live with the faded case.

The unit cost me $15, plus 2 or 3 more for a replacement battery cover, and another $2 for the hydrogen peroxide. Average price for a Gameboy Advance is $30. A new shell is roughly $15 shipped, so if I go that route I’ll have spent the same amount of money, if not slightly more (plus time and gas) but I’ll end up with a basically brand-new unit. Not sure what my next move is going to be just yet.

Passive Water Cooling Memorandum

I get inspired by a lot of things. Sometimes I’m inspired by idiotic and impractical things just because I find them fascinating and I want to apply the logic in more reasonable scenarios. After watching the Linus Tech Tips series Whole Room Water Cooling Project I started thinking about impractical ways to water cool my own system while keeping it as quiet as possible. For some reason I decided on using a fish tank to act as both a reservoir and passive radiator, relying on convection and evaporation to provide a powerful one-two punch of cooling.

Instead of jumping into the deep end I started with a very simple setup, opting to cool only the CPU since I wasn’t sure exactly how effective the tank would cool the water. The loop starts in the tank, flows through a water-feature pump submerged in the tank, though a soft tube to the water block, then back into the tank. The dimensions of the tank where a huge unknown since the volume determined how long the water would take to heat up and the surface area would determine it’s cooling characteristics. After a lot of research and goofing around in Excel I came up with this chart to determine how long it would take to heat a given volume of water with various heat loads (that is, how many components I added to the cooling loop and if they’re at idle or full load).

tank size

The processor I was using at the time, an AMD Phenom II X4 965, had a maximum heat output of 140 watts. Given that, we can use a range of tank sizes to determine how long it would take to heat the water. For example, it would take 6.6 hours to raise 10 gallons of water 30 degrees Fahrenheit, or from a normal room temperature to around 100 degrees, my target maximum water temperature. Given that a 100% workload across all four CPU cores for over 6 hours is not a reasonable workload I figured this was a good size, providing cooling under a worst-case scenario.

What the chart above doesn’t take into account is cooling; it only addresses heating the water. This system has essentially three sources of cooling: radiation through the sides of the container, surface radiation, and evaporation. Based on testing I did the tank was able to radiate 48-70 watts, depending on temperature, through the glass sides when the top was sealed. According to this chart a 30 degree Fahrenheit difference between water temperature and ambient temperature produces 130 watts of cooling per square foot. However, the tank I’m using has a surface area of 1.2 square feet, producing a total heat loss of 156 watts. That puts our total at 204~226 watts of cooling meaning the water should never actually reach 30 degrees above ambient. So far everything looks good, but how does it work in practice?


To test the real cooling performance of this system I ran Prime95 for five hours then let it idle overnight (I didn’t take measurements while I was asleep so there are no data points). We can see the average difference between CPU temperature and water temperature is 9.2 degrees Celsius which has more to do with the water block’s performance than anything. More importantly, the peak CPU temperature came in at 38 degrees Celsius. To put that in perspective, on the all-in-one water cooling solution that was previously on this same CPU I was seeing temperatures in the high 50s under gaming load which is much less stressful than Prime95 and on standard air cooling you might see high 60s, low 70s, or even higher if you’re overclocking. Compared to that, 38 degrees is absolutely frigid.

case and tank

At this point we know it works both on paper and in practice, but what is it like to live with? Let’s start with the bad parts.

It isn’t silent. Seems insane for a passive system but it really isn’t that simple. It’s quiet, sure, but only sometimes. The pump is cheap and meant to be used outdoors. The pump itself vibrates, meaning I can’t use its suction cup feet to mount to to the walls of floor of the tank as pictured above because it transfers that vibration straight to the glass and into the room. My solution has been to position it so that it sort of floats in the water, not contacting anything but the water. It still makes sound but you really only hear it when the rest of the system is off. Speaking of which, there are still other system components that generate noise. The biggest offender was my dual GTX 560 Ti SLi setup which, under load, sounded like four jet engines in a screaming match. When those were idle the case fans are the source of noise. Not much, but when the rest of the system is so quiet little noises become moderate noises. Basically by removing the one fan cooling my CPU I did little if anything to quiet the rest of my system down at all.

With evaporation being responsible for half my system cooling a lot of water evaporates. It takes a long time but the occasional trips to the drug store for more distilled water are a bit inconvenient. Summer time makes the system operate at a higher overall temperature, too, which increases the evaporation that much more.

It’s not all that pretty. I had bought the blue glass rocks to spice up the tank and had some plans to make it look nicer but I just never bothered. It takes up a huge amount of space and cleaning it between refills isn’t fun.

It’s not all bad, though, the cooling performance is insane and it cost half of what a typical water cooling loop would. In all this system should cost around $130 USD which is about the price of a radiator and reservoir alone.

If your goal is silent computing this isn’t the way to go. High quality air cooling can do much better with little to no maintenance. Traditional water cooling loops can achieve similar performance with quieter results assuming you’ve invested in high quality fans. That said, if your goal is to build a cheap water cooling loop that works well then I can’t think of a better solution.


How-To: Play Import Playstation Games

For most gamers importing Japanese games is a novelty, allowing us to play slightly different versions of games that eventually made their way to North America. Maybe there was a change made during localization, like the post-race animations in Super Mario Kart, or maybe the game simply never officially left Japan. Games like Konami’s Beatmania only ever saw one release, giving Americans only a small taste of the over two-dozen Beatmania versions available for the Playstation and Playstation 2. Over the next few weeks and months I’ll be detailing, step-by-step, the process of playing import games on the various consoles I own.

The Sony Playstation is perhaps the easiest system to play import games on, not counting consoles that don’t have any type of region lockout like the Playstation 3 or Nintendo DS. While most systems that are easy to play imports on requires at least some amount of modification or extra software the Playstation only requires a North American game disc and a zip-tie. This guide assumes you’re using the original style Playstation. I don’t own a PSOne so I can’t say for sure how to do this on that style of Playstation or if this method even works with it.

  1. Trick your Playstation into thinking the lid is always closed.
    Open the lid and locate the round button at the back-right. When the lid closes a plastic tab depresses this button which tells the console the lid is closed. Push down on the button with the square end of the zip-tie and insert the flat end in the gap between the button and the well it sits in. Use a pair of scissors to cut the flat end of the zip-tie off so that it’s somewhat flush with the rest of the case. You’ll want to leave the tray open during these steps but once the game loads you can close the lid.
  2. Turn on the Playstation with a North American disc inside.
    I’d suggest using a disc you don’t care about, like a demo disc or a sports game due to the aggressive handling you’ll have to do with the disc. During this step the system is looking at the disc content to verify its a legitimate game disc from the correct region.
  3. Pull the disc out and pop in the import disc.
    After the Sony Computer Entertainment logo and its white background fade to black pull out the disc and replace it with the import disc as quickly as possible. I believe this is when the console is reading the table of contents from the disc so it knows where different key assets are physically located on the disc.
  4. Put the North American disc back in.
    Once the console detects the presence of the disc it will spin at its normal read speed. After about six seconds the disc will slow down noticeably. You should have a pretty large window of time to swap discs here.
  5. Put the import game back in.
    After the North American game is swapped back in the Playstation should try to boot it. As soon as the Playstation logo disappears pull out the North American disc and put the import back in as quickly as possible. The screen will probably stay black a second or two longer than normal, then you should see the opening cinematics.

That’s it. Assuming you already have a game from your region and a zip-tie this method should cost you nothing but the time it takes to jam the button and swap the discs back and forth. If the instructions here don’t quite click I’ve also made a video detailing the steps above.