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