A downloadable game

Download NowName your own price

SOKO64+ is a  game written in ugBASIC and that runs on various 8-bit home computers like AMSTRAD CPC 664, ATARI 400/800, ATARI XL/XEGS, COLECOVISION, COMMODORE 128, COMMODORE 64, DRAGON 32/64, MSX, OLIVETTI PRODEST PC128, SEGA SG-1000, THOMSON MO5, THOMSON TO8,  TRS-80 COLOR COMPUTER 1/2/3, ZX SPECTRUM 48K.


Sokoban (Japanese: 倉庫番 or "warehouse keeper") is a puzzle-type video game in which the player pushes crates through a maze and tries to place them in their assigned location. It was created in 1980 by Hiroyuki Imabayashi and it has been ported for numerous platforms, especially home computers and personal computers. 

GAME PLAY

The player controls a character who can move in four directions within a closed area, with an irregular and different shape at each level. 

The area is ideally divided into square boxes and the character moves from one box to another. Crates are scattered around the area, the number of which varies depending on the level; the character can push a crate by moving towards his square, if there is free space behind it. 

Only one crate can be pushed at a time, no multiple crates in a row, and crates cannot be pulled. Some boxes, equal in number to the crates, are marked with markers and represent the objectives: to complete a level the player have to push the crates until they occupy all the indicated positions

The player can move the character using first available joystick (on all targets but Thomson, Olivetti Prodest and Zx Spectrum) or using the arrow keys on the keyboard.

The player could easily end up in dead-end situations, for example if he/she pushes a crate against a corner so that it will be impossible to move it further. In this version, if the player gets stuck, all he/she have to do is give up and start the level over again. By pressing FIRE on joystick or SPACE on keyboard, and then UP, you can repeat the current leve. Otherwise, you can move forward or backward on levels.

ORIGINAL VERSION 

SOKO64 is the original version written by Emanuele Feronato in ugBASIC and it was developed for the Commodore 64 target (c64). It includes 64 8x8 tricky levels by David Skinner. All levels are unlocked from the beginning, for you to try them all. Solved levels will be marked with green. 

SOKO64+ is a new version of the same game by Marco Spedaletti: starting from that source code , in order to run on many ugBASIC's targets, with just a single source code.

The source code is available on this repository.

HOW MUCH HAS ugBASIC HELPED?

This cross-platform game would not have been possible without using ugBASIC: it is an isomorphic language and it has cross compilers that works on Linux and Windows, that directly converts high level algorithms into the assembly equivalent for the given CPU / computer.


ugBASIC is able to handle graphics with double buffering, to use directly PNG/JPG and other standard image formats, to manage additional RAM banks, to read multiple keyboard keys at the same time and to do inline assembly. The labor and time saving is such that it allows to create professional and high performance games in a short time.

Developing for multiple platforms requires very little effort because the source does not have to be adapted or, like this case, it can be adapted limited to the hardware dependent aspects. 

With a single source code you can obtain programs for multiple retro computers, even very different from each other. Moreover, each target can have a dedicated optimizer, which allows to achieve very interesting results while leaving the BASIC code fully readable. 

StatusReleased
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
Authorspotlessmind1975

Download

Download NowName your own price

Click download now to get access to the following files:

SOKO64+ for Amstrad CPC 664 (dsk) 190 kB
SOKO64+ for ATARI 400/800 (atr) 90 kB
SOKO64+ for ATARI 400/800 (xex) 23 kB
SOKO64+ for ATARI XL/XEGS (atr) 90 kB
SOKO64+ for ATARI XL/XEGS (xex) 23 kB
SOKO64+ for COLECOVISION (rom) 32 kB
SOKO64+ for COMMODORE 128 (d64) 170 kB
SOKO64+ for COMMODORE 128 (prg) 21 kB
SOKO64+ for COMMODORE 64 (d64) 170 kB
SOKO64+ for COMMODORE 64 (prg) 46 kB
SOKO64+ for DRAGON 32 (bin) 15 kB
SOKO64+ for DRAGON 64 (bin) 15 kB
SOKO64+ for MSX (rom) 32 kB
SOKO64+ for OLIVETTI PRODEST PC 128 (k7) 20 kB
SOKA64+ for SEGA SG-1000 (rom) 24 kB
SOKO64+ for THOMSON MO5 (k7) 20 kB
SOKO64+ for THOMSON TO8 (k7) 20 kB
SOKO64+ for TRS-80 COLOR COMPUTER 1/2 (bin) 16 kB
SOKO64+ for ZX SPECTRUM 48K (tap) 19 kB
SOKO64+ for TRS-80 COLOR COMPUTER 3 (bin) 17 kB
SOKO64+ for TRS-80 COLOR COMPUTER 3 (dsk) 157 kB

