Skip to content
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

Gregory Horror Show(all versions) #643

Closed
ADormant opened this issue Jul 9, 2015 · 12 comments
Closed

Gregory Horror Show(all versions) #643

ADormant opened this issue Jul 9, 2015 · 12 comments

Comments

@ADormant
Copy link

ADormant commented Jul 9, 2015

Gregory Horror Show never worked or even booted on PCSX2, it just gets a black screen.
It isn't playable on Play! either but it does go further in and shows some letters so perhaps something can be copied over.

Crash is caused by a weird transfer from IOP to EE through SIF that has a size > 0x80000000. Clamping the size fixes the crash. I'll see if I can push a branch with fixes later on.
I can't go any further because the game doesn't respond to input. I think it's caused by some issues with thread scheduling on the IOP.

jpd002/Play-#62

@refractionpcsx2
Copy link
Member

That's interesting, i've always wondered what caused that hang, I want to assign this to @gregory38 just for the lolz :P

Does the IOP and the EE side say 0x80000000 or just the IOP side? That's crazy huge (or somehow trying to do a negative size, but that would just be weird), I wonder if that's intended or if there is another bug that causes it

@jpd002
Copy link

jpd002 commented Jul 10, 2015

@refractionpcsx2 Humm, that problem is probably very specific to the way I handle SIF transfers (done through HLE). I guess transfer size wouldn't be a problem when it's done through standard DMA since that high bit would get masked off when writing to the transfer size register on the IOP side.

@refractionpcsx2
Copy link
Member

That does bring us back to square one if that is the case as theoretically we are already doing what you said makes it boot further, but it wouldn't suprise me if SIF is the problem, the whole system is PITA. Our synchronization registers are almost unknown and complete guesswork from poking them, the DMA side is reasonably straight forward.

@ADormant
Copy link
Author

ADormant commented Oct 8, 2015

@refractionpcsx2
jpd002/Play-@def3ec6
It works now perhaps it can be copied to PCSX2?

@refractionpcsx2
Copy link
Member

@ADormant Excellent job! Do you know which bit specifically got past the hang? Obviously quite a chunk of that is thread control, something we don't really do in PCSX2 :P

@ADormant
Copy link
Author

ADormant commented Oct 8, 2015

@refractionpcsx2 @gregory38 @jpd002 Oh I see so is there no hope for emulation of this game in PCSX2?

@refractionpcsx2
Copy link
Member

Well yes, but he is using hle, so the threading stuff is all done manually, I want to know if that fixed it or something else

@ssakash
Copy link
Member

ssakash commented Oct 8, 2015

@refractionpcsx2 : I think it's based on the sifcmd part which is currently not handled on the codebase. would be nice if @jpd002 could explain ;)

@refractionpcsx2
Copy link
Member

I can test that, but i'm not sure that's it.. but one way to find out :P

He has already explained it once :)

@refractionpcsx2
Copy link
Member

Low and behold it was that :)

@refractionpcsx2
Copy link
Member

All fixed, you might want to check your code @jpd002 the manuals say the max transfer size is 1mb-16bytes and the top part is for the cache mode, 0x10000000 for "NOWAIT" aka async mode, or 0x20000000 which means don't write to d-cache, but these are probably useless anyway, not many (if any) games use it besides GHS.

I dunno how your code works but just thought you should know :)

@jpd002
Copy link

jpd002 commented Oct 9, 2015

@refractionpcsx2 Ah, thanks for clearing that up! Glad I could help to make the game playable in your emulator!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants