70 Commits

Author SHA1 Message Date
Connor McLaughlin
e64f8cc2c5 CDROM: Jump to seek target on pause while seeking
Fixes music in No Fear Downhill Mountain Biking, but needs more hardware
tests to confirm the behavior here.
2021-04-21 01:44:33 +10:00
Connor McLaughlin
50d712c3fe CDImage: Support sub-images, use subimages for m3u 2021-03-27 15:18:29 +10:00
Connor McLaughlin
4441bb1a91 CDROM: Apply volume on output not sector read
Fixes audio starting too late in Mega Man Legends.
2021-03-18 13:00:58 +10:00
Connor McLaughlin
2c1999e622 CDROM: Simulate holding position for GetlocP
Fixes lockups in Tomb Raider.
2021-02-14 18:36:21 +10:00
Connor McLaughlin
8c8f29c047 CDROM: Double audio FIFO low watermark size
Gives a better chance to catch up in case of desyncs.
2021-01-20 12:09:44 +10:00
Connor McLaughlin
75aa52ab06 CDROM: Fail reads immediately for audio/unlicensed CDs
Fixes first track being unavailable on audio CDs in Vib-Ribbon.
2021-01-01 01:38:14 +10:00
Connor McLaughlin
f9ac25f2b8 CDROM: Actually fix playing tracks 10+ 2020-12-28 01:40:38 +10:00
Connor McLaughlin
a6947fbc70 CDROM: Implement fast forward/rewind 2020-10-30 00:44:39 +10:00
Connor McLaughlin
27697d0508 System: Implement CPU overclocking [SAVEVERSION+]
Partial credit to @CookiePLMonster as well.
2020-09-30 23:48:34 +10:00
Connor McLaughlin
b6f871d2b9
JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
2020-07-31 17:09:18 +10:00
Connor McLaughlin
8e1c0a4fe4 System: Support loading m3u playlists 2020-07-23 02:36:05 +10:00
Connor McLaughlin
f28ef01d24 CDROM: Move audio FIFO to CDROM class and skip sectors when unempty
Fixes cutscene audio in Nickelodeon Rugrats - Search for Reptar.
2020-07-22 00:05:52 +10:00
Connor McLaughlin
93528db388 System: Use existing CD media when loading state where possible 2020-07-22 00:02:37 +10:00
Connor McLaughlin
50a25b63b1 CDROM: Track seek position when resetting
Fixes Blasto hanging after starting game.
2020-07-11 20:35:36 +10:00
Connor McLaughlin
dcfb929de5 CDROM: Fix double-reads hitting incorrect sector again
Fixes Bedlem / Rise 2 without breaking Vigilante 8 - 2nd Offense.
2020-06-02 00:59:13 +10:00
Connor McLaughlin
a4f79de7f6 CDROM: Return error for incorrect parameter count 2020-05-30 21:59:03 +10:00
Connor McLaughlin
340640821e CDROM: Add delay when swapping discs
Fixes broken disc swap detection in Metal Gear Solid.
2020-05-20 02:26:07 +10:00
Connor McLaughlin
5d46556b7d CDROM: Update position while seeking for GetlocP
Fixes track selection in WipEout.
2020-05-20 01:52:54 +10:00
Connor McLaughlin
e1157bff65 CDROM: Don't delay CDDA report, only skip index 0
Fixes music in Advanced V.G.
2020-05-16 00:27:09 +10:00
Connor McLaughlin
d6f6154380 CDROM: Read last delivered sector when pausing and reading without seek
Fixes Adidas Pro Soccer, Bedlem, Rise 2.
2020-05-13 00:13:57 +10:00
Connor McLaughlin
d866bd9cb8 CDROM: Reset XA resampler state on read
Should get rid of pops when switching files.
2020-05-12 12:36:10 +10:00
Connor McLaughlin
5b389ae13d CDROM: Synthesize lead-out area and stop reading when reached 2020-05-08 10:51:49 +10:00
Connor McLaughlin
a4416d8cf5 CDROM: Add seek time when starting reading/playing without setloc 2020-04-25 14:16:20 +10:00
Connor McLaughlin
05e4e7d262 CDROM: Add timing for speed changes/adjust seek timing
This makes the BIOS take longer to load the executable off the disc,
giving the sound effects longer to fade out and reducing the overlap
with the game.
2020-04-11 00:40:44 +10:00
Connor McLaughlin
08567fedf4 CDROM: Fix crash when loading save state from different system 2020-04-08 13:08:27 +10:00
Connor McLaughlin
0c1547d9e3 CDROM: Don't use valid bit for last subq, read on reset
Fixes GetlocP failing after resetting the system, causing some FMVs to
break/games to get wedged.
2020-04-06 00:25:56 +10:00
Connor McLaughlin
45d7294c3c CDROM: Limit XA playback to first-identified file/channel
Fixes background music in initial menu of Tomb Raider III.
2020-04-05 01:39:43 +10:00
Connor McLaughlin
f6711cbafa CDROM: Pausing while seeking should be an error response
Confirmed by hardware test.
2020-03-31 22:28:55 +10:00
Connor McLaughlin
00c24c2501 CDROM: Adjust ACK timings to be closer to hardware test results
Fixes Shrek Treasure Hunt.
2020-03-31 22:28:48 +10:00
Connor McLaughlin
02f67a801e CDROM: Fix behavior of stat bit 5 according to hardware tests 2020-03-29 17:52:37 +10:00
Connor McLaughlin
deb2865606 CDROM: Preserve header valid bit on more commands
Fixes Goryuujin Electro hanging on boot.
2020-03-29 01:16:01 +10:00
Connor McLaughlin
0e0bd2852f CDROM: Trigger INT5 on shell open
This behaviour has been verified on console.

