MAIN.EXE

From LEGO Island Wiki
Jump to navigation Jump to search

MAIN.EXE, also known as ISLEMFC.EXE in Beta 9.0, was the original game executable used for LEGO Island during its development. It shares all of the features of ISLE.EXE but includes a number of development and debugging features that were excised from the final release.

Details

ISLEMFC.EXE, like ISLE.EXE, is a frontend to the main game (LEGO1.DLL). However upon opening, it appears to do nothing. Because of this, it was initially thought to be an aborted attempt to port the main game executable to MFC (which CONFIG.EXE and LEGOISLE.EXE are based on). A disassembly of ISLEMFC's main loop appeared to confirm this, since it didn't seem to call any LEGO1.DLL functions automatically. However, further exploration uncovered that ISLEMFC.EXE takes command line arguments and, when used correctly, is actually a fully featured game executable with additional debugging and development functionality.

Command line arguments:

/FS			- fullscreen (default)
/NFS			- windowed
/FLIP			- use display surface flipping
/NFLIP			- use display surface blit (default)
/SMEM			- back buffer in system memory
/VMEM			- back buffer in video memory (default)
/D8			- 8 bit display depth (full screen only)
/D16			- 16 bit display depth (full screen only)
/RGB			- use rgb color model (software rendering only)
/RAMP			- use mono ramp mode (software rendering only)
/USEHW			- use 3d hardware if available
/NWIDE			- use narrow view angle
/3DSOUND		- use 3d sound
/SCRIPT <filename>	- auto load startup script
/RAMSTREAM		- stream <filename> from ram (default)
/DISKSTREAM		- stream <filename> from disk
/ACTION <num>		- start action <num> in <filename> (default is 0)
/HELP			- display this message

If a 3D accelerator is identified, it will be used if USEHW is specified.
RGB color model is always used with hardware 3D.
Only 8 and 16 bit display depths are supported.

Therefore it is now understood that ISLEMFC is actually an older executable used during development. In fact, it appears to be a direct descendant of the 1996 source leak's MAIN.EXE. Examining ISLEMFC's resources shows that it contains many of the dialogs, though they seem to be inaccessible now due to the removal of the context menu from MAIN.EXE. It may be possible to access many of these functionalities if that menu can be restored.

The fact that ISLEMFC is an earlier executable is backed up by the Beta 6.0 changelog, which makes an explicit reference to it:

MFC removed from isle.exe - No more debugging dialogs.

ISLEMFC.EXE may have initially been called ISLE.EXE, and later renamed when the Win32 only ISLE was introduced but kept around for debugging purposes.

ISLEMFC.EXE contains many debugging strings not present in ISLE.EXE. For example, while ISLE.EXE will run with multiple various glitches if the host display is set to 32-bit color while in windowed mode, ISLEMFC throws an explicit error:

File:Islemfc-32b-error.png

For these reasons, ISLEMFC seems to be a more "complete" executable. It's unclear why it was replaced in the final game. Perhaps a full MFC application with all of their debugging tools was considered too resource and/or storage heavy for a simple frontend.

Commands

ISLEMFC can be made to load the game with the following command line (replace H: with the drive letter LEGO Island is inserted in):

ISLEMFC /NFS /RAMP /ACTION H:\Lego\Scripts\Isle\ISLE.SI

ISLEMFC can also be made to run arbitrary entries in any SI file. For example, this will play the first song in JUKEBOX.SI:

ISLEMFC /NFS /RAMP /ACTION H:\Lego\Scripts\Isle\JUKEBOX.SI