[back to main site]

Sebastian's Video Game Project Showcase

This page showcases my video game projects. They run on platforms from Nintendo, Sega, Atari, to Windows, browsers, tablets and beyond. Also, they are written in a variety of languages, ranging from Assembly, to C++, C#, Basic, and JavaScript.

The source code is provided for most of the projects, as well as an SDK you can use to modify my games, or kick-start your own projects. The SDKs include my source code, which can be built out of the box.

The projects are sorted in order of source code quality, from the best to the worst (in my opinion).

Follow the [detailed project page] links to get to project areas containing screenshots, ROM and executable download links, and development logs.

Geoincursion Platform: Nintendo DS Language: C++ Code Quality: 5 out of 5 [detailed project page] A classic arcade-style beat'em up for the Nintendo DS. Go around the world beating up bad guys! all content is original (music, sounds, graphics)

includes a test suite which exercises sound, music, and memory allocation

I recorded the sound effects in a walk-in closet full of sound-dampening clothes, punching myself and grunting

character graphics are based on video of myself performing the moves, while wearing various clothes

attacks build up energy, which can be spent on powerful attacks or healing

Gold of the Kingdoms Platform: Windows Language: C# Code Quality: 5 out of 5 [detailed project page] A trading game in which the player attempts to make a profit and ultimately gain influence over all kingdoms of the realm. The player's caravan can encounter hazards such as thieves and wolves. the player can recruit scoundrels, who will steal valuables, bringing them back to the player's caravan

natural disasters can destroy kingdoms

development began with a Core assembly, driven by a throw-away Console client; the Console client was later replaced by the UI client

95% test coverage of Core assembly, 84 out of 100 Maintainability Index (Visual Studio)

kingdom names, coat of arms and descriptions are procedurally generated

Hangman Platform: Snowdrop OS Language: Assembly Code Quality: 5 out of 5 [detailed project page] My version of the well-known word guessing game. relies on Snowdrop OS's GUI framework

the player can select from multiple categories

Husband Chores Platform: ZX Spectrum Language: Assembly Code Quality: 5 out of 5 [detailed project page] Keep your house clean by unclogging toilets, taking out the trash, etc. featured in the Retro Gamer magazine (Great Britain), in print (issue 155)

written fully in Z80 assembly language

bitmap routines were written from scratch (pixel-level), to achieve movable sprites across a background

hardware-level functionality was factored out into a collection of re-usable routines

each 20 millisecond video frame, a small chunk of CPU time is set aside to output sound

physical release on audio tape

Snowmine Platform: Snowdrop OS Language: Assembly Code Quality: 5 out of 5 [detailed project page] A Minesweeper-like game for my own operating system, Snowdrop OS. shows how to use Snowdrop's GUI framework to create a simple game

first click is guaranteed safe

aSMtris Platform: DOS Language: Assembly Code Quality: 4 out of 5 [detailed project page] A Tetris clone, with a few improvements over the original. written fully in x86 assembly language

executable is tiny (under 2kb), which is less than half the size of the MS-DOS icon above

smoother falling pieces than the original Tetris

"last chance movement" feature lets you move pieces once they land

source code is very well documented, since assembler is the farthest you can be from self-documenting code

Compact Pong Platform: Pocket PC Language: C# Code Quality: 4 out of 5 [detailed project page] A single player, multi-ball pong game for the Pocket PC (Windows Mobile) written in C#, targeting .NET Compact Framework

similar in design to a Winforms desktop application

Storks Platform: Snowdrop OS Language: Assembly Code Quality: 4 out of 5 [detailed project page] A matching game in which a stork must deliver babies. meant as a proof-of-concept for Snowdrop OS's new game development libraries: BMP support, sprites, sound, enhanced keyboard support, graphics mode text

written exclusively in x86 assembly language, like all other Snowdrop OS apps

libzx Platform: ZX Spectrum Language: Assembly Code Quality: 4 out of 5 [detailed project page] I wrote this game development library for programmers who want to write games for the ZX Spectrum, in assembly language. abstracts the ZX Spectrum hardware

includes routines for keyboard input, movable sprites (via XOR and masked bitmap rendering with a background buffer), random numbers, sound, text

includes a suite of well-commented examples

