コード例 #1
0
 private void Entry_PointerBox_ValueChanged(object sender, EventArgs e)
 {
     Core.WritePointer(this,
                       Current.GetAddress(Current.EntryIndex, "Address"),
                       Instrument_PointerBox.Value,
                       CurrentEntry + "Music Header repointed");
 }
コード例 #2
0
 private void Palette_ArrayBox_ValueChanged(object sender, EventArgs e)
 {
     Core.WriteByte(this,
                    Current.GetAddress(Current.EntryIndex, "Palette"),
                    Palette_ArrayBox.Value,
                    CurrentEntry + "Palette changed");
 }
コード例 #3
0
 private void Event_ArrayBox_ValueChanged(object sender, EventArgs e)
 {
     Core.WriteByte(this,
                    Current.GetAddress(Current.EntryIndex, "Events"),
                    Event_ArrayBox.Value,
                    "Chapter Struct 0x" + Util.ByteToHex((byte)Entry_ArrayBox.Value) +
                    " [" + Entry_ArrayBox.Text + "] - Events changed");
 }
コード例 #4
0
        void Core_Insert(MapSprite insert)
        {
            Core.SuspendUpdate();
            try
            {
                byte[] data_idle = insert.Sprites[MapSprite.IDLE].Sheet.ToBytes(true);
                byte[] data_move = insert.Sprites[MapSprite.WALK].Sheet.ToBytes(true);

                bool cancel = Prompt.ShowRepointDialog(this, "Repoint Map Sprite",
                                                       "The Map Sprite to insert might need to be repointed.",
                                                       CurrentIdleEntry,
                                                       new Tuple <string, Pointer, int>[] {
                    Tuple.Create("Idle Sprite", (Pointer)CurrentIdle["Sprite"], data_idle.Length),
                    Tuple.Create("Move Sprite", (Pointer)CurrentMove["Sprite"], data_move.Length)
                },
                                                       new Pointer[] {
                    CurrentIdle.GetAddress(CurrentIdle.EntryIndex, "Sprite"),
                    CurrentMove.GetAddress(CurrentMove.EntryIndex, "Sprite")
                });
                if (cancel)
                {
                    return;
                }

                Core.WriteData(this,
                               (Pointer)CurrentIdle["Sprite"],
                               data_idle,
                               CurrentIdleEntry + "Idle Sprite changed");

                Core.WriteData(this,
                               (Pointer)CurrentMove["Sprite"],
                               data_move,
                               CurrentMoveEntry + "Move Sprite changed");

                Core.WriteByte(this,
                               CurrentIdle.GetAddress(CurrentIdle.EntryIndex, "Size"),
                               insert.IdleSize,
                               CurrentIdleEntry + "Size changed");
            }
            catch (Exception ex)
            {
                Program.ShowError("Could not insert the map sprite.", ex);
            }
            Core.ResumeUpdate();
            Core.PerformUpdate();
        }
コード例 #5
0
        void Core_Insert(BattlePlatform insert)
        {
            Core.SuspendUpdate();
            try
            {
                byte[] data_tileset = insert.Sheet.ToBytes(true);
                byte[] data_palette = insert.Colors.ToBytes(false);

                bool cancel = Prompt.ShowRepointDialog(this, "Repoint Battle Platform",
                                                       "The battle platform to insert might need some of its parts to be repointed.",
                                                       CurrentEntry, new Tuple <string, Pointer, int>[] {
                    Tuple.Create("Tileset", (Pointer)Current["Tileset"], data_tileset.Length),
                    Tuple.Create("Palette", (Pointer)Current["Palette"], data_palette.Length),
                }, new Pointer[] {
                    Current.GetAddress(Current.EntryIndex, "Tileset"),
                    Current.GetAddress(Current.EntryIndex, "Palette"),
                });
                if (cancel)
                {
                    return;
                }

                Core.WriteData(this,
                               (Pointer)Current["Tileset"],
                               data_tileset,
                               CurrentEntry + "Tileset changed");

                Core.WriteData(this,
                               (Pointer)Current["Palette"],
                               data_palette,
                               CurrentEntry + "Palette changed");
            }
            catch (Exception ex)
            {
                Program.ShowError("Could not insert the image.", ex);
                Core_Update();
            }
            Core.ResumeUpdate();
            Core.PerformUpdate();
        }
