Exemplo n.º 1
0
 private void InitCallbacks()
 {
     _firmwareSizeCallback = FirmwareSize;
     _firmwareDataCallback = FirmwareData;
     _cdTocCallback        = CDTOCCallback;
     _cdSectorCallback     = CDSectorCallback;
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 public abstract void SetCDCallbacks(LibSaturnus.CDTOCCallback toccallback,
                                     LibSaturnus.CDSectorCallback sectorcallback);