We just moved to a different server. Please be patient until all files and pages are restored and the MediaWiki software has been updated. Thank you

Lotus III: The Ultimate Challenge

From REWiki
Jump to: navigation, search

The Game

This is an amazing race game from early 90's. Player can choose one of three lotus cars (Esprit S4, Elan SE, M200) and challenge on almost ten tracks.


The game consist of just two files -- lotus.exe and lotus.dat. Size of exe file is only 4992 bytes. It is a tiny loader that contains couple movsw's and load code data from lotus.dat to the code segment. After those moving operations, loader jump to the newly created code.


This file contains code mixed with game data. Almost 2kb from beginning of file is the resource table. Items in this table are of the following format:

struct TableItem
	char[3] id;
	char[5] space;
	Uint16 dataOffset;

In order to load item "I22" we must find item with id = "I22" and multiply it's dataOffset (in this case, 0x01E7) by 512 (or shift left 9 bits). So the file offset of data is 0x3CE00. This implies that all data items are a multiple of 512 bytes long. The entries are sorted, so to get the number of bytes to read, we must compare it's data offset to that of next item ("Q00"). The difference is the number of bytes to read.

By the way, "I22" is the id for an image with 12 helmets (those helmets are the part of protection routine). I think that protection was broken right after game release.

Personal tools