コード例 #1
0
        public static LibGPGX.CDData GetCDDataStruct(Disc cd)
        {
            var ret = new LibGPGX.CDData();

            var ses    = cd.Session1;
            int ntrack = ses.InformationTrackCount;

            // bet you a dollar this is all wrong
            //zero 07-jul-2015 - throws a dollar in the pile, since he probably messed it up worse
            for (int i = 0; i < LibGPGX.CD_MAX_TRACKS; i++)
            {
                if (i < ntrack)
                {
                    ret.tracks[i].start = ses.Tracks[i + 1].LBA;
                    ret.tracks[i].end   = ses.Tracks[i + 2].LBA;
                    if (i == ntrack - 1)
                    {
                        ret.end  = ret.tracks[i].end;
                        ret.last = ntrack;
                    }
                }
                else
                {
                    ret.tracks[i].start = 0;
                    ret.tracks[i].end   = 0;
                }
            }

            return(ret);
        }
コード例 #2
0
        unsafe byte[] GetCDData()
        {
            LibGPGX.CDData ret  = new LibGPGX.CDData();
            int            size = Marshal.SizeOf(ret);

            ret.readcallback = cd_callback_handle = new LibGPGX.cd_read_cb(CDRead);

            var ses    = CD.Session1;
            int ntrack = ses.InformationTrackCount;

            // bet you a dollar this is all wrong
            //zero 07-jul-2015 - throws a dollar in the pile, since he probably messed it up worse
            for (int i = 0; i < LibGPGX.CD_MAX_TRACKS; i++)
            {
                if (i < ntrack)
                {
                    ret.tracks[i].start = ses.Tracks[i + 1].LBA;
                    ret.tracks[i].end   = ses.Tracks[i + 2].LBA;
                    if (i == ntrack - 1)
                    {
                        ret.end  = ret.tracks[i].end;
                        ret.last = ntrack;
                    }
                }
                else
                {
                    ret.tracks[i].start = 0;
                    ret.tracks[i].end   = 0;
                }
            }

            byte[] retdata = new byte[size];

            fixed(byte *p = &retdata[0])
            {
                Marshal.StructureToPtr(ret, (IntPtr)p, false);
            }

            return(retdata);
        }
コード例 #3
0
        unsafe byte[] GetCDData()
        {
            LibGPGX.CDData ret  = new LibGPGX.CDData();
            int            size = Marshal.SizeOf(ret);

            ret.readcallback = cd_callback_handle = new LibGPGX.cd_read_cb(CDRead);

            var ses    = CD.TOC.Sessions[0];
            int ntrack = ses.Tracks.Count;

            // bet you a dollar this is all wrong
            for (int i = 0; i < LibGPGX.CD_MAX_TRACKS; i++)
            {
                if (i < ntrack)
                {
                    ret.tracks[i].start = ses.Tracks[i].Indexes[1].aba - 150;
                    ret.tracks[i].end   = ses.Tracks[i].length_aba + ret.tracks[i].start;
                    if (i == ntrack - 1)
                    {
                        ret.end  = ret.tracks[i].end;
                        ret.last = ntrack;
                    }
                }
                else
                {
                    ret.tracks[i].start = 0;
                    ret.tracks[i].end   = 0;
                }
            }

            byte[] retdata = new byte[size];

            fixed(byte *p = &retdata[0])
            {
                Marshal.StructureToPtr(ret, (IntPtr)p, false);
            }

            return(retdata);
        }
コード例 #4
0
ファイル: GPGX.cs プロジェクト: SaxxonPike/BizHawk
		unsafe byte[] GetCDData()
		{
			LibGPGX.CDData ret = new LibGPGX.CDData();
			int size = Marshal.SizeOf(ret);

			ret.readcallback = cd_callback_handle = new LibGPGX.cd_read_cb(CDRead);

			var ses = CD.Session1;
			int ntrack = ses.InformationTrackCount;

			// bet you a dollar this is all wrong
			//zero 07-jul-2015 - throws a dollar in the pile, since he probably messed it up worse
			for (int i = 0; i < LibGPGX.CD_MAX_TRACKS; i++)
			{
				if (i < ntrack)
				{
					ret.tracks[i].start = ses.Tracks[i + 1].LBA;
					ret.tracks[i].end = ses.Tracks[i + 2].LBA;
					if (i == ntrack - 1)
					{
						ret.end = ret.tracks[i].end;
						ret.last = ntrack;
					}
				}
				else
				{
					ret.tracks[i].start = 0;
					ret.tracks[i].end = 0;
				}
			}

			byte[] retdata = new byte[size];

			fixed (byte* p = &retdata[0])
			{
				Marshal.StructureToPtr(ret, (IntPtr)p, false);
			}
			return retdata;
		}
コード例 #5
0
ファイル: GPGX.cs プロジェクト: ddugovic/RASuite
		unsafe byte[] GetCDData()
		{
			LibGPGX.CDData ret = new LibGPGX.CDData();
			int size = Marshal.SizeOf(ret);

			ret.readcallback = cd_callback_handle = new LibGPGX.cd_read_cb(CDRead);

			var ses = CD.TOC.Sessions[0];
			int ntrack = ses.Tracks.Count;

			// bet you a dollar this is all wrong
			for (int i = 0; i < LibGPGX.CD_MAX_TRACKS; i++)
			{
				if (i < ntrack)
				{
					ret.tracks[i].start = ses.Tracks[i].Indexes[1].aba - 150;
					ret.tracks[i].end = ses.Tracks[i].length_aba + ret.tracks[i].start;
					if (i == ntrack - 1)
					{
						ret.end = ret.tracks[i].end;
						ret.last = ntrack;
					}
				}
				else
				{
					ret.tracks[i].start = 0;
					ret.tracks[i].end = 0;
				}
			}

			byte[] retdata = new byte[size];

			fixed (byte* p = &retdata[0])
			{
				Marshal.StructureToPtr(ret, (IntPtr)p, false);
			}
			return retdata;
		}