Commit Graph

2700 Commits

Author SHA1 Message Date
6fe0c986fa System: Rewrite EXE override/loading
Relies on POST=7 as a kernel initialization indicator, instead of
patching the BIOS.

Fixes EXE loading with OpenBIOS and PS2 BIOS, and fast boot getting
baked into save states.
2024-07-28 19:05:56 +10:00
7b99fcbbf3 GPU: Fix edge bleeding with Bilinear Integer scaling 2024-07-28 14:08:28 +10:00
a3acb0c5db GPU/HW: Always allow shader blend with fbfetch 2024-07-27 19:52:08 +10:00
c2d24f436c CDROM: Re-enable error-on-seeking-pause behaviour
See the comments in the diff. This **will** cause lag in Final Fantasy
VII during preload areas, but that has also been confirmed on console.

Duke Nukem - Total Meltdown does this silly Read -> Pause command chain,
except it sets its data/INT1 callback on the read, but never clears it
after the pause. Therefore, if it doesn't receive at least one sector,
the callback never gets cleared, and when the next read happens, it
stores the "current" callback in the "backup" variable, which should be
null, but now has the callback from the dud read.

The result is any INT1 during XA playback running the dud callback,
which says "hey, I'm not expecting any data, so pause, and stops the
background music playback. Making sure at least one sector from that
silly chain is delivered ensures the callback is cleared, and this does
not happen.

Since the pause first mentioned above will now error out until the first
sector is delievered, the game spams pause until it eventually does
succeed after the INT1. This behaviour has also been verified on
hardware, thanks to rama for the xStation logs.
2024-07-27 14:24:23 +10:00
440e08cf3e Qt: Fix crash opening game compatibility report 2024-07-27 01:31:22 +10:00
7a3a72ec3d GPU: Add display rotation option 2024-07-26 23:09:33 +10:00
0b5287f199 Bus: Implement RAM_SIZE register
Fixes Rock-Climbing - Mitouhou e no Chousen - Alps Hen (Japan) crashing
on boot. Silly game does a 512 word DMA from CDROM to 0x001FFF04, with the
mapped memory size set to 4MB, expecting the DMA to trigger a bus error,
because if it doesn't, then your kernel memory goes bye bye.

A bunch of other games do set the upper 4MB to be unmapped, but this
change appears to have no effect on them. As expected, they're probably
doing the correct thing.
2024-07-24 00:14:17 +10:00
dce1221021 Bus: Log when RAM_SIZE changes 2024-07-23 23:00:44 +10:00
68575d15a4 CDROM: Shift instead of divide in ZigZagInterpolate 2024-07-23 22:10:04 +10:00
5ec9c8a397 CDROM: Fix handling of 8-bit ADPCM and decoder overruns
Fixes pops in menu music in Simple 1500 Series Vol. 92 - The Tozan
RPG - Ginrei no Hasha.

