[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.
Husband Chores
[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
zxian (emulator)
[detailed project page]
A ZX Spectrum computer emulator
- emulates the 48k ZX Spectrum computer from Britain
- supports SNA snapshots and Kempston joystick
Geoincursion
[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
Timeline
[detailed project page]
A text mode adventure.
- complete quests, battle against foes, find a hidden artifact, purchase goods from vendors, and also make soup
- my first game to feature a full story
- runs on sebventure v1 game engine, also written by me
Gold of the Kingdoms
[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
[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
Snowmine
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
Animated Sprite
[detailed project page]
An example of how to implement an animated sprite on the Atari 2600.
- source code and development kit provided
Swan Driving
[detailed project page]
Control your car, trying to avoid incoming traffic.
- car has two gears, low and high
- weather effects (rain)
Swan Driving BW
[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
[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
[detailed project page]
An implementation of the "15 puzzle" game.
- the puzzle can be re-shuffled at any time
Groundhog Puzzle
[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
[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
[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
[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
[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
[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)
[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
[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
[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
[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
[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
[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
[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
[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!
[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
[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
[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
[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
[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
[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!
[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
[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
[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
[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
[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
[detailed project page]
A casino-style blackjack game for the Sega CD
- the game tracks the number of wins instead of allowing gambling
Tube64
[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
[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
[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
[detailed project page]
A simple Nintendo 64 tech demo of drawing coloured rectangles.
- the Nintendo 64 SDK was very buggy
ZX Spectrum Demo
[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
[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
[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
[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
[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]