예제 #1
0
        private unsafe void RefreshType()
        {
            var lockdata = bmpView1.BMP.LockBits(new Rectangle(0, 0, 256, 128), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            int[] lut = GBColors.GetLut(_type);

            int *dest = (int *)lockdata.Scan0;

            for (int j = 0; j < 128; j++)
            {
                for (int i = 0; i < 256; i++)
                {
                    int r      = i % 32;
                    int g      = j % 32;
                    int b      = (i / 32 * 4) + (j / 32);
                    int color  = lut[r | g << 5 | b << 10];
                    *   dest++ = color;
                }

                dest -= 256;
                dest += lockdata.Stride / sizeof(int);
            }

            bmpView1.BMP.UnlockBits(lockdata);
            bmpView1.Refresh();
        }
예제 #2
0
        private void SetupColors()
        {
            int[] tmp = GBColors.GetLut(GBColors.ColorType.vivid);

            // reorder
            for (int i = 0; i < 32768; i++)
            {
                int j = i & 0x3e0 | (i & 0x1f) << 10 | i >> 10 & 0x1f;
                _videopalette[i] = tmp[j];
            }

            // duplicate
            Array.Copy(_videopalette, 0, _videopalette, 32768, 32768);
        }
예제 #3
0
        // MobileDetailView memory;

        public GbaGpuView()
        {
            InitializeComponent();
            // TODO: hook up something
            // we do this twice to avoid having to & 0x7fff with every color
            int[] tmp = GBColors.GetLut(GBColors.ColorType.vivid);
            _colorConversion = new int[65536];
            Buffer.BlockCopy(tmp, 0, _colorConversion, 0, sizeof(int) * tmp.Length);
            Buffer.BlockCopy(tmp, 0, _colorConversion, sizeof(int) * tmp.Length, sizeof(int) * tmp.Length);
            radioButtonManual.Checked = true;
            GenerateWidgets();
            hScrollBar1_ValueChanged(null, null);
            RecomputeRefresh();
        }
예제 #4
0
        public bool PutSettings(Settings o)
        {
            LibmGBA.Layers mask = 0;
            if (o.DisplayBG0)
            {
                mask |= LibmGBA.Layers.BG0;
            }
            if (o.DisplayBG1)
            {
                mask |= LibmGBA.Layers.BG1;
            }
            if (o.DisplayBG2)
            {
                mask |= LibmGBA.Layers.BG2;
            }
            if (o.DisplayBG3)
            {
                mask |= LibmGBA.Layers.BG3;
            }
            if (o.DisplayOBJ)
            {
                mask |= LibmGBA.Layers.OBJ;
            }
            LibmGBA.BizSetLayerMask(_core, mask);

            LibmGBA.Sounds smask = 0;
            if (o.PlayCh0)
            {
                smask |= LibmGBA.Sounds.CH0;
            }
            if (o.PlayCh1)
            {
                smask |= LibmGBA.Sounds.CH1;
            }
            if (o.PlayCh2)
            {
                smask |= LibmGBA.Sounds.CH2;
            }
            if (o.PlayCh3)
            {
                smask |= LibmGBA.Sounds.CH3;
            }
            if (o.PlayChA)
            {
                smask |= LibmGBA.Sounds.CHA;
            }
            if (o.PlayChB)
            {
                smask |= LibmGBA.Sounds.CHB;
            }
            LibmGBA.BizSetSoundMask(_core, smask);

            var palette = new int[65536];

            GBColors.ColorType c = GBColors.ColorType.vivid;
            switch (o.ColorType)
            {
            case Settings.ColorTypes.Gambatte: c = GBColors.ColorType.gambatte; break;

            case Settings.ColorTypes.Vivid: c = GBColors.ColorType.vivid; break;

            case Settings.ColorTypes.VbaVivid: c = GBColors.ColorType.vbavivid; break;

            case Settings.ColorTypes.VbaGbNew: c = GBColors.ColorType.vbagbnew; break;

            case Settings.ColorTypes.VbaGbOld: c = GBColors.ColorType.vbabgbold; break;

            case Settings.ColorTypes.BizhawkGba: c = GBColors.ColorType.gba; break;
            }
            GBColors.GetLut(c, palette);
            for (var i = 32768; i < 65536; i++)
            {
                palette[i] = palette[i - 32768];
            }
            LibmGBA.BizSetPalette(_core, palette);

            _settings = o;
            return(false);
        }