Programming Articles

Sega Genesis

Sega Genesis Programming Part 1: Palettes

Sega Genesis Programming Part 1: Palettes

After thinking about it for something like 25 years I decided to take a stab at learning how to program for the Sega Genesis. My first attempt at learning involves creating and loading palettes.


Sega Genesis Programming Part 2: Tiles and Sprites

Sega Genesis Programming Part 2: Tiles and Sprites

I expected to get either frustrated or bored with this whole "let's try to program for the Sega Genesis thing" and am surprised to find I'm enjoying it. In this experiment I try to draw some tiles and move a sprite around with the controller.


Sega Genesis Programming Part 3: Sprite Animation

Sega Genesis Programming Part 3: Sprite Animation

Building on the last article, this one looks at how to create an animated sprite with different patterns for each direction.


Sega Genesis Programming Part 4: Echo Sound Engine

Sega Genesis Programming Part 4: Echo Sound Engine

A brief write-up on how to include the open source Echo sound engine and convert .xm files to its audio format.


Sega Genesis Programming Part 5: Collision Detection

Sega Genesis Programming Part 5: Collision Detection

This article explores a technique to test for sprite collision against a map, it also covers how to draw to high & low graphic planes.


Sega Genesis Programming Part 6: Vertical Scrolling

Sega Genesis Programming Part 6: Vertical Scrolling

After a few iterations I have a sprite that moves around but has no place to go so it's time to try scrolling the map. Along the way I added a little more scenery and created another handy little tool.


Sega Genesis Programming Part 7: NPC Sprites

Sega Genesis Programming Part 7: NPC Sprites

Our sprite was looking awful lonely in his sparsely decorated store. In this article we give him a friend and fix up a few lingering problems with collision detection.


Sega Genesis Programming Part 8: Game State and Pausing

Sega Genesis Programming Part 8: Game State & Pausing

In this round I fixed several nagging problems and implemented (very) basic game state management. Since the breakneck action of this demo is probably too much for most to handle I also added a pause feature to test out game state management.


Sega Genesis Programming Part 9: Object List

Sega Genesis Programming Part 9: Object List

After 8 articles we have a sprite that can walk around and bump into things while music is playing. We can even pause the game just in case this is too much action for people to handle. Now let's figure out how we're going to let our sprite interact with their environment.


Sega Genesis Programming Part 10: Sprite Link List

Sega Genesis Programming Part 10: Sprite Link List

In this exciting episode we figure out how sprite links can be used to control the order that sprites are drawn as they move around the y-axis. We also take a small detour and look at a way to keep track of memory address constants.


Sega Genesis Programming Part 11: Scenes & Dialogs

Sega Genesis Programming Part 11: Scenes & Dialogs

This is a fairly large installment that looks at how to store & load scenes, creates a font, and displays dialogs with text based on what the player is looking at. This is getting closer to almost resembling a game of some sort.


Sega Genesis Programming Part 12: Scenes & Dialogs

Sega Genesis Programming Part 12: Scenes & NPCs

I decided to focus on turning this crazy experiment into a simple one-room demo that contains all the basic mechanics of an adventure-like game. The first part of this involves supporting an arbitrary number of NPCs than can be moved between locations.


Sega Genesis Programming Part 13: Action Table

Sega Genesis Programming Part 13: Action Table

The second stop on our journey toward a one-room demo takes us to processing actions. In this article I built out a simple table that's used to respond to player actions based on the game state. Multi-page dialogs and default object description text were also built along the way.


Sega Genesis Programming Part 14: Selections

Sega Genesis Programming Part 14: Selections

So far our little sprite can only look at objects and engage in one-sided dialog with NPCs. Let's fix that by adding a menu that gives them more interaction options. While we're at it, let's add the ability to respond to NPC questions.


Sega Genesis Programming Part 15: Inventory

Sega Genesis Programming Part 15: Inventory

The next step in building a one-room demo is inventory management. In this installment we give the player a (small) inventory with basic add/remove item functionality. While we're at it, let's add some dialogs that allow the player to select items to give or take.



C# .NET Programming

Random Maze Experiment

Outlook Screen Saver

An example of how to create a screen saver in C# and work with the Outlook object model.


Random Maze Experiment

Random Maze Experiment

Inspired by the game Minotaur for the Intellivision, this is an attempt to build a random 12x12 maze where every room is accessible.


Random Maze Experiment Part II - Objects

Random Maze Experiment Part II - Objects

A follow-up to the random maze demo where I tackle adding random objects to the maze.


Android Programming

Android SpriteWalker Demo

Android SpriteWalker Demo

A small demo on how to move a sprite around with collision detection and background music.


Quick Guide to Android Serialization

Quick Guide to Android Serialization

A very quick tutorial on how to serialize objects to an SD card from an Android application.


Browsing Facebook Albums from an Android Application

Browsing Facebook Albums from an Android Application

A demo application and tutorial about how to browse Facebook albums on Android.


Integrating Android Applications with the eBay API

Integrating Android Applications with the eBay API

A demo application illustrating how to invoke the eBay API, parse the results, and display them on an Android device.


Java Programming

Writing a simple file browser in JavaFX

Writing a simple file browser in JavaFX

A quick example of how to write a little file browser using the JavaFX TreeView and TreeItem classes.


Java 8 Optional: What's the Point?

Java 8 Optional: What's the Point?

My first impression of the new Optional feature introduced in Java 8.


Java 8 Optional: What's the Point?

Applet Repair Course

How to fix an old applet you don't have the source code for.


Creating a Recent File Menu

Creating a Recent File Menu

An example of how to create a recently used file menu in Java.



Other Topics

Atari 2600 BASIC Programming

Atari 2600 BASIC Programming

In 1979 Atari made a BASIC programming cartridge for the 2600. Since I enjoy obsolete technology and frustration I attempted to write a few almost useful programs on it, here are the results.


Outlook VBA - Coping with annoying appointments

Outlook VBA - Coping with annoying appointments

Some handy VBA code to take care of the most annoying appointments your co-workers force upon you.


How to not completely screw up your portal implementation - Part 1: The First Rule of Portal Design

How to not completely screw up your portal implementation - Part 1: The First Rule of Portal Design

After 5-6 years of working on portal applications I've learned a lot of painful lessons, there's no reason you should have to suffer too. The first installment in this series deals with the single most important design rule for portals.


The Abridged Story of Mercator Software

The Abridged Story of Mercator Software

My experiences at the now-defunct Mercator Software.


Exploring an unsuccessful php hacking attempt

Exploring an unsuccessful php hacking attempt

Let's take a quick look at a PHP hacking attempt from a Russian botnet.


Overlib Image Hover

Overlib Image Hover

How to create an image hover effect using Overlib.


Overlib Image Hover

Microsoft's Year 2000 Resource Center CD

Preparing developers for the end of the world.