Commit Graph
24 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Fable 5.1 cc41a23256 GPU: empty the display list queue on sceKernelLoadExec, fixes Crazy Taxi
Reinitialize() wiped the 64 display lists but kept the queue of their ids.
Whatever the old executable still had queued came back as lists with no state
and a pc of 0, behind the first list of the new executable, where they
blocked everything. Crazy Taxi: Fare Wars is a launcher for its two games,
and stopped at a black screen that way. Fixes #19894.

This removes the workaround for it, which dropped such a list but returned
before currentList was cleared, and only worked as long as something else
happened to clear it later. A list with a bad pc is now dropped like one that
ran into an error, instead of sitting at the head of the queue for good.

Also narrows what sceGeBreak(1) throws away to interrupts that have actually
been raised, which is what gpu/ge/intrsuspend shows. The ones we haven't
raised yet are only late because we execute lists ahead of time: a game that
breaks right after its last list, and then waits for what the finish callback
signals, got that callback long ago on hardware.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:10:02 -06:00
sum2012 63606634bb Add InterruptManagerForKernel
Find in #16297
2022-10-31 20:17:12 +08:00
Unknown W. Brackets f530be0969 Dialog: Prevent reschedule on shutdown start.
This is a bit strange, but tests seem to suggest this is correct.
A worse priority thread won't run before savedata shutdown hits 0, but the
thread that initiated shutdown runs before shutdown completes.

Fixes Freakout Extreme Freeride loading savedata.
2021-08-14 20:15:34 -07:00
Unknown W. Brackets 87ee0bc650 Return error codes in register/release subintr.
This checks for duplicate registrations and other thigns that could've
been causing wrong behavior.
2014-06-21 21:27:58 -07:00
sum2012 d6790cf906 Add logging and fix savestatus 2014-02-17 20:42:35 +08:00
Unknown W. Brackets c9e1b01545 Don't reschedule while interrupts are disabled. 2013-03-24 19:43:56 -07:00
Unknown W. Brackets 62ab4b7f51 More signed compare warnings. 2013-03-02 15:34:16 -08:00
Unknown W. Brackets 07a5dca98e Expand out some savestate code saving non-pod. 2013-02-04 08:26:59 -08:00
Florent Castelli 8004d360dd Interrupt handler reorganization for easier GE interrupt support 2013-02-04 03:10:01 +01:00
Unknown W. Brackets 2fa0cf040d Fix alarm test by not interrupting when disabled.
vblank was interrupting/rescheduling when interrupts were disabled.
That's bad.
2013-02-03 13:48:19 -08:00
Henrik Rydgard 363f158a0a Just warning fixes 2013-01-02 21:13:21 +01:00
Henrik Rydgard 972e4ea4e4 Warning fixes, prevent a possible (but unlikely) crash 2013-01-02 21:05:00 +01:00
Unknown W. Brackets a8c9c31e16 Add a registry for actions so they can be stated.
Also add late loaders to ensure things are hooked up properly.
2012-12-28 13:55:26 -08:00
Unknown W. Brackets db787d266d Require interrupt handlers to be registered.
This allows it to be save stated sanely.
2012-12-28 13:55:25 -08:00
Unknown W. Brackets 12fb91b7b5 Don't run interrupts while they're suspended. 2012-12-20 22:49:48 -08:00
Unknown W. Brackets 9034cfbfd3 Defer HLE interrupts, vblank only when enabled.
Based on tests, vblank doesn't queue up (makes sense) while
interrupts are disabled.

I'm not 100% sure about the GPU stuff but it seems to only come
from HLE via sceGe, so this should fix those return values.
2012-12-20 21:54:40 -08:00
Unknown W. Brackets 529818c9cd Handle interrupt return values. 2012-12-20 20:07:54 -08:00
Unknown W. Brackets d6d1f687a8 Make the intr handler public, will need for timers.
The idea here is that alarm/vtimers/etc. can implement a subclass
to pass more arguments / do whatever they need to.
2012-12-20 20:07:53 -08:00
Henrik Rydgard 0ff792fce5 Refix ge interrupts, make headless printf log messages 2012-11-09 13:40:09 +01:00
Henrik Rydgard 117256e07b Implement various hle stuff.. 2012-11-07 19:10:52 +01:00
Henrik Rydgard aea0580297 More reworking of Callbacks, plus some other little fixes. 2012-11-07 15:44:48 +01:00
Henrik Rydgard 8a082f91cc Ge Callbacks seem to be working now. 2012-11-06 18:14:09 +01:00
Henrik Rydgard 64cc573703 Switch to "GPL 2.0 or later" for various reasons. I wrote most of the code I imported from Dolphin (which is GPL2-but-not-later), so it should be OK. 2012-11-04 23:24:00 +01:00
Henrik Rydgard 4f7ad15758 Add snapshot of the whole source code. 2012-11-01 16:19:01 +01:00