mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
Fixed saving/loading states in OGL plugin.
Turns out the BPReload function is written plain wrong. Also, most chances are that the state will load correctly when not reloading the BP (not now though). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1247 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
0a47860bcf
commit
159e3f5b49
@ -48,8 +48,8 @@ public:
|
||||
enum Mode // also defined in pluginspecs.h. Didn't want to couple them.
|
||||
{
|
||||
MODE_READ = 1,
|
||||
MODE_WRITE = 2,
|
||||
MODE_MEASURE = 3,
|
||||
MODE_WRITE,
|
||||
MODE_MEASURE,
|
||||
};
|
||||
|
||||
u8 **ptr;
|
||||
|
@ -927,9 +927,10 @@ namespace Gen
|
||||
void AND (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(bits, nrmAND, a1, a2);}
|
||||
void OR (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(bits, nrmOR , a1, a2);}
|
||||
void XOR (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(bits, nrmXOR, a1, a2);}
|
||||
void MOV (int bits, const OpArg &a1, const OpArg &a2)
|
||||
inline void MOV (int bits, const OpArg &a1, const OpArg &a2)
|
||||
{
|
||||
_assert_msg_(DYNA_REC, !a1.IsSimpleReg() || !a2.IsSimpleReg() || a1.GetSimpleReg() != a2.GetSimpleReg(), "Redundant MOV @ %p", code);
|
||||
_assert_msg_(DYNA_REC, !a1.IsSimpleReg() || !a2.IsSimpleReg() || a1.GetSimpleReg() != a2.GetSimpleReg(), "Redundant MOV @ %p",
|
||||
code);
|
||||
WriteNormalOp(bits, nrmMOV, a1, a2);
|
||||
}
|
||||
void TEST(int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(bits, nrmTEST, a1, a2);}
|
||||
|
@ -811,20 +811,23 @@ void LoadBPReg(u32 value0)
|
||||
BPWritten(opcode, changes, newval);
|
||||
}
|
||||
|
||||
// Never called? Should probably be called when loading a saved state.
|
||||
// Needs testing though.
|
||||
// Called when loading a saved state.
|
||||
// Needs more testing though.
|
||||
void BPReload()
|
||||
{
|
||||
for (int i = 0; i < 254; i++)
|
||||
{
|
||||
switch (i) {
|
||||
case 0x65:
|
||||
|
||||
case 0x41:
|
||||
case 0x45: //GXSetDrawDone
|
||||
case 0x52:
|
||||
case 0x65:
|
||||
case 0x67: // set gp metric?
|
||||
case BPMEM_PE_TOKEN_ID:
|
||||
case BPMEM_PE_TOKEN_INT_ID:
|
||||
case 0x67: // set gp metric?
|
||||
case 0x52:
|
||||
break;
|
||||
// Cases in which we DON'T want to reload the BP
|
||||
continue;
|
||||
default:
|
||||
BPWritten(i, 0xFFFFFF, ((u32*)&bpmem)[i]);
|
||||
}
|
||||
|
@ -238,9 +238,9 @@ void Video_DoState(unsigned char **ptr, int mode) {
|
||||
|
||||
PointerWrap p(ptr, mode);
|
||||
VideoCommon_DoState(p);
|
||||
|
||||
|
||||
// Refresh state.
|
||||
if (mode == 1) // read
|
||||
if (mode == PointerWrap::MODE_READ)
|
||||
BPReload();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user