Space Invaders Invaders Platform: 3DO Interactive Multiplayer Language: C Code Quality: 4 out of 5 [detailed project page] My take on the classic Space Invaders game, with the twist that the player is in charge of the invaders. since the 3DO is not region-specific, parts of the program have to account for the variability in screen resolutions

the output of the build tool chain is a CD image (since the 3DO discs use the Opera File System), making for a slower than usual build-test cycle

the game ran much more smoothly on real hardware than it did in the emulator

NGCollector Platform: Neo Geo Pocket Color Language: C Code Quality: 4 out of 5 [detailed project page] A whimsical simulation of the life of a Neo Geo games collector. Trade with a fellow collector, gamble at the casino, strike gold at the flea market, or even work at the Burly Burger for an honest way to earn your precious games. Or you could try robbing a convenience store... the prices for the games available to collect are taken from a real Neo Geo price guide

working at Burly Burger for money is repetitive, and pays slowly but surely

Newton Voyage Platform: PlayStation Portable (PSP) Language: C Code Quality: 4 out of 5 [detailed project page] You control the launch parameters of a space ship whose purpose is to reach a "goal" area, by using nearby planets to steer. based on Newton's law of universal gravitation

some planets exert "anti-gravity"

Saturnade Platform: Sega Saturn Language: C Code Quality: 4 out of 5 [detailed project page] Position the space gates so that your ship travels safely through. inspired by a popular game featuring a flapping avian

the difficulty increases gradually by virtue of the opening decreasing in size

Jagmatch Platform: Atari Jaguar, CD Language: C Code Quality: 4 out of 5 [detailed project page] A tile-matching memory game which requires knowledge of Atari gaming history. players must match each Atari system with an iconic game written for that system

a Jaguar CD image is provided

Overbearing Burgers Platform: Sega Dreamcast Language: C Code Quality: 4 out of 5 [detailed project page] Help a hungry brown bear get all the hamburgers, while avoiding obstacles. can easily be burned to a CD to play on a Sega Dreamcast

Swan Driving Platform: WonderSwan Color Language: Assembly Code Quality: 4 out of 5 [detailed project page] Control your car, trying to avoid incoming traffic. car has two gears, low and high

weather effects (rain)

Swan Driving BW Platform: WonderSwan (Mono) Language: Assembly Code Quality: 4 out of 5 [detailed project page] A back port of Swan Driving, targetting the WonderSwan (Mono) version of the console. colour palettes were replaced by black-and-white palettes

Sheepish Bearings Platform: BlackBerry PlayBook Language: C Code Quality: 4 out of 5 [detailed project page] Tap the sheep to save them from the roaming bears. After enough sheep are saved, you get a bear horn powerup, and can scare a few bears away by tapping near them. Your attempts are graded from D to A+. a 2-week challenge; I bought a PlayBook on day 1, and had the game ready on day 14

published to the BlackBerry World app store (free download)

includes a day-by-day development log

Mama Bear Puzzle Platform: Nintendo GameCube Language: C Code Quality: 4 out of 5 [detailed project page] An implementation of the "15 puzzle" game. the puzzle can be re-shuffled at any time

Groundhog Puzzle Platform: Nintendo Wii Language: C Code Quality: 4 out of 5 [detailed project page] A port of Mama Bear Puzzle "15 puzzle" game to the Nintendo Wii. like the original, the puzzle can be re-shuffled at any time

Neo Thunder Platform: Neo Geo AES, CD Language: C Code Quality: 3 out of 5 [detailed project page] Neo Thunder is a run of the mill space shooter. You move all over the screen shooting enemy ships and dodging the myriad of bullets headed your way. has been produced on a physical Neo Geo AES cartridge, including a manual, and box

incorporated in the "supported games" list of emulators such as FBAlpha and Mame32Plus [Ash-Build]

a Neo Geo CD image is provided

The 11th Power Platform: PlayStation Language: C Code Quality: 3 out of 5 [detailed project page] My take on the shortly popular JavaScript game called 2048. The 11th Power uses coloured balls instead of numbers, each representing an exponent. 2 to the 11th power is 2048

I programmed this long after 2048 stopped being popular, hence the "11th hour" reference

