SPU2-X: Fix for DMC1, closing Issue 17 once and for all; also added ICC patch from Issue 75.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@657 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-03-02 06:41:02 +00:00
parent a4a7bf91dc
commit 63fe0a5fdc
4 changed files with 36 additions and 36 deletions

View File

@ -895,36 +895,36 @@ void ResetMenuSlots() {
#define _ADDSUBMENU(menu, menun, string) \
{ submenu[menun] = CreatePopupMenu(); \
AppendMenu(menu, MF_STRING | MF_POPUP, (UINT)submenu[menun], string); }
submenu[menun] = CreatePopupMenu(), \
AppendMenu(menu, MF_STRING | MF_POPUP, (UINT)submenu[menun], string)
#define ADDSUBMENU(menun, string) \
_ADDSUBMENU(gApp.hMenu, menun, string);
#define ADDSUBMENUS(submn, menun, string) \
{ submenu[menun] = CreatePopupMenu(); \
InsertMenu(submenu[submn], 0, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT)submenu[menun], string); }
submenu[menun] = CreatePopupMenu(), \
InsertMenu(submenu[submn], 0, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT)submenu[menun], string)
#define ADDMENUITEM(menun, string, id) \
{ item.fType = MFT_STRING; \
item.fMask = MIIM_STATE | MIIM_TYPE | MIIM_ID; \
item.fState = MFS_ENABLED; \
item.wID = id; \
sprintf(buf, string); \
InsertMenuItem(submenu[menun], 0, TRUE, &item); }
item.fType = MFT_STRING, \
item.fMask = MIIM_STATE | MIIM_TYPE | MIIM_ID, \
item.fState = MFS_ENABLED, \
item.wID = id, \
sprintf(buf, string), \
InsertMenuItem(submenu[menun], 0, TRUE, &item)
#define ADDMENUITEMC(menun, string, id) \
{ item.fType = MFT_STRING; \
item.fMask = MIIM_STATE | MIIM_TYPE | MIIM_ID; \
item.fState = MFS_ENABLED | MFS_CHECKED; \
item.wID = id; \
sprintf(buf, string); \
InsertMenuItem(submenu[menun], 0, TRUE, &item); }
item.fType = MFT_STRING, \
item.fMask = MIIM_STATE | MIIM_TYPE | MIIM_ID, \
item.fState = MFS_ENABLED | MFS_CHECKED, \
item.wID = id, \
sprintf(buf, string), \
InsertMenuItem(submenu[menun], 0, TRUE, &item)
#define ADDSEPARATOR(menun) \
{ item.fMask = MIIM_TYPE; \
item.fType = MFT_SEPARATOR; \
InsertMenuItem(submenu[menun], 0, TRUE, &item); }
item.fMask = MIIM_TYPE, \
item.fType = MFT_SEPARATOR, \
InsertMenuItem(submenu[menun], 0, TRUE, &item)
void CreateMainMenu() {
MENUITEMINFO item;
@ -964,10 +964,9 @@ void CreateMainMenu() {
ADDSUBMENU(0, _("&Run"));
ADDSUBMENUS(0, 1, _("&Process Priority"));
if( IsDevBuild ) {
if( IsDevBuild )
ADDMENUITEM(0,_("&Arguments"), ID_RUN_CMDLINE);
}
ADDMENUITEM(0,_("Re&set"), ID_RUN_RESET);
ADDMENUITEM(0,_("E&xecute"), ID_RUN_EXECUTE);
@ -991,13 +990,13 @@ void CreateMainMenu() {
ADDSUBMENU(0,_("&Language"));
for (i=langsMax-1; i>=0; i--) {
if (!strcmp(Config.Lang, langs[i].lang)) {
for (i=langsMax-1; i>=0; i--)
{
if (!strcmp(Config.Lang, langs[i].lang))
ADDMENUITEMC(0,ParseLang(langs[i].lang), ID_LANGS + i);
} else {
else
ADDMENUITEM(0,ParseLang(langs[i].lang), ID_LANGS + i);
}
}
#ifdef PCSX2_DEVBUILD
ADDSUBMENU(0, _("&Debug"));

View File

@ -263,8 +263,10 @@ void DoDMAWrite(int core,u16 *pMem,u32 size)
//const u32 endpt2 = (buff2end + roundUp) / indexer_scalar;
//memset( pcm_cache_flags, 0, endpt2 );
memcpy( GetMemPtr( 0 ), &pMem[buff1size], buff2end*2 );
// Emulation Grayarea: Should addresses wrap around to zero, or wrap around to
// 0x2800? Hard to know for usre (almost no games depend on this)
memcpy( GetMemPtr( 0 ), &pMem[buff1size], buff2end*2 );
Cores[core].TDA = (buff2end+1) & 0xfffff;
if(Cores[core].IRQEnable)
@ -274,7 +276,7 @@ void DoDMAWrite(int core,u16 *pMem,u32 size)
// Since the buffer wraps, the conditional might seem odd, but it works.
if( ( Cores[core].IRQA >= Cores[core].TSA ) ||
( Cores[core].IRQA <= Cores[core].TDA ) )
( Cores[core].IRQA < Cores[core].TDA ) )
{
Spdif.Info = 4 << core;
SetIrqCall();
@ -291,10 +293,12 @@ void DoDMAWrite(int core,u16 *pMem,u32 size)
if(Cores[core].IRQEnable)
{
// Flag interrupt?
// If IRQA occurs between start and dest, flag it:
// If IRQA occurs between start and dest, flag it.
// (start is inclusive, dest exclusive -- fixes DMC1 and hopefully won't break
// other games. ;)
if( ( Cores[core].IRQA >= Cores[core].TSA ) &&
( Cores[core].IRQA <= Cores[core].TDA ) )
( Cores[core].IRQA < Cores[core].TDA ) )
{
Spdif.Info = 4 << core;
SetIrqCall();
@ -353,8 +357,6 @@ void SPU2readDMA(int core, u16* pMem, u32 size)
}
}
}
Cores[core].TDA = buff2end;
}
else
{
@ -371,14 +373,13 @@ void SPU2readDMA(int core, u16* pMem, u32 size)
// If IRQA occurs between start and dest, flag it:
if( ( Cores[i].IRQA >= Cores[i].TSA ) &&
( Cores[i].IRQA <= Cores[i].TDA+0x1f ) )
( Cores[i].IRQA < Cores[i].TDA ) )
{
Spdif.Info=4<<i;
SetIrqCall();
}
}
}
Cores[core].TDA = buff1end;
}

View File

@ -115,7 +115,7 @@ void dummy7()
#define Cread(a,b,c,d) if(fread(a,b,c,d)<b) break;
#ifdef _MSC_VER
void CALLBACK s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow)
EXPORT_C_(void) s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow)
{
// load file
FILE *file=fopen(filename,"rb");

View File

@ -29,7 +29,7 @@ void s2r_close();
#ifdef _MSC_VER
// s2r playing
void CALLBACK s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow);
EXPORT_C_(void) s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow);
#else
#define s2r_replay 0&&
#endif