示例#1
0
bool MesenMovie::LoadGame()
{
	string mesenVersion = LoadString(_settings, MovieKeys::MesenVersion);
	string gameFile = LoadString(_settings, MovieKeys::GameFile);
	string sha1Hash = LoadString(_settings, MovieKeys::Sha1);
	//string patchFile = LoadString(_settings, MovieKeys::PatchFile);
	//string patchFileSha1 = LoadString(_settings, MovieKeys::PatchFileSha1);
	//string patchedRomSha1 = LoadString(_settings, MovieKeys::PatchedRomSha1);

	HashInfo hashInfo;
	hashInfo.Sha1Hash = sha1Hash;

	VirtualFile romFile = Console::FindMatchingRom(gameFile, hashInfo);
	bool gameLoaded = false;
	if(romFile.IsValid()) {
		VirtualFile patchFile(_movieFile.GetFilePath(), "PatchData.dat");
		if(patchFile.IsValid()) {
			gameLoaded = Console::LoadROM(romFile, patchFile);
		} else {
			gameLoaded = Console::LoadROM(romFile);
		}
	}

	return gameLoaded;
}
示例#2
0
PATCH_RESULT CPatchFile::Execute(Framework::CStream& stream, const boost::filesystem::path& gameLocationPath)
{
	try
	{
		CPatchFile patchFile(gameLocationPath);
		patchFile.DoExecute(stream);
		return patchFile.GetResult();
	}
	catch(...)
	{
		PATCH_RESULT result;
		result.succeeded = false;
		return result;
	}
}
示例#3
0
文件: terrain.cpp 项目: crvv/simple
void Terrain::loadModel() {
    std::ifstream patchFile("model/patch", std::ios::binary);
    std::ifstream terrainFile("model/terrain", std::ios::binary);
    if (!patchFile.good() || !terrainFile.good()) {
        throw std::runtime_error("unable to read file");
    }
    std::vector<GLfloat> vertices;
    std::vector<GLuint> indices;
    std::vector<GLfloat> terrain;
    GLuint terrainSidePointCount;

    ModelUtils::readFileToValue(patchFile, vertices, indices);
    ModelUtils::readFileToValue(terrainFile, terrainSideLength, terrainSidePointCount, terrain);

    vertexCount = static_cast<GLsizei>(indices.size());
    vao->addElementBuffer(indices, GL_STATIC_DRAW);
    vao->addVertexAttribBuffer(0, 2, GL_FLOAT, vertices, GL_STATIC_DRAW);

    texture = std::make_shared<Texture>(GL_TEXTURE_2D, terrainSidePointCount, terrain);

}
示例#4
0
uint32_t iiflags(struct imageInfo *ii, uint32_t size, bool needsFlip) {
    if (needsFlip) {
        ii->flags = OSSwapInt32(ii->flags);
    }
    if (debug) printf("flags->%x, nitems %d\n", ii->flags, size/sizeof(struct imageInfo));
    uint32_t flags = ii->flags;
    if (patch && (flags&0x2)==0) {
        //printf("will patch %s at offset %p\n", FileName, (char*)(&ii->flags) - FileBase);
        uint32_t newvalue = flags | 0x2;
        if (needsFlip) newvalue = OSSwapInt32(newvalue);
        patchFile(newvalue, (char*)(&ii->flags) - FileBase);
    }
    for(int niis = 1; niis < size/sizeof(struct imageInfo); ++niis) {
        if (needsFlip) ii[niis].flags = OSSwapInt32(ii[niis].flags);
        if (ii[niis].flags != flags) {
            // uh, oh.
            printf("XXX ii[%d].flags %x != ii[0].flags %x\n", niis, ii[niis].flags, flags);
            ++Errors;
        }
    }
    return flags;
}
示例#5
0
int C3dsTool::Action()
{
	if (m_eAction == kActionExtract)
	{
		if (!extractFile())
		{
			printf("ERROR: extract file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionCreate)
	{
		if (!createFile())
		{
			printf("ERROR: create file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionEncrypt)
	{
		if (!encryptFile())
		{
			printf("ERROR: encrypt file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionUncompress)
	{
		if (!uncompressFile())
		{
			printf("ERROR: uncompress file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionCompress)
	{
		if (!compressFile())
		{
			printf("ERROR: compress file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionTrim)
	{
		if (!trimFile())
		{
			printf("ERROR: trim file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionPad)
	{
		if (!padFile())
		{
			printf("ERROR: pad file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionDiff)
	{
		if (!diffFile())
		{
			printf("ERROR: create patch file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionPatch)
	{
		if (!patchFile())
		{
			printf("ERROR: apply patch file failed\n\n");
			return 1;
		}
	}
	if (m_eAction == kActionSample)
	{
		return sample();
	}
	if (m_eAction == kActionHelp)
	{
		return Help();
	}
	return 0;
}