private void btnApply_Click(object sender, EventArgs e) { // Get the sprite indices int bank = cboBank.SelectedIndex; int chr = indexmap[cboChar.SelectedIndex]; int sprite = cboSprite.SelectedIndex; int oam = cboOam.SelectedIndex; var si = SpriteInfo.InfoEntries[bank][chr].Sprites[sprite].Sprites[oam]; if (cboPalNum.Enabled) { SpritePalettes.SetPalNum(chr, cboPalNum.SelectedIndex); } // X try { si.CoordX = (short)(sbyte.Parse(txtOamX.Text)); } catch { txtOamX.SelectAll(); return; } // Y try { si.CoordY = sbyte.Parse(txtOamY.Text); } catch { txtOamY.SelectAll(); return; } // Flip si.FlipH = chkFlipH.Checked; si.FlipV = chkFlipV.Checked; SpriteInfo.InfoEntries[bank][chr].Save(sprite, oam); RefreshSprite(); }
private void cboChar_SelectedIndexChanged(object sender, EventArgs e) { if (loading) { return; } int index = indexmap[cboChar.SelectedIndex]; var ie = SpriteInfo.InfoEntries[cboBank.SelectedIndex][index]; cboSprite.Items.Clear(); if (ie == null) { return; } // Load the sprite numbers loading = true; for (int i = 0; i < ie.SpriteCount; i++) { cboSprite.Items.Add(i.ToString()); } loading = false; cboSprite.SelectedIndex = 0; // Load the palette number if ((index < 0x100) || (index > 0x26B)) { cboPalNum.Enabled = true; cboPalNum.SelectedIndex = SpritePalettes.GetPalNum(index); } else { cboPalNum.Enabled = false; cboPalNum.SelectedIndex = -1; } }
private void btnExport_Click(object sender, EventArgs e) { if (dlgSave.ShowDialog() == DialogResult.OK) { // Get the sprite indices int bank = cboBank.SelectedIndex; int chr = indexmap[cboChar.SelectedIndex]; int sprite = cboSprite.SelectedIndex; // Get the bitmap Bitmap bmp = SpriteData.GetSprite(bank, chr, sprite, cboPalNum.SelectedIndex, false); // Get the palette var palette = SpritePalettes.GetPalette(sprite); // Create the target bitmap Bitmap target = new Bitmap(Math.Max(128, bmp.Width), 32 + bmp.Height, PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(target); // Draw the palette for (int i = 0; i < 16; i++) { int x = (i & 7) << 4; int y = ((i & 8) << 1); g.FillRectangle(new SolidBrush(palette.Entries[0][i]), new Rectangle(x, y, 16, 16)); } // Draw the sprite g.DrawImage(bmp, new Point(0, 32)); // Save target.Save(dlgSave.FileName); g.Dispose(); } }