Sega Genesis development - Gen Poker
My first attempt at a video poker game was at around twelve years of age, using BASIC on an 8-bit ZX Spectrum. I programmed it without using arrays, instead writing pages and pages of "if" statements. It was terribly buggy, a fact which I tried to hide by telling my friends who played it that the game was actually cheating in THEIR favour... heh

Video poker machines were interesting because they usually took up a half of each arcade in Bucharest. Half of the arcade had the regular games, and the other half had gambling machines, predominantly video poker. Adults lost piles of money playing these things.

If you just want to play it, grab the rom, and off you go! If you wish to develop your own Sega Genesis game, download the modified dev kit, and read the rest of the article.

The rules are simple: get a winning hand, and then either gamble a few times, trying to guess whether the next card is red or black, or just collect. Correct guesses will double your amount won. Guessing incorrectly takes away your winnings. You can collect whatever you won at any time.


The game
- compiled rom - grab this to play the game in any Sega Genesis emulator

Source and dev kit
- complete and modified dev kit - this one contains a modified dev kit, which also includes my source directory. I stripped out some tools, and modified it. Read the section below if you'd like to develop your own game based on this
- dev kit - this is an unnamed Sega Genesis dev kit. It's what I started with.
- source - the Gen Poker source code. I placed it inside ProgMD while developing

- Fusion emulator – a good Sega emulator. I used it as a run-time environment to try out my code

Developing your own

I began by modifying the dev kit. I removed some files and an graphical editing application that I found useless. I created a compile.bat script inside the genpoker source directory which after compiling, copies the rom to the emulator's directory, so it can be loaded easily.

I also noticed that the author added his own logo in one of the libraries, making it visible every time you booted a rom compiled with this dev kit. I did not like this, and I changed it, after which I recompiled the libraries.

I decided to stick with the 8x8-based memory copy calls, which is why some of the cards look a bit off, as the calls work with 8x8 "chunks".

An important note: the scripts included with the dev kit assume that the kit is located in c:\ (so c:\ProgMD). A Frenchman put it all together, and the Genesis is called Megadrive over there :) which explains the "MD" (and man, did this fact confuse me when I moved over the Atlantic!)

Other than that, after compiling the final version of the rom, which I then uploaded here, I ran it through the checksum fixer. It did work fine without it, but Fusion reported an "invalid checksum". No biggie.

Just like with Neo Thunder, Gen Poker looked and felt better when played on an old-school tube tv.
Here it is running in NeoGenesis (a Genesis emulator for Xbox) on the above-mentioned tv:

If you use the materials on this page, or any other page on this web site, you do so at your own risk. They are provided "as is". No warranty is provided or implied. I neither guarantee that the materials will work, nor that they will not be harmful in any way.

Snowdrop OS assembler and debugger

Electronic circuits - CMOS buffer

Electronic circuits - driving higher current loads through parallel port

Electronic circuits - interfacing a Nintendo NES from Snowdrop OS

Electronic circuits - 3-bit current buffered DAC

Electronic circuits - stepper motor driver controlled by Snowdrop OS

Electronic circuits - parallel port interface

Snowmine - a Minesweeper-like game for Snowdrop OS (in x86 assembly)

Storks - a matching game for Snowdrop OS (in x86 assembly)

Electronic circuits - interfacing with a 16x2 LCD via parallel port

Electronic circuits - square wave vs. sine wave (audio differences)

Electronic circuits - Catch That LED!

Electronic circuits - parallel port light show

Electronic circuits - the Annoizer (555 speaker circuit)

Intellivision development - Hotel Bunny

Coverage of my projects

Interviewed in the Retro Gamer magazine

My homebrew cartridges

ZX Spectrum development - Husband Chores (in Z80 assembly language)

No Snakes! - a multiplayer game over serial port

Sega Dreamcast development - Overbearing Burgers

Snowdrop OS - my operating system from scratch, in assembly language

libzx - ZX Spectrum game programming library (Z80 assembly language)

Compact Pong - game in C# for the Pocket PC (Windows Mobile 2003)

TOTP (time-based one-time password) authenticator in C# (.Net)

aSMtris - Tetris in assembly language (x86, 16-bit)

Balanced Diet (GBA) limited edition

Gameboy Advance development - Balanced Diet

Atari 7800 development - Poetiru

Arcade ROM hacking - Knights of the Round translation

PocketStation development - Pocket Worm

Sega Game Gear development - Burgers of Hanoi GG

Pokemon Mini development - Mini Cookie

Magnavox Odyssey2 development - Red Green

Sega Dreamcast VMU development - Raining Squares

Nintendo GameCube development - Mama Bear Puzzle

Nintendo Wii development - Groundhog Puzzle

Sega Saturn development - Saturnade

Atari Jaguar development - Jagmatch

Sega CD development - Blackjack CD

Nintendo 64 development - Don't Be Square

Commodore 64 development - Tube64

Sega 32x development - Eight Queens

WonderSwan (Mono) development - Swan Driving BW

WonderSwan Color development - Swan Driving

Animal Keeper - a JavaScript and HTML5 Canvas game

3DO development - Space Invaders Invaders

Sony PlayStation development - The 11th Power

Sony PSP development - Newton Voyage

Nintendo DS development - Geoincursion

Gold of the Kingdoms - an XNA/C# homebrew game

Blue Elf 2 309-in-1 JAMMA PCB - troubleshoot controls not working

Fractals in JavaScript and HTML5 Canvas

Angry Video Game Nerd (AVGN) theme song on the Gameboy Advance

Novice calligraphy - Gothic hand, with letter guide

Video compilation of my classic console homebrew games

Seven segment display circuit with the 4511 decoder and the 4029 counter

A simple Atari 2600 joystick tester circuit

555 timer and 4017 decade counter - traffic lights circuit

Catch That LED! - an electronic game circuit

Capacitor study circuit

BlackBerry PlayBook development - Sheepish Bearings (Native SDK, OpenGL)

Neo Geo Pocket Color development - NGCollector

Neo Geo development - Neo Thunder

Atari 5200 development - Shooting Gallery

ZX Spectrum development - simple input/graphics example

Vectrex development - Scalar Ownage

Nintendo Virtual Boy development - Real Danger

Gameboy Color development - Burly Bear vs. The Mean Foxes (GBC version)

Sega Master System development - Burgers of Hanoi

Colecovision development - Mowleco

TurboGrafx-16/PC Engine development - Alddee

Atari Lynx development - Catkanoid

Nintendo NES development - Invaders must die!

Atari 2600 development - Snappy (batari basic)

Super Nintendo development - Bucket

Gameboy Advance development - smgbalib library

Airplane Vegas slot machine

Sega Genesis development - Gen Poker

(2004) Project One - first university game programming club project

Gameboy development - Burly Bear vs. The Mean Foxes

(2006) RGB Overdose - university programming contest entry