2015-01-25 19:35:21 -05:00
|
|
|
#pragma once
|
2008-11-12 01:34:01 +00:00
|
|
|
|
|
|
|
#include "Iop_SifMan.h"
|
|
|
|
#include "Iop_Module.h"
|
2016-03-19 12:06:40 -07:00
|
|
|
#include "zip/ZipArchiveWriter.h"
|
|
|
|
#include "zip/ZipArchiveReader.h"
|
2008-11-12 01:34:01 +00:00
|
|
|
|
2019-09-17 08:29:09 -04:00
|
|
|
class CIopBios;
|
|
|
|
|
2008-11-12 01:34:01 +00:00
|
|
|
namespace Iop
|
|
|
|
{
|
2015-01-25 19:35:21 -05:00
|
|
|
class CIoman;
|
|
|
|
|
|
|
|
class CFileIo : public CSifModule, public CModule
|
|
|
|
{
|
|
|
|
public:
|
2015-01-26 03:39:44 -05:00
|
|
|
class CHandler
|
2015-01-25 19:35:21 -05:00
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CHandler(CIoman*);
|
|
|
|
virtual ~CHandler() = default;
|
2015-01-25 19:35:21 -05:00
|
|
|
|
2022-03-31 12:37:39 -04:00
|
|
|
virtual void AllocateMemory(){};
|
|
|
|
virtual void ReleaseMemory(){};
|
|
|
|
|
2019-09-16 17:53:50 -04:00
|
|
|
virtual void Invoke(CMIPS&, unsigned int);
|
2019-09-13 11:16:16 -04:00
|
|
|
virtual bool Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*) = 0;
|
2016-03-20 13:29:58 -07:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
virtual void LoadState(Framework::CZipArchiveReader&){};
|
|
|
|
virtual void SaveState(Framework::CZipArchiveWriter&) const {};
|
|
|
|
|
2019-08-01 12:52:43 -04:00
|
|
|
virtual void ProcessCommands(CSifMan*){};
|
2016-03-20 14:21:19 -07:00
|
|
|
|
2015-01-25 19:35:21 -05:00
|
|
|
protected:
|
2018-04-30 21:01:23 +01:00
|
|
|
CIoman* m_ioman = nullptr;
|
2015-01-25 19:35:21 -05:00
|
|
|
};
|
2008-11-12 01:34:01 +00:00
|
|
|
|
|
|
|
enum SIF_MODULE_ID
|
|
|
|
{
|
2018-04-30 21:01:23 +01:00
|
|
|
SIF_MODULE_ID = 0x80000001
|
2008-11-12 01:34:01 +00:00
|
|
|
};
|
|
|
|
|
2019-09-17 08:29:09 -04:00
|
|
|
CFileIo(CIopBios&, uint8*, CSifMan&, CIoman&);
|
2008-11-12 01:34:01 +00:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void SetModuleVersion(unsigned int);
|
2015-01-26 03:39:44 -05:00
|
|
|
|
2019-09-15 12:00:03 -04: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;
|
2008-11-12 01:34:01 +00:00
|
|
|
|
2020-09-22 17:20:14 -04:00
|
|
|
void LoadState(Framework::CZipArchiveReader&) override;
|
|
|
|
void SaveState(Framework::CZipArchiveWriter&) const override;
|
2016-03-19 12:06:40 -07:00
|
|
|
|
2019-08-01 12:52:43 -04:00
|
|
|
void ProcessCommands(Iop::CSifMan*);
|
2016-03-20 14:21:19 -07:00
|
|
|
|
2019-09-17 08:29:09 -04:00
|
|
|
static const char* g_moduleId;
|
|
|
|
|
2015-01-25 19:35:21 -05:00
|
|
|
private:
|
2015-01-26 03:39:44 -05:00
|
|
|
typedef std::unique_ptr<CHandler> HandlerPtr;
|
2022-03-31 12:37:39 -04:00
|
|
|
|
2022-03-31 08:41:32 -04:00
|
|
|
void SyncHandler();
|
2015-01-26 03:39:44 -05:00
|
|
|
|
2019-09-17 08:29:09 -04:00
|
|
|
CIopBios& m_bios;
|
|
|
|
uint8* m_ram = nullptr;
|
2018-04-30 21:01:23 +01:00
|
|
|
CSifMan& m_sifMan;
|
|
|
|
CIoman& m_ioman;
|
|
|
|
unsigned int m_moduleVersion = 0;
|
|
|
|
HandlerPtr m_handler;
|
2015-01-25 19:35:21 -05:00
|
|
|
};
|
2016-01-13 22:18:10 -05:00
|
|
|
|
|
|
|
typedef std::shared_ptr<CFileIo> FileIoPtr;
|
2008-11-12 01:34:01 +00:00
|
|
|
}
|