Mesen-S/Core/SpcFileData.h

69 lines
1.6 KiB
C++

#pragma once
#include "stdafx.h"
class SpcFileData
{
public:
string SongTitle;
string GameTitle;
string Dumper;
string Artist;
string Comment;
uint16_t PC;
uint8_t A;
uint8_t X;
uint8_t Y;
uint8_t PS;
uint8_t SP;
uint8_t CpuRegs[4];
uint8_t ControlReg;
uint8_t RamRegs[2];
uint8_t TimerOutput[3];
uint8_t TimerTarget[3];
uint8_t DspRegSelect;
uint8_t DspRegs[128];
uint8_t SpcRam[0x10000];
SpcFileData(uint8_t* spcData)
{
SongTitle = string(spcData + 0x2E, spcData + 0x2E + 0x20);
GameTitle = string(spcData + 0x4E, spcData + 0x4E + 0x20);
Dumper = string(spcData + 0x6E, spcData + 0x6E + 0x10);
Artist = string(spcData + 0xB1, spcData + 0xB1 + 0x20);
Comment = string(spcData + 0x7E, spcData + 0x7E + 0x20);
memcpy(SpcRam, spcData + 0x100, 0xFFC0);
memcpy(SpcRam + 0xFFC0, spcData + 0x101C0, 0x40);
memcpy(DspRegs, spcData + 0x10100, 128);
PC = spcData[0x25] | (spcData[0x26] << 8);
A = spcData[0x27];
X = spcData[0x28];
Y = spcData[0x29];
PS = spcData[0x2A];
SP = spcData[0x2B];
ControlReg = spcData[0x100 + 0xF1];
DspRegSelect = spcData[0x100 + 0xF2];
CpuRegs[0] = spcData[0x100 + 0xF4];
CpuRegs[1] = spcData[0x100 + 0xF5];
CpuRegs[2] = spcData[0x100 + 0xF6];
CpuRegs[3] = spcData[0x100 + 0xF7];
RamRegs[0] = spcData[0x100 + 0xF8];
RamRegs[1] = spcData[0x100 + 0xF9];
TimerTarget[0] = spcData[0x100 + 0xFA];
TimerTarget[1] = spcData[0x100 + 0xFB];
TimerTarget[2] = spcData[0x100 + 0xFC];
TimerOutput[0] = spcData[0x100 + 0xFD];
TimerOutput[1] = spcData[0x100 + 0xFE];
TimerOutput[2] = spcData[0x100 + 0xFF];
}
};