Mini Cookie Platform: Pokemon Mini Language: Assembly Code Quality: 3 out of 5 [detailed project page] A tech demo of a hungry bear eating cookies. featured in the Retro Gamer magazine (Great Britain), in print (issue 140)

the Pokemon Mini assembly language resembles that of the Z80 CPU

Gen Poker Platform: Sega Genesis Language: C Code Quality: 3 out of 5 [detailed project page] Gen Poker lets the player play video poker and try to make some money. inspired from video poker machines

allows "double or nothing" gambling upon getting a winning hand

it's a "spiritual remake" of a similar game I coded when I was 14 years old; that one didn't turn out too good...

Burly Bear vs. The Mean Foxes Platform: Game Boy Language: C Code Quality: 3 out of 5 [detailed project page] The adventures of a bear out to teach some foxes a lesson! Go around eating cookies and swiping at foxes. animating the four-legged foxes was difficult and preliminary results were hilarious

sounds were especially hard to figure out

has served as a starting point for Game Boy sound routines in others' projects

Burly Bear vs. The Mean Foxes (GBC) Platform: Game Boy Color Language: C Code Quality: 3 out of 5 [detailed project page] The adventures of a bear out to teach some foxes a lesson! Go around eating cookies and swiping at foxes. same gameplay as the Game Boy version

everything has been coloured, including multiple colours for the foxes

the compiler was buggy, sometimes crashing while compiling, and sometimes generating misaligned code

Animal Keeper Platform: Browser Language: JavaScript Code Quality: 3 out of 5 [detailed project page] You control a keeper who is trying his hardest to maintain the well-being of his animals. He must both feed and administer medicine to sick animals. the map layout was designed in such a way to reduce the complexity of the pathfinding algorithm

I had initially planned sound as well, but my prototypes behaved erratically across browsers, sometimes not working at all

Balanced Diet Platform: Game Boy Advance Language: C Code Quality: 3 out of 5 [detailed project page] In this game, the purpose is to keep a balanced diet. You cannot become too unhealthy, but at the same time you wish to feel like you're living your life too, so too bland is also not good. released on cartridge (with custom case, manual, insert) as part of a 80-copy limited run

developed after over-indulgence during the holiday season

uses my own smgbalib development library

I made sure to include green peppers as a bland food; I despise green peppers

Pocket Worm Platform: PocketStation Language: C Code Quality: 3 out of 5 [detailed project page] Eat 30 pieces of food trying to not collide with the walls, or yourself! play area is only 32 by 25 pixels

the worm speeds up as it eats food

the game is relaxing at first, but becomes intense near the goal

Bucket Platform: Super Nintendo Language: C Code Quality: 3 out of 5 [detailed project page] Control Hugz the polar bear (who uncannily resembles Burly the bear...) to have him bring buckets to the distraught walruses moving frantically back and forth. inspired from an Internet meme of a walrus lamenting the theft of his bucket

of course, Hugz the bear is a palette-swapped Burly the bear

Raining Squares Platform: Dreamcast VMU Language: Assembly Code Quality: 2 out of 5 [detailed project page] Avoid the falling squares. features an animated background

the display resolution of the Dreamcast Visual Memory Unit is only 48x32

Hotel Bunny Platform: Intellivision Language: Basic Code Quality: 2 out of 5 [detailed project page] Help nine bunnies reach Hotel Bunny, while avoiding the dogs. featured in the Retro Gamer magazine (Great Britain), in print (issue 165)

I gave an interview for Hotel Bunny in the Retro Gamer magazine (Great Britain), in print (issue 167)

produced on physical cartridge, along with box and manual

multiple levels, with up to three dogs

"carrot power" can be used to gain temporary invulnerability

Mowleco Platform: ColecoVision Language: C Code Quality: 2 out of 5 [detailed project page] Mow the lawn around the house while trying to avoid the two dogs who roam happily around the yard. featured in the Retro Gamer magazine (Great Britain), in print (issue 106)

the in-game mower is inspired from my own real life red lawnmower

the idea came to me as I was watching the grass starting to show, as spring was coming

Invaders must die! Platform: Nintendo NES Language: C Code Quality: 2 out of 5 [detailed project page] Your city is under attack by invaders. Naturally, they must die! I chose this name because at the time I had just discovered and was listening to the album with the same name, by The Prodigy

