Opened 11 years ago

Closed 2 years ago

#7643 closed enhancement (fixed)

DOTT: Running MM from Ed's room.

Reported by: SF/zorbid Owned by: eriktorbjorn
Priority: normal Component: Engine: SCUMM
Keywords: Cc:


This has been requested twice already, and was rejected at that time because MM wasn't supported yet.

Now that engines are on the verge of being able to clean up after themselves (most already are if I'm not mistaken), it would be nice to get that easter egg...

Ticket imported from: #2006144. Ticket imported from: feature-requests/459.

Change History (6)

comment:1 Changed 11 years ago by SF/zorbid

Summary: DOTT: Run MM from Ed's room.DOTT: Running MM from Ed's room.

comment:2 Changed 5 years ago by digitall

Component: Engine: SCUMM

comment:3 Changed 5 years ago by digitall

Doing this is not easy as it requires either running a second copy of ScummVM from within ScummVM, or by triggering an autosave of DOTT, then restarting the engine with Maniac Mansion... and then autoloading the autosave for DOTT and restarting when you exit.

Up till now, the team has always said on this. It is much easier if you just point ScummVM at the sudirectory of the DOTT gamefiles which contains the Maniac Mansion LFL files, and then start MM as normal.

comment:4 Changed 5 years ago by digitall

Have done some experimental WIP here to do this by starting a second copy of the SCUMM engine with Maniac Mansion:

This pauses the SCUMM instance running DOTT and then passes control down to the new nested SCUMM instance running MM. It has a number of hacks to fix re-entrance i.e. running two copies of SCUMM engine as the engine uses a few global / static pointers and it assumes that the MM datafiles are present.

It does work fine, but exiting back to the SCUMM engine afterwards only works for RTL, not QUIT due to the way that the event loop processes QUIT events i.e they can't be reset, so the QUIT cancels both engine copies. Also, it is necessary to trigger a full screen redraw after leaving MM to ensure that the screen state is correct... and do the "Wow" that Bernard normally says! :)

comment:5 Changed 5 years ago by digitall

Note that I am not suggesting this as a final solution. For small devices especially, the engine exit or restart with new target would be better and much more economic on memory etc.

However, the SCUMM engine being the oldest engine is not quite as easy to modify to do this as the detection / engine version code is quite complex and intertwined into the engine, plus the previous issues with restart need to be fully fixed.

comment:6 Changed 2 years ago by criezy

Owner: set to eriktorbjorn
Resolution: fixed
Status: newclosed

This has been implemented in commit f74ba297 more than two years ago.

Note: See TracTickets for help on using tickets.