mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
Enabled save-state support for the DSP LLE plug-in.
Disabled the SUBARN jitted instruction because it is causing issues with the NTSC IPL. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6918 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
4c704be0ed
commit
5e814ff2cd
@ -37,7 +37,7 @@ const DSPOPCTemplate opcodes[] =
|
|||||||
|
|
||||||
{"DAR", 0x0004, 0xfffc, DSPInterpreter::dar, &DSPEmitter::dar, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false},
|
{"DAR", 0x0004, 0xfffc, DSPInterpreter::dar, &DSPEmitter::dar, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false},
|
||||||
{"IAR", 0x0008, 0xfffc, DSPInterpreter::iar, &DSPEmitter::iar, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false},
|
{"IAR", 0x0008, 0xfffc, DSPInterpreter::iar, &DSPEmitter::iar, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false},
|
||||||
{"SUBARN", 0x000c, 0xfffc, DSPInterpreter::subarn, &DSPEmitter::subarn, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false},
|
{"SUBARN", 0x000c, 0xfffc, NULL/*DSPInterpreter::subarn*/, &DSPEmitter::subarn, 1, 1, {{P_REG, 1, 0, 0, 0x0003}}, false, false, false, false, false}, // TODO: Breaks NTSC IPL
|
||||||
{"ADDARN", 0x0010, 0xfff0, DSPInterpreter::addarn, &DSPEmitter::addarn, 1, 2, {{P_REG, 1, 0, 0, 0x0003}, {P_REG04, 1, 0, 2, 0x000c}}, false, false, false, false, false},
|
{"ADDARN", 0x0010, 0xfff0, DSPInterpreter::addarn, &DSPEmitter::addarn, 1, 2, {{P_REG, 1, 0, 0, 0x0003}, {P_REG04, 1, 0, 2, 0x000c}}, false, false, false, false, false},
|
||||||
|
|
||||||
{"HALT", 0x0021, 0xffff, DSPInterpreter::halt, &DSPEmitter::halt, 1, 0, {}, false, true, true, false, false},
|
{"HALT", 0x0021, 0xffff, DSPInterpreter::halt, &DSPEmitter::halt, 1, 0, {}, false, true, true, false, false},
|
||||||
|
@ -169,16 +169,15 @@ void DoState(unsigned char **ptr, int mode)
|
|||||||
PointerWrap p(ptr, mode);
|
PointerWrap p(ptr, mode);
|
||||||
p.Do(g_InitMixer);
|
p.Do(g_InitMixer);
|
||||||
|
|
||||||
// Enable this when the HLE is fixed to save/load the same amount of data,
|
|
||||||
// no matter how bogus, so that one can switch LLE->HLE. The other way is unlikely to work very well.
|
|
||||||
#if 0
|
|
||||||
p.Do(g_dsp.r);
|
p.Do(g_dsp.r);
|
||||||
p.Do(g_dsp.pc);
|
p.Do(g_dsp.pc);
|
||||||
|
#if PROFILE
|
||||||
p.Do(g_dsp.err_pc);
|
p.Do(g_dsp.err_pc);
|
||||||
|
#endif
|
||||||
p.Do(g_dsp.cr);
|
p.Do(g_dsp.cr);
|
||||||
p.Do(g_dsp.reg_stack_ptr);
|
p.Do(g_dsp.reg_stack_ptr);
|
||||||
p.Do(g_dsp.exceptions);
|
p.Do(g_dsp.exceptions);
|
||||||
p.Do(g_dsp.exceptions_in_progress);
|
p.Do(g_dsp.external_interrupt_waiting);
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
p.Do(g_dsp.reg_stack[i]);
|
p.Do(g_dsp.reg_stack[i]);
|
||||||
}
|
}
|
||||||
@ -187,9 +186,12 @@ void DoState(unsigned char **ptr, int mode)
|
|||||||
p.Do(g_dsp.ifx_regs);
|
p.Do(g_dsp.ifx_regs);
|
||||||
p.Do(g_dsp.mbox[0]);
|
p.Do(g_dsp.mbox[0]);
|
||||||
p.Do(g_dsp.mbox[1]);
|
p.Do(g_dsp.mbox[1]);
|
||||||
p.DoArray(g_dsp.iram, DSP_IRAM_BYTE_SIZE);
|
UnWriteProtectMemory(g_dsp.iram, DSP_IRAM_BYTE_SIZE, false);
|
||||||
p.DoArray(g_dsp.dram, DSP_DRAM_BYTE_SIZE);
|
p.DoArray(g_dsp.iram, DSP_IRAM_SIZE);
|
||||||
#endif
|
WriteProtectMemory(g_dsp.iram, DSP_IRAM_BYTE_SIZE, false);
|
||||||
|
p.DoArray(g_dsp.dram, DSP_DRAM_SIZE);
|
||||||
|
p.Do(cyclesLeft);
|
||||||
|
p.Do(cycle_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmuStateChange(PLUGIN_EMUSTATE newState)
|
void EmuStateChange(PLUGIN_EMUSTATE newState)
|
||||||
|
Loading…
Reference in New Issue
Block a user