| Tetris comes to .NET Micro Framework |
Jan. 30, 2008
Microsoft field engineer Pavel Bansky has written a .NET Micro Framework version of the classic Tetris video game that's being hailed as "amazing." Created and tested using a ARM-based development kit, its source code is freely downloadable and can be run via an emulator, Bansky says.
(Click here for a larger view of Tetris for .NET MF)
In a blog posting, Windows Embedded software architect Microsoft software architect Mike Hall recalls his own creation last year of .NET MF Invaders, a .NET Micro Framework (.NET MF) version of Space Invaders he created as a demonstration of what can be done using the .NET MF 2.0 software development kit. Calling that game "relatively cool, [but] no bases, no mother ship," Hall now points readers to Blansky's "amazing implementation of Tetris."
Bansky writes on his own blog, "Tetris looks a bit old-fashioned on new computers with all the bells and whistles, but this led me to the idea of writing Tetris for .NET MF. It is a cool sample application and discovery of Windows Presentation Foundation (WPF) possibilities."
The code for the Tetris application (pictured above) has two namespaces, GameLogic and Presentation, according to Bansky. The GameLogic namespace, containing all classes for the core game, could be easily ported to .NET Compact Framework or the full .NET Framework, because the classes have no direct relation to .NET MF. The Presentation namespace, on the other hand, consists of WPF controls and windows that visualize the game and provide interaction with the user, he adds.
"The biggest glitch with writing Tetris was the fact that Micro Framework supports only one-dimensional arrays. Since Tetris is about a grid with falling blocks, the two dimensional arrays are quite essential," says Bansky. As explained on the blog posting, he got around this by writing a ByteMatrix class that manages to represent a two-dimensional byte array while storing values in a one-dimensional array internally.
Bansky quips, "I've never liked those games that forget the high score table." Since .NET MF has good support for object persistence, the Tetris game is designed to save high scores to flash memory, he adds.
Tetris for .NET MF Source: Pavel Bansky (click to play) Tetris for .NET MF is shown in the video above running on EmbeddedFusion's Tahoe Development Kit, used to create and test the game, according to Bansky. The kit uses EmbeddedFusion's Meridian CPU module, which in turn is based on the Freescale i.MXS processor, an ARM920T derivative. It includes 8MB of RAM and 2MB of flash, along with the 2.7-inch LCD shown.
The development kit includes nine hardware buttons to the right of the screen, some of which are seen in use in the video. Six lines of source code in the Tetris game map the Up, Down, Left, Right, and Select buttons to specific pins on the Meridian CPU, but that is the game's only platform-specific option, Bansky says. Since it requires no additional hardware, the game can be run using the Tahoe emulator EmbeddedFusion makes available as part of its SDK, he adds.
"The gauntlet has been thrown," Mike Hall writes. "Can you do one better than Pavel and write a version of some other game? If you do, then post a video online somewhere and send me a link."
.NET Micro Framework
Microsoft first released .NET Micro Framework (.NET MF) in 2006, aiming the low-end OS at wireless remote controls, watches, and other cost-sensitive devices with constrained processor and memory resources. The .NET MF grew out of Microsoft's Smart Personal Objects Technology (SPOT) initiative, with embryonic versions variously dubbed .NET Embedded and TinyCLR.
According to Microsoft, .NET MF supports low-end embedded processors and doesn't require an MMU (memory management unit). A typical runtime image is only about 300 KB in size, the company says.
Microsoft released .NET MF version 2.0 in February 2007, and .NET MF 2.0, Service Pack 1 in September. However, these releases still did not include a native TCP/IP stack, which was listed as "coming soon." Therefore, networking a .NET MF device has required calling through to an underlying operating system with sockets support, according to the company.
Version 2.5 of .NET MF, which Microsoft has promised to release in "early 2008," will now offer a stack that is available even when running directly on the hardware. Device makers need only provide a driver for the network interface. This will result in a wider selection of network-capable hardware development platforms for developers to choose from, Microsoft says.
The company adds that the new version of .NET MF will also include client and server support for Web Services on Devices, also known as Device Profile for Web Services (DPWS). Already part of Windows Vista and Windows CE 6.0 Release 2, this "enables a USB-like level of plug-and-play for networked devices," in the company's words. DPWS-enabled devices on a network can discover one another, then invoke the functionality each device provides.
Further information
To read more about Tetris for .NET MF and obtain its source code, if desired, see Pavel Bansky's blog, here. To obtain the EmbeddedFusion SDK, including emulator, visit the company's website, here. To read Mike Hall's posting about the game, see his blog, here.
Related stories:
(Click here for further information)
|
|
|