the descent of the invaders speeds up, making the game unfair very quickly

Real Danger Platform: Virtual Boy Language: C Code Quality: 2 out of 5 [detailed project page] Real Danger is a simple game in which you are controlling a rabbit, guiding him away from the diving eagles who are out to get him. the eagles get progressively faster

Eight Queens Platform: Sega 32x Language: C Code Quality: 2 out of 5 [detailed project page] Eight Queens is an implementation of the Eight Queens Problem on the Sega 32x. It displays all solutions whereby no two of the eight chess queens threaten each other. I first encountered this problem in my high school computer courses

Burgers of Hanoi Platform: Sega Master System Language: C Code Quality: 2 out of 5 [detailed project page] Burly the bear returns with the task of moving a burger, ingredient by ingredient, from one spot to another. basically an implementation of the Towers of Hanoi problem, with a burger instead of discs

features the same Burly bear who was fighting foxes in my other games

Burgers of Hanoi GG Platform: Sega Game Gear Language: C Code Quality: 2 out of 5 [detailed project page] A port of Burgers of Hanoi from the TV-based Master System to the portable Game Gear. featured in the Retro Gamer magazine (Great Britain), in print (issue 140)

the burger ingredients were reduced in size to fit Sega Game Gear's smaller screen

Snappy Platform: Atari 2600 Language: Basic Code Quality: 2 out of 5 [detailed project page] Help ten explorers cross Snappy's pit via the vine swinging back and forth. inspired from a magazine type-in game from my childhood (on the ZX Spectrum computer)

has been produced on a physical Atari 2600 cartridge with a photo of a stuffed alligator on the label

it is played with only one button, which starts the explorer on his run towards the vine

No Snakes! Platform: Snowdrop OS Language: Assembly Code Quality: 2 out of 5 [detailed project page] A multiplayer snake game over serial port. meant as a proof-of-concept for Snowdrop OS's new serial port communications code

written exclusively in x86 assembly language, like all other Snowdrop OS apps

Catkanoid Platform: Atari Lynx Language: C Code Quality: 2 out of 5 [detailed project page] Inspired from Arkanoid and Breakout "paddle, ball, and bricks" type games. the name "Catkanoid" is a play on Atari's cat-based naming convention for their systems: Lynx, Jaguar, etc.

includes an original feature whereby a power gauge can be used to release multi-balls

Alddee Platform: TurboGrafx-16 Language: C Code Quality: 2 out of 5 [detailed project page] Defeat a few enemies using your sword, re-enacting an arcade game I dreamed I was playing. the game design and the name "Alddee" came to me in a dream, after spending a fruitless evening of design brainstorming

in my dream, I approached an arcade game called Alddee, and played it until I woke up

upon waking up, I quickly drew up diagrams of the gameplay, and then implemented that

the game locks up at the moment when I woke up from my dream

Poetiru Platform: Atari 7800 Language: Basic Code Quality: 2 out of 5 [detailed project page] Guide your brown bear to each of the four cupcakes, before moving on to a harder level. featured in the Retro Gamer magazine (Great Britain), in print (issue 145)

each new level introduces an additional enemy

"poetiru" is a word I invented in a dream, while sleeping

smgbalib Platform: Game Boy Advance Language: C Code Quality: 2 out of 5 [detailed project page] I wrote this library for developers who want to write games on the Game Boy Advance more easily, at the cost of performance. allows access to bitmaps and animation frames without the need to manage hardware sprites

out-of-the-box text output routines and font

simple sound output routines and utilities such as a random number generator, etc.

Blackjack CD Platform: Sega CD Language: Basic Code Quality: 1 out of 5 [detailed project page] A casino-style blackjack game for the Sega CD the game tracks the number of wins instead of allowing gambling

Tube64 Platform: Commodore 64 Language: C Code Quality: 1 out of 5 [detailed project page] A tech demo of drawing tubes on the Commodore 64. Built via a Windows batch file so it won't depend on more tools

Shooting Gallery Platform: Atari 5200 Language: Basic Code Quality: 1 out of 5 [detailed project page] A simple shooting gallery game. created as a result of a forum member's joke/suggestion/challenge that I try the 5200bas Basic language

