mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-29 09:10:08 -06:00
get the DSP HLE branch started, I guess
This commit is contained in:
@ -1113,6 +1113,12 @@ void DSi::MapNWRAM_B(u32 num, u8 val)
|
|||||||
u8 oldval = (MBK[0][mbkn] >> mbks) & 0xFF;
|
u8 oldval = (MBK[0][mbkn] >> mbks) & 0xFF;
|
||||||
if (oldval == val) return;
|
if (oldval == val) return;
|
||||||
|
|
||||||
|
// TODO REMOVE ME
|
||||||
|
if ((val&3)==2 || (val&3)==3)
|
||||||
|
{
|
||||||
|
debug(0);
|
||||||
|
}
|
||||||
|
|
||||||
JIT.Memory.RemapNWRAM(1);
|
JIT.Memory.RemapNWRAM(1);
|
||||||
|
|
||||||
MBK[0][mbkn] &= ~(0xFF << mbks);
|
MBK[0][mbkn] &= ~(0xFF << mbks);
|
||||||
|
@ -267,7 +267,7 @@ void DSi_DSP::PDataDMAWrite(u16 wrval)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}printf("DSP: PDATA write %08X -> %04X\n", addr, wrval);
|
||||||
|
|
||||||
if (DSP_PCFG & (1<<1)) // auto-increment
|
if (DSP_PCFG & (1<<1)) // auto-increment
|
||||||
++DSP_PADR; // overflows and stays within a 64k 'page' // TODO: is this +1 or +2?
|
++DSP_PADR; // overflows and stays within a 64k 'page' // TODO: is this +1 or +2?
|
||||||
@ -306,7 +306,7 @@ u16 DSi_DSP::PDataDMARead()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: return r;
|
default: return r;
|
||||||
}
|
}printf("DSP: PDATA read %08X -> %04X\n", addr, r);
|
||||||
|
|
||||||
if (DSP_PCFG & (1<<1)) // auto-increment
|
if (DSP_PCFG & (1<<1)) // auto-increment
|
||||||
++DSP_PADR; // overflows and stays within a 64k 'page' // TODO: is this +1 or +2?
|
++DSP_PADR; // overflows and stays within a 64k 'page' // TODO: is this +1 or +2?
|
||||||
@ -352,7 +352,7 @@ u16 DSi_DSP::PDataDMAReadMMIO()
|
|||||||
|
|
||||||
if (!PDATAReadFifo.IsEmpty())
|
if (!PDATAReadFifo.IsEmpty())
|
||||||
ret = PDATAReadFifo.Read();
|
ret = PDATAReadFifo.Read();
|
||||||
|
printf("DSP: actually read PDATA FIFO (%04X)\n",ret);
|
||||||
// aha, there's more to come
|
// aha, there's more to come
|
||||||
if (PDataDMALen != 0)
|
if (PDataDMALen != 0)
|
||||||
{
|
{
|
||||||
@ -424,17 +424,17 @@ u16 DSi_DSP::Read16(u32 addr)
|
|||||||
|
|
||||||
case 0x24:
|
case 0x24:
|
||||||
{
|
{
|
||||||
u16 r = TeakraCore->RecvData(0);
|
u16 r = TeakraCore->RecvData(0);printf("DSP: read CMD0, %04X\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
case 0x2C:
|
case 0x2C:
|
||||||
{
|
{
|
||||||
u16 r = TeakraCore->RecvData(1);
|
u16 r = TeakraCore->RecvData(1);printf("DSP: read CMD1, %04X\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
case 0x34:
|
case 0x34:
|
||||||
{
|
{
|
||||||
u16 r = TeakraCore->RecvData(2);
|
u16 r = TeakraCore->RecvData(2);printf("DSP: read CMD2, %04X\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -469,6 +469,7 @@ void DSi_DSP::Write8(u32 addr, u8 val)
|
|||||||
// no REPx writes
|
// no REPx writes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bool fazil = false;
|
||||||
void DSi_DSP::Write16(u32 addr, u16 val)
|
void DSi_DSP::Write16(u32 addr, u16 val)
|
||||||
{
|
{
|
||||||
Log(LogLevel::Debug,"DSP WRITE16 %d %08X %08X %08X\n", IsDSPCoreEnabled(), addr, val, DSi.GetPC(0));
|
Log(LogLevel::Debug,"DSP WRITE16 %d %08X %08X %08X\n", IsDSPCoreEnabled(), addr, val, DSi.GetPC(0));
|
||||||
@ -485,6 +486,11 @@ void DSi_DSP::Write16(u32 addr, u16 val)
|
|||||||
DSP_PCFG = val;
|
DSP_PCFG = val;
|
||||||
if (DSP_PCFG & (1<<0))
|
if (DSP_PCFG & (1<<0))
|
||||||
TeakraCore->Reset();
|
TeakraCore->Reset();
|
||||||
|
/*else if (!fazil)
|
||||||
|
{
|
||||||
|
fazil = true;
|
||||||
|
DSi.debug(0);
|
||||||
|
}*/
|
||||||
if (DSP_PCFG & (1<<4))
|
if (DSP_PCFG & (1<<4))
|
||||||
PDataDMAStart();
|
PDataDMAStart();
|
||||||
else
|
else
|
||||||
@ -508,15 +514,15 @@ void DSi_DSP::Write16(u32 addr, u16 val)
|
|||||||
// SEM not writable
|
// SEM not writable
|
||||||
|
|
||||||
case 0x20: // CMD0
|
case 0x20: // CMD0
|
||||||
DSP_CMD[0] = val;
|
DSP_CMD[0] = val;printf("DSP: CMD0 = %04X\n", val);
|
||||||
TeakraCore->SendData(0, val);
|
TeakraCore->SendData(0, val);
|
||||||
break;
|
break;
|
||||||
case 0x28: // CMD1
|
case 0x28: // CMD1
|
||||||
DSP_CMD[1] = val;
|
DSP_CMD[1] = val;printf("DSP: CMD1 = %04X\n", val);
|
||||||
TeakraCore->SendData(1, val);
|
TeakraCore->SendData(1, val);
|
||||||
break;
|
break;
|
||||||
case 0x30: // CMD2
|
case 0x30: // CMD2
|
||||||
DSP_CMD[2] = val;
|
DSP_CMD[2] = val;printf("DSP: CMD2 = %04X\n", val);
|
||||||
TeakraCore->SendData(2, val);
|
TeakraCore->SendData(2, val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1901,8 +1901,8 @@ void NDS::debug(u32 param)
|
|||||||
}
|
}
|
||||||
Platform::CloseFile(shit);*/
|
Platform::CloseFile(shit);*/
|
||||||
|
|
||||||
/*FILE*
|
FILE*
|
||||||
shit = fopen("debug/camera9.bin", "wb");
|
shit = fopen("debug/castle9.bin", "wb");
|
||||||
fwrite(ARM9.ITCM, 0x8000, 1, shit);
|
fwrite(ARM9.ITCM, 0x8000, 1, shit);
|
||||||
for (u32 i = 0x02000000; i < 0x04000000; i+=4)
|
for (u32 i = 0x02000000; i < 0x04000000; i+=4)
|
||||||
{
|
{
|
||||||
@ -1910,13 +1910,13 @@ void NDS::debug(u32 param)
|
|||||||
fwrite(&val, 4, 1, shit);
|
fwrite(&val, 4, 1, shit);
|
||||||
}
|
}
|
||||||
fclose(shit);
|
fclose(shit);
|
||||||
shit = fopen("debug/camera7.bin", "wb");
|
shit = fopen("debug/castle7.bin", "wb");
|
||||||
for (u32 i = 0x02000000; i < 0x04000000; i+=4)
|
for (u32 i = 0x02000000; i < 0x04000000; i+=4)
|
||||||
{
|
{
|
||||||
u32 val = ARM7Read32(i);
|
u32 val = ARM7Read32(i);
|
||||||
fwrite(&val, 4, 1, shit);
|
fwrite(&val, 4, 1, shit);
|
||||||
}
|
}
|
||||||
fclose(shit);*/
|
fclose(shit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user