Пример #1
0
		public MednaDisc(string pathToDisc)
		{
			if (!IsLibraryAvailable)
				throw new InvalidOperationException("MednaDisc library is not available!");

			handle = mednadisc_LoadCD(pathToDisc);
			if (handle == IntPtr.Zero)
				throw new InvalidOperationException("Failed to load MednaDisc: " + pathToDisc);

			//read the mednafen toc
			TOCTracks = new MednadiscTOCTrack[101];
			fixed (MednadiscTOCTrack* _tracks = &TOCTracks[0])
				fixed(MednadiscTOC* _toc = &TOC)
					mednadisc_ReadTOC(handle, _toc, _tracks);

			//leave the disc open until this is disposed so we can read sectors from it
		}
Пример #2
0
        /// <exception cref="InvalidOperationException"><see cref="IsLibraryAvailable"/> is <see langword="false"/> (could not load <c>mednadisc.dll</c>), or unmanaged call failed</exception>
        public MednaDisc(string pathToDisc)
        {
            if (!IsLibraryAvailable)
            {
                throw new InvalidOperationException($"{nameof(MednaDisc)} library is not available!");
            }

            handle = mednadisc_LoadCD(pathToDisc);
            if (handle == IntPtr.Zero)
            {
                throw new InvalidOperationException($"Failed to load {nameof(MednaDisc)}: {pathToDisc}");
            }

            //read the mednafen toc
            TOCTracks = new MednadiscTOCTrack[101];

            fixed(MednadiscTOCTrack *_tracks = &TOCTracks[0])
            fixed(MednadiscTOC * _toc = &TOC)
            mednadisc_ReadTOC(handle, _toc, _tracks);

            //leave the disc open until this is disposed so we can read sectors from it
        }
Пример #3
0
		public static extern void mednadisc_ReadTOC(IntPtr disc, MednadiscTOC* toc, MednadiscTOCTrack* tracks101);