Scalar Ownage Platform: Vectrex Language: C Code Quality: 1 out of 5 [detailed project page] Scalar (as opposed to vectorial) Ownage has you guide a geometrical shape, to shoot other geometrical shapes. programming the Vectrex was unlike any other system, because you guide a light beam, rather than draw rasters

vector graphics are much smoother because the Vectrex doesn't have to draw the entire screen, like for a raster-based "frame"

Don't Be Square Platform: Nintendo 64 Language: C Code Quality: 1 out of 5 [detailed project page] A simple Nintendo 64 tech demo of drawing coloured rectangles. the Nintendo 64 SDK was very buggy

ZX Spectrum Demo Platform: ZX Spectrum Language: Basic Code Quality: 1 out of 5 [detailed project page] A simple demo of how to move an animated character around the screen in ZX Spectrum Basic. I understood that I needed something like this to make games back when I was 11 years old, but didn't know how to do it

after joining a computer club at school in fourth grade, I finally learned this technique

this opened the door to game programming for me

RGB Overdose Platform: Windows Language: C Code Quality: 1 out of 5 [detailed project page] The player tries to eliminate all viruses by matching their colour (by red, green, blue components) to the colour of the charge being fired. my submission to a 3-week game programming competition organized by University of Toronto's Game Programming club (which I helped found)

it ranked ninth out of twenty entries at the Game Making Deathmatch (GMD)

the main criticism was that it was too difficult - a common property of the games I create

Airplane Slots Platform: Browser Language: JavaScript Code Quality: 1 out of 5 [detailed project page] A browser-based slot machine. programmed on an airplane from Vegas, while being intensely afraid of flying

the computer I had with me had no Internet access, and no other tools than Notepad, MS Paint, and a browser

Project One Platform: Windows Language: C Code Quality: 1 out of 5 [detailed project page] An action RPG game, inspired mostly from Diablo 1 and Siege of Avalon. at the Game Programming Club we initially decided to each implement a part of a simple two-dimensional game

as time went on, I took the project onto myself

when I abandoned it, in around my third year of university, it had a animation, map editor, basic AI, combat, and a WYSIWYG map editor

Red Green Platform: Odyssey2 Language: Assembly Code Quality: 1 out of 5 [detailed project page] A tech demo of an animated car. the red car is controlled by the player

scrolling green people give a sensation of movement

About the projects

What I did

After discovering the amount of effort needed to put together a decent toolkit to even start development, I decided to make all my downloads as easy to use as possible. Almost all projects have the source code for the games packaged with the SDK and other tools.

What this means is that the make scripts (usually friendly .bat files) should compile and run (I often include emulators too) out of the box. Also, most are based on languages higher level than Assembly. Since the language I used the most is C, working knowledge of this language is required. Furthermore, the operating system required by the SDKs is predominantly Windows.

How hard is it to get an old SDK to work?

Well, you start out looking for development web pages for that system. Then you find an SDK, which most likely is incomplete. You dig around for code samples, but they require a different version of the SDK, or a different SDK altogether. So now you must evaluate which SDK will work best. Since these are all independent, open source, and/or poorly centralized code bases, it can take a while until you ensure compatibility.

Now, while your code may compile, it may not link, because the libraries are too old or too new for the sample code you're analyzing, so you'll have to find proper libraries. Then you notice that whoever wrote the sample code used some wacky graphics editor which is not mentioned anywhere.

This is when you start learning about the hardware and how things are stored, etc. Then you discover that the makefiles produce a rom which does not work in emulators, or on the real hardware. Or the compiler just crashes. And since these are all old pages, you are encountering a lot of dead links.

Also, since the SDKs are older, you sometimes have to find an appropriate operating system (such as an older Windows version), because they won't run on your modern operating system.

Rarely, you are blessed with a compiler which produces code that the assembler doesn't fully understand.

The good news? I've already done all this for you!

Download the SDKs from each project page, and the source code for my games should compile (almost) out of the box! That should get you started developing.

Contact me

I love hearing from fellow developers and gamers who have found any of my projects useful, or enjoyable.

Do not hesitate to write me an email at sm.website@yahoo.com

[back to main site]