This repository contains the source code of the game Brick Blaster (Media Pocket 1999) including WinEOS 4.00 Alpha and instructions on how to build it.
This game was made using a custom DOS extender called EOS (Eclipse Operating System) which was adapted to make Windows applications with DirectX support hence WinEOS.
The compiled blaster.exe from the given source code was not exactly matching the released version but the small changes have been included by comparison of disassemblies. The differences were mainly related to the length allowed for some texts that needed to be longer for translations which also involved fixing a few coordinates values.
Several minor things were changed in makefiles and the build.bat script was created for an easier building process.
The unmodified game sources (including WinEOS ones) as well as EOS 3.05 and 3.06 can be found in this repository: BrickBlaster-EOS-Archive
Also, here are links to download the game:
- French commercial release: https://archive.org/details/brick-blaster-1999
- Spanish commercial release: https://archive.org/details/brick-blaster-1999-spanish
- Built from these sources: https://github.com/david4599/BrickBlaster/releases/latest
- Watcom 11.0B: https://winworldpc.com/product/watcom-c-c/110b
- DirectX 6 SDK: https://archive.org/details/directx6sdk
To avoid conflicting with other tools (make, etc), their installation is not needed.
-
Extract the following files from the Watcom 11.0b ISO located at
WATCOM_C11B\binnttoRESOURCE\watcom:lib.exelib386.exe(Watcom C/C++ LIB Clone for 386 Version 11.0)link.exelink386.exe(Watcom C/C++ LINK Clone for 386 Version 11.0)rc.exe(Watcom C/C++ RC Clone for 386 Version 11.0)wcc386.exewccd386.dll(Watcom C32 Optimizing Compiler Version 11.0)wlib.exewlibd.dll(Watcom Library Manager Version 11.0)wlink.exewlink.dll(Watcom Linker Version 11.0)wpp386.exewppd386.dll(Watcom C++32 Optimizing Compiler Version 11.0)wrc.exe(Watcom Windows Resource Compiler Version 11.0)
-
Extract the following folders from the Watcom 11.0b ISO to
C:\watcom:WATCOM_C11B\hWATCOM_C11B\lib386WATCOM_C11B\mfc
-
Execute the DirectX 6 SDK self-extracting archive and extract the files.
-
Copy the following folders from the extracted DirectX 6 SDK files to
C:\mssdk:DIRX6SDK.98\includeDIRX6SDK.98\lib
-
Add the Watcom and DirectX SDK environment variables (in "USER" part on Windows XP and up):
WATCOM->C:\watcomDXSDKROOT->C:\mssdkINCLUDE->C:\mssdk\include;C:\watcom\h;C:\watcom\h\nt;C:\watcom\mfc\include;(make sure mssdk path is set before watcom ones)LIB->C:\mssdk\lib;C:\watcom\lib386;C:\watcom\lib386\nt;
-
Open
cmd.exe(orcommand.comfor Windows 98 or less) and run:build.bat make complete(see help by runningbuild.bat helpfor more build options). -
The built game is now located at
Blaster\packand ready to be launched :)
These following patches were made in the source files to be able to run the game on recent Windows versions:
- In FILE.ASM,
Init_Fileroutine:mov ecx,800hwas replaced bymov ecx,8000h.- Issue: This routine searches and saves the full path of blaster.exe which is stored just after the environment variables list in memory.
To be able to get this path, the routine gets the env vars list's beginning and runs through it until reaching a null word i.e. the end.
Due to how worked old Windows versions, a limit of 2048 characters was set in the list counting loop and the game exits if this limit is exceeded.
On a fresh Windows installation, this will not be an issue but installing apps will grow the list and the limit will be reach (see result of
setin a command prompt). - Solution: Setting an arbitrary higher limit e.g. 32768 (0x8000) does the job.
- Issue: This routine searches and saves the full path of blaster.exe which is stored just after the environment variables list in memory.
To be able to get this path, the routine gets the env vars list's beginning and runs through it until reaching a null word i.e. the end.
Due to how worked old Windows versions, a limit of 2048 characters was set in the list counting loop and the game exits if this limit is exceeded.
On a fresh Windows installation, this will not be an issue but installing apps will grow the list and the limit will be reach (see result of
- In MAIN.ASM,
init_randomroutine:out 70h,alandin al,71h(2 occurrences each) were commented.- Issue: For initializing the random number generator (RNG) used in several parts in the game, the I/O instructions
inandoutwere used to talk directly to the hardware and retrieve the current number of seconds in the CMOS RTC. These instructions are called privileged and are not accessible to the user on modern Windows versions. If used, they will crash the game and throw a Privileged Instruction Exception (0xC0000096). - Solution: Since these instructions are used only for the RNG which is not critical in the game, they can be simply commented.
However, instead of altering the RNG, another solution would be to enable the
Windows 98 / Windows Mecompatibility mode in blaster.exe properties (actually discovered after making the patch).
- Issue: For initializing the random number generator (RNG) used in several parts in the game, the I/O instructions
-
When launching Brick Blaster in VMware (and maybe other virtualization softwares), 3D acceleration in the virtual machine's display settings may need to be enabled. Otherwise, the game may crash with an Access Violation Exception (0xC0000005). Using dxdiag.exe, under Display tab -> Drivers, check if the DDI version is a number. If "unknown" is displayed, try to enable the 3D acceleration.
-
For Windows Vista and up, color problems may happen. In this case, under blaster.exe properties -> Compatibility tab, tick these checkboxes:
- Run in 256 colors
- Run in 640 x 480 screen resolution
- Disable desktop composition
-
It may be possible that depending on the audio hardware or driver configuration, the game may crash due to an error with DirectSound (dsound.dll). An Access Violation Exception (0xC0000005) error screen may appear or not. To fix this issue, VDMSound 2.0.4 can be installed. Right click on blaster.exe and select "Run with VDMS".
The last version 2.1.0 also works but it has to be loaded manually (see its readme) as the "Run with VDMS" option in explorer's context menu seems to not appear (?). Also, VDMSound is a 16-bit app and can only be run under 32-bit versions of Windows as the 16-bit support is removed from the 64-bit versions. However, this can be fixed by installing NTVDMx64. The compiled and ready to install files can be downloaded here.
-
Some required tools (installed in
RESOURCEfolder) have already been included to simplify the building steps:diet.exe(Version 1.45f) from EOS 3.05 or 3.06 (Eos305\RESOURCEorEos306\RESOURCE), used to compress filesmake.exe(Version 5.2) from Borland C++ 5.5 - (Borland C++\Borland\BCC55\Bin)tasm32.exe(Version 5.0) from Borland Turbo Assembler (Borland Turbo Assembler 5.0 (3.5-1.44mb)\disk02.img\CMD32.PAK(img and pak files can be opened with 7zip))msdos.exe(MS-DOS Player for Win32-x64, Version ia32_x86, 7/1/2022), for running 16-bit DOS apps diet.exe and llink.exe under recent Windows versions
-
The sounds, musics and videos were made in file formats that are less commonly used nowadays but they can be read with these softwares:
- IFF sounds: Fasttracker II clone. To play them at the correct tone/speed, in the bottom-left corner of the sample editor, change the key to G#4.
- MOD musics: OpenMPT. Some effects need to be tweaked. Go to View tab -> Setup -> Mixer tab and set the "Resampling Filter" option to "No interpolation". Also, set the "Stereo Separation" to 200%.
- FLC videos: VLC player works even though blaster.flc seems to be not well decoded and plays poorly.
-
The built version is in French but the files
Blaster\Blaster_en.cfgandBlaster\Blaster_es.cfgcontain the translations for English and Spanish languages. For instance, to change to English language, simply renameBlaster\Blaster.cfgto e.g.Blaster\Blaster_fr.cfgandBlaster\Blaster_en.cfgtoBlaster\Blaster.cfg. -
Build and execution are compatible from Windows 95 to Windows 11.
- Members of the Eclipse demomaker team:
- Rez (Christophe Résigné) - Musics
- Profil (Frédéric Box) - Graphics
- Hacker Croll (Marc Radermacher) - Code (Brick Blaster + WinEOS)
- Light Show (Régis Vidal) - Code (WinEOS)
- Video game company Carapace (Softplace)
- Video game publisher Media Pocket
A big thanks to the author Marc Radermacher (website) for kindly providing the source code of this awesome game and allowing to preserve it!
david4599 - 2024
