private void ReplaceCharacterImage(string image) { Tools.CurrentFolder = Path.GetDirectoryName(image); console = isPS3 ? "ps3" : (isWii ? "wii" : "xbox"); var xfile = ImageFolder + "character_" + (cboCharacter.SelectedIndex + 1) + ".png_" + console; var file = ImageFolder + "character_" + (cboCharacter.SelectedIndex + 1) + ".png"; var backup = xfile + ".bak"; File.Copy(xfile, backup); Tools.isSaveFileCharacter = true; Tools.isSaveFileArt = false; Tools.TextureSize = isWii? 256 : 512; Tools.isVerticalTexture = true; if (isWii) { Tools.ConvertImagetoWii(wimgt, image, xfile); } else { Tools.ConvertImagetoRB(image, xfile, false, isPS3); } if (File.Exists(xfile)) { Tools.DeleteFile(file); if (isWii) { Tools.ConvertWiiImage(xfile, image, file); } else { Tools.ConvertRBImage(xfile, file); } picCharacter.Image = Tools.NemoLoadImage(file); Log("Replaced image for character '" + cboCharacter.Items[cboCharacter.SelectedIndex] + "' successfully"); NeedsToSave(true); Log("Ready"); Tools.DeleteFile(backup); return; } Log("Replacing image for character '" + cboCharacter.Items[cboCharacter.SelectedIndex] + "' failed"); //set everything back File.Move(backup, xfile); Tools.DeleteFile(file); if (isWii) { Tools.ConvertImagetoWii(wimgt, image, xfile); } else { Tools.ConvertImagetoRB(image, xfile, false, isPS3); } ChangeImagePadding(); picCharacter.Image = Tools.NemoLoadImage(file); }
private void ToXbox(string image, bool flip_bytes = false) { if (!File.Exists(image)) { return; } imgCounter++; Log("Converting file " + imgCounter + " of " + (imageCount + imagesDDS.Count() + imagesPS3.Count())); Log(" - " + Path.GetFileName(image)); var success = flip_bytes ? Tools.ConvertPS3toXbox(image, image, chkCleanUpXbox.Checked) : Tools.ConvertImagetoRB(image, image, chkCleanUpXbox.Checked); Log(success? "Converted to png_xbox format successfully" : "Error converting to png_xbox format"); }
private bool ExtractRBA(string rba) { if (backgroundWorker1.CancellationPending) { return(false); } thumbnail = ""; basesongname = Path.GetFileNameWithoutExtension(rba).Replace(" ", "").Trim(); if (basesongname.Length > 26) { basesongname = basesongname.Substring(0, 26); } try { using (var bReadRba = new BinaryReader(File.Open(rba, FileMode.Open))) { var signature = bReadRba.ReadChars(4); if ((signature[0] != 'R') || (signature[1] != 'B') || (signature[2] != 'S') || (signature[3] != 'F')) { Log("Unknown file format, can't convert file " + Path.GetFileName(rba)); return(false); } var rba_header_values = new int[(int)RBA_HEADER_INDEX.HEADER_INDEX_COUNT]; for (var i = 0; i < (int)RBA_HEADER_INDEX.HEADER_INDEX_COUNT; i++) { var v = bReadRba.ReadInt32(); rba_header_values[i] = v; } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_SONGS_DTA] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_SONGS_DTA]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_SONGS_DTA]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + "songs.dta.raw"; using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Dispose(); } RBAPatchSongsDta(Path.GetExtension(rba).ToLowerInvariant() == ".rbs"); } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MID] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MID]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_MID]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + basesongname + ".mid"; using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Dispose(); } } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MOGG] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MOGG]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_MOGG]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + basesongname + ".mogg"; using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Dispose(); } } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MILO_XBOX] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_MILO_XBOX]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_MILO_XBOX]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + basesongname + ".milo_xbox"; using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Dispose(); } } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_BMP] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_BMP]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_BMP]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + basesongname + (Path.GetExtension(rba).ToLowerInvariant() == ".rbs" ? "_keep.png_xbox" : ".bmp"); using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Dispose(); } if (Path.GetExtension(rba).ToLowerInvariant() == ".rba") { var xboxfile = fname.Replace(".bmp", "_keep.png_xbox"); Tools.DeleteFile(xboxfile); Tools.TextureSize = 256; Tools.ConvertImagetoRB(fname, xboxfile); thumbnail = fname.Replace(".bmp", ".png"); Tools.DeleteFile(thumbnail); Tools.ResizeImage(fname, 64, "png", thumbnail); if (!File.Exists(thumbnail)) { thumbnail = ""; } } } if (rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_WEIGHTS] != 0) { var offset = rba_header_values[(int)RBA_HEADER_INDEX.OFFSET_WEIGHTS]; var len = rba_header_values[(int)RBA_HEADER_INDEX.LENGTH_WEIGHTS]; bReadRba.BaseStream.Seek(offset, SeekOrigin.Begin); var data = bReadRba.ReadBytes(len); var fname = tempfolder + basesongname + ".bin"; using (var bWrite = new BinaryWriter(File.Open(fname, FileMode.Create))) { bWrite.Write(data); bWrite.Close(); } } bReadRba.Dispose(); return(true); } } catch (Exception e) { Log("Error extracting RBA file " + Path.GetFileName(rba)); Log(e.ToString()); return(false); } }