public override void SetCommand(SceneWord command) { base.SetCommand(command); SegmentAddress = Command.Data2; if (SegmentAddress.Segment != (byte)ORom.Bank.scene) { throw new Exception(); } }
public override void SetCommand(SceneWord command) { base.SetCommand(command); TransitionActors = Command.Data1; SegmentAddress = Command.Data2; if (command[4] != (byte)ORom.Bank.scene) { throw new Exception(); } }
public Scene_MQJson(BinaryReader br, int id, int start, int end) { File = new File_MQJson() { Name = $"Scene {id}", Start = start.ToString("X8"), End = end.ToString("X8"), }; Id = id; SceneWord cmd = new SceneWord(); do { br.Read(cmd, 0, 8); var seekback = br.BaseStream.Position; HeaderCommands code = (HeaderCommands)cmd.Code; if (code == HeaderCommands.PathList) { SegmentAddress offset = cmd.Data2; br.BaseStream.Position = offset.Offset; InitPaths(br); } else if (code == HeaderCommands.TransitionActorList) { SegmentAddress actorOff = cmd.Data2; br.BaseStream.Position = actorOff.Offset; for (int i = 0; i < cmd.Data1; i++) { TActors.Add(Actor_MQJson.Read(br)); } } if (code == HeaderCommands.RoomList) { RoomsCount = (int)cmd.Data1; RoomsAddress = cmd.Data2; } br.BaseStream.Position = seekback; }while ((HeaderCommands)cmd.Code != HeaderCommands.End); }
public Room_MQJson(BinaryReader br, int sceneId, int roomId, int start, int end) { File = new File_MQJson() { Name = $"Scene {sceneId}, Room {roomId}", Start = start.ToString("X8"), End = end.ToString("X8"), }; Id = roomId; SceneWord cmd = new SceneWord(); do { br.Read(cmd, 0, 8); var seekback = br.BaseStream.Position; if ((HeaderCommands)cmd.Code == HeaderCommands.ObjectList) { SegmentAddress offset = cmd.Data2; br.BaseStream.Position = offset.Offset; for (int i = 0; i < cmd.Data1; i++) { Objects.Add(br.ReadBigInt16().ToString("X4")); } } else if ((HeaderCommands)cmd.Code == HeaderCommands.ActorList) { SegmentAddress actorOff = cmd.Data2; br.BaseStream.Position = actorOff.Offset; for (int i = 0; i < cmd.Data1; i++) { Actors.Add(Actor_MQJson.Read(br)); } } br.BaseStream.Position = seekback; }while ((HeaderCommands)cmd.Code != HeaderCommands.End); }
public override void SetCommand(SceneWord command) { base.SetCommand(command); SegmentAddress = Command.Data2; }
public virtual void SetCommand(SceneWord command) { Command = command; }
public override void SetCommand(SceneWord command) { Command = command; }
public static void MQRandoCompareHeaders(IExperimentFace face, List <string> filePath) { Rom n0 = new ORom(filePath[0], ORom.Build.N0); Rom mq = new ORom(filePath[1], ORom.Build.MQU); StringWriter sw = new StringWriter(); foreach (Rom rom in new Rom[] { n0, mq }) { for (int i = 0; i < 16; i++) { var scn = rom.Files.GetSceneFile(i); BinaryReader br = new BinaryReader(scn); SceneWord cmd; SceneWord roomCmd = new SceneWord(); bool hasRoom = false; do { cmd = new SceneWord(); br.Read(cmd, 0, 8); //sw.WriteLine($"{i} -1 {cmd}"); if ((HeaderCommands)cmd.Code == HeaderCommands.RoomList) { hasRoom = true; roomCmd = cmd; } }while ((HeaderCommands)cmd.Code != HeaderCommands.End); if (hasRoom) { var seekback = br.BaseStream.Position; br.BaseStream.Position = ((SegmentAddress)roomCmd.Data2).Offset; for (int j = 0; j < roomCmd.Data1; j++) { var roomAddr = br.ReadBigInt32(); br.ReadBigInt32(); var roomFile = rom.Files.GetFile(roomAddr); BinaryReader brRoom = new BinaryReader(roomFile); do { cmd = new SceneWord(); brRoom.Read(cmd, 0, 8); //sw.WriteLine($"{i} {j} {cmd}"); if ((HeaderCommands)cmd.Code == HeaderCommands.ActorList) { var va = roomFile.Record.VRom; sw.WriteLine($"{i} {j} {va.Start:X8} {va.End:X8} {(cmd.Data1 * 0x10):X8}"); } }while ((HeaderCommands)cmd.Code != HeaderCommands.End); } br.BaseStream.Position = seekback; } } } face.OutputText(sw.ToString()); }
public abstract void SetCommand(SceneWord command);