Commit graph

172 commits

Author SHA1 Message Date
Connor McLaughlin 1947080d91 CDROM: GetlocL should return an error while seeking
Or more specifically, the coarse seek part. Verified with hardware
tests.
2020-06-01 21:40:28 +10:00
Connor McLaughlin f856a8ad65 CDROM: Ignore pending setloc after read/play
Fixes games which send a second Setloc after reading, e.g. Army Men -
Sarge's Heroes.
2020-05-31 17:03:15 +10:00
Connor McLaughlin 2d067bb101 CDROM: Fix warning log spam on command 2020-05-31 02:41:42 +10:00
Connor McLaughlin 0672cf4873 CDROM: Implement a heuristic for command cancelling
See note in source. Fixes loading times and slowed down audio in Voice
Idol Collection - Pool Bar Story.
2020-05-30 22:04:15 +10:00
Connor McLaughlin a4f79de7f6 CDROM: Return error for incorrect parameter count 2020-05-30 21:59:03 +10:00
Connor McLaughlin 07e8ab4446 CDROM: Increase seek delay by one sector
Fixes Resident Evil 2.
2020-05-30 02:19:01 +10:00
Connor McLaughlin 4e8da3cb41 CDROM: Replace sound map assert with error log
I am not aware of any games which use it yet, so have no way of testing
if the implementation is correct.
2020-05-28 03:07:33 +10:00
Connor McLaughlin 2dd7f48d97 CDROM: Don't skip pregap for CDDA
Fixes music looping in Treasure Gear.
2020-05-28 02:42:18 +10:00
Connor McLaughlin 2264849151 CDROM: Update position when double-seeking
Doesn't fix anything I'm aware of, but makes sense.
2020-05-28 02:41:53 +10:00
Connor McLaughlin 1494f2bc75 CDROM: Set m_current_lba to the sector being read
Fixes double-read commands returning incorrect sectors.

Fixes Vigilante 8 - 2nd Offense.
2020-05-24 13:28:12 +10:00
Connor McLaughlin 3c7229dfe2 CDROM: Add 3 sectors read time to seek time
Simulates the drive's inprecise coarse seek then reading subq to get to
the exact sector.

Fixes Waku Waku Derby.
2020-05-20 23:52:35 +10:00
Connor McLaughlin d41bf86eaa CDROM: Don't apply logical seek rules to subq-based seeks
Fixes Panekit - Infinitive Crafting Toy Case.
2020-05-20 19:30:46 +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 415880fc40 CDROM: Don't restart play/read when current == target
Fixes CDDA locking up Buster Bros. Collection.
2020-05-20 02:05:19 +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 214e852a54 CDROM: Add time to read sector to seek time
Fixes Yuukyuu Gensoukyoku Ensemble 1.
2020-05-16 01:01:31 +10:00
Connor McLaughlin 110aa8bd93 CDROM: Reset read sector buffer on INT1
Fixes GetlocL -> DMA out returning incorrect data.

