Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
        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);
            }
        }