mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Some LLE memory access
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3520 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e91ab24bce
commit
59487bddcf
@ -150,7 +150,8 @@ void lrrn(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
u16 val = dsp_dmem_read(g_dsp.r[sreg]);
|
u16 val = dsp_dmem_read(g_dsp.r[sreg]);
|
||||||
dsp_op_write_reg(dreg, val);
|
dsp_op_write_reg(dreg, val);
|
||||||
g_dsp.r[sreg] += g_dsp.r[DSP_REG_IX0 + sreg];
|
// g_dsp.r[sreg] += g_dsp.r[DSP_REG_IX0 + sreg];
|
||||||
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SRR @$D, $S
|
// SRR @$D, $S
|
||||||
@ -209,7 +210,8 @@ void srrn(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
u16 val = dsp_op_read_reg(sreg);
|
u16 val = dsp_op_read_reg(sreg);
|
||||||
dsp_dmem_write(g_dsp.r[dreg], val);
|
dsp_dmem_write(g_dsp.r[dreg], val);
|
||||||
g_dsp.r[dreg] += g_dsp.r[DSP_REG_IX0 + dreg];
|
// g_dsp.r[dreg] += g_dsp.r[DSP_REG_IX0 + dreg];
|
||||||
|
dsp_increase_addr_reg(dreg, (s16)g_dsp.r[DSP_REG_IX0 + dreg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ILRR $acD.m, @$arS
|
// ILRR $acD.m, @$arS
|
||||||
@ -264,7 +266,8 @@ void ilrrn(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
g_dsp.r[dreg] = dsp_imem_read(g_dsp.r[reg]);
|
g_dsp.r[dreg] = dsp_imem_read(g_dsp.r[reg]);
|
||||||
|
|
||||||
g_dsp.r[reg] += g_dsp.r[DSP_REG_IX0 + reg];
|
// g_dsp.r[reg] += g_dsp.r[DSP_REG_IX0 + reg];
|
||||||
|
dsp_increase_addr_reg(reg, (s16)g_dsp.r[DSP_REG_IX0 + reg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -67,7 +67,8 @@ void ir(const UDSPInstruction& opc) {
|
|||||||
void nr(const UDSPInstruction& opc) {
|
void nr(const UDSPInstruction& opc) {
|
||||||
u8 reg = opc.hex & 0x3;
|
u8 reg = opc.hex & 0x3;
|
||||||
|
|
||||||
g_dsp.r[reg] += g_dsp.r[reg + DSP_REG_IX0];
|
// g_dsp.r[reg] += g_dsp.r[reg + DSP_REG_IX0];
|
||||||
|
dsp_increase_addr_reg(reg, (s16)g_dsp.r[DSP_REG_IX0 + reg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MV $axD, $acS.l
|
// MV $axD, $acS.l
|
||||||
@ -106,7 +107,8 @@ void sn(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
dsp_dmem_write(g_dsp.r[dreg], g_dsp.r[sreg]);
|
dsp_dmem_write(g_dsp.r[dreg], g_dsp.r[sreg]);
|
||||||
|
|
||||||
g_dsp.r[dreg] += g_dsp.r[dreg + DSP_REG_IX0];
|
// g_dsp.r[dreg] += g_dsp.r[dreg + DSP_REG_IX0];
|
||||||
|
dsp_increase_addr_reg(dreg, (s16)g_dsp.r[DSP_REG_IX0 + dreg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// L axD.l, @$S
|
// L axD.l, @$S
|
||||||
@ -136,7 +138,8 @@ void ln(const UDSPInstruction& opc)
|
|||||||
u16 val = dsp_dmem_read(g_dsp.r[sreg]);
|
u16 val = dsp_dmem_read(g_dsp.r[sreg]);
|
||||||
g_dsp.r[dreg] = val;
|
g_dsp.r[dreg] = val;
|
||||||
|
|
||||||
g_dsp.r[sreg] += g_dsp.r[sreg + DSP_REG_IX0];
|
// g_dsp.r[sreg] += g_dsp.r[sreg + DSP_REG_IX0];
|
||||||
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not in duddie's doc
|
// Not in duddie's doc
|
||||||
@ -220,7 +223,8 @@ void dsp_op_ext_r_epi(const UDSPInstruction& opc)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x03: // NR
|
case 0x03: // NR
|
||||||
g_dsp.r[reg] += g_dsp.r[reg + 4];
|
// g_dsp.r[reg] += g_dsp.r[reg + 4];
|
||||||
|
dsp_increase_addr_reg(reg, (s16)g_dsp.r[DSP_REG_IX0 + reg]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -244,7 +248,8 @@ void dsp_op_ext_s(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x04) // SN
|
if (opc.hex & 0x04) // SN
|
||||||
{
|
{
|
||||||
g_dsp.r[dreg] += g_dsp.r[dreg + 4];
|
// g_dsp.r[dreg] += g_dsp.r[dreg + 4];
|
||||||
|
dsp_increase_addr_reg(dreg, (s16)g_dsp.r[DSP_REG_IX0 + dreg]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -263,7 +268,8 @@ void dsp_op_ext_l(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x04) // LN/LSMN
|
if (opc.hex & 0x04) // LN/LSMN
|
||||||
{
|
{
|
||||||
g_dsp.r[sreg] += g_dsp.r[sreg + 4];
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
|
// g_dsp.r[sreg] += g_dsp.r[sreg + 4];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -276,14 +282,16 @@ void dsp_op_ext_ls_pro(const UDSPInstruction& opc)
|
|||||||
{
|
{
|
||||||
u8 areg = (opc.hex & 0x1) + 0x1e;
|
u8 areg = (opc.hex & 0x1) + 0x1e;
|
||||||
dsp_dmem_write(g_dsp.r[0x03], g_dsp.r[areg]);
|
dsp_dmem_write(g_dsp.r[0x03], g_dsp.r[areg]);
|
||||||
|
u8 sreg = 0x03;
|
||||||
|
|
||||||
if (opc.hex & 0x8) // LSM/LSMN
|
if (opc.hex & 0x8) // LSM/LSMN
|
||||||
{
|
{
|
||||||
g_dsp.r[0x03] += g_dsp.r[0x07];
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
|
// g_dsp.r[0x03] += g_dsp.r[0x07];
|
||||||
}
|
}
|
||||||
else // LS
|
else // LS
|
||||||
{
|
{
|
||||||
dsp_increment_addr_reg(0x03);
|
dsp_increment_addr_reg(sreg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +304,8 @@ void dsp_op_ext_ls_epi(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x4) // LSN/LSMN
|
if (opc.hex & 0x4) // LSN/LSMN
|
||||||
{
|
{
|
||||||
g_dsp.r[0x00] += g_dsp.r[0x04];
|
//g_dsp.r[0x00] += g_dsp.r[0x04];
|
||||||
|
dsp_increase_addr_reg(0x00, (s16)g_dsp.r[DSP_REG_IX0]);
|
||||||
}
|
}
|
||||||
else // LS
|
else // LS
|
||||||
{
|
{
|
||||||
@ -312,7 +321,8 @@ void dsp_op_ext_sl_pro(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x4) // SLN/SLNM
|
if (opc.hex & 0x4) // SLN/SLNM
|
||||||
{
|
{
|
||||||
g_dsp.r[0x00] += g_dsp.r[0x04];
|
dsp_increase_addr_reg(0x00, (s16)g_dsp.r[DSP_REG_IX0]);
|
||||||
|
// g_dsp.r[0x00] += g_dsp.r[0x04];
|
||||||
}
|
}
|
||||||
else // SL
|
else // SL
|
||||||
{
|
{
|
||||||
@ -326,14 +336,16 @@ void dsp_op_ext_sl_epi(const UDSPInstruction& opc)
|
|||||||
u8 dreg = ((opc.hex >> 4) & 0x3) + 0x18;
|
u8 dreg = ((opc.hex >> 4) & 0x3) + 0x18;
|
||||||
u16 val = dsp_dmem_read(g_dsp.r[0x03]);
|
u16 val = dsp_dmem_read(g_dsp.r[0x03]);
|
||||||
dsp_op_write_reg(dreg, val);
|
dsp_op_write_reg(dreg, val);
|
||||||
|
u8 sreg = 0x03;
|
||||||
|
|
||||||
if (opc.hex & 0x8) // SLM/SLMN
|
if (opc.hex & 0x8) // SLM/SLMN
|
||||||
{
|
{
|
||||||
g_dsp.r[0x03] += g_dsp.r[0x07];
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
|
// g_dsp.r[0x03] += g_dsp.r[0x07];
|
||||||
}
|
}
|
||||||
else // SL
|
else // SL
|
||||||
{
|
{
|
||||||
dsp_increment_addr_reg(0x03);
|
dsp_increment_addr_reg(sreg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,7 +360,8 @@ void dsp_op_ext_ld(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x04) // N
|
if (opc.hex & 0x04) // N
|
||||||
{
|
{
|
||||||
g_dsp.r[sreg] += g_dsp.r[sreg + 0x04];
|
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
|
||||||
|
//g_dsp.r[sreg] += g_dsp.r[sreg + 0x04];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -357,7 +370,8 @@ void dsp_op_ext_ld(const UDSPInstruction& opc)
|
|||||||
|
|
||||||
if (opc.hex & 0x08) // M
|
if (opc.hex & 0x08) // M
|
||||||
{
|
{
|
||||||
g_dsp.r[0x03] += g_dsp.r[0x07];
|
dsp_increase_addr_reg(0x03, (s16)g_dsp.r[DSP_REG_IX0 + 0x03]);
|
||||||
|
// g_dsp.r[0x03] += g_dsp.r[0x07];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user