Play-/Source/iop/Iop_Loadcore.h

62 lines
1.7 KiB
C
Raw Permalink Normal View History

2015-06-27 04:12:35 -04:00
#pragma once
#include "Iop_Module.h"
#include "Iop_SifMan.h"
#include "zip/ZipArchiveWriter.h"
#include "zip/ZipArchiveReader.h"
#include <functional>
class CIopBios;
namespace Iop
{
class CLoadcore : public CModule, public CSifModule
{
public:
enum MODULE_ID
{
MODULE_ID = 0x80000006
};
2018-04-30 21:01:23 +01:00
typedef std::function<uint32(const char*, const char*)> LoadExecutableHandler;
2018-04-30 21:01:23 +01:00
CLoadcore(CIopBios&, uint8*, CSifMan&);
virtual ~CLoadcore() = default;
2018-04-30 21:01:23 +01:00
void SetModuleVersion(unsigned int);
2018-04-30 21:01:23 +01:00
std::string GetId() const override;
std::string GetFunctionName(unsigned int) const override;
void Invoke(CMIPS&, unsigned int) override;
bool Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*) override;
void LoadState(Framework::CZipArchiveReader&) override;
void SaveState(Framework::CZipArchiveWriter&) const override;
2018-04-30 21:01:23 +01:00
void SetLoadExecutableHandler(const LoadExecutableHandler&);
private:
uint32 GetLibraryEntryTable();
2018-04-30 21:01:23 +01:00
uint32 RegisterLibraryEntries(uint32);
2021-01-25 20:50:57 -05:00
int32 ReleaseLibraryEntries(uint32);
2018-04-30 21:01:23 +01:00
uint32 QueryBootMode(uint32);
uint32 SetRebootTimeLibraryHandlingMode(uint32, uint32);
bool LoadModule(uint32*, uint32, uint32*, uint32);
void LoadExecutable(uint32*, uint32, uint32*, uint32);
void LoadModuleFromMemory(uint32*, uint32, uint32*, uint32);
bool StopModule(uint32*, uint32, uint32*, uint32);
void UnloadModule(uint32*, uint32, uint32*, uint32);
void SearchModuleByName(uint32*, uint32, uint32*, uint32);
void Initialize(uint32*, uint32, uint32*, uint32);
CIopBios& m_bios;
uint8* m_ram;
unsigned int m_moduleVersion = 1000;
LoadExecutableHandler m_loadExecutableHandler;
};
typedef std::shared_ptr<CLoadcore> LoadcorePtr;
}