-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Princess Maker 2 freezes at end of startup animation #154
Comments
Based on running in Mednafen, the initial SCSI command is to position the head:
The next commands define the start and stop of playback (play track 4; stop when track is reached):
(these are SCSI commands 0xd8 and 0xd9) But Mednafen doesn't log a SCSI 0xff. |
After some investigation, is looks as though the subchannel Q reads were waiting for the audio playback to reach a specific sector - one sector AFTER the Main_MiSTer function stops playing. |
Pull request created (Main_MiSTer #439) |
While this worked for me, others appear to continue to have issues; the ultimate solution may not be as simple as this. |
Retested after pull request #439 and more recent TIMER fix for CD Hanafuda Bishoujo Fan Club. Issue is now resolved - when running after a fresh boot. However, if you use the on-screen display's "RESET" option or reload the game (and re-execute the steps), the game will freeze at that point. The problem also occurs if you reload the core and load the game. This scenario cannot be reproduced on real hardware because "select+run" soft-reset is suppressed. On original hardware, a power cycle would be required, which would reset both hardware registers and memory. |
This issue is mostly resolved, but will stay open until we understand why a hard reset is needed. |
One of the most recent changes undid the fix, and it stopped working again... |
First, TIMER is not active during animation playback, so this is just a coincidence. The SAPSP/SAPEP command status (at the end of the track) does not have time to be sent before the READ6 command arrives. If PendStatus() is replaced by SendStatus(), the status will be sent immediately (https://github.com/MiSTer-devel/Main_MiSTer/blob/91b93352baa24f23ce19217f96536a7dfe671fc3/support/pcecd/pcecdd.cpp#L455). |
Oh, this looks like a good solution. I will also test this. |
My testing shows this works for Princess Maker 2. I think the only reason to use PendStatus would be to show the core that the CD is busy, but I think it isn't needed at the end of playing an audio track. I think the main use of PendStatus would be while preparing to move/play/read. I think this fix should be committed, and let users test more widely. |
Most recent release of Main_MiSTer looks fixed. I will close the issue. |
This happens:
The log output leading up to the failure is this:
This appears that it could be caused by a request/response mismatch : The audio plays fine, but the undefined command seems to be related to the issue. As the READ6 request is made, nothing happens after that (black screen).
How to reproduce:
Family Name -> ア (then おわり)
Girl's Name -> カ (then おわり)
1 月 1 日
11 才
2 月 1 日
Blood Type A
-> The screens fades to black, but then all activity stops.
Note: skipping this cinema will avoid the error.
The text was updated successfully, but these errors were encountered: