VOGONS


First post, by Omni

User metadata
Rank Newbie
Rank
Newbie

Hi, sorry for creating a new thread for this topic but the original "ecstatica exits after intro"-thread is closed unfortunately.

I have created a patch which fixes the-crash-after-intro-problem. Ecstatica was actually terminating itself on purpose. I have not yet found out why, but I have bridged the respective instructions. No guarantee, that this won't make the game crash at some point. Enjoy!

Last edited by Omni on 2011-10-19, 14:45. Edited 1 time in total.

Reply 1 of 11, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

So are you installing Ecstatica in dosbox from original media, contrary to that closed thread?
Feel free to post details on what you already figured out or where you may be stuck
with your analysis. Though the first step would be checking if the problem is reproducable
the same way on a real system or not.

Reply 3 of 11, by keropi

User metadata
Rank l33t++
Rank
l33t++

what was the problem? I have the game, UK version, I can test it on a 486slc2 IBM pc or a p200mmx...
IIRC it was 13 😁 1.44 disks, no protection on them...

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 5 of 11, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

This "patch" changes a conditional short jump to unconditional. The instructions jumped over are a call leading to what is presumably an error exit. I don't know if this is just hacking past an error or effectively a no-cd modification; but what I do know is that the game works fine when properly installed from its CD and running with the CD mounted -- the condition leading to the exit never occurs.

On a side note, I have occasionaly seen Ecstatica cause DOSBox to close with a "Ran out of cacheblocks" error, but it's a separate issue that can be worked around using the normal core.

Reply 6 of 11, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The condition in question checks to see if a dword value is zero, and that value is the amount of free space on the cdrom drive defined in the E_CONFIG file. It seems that in the thread-starter's case a drive with some free space is being referenced (a cdrom drive reports zero free space), perhaps in a ripped copy of the game, and the "patch" is circumventing what appears to be a cd-check.

Reply 7 of 11, by Omni

User metadata
Rank Newbie
Rank
Newbie

😮 wow, I would never have imagined I unintentionally created a no-cd patch. Actually I couln't make head nor tails out of this strange check ecstatica does. I just remembered that I played the game some years ago without any problems, it didn't work now, I tracked down the point where the program terminated and bridged it.

How did you figure this out, ripsaw8080?

Reply 9 of 11, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The conditional jump you modified is based on comparing a memory value to zero:

cmp dword ptr [00004d6f],0
je $+0a

The memory address is referenced only twice in the executable: where its value is set, and where its value is tested. Tracing the code prior to setting the value turns up a call to INT 21/36 to get free space on the cdrom drive configured at installation.

However, don't let the technical stuff distract you from the point wd emphasizes: you (and I) wouldn't have looked into this non-problem if you'd installed and run the game the way it's supposed to be installed and run.

Reply 10 of 11, by Omni

User metadata
Rank Newbie
Rank
Newbie

Ok I have tried to run the game from CD

mount D /media/cdrom0
D:
ecst8meg.exe

The game terminates after the intro! In DOSEMU it works, in DOSBOX it does not. I'm using 0.74. Obviously dosbox is incorrectly returning free sectors on the cd-rom drive...