80 lines
1.3 KiB
Go
80 lines
1.3 KiB
Go
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
|
|
}
|
|
|
|
|