public OverlayRecord GetOverlayRecord(int index, TableInfo.Type type) { RomFileToken token = GetCodeFileToken(); RomFile code = GetFile(token); var table = Tables.GetTable(type); if (!Addresser.TryGetRom(token, Version, table.Id, out int addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (index * table.Length)); switch (type) { case TableInfo.Type.Actors: return(new ActorOverlayRecord(index, new BinaryReader(code))); case TableInfo.Type.GameOvls: return(new GameStateRecord(index, new BinaryReader(code))); case TableInfo.Type.Particles: return(new ParticleOverlayRecord(index, new BinaryReader(code))); case TableInfo.Type.PlayerPause: return(new PlayPauseOverlayRecord(index, new BinaryReader(code))); case TableInfo.Type.Transitions: return(new TransitionOverlayRecord(index, new BinaryReader(code))); default: return(null); } }
public PlayPauseOverlayRecord GetPlayPauseOverlayRecord(int index) { RomFileToken token = GetCodeFileToken(); RomFile code = GetFile(token); if (!Addresser.TryGetRom(token, Version, Tables.PlayerPause.Id, out int addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (index * 0x1C)); return(new PlayPauseOverlayRecord(index, new BinaryReader(code))); }
public GameStateRecord GetGameContextRecord(int index) { RomFileToken token = GetCodeFileToken(); RomFile code = GetFile(token); if (!Addresser.TryGetRom(token, Version, Tables.GameOvls.Id, out int addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (index * 0x30)); return(new GameStateRecord(index, new BinaryReader(code))); }
public ActorOverlayRecord GetActorOverlayRecord(int actor) { RomFileToken token = GetCodeFileToken(); RomFile code = GetFile(token); if (!Addresser.TryGetRom(token, Version, Tables.Actors.Id, out int addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (actor * 0x20)); return(new ActorOverlayRecord(actor, new BinaryReader(code))); }
private void LoadPal() { Dialogs = new Dictionary <Rom.Language, Dictionary <ushort, TextboxMessage> >(); if (Addresser.TryGetRom(ORom.FileList.code, rom.Version, AddressToken.TextbankTable, out int textbank)) { RomFile codefile = rom.Files.GetFile(ORom.FileList.code); using (BinaryReader file = new BinaryReader(codefile.Stream)) { textbank = (int)codefile.Record.GetRelativeAddress(textbank); file.BaseStream.Position = textbank; LoadTextTable(file, Rom.Language.English); LoadTextTable_Pal2(file, Dialogs[Rom.Language.English], Rom.Language.German); LoadTextTable_Pal2(file, Dialogs[Rom.Language.English], Rom.Language.French); } } }
public PlayPauseOverlayRecord GetPlayPauseOverlayRecord(int index) { int addr; RomFileToken token = ORom.FileList.invalid; if (Version.Game == Game.OcarinaOfTime) { token = ORom.FileList.code; } if (Version.Game == Game.MajorasMask) { token = MRom.FileList.code; } RomFile code = GetFile(token); if (!Addresser.TryGetRom(token, Version, PlayerPauseTable.StartKey, out addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (index * 0x1C)); return(new PlayPauseOverlayRecord(index, new BinaryReader(code))); }
public ActorOverlayRecord GetActorOverlayRecord(int actor) { int addr; RomFileToken token = ORom.FileList.invalid; if (Version.Game == Game.OcarinaOfTime) { token = ORom.FileList.code; } if (Version.Game == Game.MajorasMask) { token = MRom.FileList.code; } RomFile code = GetFile(token); if (!Addresser.TryGetRom(token, Version, ActorTable.StartKey, out addr)) { return(null); } code.Stream.Position = code.Record.GetRelativeAddress(addr + (actor * 0x20)); return(new ActorOverlayRecord(actor, new BinaryReader(code))); }