2013-06-01 03:46:03 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Types.h"
|
|
|
|
#include "GSHandler.h"
|
|
|
|
#include "Stream.h"
|
2013-07-06 05:47:47 +00:00
|
|
|
#include "Ps2Const.h"
|
|
|
|
#include "MIPS.h"
|
|
|
|
|
|
|
|
class CGsPacketMetadata
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
explicit CGsPacketMetadata(unsigned int pathIndex = 0)
|
|
|
|
: pathIndex(pathIndex)
|
|
|
|
, vuMemPacketAddress(0)
|
|
|
|
, vpu1Top(0)
|
|
|
|
, vpu1Itop(0)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int pathIndex;
|
|
|
|
MIPSSTATE vu1State;
|
|
|
|
uint8 microMem1[PS2::MICROMEM1SIZE];
|
|
|
|
uint8 vuMem1[PS2::VUMEM1SIZE];
|
|
|
|
uint32 vpu1Top;
|
|
|
|
uint32 vpu1Itop;
|
|
|
|
uint32 vuMemPacketAddress;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CGsPacket
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef std::vector<CGSHandler::RegisterWrite> WriteArray;
|
|
|
|
|
|
|
|
WriteArray writes;
|
|
|
|
CGsPacketMetadata metadata;
|
|
|
|
};
|
2013-06-01 03:46:03 +00:00
|
|
|
|
|
|
|
class CFrameDump
|
|
|
|
{
|
|
|
|
public:
|
2013-07-06 05:47:47 +00:00
|
|
|
typedef std::vector<CGsPacket> PacketArray;
|
2013-06-01 03:46:03 +00:00
|
|
|
|
|
|
|
CFrameDump();
|
|
|
|
virtual ~CFrameDump();
|
|
|
|
|
|
|
|
void Reset();
|
|
|
|
|
|
|
|
uint8* GetInitialGsRam();
|
|
|
|
uint64* GetInitialGsRegisters();
|
|
|
|
|
|
|
|
const PacketArray& GetPackets() const;
|
2013-07-06 05:47:47 +00:00
|
|
|
void AddPacket(const CGSHandler::RegisterWrite*, uint32, const CGsPacketMetadata*);
|
2013-06-01 03:46:03 +00:00
|
|
|
|
|
|
|
void Read(Framework::CStream&);
|
|
|
|
void Write(Framework::CStream&) const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
uint8* m_initialGsRam;
|
|
|
|
uint64 m_initialGsRegisters[CGSHandler::REGISTER_MAX];
|
|
|
|
PacketArray m_packets;
|
|
|
|
};
|