exoscoriae / eXoDOS

eXoDOS
70 stars 3 forks source link

Screamer (1995) #4197

Closed Python-Exoproject closed 1 year ago

Python-Exoproject commented 1 year ago

User Dosgamert has reported that screamer crashes as certain points, usually around checkpoints. He has provided a save game and screenshot.

image

image

CHOICE.zip (put this is \Screamer\Screamer\Config).

Its been confirmed by both Timber and myself. Timber tried changing memsize to 64 from the current 32 and said he finished the race but myself and Dosgamert still had issues with that setting. Ive also tried memsize=16, ECE, and staging. memsize=16 gave a similar DOS/4GW error with exception code 0dh and both Staging and ECE just closed abruptly.

SmilingSpectre commented 1 year ago

There was also DOS32A mentioned in process. https://www.dosbox.com/wiki/TOOLS:DOS32A

And I believe, Timber tested the different version the last time. This one: https://archive.org/download/redump_pc_S-2/Screamer%20%28Europe%29%20%28Sold%20Out%20Software%29.7z

TimberlAndRE-de commented 1 year ago

I tested the redump version: It doesn't crash at the same point but the whole dosbox closes a bit later before the first round finishes (tested twice)

I reinstalled the current WIP version and it crashes as described above in the second screenshot. If I change the memsize to 64 it runs without problems for me. I can finish the whole race (although I'm not good at it and crossed the finish line as 4th place :-P)

Eulisker commented 1 year ago

It looks like even the original version used to crash a lot in svga mode. There is a workaround for the 5th track (see here) though i think that is a different one from the one on top. Here is a vogons thread with more info. Maybe it is best to set the game in VGA mode?

e: Also the game felt a little choppy to me. at around 110000 cycles it was smoother.

kcgen commented 1 year ago

Some test results with the current WIP version and its settings (SVGA, SB16 Stereo). Repro steps:

  1. Copy :file_folder: CHOICE.DAT into SCREAMER/CONFIG/
  2. Launch, then Championship -> Resume -> enter, enter, enter

Tried a bunch of things, but results were all bad:

Map 5 exposes some memory management bugs in the game, causing it to corrupt huge chunks of its own memory.

kcgen commented 1 year ago

If Screamer 2 was a bug-fixed build of Screamer 1 ("Virgin management: "we'll sell them the bug fix as a new game" :money_mouth_face:), maybe there's hope that someone can patch-in the bug-fixed memory handling code..

Without renaming the files, the best I could do was this:

  1. Set in-game low detail:

starth_001

  1. Use DOS/4W-2.60 in the SCREAMER/ directory, replacing the original executable.

  2. Use these conf modifications (applicable to all DOSBoxes):

[cpu]
core = dynamic
cycles = max

[dos]
xms = false
ems = false
umb = false

I've been able to beat stage 5 four for four now, and haven't hit a single crash: (EDIT! Nope: this config still crashes, but just less likely).

https://user-images.githubusercontent.com/1557255/211601704-a0f5a2eb-58f4-4669-86c1-64be59ae0ed9.mp4

exoscoriae commented 1 year ago

ok. so there seem to be a few options here (both mentioned in the thread linked my @Eulisker above): 1: just use lo res mode for the launch and ignore SVGA 2: use SVGA, but for track 5, rename the high res track file and instead copy the lo res track file over with the high res name. This essentially plays a lo res version of just track 5, which supposedly works for most folks.

@kcgen 's work above is beneficial to understanding the over all, but ultimately it is a variation of option one, which uses the low res files (if I read it correctly)

I saw one person in a thread mention that turning sound off also helped... but that seems unnecessary.

kcgen commented 1 year ago

Unfortunately even the file-rename approach isn't reliable - I was still able to get a crash after a handful of wins. Same with my suggestions above.. I think I just got lucky; after more attempts, I was still able to get a crash on the resumed championship course.

The odds of avoiding the corruption improve considerably using the low-resolution (files and settings) -- so I also agree it's the best compromise. Keen users can retry a handful of times to get past it - and maybe a canned save game that let's them jump to level 6 would be worst-case fallback.

Eulisker commented 1 year ago

Maybe we can offer the vga mode as an option and have a note that warns of the svga mode being prone to crashing?

E: and by we i mean eXo :)

exoscoriae commented 1 year ago

yea, I agree with the final option. No reason to force lo-res or high-res when it can be an informed choice.

exoscoriae commented 1 year ago

image

kcgen commented 1 year ago

@grapeli has found an in-game driving path that avoids the bug: https://github.com/joncampbell123/dosbox-x/issues/3939#issuecomment-1387146638 !