Files
ppsspp/Core/HLE/PopsBoot.h
T
Francisco José García García bfee675ba5 POPS: Store PS1 games, with the version key from their PGD
The manager's module_start registers its license check with SysMem
(SysMemForKernel_310802A9), and the kernel calls it before loading the game,
which needs the game's license (.rif) and activation. The init thread now
calls it, replaced by one that takes the version key from the disc image's
PGD header (its MAC_70 is the key's MAC), as popcorn does on the Vita. It
latches the key and the content ID fingerprint where the manager's first
successful check would. The disc image's MACs are checked for real, with
sceAmctrl_driver.

Crash Bandicoot's store release is playable, with sound.
2026-10-21 13:15:30 +02:00

45 lines
1.6 KiB
C++

// Copyright (c) 2012- PPSSPP Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0 or later versions.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#pragma once
#include <string>
#include "Common/CommonTypes.h"
#include "Core/HLE/sceKernel.h"
class FileLoader;
class PointerWrap;
void __PopsBootInit();
void __PopsBootShutdown();
void __PopsBootDoState(PointerWrap &p);
bool PopsBootActive();
// After the POPS manager is loaded: the user modules of the POPS boot configuration.
void __PopsBootLoadModules();
// After the POPS manager is loaded: have it load the emulator for the game, as the kernel's init does.
// Fails for a manager other than 6.60's.
bool __PopsBootStartInit(FileLoader *pbp, const std::string &gamePath, std::string *error);
// The emulator module is loaded, not yet started.
void __PopsBootPatchEmulator(u32 textAddr, u32 textSize, u32 decodeStub);
// The manager registered its version key function with SysMem.
void __PopsBootSetVersionKeyFunc(u32 func);
void Register_PopsBootCalls();