public bool PutSettings(NESSettings o) { Settings = o; if (Settings.ClipLeftAndRight) { videoProvider.left = 8; videoProvider.right = 247; } else { videoProvider.left = 0; videoProvider.right = 255; } CoreComm.ScreenLogicalOffsetX = videoProvider.left; CoreComm.ScreenLogicalOffsetY = Region == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine; SetPalette(Settings.Palette); apu.Square1V = Settings.Square1; apu.Square2V = Settings.Square2; apu.TriangleV = Settings.Triangle; apu.NoiseV = Settings.Noise; apu.DMCV = Settings.DMC; return(false); }
public bool PutSettings(NESSettings o) { Settings = o; if (Settings.ClipLeftAndRight) { videoProvider.left = 8; videoProvider.right = 247; } else { videoProvider.left = 0; videoProvider.right = 255; } CoreComm.ScreenLogicalOffsetX = videoProvider.left; CoreComm.ScreenLogicalOffsetY = DisplayType == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine; SetPalette(Settings.Palette); apu.Square1V = Settings.Square1; apu.Square2V = Settings.Square2; apu.TriangleV = Settings.Triangle; apu.NoiseV = Settings.Noise; apu.DMCV = Settings.DMC; return false; }
public NES(CoreComm comm, GameInfo game, byte[] rom, NESSettings settings, NESSyncSettings syncSettings) { var ser = new BasicServiceProvider(this); ServiceProvider = ser; byte[] fdsBios = comm.CoreFileProvider.GetFirmware("NES", "Bios_FDS", false); if (fdsBios != null && fdsBios.Length == 40976) { comm.ShowMessage("Your FDS BIOS is a bad dump. BizHawk will attempt to use it, but no guarantees! You should find a new one."); var tmp = new byte[8192]; Buffer.BlockCopy(fdsBios, 16 + 8192 * 3, tmp, 0, 8192); fdsBios = tmp; } SyncSettings = (NESSyncSettings)syncSettings ?? new NESSyncSettings(); ControllerSettings = SyncSettings.Controls; videoProvider = new MyVideoProvider(this); Init(game, rom, fdsBios); if (Board is FDS fds) { DriveLightEnabled = true; fds.SetDriveLightCallback(val => DriveLightOn = val); // bit of a hack: we don't have a private gamedb for FDS, but the frontend // expects this to be set. RomStatus = game.Status; } PutSettings((NESSettings)settings ?? new NESSettings()); // we need to put this here because the line directly above will overwrite palette intialization anywhere else // TODO: What if settings are later loaded? if (_isVS) { PickVSPalette(cart); } ser.Register <IDisassemblable>(cpu); Tracer = new TraceBuffer { Header = cpu.TraceHeader }; ser.Register <ITraceable>(Tracer); ser.Register <IVideoProvider>(videoProvider); ser.Register <ISoundProvider>(this); ser.Register <IStatable>(new StateSerializer(SyncState) { LoadStateCallback = SetupMemoryDomains }); if (Board is BANDAI_FCG_1 bandai) { var reader = bandai.reader; // not all BANDAI FCG 1 boards have a barcode reader if (reader != null) { ser.Register(reader); } } }
public PutSettingsDirtyBits PutSettings(NESSettings o) { Settings = o; if (Settings.ClipLeftAndRight) { videoProvider.left = 8; videoProvider.right = 247; } else { videoProvider.left = 0; videoProvider.right = 255; } SetPalette(Settings.Palette); apu.m_vol = Settings.APU_vol; return(PutSettingsDirtyBits.None); }
public bool PutSettings(NESSettings o) { Settings = o; if (Settings.ClipLeftAndRight) { videoProvider.left = 8; videoProvider.right = 247; } else { videoProvider.left = 0; videoProvider.right = 255; } CoreComm.ScreenLogicalOffsetX = videoProvider.left; CoreComm.ScreenLogicalOffsetY = Region == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine; SetPalette(Settings.Palette); apu.m_vol = Settings.APU_vol; return(false); }