public void Update(INESController controller) { var nesController = controller as NES001Controller; if (nesController != null) { Keyboard.GetCurrentState(ref State); if (State.IsPressed(Key.A)) { nesController.State |= NES001Controller.Buttons.A; } if (State.IsPressed(Key.S)) { nesController.State |= NES001Controller.Buttons.B; } if (State.IsPressed(Key.RightShift)) { nesController.State |= NES001Controller.Buttons.Select; } if (State.IsPressed(Key.Return)) { nesController.State |= NES001Controller.Buttons.Start; } if (State.IsPressed(Key.Up)) { nesController.State |= NES001Controller.Buttons.Up; } if (State.IsPressed(Key.Down)) { nesController.State |= NES001Controller.Buttons.Down; } if (State.IsPressed(Key.Left)) { nesController.State |= NES001Controller.Buttons.Left; } if (State.IsPressed(Key.Right)) { nesController.State |= NES001Controller.Buttons.Right; } } }
public Emulator(string path, INESController controller) { _path = path; Cartridge = new Cartridge(path); if (!Mappers.ContainsKey(Cartridge.MapperNumber)) { throw new NotImplementedException($"unsupported mapper {Cartridge.MapperNumber}"); } Mapper = (BaseMapper)Activator.CreateInstance(Mappers[Cartridge.MapperNumber].Key, this); CPU = new CPU(this); PPU = new PPU(this); APU = new APU(this); Controller = controller; Load(); }
public void Update(INESController controller) { var nesController = controller as NES001Controller; if (nesController != null) { joystick.GetCurrentState(ref state); if (state.Buttons[0]) { nesController.State |= NES001Controller.Buttons.B; } if (state.Buttons[1]) { nesController.State |= NES001Controller.Buttons.A; } if (state.Buttons[6]) { nesController.State |= NES001Controller.Buttons.Select; } if (state.Buttons[7]) { nesController.State |= NES001Controller.Buttons.Start; } if (state.X > 0xc000) { nesController.State |= NES001Controller.Buttons.Right; } if (state.X < 0x4000) { nesController.State |= NES001Controller.Buttons.Left; } if (state.Y > 0xc000) { nesController.State |= NES001Controller.Buttons.Down; } if (state.Y < 0x4000) { nesController.State |= NES001Controller.Buttons.Up; } if (state.PointOfViewControllers[0] < 0) { return; } if (state.PointOfViewControllers[0] <= 4500 || state.PointOfViewControllers[0] >= 31500) { nesController.State |= NES001Controller.Buttons.Up; } if (state.PointOfViewControllers[0] >= 13500 && state.PointOfViewControllers[0] <= 22500) { nesController.State |= NES001Controller.Buttons.Down; } if (state.PointOfViewControllers[0] >= 22500 && state.PointOfViewControllers[0] <= 31500) { nesController.State |= NES001Controller.Buttons.Left; } if (state.PointOfViewControllers[0] >= 4500 && state.PointOfViewControllers[0] <= 13500) { nesController.State |= NES001Controller.Buttons.Right; } } }