diff options
| -rw-r--r-- | engines/lab/savegame.cpp | 6 | ||||
| -rw-r--r-- | engines/lab/special.cpp | 24 | 
2 files changed, 9 insertions, 21 deletions
diff --git a/engines/lab/savegame.cpp b/engines/lab/savegame.cpp index 5cf0674852..4d40540ce4 100644 --- a/engines/lab/savegame.cpp +++ b/engines/lab/savegame.cpp @@ -219,7 +219,7 @@ bool loadGame(uint16 *RoomNum, uint16 *Direction, uint16 *Quarters, int slot) {  			CurTile[i][j] = file->readUint16LE();  	// Breadcrumbs -	for (i = 0; i < sizeof(BreadCrumbs); i++) { +	for (i = 0; i < 128; i++) {  		BreadCrumbs[i].RoomNum = file->readUint16LE();  		BreadCrumbs[i].Direction = file->readUint16LE();  	} @@ -227,10 +227,10 @@ bool loadGame(uint16 *RoomNum, uint16 *Direction, uint16 *Quarters, int slot) {  	DroppingCrumbs = (BreadCrumbs[0].RoomNum != 0);  	FollowingCrumbs = false; -	for (i = 0; i < sizeof(BreadCrumbs); i++) { +	for (i = 0; i < 128; i++) {  		if (BreadCrumbs[i].RoomNum == 0)  			break; -		NumCrumbs++; +		NumCrumbs = i;  	}  	delete file; diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp index 3909d974b0..ae9eb02a37 100644 --- a/engines/lab/special.cpp +++ b/engines/lab/special.cpp @@ -972,28 +972,16 @@ bool saveRestoreGame(void) {  		// Restore  		GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);  		int slot = dialog->runModalWithCurrentTarget(); -		if (slot >= 0) +		if (slot >= 0) {  			isOK = loadGame(&RoomNum, &Direction, &(Inventory[QUARTERNUM].Many), slot); +			if (isOK) +				g_music->resetMusic(); +		}  	} -	if (!isOK) -		return false; - -	g_music->resetMusic(); - -	eatMessages(); - -	mouseHide(); -	memset(diffcmap, 0, 3 * 256); -	VGASetPal(diffcmap, 256); -	setAPen(0); -	rectFill(0, 0, VGAScreenWidth - 1, VGAScreenHeight - 1); -	blackScreen();  	WSDL_UpdateScreen(); - -	freeAllStolenMem(); - -	return true; +	 +	return isOK;  }  /*---------------------------------------------------------------------------*/  | 
