IVBeatz / genplus-gx

Automatically exported from code.google.com/p/genplus-gx
Other
0 stars 0 forks source link

Snatcher hangs after explosion in morgue #289

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
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.

Original issue reported on code.google.com by JJBu...@gmail.com on 18 Oct 2012 at 4:53

Attachments:

GoogleCodeExporter commented 9 years ago
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.

Original comment by ekeeke31@gmail.com on 18 Oct 2012 at 6:17

GoogleCodeExporter commented 9 years ago

Original comment by ekeeke31@gmail.com on 18 Oct 2012 at 6:17

GoogleCodeExporter commented 9 years ago
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.

Original comment by JJBu...@gmail.com on 18 Oct 2012 at 10:55

Attachments:

GoogleCodeExporter commented 9 years ago
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) ?

Original comment by ekeeke31@gmail.com on 19 Oct 2012 at 6:33

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
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."

Original comment by JJBu...@gmail.com on 19 Oct 2012 at 7:13

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

Original comment by iceknigh...@gmail.com on 20 Oct 2012 at 1:18

GoogleCodeExporter commented 9 years ago
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 

Original comment by ekeeke31@gmail.com on 20 Oct 2012 at 1:50

GoogleCodeExporter commented 9 years ago
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.

Original comment by mediamos...@gmail.com on 21 Oct 2012 at 12:32

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
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 ^^

Original comment by ekeeke31@gmail.com on 21 Oct 2012 at 4:41

GoogleCodeExporter commented 9 years ago
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

Original comment by ekeeke31@gmail.com on 22 Oct 2012 at 2:10

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Issue 300 has been merged into this issue.

Original comment by ekeeke31@gmail.com on 30 Oct 2012 at 7:46

GoogleCodeExporter commented 9 years ago
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

Original comment by Deckers....@gmail.com on 31 Oct 2012 at 5:01

GoogleCodeExporter commented 9 years ago
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.
--------------------------------------------------------------------------------
---

Original comment by Deckers....@gmail.com on 2 Nov 2012 at 7:02

Attachments: