using NetMFAPatcher.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetMFAPatcher.Chunks { class AppHeader:ChunkLoader { int size; int windowWidth; int windowHeight; int initialScore; int initialLives; public int numberOfFrames; public override void Read() { reader = new ByteIO(chunk.chunk_data); Logger.Log(reader.Tell().ToString()); size = reader.ReadInt32(); var flags = reader.ReadInt16();//raw,need convert var new_flags = reader.ReadInt16();//read flags or no balls var graphics_mode = reader.ReadInt16();//i am serious var otherflags = reader.ReadInt16();//last chance to get balls back windowWidth = reader.ReadInt16(); windowHeight = reader.ReadInt16(); initialScore = (int)(reader.ReadUInt32() ^ 0xffffffff); initialLives = (int)(reader.ReadUInt32() ^ 0xffffffff); var controls = new Controls(reader); controls.Read(); //controls.Print(); var borderColor = reader.ReadBytes(4); borderColor.Log(true,"X2"); numberOfFrames = reader.ReadInt32(); var frameRate = reader.ReadInt32(); var windowsMenuIndex = reader.ReadSByte(); } public override void Print() { Logger.Log($"ScreenRes: {windowWidth}x{windowHeight}"); Logger.Log($"Score: {initialScore}, Lives: {initialLives}"); Logger.Log($"Frame count: {numberOfFrames}"); Logger.Log(""); } } public class Controls { public List items; ByteIO reader; public Controls(ByteIO reader) { this.reader = reader; } public void Read() { items = new List(); for (int i = 0; i <4; i++) { var item = new PlayerControl(reader); items.Add(item); item.Read(); } } public void Print() { Logger.Log("Controls: "); foreach(var item in items) { item.Print(); } } } public class PlayerControl { int controlType = 0; ByteIO reader; Keys keys; public PlayerControl(ByteIO reader) { this.reader = reader; } public void Read() { keys = new Keys(reader); controlType = reader.ReadInt16(); keys.Read(); } public void Print() { Logger.Log("PlayerControl:"); Logger.Log($"ControlType: {controlType}"); keys.Print(); } } public class Keys { int up; int down; int left; int right; int button1; int button2; int button3; int button4; ByteIO reader; public Keys(ByteIO reader) { this.reader = reader; } public void Read() { up = reader.ReadInt16(); down = reader.ReadInt16(); left = reader.ReadInt16(); right = reader.ReadInt16(); button1 = reader.ReadInt16(); button2 = reader.ReadInt16(); button3 = reader.ReadInt16(); button4 = reader.ReadInt16(); } public void Print() { Logger.Log($"Up: {up}"); Logger.Log($"Down: {down}"); Logger.Log($"Left: {left}"); Logger.Log($"Right: {right}"); Logger.Log($"Button1: {button1}"); Logger.Log($"Button2: {button2}"); Logger.Log($"Button3: {button3}"); Logger.Log($"Button4: {button4}"); } } }