A teselation game for V9990

WARNING

I made this game with the sole purpose of learning, both the (almost) complete design of one of the simplest possible games, and the internals of the V9990 P1 mode.

This software has been developed in Linux, and tested on the OpenMSX emulator only.

This is open source software, so use with care ;).

Requirements and technical info

The game comes in a 16 kB rom, most of which are the uncompressed graphics.

The game makes heavy use of the sprites to achieve a smooth movement. The falling blocks, score hints and the block under the NEXT label are sprites. Everything else are tiles.

The two layers available are used to provide a not-so-dull background. Gray and slate blue backgrounds are on layer B, the rest, more colorful on layer A. Note that the blocks are nicely trimmed when lines are completed (see the screenshots).

The game runs approximately at 60 FPS. The timer on the lower right is off by one second every 20 minutes approximately.

Game Play

Objective: Tesselate the given part of the plane as best as you can.

Controls:

Levels: The level is increased after 16, 32, 64, and 128 lines are completed. Of course, a level increase leads to faster falling blocks.

Score:

Bonus: The game starts at bonus level of 1, and the maximum bonus level is 8. Each bonus level doubles the points obtained. The bonus level is increased for every QUAD that is completed (clearing 4 lines simultaneously). If 3 lines are cleared simultaneously, the bonus level is unchanged. In the remaining two cases, the bonus level is decreased by one.

Info: The triangle that appears at the right of the playing area indicates that the line is only one space away of being completed.

Known issues

The code is rather ugly, experimental and not optimized. It had a good start, and ended badly. It is a sort of 'lets get the things done' code.

The game lacks sound and music.

The game lacks intro screen and credits. Therefore, after a game over, you must reset the computer to play again.

There is a problem with the movement of the falling block. Seldom there is a mismatch between the sprite that represents the block and the position in the RAM. I cannot reproduce this behavior at will, so it is very probable that this problem will remain unfixed.

Screenshots
From screenshots
From screenshots
From screenshots
Contact

the username is qilipalmer, at the mail service of the searching company.