Snatcher hangs after explosion in morgue

Issue #289 resolved
Former user created an issue

Original issue 289 created by JJBunks on 2012-10-18T16:53:26.000Z:

In Snatcher, when you're in the hospital morgue, GenPlus hangs with a black screen right after the explosion. A CD audio track is being played at this point, and the Wii's disc drive light is lit as if the emulated system is still reading the disc.

Attached is a savestate right before the hang. Using r722.

Comments (13)

  1. Former user Account Deleted

    Comment # 1 originally posted by ekeeke31 on 2012-10-18T18:17:11.000Z:

    Could you upload the cue file you are using ? I know this game is very sensible to tracks length and will hang at some points if TOC infos are not exactly what they should be.

    Also, could you rather upload internal or external backup save file (cart.brm or scd.brm) with a game save before that spot ? A savestate will include the invalid toc infos if there are any, and would could lead to wrong assumptions when debugging crash.

  2. Former user Account Deleted

    Comment # 3 originally posted by JJBunks on 2012-10-18T22:55:41.000Z:

    Sure, here's the cue file and the backup memory file. In the game, you have to choose to reconstruct the corpse and then sit through a lengthy cutscene to get to the hang. I noticed that the CD audio track that plays during this part is the last on the disc, and when you play this track in the Sega CD BIOS player, it freezes at the end and still reads "playing," even though the track has ended.

  3. Former user Account Deleted

    Comment # 4 originally posted by ekeeke31 on 2012-10-19T06:33:07.000Z:

    That could indeed explain the crash.
    A few questions:
    What is the size (in bytes) of your bin file and the length reported by BIOS when you enter the CD player ?
    What is the length of the last track (track 21) ? This can be viewed by changing the time display in CD player interface to T-REMAIN i think and play the track.
    Does the same happens with different model bios (do not load the savestate when using different BIOS, only test from CD player) ?

  4. Former user Account Deleted

    Comment # 6 originally posted by JJBunks on 2012-10-19T19:13:58.000Z:

    The size of the bin file is 625,192,176 bytes and the reported length is 59:06. The length of track 21 is 6:56. I've been using the 1.10 version of the US BIOS, but I just tried the 2.00 version and the same thing happens: at the end of the track, the VU meters freeze, the time elapsed reads 59:06, and the player still says "playing."

  5. Former user Account Deleted

    Comment # 7 originally posted by iceknightmail on 2012-10-20T13:18:09.000Z:

    I can play that track without problems from beginning to end, so it might be a bad image...

  6. Former user Account Deleted
    • changed status to open

    Comment # 8 originally posted by ekeeke31 on 2012-10-20T13:50:32.000Z:

    the problem is not playing the track from start to end but that the game hangs when the track ends... and that cd player interface does not detect the end of the disc (it's the last track) and does not automatically stop playback like it should.

    i think it's an emulation issue and that somehow the bios needs to know that the end of the disc has been reached and report back to the application. i verified both the game and cd player keep waiting for something and BIOS is just regularely sending READ TOC commands like usual. the track index reports AA like it should when lead out area is being read and i try various things (like continuing to increment the block address behind the end of the disc, or incrementing the length of the last track) but nothing worked.

    I also noticed from old message boards reports that this game hangs at the same spot when using gens or bad images, but i verified that the same bin/cue image goes past the explosion in kega but not in genplus gx. For what it's worth, CD player in Kega handles the end of last audio track just fine (playback stops automatically) but it does not work correctly in this emulator or Gens. Note that this is true for all games, not this one in particular, which is why i think this is caused by missing emulation of some cdd features to indicate properly that the end of the disc has been reached.

    I just hope it's not related to subcode data (P and Q subchannel at least) that i think only Kega emulates and that this is rather some undocumented field or bit in the status bytes returned by CDD to the BIOS.

    at this state, i don't really know what should be fixed, analysing the bios is probably the only solution but it's a huge task.
    i am sure Steve Snake could bring some valuable helpl here but he seems to be off the radar for quite some time now

  7. Former user Account Deleted

    Comment # 9 originally posted by mediamoshpit on 2012-10-21T00:32:36.000Z:

    I know this issue has been "accepted", however, I thought that I might as well add that I too am experiencing this same problem. I'll be returning here periodically to check on any progress that might be made, so if there's anything I can do to contribute in the testing or troubleshooting of this issue, let me know and I would be happy to help in any way that I can.

    Also, as an aside, if I were to work my way back through the game using an .iso and it's accompanying audio files, would this problem persist, or is it just a bin/cue thing?

    Thank you for your time. In almost any way you could categorize or judge this software, it's got to be the most technically impressive coding effort available on the wii.

  8. Former user Account Deleted

    Comment # 11 originally posted by ekeeke31 on 2012-10-21T16:41:38.000Z:

    As said above, it's NOT an image issue but an emulation issue so iso/wav or bin/cue won't matter.

    Anyway, I've been doing some archaeological digging and it appears that the first version of Kega which correctly emulates the end of the disc (i.e playback automatically stops at the end of the last audio track) was Kega Fusion 0.1e
    In Fusion 0.1d it does the exact same thing as in Genesis Plus GX and, more interestingly, Snatcher hangs at the exact same part in Fusion 0.1d but works fine in 0.1e !

    So I'm definitively confident this bug is related to end of disc detection by the BIOS and, since Kega Fusion has been emulating CD-G (and therefore subcodes) from its first version, it is very likely this is not related to subcode but more to some undocumented flag in CDD status words returned to the BIOS. Unfortunately, 0.1e changelog is not very useful as Steve Snake explicitly states in it that he forgot most stuff that were fixed in that version ^^

  9. Former user Account Deleted

    Comment # 12 originally posted by ekeeke31 on 2012-10-22T14:10:46.000Z:

    Ok, I fixed it. By analyzing the CD BIOS code, I saw there were of undocumented CDD status value that were being supported.

    For the technical record, it appears that CDD returns a status of 0xC when the end of disc (Lead Out) is reached, which indicates the BIOS it should stop CD playback.

    As suspected, it fixes both the CD player interface and Snatcher hanging at the end of this cutscene which was playing last audio track. I think only Kega & Genesis Plus GX now emulate this correctly.

    Fixed in r728

  10. Former user Account Deleted

    Comment # 14 originally posted by ekeeke31 on 2012-10-30T19:46:53.000Z:

    issue #300 has been merged into this issue.

  11. Former user Account Deleted

    Comment # 15 originally posted by Deckers.Rudy on 2012-10-31T17:01:00.000Z:

    sorry if this comment is misplaced like i did with issue #300
    but how can i use R728 and implement it?
    Is it possible to just make a save/savestate behind the explosion
    since i don't know much about code

  12. Former user Account Deleted

    Comment # 16 originally posted by Deckers.Rudy on 2012-11-02T07:02:28.000Z:

    Okay,
    i also did some digging found a save file from "ReedlyScotty" at junker HQ. So credit goes to him. They call it : Post Save State after REAL Room 3 in Queens Hospital

    I'll unclude the BRM file that you have to rename as scd_U.brm in order to make it work as the system backup ram.

    I also will quicksave state directly after the explosion.
    Cheers


    A few more hours added to my already put 4h effort gave me the solution.

    Basically I was trying to load save states, so different ISOs even though they were good, had problem working properly.

    Here is the snatcher BRM file that has File 3 which is just before you beat the Snatcher in Room 1. And File 4 is in the dark vent right after the whole cutscene.

    Also attached is a save state from after the cutscene.

    Just in case someone has similar problem as me.

    States and Files were made using Kega Fusion 3.64 but yeah, should work with other
    popular emulators too.


  13. Log in to comment