Fixes disc swap detection in "Arc the Lad III"
2020-03-29 01:15:04 +10:00
Connor McLaughlin
10197506c5 CDROM: Implement 8-sector buffering behavior 2020-03-29 01:13:25 +10:00
Connor McLaughlin
e076526898 CDROM: Rework sector buffering behavior
This has not been tested on hardware yet, but fixes a couple of games.
2020-03-12 15:33:07 +10:00
Connor McLaughlin
3effa1238f CDROM: Return correct SCEx string based on disc region
Fixes SCEI/SCEE displaying as SCEE in BIOS.
2020-03-12 13:51:53 +10:00
Connor McLaughlin
e98c753d3d CDROM: Delay the first CDDA report by one second
Needs hardware testing...
2020-03-09 00:01:28 +10:00
Connor McLaughlin
4eeaa38ccd CDROM: Don't persist seek error bit in secondary status
Fixes Viewpoint (#56).
2020-03-08 15:54:09 +10:00
Connor McLaughlin
c700913322 CDROM: Implement SetSession command 2020-03-07 15:10:19 +10:00
Connor McLaughlin
959a555274 CDROM: Implement asynchronous disc reading 2020-02-22 00:24:35 +09:00
Connor McLaughlin
1b9609ef61 Implement event-based scheduler instead of lock-step components 2020-01-24 16:23:39 +10:00
Connor McLaughlin
0a5f7fcd75 System: Update running game when media changes from save state 2020-01-24 14:50:48 +10:00
Connor McLaughlin
5d0a6f88ad CDROM: Header valid/playing should not be set on SeekL
Fixes Syphon Filter locking up on boot.
2019-11-23 19:13:50 +10:00
Connor McLaughlin
246c97ccb3 System: Scaffolding for multi-system/multi-bios 2019-11-16 20:50:59 +10:00
Connor McLaughlin
d6209937fb CDROM: Properly handle audio sectors in SeekL 2019-11-16 12:54:41 +10:00
Connor McLaughlin
8cfb8d7922 CDROM: Fix track skip behavior with track=0
Fixes Doom.
2019-11-13 16:33:51 +10:00
Connor McLaughlin
8e06f86db8 CDROM: Implement auto-pause at end of track 2019-11-12 20:40:37 +10:00
Connor McLaughlin
6f4cf7d5e3 System: Support changing BIOS path 2019-11-11 19:43:39 +10:00
Connor McLaughlin
5a84122862 CDROM: Implement CDDA report 2019-11-10 23:03:52 +10:00
Connor McLaughlin
ab90d287bb CDROM: Use Sub-Channel Q for GetLocP 2019-11-10 22:45:48 +10:00
Connor McLaughlin
68fe492130 CDROM: Use seek time formula from Mednafen 2019-11-10 15:01:18 +10:00