diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index cd722ecb05..527b2b44b6 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -984,6 +984,15 @@ Code + + Octoshock.cs + + + Octoshock.cs + + + Octoshock.cs + diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDebuggable.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDebuggable.cs new file mode 100644 index 0000000000..f94fce366a --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDebuggable.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Sony.PSX +{ + public unsafe partial class Octoshock : IDebuggable + { + // TODO: don't cast to int, and are any of these not 32 bit? + public IDictionary GetCpuFlagsAndRegisters() + { + Dictionary ret = new Dictionary(); + var regs = new OctoshockDll.ShockRegisters_CPU(); + + OctoshockDll.shock_GetRegisters_CPU(psx, ref regs); + + //ret[ "r1"] = (int)regs.GPR[ 1]; ret[ "r2"] = (int)regs.GPR[ 2]; ret[ "r3"] = (int)regs.GPR[ 3]; + //ret[ "r4"] = (int)regs.GPR[ 4]; ret[ "r5"] = (int)regs.GPR[ 5]; ret[ "r6"] = (int)regs.GPR[ 6]; ret[ "r7"] = (int)regs.GPR[ 7]; + //ret[ "r8"] = (int)regs.GPR[ 8]; ret[ "r9"] = (int)regs.GPR[ 9]; ret["r10"] = (int)regs.GPR[10]; ret["r11"] = (int)regs.GPR[11]; + //ret["r12"] = (int)regs.GPR[12]; ret["r13"] = (int)regs.GPR[13]; ret["r14"] = (int)regs.GPR[14]; ret["r15"] = (int)regs.GPR[15]; + //ret["r16"] = (int)regs.GPR[16]; ret["r17"] = (int)regs.GPR[17]; ret["r18"] = (int)regs.GPR[18]; ret["r19"] = (int)regs.GPR[19]; + //ret["r20"] = (int)regs.GPR[20]; ret["r21"] = (int)regs.GPR[21]; ret["r22"] = (int)regs.GPR[22]; ret["r23"] = (int)regs.GPR[23]; + //ret["r24"] = (int)regs.GPR[24]; ret["r25"] = (int)regs.GPR[25]; ret["r26"] = (int)regs.GPR[26]; ret["r27"] = (int)regs.GPR[27]; + //ret["r28"] = (int)regs.GPR[28]; ret["r29"] = (int)regs.GPR[29]; ret["r30"] = (int)regs.GPR[30]; ret["r31"] = (int)regs.GPR[31]; + + ret[ "at"] = (int)regs.GPR[ 1]; + ret[ "v0"] = (int)regs.GPR[ 2]; ret[ "v1"] = (int)regs.GPR[ 3]; + ret[ "a0"] = (int)regs.GPR[ 4]; ret[ "a1"] = (int)regs.GPR[ 5]; ret[ "a2"] = (int)regs.GPR[ 6]; ret[ "a3"] = (int)regs.GPR[ 7]; + ret[ "t0"] = (int)regs.GPR[ 8]; ret[ "t1"] = (int)regs.GPR[ 9]; ret[ "t2"] = (int)regs.GPR[10]; ret[ "t3"] = (int)regs.GPR[11]; + ret[ "t4"] = (int)regs.GPR[12]; ret[ "t5"] = (int)regs.GPR[13]; ret[ "t6"] = (int)regs.GPR[14]; ret[ "t7"] = (int)regs.GPR[15]; + ret[ "s0"] = (int)regs.GPR[16]; ret[ "s1"] = (int)regs.GPR[17]; ret[ "s2"] = (int)regs.GPR[18]; ret[ "s3"] = (int)regs.GPR[19]; + ret[ "s4"] = (int)regs.GPR[20]; ret[ "s5"] = (int)regs.GPR[21]; ret[ "s6"] = (int)regs.GPR[22]; ret[ "s7"] = (int)regs.GPR[23]; + ret[ "t8"] = (int)regs.GPR[24]; ret[ "t9"] = (int)regs.GPR[25]; + ret[ "k0"] = (int)regs.GPR[26]; ret[ "k1"] = (int)regs.GPR[27]; + ret[ "gp"] = (int)regs.GPR[28]; + ret[ "sp"] = (int)regs.GPR[29]; + ret[ "fp"] = (int)regs.GPR[30]; + ret[ "ra"] = (int)regs.GPR[31]; + + ret[ "pc"] = (int)regs.PC; + ret[ "lo"] = (int)regs.LO; + ret[ "hi"] = (int)regs.HI; + ret[ "sr"] = (int)regs.SR; + ret["cause"] = (int)regs.CAUSE; + ret[ "epc"] = (int)regs.EPC; + + return ret; + } + + static Dictionary CpuRegisterIndices = new Dictionary() { + { "r1", 1 }, { "r2", 2 }, { "r3", 3 }, { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 }, + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 }, { "r12", 12 }, { "r13", 13 }, { "r14", 14 }, { "r15", 15 }, + { "r16", 16 }, { "r17", 17 }, { "r18", 18 }, { "r19", 19 }, { "r20", 20 }, { "r21", 21 }, { "r22", 22 }, { "r23", 23 }, + { "r24", 24 }, { "r25", 25 }, { "r26", 26 }, { "r27", 27 }, { "r28", 28 }, { "r29", 29 }, { "r30", 30 }, { "r31", 31 }, + + { "at", 1 }, { "v0", 2 }, { "v1", 3 }, + { "a0", 4 }, { "a1", 5 }, { "a2", 6 }, { "a3", 7 }, + { "t0", 8 }, { "t1", 9 }, { "t2", 10 }, { "t3", 11 }, { "t4", 12 }, { "t5", 13 }, { "t6", 14 }, { "t7", 15 }, + { "s0", 16 }, { "s1", 17 }, { "s2", 18 }, { "s3", 19 }, { "s4", 20 }, { "s5", 21 }, { "s6", 22 }, { "s7", 23 }, + { "t8", 24 }, { "t9", 25 }, + { "k0", 26 }, { "k1", 27 }, + { "gp", 28 }, { "sp", 29 }, { "fp", 30 }, { "ra", 31 }, + + { "pc", 32 }, + //33 - PC_NEXT + //34 - IN_BD_SLOT + { "lo", 35 }, + { "hi", 36 }, + { "sr", 37 }, + {"cause", 38 }, + { "epc", 39 }, + }; + + public void SetCpuRegister(string register, int value) + { + int index = CpuRegisterIndices[register]; + OctoshockDll.shock_SetRegister_CPU(psx, index, (uint)value); + } + + private readonly MemoryCallbackSystem _memoryCallbacks = new MemoryCallbackSystem(); + public IMemoryCallbackSystem MemoryCallbacks { get { return _memoryCallbacks; } } + + public bool CanStep(StepType type) { return false; } + + [FeatureNotImplemented] + public void Step(StepType type) { throw new NotImplementedException(); } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDisassemblable.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDisassemblable.cs new file mode 100644 index 0000000000..780c335fcb --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.IDisassemblable.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Sony.PSX +{ + public partial class Octoshock : IDisassemblable + { + public string Cpu + { + get { return "R3000A"; } + set { } + } + + public IEnumerable AvailableCpus + { + get + { + yield return "R3000A"; + } + } + + public string PCRegisterName + { + get { return "pc"; } + } + + public string Disassemble(MemoryDomain m, uint addr, out int length) + { + length = 4; + //var result = OctoshockDll.shock_Util_DisassembleMIPS(); + return ""; + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.ITraceable.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.ITraceable.cs new file mode 100644 index 0000000000..1cf9814c73 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.ITraceable.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using BizHawk.Emulation.Common; +using BizHawk.Common.NumberExtensions; + +namespace BizHawk.Emulation.Cores.Sony.PSX +{ + public partial class Octoshock + { + public ITraceable Tracer { get { return tracer; } } + + public static string TraceHeader = "R3000A: PC, raw bytes, mnemonic, registers (GPRs, lo, hi, sr, cause, epc)"; + + public void ShockTraceCallback(IntPtr opaque, uint PC, uint inst, string dis) + { + var regs = GetCpuFlagsAndRegisters(); + StringBuilder sb = new StringBuilder(); + + foreach (var r in regs) + { + if (r.Key != "pc") + sb.Append( + string.Format("{0}:{1} ", + r.Key, + r.Value.Value.ToHexString(r.Value.BitSize / 4))); + } + + Tracer.Put(new TraceInfo + { + Disassembly = string.Format("{0:X8}: {1:X8} {2}", PC, inst, dis.PadRight(20)), + RegisterInfo = sb.ToString().Trim() + }); + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs index abe3b051c0..2c6b4a8bf8 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs @@ -18,7 +18,6 @@ using System.Linq; using System.Collections.Generic; using Newtonsoft.Json; - using BizHawk.Emulation.Common; using BizHawk.Common; @@ -32,7 +31,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX isPorted: true, isReleased: true )] - public unsafe class Octoshock : IEmulator, IVideoProvider, ISyncSoundProvider, ISaveRam, IStatable, IDriveLight, ISettable, IDebuggable, IRegionable, IInputPollable + public unsafe partial class Octoshock : IEmulator, IVideoProvider, ISyncSoundProvider, ISaveRam, IStatable, IDriveLight, ISettable, IRegionable, IInputPollable { public string SystemId { get { return "PSX"; } } @@ -40,15 +39,15 @@ namespace BizHawk.Emulation.Cores.Sony.PSX { ControllerDefinition definition = new ControllerDefinition(); definition.Name = "PSX DualShock Controller"; // <-- for compatibility - //ControllerDefinition.Name = "PSX FrontIO"; // TODO - later rename to this, I guess, so it's less misleading. don't want to wreck keybindings yet. + //ControllerDefinition.Name = "PSX FrontIO"; // TODO - later rename to this, I guess, so it's less misleading. don't want to wreck keybindings yet. var cfg = syncSettings.FIOConfig.ToLogical(); for (int i = 0; i < cfg.NumPlayers; i++) { int pnum = i + 1; - definition.BoolButtons.AddRange(new[] - { + definition.BoolButtons.AddRange(new[] + { "P" + pnum + " Up", "P" + pnum + " Down", "P" + pnum + " Left", @@ -59,34 +58,34 @@ namespace BizHawk.Emulation.Cores.Sony.PSX "P" + pnum + " Triangle", "P" + pnum + " Circle", "P" + pnum + " Cross", - "P" + pnum + " L1", + "P" + pnum + " L1", "P" + pnum + " R1", "P" + pnum + " L2", "P" + pnum + " R2", }); - var type = cfg.DevicesPlayer[i]; + var type = cfg.DevicesPlayer[i]; - if (type == OctoshockDll.ePeripheralType.DualShock || type == OctoshockDll.ePeripheralType.DualAnalog) + if (type == OctoshockDll.ePeripheralType.DualShock || type == OctoshockDll.ePeripheralType.DualAnalog) + { + definition.BoolButtons.Add("P" + pnum + " L3"); + definition.BoolButtons.Add("P" + pnum + " R3"); + definition.BoolButtons.Add("P" + pnum + " MODE"); + + definition.FloatControls.AddRange(new[] { - definition.BoolButtons.Add("P" + pnum + " L3"); - definition.BoolButtons.Add("P" + pnum + " R3"); - definition.BoolButtons.Add("P" + pnum + " MODE"); - - definition.FloatControls.AddRange(new[] - { "P" + pnum + " LStick X", "P" + pnum + " LStick Y", "P" + pnum + " RStick X", "P" + pnum + " RStick Y" }); - definition.FloatRanges.Add(new[] { 0.0f, 128.0f, 255.0f }); - definition.FloatRanges.Add(new[] { 255.0f, 128.0f, 0.0f }); - definition.FloatRanges.Add(new[] { 0.0f, 128.0f, 255.0f }); - definition.FloatRanges.Add(new[] { 255.0f, 128.0f, 0.0f }); - } + definition.FloatRanges.Add(new[] { 0.0f, 128.0f, 255.0f }); + definition.FloatRanges.Add(new[] { 255.0f, 128.0f, 0.0f }); + definition.FloatRanges.Add(new[] { 0.0f, 128.0f, 255.0f }); + definition.FloatRanges.Add(new[] { 255.0f, 128.0f, 0.0f }); } + } definition.BoolButtons.AddRange(new[] { @@ -122,7 +121,10 @@ namespace BizHawk.Emulation.Cores.Sony.PSX static Octoshock CurrOctoshockCore; IntPtr psx; - TraceBuffer tracer = new TraceBuffer(); + TraceBuffer tracer = new TraceBuffer() + { + Header = TraceHeader + }; bool disposed = false; public void Dispose() @@ -1247,100 +1249,5 @@ namespace BizHawk.Emulation.Cores.Sony.PSX } #endregion - - #region IDebuggable - - // TODO: don't cast to int, and are any of these not 32 bit? - public IDictionary GetCpuFlagsAndRegisters() - { - Dictionary ret = new Dictionary(); - var regs = new OctoshockDll.ShockRegisters_CPU(); - - OctoshockDll.shock_GetRegisters_CPU(psx, ref regs); - - ret["r1"] = (int)regs.GPR[1]; ret["r2"] = (int)regs.GPR[2]; ret["r3"] = (int)regs.GPR[3]; - ret["r4"] = (int)regs.GPR[4]; ret["r5"] = (int)regs.GPR[5]; ret["r6"] = (int)regs.GPR[6]; ret["r7"] = (int)regs.GPR[7]; - ret["r8"] = (int)regs.GPR[8]; ret["r9"] = (int)regs.GPR[9]; ret["r10"] = (int)regs.GPR[10]; ret["r11"] = (int)regs.GPR[11]; - ret["r12"] = (int)regs.GPR[12]; ret["r13"] = (int)regs.GPR[13]; ret["r14"] = (int)regs.GPR[14]; ret["r15"] = (int)regs.GPR[15]; - ret["r16"] = (int)regs.GPR[16]; ret["r17"] = (int)regs.GPR[17]; ret["r18"] = (int)regs.GPR[18]; ret["r19"] = (int)regs.GPR[19]; - ret["r20"] = (int)regs.GPR[20]; ret["r21"] = (int)regs.GPR[21]; ret["r22"] = (int)regs.GPR[22]; ret["r23"] = (int)regs.GPR[23]; - ret["r24"] = (int)regs.GPR[24]; ret["r25"] = (int)regs.GPR[25]; ret["r26"] = (int)regs.GPR[26]; ret["r27"] = (int)regs.GPR[27]; - ret["r28"] = (int)regs.GPR[28]; ret["r29"] = (int)regs.GPR[29]; ret["r30"] = (int)regs.GPR[30]; ret["r31"] = (int)regs.GPR[31]; - - ret["at"] = (int)regs.GPR[1]; - ret["v0"] = (int)regs.GPR[2]; ret["v1"] = (int)regs.GPR[3]; - ret["a0"] = (int)regs.GPR[4]; ret["a1"] = (int)regs.GPR[5]; ret["a2"] = (int)regs.GPR[6]; ret["a3"] = (int)regs.GPR[7]; - ret["t0"] = (int)regs.GPR[8]; ret["t1"] = (int)regs.GPR[9]; ret["t2"] = (int)regs.GPR[10]; ret["t3"] = (int)regs.GPR[11]; - ret["t4"] = (int)regs.GPR[12]; ret["t5"] = (int)regs.GPR[13]; ret["t6"] = (int)regs.GPR[14]; ret["t7"] = (int)regs.GPR[15]; - ret["s0"] = (int)regs.GPR[16]; ret["s1"] = (int)regs.GPR[17]; ret["s2"] = (int)regs.GPR[18]; ret["s3"] = (int)regs.GPR[19]; - ret["s4"] = (int)regs.GPR[20]; ret["s5"] = (int)regs.GPR[21]; ret["s6"] = (int)regs.GPR[22]; ret["s7"] = (int)regs.GPR[23]; - ret["t8"] = (int)regs.GPR[24]; ret["t9"] = (int)regs.GPR[25]; - ret["k0"] = (int)regs.GPR[26]; ret["k1"] = (int)regs.GPR[27]; - ret["gp"] = (int)regs.GPR[28]; - ret["sp"] = (int)regs.GPR[29]; - ret["fp"] = (int)regs.GPR[30]; - ret["ra"] = (int)regs.GPR[31]; - - ret["pc"] = (int)regs.PC; - ret["lo"] = (int)regs.LO; - ret["hi"] = (int)regs.HI; - ret["sr"] = (int)regs.SR; - ret["cause"] = (int)regs.CAUSE; - ret["epc"] = (int)regs.EPC; - - return ret; - } - - static Dictionary CpuRegisterIndices = new Dictionary() { - {"r1",1},{"r2",2},{"r3",3},{"r4",4},{"r5",5},{"r6",6},{"r7",7}, - {"r8",8},{"r9",9},{"r10",10},{"r11",11},{"r12",12},{"r13",13},{"r14",14},{"r15",15}, - {"r16",16},{"r17",17},{"r18",18},{"r19",19},{"r20",20},{"r21",21},{"r22",22},{"r23",23}, - {"r24",24},{"r25",25},{"r26",26},{"r27",27},{"r28",28},{"r29",29},{"r30",30},{"r31",31}, - {"at",1},{"v0",2},{"v1",3}, - {"a0",4},{"a1",5},{"a2",6},{"a3",7}, - {"t0",8},{"t1",9},{"t2",10},{"t3",11}, - {"t4",12},{"t5",13},{"t6",14},{"t7",15}, - {"s0",16},{"s1",17},{"s2",18},{"s3",19}, - {"s4",20},{"s5",21},{"s6",22},{"s7",23}, - {"t8",24},{"t9",25}, - {"k0",26},{"k1",27}, - {"gp",28},{"sp",29},{"fp",30},{"ra",31}, - {"pc",32}, - //33 - PC_NEXT - //34 - IN_BD_SLOT - {"lo",35}, - {"hi",36}, - {"sr",37}, - {"cause",38}, - {"epc",39}, - }; - - public void SetCpuRegister(string register, int value) - { - int index = CpuRegisterIndices[register]; - OctoshockDll.shock_SetRegister_CPU(psx, index, (uint)value); - } - - public ITraceable Tracer { get { return tracer; } } - - public void ShockTraceCallback(IntPtr opaque, uint PC, uint inst, string dis) - { - // Tracer refactor TODO: fix this - Tracer.Put(new TraceInfo - { - Disassembly = dis, - RegisterInfo = "TODO" - }); - } - - private readonly MemoryCallbackSystem _memoryCallbacks = new MemoryCallbackSystem(); - public IMemoryCallbackSystem MemoryCallbacks { get { return _memoryCallbacks; } } - - public bool CanStep(StepType type) { return false; } - - [FeatureNotImplemented] - public void Step(StepType type) { throw new NotImplementedException(); } - - #endregion //IDebuggable } } diff --git a/output/dll/octoshock.dll b/output/dll/octoshock.dll index 42d56035e3..235f335ec0 100644 Binary files a/output/dll/octoshock.dll and b/output/dll/octoshock.dll differ diff --git a/psx/octoshock/psx/cpu.cpp b/psx/octoshock/psx/cpu.cpp index a62047975b..38c173abae 100644 --- a/psx/octoshock/psx/cpu.cpp +++ b/psx/octoshock/psx/cpu.cpp @@ -31,6 +31,7 @@ void* g_ShockTraceCallbackOpaque = NULL; ShockCallback_Trace g_ShockTraceCallback = NULL; ShockCallback_Mem g_ShockMemCallback; eShockMemCb g_ShockMemCbType; +const char *disasm_buf = NULL; /* TODO Make sure load delays are correct. @@ -56,6 +57,7 @@ PS_CPU::PS_CPU() memset(FastMap, 0, sizeof(FastMap)); memset(DummyPage, 0xFF, sizeof(DummyPage)); // 0xFF to trigger an illegal instruction exception, so we'll know what's up when debugging. + disasm_buf = (char*)malloc(100); for(uint64 a = 0x00000000; a < (1ULL << 32); a += FAST_MAP_PSIZE) SetFastMap(DummyPage, a, FAST_MAP_PSIZE); @@ -546,23 +548,23 @@ pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in) switch(PC & 0xC) { - case 0x0: - timestamp++; - ICI[0x00].TV &= ~0x2; - ICI[0x00].Data = MDFN_de32lsb(&FMP[0x0]); - case 0x4: - timestamp++; - ICI[0x01].TV &= ~0x2; - ICI[0x01].Data = MDFN_de32lsb(&FMP[0x4]); - case 0x8: - timestamp++; - ICI[0x02].TV &= ~0x2; - ICI[0x02].Data = MDFN_de32lsb(&FMP[0x8]); - case 0xC: - timestamp++; - ICI[0x03].TV &= ~0x2; - ICI[0x03].Data = MDFN_de32lsb(&FMP[0xC]); - break; + case 0x0: + timestamp++; + ICI[0x00].TV &= ~0x2; + ICI[0x00].Data = MDFN_de32lsb(&FMP[0x0]); + case 0x4: + timestamp++; + ICI[0x01].TV &= ~0x2; + ICI[0x01].Data = MDFN_de32lsb(&FMP[0x4]); + case 0x8: + timestamp++; + ICI[0x02].TV &= ~0x2; + ICI[0x02].Data = MDFN_de32lsb(&FMP[0x8]); + case 0xC: + timestamp++; + ICI[0x03].TV &= ~0x2; + ICI[0x03].Data = MDFN_de32lsb(&FMP[0xC]); + break; } instr = ICache[(PC & 0xFFC) >> 2].Data; } @@ -572,6 +574,12 @@ pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in) //for(int i = 0; i < 32; i++) // printf("%02x : %08x\n", i, GPR[i]); //printf("\n"); + if (g_ShockTraceCallback) + { + //_asm int 3; + shock_Util_DisassembleMIPS(PC, instr, (void *)disasm_buf, sizeof(disasm_buf)); + g_ShockTraceCallback(NULL, PC, instr, disasm_buf); + } opf = instr & 0x3F; diff --git a/psx/octoshock/psx/cpu.h b/psx/octoshock/psx/cpu.h index 619f8c27f2..729a178a81 100644 --- a/psx/octoshock/psx/cpu.h +++ b/psx/octoshock/psx/cpu.h @@ -224,8 +224,8 @@ namespace MDFN_IEN_PSX public: void SetCPUHook(void(*cpuh)(const pscpu_timestamp_t timestamp, uint32 pc), void(*addbt)(uint32 from, uint32 to, bool exception)); void CheckBreakpoints(void(*callback)(bool write, uint32 address, unsigned int len), uint32 instr); - void* debug_GetScratchRAMPtr() { return ScratchRAM.data8; } - void* debug_GetGPRPtr() { return GPR; } + void* debug_GetScratchRAMPtr() { return ScratchRAM.data8; } + void* debug_GetGPRPtr() { return GPR; } enum { diff --git a/psx/octoshock/psx/psx.cpp b/psx/octoshock/psx/psx.cpp index b95c9f6b22..70689c0142 100644 --- a/psx/octoshock/psx/psx.cpp +++ b/psx/octoshock/psx/psx.cpp @@ -2681,9 +2681,9 @@ EW_EXPORT s32 shock_GetRegisters_CPU(void* psx, ShockRegisters_CPU* buffer) { memcpy(buffer->GPR,CPU->debug_GetGPRPtr(),32*4); buffer->PC = CPU->GetRegister(PS_CPU::GSREG_PC_NEXT,NULL,0); - buffer->PC_NEXT = CPU->GetRegister(PS_CPU::GSREG_PC_NEXT,NULL,0); - buffer->IN_BD_SLOT = CPU->GetRegister(PS_CPU::GSREG_IN_BD_SLOT,NULL,0); - buffer->LO = CPU->GetRegister(PS_CPU::GSREG_LO,NULL,0); + buffer->PC_NEXT = CPU->GetRegister(PS_CPU::GSREG_PC_NEXT,NULL,0); + buffer->IN_BD_SLOT = CPU->GetRegister(PS_CPU::GSREG_IN_BD_SLOT,NULL,0); + buffer->LO = CPU->GetRegister(PS_CPU::GSREG_LO,NULL,0); buffer->HI = CPU->GetRegister(PS_CPU::GSREG_HI,NULL,0); buffer->SR = CPU->GetRegister(PS_CPU::GSREG_SR,NULL,0); buffer->CAUSE = CPU->GetRegister(PS_CPU::GSREG_CAUSE,NULL,0);