>
SokoBan for GameBoy
Obsession Development's
GameBoy SokoBan
Created by Emil Brink in July, 1997
This is version 1.20, from 1998-03-05
Table of Contents
This documents version 1.20 of the game. The last released version was the first official
release ever; it had number 1.10. These are the changes that have been made since that
version:
- Fixed a subtle bug in the title screen scroll
- Replaced next and previous level commands with a "goto level" command - much smoother
- Added keyboard repeat in game menu
- Added version info to ROM title string
- Changed flashing-speed of start-message :^)
This software is distributed free of charge and as-is, without any form of
warranty, neither explicit or implied. This is free software; you use it on your own
risk, and absolutely no-one except for yourself can be held as responsible for
damage of ANY KIND inflicted to other persons, animals, equipment or anything else by the (correct
or incorrect) use of this software.
This software has NOT been tested on actual Nintendo GameBoy hardware, nor
is it intended for use on such hardware. I am in no way a professional GameBoy
developer--I'm just a (random) hacker who happened to write a piece of software which seems
to produce a certain result when put through an emulator of such hardware. The
phrasing "for Nintendo GameBoy" (or similiar wording) which may appear in the software
or its documentation does not refer to actual hardware, it refers only to the fact that
this software has worked on a GameBoy simulator more than once.
GameBoy is a registred trademark of Nintendo
This game is freeware, meaning it is perfectly legal (and encouraged) for you to re-distribute
it anywhere. However, if you do so, it is requested that you always include the complete
package, with this documentation included. This is because the author of this software hates
undocumented software, and wouldn't really like seeing his own work turning into such cruft. Also,
this is not in the public domain! If you paid more than a reasonable "distribution
cost", you've been ripped off by someone up to no good! Sad.
This file documents Obsession Development's implementation of the popular little
puzzle game called "SokoBan" for Nintendo's GameBoy platform. As stated above, it has
not been tested on actual hardware, but only emulated.
It was originally written, from scratch, in less than a week, during the period 1997-07-18 to 1997-07-24.
This game is actually the very first program I have ever written for the Z80 & GameBoy! Before
1997-07-18, I had never seen any Z80 assembly code, much less written any. To be honest, I
found programming for the GameBoy to be rather nice and easy... Of course, I have yet to try
to make any advanced stuff.
In my humble opinion, this game turned out to be pretty nice, with the following fancy features
included for your pleasure:
- Nice intro
- Even nicer title screen
- 49 different levels to conquer
- Lets you jump to any level, replay current level, and abort game during play
- Puts no strain on your ears ;^)
- All this in a lean, mean 32KB package
After watching a short intro, you end up glaring at a screen containing a big logo, some
texts, a (rather cool, IMHO) scroll, and a flashing message telling you to press START to play.
This is the Title Screen, and it is where you are kept between games.
There really isn't that much to do on the title screen, except to read all the texts, of course.
When you've done that, hit START to begin brainwrestling!
For completeness, I have chosen to include a picture showing the title screen in all its glory:
(It can be noticed that the logo is really sad. That is because I've made it myself. I
still hope for a "real" logo by one of our (comparatively infinitely more talented) artists.)
If you've played SokoBan before, you can probably skip this section. After all, there is only
so much to say about how to play a game this simple. If you haven't played it before, there
are a few things you need to know, though. Basically, it goes like this:
5.1 What's that?
The game consists of a sequence of levels. Each level consists of a rectangular array
of building blocks, each 8x8 pixels big. There are five types of such blocks:
Floor
- These are just empty spaces, where you can walk around freely.
Wall
- Walls are the exact opposite of empty blocks, since their purpose is to limit your freedom
of movement, often creating devious mazes, rooms and halls while doing so.
Crate
- A crate is a boxlike thing, which can stand on the floor. You can walk up to it, and give
it a push, and if there is no obstacle blocking the way (such as a wall, another crate,
or a landed crate) it will move in the direction you pushed.
Landing zone
- The landing zones are places whose only purpose in life is to serve as parking slots for
crates. You can push a crate onto a landing zone, and it will stay there.
Landed block
- This is what you get when you push a crate onto a landing zone. You can push on this too,
to release the crate again. You can also push crates from one landing zone onto another.
NOTE: The goal of the game is to turn all crates into landed crates, i.e., push
all crates onto landing zones. Once you do this on a level, you will be swiftly transported
to the next level.
They say that a picture says more than a thousand words, so I guess I better throw you some pixels
saying far more than the blabbering above:
This picture shows all the blocks plus the player character (to the right, above the 'E' in "MOVES"), and
also the panel which is the name given to the line of text at the bottom of the screen. The
panel shows you the number of the level you are on, and also how many times you have moved so far.
It is a general goal of playing SokoBan to minimize the number of moves made in order to complete a level.
Unfortunately (or, perhaps, fortunately) this version of the game does not keep any "highscores", so
once you finish a level, your moves-count is lost forever.
5.2 What can I do?
Not that much, really. The first thing you can do is to forget about your (emulated?) GameBoy's
A and B firing buttons, since they're not used at all by this game. Once you have popped those out
of your mind, push these button descriptions in:
- Arrow keys
- The GameBoy features four arrow keys arranged into something commonly called a directional pad.
You can use these four keys to move your player. To go up, just tap the up key. It's really that easy!
Note that the game won't allow you to move diagonally, and it will also not allow you
to keep an arrow depressed; for repeated movement, you must release and press again.
- The SELECT key
- When playing, pressing SELECT has no effect whatsoever. However, if you first press START to
open up the in-game menu, SELECT becomes important; it is the key used to select the
different options.
- The START key
- If you press START during game, the so-called in-game menu will appear from below. For a description
of this menu, see the next section. Also, when (if?) you manage to complete a level, a flashing message
will appear in the lower part of the screen, telling you what you just did. To get rid of this
text and start playing the next level, you should press START.
As stated above, if you press the START button while playing, a menu called the in-game menu will come
in from below. It looks like this:
Note that little arrow. It is the menu cursor, and it's purpose is to show you which option
you have highlighted. It does this, quite effectively, by simply standing on the option's line,
thus pointing it out. You can move this arrow with the up and down arrows on the directional pad, and
you can also hit SELECT to select (amazing) the currently highlighted option.
Here's a run-down of the options presented:
- Restart level
- This is the option of choice when you screw things up! It will reset the level to the way it was
when you first saw it, and in the process reset your movement count to a big 0.
- Goto level XX
- This item allows you to instantly move between the levels in the game. Move the arrow to this
line, and use the left and right directional buttons to change the number shown. When the correct
number is displayed, press SELECT to begin playing it!
- Abort game
- Selecting this brings you back to the Title Screen. Enjoy, but be careful since there is
no verification or anything. It just happens!
- Continue game
- Select this one to continue play where you left off. An easier way is to simply press START again,
since if the menu is open, doing so hides it.
Obsession Development's SokoBan for GameBoy was developed under Linux 2.0.29 and 2.0.30, using the
Virtual GameBoy GameBoy emulator by Marat Fayzullin (core emulator), Marcel de Kogel (MS-D*S version),
Thierry Lescot (SVGA-lib version) and Hans de Goede (additional features). All code was written using the jed
editor by John E. Davis. Assembling, linking and "fixing" of the code was done using the tools from RGBDS v1.06
by Carsten Sorensen. The levels (all 49 of them) were "borrowed" from the Amiga game BoxMan (part of
WBGames, which, incidentally, was written by Marat Fayzullin!). I hope that doesn't upset anybody...
Mindnumbingly useless project facts:
Actually, I'm pretty sorry there's no bopping music and banging sound F/X to listen to while playing this game,
but hey - give me a break, huh?! I haven't even been programming this little thing for a week yet, and I have
absolutely no experience when it comes to sound generation (other than playing samples on the Amiga)!
If you feel that you have the know-how not only to compose great music for the GameBoy, but also to provide
perhaps some replay code, feel free to contact me about it!
If you think this game looks more like a demo on, say, the Amiga(TM) than a proper GameBoy game, you just may be
right... ;^)That is because I once was an Amiga demo programmer; perhaps some of you are old/experienced/cool
enough to even remember somebody called WIZEX who wrote some neat demos/intros/fluortablettros for an Amiga
group named OXYGEN in the early nineties - that's me!!
If you feel like getting in touch with me, for any (approximately serious, please - I get more than enough junk
already!) reason please don't hesitate to mail me directly at emil@obsession.se.
Also, you can visit our company pages at www.obsession.se, perhaps there's a more
recent version of this game there?
Although I (for legal reasons) can't suggest that you try this game on an actual GameBoy (by burning your own
EEPROM version - it's only 32KB), I would be very much interested in hearing about any attempts--by responsible
persons who have read the Legal Notice--to do so.
Oh, well. I guess I have to wrap this up now. What else can I say? Nothing special, except that I think programming the
GameBoy has been a lot of fun. I won't make any promises, but don't be surprised if more stuff comes along...
Last updated 2002-08-07 by Emil Brink, author.