You Can't Play Xbox One Games on a PS4

Sunday, September 1st, 2013

In June of 2013 Sony and Microsoft unveiled the hardware details of their next entries into the upcoming console generation — the PS4 and Xbox One, respectively. Like many others, I couldn't help but notice the similarities between the two platforms. Both supposedly use an 8 core AMD Jaguar based CPU and a Radeon GCN GPU, integrated into an AMD Fusion package. Both platforms also have 8GB of unified memory and a Blu-ray drive.

Continue reading...

Imagine Kernel Internals

Saturday, June 15th, 2013

Imagine is an image processing framework that I began writing in 2009. The framework makes it easy to load, manipulate, and analyze images and perform lots of common tasks. I've used imagine in several of my projects involving graphics, games, computer vision, and artificial intelligence. There are a lot of components in the framework that we could cover in this post, but I'd like to focus on one particular area: image resampling.

Continue reading...

Negative Shift Operands in C++

Saturday, March 5th, 2013

A few years ago I came across a snippet of code that was causing problems in a multi-platform product I was working on. The code was attempting to perform a shift-right operation but, in certain circumstances, used negative right hand operands.

The C++ language supports this as valid syntax (it should compile), but the results are undefined (see ISO 9899:1999 6.5.7). Needless to say, use of negative right hand shift operands is highly discouraged!

For the sake of simplicity, I've expanded a series of macros and reduced the offending code down to the following trivial example:

Continue reading...

Building a Dreamcast Emulator for Xbox 360

Tuesday, January 17th, 2012

The SEGA Dreamcast has always been one of my favorite consoles. It had a ton of great games, powerful hardware for its time, and lots of innovative — even if underused — features like online support and the VMU.

It's impressive 624 game catalog included exclusive titles like Soul Calibur, Shenmue, Sonic Adventure, Power Stone, Crazy Taxi 2, and Mars Matrix which gave the Dreamcast a reputation for offering a diverse and innovative library that appealed to both hardcore and casual gamers, making it a beloved console despite its short lifespan.



In 2008 I built a prototype emulator for the Dreamcast that could run on the Xbox 360. The goal was to salvage as many Dreamcast games as possible and offer them a second life with improved visuals and online play through Xbox Live. Publishers could make their Dreamcast games available through the Xbox Live Marketplace and run on existing Xbox hardware without modification.

The idea spawned from a conversation I had with Peter Moore at Microsoft in 2006. Peter was at Sega through the Dreamcast launch, and Microsoft had actually collaborated to bring Windows CE and DirectX to the platform almost a decade earlier. In several ways, the Xbox project had advanced the original vision of the Dreamcast through its focus on online, community features, competitive gaming, and of course, challenging the dominance of Sony.

It seemed like the Dreamcast catalog could thrive within the Xbox ecosystem.

Continue reading...

Avoiding a Common Objective-C Mistake

Wednesday, July 6th, 2011

There is one particular mistake that stands out to me as the most common error made by beginning iOS developers (even above misuse of auto-release pools). It essentially boils down to a (quite forgivable) lack of understanding of how properties and reference counting work within Modern Objective-C.

Continue reading...

Big Buck Bunny: Cairo vs. H.264

Sunday, July 3rd, 2011

Cairo is a simple video codec that I developed in early 2011 during the later stages of everyAir. The purpose of this codec was to experiment with compression features and learn about their individual impact on efficiency while developing a simple framework for future work. Cairo was also designed to be easy to understand, and serves as a great learning aid for students.

Throughout the development of Cairo I was greatly assisted by the availability of several world class H.264 encoders. These encoders provided a benchmark to which Cairo was tuned and re-tuned. Now that Cairo is complete, I thought it might be interesting to see how it performs against the best H.264 coder around: x264.

Note that this is not a rigorous comparison by any means. Further, it is notoriously difficult to compare video codecs due to the subjective nature of quality, inherent sampling error, operator bias, etc. This comparison is no doubt biased in favor of Cairo and should be taken with a large grain of salt.

Continue reading...



previous page    |    1    2    3    4    5    6    |    next page