From 343df8a554b338ac1bba5742899955ce1d630ddf Mon Sep 17 00:00:00 2001 From: Ivan Izaguirre Date: Sat, 1 Jun 2019 20:06:44 +0200 Subject: [PATCH] Embed default resources in the executable --- apple2main.go | 16 +-- cardBase.go | 6 +- characterGenerator.go | 6 +- diskette16sector.go | 6 +- memoryManager.go | 6 +- resources.go | 41 +++++++ romdumps/Apple2_Plus.rom | Bin 12288 -> 0 bytes romdumps/Apple2rev7CharGen.rom | Bin 2048 -> 0 bytes romdumps/DISK2.rom | Bin 256 -> 0 bytes romdumps/dos33.dsk | Bin 143360 -> 0 bytes romdumps/generate/.gitignore | 1 + romdumps/generate/generate.go | 24 ++++ romdumps/romdumps_vfsdata.go | 208 +++++++++++++++++++++++++++++++++ 13 files changed, 282 insertions(+), 32 deletions(-) create mode 100644 resources.go delete mode 100644 romdumps/Apple2_Plus.rom delete mode 100644 romdumps/Apple2rev7CharGen.rom delete mode 100644 romdumps/DISK2.rom delete mode 100644 romdumps/dos33.dsk create mode 100644 romdumps/generate/.gitignore create mode 100644 romdumps/generate/generate.go create mode 100644 romdumps/romdumps_vfsdata.go diff --git a/apple2main.go b/apple2main.go index 7be9c39..d1bf018 100644 --- a/apple2main.go +++ b/apple2main.go @@ -9,11 +9,11 @@ import ( func MainApple() *Apple2 { romFile := flag.String( "rom", - "../romdumps/Apple2_Plus.rom", + "/Apple2_Plus.rom", "main rom file") disk2RomFile := flag.String( "diskRom", - "../romdumps/DISK2.rom", + "/DISK2.rom", "rom file for the disk drive controller") disk2Slot := flag.Int( "disk2Slot", @@ -21,7 +21,7 @@ func MainApple() *Apple2 { "slot for the disk driver. -1 for none.") diskImage := flag.String( "disk", - "../romdumps/dos33.dsk", + "/dos33.dsk", "file to load on the first disk drive") cpuClock := flag.Float64( "mhz", @@ -29,7 +29,7 @@ func MainApple() *Apple2 { "cpu speed in Mhz, use 0 for full speed. Use F5 to toggle.") charRomFile := flag.String( "charRom", - "../romdumps/Apple2rev7CharGen.rom", + "/Apple2rev7CharGen.rom", "rom file for the disk drive controller") languageCardSlot := flag.Int( "languageCardSlot", @@ -83,12 +83,4 @@ func MainApple() *Apple2 { //a.AddCardLogger(4) return a - /* if *useSDL { - a.ConfigureStdConsole(false, *stdoutScreen) - apple2sdl.SDLRun(a) - } else { - a.ConfigureStdConsole(true, true) - a.Run(log) - } - */ } diff --git a/cardBase.go b/cardBase.go index f72fe21..14d7f33 100644 --- a/cardBase.go +++ b/cardBase.go @@ -2,7 +2,6 @@ package apple2 import ( "io" - "io/ioutil" ) type card interface { @@ -23,10 +22,7 @@ func (c *cardBase) loadRom(filename string) { if c.a != nil { panic("Rom must be loaded before inserting the card in the slot") } - data, err := ioutil.ReadFile(filename) - if err != nil { - panic(err) - } + data := loadResource(filename) c.rom = newMemoryRange(0, data) } diff --git a/characterGenerator.go b/characterGenerator.go index 627ae12..e62eefc 100644 --- a/characterGenerator.go +++ b/characterGenerator.go @@ -2,7 +2,6 @@ package apple2 import ( "fmt" - "io/ioutil" ) /* @@ -27,10 +26,7 @@ func NewCharacterGenerator(filename string) *CharacterGenerator { } func (cg *CharacterGenerator) load(filename string) { - bytes, err := ioutil.ReadFile(filename) - if err != nil { - panic(err) - } + bytes := loadResource(filename) size := len(bytes) if size != rev7CharGenSize { panic("Character ROM size not supported") diff --git a/diskette16sector.go b/diskette16sector.go index d2e8fbd..840480c 100644 --- a/diskette16sector.go +++ b/diskette16sector.go @@ -1,7 +1,6 @@ package apple2 import ( - "io/ioutil" "os" ) @@ -40,10 +39,7 @@ func (d *diskette16sector) write(track int, position int, value uint8) int { func loadDisquette(filename string) *diskette16sector { var d diskette16sector - data, err := ioutil.ReadFile(filename) - if err != nil { - panic(err) - } + data := loadResource(filename) size := len(data) if size == nibImageSize { diff --git a/memoryManager.go b/memoryManager.go index 1d279b3..531d3ee 100644 --- a/memoryManager.go +++ b/memoryManager.go @@ -2,7 +2,6 @@ package apple2 import ( "io" - "io/ioutil" ) // See https://fabiensanglard.net/fd_proxy/prince_of_persia/Inside%20the%20Apple%20IIe.pdf @@ -122,10 +121,7 @@ const ( ) func (mmu *memoryManager) loadRom(filename string) { - data, err := ioutil.ReadFile(filename) - if err != nil { - panic(err) - } + data := loadResource(filename) size := len(data) if size != apple2RomSize && size != apple2eRomSize { panic("Rom size not supported") diff --git a/resources.go b/resources.go new file mode 100644 index 0000000..4b63b9d --- /dev/null +++ b/resources.go @@ -0,0 +1,41 @@ +package apple2 + +import ( + "io" + "io/ioutil" + "os" + "strings" + + "github.com/ivanizag/apple2/romdumps" +) + +const ( + internalPrefix = "/" +) + +func loadResource(filename string) []uint8 { + var file io.Reader + if strings.HasPrefix(filename, internalPrefix) { + // load from embedded resource + resource := strings.TrimPrefix(filename, internalPrefix) + resourceFile, err := romdumps.Assets.Open(resource) + if err != nil { + panic(err) + } + defer resourceFile.Close() + file = resourceFile + } else { + diskFile, err := os.Open(filename) + if err != nil { + panic(err) + } + defer diskFile.Close() + file = diskFile + } + + data, err := ioutil.ReadAll(file) + if err != nil { + panic(err) + } + return data +} diff --git a/romdumps/Apple2_Plus.rom b/romdumps/Apple2_Plus.rom deleted file mode 100644 index b0641c38987bbfb407afb1e5cda45b5efcf0e1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 UGw;Lu{eQpzygc|H_%H7NKcifwj{pDw diff --git a/romdumps/DISK2.rom b/romdumps/DISK2.rom deleted file mode 100644 index 56698b0f8879c56af152fc0cbff4230ba53592b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 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�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 f.seekPos { + // Rewind to beginning. + err = f.gr.Reset(bytes.NewReader(f.compressedContent)) + if err != nil { + return 0, err + } + f.grPos = 0 + } + if f.grPos < f.seekPos { + // Fast-forward. + _, err = io.CopyN(ioutil.Discard, f.gr, f.seekPos-f.grPos) + if err != nil { + return 0, err + } + f.grPos = f.seekPos + } + n, err = f.gr.Read(p) + f.grPos += int64(n) + f.seekPos = f.grPos + return n, err +} +func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) { + switch whence { + case io.SeekStart: + f.seekPos = 0 + offset + case io.SeekCurrent: + f.seekPos += offset + case io.SeekEnd: + f.seekPos = f.uncompressedSize + offset + default: + panic(fmt.Errorf("invalid whence value: %v", whence)) + } + return f.seekPos, nil +} +func (f *vfsgen۰CompressedFile) Close() error { + return f.gr.Close() +} + +// vfsgen۰DirInfo is a static definition of a directory. +type vfsgen۰DirInfo struct { + name string + modTime time.Time + entries []os.FileInfo +} + +func (d *vfsgen۰DirInfo) Read([]byte) (int, error) { + return 0, fmt.Errorf("cannot Read from directory %s", d.name) +} +func (d *vfsgen۰DirInfo) Close() error { return nil } +func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil } + +func (d *vfsgen۰DirInfo) Name() string { return d.name } +func (d *vfsgen۰DirInfo) Size() int64 { return 0 } +func (d *vfsgen۰DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir } +func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime } +func (d *vfsgen۰DirInfo) IsDir() bool { return true } +func (d *vfsgen۰DirInfo) Sys() interface{} { return nil } + +// vfsgen۰Dir is an opened dir instance. +type vfsgen۰Dir struct { + *vfsgen۰DirInfo + pos int // Position within entries for Seek and Readdir. +} + +func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) { + if offset == 0 && whence == io.SeekStart { + d.pos = 0 + return 0, nil + } + return 0, fmt.Errorf("unsupported Seek in directory %s", d.name) +} + +func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) { + if d.pos >= len(d.entries) && count > 0 { + return nil, io.EOF + } + if count <= 0 || count > len(d.entries)-d.pos { + count = len(d.entries) - d.pos + } + e := d.entries[d.pos : d.pos+count] + d.pos += count + return e, nil +}