Example #1
0
        /// <summary>
        /// set up callback
        /// </summary>
        /// <param name="line">scanline. -1 = end of frame, -2 = RIGHT NOW</param>
        public void SetScanlineCallback(ScanlineCallback callback, int line)
        {
            if (GambatteState == IntPtr.Zero)
            {
                return;                 // not sure how this is being reached.  tried the debugger...
            }

            endofframecallback = null;
            if (callback == null || line == -1 || line == -2)
            {
                scanlinecb = null;
                LibGambatte.gambatte_setscanlinecallback(GambatteState, null, 0);
                if (line == -1)
                {
                    endofframecallback = callback;
                }
                else if (line == -2)
                {
                    callback(LibGambatte.gambatte_cpuread(GambatteState, 0xff40));
                }
            }
            else if (line >= 0 && line <= 153)
            {
                scanlinecb = delegate
                {
                    callback(LibGambatte.gambatte_cpuread(GambatteState, 0xff40));
                };
                LibGambatte.gambatte_setscanlinecallback(GambatteState, scanlinecb, line);
            }
            else
            {
                throw new ArgumentOutOfRangeException(nameof(line), "line must be in [0, 153]");
            }
        }
Example #2
0
        public void SetScanlineCallback(ScanlineCallback callback, int line)
        {
            _scanlineCallback     = callback;
            _scanlineCallbackLine = line;

            if (line == -2)
            {
                GetGPU();
                _scanlineCallback(ppu.LCDC);
            }
        }
Example #3
0
		public static extern void gambatte_setscanlinecallback(IntPtr core, ScanlineCallback callback, int sl);
Example #4
0
 public static extern void gambatte_setscanlinecallback(IntPtr core, ScanlineCallback callback, int sl);
Example #5
0
 public static extern void libmeteor_setscanlinecallback(ScanlineCallback callback, int scanline);
Example #6
0
 public void SetScanlineCallback(ScanlineCallback callback, int line)
 {
     _scanlineCallback     = callback;
     _scanlineCallbackLine = line;
     UpdateCoreScanlineCallback(true);
 }
Example #7
0
 public static extern void sameboy_setscanlinecallback(IntPtr core, ScanlineCallback callback, int sl);
Example #8
0
 public abstract void SetScanlineCallback(ScanlineCallback callback, int ly);
Example #9
0
 public abstract void sameboy_setscanlinecallback(IntPtr core, ScanlineCallback callback, int sl);
Example #10
0
		public static extern void libmeteor_setscanlinecallback(ScanlineCallback callback, int scanline);
Example #11
0
		/// <summary>
		/// set up callback
		/// </summary>
		/// <param name="callback"></param>
		/// <param name="line">scanline. -1 = end of frame, -2 = RIGHT NOW</param>
		public void SetScanlineCallback(ScanlineCallback callback, int line)
		{
			if (GambatteState == IntPtr.Zero)
				// not sure how this is being reached.  tried the debugger...
				return;
			endofframecallback = null;
			if (callback == null || line == -1 || line == -2)
			{
				scanlinecb = null;
				LibGambatte.gambatte_setscanlinecallback(GambatteState, null, 0);
				if (line == -1)
					endofframecallback = callback;
				else if (line == -2)
					callback(LibGambatte.gambatte_cpuread(GambatteState, 0xff40));
			}
			else if (line >= 0 && line <= 153)
			{
				scanlinecb = delegate()
				{
					callback(LibGambatte.gambatte_cpuread(GambatteState, 0xff40));
				};
				LibGambatte.gambatte_setscanlinecallback(GambatteState, scanlinecb, line);
			}
			else
				throw new ArgumentOutOfRangeException("line must be in [0, 153]");
		}