static void Main(string[] args) { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterType<Cpu>().As<ICpu>().SingleInstance(); containerBuilder.RegisterType<Emulator>().As<IEmulator>(); containerBuilder.RegisterType<Memory>().As<IMemory>().SingleInstance(); containerBuilder.RegisterType<Ppu>().As<IPpu>().SingleInstance(); containerBuilder.RegisterType<StolenPpu>().SingleInstance(); containerBuilder.RegisterType<Lazy<StolenPpu>>().SingleInstance(); var instructionTypes = Assembly.GetExecutingAssembly().GetTypes().Where(f => typeof(IInstruction).IsAssignableFrom(f) && !f.IsAbstract).ToArray(); containerBuilder.RegisterTypes(instructionTypes) .As<IInstruction>(); //var cartridge = new Cartridge("../../roms/nestest.nes"); var cartridge = new Cartridge("../../roms/Balloon Fight (JU) [!].nes"); containerBuilder.RegisterInstance(cartridge).As<ICartridge>(); var container = containerBuilder.Build(); var emulator = container.Resolve<IEmulator>(); var memory = container.Resolve<IMemory>(); memory.SetCartridge(cartridge); emulator.Reset(); for (;;) { emulator.Step(); } }
private static IContainer ConfigureApplication(MainForm mainForm) { var builder = new ContainerBuilder(); builder.RegisterType<InputSource>().As<IInputSource>().SingleInstance(); builder.RegisterInstance(mainForm).As<IPresenter>(); builder.RegisterType<Cpu>().As<ICpu>().SingleInstance(); builder.RegisterType<Emulator>().As<IEmulator>().SingleInstance(); builder.RegisterType<Memory>().As<IMemory>().SingleInstance(); builder.RegisterType<Ppu>().As<IPpu>().SingleInstance(); builder.RegisterType<StolenPpu>(); //var cartridge = new Cartridge("../../../LeetNES/roms/nestest.nes"); var cartridge = new Cartridge("../../../LeetNES/roms/Bomberman (U).nes"); builder.RegisterInstance(cartridge).As<ICartridge>(); var instructionTypes = typeof(IInstruction).Assembly.GetTypes().Where(f => typeof(IInstruction).IsAssignableFrom(f) && !f.IsAbstract).ToArray(); builder.RegisterTypes(instructionTypes).As<IInstruction>(); return builder.Build(); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { // var cartridge = new Cartridge("../../../LeetNES/roms/nestest.nes");//"Bomberman (U).nes"); //var cartridge = new Cartridge("../../../LeetNES/roms/Bomberman (U).nes"); var cartridge = new Cartridge("../../../LeetNES/roms/Balloon Fight (JU) [!].nes"); // emulator.LoadCartridge(cartridge); emulator.Reset(); base.Initialize(); }