Exemple #1
0
        public SubNESHawk(CoreComm comm, GameInfo game, byte[] rom, /*string gameDbFn,*/ object settings, object syncSettings)
        {
            var ser = new BasicServiceProvider(this);

            subnesSettings     = (NES.NES.NESSettings)settings ?? new NES.NES.NESSettings();
            subnesSyncSettings = (NES.NES.NESSyncSettings)syncSettings ?? new NES.NES.NESSyncSettings();

            CoreComm = comm;

            subnes = new NES.NES(new CoreComm(comm.ShowMessage, comm.Notify)
            {
                CoreFileProvider = comm.CoreFileProvider
            },
                                 game, rom, subnesSettings, subnesSyncSettings);

            ser.Register <IVideoProvider>(subnes.videoProvider);
            ser.Register <ISoundProvider>(subnes);

            _tracer = new TraceBuffer {
                Header = "6502: PC, machine code, mnemonic, operands, registers (A, X, Y, P, SP), flags (NVTBDIZCR), CPU Cycle, PPU Cycle"
            };
            ser.Register <ITraceable>(_tracer);

            ServiceProvider = ser;

            (ServiceProvider as BasicServiceProvider).Register <IMemoryDomains>(subnes._memoryDomains);

            subnes.using_reset_timing = true;
            HardReset();
            current_cycle            = 0;
            subnes.cpu.ext_ppu_cycle = current_cycle;
            VBL_CNT = 0;
        }
Exemple #2
0
        public SubNESHawk(CoreComm comm, GameInfo game, byte[] rom, /*string gameDbFn,*/ object settings, object syncSettings)
        {
            var subNesSettings     = (NES.NES.NESSettings)settings ?? new NES.NES.NESSettings();
            var subNesSyncSettings = (NES.NES.NESSyncSettings)syncSettings ?? new NES.NES.NESSyncSettings();

            _nesCore = new NES.NES(new CoreComm(comm.ShowMessage, comm.Notify)
            {
                CoreFileProvider = comm.CoreFileProvider
            },
                                   game, rom, subNesSettings, subNesSyncSettings)
            {
                using_reset_timing = true
            };

            HardReset();
            current_cycle = 0;
            _nesCore.cpu.ext_ppu_cycle = current_cycle;
            VBL_CNT = 0;

            _nesStatable = _nesCore.ServiceProvider.GetService <IStatable>();

            var ser = new BasicServiceProvider(this);

            ServiceProvider = ser;

            ser.Register(_nesCore.ServiceProvider.GetService <IVideoProvider>());
            ser.Register(_nesCore.ServiceProvider.GetService <ISoundProvider>());
            ser.Register(_nesCore.ServiceProvider.GetService <ITraceable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IDisassemblable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IMemoryDomains>());
            ser.Register(_nesCore.ServiceProvider.GetService <INESPPUViewable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IBoardInfo>());
            ser.Register(_nesCore.ServiceProvider.GetService <ISaveRam>());
            ser.Register(_nesCore.ServiceProvider.GetService <IDebuggable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IRegionable>());
            ser.Register(_nesCore.ServiceProvider.GetService <ICodeDataLogger>());

            _tracer = new TraceBuffer {
                Header = "6502: PC, machine code, mnemonic, operands, registers (A, X, Y, P, SP), flags (NVTBDIZCR), CPU Cycle, PPU Cycle"
            };
            ser.Register(_tracer);


            var barCodeService = _nesCore.ServiceProvider.GetService <DatachBarcode>();

            if (barCodeService != null)
            {
                ser.Register(barCodeService);
            }
        }
Exemple #3
0
        public SubNESHawk(CoreComm comm, GameInfo game, byte[] rom, /*string gameDbFn,*/ NES.NES.NESSettings settings, NES.NES.NESSyncSettings syncSettings)
        {
            var subNesSettings     = (NES.NES.NESSettings)settings ?? new NES.NES.NESSettings();
            var subNesSyncSettings = (NES.NES.NESSyncSettings)syncSettings ?? new NES.NES.NESSyncSettings();

            _nesCore = new NES.NES(comm, game, rom, subNesSettings, subNesSyncSettings)
            {
                using_reset_timing = true
            };

            // Adds Reset timing control to controller definition
            _nesCore.ResetControllerDefinition();

            HardReset();
            current_cycle = 0;
            _nesCore.cpu.ext_ppu_cycle = current_cycle;
            VblankCount = 0;

            _nesStatable = _nesCore.ServiceProvider.GetService <IStatable>();

            var ser = new BasicServiceProvider(this);

            ServiceProvider = ser;

            ser.Register(_nesCore.ServiceProvider.GetService <IVideoProvider>());
            ser.Register(_nesCore.ServiceProvider.GetService <ISoundProvider>());
            ser.Register(_nesCore.ServiceProvider.GetService <ITraceable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IDisassemblable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IMemoryDomains>());
            ser.Register(_nesCore.ServiceProvider.GetService <INESPPUViewable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IBoardInfo>());
            ser.Register(_nesCore.ServiceProvider.GetService <ISaveRam>());
            ser.Register(_nesCore.ServiceProvider.GetService <IDebuggable>());
            ser.Register(_nesCore.ServiceProvider.GetService <IRegionable>());
            ser.Register(_nesCore.ServiceProvider.GetService <ICodeDataLogger>());

            const string TRACE_HEADER = "6502: PC, machine code, mnemonic, operands, registers (A, X, Y, P, SP), flags (NVTBDIZCR), CPU Cycle, PPU Cycle";

            _tracer = new TraceBuffer(TRACE_HEADER);
            ser.Register(_tracer);


            var barCodeService = _nesCore.ServiceProvider.GetService <DatachBarcode>();

            if (barCodeService != null)
            {
                ser.Register(barCodeService);
            }
        }