package main import ( "fmt" "os" //"encoding/binary" //"bufio" //"bytes" //"io" "path/filepath" "github.com/alexflint/go-arg" "git.zorchenhimer.com/go-fds" ) type Arguments struct { Input string `arg:"positional,required"` } func main() { args := &Arguments{} arg.MustParse(args) err := run(args) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } func run(args *Arguments) error { file, err := os.Open(args.Input) if err != nil { return err } defer file.Close() //reader := bufio.NewReader(file) //magic, err := reader.Peek(4) //if err != nil { // return fmt.Errorf("Unable to peek header: %w", err) //} //header := &fds.FdsHeader{} //// "FDS" + EOF. header may be omitted. //if bytes.Equal(magic, []byte{0x46, 0x44, 0x53, 0x1A}) { // err = binary.Read(reader, binary.LittleEndian, header) // if err != nil { // return fmt.Errorf("Error reading header: %w", err) // } //} //if header != nil { // fmt.Println("Header found. sides:", header.Sides) //} else { // fmt.Println("No header") //} //blocks, err := fds.ReadBlocks(reader, true) //if err != nil { // return err //} rom, err := fds.ReadRom(file, filepath.Ext(args.Input) == ".fds") if err != nil { return err } for _, block := range rom.Blocks { fmt.Println(block) } return nil }