コード例 #6
0
        void Core_Insert(Portrait insert)
        {
            Core.SuspendUpdate();
            try
            {
                int header = ((Core.CurrentROM is FE8 ||
                               (Core.CurrentROM is FE7 && Core.CurrentROM.Version == GameVersion.JAP)) ? 4 : 0);
                byte[] data_main    = insert.Sprites[Portrait.MAIN].Sheet.ToBytes(false);
                byte[] data_chibi   = null;
                byte[] data_mouth   = null;
                byte[] data_palette = new byte[Palette.LENGTH];
                Array.Copy(insert.Colors.ToBytes(false), data_palette, insert.Colors.Count * 2);

                var repoints = new List <Tuple <string, Pointer, int> >();
                var writepos = new List <Pointer>();

                repoints.Add(Tuple.Create("Palette", (Pointer)Current["Palette"], data_palette.Length));
                writepos.Add(Current.GetAddress(Current.EntryIndex, "Palette"));

                if (IsGenericClassCard)
                {
                    data_main = LZ77.Compress(data_main);

                    repoints.Add(Tuple.Create("Card", (Pointer)Current["Card"], header + data_main.Length));
                    writepos.Add(Current.GetAddress(Current.EntryIndex, "Card"));
                }
                else
                {
                    data_chibi = insert.Sprites[Portrait.CHIBI].Sheet.ToBytes(false);
                    data_mouth = insert.Sprites[Portrait.MOUTH].Sheet.ToBytes(false);

                    if (Core.CurrentROM is FE6 ||
                        (Core.CurrentROM is FE7 && Core.CurrentROM.Version != GameVersion.JAP))
                    {
                        data_main = LZ77.Compress(data_main);
                    }

                    repoints.Add(Tuple.Create("Face", (Pointer)Current["Face"], header + data_main.Length));
                    writepos.Add(Current.GetAddress(Current.EntryIndex, "Face"));

                    if (!(Core.CurrentROM is FE6))
                    {
                        repoints.Add(Tuple.Create("Mouth", (Pointer)Current["Mouth"], data_mouth.Length));
                        writepos.Add(Current.GetAddress(Current.EntryIndex, "Mouth"));

                        data_chibi = LZ77.Compress(data_chibi);
                    }
                    repoints.Add(Tuple.Create("Chibi", (Pointer)Current["Chibi"], data_chibi.Length));
                    writepos.Add(Current.GetAddress(Current.EntryIndex, "Chibi"));
                }

                bool cancel = Prompt.ShowRepointDialog(this, "Repoint Portrait",
                                                       "The portrait to insert might need some of its parts to be repointed.",
                                                       CurrentEntry, repoints.ToArray(), writepos.ToArray());
                if (cancel)
                {
                    return;
                }

                Core.WriteData(this,
                               (Pointer)Current["Palette"],
                               data_palette,
                               CurrentEntry + "Palette changed");

                if (IsGenericClassCard)
                {
                    Core.WriteData(this,
                                   (Pointer)Current["Card"],
                                   data_main,
                                   CurrentEntry + "Image changed");
                }
                else
                {
                    Core.WriteData(this,
                                   (Pointer)Current["Face"] + header,
                                   data_main,
                                   CurrentEntry + "Main image changed");

                    Core.WriteData(this,
                                   (Pointer)Current["Chibi"],
                                   data_chibi,
                                   CurrentEntry + "Chibi image changed");

                    if (!(Program.Core.CurrentROM is FE6))
                    {
                        Core.WriteData(this,
                                       (Pointer)Current["Mouth"],
                                       data_mouth,
                                       CurrentEntry + "Mouth image changed");
                    }
                }
            }
            catch (Exception ex)
            {
                Program.ShowError("Could not insert the image.", ex);
            }
            Core.ResumeUpdate();
            Core.PerformUpdate();
        }