void Initialize() { Console.WriteLine("Initialize hardware..."); onboardLed = new RgbPwmLed(device: Device, redPwmPin: Device.Pins.OnboardLedRed, greenPwmPin: Device.Pins.OnboardLedGreen, bluePwmPin: Device.Pins.OnboardLedBlue, 3.3f, 3.3f, 3.3f, Meadow.Peripherals.Leds.IRgbLed.CommonType.CommonAnode); var spiBus = Device.CreateSpiBus(); display = new ZXBox.MeadowApp.Display.Ssd1351( device: Device, spiBus: spiBus, chipSelectPin: Device.Pins.D00, dcPin: Device.Pins.D02, resetPin: Device.Pins.D01, width: 128, height: 127); //graphics.Clear(); //graphics.Show(); speccy = new ZXSpectrum(true, true, 32, 32, 0); speccy.Reset(); graphics = new GraphicsLibrary(display); display.Clear(true); display.ClearScreen(1); display.InvertDisplay(false); graphics.DrawRectangle(0, 0, 127, 127, Color.FromHex("#00cdcd"), true); graphics.Show(); }
public ScreenAdapter(ZXSpectrum.Screen zxScreen) { this.zxScreen = zxScreen; // Initialize the ZX Spectrum color palette IList<Color> zxColors = new List<Color>(); zxColors.Add(Color.FromRgb(0x00, 0x00, 0x00)); // black -- (bright 0) -- zxColors.Add(Color.FromRgb(0x00, 0x00, 0xCD)); // blue zxColors.Add(Color.FromRgb(0xCD, 0x00, 0x00)); // red zxColors.Add(Color.FromRgb(0xCD, 0x00, 0xCD)); // magenta zxColors.Add(Color.FromRgb(0x00, 0xCD, 0x00)); // green zxColors.Add(Color.FromRgb(0x00, 0xCD, 0xCD)); // cyan zxColors.Add(Color.FromRgb(0xCD, 0xCD, 0x00)); // yellow zxColors.Add(Color.FromRgb(0xCD, 0xCD, 0xCD)); // white zxColors.Add(Color.FromRgb(0x00, 0x00, 0x00)); // black -- (bright 1) -- zxColors.Add(Color.FromRgb(0x00, 0x00, 0xFF)); // blue zxColors.Add(Color.FromRgb(0xFF, 0x00, 0x00)); // red zxColors.Add(Color.FromRgb(0xFF, 0x00, 0xFF)); // magenta zxColors.Add(Color.FromRgb(0x00, 0xFF, 0x00)); // green zxColors.Add(Color.FromRgb(0x00, 0xFF, 0xFF)); // cyan zxColors.Add(Color.FromRgb(0xFF, 0xFF, 0x00)); // yellow zxColors.Add(Color.FromRgb(0xFF, 0xFF, 0xFF)); // white BitmapPalette zxPalette = new BitmapPalette(zxColors); // Initialize a writeable bitmap to draw the zx screen, and display it through an image zxScreenBitmap = new WriteableBitmap(ZXSpectrum.Screen.WIDTH, ZXSpectrum.Screen.HEIGHT, 96, 96, PixelFormats.Indexed4, zxPalette); }
public ZxSpectrumPokeMemory(ZXSpectrum speccy) { _speccy = speccy; InitializeComponent(); Icon = Properties.Resources.GameControllerIcon; }
public ZxSpectrumPokeMemory( MainForm mainForm, ZXSpectrum speccy) { _mainForm = mainForm; _speccy = speccy; InitializeComponent(); }
public ZxSpectrumPokeMemory( IMainFormForConfig mainForm, ZXSpectrum speccy) { _mainForm = mainForm; _speccy = speccy; InitializeComponent(); Icon = Properties.Resources.GameController_MultiSize; }
public static bool TestInstruction(string file) { file = $"{Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName}\\Testfiles\\" + file; ZXSpectrum z80 = new ZXSpectrum(); z80.Reset(); TestState ts = TestfileHandler.ReadINFile(file); z80.AF = ts.af; z80.AFPrim = ts.af_; z80.BC = ts.bc; z80.BCPrim = ts.bc_; z80.DE = ts.de; z80.DEPrim = ts.de_; z80.HL = ts.hl; z80.HLPrim = ts.hl_; z80.I = ts.i; z80.IFF = ts.iff1; z80.IFF2 = ts.iff2; z80.IM = ts.im; z80.IX = ts.ix; z80.IY = ts.iy; //z80.Memory = ts.Memory; for (int m = 0; m < ts.Memory.Length; m++) { z80.WriteByteToMemory(m, ts.Memory[m]); } z80.PC = ts.pc; z80.R = ts.r; z80.SP = ts.sp; z80.DoIntructions(ts.end_tstates2); TestState tsout = TestfileHandler.ReadOUTFile(Path.GetDirectoryName(file) + "\\" + Path.GetFileNameWithoutExtension(file) + ".out", ts.Memory); //Compare bool result = CoreTest.CompareFunction(tsout, ExtractState(z80)); if (!result) { Debug.WriteLine(Path.GetFileNameWithoutExtension(file) + " failed"); } else { Debug.WriteLine(Path.GetFileNameWithoutExtension(file) + " succeeded"); } return(result); }
public EmulatorComponentModel() { speccy = new ZXSpectrum(true, true, 20, 20, 20); gameLoop = new System.Timers.Timer(20); gameLoop.Elapsed += GameLoop_Elapsed; }
public KeyboardAdapter(ZXSpectrum.Keyboard zxKeyboard) { this.zxKeyboard = zxKeyboard; InitKeyboardMap(); }
public SpeakerAdapter(ZXSpectrum.Speaker zxSpeaker) { this.zxSpeaker = zxSpeaker; SetWaveFormat(15600, 1); // 16kHz mono }
public JoystickAdapter(ZXSpectrum.Joystick zxJoystick1, ZXSpectrum.Joystick zxJoystick2) { this.zxJoystick1 = zxJoystick1; this.zxJoystick2 = zxJoystick2; }
private void RefreshJoystickState(Joystick joystick, ZXSpectrum.Joystick zxJoystick) { // Set BufferSize in order to use buffered data. // joystick.Properties.BufferSize = 128; // Poll events from joystick // joystick.Poll(); // var datas = joystick.GetBufferedData(); joystick.Poll(); JoystickState currentState = joystick.GetCurrentState(); ZXSpectrum.JoystickHorizontalPosition newHorizontalPosition = ZXSpectrum.JoystickHorizontalPosition.Center; if (currentState.X < 16383) { newHorizontalPosition = ZXSpectrum.JoystickHorizontalPosition.Left; } else if (currentState.X > 49150) { newHorizontalPosition = ZXSpectrum.JoystickHorizontalPosition.Right; } ZXSpectrum.JoystickVerticalPosition newVerticalPosition = ZXSpectrum.JoystickVerticalPosition.Center; if (currentState.Y < 16383) { newVerticalPosition = ZXSpectrum.JoystickVerticalPosition.Up; } else if (currentState.Y > 49150) { newVerticalPosition = ZXSpectrum.JoystickVerticalPosition.Down; } bool newButtonPressedState = currentState.Buttons[0]; zxJoystick.RefreshCurrentPosition(newVerticalPosition, newHorizontalPosition, newButtonPressedState); }