Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        public ZxSpectrumPokeMemory(ZXSpectrum speccy)
        {
            _speccy = speccy;

            InitializeComponent();
            Icon = Properties.Resources.GameControllerIcon;
        }
Ejemplo n.º 4
0
        public ZxSpectrumPokeMemory(
            MainForm mainForm,
            ZXSpectrum speccy)
        {
            _mainForm = mainForm;
            _speccy   = speccy;

            InitializeComponent();
        }
Ejemplo n.º 5
0
        public ZxSpectrumPokeMemory(
            IMainFormForConfig mainForm,
            ZXSpectrum speccy)
        {
            _mainForm = mainForm;
            _speccy   = speccy;

            InitializeComponent();
            Icon = Properties.Resources.GameController_MultiSize;
        }
Ejemplo n.º 6
0
        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);
        }