Safrosoft RoX (Portable Edition)

Safrosoft RoX is a great freeware clone of Boulder Dash and Supaplex, created by Dmitriy and Ilya Safro between 2001 and 2003. I first encountered this game on a June 2002 CHIP magazine CD. It immediately won a place in my heart.

The game was developed using Visual Basic 6 and DirectX 8, an unusually rare combination of technologies. While Microsoft still supports the VB6 runtime in modern Windows, the dx8vb.dll, which made DirectX 8 available for VB games, has been removed since Windows Vista. It broke RoX.

It's possible to obtain this DLL from Windows XP and install it globally on modern Windows using regsvr32 dx8vb.dll to fix the issue. This method has been used by people all these years. However, using an application manifest with registration-free COM entries allows to avoid making changes to the OS and makes the game portable.

Creating a manifest to achieve the desired was quite challenging. I worked on it in 2019 and managed to complete the portable version of the game at that time. I also wanted to develop a larger patch with additional improvements. I experimented with changing game resolution, but the project stalled at that stage and has been on hold since then. I might return to creating a bigger patch in the future, but for now, I've decided to publish the portable edition of the original game version.

Download v1.3.0: rox_portable_v130.7z (5MB).
Download v1.4.0: rox_portable_v140.7z (8MB).

Both v1.3 and v1.4 are provided due to their significant differences, as some users might prefer the original v1.3.

  • v1.3 was released on 2002/08/06 on safrosoft.com.
  • v1.4 was released on 2003/10/02 on vbgamer.com after safrosoft.com was shut down.
  • v1.3 is essentially the original v1.0 with numerous critical bug fixes but no updates to the level data.
  • v1.4 includes updated level data, with 5 levels replaced.
  • v1.3 uses a black background and selects a random color scheme for each level on every restart.
  • v1.4 uses a background picture (which might be distracting) and a preselected color scheme for each level.
  • v1.3 retains the original v1.0 music (a menu track and 3 gameplay tracks), but the volume was lowered in v1.2.
  • v1.4 replaces all 3 original gameplay music tracks with 4 new ones, though the old tracks can still be manually added back.
  • v1.3 always runs in fullscreen mode.
  • v1.4 can run in windowed mode but prompts you to choose between fullscreen and windowed mode every time the game starts.
  • v1.3 is playable on modern systems, but might freeze on exit (if you press any button too early).
  • v1.4 has this bug fixed, and probably includes some other bugfixes.

Whichever version you use, note that the .exe.manifest files must match the filenames of their corresponding .exe files. If you rename one, you must rename the other as well. Also, Windows caches exe manifests until a reboot. If you make any changes to a manifest, you must either reboot your system, or move the files to a different location to prevent the old cached manifest from being used.

Timeline of Original Releases

RoX uses an unconventional versioning scheme where v1.13 means v1.1.3, so v1.13 is actually older than v1.4. I have kept the original 1.XY version numbers in the quoted release notes.

[2002/01/24]
RoX and Editor code complete. New levels have been made and sorted out by difficulty. Final touchups were made. RoX is up for download.

[2002/01/30]
RoX version 1.01 Patch Update is released. RoX freezing bug has been fixed. Minor bugs fixed in the Editor.

[2002/02/04]
RoX version 1.11 Patch Update is released. Speed bug has been fixed and other minor problems have been corrected. Editor has been updated. Download the patch from the RoX page.

[2002/02/13]
RoX version 1.12 Patch Update is released. More bugs have been fixed, including Unid Count bug. Also dome optimization were made. Editor has been updated to version 2.3. Download the patch from the RoX page.

[2002/02/20]
RoX version 1.13 Patch Update is released. Some More bugs have been fixed. Download the patch from the RoX page.

The first version of RoX was released in January 2002, followed shortly by a few patch releases. 5 releases in a single month!

