예제 #1
0
        public void renderChars(int dataPtr)
        {
            m_wb = new WriteableBitmap(8 * 40, 8 * 25, 96, 96, PixelFormats.Bgra32, BitmapPalettes.WebPalette);

            int charCol = 1; // spriteCol.SelectedIndex;

            for (int y = 0; y < 25; ++y)
            {
                for (int x = 0; x < 40; ++x)
                {
                    VICIIRenderer.renderChar(dataPtr, x, y, false, charCol, m_backgroundColour, m_mulCol0, m_mulCol1, m_wb);
                    dataPtr += 8;
                } //x
            }     // y

            canvas.Source = m_wb;
        }
예제 #2
0
        private void renderScreen()
        {
            C64RAM ram = C64RAM.getInstace();

            byte[] RAM = ram.getRAM();
            m_wb = new WriteableBitmap(320, 200, 96, 96, PixelFormats.Bgra32, BitmapPalettes.WebPalette);
            for (int y = 0; y < 25; ++y)
            {
                int rowPtr = m_screenAddress + (y * 40);
                for (int x = 0; x < 40; ++x)
                {
                    byte c           = RAM[rowPtr + x];
                    int  charAddress = m_charAddress + ((int)c * 8);
                    VICIIRenderer.renderChar(charAddress, x, y, m_hiresOrMulti[x, y], m_charColour, m_backgroundColour, m_mulCol0, m_mulCol1, m_wb);
                } //x
            }     //y
            canvas.Source = m_wb;
        }
예제 #3
0
        private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
            {
                Point  clickPoint = e.GetPosition(canvas);
                double x          = clickPoint.X / 8.0;
                double y          = clickPoint.Y / 8.0;

                int CharX = (int)Math.Floor(x);
                int CharY = (int)Math.Floor(y);

                m_hiresOrMulti[CharX, CharY] = !m_hiresOrMulti[CharX, CharY];

                int    CharPtr = m_screenAddress + (CharY * 40) + CharX;
                C64RAM ram     = C64RAM.getInstace();
                byte[] RAM     = ram.getRAM();
                int    dataPtr = m_charAddress + (8 * RAM[CharPtr]);

                VICIIRenderer.renderChar(dataPtr, CharX, CharY, m_hiresOrMulti[CharX, CharY], m_charColour, m_backgroundColour, m_mulCol0, m_mulCol1, m_wb);
            }
        }
예제 #4
0
        private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
            {
                Point  clickPoint = e.GetPosition(canvas);
                double x          = clickPoint.X / 8.0;
                double y          = clickPoint.Y / 8.0;

                int CharX = (int)Math.Floor(x);
                int CharY = (int)Math.Floor(y);

                m_hiresOrMulti[CharX, CharY] = !m_hiresOrMulti[CharX, CharY];

                int dataPtr = m_startAddress;
                dataPtr += CharY * (16 * 8);
                dataPtr += CharX * 8;
                int sprCol = spriteCol.SelectedIndex;

                VICIIRenderer.renderChar(dataPtr, CharX, CharY, m_hiresOrMulti[CharX, CharY], sprCol, m_backgroundColour, m_mulCol0, m_mulCol1, m_wb);
            }
        }
예제 #5
0
        public MainWindow()
        {
            InitializeComponent();
            //install the error callback before we do anything in case something connects to VICE
            VICECOMManager vcom = VICECOMManager.getVICEComManager();

            vcom.setErrorCallback(new VICECOMManager.OneArgDelegate(SetSourceView), this.Dispatcher);
            vcom.setVICEmsgCallback(new VICECOMManager.OneArgDelegate(GotMsgFromVice));
            m_registerSet = new RegisterSet6510();
            m_memDump     = new C64MemDump();
            m_memDump.SetRegisterSet(m_registerSet);

            //this must be BEFORE we parse the PDB Data
            mAssertList = new ObservableCollection <AssertDataSource>();
            string[] commandLineArgs = Environment.GetCommandLineArgs();
            if (commandLineArgs.Length == 1)
            {
                m_readerAndDispaly = new AcmePDBRandD();
                //System.Environment.Exit(1);
            }
            else if (commandLineArgs[1].EndsWith(".json"))
            {
                m_readerAndDispaly = new FunctionJSONRAndD();
            }
            else
            {
                m_readerAndDispaly = new AcmePDBRandD();
            }
            m_readerAndDispaly.SetCodeWindowControl(mTextBox);
            m_readerAndDispaly.SetLabelsWindowControl(mLabelsBox);
            m_readerAndDispaly.SetRegisterSet(m_registerSet);
            m_readerAndDispaly.SetMemDump(m_memDump);

            mBreakPoints = new List <BreakPointDataSource>();
            mBreakPointDisplay.ItemsSource = mBreakPoints;

            VICIIRenderer.initRenderer(); //load charsets


            m_readerAndDispaly.CreatePDBFromARGS(commandLineArgs, this);

            //			mCommands.Add("r");
            //			mCommands.Add("m 0000 ffff");
            //			mCommands.Add("x");
            //			mCommands.Add("!s");
            //			mCommands.Add("!sm");

            dispatchCommand("!breaklist");

            HandleCodeView();

            /*AssertDataSource AD = new AssertDataSource();
             * AD.Enable = true;
             * AD.Address = 0x810;
             * AD.Label = "Test";
             * AD.Condition = "@io:$d020 != $00";
             * AD.Msg = "This is a test";
             * AD.Number = 1;
             * mAssertList.Add(AD);*/

            AssertDataGrid.ItemsSource = mAssertList;
        }