Comments

Log in with itch.io to leave a comment.

Any plans to port it to PC-8801, Apple II and VIC-20?

Hello Aklim95, and thank you for the comment. :)

Actually, it all depends on the porting of ugBASIC. The Apple II and PC-8801 targets are in the roadmap, so as soon as they are available I will try to recompile the source "as is", to check if the performance is satisfactory. 

As for the VIC-20, I think that some optimization is still needed in the amount of assembly code generated, but I do not despair that it is possible. Moreover, the "tile" technique marries very well with the implementation on the VIC-20.

The targets foreseen in the roadmap can be found here:
https://ugbasic.iwashere.eu/targets

Thank you again, and have fun! 

The MSX .DSK doesn't seem to work. It should be  360Kbyte (Single Sided) or 720Kbyte (double sided) file.

Hi The File-Hunter, first of all thank you so much for the feedback! Actually, I removed the disk image because it is not working. I'm delving into why. In the meantime, you can use the ROM image since it works fine. Thank you again for the report, and I apologize for the issue.

No need to apologize at all!
People like you are keeping our old computer systems alive, so we can only be thankfull for that :)

Game is good, but i recognized one strange thing. When it comes to the C64 version of the game, the reaction-time of the player-sprite, when the user controls it with a joystick/joypad, is much better in the older C64 version of "Soko64" from Emanuele Feronato. I compared both versions in two emu-windows side by side and controlled the sprite in both emulators at the same time by using the same controller. Then this can be seen easily. Can something be done, regarding this point in "Soko64+"? I ask, because it feels much better in direct comparison, when the player-sprite reacts immediately to inputs and not only after a short delay.

Hi Sparky-D, first of all thank you so much for the comment and compliments. There is actually a difference in the control mechanism between the original version and the plus version.

In the original version, by leaving the joystick in the same direction, the character moves in the indicated direction as if joystick were moved repeatedly. On the contrary, in the plus version the system waits for the finger to lift from the button from the keyboard or the the joystick come back to the original position.

The ugBASIC language, being isomorphic, does not present an abstraction for the input and therefore gives direct access to the I/O subsystem. Wanting to write a single source, I therefore opted for this different approach by virtue of the numerous, and differentiated, input methods present on the various computers.

Fixing the problem shouldn't be difficult, and it will definitely be one of the improvements in the next version. Since I would like to stay on the single source valid for all computers, a certain period of testing will certainly be necessary. As soon as the new version is ready, I will update it on this page.

Thank you again for the suggestion, and have fun! 

(4 edits)

Hello. Thanks for your fast answer. Yes, i already had recognized, that there is also a difference in the control-mechanism and that in the new version, you must make single steps, while in the older version, you can hold the stick in a direction and the character moves constantly in this direction then. Also this point, i find better in the older version, because this is, what players are used to, from the vast majority of other games. This single-step thing takes a little getting used to, if you ask me.

But this point was not the main-reason, why i mentioned this thing. The main-reason for me was, that the first movement of the player-sprite, when you steer on the joystick in one direction, happens much faster in the older "SOKO64" version, compared to the new version. In "SOKO64+" it feels a bit, like if the game would have a lag in the input-reaction-time and this feels not really good. In games, you normally want to have a very direct and quick control of your own sprite, for best playability. But very good, that you think about changing this, in the next release. Always nice, when programmers react to the input of users and don't stubbornly do their own thing. Looking forward to this next version. Best regards.

Cool!
Enterprise 128k version is possible?

Hi SlashNet, and thank you for the comment!

Not actually because ugBASIC does not support this model of computer, yet: however, it is possible that it may do so in the future. 

The source code was written without dependencies on any specific hardware, and so it should be easy to port it to Enterprise 128, when it will be supported.

Click here to see what hardware is supported by ugBASIC, and there is also a roadmap of future developments.

I will be waiting for support for this platform in your software.

As a child, I loved programming in Enterprise's built-in BASIC.

But now it’s more difficult to force yourself to do it using the classical method. There are several ideas that I would like to implement in own small games.

I would be interested in a version for Commodore vic-20 🙂