-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Gundam Battle Universe Crash #7136
Comments
This unknownbrackets@337b34e broke it. |
Urgh, timing issues then... |
I tried the old version. |
It must be that something else is executing too quickly and trying to enqueue before the block transfer is done. I wonder if it should only say stack address already used if the list is stalled or something. Don't think we have tests on that... -[Unknown] |
Hmm. Something here doesn't make sense.
-[Unknown] |
Fixed in #7217 |
Really? So it wasn't timing related at all? I thought this one was even with vfpusimd off. -[Unknown] |
No,just get lucky last time. |
Well, that's cool. Closing then. -[Unknown] |
I mean no,It's not fixed. |
Oh, ok, misunderstood. Yeah, timing issues can be tricky when they sometimes work. In the GE debugger, when it says -[Unknown] |
Err, sorry, I meant the "Lists" tab. I want to know which lists are active. But, that's useful, so it's a finish right after a call... interesting. -[Unknown] |
Hmm. What if you change: } else if (stackAddr != 0 && dls[i].stackAddr == stackAddr && !dls[i].pendingInterrupt) {
ERROR_LOG(G3D, "sceGeListEnqueue: can't enqueue, stack address %08X already used", stackAddr);
return 0x80000021;
} In GPUCommon.cpp, to: } else if (stackAddr != 0 && dls[i].stackAddr == stackAddr && !dls[i].pendingInterrupt) {
ERROR_LOG(G3D, "sceGeListEnqueue: can't enqueue, stack address %08X already used", stackAddr);
for (int j = 0; j < DisplayListMaxCount; ++j) {
WARN_LOG(G3D, " * List #%d state: %d, pc: %08x (from %08x), pending int: %d, started: %d, stackAddr: %08x", dls[j].id, dls[j].state, dls[j].pc, dls[j].startpc, dls[j].pendingInterrupt, dls[j].started, dls[j].stackAddr);
}
return 0x80000021;
} What lists does it spit out? I'm just wondering what is blocking it. -[Unknown] |
Get these log |
Hmm. And this is without multithreaded right? That status means "running". It's also not "pending interrupt." State would be set to 3 if there was no interrupt, and otherwise pending interrupt would be true. If there was an interrupt, when it ran it should've triggered the state to change to 3. Before that, pending interrupt would be true. So, that combination (RUNNING/state 2 + after a FINISH cmd + pending interrupt = false) should not be possible. Whatever is causing that is most likely the bug. I can try to recommend some logging changes, but a bit busy this week so might have to come back to it. Ideally I want to know when -[Unknown] |
Right,without multithreaded. |
Hmm, I'm not sure where to log without burying it in so much log data that it'll be super slow. This'll probably be pretty slow, I'm really just interested in the last lines of the log. -[Unknown] |
Interesting. There seems to be a SIGNAL, and then it jumps back into running. After that it hits the FINISH and seemingly the original SIGNAL causes it to clear the flag. So, the problem seems to be that it's running a list that has a pending interrupt. What happens if you go back to master, and change GPU/GPUCommon.cpp: if (list.state == PSP_GE_DL_STATE_PAUSED)
return false; To: if (list.state == PSP_GE_DL_STATE_PAUSED || list.pendingInterrupt)
return false; If that doesn't work, can you apply that change on top of 722c33f, and give me the new log? If it does work... I'm unsure if it's correct or not. Testing things related to what happens in interrupts is always a wonderful trip down wearing out my poor psp's power switch even more... -[Unknown] |
Great,it works,I rerun it for over 10 times,not hang anymore. |
Excuse me but is this fixed? Since the issue is still open i thought isn't fixed yet. |
Still haven't tested this on real hardware. It's hard to test. I'm thinking this change may be safe. I don't know much about that hack but as long as a hack is needed it's a bug. -[Unknown] |
Seems fixed on 1.0. Played this game for 1 hour straight and i'm already on 20 hours in Gundam Assault Survive which had this same issue (all the Gundam Battle games use the same engine, including the Macross games). I won't close this issue but +1 to fixed. |
Other gundam battle games seem different.Gundam Assault Survive random hangs in battle fixed long time ago. |
I've just noticed that. Seems completely random, just crashed on the second try. Same settings as the first try. This issue is not fixed yet. |
Changing cpu clock to 85 or 1000 helps it |
Is there a way to implement the game fix on ppsspp 1.1.1 version for android? if there is, i would like to know how to implement the fix on the game. |
stil freeze in v1.2.1-31-g9bde45d... |
well, I got to the settings and went YOLO in all clicking the settings, thankfully, in 1 instance, I managed to run it smoothly, sadly, the moment reopened it, it never ran again, a sad life it is |
It's been confirmed that the newest of the Gundam battle series, Gundam Assault Survive™ is working well on the latest build on PPSSPP, although it lags, there is no issues on crashing, something seems to be a bit off on the two titles, |
Report For ULJS-00145 PSP Ver. 1.2.2.0 |
As I promised to Daniel229 in Chronicle issue discussion I found what tweak makes game playable and not freeze on mission load - it's PSP's CPU clock being set at 1000, need to check if that'll work for Chronicle's issue too... |
อยากลองเล่นเกม..แต่ทำไมเล่นไม่ได้ |
And this one works without any issues. |
I think the correct fix for this issue is now in #12160. -[Unknown] |
Still crashes without the hack. |
crash after this screen
ppsspp-v0.9.9.1-1061-gea63719
I'm sorry
I can't explain well
The text was updated successfully, but these errors were encountered: