From fda3ec03ed78cc04f11091e15dc2bd6f6e429fc6 Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 23 Jun 2015 20:11:06 -0500 Subject: [PATCH] improve subchannel mismatch reporting during disc a/b testing and add a comment about a failed experiment at a subcode deinterleaving optimization --- BizHawk.Client.DiscoHawk/DiscoHawk.cs | 43 ++++++++++++++++++++------- psx/mednadisc/Mednadisc.cpp | 11 +++---- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/BizHawk.Client.DiscoHawk/DiscoHawk.cs b/BizHawk.Client.DiscoHawk/DiscoHawk.cs index 2d365f58ef..a6bc15c57d 100644 --- a/BizHawk.Client.DiscoHawk/DiscoHawk.cs +++ b/BizHawk.Client.DiscoHawk/DiscoHawk.cs @@ -238,11 +238,9 @@ namespace BizHawk.Client.DiscoHawk var src_toc = src_disc.TOCRaw; var dst_toc = dst_disc.TOCRaw; - var src_databuf = new byte[2448]; var dst_databuf = new byte[2448]; - Action sw_dump_toc_one = (item) => { if(!item.Exists) @@ -302,13 +300,16 @@ namespace BizHawk.Client.DiscoHawk sw.WriteLine(); }; - Action sw_dump_chunk = (lba, addr, count, offender) => + int[] offenders = new int[12]; + Action sw_dump_chunk = (lba, dispaddr, addr, count, numoffenders) => { + var hashedOffenders = new HashSet(); + for (int i = 0; i < numoffenders; i++) hashedOffenders.Add(offenders[i]); sw.Write(" "); - for (int i = 0; i < count; i++) sw.Write((addr + i == offender) ? "vvv " : " "); + for (int i = 0; i < count; i++) sw.Write((hashedOffenders.Contains(dispaddr + i)) ? "vvv " : " "); sw.WriteLine(); sw.Write(" "); - for(int i=0;idisc; CDUtility::TOC &toc = md->toc; try { + //EDIT: this is handled now by the individual readers //if it's at the lead-out track or beyond, synthesize it as a lead-out sector - if(lba >= (int32)toc.tracks[100].lba) - synth_leadout_sector_lba(0x02, toc, lba, (uint8*)buf2448); - else + //if(lba >= (int32)toc.tracks[100].lba) + // synth_leadout_sector_lba(0x02, toc, lba, (uint8*)buf2448); + //else disc->Read_Raw_Sector((uint8*)buf2448,lba); } catch(MDFN_Error &) {