cps2rom

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 2, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DiffRomRegion added in v1.0.0

func DiffRomRegion(baseOffset int, region RomRegion, first *zip.ReadCloser, second *zip.ReadCloser) (*[]RomPatch, error)

func GenerateMraPatches added in v0.2.0

func GenerateMraPatches(patches *[]RomPatch) []string

func ParseRoms

func ParseRoms() error

func PatchRomRegionWithMra added in v0.3.0

func PatchRomRegionWithMra(romZip *zip.ReadCloser, mra MraXml, romRegion RomRegion, fileContentMap map[string][]byte, baseOffset int, outputFilepath string) error

func ProcessRegionFromZip added in v0.2.0

func ProcessRegionFromZip(romZip *zip.ReadCloser, region RomRegion) ([]uint8, error)

func SplitRegionToFiles added in v0.3.0

func SplitRegionToFiles(romRegion RomRegion, binary []byte, zipPath string) error
func ValidateRomForRegion(romRegion RomRegion, zip *zip.ReadCloser) error {
	requiredFiles := make([]string, 0, len(romRegion.Operations))
	if len(romRegion.Operations) > 0 {
		for _, operation := range romRegion.Operations {
			if operation.Filename != "" {
				requiredFiles = append(requiredFiles, operation.Filename)
			}
		}
	}
	hasFiles := make(map[string]bool)
	for _, filename := range requiredFiles {
		hasFiles[filename] = false
	}
	for _, file := range zip.File {
		var name = file.Name
		_, ok := hasFiles[name]
		if ok {
			hasFiles[name] = true
		}
	}

	numMissingFiles := 0
	missingFiles := make([]string, 0, len(requiredFiles))
	for filename, hasFile := range hasFiles {
		if !hasFile {
			numMissingFiles = numMissingFiles + 1
			missingFiles = append(missingFiles, filename)
		}
	}
	if numMissingFiles > 0 {
		return fmt.Errorf("missing %d files: %s", numMissingFiles, Resources.LogText.Bold(strings.Join(missingFiles, ", ")))
	}
	return nil
}

func ValidateRomZip

func ValidateRomZip(romDefinition RomDefinition, zip *zip.ReadCloser) error

func WriteModifiedRegionToZip added in v0.4.0

func WriteModifiedRegionToZip(outputFilepath string, romZip *zip.ReadCloser, modifiedRegionZip *zip.ReadCloser, region RomRegion) error

Types

type MraXml added in v0.3.0

type MraXml struct {
	XMLName xml.Name `xml:"misterromdescription"`
	Text    string   `xml:",chardata"`
	About   struct {
		Text    string `xml:",chardata"`
		Author  string `xml:"author,attr"`
		Webpage string `xml:"webpage,attr"`
		Source  string `xml:"source,attr"`
		Twitter string `xml:"twitter,attr"`
	} `xml:"about"`
	Name         string `xml:"name"`
	Setname      string `xml:"setname"`
	Rbf          string `xml:"rbf"`
	Mameversion  string `xml:"mameversion"`
	Year         string `xml:"year"`
	Manufacturer string `xml:"manufacturer"`
	Players      string `xml:"players"`
	Joystick     string `xml:"joystick"`
	Rotation     string `xml:"rotation"`
	Region       string `xml:"region"`
	Platform     string `xml:"platform"`
	Category     string `xml:"category"`
	Catver       string `xml:"catver"`
	Mraauthor    string `xml:"mraauthor"`
	Rom          []struct {
		Text    string `xml:",chardata"`
		Index   string `xml:"index,attr"`
		Zip     string `xml:"zip,attr"`
		Type    string `xml:"type,attr"`
		Md5     string `xml:"md5,attr"`
		Address string `xml:"address,attr"`
		Part    []struct {
			Text   string `xml:",chardata"`
			Name   string `xml:"name,attr"`
			Crc    string `xml:"crc,attr"`
			Length string `xml:"length,attr"`
		} `xml:"part"`
		Patch []struct {
			Data   string `xml:",chardata"`
			Offset string `xml:"offset,attr"`
		} `xml:"patch"`
		Interleave []struct {
			Text   string `xml:",chardata"`
			Output string `xml:"output,attr"`
			Part   []struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
				Crc  string `xml:"crc,attr"`
				Map  string `xml:"map,attr"`
			} `xml:"part"`
		} `xml:"interleave"`
	} `xml:"rom"`
	Nvram struct {
		Text  string `xml:",chardata"`
		Index string `xml:"index,attr"`
		Size  string `xml:"size,attr"`
	} `xml:"nvram"`
	Buttons struct {
		Text    string `xml:",chardata"`
		Names   string `xml:"names,attr"`
		Default string `xml:"default,attr"`
		Count   string `xml:"count,attr"`
	} `xml:"buttons"`
}

func ParseMra added in v1.0.0

func ParseMra(mraFile []byte) (*MraXml, error)

type RomDefinition

type RomDefinition struct {
	Maincpu  RomRegion `json:"maincpu,omitempty"`
	Gfx      RomRegion `json:"gfx,omitempty"`
	Audiocpu RomRegion `json:"audiocpu,omitempty"`
	Qsound   RomRegion `json:"qsound,omitempty"`
	Key      RomRegion `json:"key,omitempty"`
}

func GetRomDefinition added in v0.4.0

func GetRomDefinition(romSetName string) RomDefinition

func ParseRomZip added in v0.4.0

func ParseRomZip(file_path string, romSetName string) (*zip.ReadCloser, *RomDefinition, error)

type RomPatch added in v0.2.0

type RomPatch struct {
	Filename string
	Offset   int
	Data     []uint8
}

type RomRegion

type RomRegion struct {
	Size       int                  `json:"size,omitempty"`
	Operations []RomRegionOperation `json:"operations,omitempty"`
}

type RomRegionOperation

type RomRegionOperation struct {
	Offset    int    `json:"offset,omitempty"`
	Length    int    `json:"length,omitempty"`
	Type      string `json:"type,omitempty"`
	GroupSize int    `json:"groupSize,omitempty"`
	Skip      int    `json:"skip,omitempty"`
	Reverse   bool   `json:"reverse,omitempty"`
	Filename  string `json:"filename,omitempty"`
	FillValue int    `json:"fillValue,omitempty"`
}

type Roms

type Roms = map[string]RomDefinition
var RomDefinitions *Roms

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL