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(); }
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); }
// 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(); }
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); }