Esempio n. 1
0
    def extractrom_sega(self, arc, outputPath, filenameWithoutExtension):
        filename = os.path.join(
            outputPath,
            filenameWithoutExtension + self.extensions[self.channeltype])
        if arc.hasfile('data.ccf'):
            ccf = CCFArchive(arc.getfile('data.ccf'))

            if ccf.hasfile('config'):
                romfilename = getConfiguration(ccf.getfile('config'),
                                               'romfile')
            else:
                return False

            if romfilename:
                rom = ccf.find(romfilename)
                writerom(rom, filename)
                print('Got ROM: %s' % filename)

                if self.extractsave(outputPath):
                    print('Extracted save to %s.srm' % self.name)
                else:
                    print('No save file found')

                return True
            else:
                print('ROM filename not specified in config')
                return False
Esempio n. 2
0
    def extractmanual(self, u8path):
        try:
            arc = U8Archive(u8path)
            if not arc: return False
        except AssertionError:
            return False

        man = None
        try:
            if arc.findfile('emanual.arc'):
                man = U8Archive(arc.getfile(arc.findfile('emanual.arc')))
            elif arc.findfile('html.arc'):
                man = U8Archive(arc.getfile(arc.findfile('html.arc')))
            elif arc.findfile('man.arc'):
                man = U8Archive(arc.getfile(arc.findfile('man.arc')))
            elif arc.findfile('data.ccf'):
                ccf = CCFArchive(arc.getfile(arc.findfile('data.ccf')))
                man = U8Archive(ccf.getfile('man.arc'))
            elif arc.findfile('htmlc.arc'):
                manc = arc.getfile(arc.findfile('htmlc.arc'))
                print('Decompressing manual: htmlc.arc')
                man = U8Archive(StringIO(romc.decompress(manc)))
        except AssertionError:
            pass

        if man:
            man.extract(os.path.join('manuals', self.name))
            print('Extracted manual to ' + os.path.join('manuals', self.name))
            return True

        return False
Esempio n. 3
0
    def extractrom_sega(self, arc, filename):
        if arc.hasfile('data.ccf'):
            ccf = CCFArchive(arc.getfile('data.ccf'))

            if ccf.hasfile('config'):
                for line in ccf.getfile('config'):
                    if line.startswith('romfile='):
                        romname = line[len('romfile='):].strip('/\\\"\0\r\n')
            else:
                print('config not found')
                return False

            if romname:
                print('Found ROM: %s' % romname)
                rom = ccf.find(romname)
                writerom(rom, filename)
                print('Got ROM: %s' % filename)

                if self.extractsave():
                    print('Extracted save to %s.srm' % self.name)
                else:
                    print('No save file found')

                return True
            else:
                print('ROM filename not specified in config')
                return False
Esempio n. 4
0
	def extractmanual(self, u8path):
		try:
			arc = U8Archive(u8path)
			if not arc: return False
		except AssertionError: 
			return False
	
		man = None
		try:
			if arc.findfile('emanual.arc'):
				man = U8Archive(arc.getfile(arc.findfile('emanual.arc')))
			elif arc.findfile('html.arc'):
				man = U8Archive(arc.getfile(arc.findfile('html.arc')))
			elif arc.findfile('man.arc'):
				man = U8Archive(arc.getfile(arc.findfile('man.arc')))
			elif arc.findfile('data.ccf'):
				ccf = CCFArchive(arc.getfile(arc.findfile('data.ccf')))
				man = U8Archive(ccf.getfile('man.arc'))
			elif arc.findfile('htmlc.arc'):
				manc = arc.getfile(arc.findfile('htmlc.arc'))
				print 'Decompressing manual: htmlc.arc'
				man = U8Archive(StringIO(romc.decompress(manc)))
		except AssertionError: pass
	
		if man:
			man.extract(os.path.join('manuals', self.name))
			print 'Extracted manual to ' + os.path.join('manuals', self.name)
			return True
	
		return False
Esempio n. 5
0
    def extractmanual(self, u8path, manualOutputPath):
        try:
            u8arc = U8Archive(u8path)
            if not u8arc: return False
        except AssertionError:
            return False

        man = None
        try:
            if u8arc.findfile('emanual.arc'):
                man = U8Archive(u8arc.getfile(u8arc.findfile('emanual.arc')))
            elif u8arc.findfile('html.arc'):
                man = U8Archive(u8arc.getfile(u8arc.findfile('html.arc')))
            elif u8arc.findfile('man.arc'):
                man = U8Archive(u8arc.getfile(u8arc.findfile('man.arc')))
            elif u8arc.findfile('data.ccf'):
                ccf = CCFArchive(u8arc.getfile(u8arc.findfile('data.ccf')))
                man = U8Archive(ccf.getfile('man.arc'))
            elif u8arc.findfile('htmlc.arc'):
                manc = u8arc.getfile(u8arc.findfile('htmlc.arc'))
                print('Decompressing manual: htmlc.arc')
                man = U8Archive(BytesIO(lz77.decompress_n64(manc)))
            elif u8arc.findfilebyregex('.+_manual_.+\\.arc\\.lz77$'):
                # E.g. makaimura_manual_usa.arc.lz77 (Arcade Ghosts n Goblins)
                manc = u8arc.getfile(
                    u8arc.findfilebyregex('.+_manual_.+\\.arc\\.lz77$'))
                man = U8Archive(BytesIO(lz77.decompress_nonN64(manc)))
                manc.close()
        except AssertionError:
            pass

        if man:
            self.ensure_folder_exists(manualOutputPath)
            man.extract(manualOutputPath)
            print('Extracted manual to ' + manualOutputPath)
            return True

        return False
Esempio n. 6
0
	def extractrom_sega(self, arc, filename):
		if arc.hasfile('data.ccf'):
			ccf = CCFArchive(arc.getfile('data.ccf'))
		
			if ccf.hasfile('config'):
				for line in ccf.getfile('config'):
					if line.startswith('romfile='): romname = line[len('romfile='):].strip('/\\\"\0\r\n')
			else:
				print 'config not found'
				return False
			
			if romname:
				print 'Found ROM: %s' % romname
				rom = ccf.find(romname)
				writerom(rom, filename)
				print 'Got ROM: %s' % filename
				
				if self.extractsave(): print 'Extracted save to %s.srm' % self.name
				else: print 'No save file found'
				
				return True
			else:
				print 'ROM filename not specified in config'
				return False