private void InitCallbacks() { _firmwareSizeCallback = FirmwareSize; _firmwareDataCallback = FirmwareData; _cdTocCallback = CDTOCCallback; _cdSectorCallback = CDSectorCallback; }
public Tst(CoreComm comm, IEnumerable <Disc> disks, Settings settings, SyncSettings syncSettings) : base(comm, new Configuration { DefaultFpsNumerator = 7159091, DefaultFpsDenominator = 455 * 263, DefaultWidth = 256, DefaultHeight = 232, MaxWidth = 1024, MaxHeight = 480, MaxSamples = 2048, SystemId = "PCFX" }) { var bios = comm.CoreFileProvider.GetFirmware("PCFX", "BIOS", true); if (bios.Length != 1024 * 1024) { throw new InvalidOperationException("Wrong size BIOS file!"); } _disks = disks.ToArray(); _diskReaders = disks.Select(d => new DiscSectorReader(d) { Policy = _diskPolicy }).ToArray(); _cdTocCallback = CDTOCCallback; _cdSectorCallback = CDSectorCallback; _settings = settings ?? new Settings(); _syncSettings = syncSettings ?? new SyncSettings(); BufferHeight = _settings.ScanlineEnd - _settings.ScanlineStart + 1; _core = PreInit <LibTst>(new WaterboxOptions { Filename = "pcfx.wbx", SbrkHeapSizeKB = 512, SealedHeapSizeKB = 2 * 1024, InvisibleHeapSizeKB = 4, PlainHeapSizeKB = 4 * 1024, MmapHeapSizeKB = 6 * 1024, SkipCoreConsistencyCheck = comm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxCoreConsistencyCheck), SkipMemoryConsistencyCheck = comm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck), }); SetCdCallbacks(); SetNativeSettingsBeforeInit(); if (!_core.Init(_disks.Length, bios)) { throw new InvalidOperationException("Core rejected the CDs!"); } ClearCdCallbacks(); PostInit(); SetCdCallbacks(); _controllerDeck = new TstControllerDeck(new[] { _syncSettings.Port1, _syncSettings.Port2 }); ControllerDefinition = _controllerDeck.Definition; SetLayerSettings(); }
public abstract void SetCDCallbacks(LibSaturnus.CDTOCCallback toccallback, LibSaturnus.CDSectorCallback sectorcallback);