private void Entry_PointerBox_ValueChanged(object sender, EventArgs e) { Core.WritePointer(this, Current.GetAddress(Current.EntryIndex, "Address"), Instrument_PointerBox.Value, CurrentEntry + "Music Header repointed"); }
private void Palette_ArrayBox_ValueChanged(object sender, EventArgs e) { Core.WriteByte(this, Current.GetAddress(Current.EntryIndex, "Palette"), Palette_ArrayBox.Value, CurrentEntry + "Palette changed"); }
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"); }
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(); }
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(); }
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(); }