Exemplo n.º 1
0
        private void sb_useSolidColor_CheckedChanged(object sender, EventArgs e)
        {
            LevelInfo.AreaBackgroundInfo bgInfo = level.getCurrentArea().bgInfo;
            //Console.WriteLine("useSolidColor changed! " + sb_useSolidColor.Checked);
            if (sb_useSolidColor.Checked)
            {
                numericUpDown_Red.Enabled   = true;
                numericUpDown_Green.Enabled = true;
                numericUpDown_Blue.Enabled  = true;
                sb_importImage.Enabled      = false;
                sb_exportImage.Enabled      = false;
                bgInfo.address = 0x00000000;
                updateBGRGBColor();
            }
            else
            {
                numericUpDown_Red.Enabled   = false;
                numericUpDown_Green.Enabled = false;
                numericUpDown_Blue.Enabled  = false;
                sb_importImage.Enabled      = true;
                sb_exportImage.Enabled      = true;
                bgInfo.address     = Globals.getSkyboxDrawFunction();
                bgInfo.id_or_color = getSkyboxConfigurationID();
                updateSkyboxTexture();
            }

            ROM.Instance.writeHalfword(bgInfo.romLocation + 2, bgInfo.id_or_color);
            ROM.Instance.writeWord(bgInfo.romLocation + 4, bgInfo.address);
        }
Exemplo n.º 2
0
        private void updateBGRGBColor()
        {
            LevelInfo.AreaBackgroundInfo bgInfo = level.getCurrentArea().bgInfo;
            ushort color = (ushort)(
                ((int)numericUpDown_Red.Value << 11) |
                ((int)numericUpDown_Green.Value << 6) |
                ((int)numericUpDown_Blue.Value << 1) | 1);

            bgInfo.id_or_color = color;
            ROM.Instance.writeHalfword(bgInfo.romLocation + 2, color);
            //Console.WriteLine("Updated BG color to 0x{0}", color.ToString("X4"));
            updateBoxColor(color);
            sb_imageBox.Update();
            sb_imageBox.Refresh();
        }
Exemplo n.º 3
0
        private void loadBackgroundImage()
        {
            sb_useTexture.Enabled = true;
            LevelInfo.AreaBackgroundInfo bgInfo = level.getCurrentArea().bgInfo;
            checkBox_matchFogColor.Enabled = bgInfo.usesFog && (bgInfo.fogColor_romLocation.Count > 0);
            //Console.WriteLine("BG info address = 0x{0}", bgInfo.address.ToString("X8"));

            int segA_size = 0;

            if (bgInfo.address != 0)
            {
                byte[] segA_data = ROM.Instance.getSegment(0xA, (byte)level.CurrentAreaID);
                if (segA_data != null)
                {
                    segA_size = segA_data.Length;
                }
            }
            // Console.WriteLine("Segment 0xA size: " + ROM.Instance.getSegment(0xA).Length);
            if (segA_size == 0)
            {
                sb_useTexture.Enabled = false;
            }
            else
            {
                sb_useTexture.Enabled = true;
                updateSkyboxImageInfo(segA_size);
            }

            if (bgInfo.address == 0 && !bgInfo.isEndCakeImage)
            {
                sb_imageBox.BackgroundImage       = new Bitmap(200, 200);
                sb_imageBox.BackgroundImageLayout = ImageLayout.Center;
                ushort color = bgInfo.id_or_color;
                updateBoxColor(color);
                sb_useSolidColor.Checked    = true;
                numericUpDown_Red.Enabled   = true;
                numericUpDown_Green.Enabled = true;
                numericUpDown_Blue.Enabled  = true;
                sb_importImage.Enabled      = false;
                sb_exportImage.Enabled      = false;
                int red   = (color >> 11) & 31;
                int green = (color >> 6) & 31;
                int blue  = (color >> 1) & 31;
                numericUpDown_Red.Value   = red;
                numericUpDown_Green.Value = green;
                numericUpDown_Blue.Value  = blue;
            }
            else if (segA_size > 0)
            {
                sb_useTexture.Checked       = true;
                numericUpDown_Red.Enabled   = false;
                numericUpDown_Green.Enabled = false;
                numericUpDown_Blue.Enabled  = false;
                sb_importImage.Enabled      = true;
                sb_exportImage.Enabled      = true;
                tabControl1.TabPages.Remove(tabPage3);
                if (bgInfo.isEndCakeImage)
                {
                    /*
                     * Bitmap org = LargeImageLoader.getCakeImage(0x07000000);
                     * if (org == null)
                     *  return;
                     * sb_imageBox.BackgroundImage = new Bitmap(org, 316, 228);
                     * sb_imageBox.BackgroundImage.Tag = org.Tag;
                     * if (sb_imageBox.BackgroundImage != null)
                     * {
                     *  sb_imageBox.BackgroundImageLayout = ImageLayout.Center;
                     *  tabPage3.Text = "End Cake Image";
                     * }*/
                }
                else
                {
                    tabControl1.TabPages.Add(tabPage3);
                    int    skybox_width  = 248;
                    int    skybox_height = ((segA_size - 0x140) / 256 / 2 / 32) * 31;
                    Bitmap org           = LargeImageLoader.getSkyboxImage(0x0A000000, skybox_width, skybox_height);
                    if (org == null)
                    {
                        return;
                    }
                    sb_imageBox.BackgroundImage     = new Bitmap(org, skybox_width, skybox_height);
                    sb_imageBox.BackgroundImage.Tag = org.Tag;
                    if (sb_imageBox.BackgroundImage != null)
                    {
                        sb_imageBox.BackgroundImageLayout = ImageLayout.Center;
                        tabPage3.Text = "Sky Background";
                    }
                }
            }
        }