I haven't seen anything that _properly_ uses 8-bit ADPCM yet. The above
game does, but only in the inaudible portion of the start of the track.
2024-07-23 21:54:22 +10:00
861d4a5aa2 FullscreenUI: Reorder graphics settings to match Qt 2024-07-23 21:11:01 +10:00
0407f939fc CPU: Fix loading recompiler-saved states with interpreter 2024-07-23 21:11:01 +10:00
2a617c505a GPU/HW: Support using ROV for accurate blending 2024-07-23 14:46:06 +10:00
e743c5d1b1 GPU/HW: Force update CLUT on save state
Fixes switching from hardware->software renderer in games that are
drawing without reloading the CLUT.
2024-07-22 21:25:14 +10:00
298f39a0c8 GPU/HW: Fully report shader/pipeline creation failures 2024-07-22 15:43:18 +10:00
deed0c9713 GameDatabase: Merge compatibility messages 2024-07-22 14:59:55 +10:00
b4136d2834 TimingEvents: Avoid heap allocation in SortEvents() 2024-07-21 16:15:40 +10:00
d9ada75d4f Qt: Toggle for DualSense Player LED (#3254) 2024-07-21 16:07:36 +10:00
3172eac8df PINE: Disable nagle buffering 2024-07-21 13:43:21 +10:00
f2e88ce0e5 PINE: Add MsgReadBytes/MsgWriteBytes 2024-07-21 13:34:10 +10:00
79644bfb2a CPU: Add Safe{Read,Write}MemoryBytes 2024-07-21 13:33:54 +10:00
52f9e8556a CDROM: Deactivate command attempt before queueing another
Reduces chances of ending up with unordered events.
2024-07-20 22:35:32 +10:00
efd8aab437 TimingEvents: Fix events ending up out-of-order 2024-07-20 22:35:32 +10:00
9b77a9aff7 TimingEvents: Move interrupt dispatch to end of loop
Saves another iteration.
2024-07-20 13:42:01 +10:00
4f7ddfaae6 TimingEvents: Remove pointer indirection
Probably should move this to one big array for locality.
2024-07-19 22:56:41 +10:00
56dd9878e1 Misc: RISC-V build fixes 2024-07-19 22:25:57 +10:00
2e96931c32 CPU/CodeCache: Dynamically compute BIOS memory access timing
The timings can change if the game does so. Instead of forcing the
blocks to recompile, we can just manually multiply size * word_time.

Improves stability of Nightmare Creatures booting, and fixes corrupted
text in Formula Circus when using the cached interpreter.
2024-07-19 22:25:57 +10:00
d9a224ef6c GameList: Fix bogus entries on disc change due to disc set 2024-07-19 15:51:25 +10:00
6a920b268e CDROM: Handle BFRD clears inbetween DMA transfers
Fixes disc detection in Metal Gear Solid: Special Missions.
2024-07-19 15:51:25 +10:00
f0945ca3ca BIOS: Refactor loading/hashing of images
Fixes identification of PS2 BIOSes. However, they are not (yet) fastboot
compatible.
2024-07-19 15:51:25 +10:00
19063d4288 Bus: Mirror BIOS area up to 4MB
Fixes bus error when using PS2 BIOS.
2024-07-19 15:51:25 +10:00
7217536fdd MD5Digest: Span-ify 2024-07-19 15:51:25 +10:00
6176a21ff1 ProgressCallback: Eliminate redundancy and drop C format strings 2024-07-19 15:51:25 +10:00
567b86ce79 Host: Purge ReportFormattedDebuggerMessage() 2024-07-19 14:00:29 +10:00
92038da3d5 CDROM: Handle speed change while reading
Fixes level music in Croc 2 demo.
2024-07-18 00:31:19 +10:00
9a89ab3bab GameDatabase: Add deinterlacing mode override 2024-07-17 20:57:36 +10:00
f1ca914512 CDROM: Further adjust IRQ delay
Fixes audio dropouts in Crime Crackers, Ogre Battle seems fine now as
well.
2024-07-17 20:57:36 +10:00
9392c19a70 CDROM: Handle audio sectors in 2X mode
Fixes menu background in 360 Three Sixty.
2024-07-17 20:57:35 +10:00
44b9d16d9f CDROM: Defer set of autopause track
Pitball's menu music starts mid-second, and there's no pregap,
so the first couple of reports are for the previous track.

It doesn't enable autopause until receiving a couple, and it's
actually playing the track it wants.
2024-07-17 20:57:35 +10:00
fb747d6ded CDROM: Drop setloc on double Play
And limit the locations position is updated while seeking.

Fixes menu music in Hot Wheels: Extreme Racing.
2024-07-17 20:57:35 +10:00
bc30569a6d SPU: Reverb input should be muted when SPU muted
Fixes pause menu in Bubsy 3D, Tuning Car Battle Spec R.
2024-07-17 20:57:17 +10:00
fae6b7ae86 System: Fix double error on load/boot cancel 2024-07-14 21:32:10 +10:00
fee888758f System: Purge unused RecreateSystem() 2024-07-14 21:30:52 +10:00
640ed4a2d3 CPU/Recompiler: Eliminate redundant speculative reg read 2024-07-14 21:26:17 +10:00
59a2309a83 GPU: Use half width vector types where appropriate 2024-07-14 21:25:48 +10:00
df979d4648 Build: Fix DiscordRPC not being included in Mac bundle 2024-07-14 21:25:26 +10:00
500fbe5ef1 Achievements: Fix potential uninitialized data read 2024-07-14 21:25:25 +10:00
8698298499 CPU/NewRec: Fix incorrect condition in GenerateCall() 2024-07-14 21:25:25 +10:00
a5a320720a GPU/HW: Fix incorrect dirty rect union
Reduces GPU usage during screen waves effect in Um Jammer Lammy from
over 70% down to 3% on my 7900GRE at 9x.
2024-07-14 18:26:02 +10:00
fd0626aa6d GameList: Re-extract memcard icon if deleted
But don't keep trying if the game doesn't have a save.
2024-07-14 18:26:02 +10:00