Fixes FoxKids.com - Micro Maniacs Racing.
2020-05-16 00:33:03 +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 777809b3b0 CDROM: Fix XA filter change not applying immediately
Fixes audio getting cut off in PaRappa the Rapper - The Hip Hop Hero,
underwater music in R-Type Delta.
2020-05-13 00:14:20 +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 37d9f6344d CDROM: Ignore Read/Play command without setloc/param
Fixes title screen music in Monkey Magic.
2020-05-11 22:55:14 +10:00
Connor McLaughlin 684e83168e CDROM: Prevent successful seeking to the lead-out area of the disc 2020-05-08 15:41:45 +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 dc487655df CDROM: More timing refinements 2020-04-30 01:36:07 +10:00
Connor McLaughlin 2d92e0a819 CDROM: Reduce ACK timing 2020-04-30 00:12:39 +10:00
Connor McLaughlin 72f6503bec CDROM: Reduce speed change delay 2020-04-25 14:16:36 +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 f1d1129e05 CDROM: Don't assert if SetMode.bit4 is set 2020-04-19 22:31:22 +10:00
Connor McLaughlin a4a112f5d8 CDROM: Deliver invalid sub-q (libcrypted) sectors to CPU
Nocash documentation would suggest that it only needs the sector to be
skipped by GetLocP. Which would make sense as the non-subchannel data is
still completely valid.
2020-04-11 02:44:43 +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 b7cdaaf36a CDROM: Defer setting reading/playing bit until sector is read
Fixes softlock in Chicken Run.
2020-04-06 00:25:49 +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 15c33ebedb CDROM: Add "Enable Region Check" option 2020-04-01 01:48:37 +10:00
Connor McLaughlin e36e70a266 CDROM: Drop sector buffer not read back to dev log level
This happens a lot in games and it's perfectly fine, but sometimes it
can mean the game is wedged and not receiving data.
2020-03-31 22:29:03 +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 3f042cd477 CDROM: Fix play command with parameter forever seeking
Fixes audio playback when selecting track in BIOS CD player.
2020-03-30 00:13:46 +10:00
Connor McLaughlin 3a31282fe6 CDROM: GetTN should return first_track, last_track
Fixes CDDA playback in Street Sk8er, Jellyfish - The Healing Friend,
probably others.
2020-03-30 00:13:42 +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 2292292956 CDROM: Set mode to read raw sectors after reset
Fixes "This is Football 2", possibly others.
2020-03-29 01:14:58 +10:00
Connor McLaughlin 10197506c5 CDROM: Implement 8-sector buffering behavior 2020-03-29 01:13:25 +10:00
Connor McLaughlin 22a0d8f93c CDROM: Implement Sync/00h command 2020-03-28 02:24:36 +10:00
Connor McLaughlin c8af4abad8 CDROM: Don't queue up a second INT1 when one is still pending 2020-03-24 00:21:22 +10:00
Connor McLaughlin 9ce63952fb TimingEvent: Fix events losing time when rescheduling outside handler 2020-03-24 00:20:45 +10:00
Connor McLaughlin a4486cf6fa CDROM: Don't miss last three frames at end of sector 2020-03-21 12:31:40 +10:00
Connor McLaughlin bad5b30a61 CDROM: Fix incorrect volume matrix update/application
Fixes #90.
2020-03-19 00:28:57 +10:00
Connor McLaughlin 3223f87eeb CDROM: Simplify register indexing for write 2020-03-19 00:28:41 +10:00
Connor McLaughlin c9e5e3a43e CDROM: Add missing disc/console region check
Fixes #106.
2020-03-17 12:47:46 +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 419422a2d7 CDROM: Return console region string based on system 2020-03-12 13:51:38 +10:00
Connor McLaughlin c2370c598e CDROM: Don't crash when stopping with no media
Fixes #76.
2020-03-10 00:09:27 +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 776159265a CDROM: Skip pregap when processing CDDA 2020-03-09 00:01:26 +10:00
Connor McLaughlin 631865469d CDROM: Bump up ACK delay timing 2020-03-08 18:07:39 +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 34ae0dae13 CDROM: Fix upper bound for XA audio frames and sync SPU 2020-03-07 17:29:41 +10:00
Connor McLaughlin eb6dbbfb13 CDROM: Set seeking bit in stat when seeking 2020-03-07 15:10:49 +10:00
Connor McLaughlin c700913322 CDROM: Implement SetSession command 2020-03-07 15:10:19 +10:00
Connor McLaughlin d0f420de10 CDROM: Log invalid command identifiers 2020-03-07 14:00:15 +10:00
Connor McLaughlin 82eb14efb1 Core: Apply DPI scaling to debug windows 2020-02-28 16:59:51 +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 71c1e243fe Remove YBaseLib dependency 2020-01-10 13:40:53 +10:00
Connor McLaughlin c52040434a Core: Linux warning fixes 2020-01-09 08:46:52 +10:00
Connor McLaughlin 42ee55ae17 CDROM: Seek to start of first track on stop
Fixes WipEout crashing after track selection.
2019-12-07 21:09:30 +10:00
Connor McLaughlin 36fbc4523d CDROM: Skip reading sectors which have an invalid SubQ checksum
i.e. libcrypt support
2019-12-06 21:15:04 +10:00
Connor McLaughlin bc44d4b1b0 CDImage: Support SBI replacement subchannel Q for cue/bin images 2019-12-06 21:14:58 +10:00
Connor McLaughlin 53621bd3eb CDROM: Fix clipping when combined left/volume volume > 0x80 2019-12-06 00:33:46 +10:00
Connor McLaughlin a3f2286bdb CDROM: Hack to set subq position before seek instead of after
I assume this should be set throughout the seek to the current disc
position, but since we're only updating at the end of the seek, this'll
do.

Fixes music looping in Spyro.
2019-12-02 17:02:59 +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 90cf6b8b41 CDROM: Don't lose INT1 interrupts from command execution 2019-11-12 18:02:36 +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
Connor McLaughlin 5dd4f6f65e CDROM: Implement ReadTOC command 2019-11-09 00:21:11 +10:00
Connor McLaughlin 7e7b7dc216 CDROM: Stub out SCEx test commands 2019-11-09 00:21:04 +10:00
Connor McLaughlin 5eea2f9ced CDROM: Fix interrupt enable register having no effect 2019-11-08 23:49:28 +10:00
Connor McLaughlin c3efc5637a CDROM: Implement Getparam command 2019-11-08 22:45:06 +10:00
Connor McLaughlin 487f952c48 CDROM: Clear response FIFO before writing results 2019-11-08 22:42:42 +10:00
Connor McLaughlin 02132a9f29 CDROM: INT2 should not be sent after read/play command 2019-11-08 21:16:21 +10:00
Connor McLaughlin 6dc7069d7c CDROM: Fix buffer overflow 2019-11-03 00:09:17 +10:00
Connor McLaughlin 3128d0ebcb CDROM: Shell open flag behavior when changing discs 2019-10-28 17:34:46 +10:00
Connor McLaughlin a1ed2d1d77 CDROM: Implement motor on command 2019-10-28 17:25:04 +10:00
Connor McLaughlin c15822d745 CDROM: Implement stop command 2019-10-28 17:19:29 +10:00
Connor McLaughlin 6bbf5b70bb CDROM: More refactoring, playing -> header valid bit changes 2019-10-27 19:55:49 +10:00
Connor McLaughlin dd4b9609b5 CDROM: Increase ack timing 2019-10-27 17:58:20 +10:00
Connor McLaughlin 739ada4721 CDROM: Send pre-pause/seek/read stat for commands 2019-10-27 14:38:48 +10:00
Connor McLaughlin 4181b8c6b5 CDROM: Fix XA sectors overwriting unfetched data sectors 2019-10-27 13:44:23 +10:00