I didn't manage to find the very first version. I found the original installers for v1.11 and v1.13. Based on the release notes and game file dates, it is clear that there were no changes to the game levels or music, the updates are bugfix only.

The original v1.13 installer also included the Addedcheesse1.clvl and Just Eat it!.clvl level packs that were created by players. The very next release removed them and all the following releases didn't include any third-party level packs.

[2002/04/08]
Finally, a brand new music add-on from Ilya is here. Download it from the RoX page.

[2002/04/22]
There's a new version of RoX available, 1.2. Download it from the RoX page.

[2002/05/10]
For all the level makers out there, a fixed version of the editor is available. The game and editor version numbers are the same, so re-download the same patch, now you can load and save levels with no problems.

The v1.2 was released after a couple of months. There was also new addon game music available for download (Track04.mixTrack06.mix), but the game installer still included only the original music tracks (Track01.mixTrack03.mix) which were simply made a bit quieter. The v1.0 tracks were too loud and suffered from clipping. Unfortunately, the new quieter versions are not remasters; they were created from the original clipped tracks, so the clipping issue remains.

[2002/08/06]
A new version of RoX is complete and available to download. Get RoX 1.3 from the RoX page and enjoy the fixes it offers. Also, a brand new soundtrack for RoX has been made, you can also get it from the RoX page. Another "Also" - 5 more level collections are here, including AC8, so kick yourself in the groin and enjoy all the goodies we have to offer.

Many more bugs have been fixed including:
- Projectile Fix.
- Speed Fix.
- Texture Filtering Fix.
- Door Switch Fix.
- Invincibility Fix.

Plus many more non-vital fixes were implemented.

The v1.3 was released after 3 months, and included a large number of critical bugfixes. It's the first version of the game that can run reasonably well on a modern computer without requiring ugly hacks. A new addon music track (Track07.mix) was available for download, but the game installer still included the original 3 tracks only. It is the last version of the game that uses the original level pack from the v1.0.

[2003/03/24]
We are currently working on RoX GOLD, which will include new graphics, music, levels, and tiles. The new version will use the same engine.
Once again, thanks for being patient with us, and thanks for the great support!

The RoX GOLD was announced next year. Unfortunately, it didn't happen. The safrosoft.com was quickly abandoned and became offline in a few months. Eric Coleman from vbgamer.com contacted Dmitriy Safro:

[2003/09/29] Eric Coleman (source):
I talked to Dimitry last night and he's been too busy with school to work on or support Rox. VBGamer will be a mirror for the game, so don't worry, the game won't be lost forever. I'm just waiting for an email from Dimitry so I can get the latest version, which is 1.4. All is not lost :)

[2003/10/02] Eric Coleman (source):
VBgamer is now a mirror for RoX version 1.4, plus a level pack of 108 extra levels. Version 1.4 has some new music tracks, so take a look! You can download them from the Files section.

This is how we got v1.4. The installer includes all the addon music tracks (Track04.mixTrack07.mix), but not the original ones (Track01.mixTrack03.mix). The original level pack was updated, 5 levels were replaced by new ones. More details about RoX v1.3 vs RoX v1.4 are in the first part of this article.

Download originals: rox_originals.7z (35MB).

This is my collection of original installers, along with their extracted game files for convenience. All files retain their original timestamps, which is useful for digital archaeology. Unfortunately, a few of the earliest versions are missing (v1.0, v1.01, v1.12) and are likely lost to time.

Interesting Findings

The game developer documented some built-in cheats:

Are there any cheats?
We do have some things for you to play around with. Pressing F12 will toggle the FPS counter. Pressing F11 will toggle a menu-like background to each level. We have no idea what pressing Insert and Delete will do!? You can expand the music playlist by dropping MP3 files into the music folder. Pressing ENTER on PLAY,in the main menu, while holding ESCAPE will make all levels available.

The Define.saf is actually a password-protected MDB database. Use MDB Viewer Plus to inspect it. The password is ss224321.

