*Fixed cycle counts on reset
*Fixed VU1 pipe state on interpreter during XGKick stall
*Improved XGKick timing on VU JIT
*Update VU1 cycle count correctly on VU JIT when an XGKick Stall happens
Midnight Club Racing 3 does not write to CSR to enable FINISH yet still expects FINISH interrupts to occur. This indicates that whether a FINISH interrupt can fire or not is only based upon whether a previous FINISH event has occurred. This fixes the game's internal FPS, which was previously running at terrible speeds.
It was originally hypothesized that bit 6 of N_status represented "ready to receive commands." However, Jimmy Neutron: Boy Genius crashes with the old setup. It sends sceCdRead twice to CDVDMAN to read two separate files: a level map and a music file. When the music file load was occurring, CDVDMAN would return an error on the second sceCdRead as bit 6 was cleared. The game would think that this file had loaded successfully, causing a crash due to reading from uninitialized memory.
This commit changes this bit to always be on and adjusts drive status to be set to SEEKING when a seek starts. When the N status check passes, CDVDMAN will loop waiting for drive status to become paused, rather than returning an error. Thus, the second sceCdRead successfully completes eventually, allowing the game to work.
Adjust FIFO size for DMA request on VIF
Stop unnecessary GIF resumes
Adjust the GIF arbitration for PATH3 Masking
Adjust GIF DMA resumes when reading from the FIFO
*VIF: Fixed VIF Flush Stall when waiting on PATH1&2
*DMAC: Try to improve PATH3 Masking reliability at higher MAX_CYCLES
*GIF: Fill out most of GIF_STAT and correct FIFO size value
*GIF: Ignore PACKED writes to address 0x7F, since this doesn't exist
*GIF: Fix FINISH to only trigger when all transfers end
*GIF: Fix up unused intermitted check, can be used for testing
*GIF: Remove item from queue first, things have changed so it no longer needs to be last
*Fixed cycle counts on reset
*Fixed VU1 pipe state on interpreter during XGKick stall
*Improved XGKick timing on VU JIT
*Update VU1 cycle count correctly on VU JIT when an XGKick Stall happens
GS Interpreter/JIT: Treat depth buffer as having color format when framebuffer has depth format
Confirmed by hardware tests: fixes Powerdrome, which uses this technique to clear a depth buffer
Confirmed by hw tests performed by water111.
The GS divides the block ordering of the z and color writes by format. This allows both writes to happen at the same time.
Color writes are performed on the left side of the page while z writes are performed on the right side.
However, in the event that a z format for frame, the gs will swap the zbuf format for a color one.
Fix power drome.