Beispiel #1
0
        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();
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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();
            }
        }