The music files are dated 2001/10/26 and 2001/11/10, and some tables in the MDB database are dated 2001/09/27, so the game was already well into development around that time.

While making the portable version, I noticed that msjter35.dll in the original installer has some garbage after the original file data. Looks like the developer had a filesystem corruption, and a few clusters from other files were added to the end. There is a fragment of Track03.mix, a copy of stdole2.tlb, and a copy of the source installation script:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=Safrosoft RoX
AppVerName=Safrosoft RoX 1.0
AppPublisher=Safrosoft
AppPublisherURL=http://www.safrosoft.com
AppSupportURL=http://www.safrosoft.com
AppUpdatesURL=http://www.safrosoft.com
DefaultDirName={pf}\RoX
DefaultGroupName=Safrosoft RoX
AllowNoIcons=yes
LicenseFile=E:\Safrosoft\projects\rocks\release\License.txt
;InfoBeforeFile=E:\Safrosoft\projects\rocks\release\Design Doc.txt
;InfoAfterFile=E:\Safrosoft\projects\rocks\release\Design Doc.txt
; uncomment the following line if you want your installation to run on NT 3.51 too.
; MinVersion=4,3.51

[Tasks]
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4

[Files]
Source: "E:\Safrosoft\projects\rocks\release\RoX.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\Define.saf"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\RoX.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\RoX.pak"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\Rox Editor.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\Levels\*.*"; DestDir: "{app}\Levels"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\Music\*.*"; DestDir: "{app}\Music"; CopyMode: alwaysoverwrite
Source: "E:\Safrosoft\projects\rocks\release\License.txt"; DestDir: "{app}"; CopyMode: alwaysoverwrite


; begin VB system files
; (Note: Scroll to the right to see the full lines!)
Source: "E:\Safrosoft\projects\rocks\release\stdole2.tlb";  DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regtypelib noregerror
Source: "E:\Safrosoft\projects\rocks\release\msvbvm60.dll"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\oleaut32.dll"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\olepro32.dll"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\asycfilt.dll"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile
Source: "E:\Safrosoft\projects\rocks\release\comcat.dll";   DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall sharedfile regserver noregerror
; end VB system files

Source: "E:\Safrosoft\projects\rocks\release\Dao350.dll"; DestDir: "{dao}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\Dao2535.tlb"; DestDir: "{dao}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile regtypelib noregerror
Source: "E:\Safrosoft\projects\rocks\release\VB6stkit.dll"; DestDir: "{sys}"; CopyMode: alwaysoverwrite

Source: "E:\Safrosoft\projects\rocks\release\MSREPL35.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile noregerror
Source: "E:\Safrosoft\projects\rocks\release\MSRD2X35.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\expsrv.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile noregerror
Source: "E:\Safrosoft\projects\rocks\release\vbajet32.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile regserver noregerror
Source: "E:\Safrosoft\projects\rocks\release\MSJINT35.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile noregerror
Source: "E:\Safrosoft\projects\rocks\release\MSJTER35.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile noregerror
Source: "E:\Safrosoft\projects\rocks\release\MSJET35.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: uninsneveruninstall sharedfile regserver noregerror

[Icons]
Name: "{group}\Safrosoft RoX"; Filename: "{app}\RoX.exe"
Name: "{group}\Safrosoft RoX Editor"; Filename: "{app}\RoX Editor.exe"
Name: "{userdesktop}\Play Safrosoft RoX"; Filename: "{app}\RoX.exe"; MinVersion: 4,4; Tasks: desktopicon

[Run]
Filename: "{app}\RoX.exe"; Description: "Launch Safrosoft RoX"; Flags: nowait postinstall skipifsilent

So, the game had a Design Doc.txt, and the developer used rocks as the project directory name. Somehow, I hadn't noticed before that RoX is actually a fancy spelling of Rocks, which makes perfect sense for this game.

Links

Comments are temporarily closed. Refresh this page in a minute.