GP-YASC (Yet Another Sokoban Clone)
Written by Tommy Widenflycht
IRC: CMOTD on #gp32dev @ EFnet

Sokoban is a classic puzzle game invented in Japan by Thinking Rabbit. Sokoban is japanese for "Warehouse Guy" and the object is to push the boxes scattered around to their correct places. The objective is simple but the puzzles can be extremely hard to solve.

There are many different implementations avaliable for almost all computer systems, including another implementation for the GP32.

So why yet another Sokoban clone? Several years ago I used to write multi-platform software for a living and got the idea to make a portable object-oriented Sokoban engine in C++ as an exercise. That idea became YASC and a little by little the engine evolved. Today it contains almost all of the features I want, and I recently discovered the GamePark GP32 handheld device. The result? I am releasing a public version for the first time! Personally I think the GP32 is the perfect Sokoban device: Portable, big nice colour screen, storage possibilities & a fast enough processor.

This is released as HappiWare: If you like it remember to smile.

The YASC engine have unlimited undo/redo, import of text files with levels, path-finding, score file management including solution saving/loading in LuRd format etc. Really the only big feature missing is level solving... Maybe later ;-)

So far YASC have been ported by me to the classic MacOS, Windows, WinCE 2.11, PocketPC & GP32 (basically all computer systems I have owned). I never got around to publish any of these ports so please don't ask.

GP-YASC is developed on MacOS X, using the gcc C/C++ distribution from Mr. Spiv. Thanks! Mac rulez.

If you have any questions regarding C++ development on GP32 don't hesitate to ask.

How to play

Press any key on the title screen, select a skin and then select a level set/file. The goal is to push all the treasures into their correct places. Treasures can only be pushed and not dragged, only one treasure at a time can be pushed. Pushing is accomplished just by moving into a treasure.

How to install

Just copy the files to the corresponding directory on your GP32.

Controls

Joystick Move/push
A Undo
Right flipper + A Redo
B Store/goto position (Teleport!)
Left flipper + left/up/right/down Move as far as possible without pushing. (Express move!)
Right flipper + Left flipper Restart level (with undo buffer still intact)
Right flipper + Right Go to next level
Right flipper + Left Go to previous level
Right flipper + Up Go to next unsolved level
Right flipper + Down Go to previous unsolved level
Start Main menu
Select Shows level status while hold down

Teleporting

Pressing the left flipper stores the position of the man and when pressing left flipper a second time the game will try to move the man back to the saved position if possible. My pathfinding algorithm alwas finds the shortest path! A star in the top left corner indicates that a position is stored.

Saved solutions

YASC saves the solutions in a file with the same name as the level file but in the SAVES directory. Both a best moves and a best pushes solution is saved. The solutions is stored in the LuRd format, se below.

Loading a solution

When you load a solution the level is in solved state. Just press the undo button (A) and the solution will be played back to you backwards. Of cource you can restart the level and then redoing with (B).

The LuRd format

A saved solution consists of a series of characters l, u, d & r. Each character denotes a move in the corresponding direction if lowercase otherwise a push. For example lUUruL means move left, push up, push up, move right, move up & finally push left.


This is a development release and does not include all features yet, especially the GUI is very rudimentary. The GUI and skin loading code is not very fault tolerant either.

What's new in DR4:

What's new in DR3:

What's new in DR2

What's new in DR1

What's coming later

Greetings

Thanks goes to Mr. Spiv for the gcc distribution and the cruncher. Hi to clemmy and the other regulars on #gp32dev.

Tommy Widenflycht
Antibes, France, Europe in September 2002