mirror of https://github.com/PCSX2/pcsx2.git
GSnull: A bit more work on the gif transfers.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1186 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
c671bba45a
commit
fde4685f77
|
@ -27,6 +27,7 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "GS.h"
|
#include "GS.h"
|
||||||
|
|
||||||
#ifdef __LINUX__
|
#ifdef __LINUX__
|
||||||
Display *display;
|
Display *display;
|
||||||
int screen;
|
int screen;
|
||||||
|
@ -174,14 +175,17 @@ EXPORT_C_(void) GSvsync(int field)
|
||||||
|
|
||||||
EXPORT_C_(void) GSgifTransfer1(u32 *pMem, u32 addr)
|
EXPORT_C_(void) GSgifTransfer1(u32 *pMem, u32 addr)
|
||||||
{
|
{
|
||||||
|
_GSgifTransfer1(pMem, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_C_(void) GSgifTransfer2(u32 *pMem, u32 size)
|
EXPORT_C_(void) GSgifTransfer2(u32 *pMem, u32 size)
|
||||||
{
|
{
|
||||||
|
_GSgifTransfer2(pMem, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_C_(void) GSgifTransfer3(u32 *pMem, u32 size)
|
EXPORT_C_(void) GSgifTransfer3(u32 *pMem, u32 size)
|
||||||
{
|
{
|
||||||
|
_GSgifTransfer3(pMem, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns the last tag processed (64 bits)
|
// returns the last tag processed (64 bits)
|
||||||
|
|
|
@ -44,6 +44,8 @@ extern "C"
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "GifTransfer.h"
|
||||||
|
|
||||||
/*#ifdef _MSC_VER
|
/*#ifdef _MSC_VER
|
||||||
#define EXPORT_C_(type) extern "C" __declspec(dllexport) type CALLBACK
|
#define EXPORT_C_(type) extern "C" __declspec(dllexport) type CALLBACK
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -26,30 +26,39 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
u32 CSRw;
|
||||||
|
GIFPath m_path[3];
|
||||||
|
bool Path3transfer;
|
||||||
|
|
||||||
|
PCSX2_ALIGNED16( u8 g_RealGSMem[0x2000] );
|
||||||
|
#define GSCSRr *((u64*)(g_RealGSMem+0x1000))
|
||||||
|
#define GSIMR *((u32*)(g_RealGSMem+0x1010))
|
||||||
|
#define GSSIGLBLID ((GSRegSIGBLID*)(g_RealGSMem+0x1080))
|
||||||
|
|
||||||
static void RegHandlerSIGNAL(const u32* data)
|
static void RegHandlerSIGNAL(const u32* data)
|
||||||
{
|
{
|
||||||
//MTGS_LOG("MTGS SIGNAL data %x_%x CSRw %x\n",data[0], data[1], CSRw);
|
//MTGS_LOG("MTGS SIGNAL data %x_%x CSRw %x\n",data[0], data[1], CSRw);
|
||||||
|
|
||||||
//GSSIGLBLID->SIGID = (GSSIGLBLID->SIGID&~data[1])|(data[0]&data[1]);
|
GSSIGLBLID->SIGID = (GSSIGLBLID->SIGID&~data[1])|(data[0]&data[1]);
|
||||||
|
|
||||||
//if ((CSRw & 0x1)) GSCSRr |= 1; // signal
|
if ((CSRw & 0x1)) GSCSRr |= 1; // signal
|
||||||
|
|
||||||
//if (!(GSIMR&0x100) ) gsIrq();
|
if (!(GSIMR & 0x100) ) GSirq();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RegHandlerFINISH(const u32* data)
|
static void RegHandlerFINISH(const u32* data)
|
||||||
{
|
{
|
||||||
//MTGS_LOG("MTGS FINISH data %x_%x CSRw %x\n",data[0], data[1], CSRw);
|
//MTGS_LOG("MTGS FINISH data %x_%x CSRw %x\n",data[0], data[1], CSRw);
|
||||||
|
|
||||||
//if ((CSRw & 0x2)) GSCSRr |= 2; // finish
|
if ((CSRw & 0x2)) GSCSRr |= 2; // finish
|
||||||
|
|
||||||
//if (!(GSIMR&0x200) ) gsIrq();
|
if (!(GSIMR & 0x200) ) GSirq();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RegHandlerLABEL(const u32* data)
|
static void RegHandlerLABEL(const u32* data)
|
||||||
{
|
{
|
||||||
//GSSIGLBLID->LBLID = (GSSIGLBLID->LBLID&~data[1])|(data[0]&data[1]);
|
GSSIGLBLID->LBLID = (GSSIGLBLID->LBLID&~data[1])|(data[0]&data[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*GIFRegHandler)(const u32* data);
|
typedef void (*GIFRegHandler)(const u32* data);
|
||||||
|
@ -237,3 +246,30 @@ __forceinline u32 _gifTransfer( GIF_PATH pathidx, const u8* pMem, u32 size )
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This currently segfaults in the beginning of KH1 if defined.
|
||||||
|
//#define DO_GIF_TRANSFERS
|
||||||
|
|
||||||
|
void _GSgifTransfer1(u32 *pMem, u32 addr)
|
||||||
|
{
|
||||||
|
#ifdef DO_GIF_TRANSFERS
|
||||||
|
/* This needs looking at, since I quickly grabbed it from ZeroGS. */
|
||||||
|
addr &= 0x3fff;
|
||||||
|
_gifTransfer( GIF_PATH_1, ((u8*)pMem+(u8)addr), (0x4000-addr)/16);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void _GSgifTransfer2(u32 *pMem, u32 size)
|
||||||
|
{
|
||||||
|
#ifdef DO_GIF_TRANSFERS
|
||||||
|
_gifTransfer( GIF_PATH_2, (u8*)pMem, size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void _GSgifTransfer3(u32 *pMem, u32 size)
|
||||||
|
{
|
||||||
|
#ifdef DO_GIF_TRANSFERS
|
||||||
|
_gifTransfer( GIF_PATH_3, (u8*)pMem, size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __GIF_TRANSFER_H__
|
||||||
|
#define __GIF_TRANSFER_H__
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -84,5 +87,11 @@ struct GIFPath
|
||||||
u32 GetReg();
|
u32 GetReg();
|
||||||
};
|
};
|
||||||
|
|
||||||
GIFPath m_path[3];
|
extern GIFPath m_path[3];
|
||||||
bool Path3transfer;
|
extern bool Path3transfer;
|
||||||
|
|
||||||
|
extern void _GSgifTransfer1(u32 *pMem, u32 addr);
|
||||||
|
extern void _GSgifTransfer2(u32 *pMem, u32 size);
|
||||||
|
extern void _GSgifTransfer3(u32 *pMem, u32 size);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -164,6 +164,10 @@
|
||||||
RelativePath="..\GS.cpp"
|
RelativePath="..\GS.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\GifTransfer.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Win32.cpp"
|
RelativePath=".\Win32.cpp"
|
||||||
>
|
>
|
||||||
|
@ -177,6 +181,10 @@
|
||||||
RelativePath="..\GS.h"
|
RelativePath="..\GS.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\GifTransfer.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\resource.h"
|
RelativePath=".\resource.h"
|
||||||
>
|
>
|
||||||
|
|
Loading…
Reference in New Issue