Esempio n. 1
0
        public Atari2600(CoreComm comm, GameInfo game, byte[] rom, object settings, object syncSettings)
        {
            var ser = new BasicServiceProvider(this);

            ServiceProvider = ser;

            _ram         = new byte[128];
            CoreComm     = comm;
            Settings     = (A2600Settings)settings ?? new A2600Settings();
            SyncSettings = (A2600SyncSettings)syncSettings ?? new A2600SyncSettings();

            _controllerDeck = new Atari2600ControllerDeck(SyncSettings.Port1, SyncSettings.Port2);

            _leftDifficultySwitchPressed  = SyncSettings.LeftDifficulty;
            _rightDifficultySwitchPressed = SyncSettings.RightDifficulty;

            Rom   = rom;
            _game = game;

            if (!game.GetOptionsDict().ContainsKey("m"))
            {
                game.AddOption("m", DetectMapper(rom));
            }

            if (Rom.HashSHA1() == "3A77DB43B6583E8689435F0F14AA04B9E57BDDED" ||
                Rom.HashSHA1() == "E986E1818E747BEB9B33CE4DFF1CDC6B55BDB620" ||
                Rom.HashSHA1() == "982B8016B393A9AA7DD110295A53C4612ECF2141")
            {
                game.RemoveOption("m");
                game.AddOption("m", "F8_sega");
            }

            Console.WriteLine("Game uses mapper " + game.GetOptionsDict()["m"]);
            Console.WriteLine(Rom.HashSHA1());
            RebootCore();
            SetupMemoryDomains();

            Tracer = new TraceBuffer {
                Header = Cpu.TraceHeader
            };

            ser.Register <IDisassemblable>(Cpu);
            ser.Register <ITraceable>(Tracer);
            ser.Register <IVideoProvider>(_tia);
            ser.Register <ISoundProvider>(_dcfilter);
            ser.Register <IStatable>(new StateSerializer(SyncState));
        }
Esempio n. 2
0
        public Atari2600(GameInfo game, byte[] rom, Atari2600.A2600Settings settings, Atari2600.A2600SyncSettings syncSettings)
        {
            var ser = new BasicServiceProvider(this);

            ServiceProvider = ser;

            _ram         = new byte[128];
            Settings     = (A2600Settings)settings ?? new A2600Settings();
            SyncSettings = (A2600SyncSettings)syncSettings ?? new A2600SyncSettings();

            _controllerDeck = new Atari2600ControllerDeck(SyncSettings.Port1, SyncSettings.Port2);

            _leftDifficultySwitchPressed  = SyncSettings.LeftDifficulty;
            _rightDifficultySwitchPressed = SyncSettings.RightDifficulty;

            Rom   = rom;
            _game = game;

            if (!game.GetOptions().ContainsKey("m"))
            {
                game.AddOption("m", DetectMapper(rom));
            }

            var romHashSHA1 = SHA1Checksum.ComputePrefixedHex(Rom);

            if (romHashSHA1 is RomChecksums.CongoBongo or RomChecksums.Tapper or RomChecksums.KangarooNotInGameDB)
            {
                game.RemoveOption("m");
                game.AddOption("m", "F8_sega");
            }

            Console.WriteLine("Game uses mapper " + game.GetOptions()["m"]);
            Console.WriteLine(romHashSHA1);
            RebootCore();
            SetupMemoryDomains();

            Tracer = new TraceBuffer(Cpu.TraceHeader);

            ser.Register <IDisassemblable>(Cpu);
            ser.Register <ITraceable>(Tracer);
            ser.Register <IVideoProvider>(_tia);
            ser.Register <ISoundProvider>(_dcfilter);
            ser.Register <IStatable>(new StateSerializer(SyncState));
        }