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

Renderware (Heavy iron) potential fix. #2139

Closed
ghost opened this issue Nov 19, 2017 · 8 comments
Closed

Renderware (Heavy iron) potential fix. #2139

ghost opened this issue Nov 19, 2017 · 8 comments

Comments

@ghost
Copy link

ghost commented Nov 19, 2017

What is this?

The modified renderware engine used by Heavy Iron for The Incredibles and Spongebob games never worked on PCSX2, the only raison that these games worked is there is a Patch to avoid the issue.

Play!

A another Ps2 emulator (Play!) have a fix for this but it doesn't seems to be responsive on PCSX2 according to a forum post.

EIE bit

So here is the issue: the EIE bit. According to #Refraction, forcing the EIE bit to be set Under WriteCP0Status seems to fix the game.

This issue was made has a discussion purpose

@refractionpcsx2
Copy link
Member

I will note forcing it worked, but it was a MASSIVE hack and will probably break other games. The game constantly turns the EIE bit on and off, but letting it do this doesn't work.

@ramapcsx2
Copy link
Member

What was EIE again? Debug feature they forgot to turn off or crazy code? :)

@refractionpcsx2
Copy link
Member

refractionpcsx2 commented Nov 26, 2017

It is the master interrupt enable bit on the cop2, if I recall correctly

@ramapcsx2
Copy link
Member

That just sounded like something Mr. Data would say xD
So okay, the game is trying to measure something, maybe. Maybe a timing loop?
I don't think we even emulate or care about what it's trying to prevent :p

@refractionpcsx2
Copy link
Member

refractionpcsx2 commented Nov 26, 2017

I meant Master, stupid phone.

Not sure what the game is doing or how Play! managed to fix it. I'm guessing they had a problem we didn't have but didn't have a problem we do have

@gregory38
Copy link
Contributor

Enable IE: This bit enables or disables the IE (Interrupt Enable) bit. Thisbit is cleared by the DI instruction and set by the EI instruction. 0 → disables all interrupts regardless of the value of the IE bit. 1 → enables the IE bit. (All interrupts are enabled if IE=1, EXL=0, and ERL=0.) Note: IM enables individual interrupt

For me it is the user (I think you don't need kernel privilege to use EI/DI instructions) master/atomic enable interrupt.

@ramapcsx2
Copy link
Member

So yeah, they're probably timing something, is my guess.

@lightningterror
Copy link
Contributor

Fixed in #3172

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

6 participants
@gregory38 @ramapcsx2 @refractionpcsx2 @ssakash @lightningterror and others