private unsafe void SetCallbacks(Wrapper wrapper) { _environmentCallback = wrapper.RetroEnvironmentCallback; _videoRefreshCallback = wrapper.RetroVideoRefreshCallback; _audioSampleCallback = wrapper.RetroAudioSampleCallback; _audioSampleBatchCallback = wrapper.RetroAudioSampleBatchCallback; _inputPollCallback = wrapper.RetroInputPollCallback; _inputStateCallback = wrapper.RetroInputStateCallback; _logPrintfCallback = wrapper.RetroLogPrintf; _perfGetTimeUsecCallback = wrapper.RetroPerfGetTimeUsec; _perfGetCounterCallback = wrapper.RetroPerfGetCounter; _getCPUFeaturesCallback = wrapper.RetroGetCPUFeatures; _perfLogCallback = wrapper.RetroPerfLog; _perfRegisterCallback = wrapper.RetroPerfRegister; _perfStartCallback = wrapper.RetroPerfStart; _perfStopCallback = wrapper.RetroPerfStop; }
protected void InitInterfaces() { retro_log_printf_cb = new retro_log_printf_t(RetroLogPrintf); retro_rumble_interface.set_rumble_state = new retro_set_rumble_state_t(RetroSetRumbleState); //no way (need new mechanism) to check for SSSE3, MMXEXT, SSE4, SSE42 retro_perf_callback.get_cpu_features = new retro_get_cpu_features_t(() => (ulong)( (Win32PInvokes.IsProcessorFeaturePresent(Win32PInvokes.ProcessorFeature.InstructionsXMMIAvailable) ? RETRO_SIMD.SSE : 0) | (Win32PInvokes.IsProcessorFeaturePresent(Win32PInvokes.ProcessorFeature.InstructionsXMMI64Available) ? RETRO_SIMD.SSE2 : 0) | (Win32PInvokes.IsProcessorFeaturePresent(Win32PInvokes.ProcessorFeature.InstructionsSSE3Available) ? RETRO_SIMD.SSE3 : 0) | (Win32PInvokes.IsProcessorFeaturePresent(Win32PInvokes.ProcessorFeature.InstructionsMMXAvailable) ? RETRO_SIMD.MMX : 0) )); retro_perf_callback.get_perf_counter = new retro_perf_get_counter_t(() => System.Diagnostics.Stopwatch.GetTimestamp()); retro_perf_callback.get_time_usec = new retro_perf_get_time_usec_t(() => DateTime.Now.Ticks / 10); retro_perf_callback.perf_log = new retro_perf_log_t(() => { }); retro_perf_callback.perf_register = new retro_perf_register_t((ref retro_perf_counter counter) => { }); retro_perf_callback.perf_start = new retro_perf_start_t((ref retro_perf_counter counter) => { }); retro_perf_callback.perf_stop = new retro_perf_stop_t((ref retro_perf_counter counter) => { }); }