Callbacks

This commit is contained in:
Nekotekina 2014-07-13 23:05:28 +04:00
parent 1dbbbc55f6
commit dab3d6c6d6
2 changed files with 6 additions and 2 deletions

View file

@ -341,7 +341,7 @@ void CPUThread::Task()
} }
Step(); Step();
trace.push_back(PC); //if (PC - 0x13ED4 < 0x288) trace.push_back(PC);
NextPc(m_dec->DecodeMemory(PC + m_offset)); NextPc(m_dec->DecodeMemory(PC + m_offset));
if (status == CPUThread_Step) if (status == CPUThread_Step)

View file

@ -4,6 +4,7 @@
#include "Emu/System.h" #include "Emu/System.h"
#include "Callback.h" #include "Callback.h"
#include "Emu/Cell/PPUThread.h"
#include "Emu/Cell/PPCThread.h" #include "Emu/Cell/PPCThread.h"
Callback::Callback(u32 slot, u64 addr) Callback::Callback(u32 slot, u64 addr)
@ -13,6 +14,7 @@ Callback::Callback(u32 slot, u64 addr)
, a2(0) , a2(0)
, a3(0) , a3(0)
, a4(0) , a4(0)
, a5(0)
, m_has_data(false) , m_has_data(false)
, m_name("Callback") , m_name("Callback")
{ {
@ -43,12 +45,13 @@ bool Callback::HasData() const
return m_has_data; return m_has_data;
} }
void Callback::Handle(u64 _a1, u64 _a2, u64 _a3, u64 _a4) void Callback::Handle(u64 _a1, u64 _a2, u64 _a3, u64 _a4, u64 _a5)
{ {
a1 = _a1; a1 = _a1;
a2 = _a2; a2 = _a2;
a3 = _a3; a3 = _a3;
a4 = _a4; a4 = _a4;
a5 = _a5;
m_has_data = true; m_has_data = true;
} }
@ -97,6 +100,7 @@ again:
thr.SetArg(2, a3); thr.SetArg(2, a3);
thr.SetArg(3, a4); thr.SetArg(3, a4);
thr.Run(); thr.Run();
((PPUThread&)thr).GPR[7] = a5;
thr.Exec(); thr.Exec();