From 877e2dde812b29a554ca9e729e9647257c1e1071 Mon Sep 17 00:00:00 2001 From: zeromus Date: Thu, 18 Dec 2014 08:35:56 +0000 Subject: [PATCH] psx - rework disassembler and add trace logger --- .../Consoles/Sony/PSX/Octoshock.cs | 19 +- .../Consoles/Sony/PSX/OctoshockDll.cs | 12 + output/dll/octoshock.dll | Bin 839168 -> 844800 bytes psx/octoshock/psx/cpu.cpp | 13 + psx/octoshock/psx/dis.cpp | 807 ++++++++++-------- psx/octoshock/psx/dis.h | 10 +- psx/octoshock/psx/psx.cpp | 12 + psx/octoshock/psx/psx.h | 7 + 8 files changed, 510 insertions(+), 370 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs index 61215be2e2..53c6718ffb 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs @@ -17,6 +17,7 @@ using System.IO; using System.Collections.Generic; using Newtonsoft.Json; + using BizHawk.Emulation.Common; using BizHawk.Common; @@ -77,6 +78,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX static Octoshock CurrOctoshockCore; IntPtr psx; + TraceBuffer tracer = new TraceBuffer(); bool disposed = false; public void Dispose() @@ -459,7 +461,15 @@ namespace BizHawk.Emulation.Cores.Sony.PSX }; OctoshockDll.shock_SetRenderOptions(psx, ref ropts); + //prep tracer + if (tracer.Enabled) + OctoshockDll.shock_SetTraceCallback(psx, IntPtr.Zero, ShockTraceCallback); + else + OctoshockDll.shock_SetTraceCallback(psx, IntPtr.Zero, null); + + //------------------------ OctoshockDll.shock_Step(psx, OctoshockDll.eShockStep.Frame); + //------------------------ //what happens to sound in this case? if (render == false) return; @@ -932,8 +942,13 @@ namespace BizHawk.Emulation.Cores.Sony.PSX OctoshockDll.shock_SetRegister_CPU(psx, index, (uint)value); } - [FeatureNotImplemented] - public ITracer Tracer { get { throw new NotImplementedException(); } } + public ITracer Tracer { get { return tracer; } } + + public int ShockTraceCallback(IntPtr opaque, uint PC, uint inst, string dis) + { + Tracer.Put(dis); + return OctoshockDll.SHOCK_OK; + } [FeatureNotImplemented] public IMemoryCallbackSystem MemoryCallbacks { get { throw new NotImplementedException(); } } diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockDll.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockDll.cs index 9cd1b80667..2db3755599 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockDll.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockDll.cs @@ -83,6 +83,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX public const int SHOCK_ERROR = -1; public const int SHOCK_NOCANDO = -2; public const int SHOCK_INVALID_ADDRESS = -3; + public const int SHOCK_OVERFLOW = -4; [StructLayout(LayoutKind.Sequential)] public struct ShockDiscInfo @@ -150,12 +151,18 @@ namespace BizHawk.Emulation.Cores.Sony.PSX public TextStateFPtrs ff; }; + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int ShockTraceCallback(IntPtr opaque, uint PC, uint inst, string dis); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate int ShockDisc_ReadTOC(IntPtr opaque, ShockTOC* read_target, ShockTOCTrack* tracks101); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate int ShockDisc_ReadLBA(IntPtr opaque, int lba, void* dst); + [DllImport(dd, CallingConvention = cc)] + public static extern int shock_Util_DisassembleMIPS(uint PC, uint instr, IntPtr outbuf, int buflen); + [DllImport(dd, CallingConvention = cc)] public static extern int shock_CreateDisc(out IntPtr outDisc, IntPtr Opaque, int lbaCount, ShockDisc_ReadTOC ReadTOC, ShockDisc_ReadLBA ReadLBA2448, bool suppliesDeinterleavedSubcode); @@ -165,6 +172,8 @@ namespace BizHawk.Emulation.Cores.Sony.PSX [DllImport(dd, CallingConvention = cc)] public static extern int shock_AnalyzeDisc(IntPtr disc, out ShockDiscInfo info); + + [DllImport(dd, CallingConvention = cc)] public static extern int shock_Create(out IntPtr psx, eRegion region, void* firmware512k); @@ -230,5 +239,8 @@ namespace BizHawk.Emulation.Cores.Sony.PSX [DllImport(dd, CallingConvention = cc)] public static extern int shock_SetRegister_CPU(IntPtr psx, int index, uint value); + + [DllImport(dd, CallingConvention = cc)] + public static extern int shock_SetTraceCallback(IntPtr psx, IntPtr opaque, ShockTraceCallback callback); } } \ No newline at end of file diff --git a/output/dll/octoshock.dll b/output/dll/octoshock.dll index 7550cce426f712cb495a785fa5dad03f70f62774..d6b5e36cc76185ad11913e7cf189a86b0b7a904f 100644 GIT binary patch delta 144435 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%0AX^DAd^wn_rz*}7VuML&h> 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 OU*Z0qiw73_rv5*Tw%n!w delta 140481 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 Rln3W*m@9i|S>R{x{{THH&UOF* diff --git a/psx/octoshock/psx/cpu.cpp b/psx/octoshock/psx/cpu.cpp index 8bebe98b4a..463e4ade44 100644 --- a/psx/octoshock/psx/cpu.cpp +++ b/psx/octoshock/psx/cpu.cpp @@ -19,6 +19,10 @@ #include "cpu.h" #include "gte.h" +//not very organized, is it +void* g_ShockTraceCallbackOpaque = NULL; +ShockCallback_Trace g_ShockTraceCallback = NULL; + /* TODO Make sure load delays are correct. @@ -594,6 +598,15 @@ pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in) #define ITYPE_ZE uint32_t rs MDFN_NOWARN_UNUSED = (instr >> 21) & 0x1F; uint32_t rt MDFN_NOWARN_UNUSED = (instr >> 16) & 0x1F; uint32_t immediate = instr & 0xFFFF; /*printf(" rs=%02x(%08x), rt=%02x(%08x), immediate=(%08x) ", rs, GPR[rs], rt, GPR[rt], immediate);*/ #define JTYPE uint32_t target = instr & ((1 << 26) - 1); /*printf(" target=(%08x) ", target);*/ #define RTYPE uint32_t rs MDFN_NOWARN_UNUSED = (instr >> 21) & 0x1F; uint32_t rt MDFN_NOWARN_UNUSED = (instr >> 16) & 0x1F; uint32_t rd MDFN_NOWARN_UNUSED = (instr >> 11) & 0x1F; uint32_t shamt MDFN_NOWARN_UNUSED = (instr >> 6) & 0x1F; /*printf(" rs=%02x(%08x), rt=%02x(%08x), rd=%02x(%08x) ", rs, GPR[rs], rt, GPR[rt], rd, GPR[rd]);*/ + + { + if(g_ShockTraceCallback) + { + char tmp[100]; + shock_Util_DisassembleMIPS(PC, instr, tmp, 100); + g_ShockTraceCallback(g_ShockTraceCallbackOpaque, PC, instr, tmp); + } + } #if 1 #include "cpu_bigswitch.inc" diff --git a/psx/octoshock/psx/dis.cpp b/psx/octoshock/psx/dis.cpp index cc2f89df7a..324d932716 100644 --- a/psx/octoshock/psx/dis.cpp +++ b/psx/octoshock/psx/dis.cpp @@ -1,39 +1,121 @@ /* Mednafen - Multi-system Emulator - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ #include +#include #include "psx.h" -#define trio_snprintf snprintf +//NOTE - this class was hand-crafted for octoshock. it wasn't tested very well, but its a little more tricksy than i'd like +class BufferAppender +{ +public: + BufferAppender(void* _buf, size_t _buflen) + : buf((char*)_buf) + , buflen(_buflen) + , ofs(0) + , overflow(false) + { + } + + void append(const char* str) + { + for(;;) + { + char c = *str++; + if(c == 0) break; + append(1,c); + } + } + + void append(size_t n, char c) + { + size_t remain = buflen-ofs; + if(remain==0) return; + size_t todo = n; + if(todo > remain) + todo = remain; + for(size_t i=0; i0) + { + int done = vsnprintf(buf,remain,fmt,ap); + va_end(ap); + if(done>=0) + { + ofs += done; + } + } + //make sure we stay null terminated, because msvc _snprintf is a piece of shit and can fill our buffer completely, among other flaws + terminate(); + } + + size_t size() const + { + return ofs; + } + + void clear() + { + ofs = 0; + overflow = false; + } + + void print() const + { + printf(buf); + } + + bool isOverflow() const { return overflow; } + +private: + char* buf; + size_t buflen; + size_t ofs; + bool overflow; + + void terminate() + { + if(ofs> 21) & 0x1F; - unsigned int rt = (instr >> 16) & 0x1F; - unsigned int rd = (instr >> 11) & 0x1F; - unsigned int shamt = (instr >> 6) & 0x1F; - unsigned int immediate = (int32)(int16)(instr & 0xFFFF); - unsigned int immediate_ze = (instr & 0xFFFF); - unsigned int jt = instr & ((1 << 26) - 1); + BufferAppender ret(outbuf,buflen); + ret.append("UNKNOWN"); - static const char *gpr_names[32] = - { - "r0", "at", "v0", "v1", "a0", "a1", "a2", "a3", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", - "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "t8", "t9", "k0", "k1", "gp", "sp", "fp", "ra" - }; + unsigned int rs = (instr >> 21) & 0x1F; + unsigned int rt = (instr >> 16) & 0x1F; + unsigned int rd = (instr >> 11) & 0x1F; + unsigned int shamt = (instr >> 6) & 0x1F; + unsigned int immediate = (int32)(int16)(instr & 0xFFFF); + unsigned int immediate_ze = (instr & 0xFFFF); + unsigned int jt = instr & ((1 << 26) - 1); - static const char *cop0_names[32] = - { - "CPR0", "CPR1", "CPR2", "BPC", "CPR4", "BDA", "TAR", "DCIC", "CPR8", "BDAM", "CPR10", "BPCM", "SR", "CAUSE", "EPC", "PRID", - "ERREG", "CPR17", "CPR18", "CPR19", "CPR20", "CPR21", "CPR22", "CPR23", "CPR24", "CPR25", "CPR26", "CPR27", "CPR28", "CPR29", "CPR30", "CPR31" - }; - - static const char *gte_cr_names[32] = - { - "R11R12", "R13R21", "R22R23", "R31R32", "R33", "TRX", "TRY", "TRZ", "L11L12", "L13L21", "L22L23", "L31L32", "L33", "RBK", "GBK", "BBK", - "LR1LR2", "LR3LG1", "LG2LG3", "LB1LB2", "LB3", "RFC", "GFC", "BFC", "OFX", "OFY", "H", "DQA", "DQB", "ZSF3", "ZSF4", "FLAG" - }; - - static const char *gte_dr_names[32] = - { - "VXY0", "VZ0", "VXY1", "VZ1", "VXY2", "VZ2", "RGB", "OTZ", "IR0", "IR1", "IR2", "IR3", "SXY0", "SXY1", "SXY2", "SXYP", - "SZ0", "SZ1", "SZ2", "SZ3", "RGB0", "RGB1", "RGB2", "RES1", "MAC0", "MAC1", "MAC2", "MAC3", "IRGB", "ORGB", "LZCS", "LZCR" - }; - - OpEntry *op = ops; - - while(op->mnemonic) - { - if((instr & op->mask) == op->value) - { - // a = shift amount - // s = rs - // t = rt - // d = rd - // i = immediate - // z = immediate, zero-extended - // p = PC + 4 + immediate - // P = ((PC + 4) & 0xF0000000) | (26bitval << 2) - // - // 0 = rd(cop0 registers) - // c = rd(copz data registers) - // C = rd(copz control registers) - // g = rd(GTE data registers) - // G = rd(GTE control registers) - // h = rt(GTE data registers) - - char s_a[16]; - char s_i[16]; - char s_z[16]; - char s_p[16]; - char s_P[16]; - char s_c[16]; - char s_C[16]; - - trio_snprintf(s_a, sizeof(s_a), "%d", shamt); - - if(immediate < 0) - trio_snprintf(s_i, sizeof(s_i), "%d", immediate); - else - trio_snprintf(s_i, sizeof(s_i), "0x%04x", (uint32)immediate); - - trio_snprintf(s_z, sizeof(s_z), "0x%04x", immediate_ze); - - trio_snprintf(s_p, sizeof(s_p), "0x%08x", PC + 4 + (immediate << 2)); - - trio_snprintf(s_P, sizeof(s_P), "0x%08x", ((PC + 4) & 0xF0000000) | (jt << 2)); - - trio_snprintf(s_c, sizeof(s_c), "CPR%d", rd); - trio_snprintf(s_C, sizeof(s_C), "CCR%d", rd); - - ret = std::string(op->mnemonic); - ret.append(10 - ret.size(), ' '); - - for(unsigned int i = 0; i < strlen(op->format); i++) - { - switch(op->format[i]) - { - case '#': - // sf mx v cv lm - { - char as[16]; - - as[0] = 0; - if(!strncmp(&op->format[i], "#sf#", 4)) - { - i += 3; - trio_snprintf(as, 16, "sf=%d", (int)(bool)(instr & (1 << 19))); - } - else if(!strncmp(&op->format[i], "#mx#", 4)) - { - i += 3; - trio_snprintf(as, 16, "mx=%d", (instr >> 17) & 0x3); - } - else if(!strncmp(&op->format[i], "#v#", 3)) - { - i += 2; - trio_snprintf(as, 16, "v=%d", (instr >> 15) & 0x3); - } - else if(!strncmp(&op->format[i], "#cv#", 4)) - { - i += 3; - trio_snprintf(as, 16, "cv=%d", (instr >> 13) & 0x3); - } - else if(!strncmp(&op->format[i], "#lm#", 4)) - { - i += 3; - trio_snprintf(as, 16, "lm=%d", (int)(bool)(instr & (1 << 10))); - } - ret.append(as); - } - break; - case 'F': + static const char *gpr_names[32] = { - char s_F[16]; + "r0", "at", "v0", "v1", "a0", "a1", "a2", "a3", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", + "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "t8", "t9", "k0", "k1", "gp", "sp", "fp", "ra" + }; - trio_snprintf(s_F, 16, "0x%07x", instr & 0x1FFFFFF); - ret.append(s_F); + static const char *cop0_names[32] = + { + "CPR0", "CPR1", "CPR2", "BPC", "CPR4", "BDA", "TAR", "DCIC", "CPR8", "BDAM", "CPR10", "BPCM", "SR", "CAUSE", "EPC", "PRID", + "ERREG", "CPR17", "CPR18", "CPR19", "CPR20", "CPR21", "CPR22", "CPR23", "CPR24", "CPR25", "CPR26", "CPR27", "CPR28", "CPR29", "CPR30", "CPR31" + }; + + static const char *gte_cr_names[32] = + { + "R11R12", "R13R21", "R22R23", "R31R32", "R33", "TRX", "TRY", "TRZ", "L11L12", "L13L21", "L22L23", "L31L32", "L33", "RBK", "GBK", "BBK", + "LR1LR2", "LR3LG1", "LG2LG3", "LB1LB2", "LB3", "RFC", "GFC", "BFC", "OFX", "OFY", "H", "DQA", "DQB", "ZSF3", "ZSF4", "FLAG" + }; + + static const char *gte_dr_names[32] = + { + "VXY0", "VZ0", "VXY1", "VZ1", "VXY2", "VZ2", "RGB", "OTZ", "IR0", "IR1", "IR2", "IR3", "SXY0", "SXY1", "SXY2", "SXYP", + "SZ0", "SZ1", "SZ2", "SZ3", "RGB0", "RGB1", "RGB2", "RES1", "MAC0", "MAC1", "MAC2", "MAC3", "IRGB", "ORGB", "LZCS", "LZCR" + }; + + OpEntry *op = ops; + + while(op->mnemonic) + { + if((instr & op->mask) == op->value) + { + // a = shift amount + // s = rs + // t = rt + // d = rd + // i = immediate + // z = immediate, zero-extended + // p = PC + 4 + immediate + // P = ((PC + 4) & 0xF0000000) | (26bitval << 2) + // + // 0 = rd(cop0 registers) + // c = rd(copz data registers) + // C = rd(copz control registers) + // g = rd(GTE data registers) + // G = rd(GTE control registers) + // h = rt(GTE data registers) + + char s_a[16]; + char s_i[16]; + char s_z[16]; + char s_p[16]; + char s_P[16]; + char s_c[16]; + char s_C[16]; + + //--------------------- + //TODO - this section only as needed (mask in opcode?) + snprintf(s_a, sizeof(s_a), "%d", shamt); + + if(immediate < 0) + snprintf(s_i, sizeof(s_i), "%d", immediate); + else + snprintf(s_i, sizeof(s_i), "0x%04x", (uint32)immediate); + + snprintf(s_z, sizeof(s_z), "0x%04x", immediate_ze); + + snprintf(s_p, sizeof(s_p), "0x%08x", PC + 4 + (immediate << 2)); + + snprintf(s_P, sizeof(s_P), "0x%08x", ((PC + 4) & 0xF0000000) | (jt << 2)); + + snprintf(s_c, sizeof(s_c), "CPR%d", rd); + snprintf(s_C, sizeof(s_C), "CCR%d", rd); + //---------------------- + + ret.clear(); + ret.append(op->mnemonic); + ret.append(10 - ret.size(), ' '); + + for(unsigned int i = 0; i < strlen(op->format); i++) + { + switch(op->format[i]) + { + case '#': + // sf mx v cv lm + { + char as[16]; + + as[0] = 0; + if(!strncmp(&op->format[i], "#sf#", 4)) + { + i += 3; + snprintf(as, 16, "sf=%d", (int)(bool)(instr & (1 << 19))); + } + else if(!strncmp(&op->format[i], "#mx#", 4)) + { + i += 3; + snprintf(as, 16, "mx=%d", (instr >> 17) & 0x3); + } + else if(!strncmp(&op->format[i], "#v#", 3)) + { + i += 2; + snprintf(as, 16, "v=%d", (instr >> 15) & 0x3); + } + else if(!strncmp(&op->format[i], "#cv#", 4)) + { + i += 3; + snprintf(as, 16, "cv=%d", (instr >> 13) & 0x3); + } + else if(!strncmp(&op->format[i], "#lm#", 4)) + { + i += 3; + snprintf(as, 16, "lm=%d", (int)(bool)(instr & (1 << 10))); + } + ret.append(as); + } + break; + case 'F': + { + char s_F[16]; + + snprintf(s_F, 16, "0x%07x", instr & 0x1FFFFFF); + ret.append(s_F); + } + break; + + case 'h': + ret.append(gte_dr_names[rt]); + break; + + case 'g': + ret.append(gte_dr_names[rd]); + break; + + case 'G': + ret.append(gte_cr_names[rd]); + break; + + case '0': + ret.append(cop0_names[rd]); + break; + + case 'c': + ret.append(s_c); + break; + + case 'C': + ret.append(s_C); + break; + + case 'a': + ret.append(s_a); + break; + + case 'i': + ret.append(s_i); + break; + + case 'z': + ret.append(s_z); + break; + + case 'p': + ret.append(s_p); + break; + + case 'P': + ret.append(s_P); + break; + + case 's': + ret.append(gpr_names[rs]); + break; + + case 't': + ret.append(gpr_names[rt]); + break; + + case 'd': + ret.append(gpr_names[rd]); + break; + + default: + ret.append(1, op->format[i]); + break; + } + } + break; + } + op++; } - break; - case 'h': - ret.append(gte_dr_names[rt]); - break; - - case 'g': - ret.append(gte_dr_names[rd]); - break; - - case 'G': - ret.append(gte_cr_names[rd]); - break; - - case '0': - ret.append(cop0_names[rd]); - break; - - case 'c': - ret.append(s_c); - break; - - case 'C': - ret.append(s_C); - break; - - case 'a': - ret.append(s_a); - break; - - case 'i': - ret.append(s_i); - break; - - case 'z': - ret.append(s_z); - break; - - case 'p': - ret.append(s_p); - break; - - case 'P': - ret.append(s_P); - break; - - case 's': - ret.append(gpr_names[rs]); - break; - - case 't': - ret.append(gpr_names[rt]); - break; - - case 'd': - ret.append(gpr_names[rd]); - break; - - default: - ret.append(1, op->format[i]); - break; - } - } - break; - } - op++; - } - - return(ret); + if(ret.isOverflow()) + return SHOCK_OVERFLOW; + else return SHOCK_OK; } -} diff --git a/psx/octoshock/psx/dis.h b/psx/octoshock/psx/dis.h index 46609e10dc..47de7ed595 100644 --- a/psx/octoshock/psx/dis.h +++ b/psx/octoshock/psx/dis.h @@ -1,11 +1,3 @@ #pragma once -#include "emuware/emuware.h" -#include - -namespace MDFN_IEN_PSX -{ - -std::string DisassembleMIPS(uint32 PC, uint32 instr); - -} +EW_EXPORT s32 shock_Util_DisassembleMIPS(u32 PC, u32 instr, void* outbuf, s32 buflen); diff --git a/psx/octoshock/psx/psx.cpp b/psx/octoshock/psx/psx.cpp index 64b1036629..3b35deed4f 100644 --- a/psx/octoshock/psx/psx.cpp +++ b/psx/octoshock/psx/psx.cpp @@ -2509,5 +2509,17 @@ EW_EXPORT s32 shock_SetRenderOptions(void* pxs, ShockRenderOptions* opts) { GPU->SetRenderOptions(opts); s_ShockConfig.opts = *opts; + return SHOCK_OK; +} + +extern void* g_ShockTraceCallbackOpaque; +extern ShockCallback_Trace g_ShockTraceCallback; + +//Sets the callback to be used for CPU tracing +EW_EXPORT s32 shock_SetTraceCallback(void* psx, void* opaque, ShockCallback_Trace callback) +{ + g_ShockTraceCallbackOpaque = opaque; + g_ShockTraceCallback = callback; + return SHOCK_OK; } \ No newline at end of file diff --git a/psx/octoshock/psx/psx.h b/psx/octoshock/psx/psx.h index 23166ef352..f8d79d000d 100644 --- a/psx/octoshock/psx/psx.h +++ b/psx/octoshock/psx/psx.h @@ -186,6 +186,7 @@ enum eShockMemcardTransaction #define SHOCK_ERROR -1 #define SHOCK_NOCANDO -2 #define SHOCK_INVALID_ADDRESS -3 +#define SHOCK_OVERFLOW -4 struct ShockTOCTrack { @@ -216,6 +217,9 @@ struct ShockRegisters_CPU typedef s32 (*ShockDisc_ReadTOC)(void* opaque, ShockTOC *read_target, ShockTOCTrack tracks[100 + 1]); typedef s32 (*ShockDisc_ReadLBA)(void* opaque, s32 lba, void* dst); +//The callback to be issued for traces +typedef s32 (*ShockCallback_Trace)(void* opaque, u32 PC, u32 inst, const char* msg); + class ShockDiscRef { public: @@ -361,3 +365,6 @@ EW_EXPORT s32 shock_GetRegisters_CPU(void* psx, ShockRegisters_CPU* buffer); //Sets a CPU register. Rather than have an enum for the registers, lets just use the index (not offset) within the struct EW_EXPORT s32 shock_SetRegister_CPU(void* psx, s32 index, u32 value); + +//Sets the callback to be used for CPU tracing +EW_EXPORT s32 shock_SetTraceCallback(void* psx, void* opaque, ShockCallback_Trace callback);