diff --git a/common.vsprops b/common.vsprops
index 7699d05..f594aaf 100644
--- a/common.vsprops
+++ b/common.vsprops
@@ -25,4 +25,8 @@
SubSystem="2"
RandomizedBaseAddress="1"
/>
+
diff --git a/gsdx/GS.h b/gsdx/GS.h
index 0446e0d..51b2722 100644
--- a/gsdx/GS.h
+++ b/gsdx/GS.h
@@ -989,7 +989,7 @@ REG128_SET(GIFPackedReg)
GIFPackedNOP NOP;
REG_SET_END
-struct GIFPath
+__declspec(align(16)) struct GIFPath
{
GIFTag tag;
UINT32 nreg;
diff --git a/gsdx/GSClut.cpp b/gsdx/GSClut.cpp
index 264d996..aae256a 100644
--- a/gsdx/GSClut.cpp
+++ b/gsdx/GSClut.cpp
@@ -25,15 +25,15 @@
GSClut::GSClut()
{
- BYTE* p = (BYTE*)_aligned_malloc(256 * 2 * sizeof(WORD) * 2 + 256 * sizeof(DWORD) + 256 * sizeof(UINT64), 16);
+ BYTE* p = (BYTE*)_aligned_malloc(8192, 16);
- m_clut = (WORD*)&p[0];
- m_buff32 = (DWORD*)&p[1024];
- m_buff64 = (UINT64*)&p[2048 + 1024];
+ m_clut = (WORD*)&p[0]; // 1k + 1k for buffer overruns (sfex: PSM == PSM_PSMT8, CPSM == PSM_PSMCT32, CSA != 0)
+ m_buff32 = (DWORD*)&p[2048]; // 1k
+ m_buff64 = (UINT64*)&p[4096]; // 2k
m_write.dirty = true;
m_read.dirty = true;
- for(int i = 0; i < 64; i++)
+ for(int i = 0; i < 16; i++)
{
for(int j = 0; j < 64; j++)
{
@@ -110,8 +110,8 @@ bool GSClut::IsWriting(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT)
case 3: break;
case 4: if(m_CBP[0] == TEX0.CBP) return false; break;
case 5: if(m_CBP[1] == TEX0.CBP) return false; break;
- case 6: return false;
- case 7: return false;
+ case 6: ASSERT(0); return false;
+ case 7: ASSERT(0); return false;
default: __assume(0);
}
@@ -126,10 +126,10 @@ bool GSClut::Write(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const G
case 1: break;
case 2: m_CBP[0] = TEX0.CBP; break;
case 3: m_CBP[1] = TEX0.CBP; break;
- case 4: if(m_CBP[0] == TEX0.CBP) return false;
- case 5: if(m_CBP[1] == TEX0.CBP) return false;
- case 6: return false;
- case 7: return false;
+ case 4: if(m_CBP[0] == TEX0.CBP) return false; break;
+ case 5: if(m_CBP[1] == TEX0.CBP) return false; break;
+ case 6: ASSERT(0); return false;
+ case 7: ASSERT(0); return false;
default: __assume(0);
}
@@ -150,21 +150,29 @@ bool GSClut::Write(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const G
void GSClut::WriteCLUT32_I8_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem)
{
+ ASSERT(TEX0.CSA == 0);
+
WriteCLUT_T32_I8_CSM1(&mem->m_vm32[mem->BlockAddress32(0, 0, TEX0.CBP, 1)], m_clut + (TEX0.CSA << 4));
}
void GSClut::WriteCLUT32_I4_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem)
{
+ ASSERT(TEX0.CSA < 16);
+
WriteCLUT_T32_I4_CSM1(&mem->m_vm32[mem->BlockAddress32(0, 0, TEX0.CBP, 1)], m_clut + (TEX0.CSA << 4));
}
void GSClut::WriteCLUT16_I8_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem)
{
+ ASSERT(TEX0.CSA < 16);
+
WriteCLUT_T16_I8_CSM1(&mem->m_vm16[mem->BlockAddress16(0, 0, TEX0.CBP, 1)], m_clut + (TEX0.CSA << 4));
}
void GSClut::WriteCLUT16_I4_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem)
{
+ ASSERT(TEX0.CSA < 32);
+
WriteCLUT_T16_I4_CSM1(&mem->m_vm16[mem->BlockAddress16(0, 0, TEX0.CBP, 1)], m_clut + (TEX0.CSA << 4));
}
diff --git a/gsdx/GSClut.h b/gsdx/GSClut.h
index c8555d3..e917fdd 100644
--- a/gsdx/GSClut.h
+++ b/gsdx/GSClut.h
@@ -50,7 +50,7 @@ class GSClut
typedef void (GSClut::*writeCLUT)(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem);
- writeCLUT m_wc[2][64][64];
+ writeCLUT m_wc[2][16][64];
void WriteCLUT32_I8_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem);
void WriteCLUT32_I4_CSM1(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT, const GSLocalMemory* mem);
diff --git a/gsdx/GSCrc.cpp b/gsdx/GSCrc.cpp
index 876bcc7..c06958f 100644
--- a/gsdx/GSCrc.cpp
+++ b/gsdx/GSCrc.cpp
@@ -59,6 +59,7 @@ CRC::Game CRC::m_games[] =
{0x086273D2, MetalGearSolid3, FR, false},
{0x26A6E286, MetalGearSolid3, EU, false},
{0xAA31B5BF, MetalGearSolid3, Unknown, false},
+ {0x9F185CE1, MetalGearSolid3, Unknown, false},
{0x278722BF, DBZBT2, US, false},
{0xFE961D28, DBZBT2, US, false},
{0X0393B6BE, DBZBT2, EU, false},
@@ -97,6 +98,7 @@ CRC::Game CRC::m_games[] =
{0xf0a6d880, HarvestMoon, US, true},
{0x75c01a04, NamcoXCapcom, US, false},
{0xBF6F101F, GiTS, US, false},
+ {0x6BF11378, Onimusha3, US, false},
};
CAtlMap CRC::m_map;
diff --git a/gsdx/GSCrc.h b/gsdx/GSCrc.h
index 97524f3..9847992 100644
--- a/gsdx/GSCrc.h
+++ b/gsdx/GSCrc.h
@@ -59,7 +59,9 @@ public:
JackieChanAdv,
HarvestMoon,
NamcoXCapcom,
- GiTS
+ GiTS,
+ Onimusha3,
+ TitleCount
};
enum Region
diff --git a/gsdx/GSDump.cpp b/gsdx/GSDump.cpp
index 29c3071..7b5c295 100644
--- a/gsdx/GSDump.cpp
+++ b/gsdx/GSDump.cpp
@@ -38,6 +38,7 @@ GSDump::~GSDump()
void GSDump::Open(LPCTSTR fn, DWORD crc, const freezeData& fd, const void* regs)
{
m_fp = _tfopen(fn, _T("wb"));
+ m_vsyncs = 0;
if(m_fp)
{
@@ -78,7 +79,7 @@ void GSDump::VSync(int field, bool last, const void* regs)
fputc(1, m_fp);
fputc(field, m_fp);
- if(!field && last)
+ if((++m_vsyncs & 1) == 0 && last)
{
fclose(m_fp);
m_fp = NULL;
diff --git a/gsdx/GSDump.h b/gsdx/GSDump.h
index d822716..3de1bf2 100644
--- a/gsdx/GSDump.h
+++ b/gsdx/GSDump.h
@@ -45,6 +45,7 @@ Regs data (id == 3)
class GSDump
{
FILE* m_fp;
+ int m_vsyncs;
public:
GSDump();
diff --git a/gsdx/GSLocalMemory.h b/gsdx/GSLocalMemory.h
index bb8dd00..5fe6494 100644
--- a/gsdx/GSLocalMemory.h
+++ b/gsdx/GSLocalMemory.h
@@ -870,16 +870,13 @@ public:
}
}
- __forceinline GSVector4i ReadFrameX(int PSM, const GSVector4i& addr) const
+ __forceinline GSVector4i ReadFrameX(int psm, const GSVector4i& addr) const
{
GSVector4i c, r, g, b, a;
- // TODO
-
- switch(PSM)
+ switch(psm)
{
- case PSM_PSMCT32:
- case PSM_PSMZ32:
+ case 0:
#if _M_SSE >= 0x401
c = addr.gather32_32(m_vm32);
#else
@@ -890,8 +887,7 @@ public:
(int)ReadPixel32(addr.u32[3]));
#endif
break;
- case PSM_PSMCT24:
- case PSM_PSMZ24:
+ case 1:
#if _M_SSE >= 0x401
c = addr.gather32_32(m_vm32);
#else
@@ -903,10 +899,7 @@ public:
#endif
c = (c & 0x00ffffff) | 0x80000000;
break;
- case PSM_PSMCT16:
- case PSM_PSMCT16S:
- case PSM_PSMZ16:
- case PSM_PSMZ16S:
+ case 2:
#if _M_SSE >= 0x401
c = addr.gather32_32(m_vm16);
#else
@@ -926,13 +919,13 @@ public:
return c;
}
- __forceinline GSVector4i ReadZBufX(int PSM, const GSVector4i& addr) const
+ __forceinline GSVector4i ReadZBufX(int psm, const GSVector4i& addr) const
{
GSVector4i z;
- switch(PSM)
+ switch(psm)
{
- case PSM_PSMZ32:
+ case 0:
#if _M_SSE >= 0x401
z = addr.gather32_32(m_vm32);
#else
@@ -943,7 +936,7 @@ public:
(int)ReadPixel32(addr.u32[3]));
#endif
break;
- case PSM_PSMZ24:
+ case 1:
#if _M_SSE >= 0x401
z = addr.gather32_32(m_vm32) & 0x00ffffff;
#else
@@ -955,8 +948,7 @@ public:
z = z & 0x00ffffff;
#endif
break;
- case PSM_PSMZ16:
- case PSM_PSMZ16S:
+ case 2:
#if _M_SSE >= 0x401
z = addr.gather32_32(m_vm16);
#else
@@ -975,28 +967,23 @@ public:
return z;
}
- __forceinline void WriteFrameX(int PSM, const GSVector4i& addr, const GSVector4i& c, const GSVector4i& mask, int pixels)
+ __forceinline void WriteFrameX(int psm, const GSVector4i& addr, const GSVector4i& c, const GSVector4i& mask, int pixels)
{
GSVector4i rb, ga, tmp;
- switch(PSM)
+ switch(psm)
{
- case PSM_PSMCT32:
- case PSM_PSMZ32:
+ case 0:
for(int i = 0; i < pixels; i++)
if(mask.u32[i] != 0xffffffff)
WritePixel32(addr.u32[i], c.u32[i]);
break;
- case PSM_PSMCT24:
- case PSM_PSMZ24:
+ case 1:
for(int i = 0; i < pixels; i++)
if(mask.u32[i] != 0xffffffff)
WritePixel24(addr.u32[i], c.u32[i]);
break;
- case PSM_PSMCT16:
- case PSM_PSMCT16S:
- case PSM_PSMZ16:
- case PSM_PSMZ16S:
+ case 2:
rb = c & 0x00f800f8;
ga = c & 0x8000f800;
tmp = (ga >> 16) | (rb >> 9) | (ga >> 6) | (rb >> 3);
@@ -1010,22 +997,21 @@ public:
}
}
- __forceinline void WriteZBufX(int PSM, const GSVector4i& addr, const GSVector4i& z, const GSVector4i& mask, int pixels)
+ __forceinline void WriteZBufX(int psm, const GSVector4i& addr, const GSVector4i& z, const GSVector4i& mask, int pixels)
{
- switch(PSM)
+ switch(psm)
{
- case PSM_PSMZ32:
+ case 0:
for(int i = 0; i < pixels; i++)
if(mask.u32[i] != 0xffffffff)
WritePixel32(addr.u32[i], z.u32[i]);
break;
- case PSM_PSMZ24:
+ case 1:
for(int i = 0; i < pixels; i++)
if(mask.u32[i] != 0xffffffff)
WritePixel24(addr.u32[i], z.u32[i]);
break;
- case PSM_PSMZ16:
- case PSM_PSMZ16S:
+ case 2:
for(int i = 0; i < pixels; i++)
if(mask.u32[i] != 0xffffffff)
WritePixel16(addr.u32[i], z.u32[i]);
diff --git a/gsdx/GSRasterizer.cpp b/gsdx/GSRasterizer.cpp
index 7166d80..c9a42f3 100644
--- a/gsdx/GSRasterizer.cpp
+++ b/gsdx/GSRasterizer.cpp
@@ -60,17 +60,11 @@ GSRasterizer::GSRasterizer(GSState* state, int id, int threads)
InitDS_ZPSM(iFPSM, 0) \
InitDS_ZPSM(iFPSM, 1) \
InitDS_ZPSM(iFPSM, 2) \
- InitDS_ZPSM(iFPSM, 3) \
#define InitDS() \
InitDS_FPSM(0) \
InitDS_FPSM(1) \
InitDS_FPSM(2) \
- InitDS_FPSM(3) \
- InitDS_FPSM(4) \
- InitDS_FPSM(5) \
- InitDS_FPSM(6) \
- InitDS_FPSM(7) \
InitDS();
@@ -125,8 +119,8 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
m_sel.dw = 0;
- m_sel.fpsm = GSUtil::EncodeFPSM(context->FRAME.PSM);
- m_sel.zpsm = GSUtil::EncodeZPSM(context->ZBUF.PSM);
+ m_sel.fpsm = GSUtil::EncodePSM(context->FRAME.PSM);
+ m_sel.zpsm = GSUtil::EncodePSM(context->ZBUF.PSM);
m_sel.ztst = context->TEST.ZTE && context->TEST.ZTST > 1 ? context->TEST.ZTST : context->ZBUF.ZMSK ? 0 : 1;
m_sel.iip = PRIM->PRIM == GS_POINTLIST || PRIM->PRIM == GS_SPRITE ? 0 : PRIM->IIP;
m_sel.tfx = PRIM->TME ? context->TEX0.TFX : 4;
@@ -154,22 +148,19 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
}
m_sel.atst = context->TEST.ATE ? context->TEST.ATST : 1;
- m_sel.afail = context->TEST.AFAIL;
+ m_sel.afail = context->TEST.ATE ? context->TEST.AFAIL : 0;
m_sel.fge = PRIM->FGE;
- m_sel.rfb =
- PRIM->ABE || env.PABE.PABE || context->TEST.DATE ||
- context->FRAME.FBMSK != 0 && context->FRAME.FBMSK != 0xffffffff ||
- context->TEST.ATE && context->TEST.ATST != 1 && context->TEST.AFAIL == 3;
m_sel.date = context->FRAME.PSM != PSM_PSMCT24 ? context->TEST.DATE : 0;
m_sel.abe = env.PABE.PABE ? 2 : PRIM->ABE ? 1 : 0;
m_sel.abea = m_sel.abe ? context->ALPHA.A : 0;
m_sel.abeb = m_sel.abe ? context->ALPHA.B : 0;
m_sel.abec = m_sel.abe ? context->ALPHA.C : 0;
m_sel.abed = m_sel.abe ? context->ALPHA.D : 0;
+ m_sel.rfb = m_sel.date || m_sel.abe || m_sel.atst != 1 && m_sel.afail == 3 || context->FRAME.FBMSK != 0 && context->FRAME.FBMSK != 0xffffffff;
m_dsf = m_ds[m_sel.fpsm][m_sel.zpsm][m_sel.ztst][m_sel.iip];
- CAtlMap::CPair* pair = m_dsmap2.Lookup(m_sel);
+ CRBMap::CPair* pair = m_dsmap2.Lookup(m_sel);
if(pair)
{
@@ -183,7 +174,7 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
{
m_dsf = pair->m_value;
- m_dsmap2[pair->m_key] = pair->m_value;
+ m_dsmap2.SetAt(pair->m_key, pair->m_value);
}
else if(!pair)
{
@@ -193,11 +184,11 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
m_sel.tfx, m_sel.tcc, m_sel.fst, m_sel.ltf,
m_sel.atst, m_sel.afail, m_sel.fge, m_sel.rfb, m_sel.date, m_sel.abe);
- m_dsmap[m_sel] = NULL;
+ m_dsmap.SetAt(m_sel, NULL);
if(FILE* fp = _tfopen(_T("c:\\1.txt"), _T("w")))
{
- POSITION pos = m_dsmap.GetStartPosition();
+ POSITION pos = m_dsmap.GetHeadPosition();
while(pos)
{
@@ -205,7 +196,7 @@ int GSRasterizer::Draw(Vertex* vertices, int count)
if(!pair->m_value)
{
- _ftprintf(fp, _T("m_dsmap[0x%08x] = &GSRasterizer::DrawScanlineEx<0x%08x>;\n"), pair->m_key, pair->m_key);
+ _ftprintf(fp, _T("m_dsmap.SetAt(0x%08x, &GSRasterizer::DrawScanlineEx<0x%08x>);\n"), pair->m_key, pair->m_key);
}
}
@@ -828,25 +819,9 @@ void GSRasterizer::SetupScanline(const Vertex& dv)
}
}
-template
+template
void GSRasterizer::DrawScanline(int top, int left, int right, const Vertex& v)
{
-/*
-extern UINT64 g_slp1;
-extern UINT64 g_slp2;
-extern UINT64 g_slp3;
-extern UINT64 g_slp4;
-{
-int steps = right - left;
-for(; steps >= 4; steps -= 4) g_slp4++;
-if(steps == 1) g_slp1++;
-else if(steps == 2) g_slp2++;
-else if(steps == 3) g_slp3++;
-}
-*/
- int fpsm = GSUtil::DecodeFPSM(iFPSM);
- int zpsm = GSUtil::DecodeZPSM(iZPSM);
-
GSVector4i fa_base = m_slenv.fbco[top];
GSVector4i* fa_offset = (GSVector4i*)&m_slenv.fo[left];
@@ -887,18 +862,24 @@ else if(steps == 3) g_slp3++;
GSVector4i test = GSVector4i::zero();
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one());
- GSVector4i zd;
if(ztst > 1)
{
- zd = m_state->m_mem.ReadZBufX(zpsm, za);
+ GSVector4i zd = m_state->m_mem.ReadZBufX(zpsm, za);
- GSVector4i offset = GSVector4i::x80000000();
+ GSVector4i zso = zs;
+ GSVector4i zdo = zd;
+
+ if(zpsm == 0)
+ {
+ zso = zs - GSVector4i::x80000000();
+ zdo = zd - GSVector4i::x80000000();
+ }
switch(ztst)
{
- case 2: test = (zs - offset) < (zd - offset); break; // ge
- case 3: test = (zs - offset) <= (zd - offset); break; // g
+ case 2: test = zso < zdo; break; // ge
+ case 3: test = zso <= zdo; break; // g
default: __assume(0);
}
@@ -1099,10 +1080,10 @@ else if(steps == 3) g_slp3++;
c[10] = GSVector4::zero();
c[11] = m_slenv.afix;
- int abea = m_sel.abea;
- int abeb = m_sel.abeb;
- int abec = m_sel.abec;
- int abed = m_sel.abed;
+ DWORD abea = m_sel.abea;
+ DWORD abeb = m_sel.abeb;
+ DWORD abec = m_sel.abec;
+ DWORD abed = m_sel.abed;
GSVector4 r = (c[abea*4 + 0] - c[abeb*4 + 0]).mod2x(c[abec*4 + 3]) + c[abed*4 + 0];
GSVector4 g = (c[abea*4 + 1] - c[abeb*4 + 1]).mod2x(c[abec*4 + 3]) + c[abed*4 + 1];
diff --git a/gsdx/GSRasterizer.h b/gsdx/GSRasterizer.h
index 7fd3b4f..e4617f5 100644
--- a/gsdx/GSRasterizer.h
+++ b/gsdx/GSRasterizer.h
@@ -86,29 +86,29 @@ private:
{
struct
{
- DWORD fpsm:3; // 0
- DWORD zpsm:2; // 3
- DWORD ztst:2; // 5 (0: off, 1: write, 2: write + test (ge), 3: write + test (g))
- DWORD iip:1; // 7
- DWORD tfx:3; // 8
- DWORD tcc:1; // 11
- DWORD fst:1; // 12
- DWORD ltf:1; // 13
- DWORD atst:3; // 14
- DWORD afail:2; // 17
- DWORD fge:1; // 19
- DWORD rfb:1; // 20
- DWORD date:1; // 21
- DWORD abe:2; // 22
- DWORD abea:2; // 24
- DWORD abeb:2; // 26
- DWORD abec:2; // 28
- DWORD abed:2; // 30
+ DWORD fpsm:2; // 0
+ DWORD zpsm:2; // 2
+ DWORD ztst:2; // 4 (0: off, 1: write, 2: write + test (ge), 3: write + test (g))
+ DWORD iip:1; // 6
+ DWORD tfx:3; // 7
+ DWORD tcc:1; // 10
+ DWORD fst:1; // 11
+ DWORD ltf:1; // 12
+ DWORD atst:3; // 13
+ DWORD afail:2; // 16
+ DWORD fge:1; // 18
+ DWORD date:1; // 19
+ DWORD abe:2; // 20
+ DWORD abea:2; // 22
+ DWORD abeb:2; // 24
+ DWORD abec:2; // 26
+ DWORD abed:2; // 28
+ DWORD rfb:1; // 30
};
DWORD dw;
- operator DWORD() {return dw & 0xffffffff;}
+ operator DWORD() {return dw & 0x7fffffff;}
};
CRect m_scissor;
@@ -137,10 +137,10 @@ private:
typedef void (GSRasterizer::*DrawScanlinePtr)(int top, int left, int right, const Vertex& v);
- DrawScanlinePtr m_ds[8][4][4][2], m_dsf;
- CAtlMap m_dsmap, m_dsmap2;
+ DrawScanlinePtr m_ds[4][4][4][2], m_dsf;
+ CRBMap m_dsmap, m_dsmap2;
- template
+ template
void DrawScanline(int top, int left, int right, const Vertex& v);
void InitEx();
diff --git a/gsdx/GSRasterizerEx.cpp b/gsdx/GSRasterizerEx.cpp
index 1b4aea1..303b8ba 100644
--- a/gsdx/GSRasterizerEx.cpp
+++ b/gsdx/GSRasterizerEx.cpp
@@ -26,1033 +26,562 @@ void GSRasterizer::InitEx()
{
// our little "profile guided optimization", gathered from different games
- m_dsmap[0x445068c0] = &GSRasterizer::DrawScanlineEx<0x445068c0>;
-
// ffx
- m_dsmap[0x465204c9] = &GSRasterizer::DrawScanlineEx<0x465204c9>;
- m_dsmap[0x000984e9] = &GSRasterizer::DrawScanlineEx<0x000984e9>;
- m_dsmap[0x4251a809] = &GSRasterizer::DrawScanlineEx<0x4251a809>;
- m_dsmap[0xa9504429] = &GSRasterizer::DrawScanlineEx<0xa9504429>;
- m_dsmap[0x0009a8e9] = &GSRasterizer::DrawScanlineEx<0x0009a8e9>;
- m_dsmap[0x4451a809] = &GSRasterizer::DrawScanlineEx<0x4451a809>;
- m_dsmap[0x4851a849] = &GSRasterizer::DrawScanlineEx<0x4851a849>;
- m_dsmap[0x44504409] = &GSRasterizer::DrawScanlineEx<0x44504409>;
- m_dsmap[0x0000512b] = &GSRasterizer::DrawScanlineEx<0x0000512b>;
- m_dsmap[0x00004429] = &GSRasterizer::DrawScanlineEx<0x00004429>;
- m_dsmap[0x4451a8c9] = &GSRasterizer::DrawScanlineEx<0x4451a8c9>;
- m_dsmap[0x4459f8e9] = &GSRasterizer::DrawScanlineEx<0x4459f8e9>;
- m_dsmap[0x4851c489] = &GSRasterizer::DrawScanlineEx<0x4851c489>;
- m_dsmap[0x485184c9] = &GSRasterizer::DrawScanlineEx<0x485184c9>;
- m_dsmap[0x0001a8e9] = &GSRasterizer::DrawScanlineEx<0x0001a8e9>;
- m_dsmap[0x4451f849] = &GSRasterizer::DrawScanlineEx<0x4451f849>;
- m_dsmap[0x4851a8c9] = &GSRasterizer::DrawScanlineEx<0x4851a8c9>;
- m_dsmap[0x44504489] = &GSRasterizer::DrawScanlineEx<0x44504489>;
- m_dsmap[0x445984c9] = &GSRasterizer::DrawScanlineEx<0x445984c9>;
- m_dsmap[0x4451f809] = &GSRasterizer::DrawScanlineEx<0x4451f809>;
- m_dsmap[0x4451a849] = &GSRasterizer::DrawScanlineEx<0x4451a849>;
- m_dsmap[0x6851c849] = &GSRasterizer::DrawScanlineEx<0x6851c849>;
- m_dsmap[0x4459a8c9] = &GSRasterizer::DrawScanlineEx<0x4459a8c9>;
- m_dsmap[0x4851a809] = &GSRasterizer::DrawScanlineEx<0x4851a809>;
- m_dsmap[0x68506869] = &GSRasterizer::DrawScanlineEx<0x68506869>;
- m_dsmap[0x44505029] = &GSRasterizer::DrawScanlineEx<0x44505029>;
- m_dsmap[0x4451f829] = &GSRasterizer::DrawScanlineEx<0x4451f829>;
- m_dsmap[0x44504429] = &GSRasterizer::DrawScanlineEx<0x44504429>;
- m_dsmap[0x4251c489] = &GSRasterizer::DrawScanlineEx<0x4251c489>;
- m_dsmap[0x00006869] = &GSRasterizer::DrawScanlineEx<0x00006869>;
- m_dsmap[0x425184c9] = &GSRasterizer::DrawScanlineEx<0x425184c9>;
- m_dsmap[0x4451c4a9] = &GSRasterizer::DrawScanlineEx<0x4451c4a9>;
- m_dsmap[0x4451f8a9] = &GSRasterizer::DrawScanlineEx<0x4451f8a9>;
- m_dsmap[0x445044a9] = &GSRasterizer::DrawScanlineEx<0x445044a9>;
- m_dsmap[0x645044e9] = &GSRasterizer::DrawScanlineEx<0x645044e9>;
- m_dsmap[0x485044e9] = &GSRasterizer::DrawScanlineEx<0x485044e9>;
- m_dsmap[0x0001a829] = &GSRasterizer::DrawScanlineEx<0x0001a829>;
- m_dsmap[0x445044e9] = &GSRasterizer::DrawScanlineEx<0x445044e9>;
- m_dsmap[0x445184c9] = &GSRasterizer::DrawScanlineEx<0x445184c9>;
- m_dsmap[0x88518409] = &GSRasterizer::DrawScanlineEx<0x88518409>;
- m_dsmap[0x4451f889] = &GSRasterizer::DrawScanlineEx<0x4451f889>;
- m_dsmap[0x4451c429] = &GSRasterizer::DrawScanlineEx<0x4451c429>;
- m_dsmap[0x48504489] = &GSRasterizer::DrawScanlineEx<0x48504489>;
- m_dsmap[0x4451d8a9] = &GSRasterizer::DrawScanlineEx<0x4451d8a9>;
- m_dsmap[0x4451a0c9] = &GSRasterizer::DrawScanlineEx<0x4451a0c9>;
- m_dsmap[0x885184c9] = &GSRasterizer::DrawScanlineEx<0x885184c9>;
- m_dsmap[0x4851f849] = &GSRasterizer::DrawScanlineEx<0x4851f849>;
- m_dsmap[0x64505129] = &GSRasterizer::DrawScanlineEx<0x64505129>;
- m_dsmap[0x445220e9] = &GSRasterizer::DrawScanlineEx<0x445220e9>;
- m_dsmap[0x485204c9] = &GSRasterizer::DrawScanlineEx<0x485204c9>;
- m_dsmap[0x00004428] = &GSRasterizer::DrawScanlineEx<0x00004428>;
- m_dsmap[0x4251a8c9] = &GSRasterizer::DrawScanlineEx<0x4251a8c9>;
- m_dsmap[0x0059a8c9] = &GSRasterizer::DrawScanlineEx<0x0059a8c9>;
- m_dsmap[0x885068e8] = &GSRasterizer::DrawScanlineEx<0x885068e8>;
- m_dsmap[0x48518449] = &GSRasterizer::DrawScanlineEx<0x48518449>;
- m_dsmap[0x4451a009] = &GSRasterizer::DrawScanlineEx<0x4451a009>;
- m_dsmap[0x88518429] = &GSRasterizer::DrawScanlineEx<0x88518429>;
- m_dsmap[0x00004409] = &GSRasterizer::DrawScanlineEx<0x00004409>;
- m_dsmap[0x8851a0c9] = &GSRasterizer::DrawScanlineEx<0x8851a0c9>;
- m_dsmap[0x4251a849] = &GSRasterizer::DrawScanlineEx<0x4251a849>;
- m_dsmap[0x44518429] = &GSRasterizer::DrawScanlineEx<0x44518429>;
- m_dsmap[0x6451a809] = &GSRasterizer::DrawScanlineEx<0x6451a809>;
- m_dsmap[0x4859f8e9] = &GSRasterizer::DrawScanlineEx<0x4859f8e9>;
- m_dsmap[0x8850400b] = &GSRasterizer::DrawScanlineEx<0x8850400b>;
- m_dsmap[0x64507149] = &GSRasterizer::DrawScanlineEx<0x64507149>;
- m_dsmap[0x44518409] = &GSRasterizer::DrawScanlineEx<0x44518409>;
- m_dsmap[0x0001b809] = &GSRasterizer::DrawScanlineEx<0x0001b809>;
- m_dsmap[0x42504489] = &GSRasterizer::DrawScanlineEx<0x42504489>;
- m_dsmap[0x44518489] = &GSRasterizer::DrawScanlineEx<0x44518489>;
- m_dsmap[0x0001b00b] = &GSRasterizer::DrawScanlineEx<0x0001b00b>;
- m_dsmap[0x4251b809] = &GSRasterizer::DrawScanlineEx<0x4251b809>;
- m_dsmap[0x4451b809] = &GSRasterizer::DrawScanlineEx<0x4451b809>;
+ m_dsmap.SetAt(0x5110e255, &GSRasterizer::DrawScanlineEx<0x5110e255>);
+ m_dsmap.SetAt(0x51102205, &GSRasterizer::DrawScanlineEx<0x51102205>);
+ m_dsmap.SetAt(0x5210e245, &GSRasterizer::DrawScanlineEx<0x5210e245>);
+ m_dsmap.SetAt(0x5210c265, &GSRasterizer::DrawScanlineEx<0x5210c265>);
+ m_dsmap.SetAt(0x5110d465, &GSRasterizer::DrawScanlineEx<0x5110d465>);
+ m_dsmap.SetAt(0x591038a5, &GSRasterizer::DrawScanlineEx<0x591038a5>);
+ m_dsmap.SetAt(0x5210d465, &GSRasterizer::DrawScanlineEx<0x5210d465>);
+ m_dsmap.SetAt(0x6a502215, &GSRasterizer::DrawScanlineEx<0x6a502215>);
+ m_dsmap.SetAt(0x00002896, &GSRasterizer::DrawScanlineEx<0x00002896>);
+ m_dsmap.SetAt(0x5110e215, &GSRasterizer::DrawScanlineEx<0x5110e215>);
+ m_dsmap.SetAt(0x00002215, &GSRasterizer::DrawScanlineEx<0x00002215>);
+ m_dsmap.SetAt(0x5114c265, &GSRasterizer::DrawScanlineEx<0x5114c265>);
+ m_dsmap.SetAt(0x59102895, &GSRasterizer::DrawScanlineEx<0x59102895>);
+ m_dsmap.SetAt(0x5110d425, &GSRasterizer::DrawScanlineEx<0x5110d425>);
+ m_dsmap.SetAt(0x51910265, &GSRasterizer::DrawScanlineEx<0x51910265>);
+ m_dsmap.SetAt(0x5114d465, &GSRasterizer::DrawScanlineEx<0x5114d465>);
+ m_dsmap.SetAt(0x0000d475, &GSRasterizer::DrawScanlineEx<0x0000d475>);
+ m_dsmap.SetAt(0x5090dc05, &GSRasterizer::DrawScanlineEx<0x5090dc05>);
+ m_dsmap.SetAt(0x5210d425, &GSRasterizer::DrawScanlineEx<0x5210d425>);
+ m_dsmap.SetAt(0x5110fc55, &GSRasterizer::DrawScanlineEx<0x5110fc55>);
+ m_dsmap.SetAt(0x0004c275, &GSRasterizer::DrawScanlineEx<0x0004c275>);
+ m_dsmap.SetAt(0x0004d475, &GSRasterizer::DrawScanlineEx<0x0004d475>);
+ m_dsmap.SetAt(0x5114fc75, &GSRasterizer::DrawScanlineEx<0x5114fc75>);
+ m_dsmap.SetAt(0x5214fc75, &GSRasterizer::DrawScanlineEx<0x5214fc75>);
+ m_dsmap.SetAt(0x5110fc25, &GSRasterizer::DrawScanlineEx<0x5110fc25>);
+ m_dsmap.SetAt(0x5110fc15, &GSRasterizer::DrawScanlineEx<0x5110fc15>);
+ m_dsmap.SetAt(0x51102245, &GSRasterizer::DrawScanlineEx<0x51102245>);
+ m_dsmap.SetAt(0x5110fc05, &GSRasterizer::DrawScanlineEx<0x5110fc05>);
+ m_dsmap.SetAt(0x5a10e425, &GSRasterizer::DrawScanlineEx<0x5a10e425>);
+ m_dsmap.SetAt(0x5110dc05, &GSRasterizer::DrawScanlineEx<0x5110dc05>);
// ffxii
- m_dsmap[0x445ba8c8] = &GSRasterizer::DrawScanlineEx<0x445ba8c8>;
- m_dsmap[0x44520428] = &GSRasterizer::DrawScanlineEx<0x44520428>;
- m_dsmap[0x485628c8] = &GSRasterizer::DrawScanlineEx<0x485628c8>;
- m_dsmap[0x485204c8] = &GSRasterizer::DrawScanlineEx<0x485204c8>;
- m_dsmap[0x58560428] = &GSRasterizer::DrawScanlineEx<0x58560428>;
- m_dsmap[0x445628c8] = &GSRasterizer::DrawScanlineEx<0x445628c8>;
- m_dsmap[0x00160408] = &GSRasterizer::DrawScanlineEx<0x00160408>;
- m_dsmap[0x00040428] = &GSRasterizer::DrawScanlineEx<0x00040428>;
- m_dsmap[0x42520448] = &GSRasterizer::DrawScanlineEx<0x42520448>;
- m_dsmap[0x00004428] = &GSRasterizer::DrawScanlineEx<0x00004428>;
- m_dsmap[0x44523828] = &GSRasterizer::DrawScanlineEx<0x44523828>;
- m_dsmap[0x00023828] = &GSRasterizer::DrawScanlineEx<0x00023828>;
- m_dsmap[0x425060a8] = &GSRasterizer::DrawScanlineEx<0x425060a8>;
- m_dsmap[0x485228a8] = &GSRasterizer::DrawScanlineEx<0x485228a8>;
- m_dsmap[0x44563828] = &GSRasterizer::DrawScanlineEx<0x44563828>;
- m_dsmap[0x445228a8] = &GSRasterizer::DrawScanlineEx<0x445228a8>;
- m_dsmap[0x000228a8] = &GSRasterizer::DrawScanlineEx<0x000228a8>;
- m_dsmap[0x48562808] = &GSRasterizer::DrawScanlineEx<0x48562808>;
- m_dsmap[0x445204a8] = &GSRasterizer::DrawScanlineEx<0x445204a8>;
- m_dsmap[0x00304408] = &GSRasterizer::DrawScanlineEx<0x00304408>;
- m_dsmap[0x48522848] = &GSRasterizer::DrawScanlineEx<0x48522848>;
- m_dsmap[0x44522848] = &GSRasterizer::DrawScanlineEx<0x44522848>;
- m_dsmap[0x485604a8] = &GSRasterizer::DrawScanlineEx<0x485604a8>;
- m_dsmap[0x00004408] = &GSRasterizer::DrawScanlineEx<0x00004408>;
- m_dsmap[0x445238a8] = &GSRasterizer::DrawScanlineEx<0x445238a8>;
- m_dsmap[0x48520448] = &GSRasterizer::DrawScanlineEx<0x48520448>;
- m_dsmap[0x44760448] = &GSRasterizer::DrawScanlineEx<0x44760448>;
- m_dsmap[0x445638a8] = &GSRasterizer::DrawScanlineEx<0x445638a8>;
- m_dsmap[0x48561828] = &GSRasterizer::DrawScanlineEx<0x48561828>;
- m_dsmap[0x44561828] = &GSRasterizer::DrawScanlineEx<0x44561828>;
- m_dsmap[0x49522848] = &GSRasterizer::DrawScanlineEx<0x49522848>;
- m_dsmap[0x445060a8] = &GSRasterizer::DrawScanlineEx<0x445060a8>;
- m_dsmap[0x445620a8] = &GSRasterizer::DrawScanlineEx<0x445620a8>;
- m_dsmap[0x485b68c8] = &GSRasterizer::DrawScanlineEx<0x485b68c8>;
- m_dsmap[0x445b68c8] = &GSRasterizer::DrawScanlineEx<0x445b68c8>;
- m_dsmap[0x000968c8] = &GSRasterizer::DrawScanlineEx<0x000968c8>;
- m_dsmap[0x485228c8] = &GSRasterizer::DrawScanlineEx<0x485228c8>;
- m_dsmap[0x000944c8] = &GSRasterizer::DrawScanlineEx<0x000944c8>;
- m_dsmap[0x445228c8] = &GSRasterizer::DrawScanlineEx<0x445228c8>;
- m_dsmap[0xa8704408] = &GSRasterizer::DrawScanlineEx<0xa8704408>;
- m_dsmap[0x44504428] = &GSRasterizer::DrawScanlineEx<0x44504428>;
- m_dsmap[0x445068a8] = &GSRasterizer::DrawScanlineEx<0x445068a8>;
- m_dsmap[0x445044a8] = &GSRasterizer::DrawScanlineEx<0x445044a8>;
- m_dsmap[0x00160428] = &GSRasterizer::DrawScanlineEx<0x00160428>;
- m_dsmap[0x48562848] = &GSRasterizer::DrawScanlineEx<0x48562848>;
- m_dsmap[0x495228c8] = &GSRasterizer::DrawScanlineEx<0x495228c8>;
- m_dsmap[0x49520448] = &GSRasterizer::DrawScanlineEx<0x49520448>;
- m_dsmap[0x465228a8] = &GSRasterizer::DrawScanlineEx<0x465228a8>;
- m_dsmap[0x445b44c8] = &GSRasterizer::DrawScanlineEx<0x445b44c8>;
- m_dsmap[0x00022808] = &GSRasterizer::DrawScanlineEx<0x00022808>;
- m_dsmap[0x445068e8] = &GSRasterizer::DrawScanlineEx<0x445068e8>;
- m_dsmap[0x445204c8] = &GSRasterizer::DrawScanlineEx<0x445204c8>;
- m_dsmap[0x445604a8] = &GSRasterizer::DrawScanlineEx<0x445604a8>;
- m_dsmap[0x42560488] = &GSRasterizer::DrawScanlineEx<0x42560488>;
- m_dsmap[0x445668c8] = &GSRasterizer::DrawScanlineEx<0x445668c8>;
- m_dsmap[0x44522808] = &GSRasterizer::DrawScanlineEx<0x44522808>;
- m_dsmap[0x425b68c8] = &GSRasterizer::DrawScanlineEx<0x425b68c8>;
- m_dsmap[0x00023808] = &GSRasterizer::DrawScanlineEx<0x00023808>;
- m_dsmap[0x48563808] = &GSRasterizer::DrawScanlineEx<0x48563808>;
+ m_dsmap.SetAt(0x00020214, &GSRasterizer::DrawScanlineEx<0x00020214>);
+ m_dsmap.SetAt(0x51110254, &GSRasterizer::DrawScanlineEx<0x51110254>);
+ m_dsmap.SetAt(0x50903054, &GSRasterizer::DrawScanlineEx<0x50903054>);
+ m_dsmap.SetAt(0x00011c14, &GSRasterizer::DrawScanlineEx<0x00011c14>);
+ m_dsmap.SetAt(0x51110c14, &GSRasterizer::DrawScanlineEx<0x51110c14>);
+ m_dsmap.SetAt(0x51130c14, &GSRasterizer::DrawScanlineEx<0x51130c14>);
+ m_dsmap.SetAt(0x51110c54, &GSRasterizer::DrawScanlineEx<0x51110c54>);
+ m_dsmap.SetAt(0x51130c54, &GSRasterizer::DrawScanlineEx<0x51130c54>);
+ m_dsmap.SetAt(0x51111c14, &GSRasterizer::DrawScanlineEx<0x51111c14>);
+ m_dsmap.SetAt(0x00002214, &GSRasterizer::DrawScanlineEx<0x00002214>);
+ m_dsmap.SetAt(0x51111c54, &GSRasterizer::DrawScanlineEx<0x51111c54>);
+ m_dsmap.SetAt(0x51131c54, &GSRasterizer::DrawScanlineEx<0x51131c54>);
+ m_dsmap.SetAt(0x51131054, &GSRasterizer::DrawScanlineEx<0x51131054>);
+ m_dsmap.SetAt(0x00003814, &GSRasterizer::DrawScanlineEx<0x00003814>);
+ m_dsmap.SetAt(0x51110214, &GSRasterizer::DrawScanlineEx<0x51110214>);
+ m_dsmap.SetAt(0x51102214, &GSRasterizer::DrawScanlineEx<0x51102214>);
+ m_dsmap.SetAt(0x40030204, &GSRasterizer::DrawScanlineEx<0x40030204>);
+ m_dsmap.SetAt(0x51111454, &GSRasterizer::DrawScanlineEx<0x51111454>);
+ m_dsmap.SetAt(0x51111424, &GSRasterizer::DrawScanlineEx<0x51111424>);
+ m_dsmap.SetAt(0x56130214, &GSRasterizer::DrawScanlineEx<0x56130214>);
+ m_dsmap.SetAt(0x52511424, &GSRasterizer::DrawScanlineEx<0x52511424>);
+ m_dsmap.SetAt(0x40082204, &GSRasterizer::DrawScanlineEx<0x40082204>);
+ m_dsmap.SetAt(0x5115b464, &GSRasterizer::DrawScanlineEx<0x5115b464>);
+ m_dsmap.SetAt(0x00002204, &GSRasterizer::DrawScanlineEx<0x00002204>);
+ m_dsmap.SetAt(0x40030214, &GSRasterizer::DrawScanlineEx<0x40030214>);
+ m_dsmap.SetAt(0x51111464, &GSRasterizer::DrawScanlineEx<0x51111464>);
+ m_dsmap.SetAt(0x52111424, &GSRasterizer::DrawScanlineEx<0x52111424>);
+ m_dsmap.SetAt(0x52511464, &GSRasterizer::DrawScanlineEx<0x52511464>);
+ m_dsmap.SetAt(0x52130254, &GSRasterizer::DrawScanlineEx<0x52130254>);
+ m_dsmap.SetAt(0x51131464, &GSRasterizer::DrawScanlineEx<0x51131464>);
+ m_dsmap.SetAt(0x52110224, &GSRasterizer::DrawScanlineEx<0x52110224>);
+ m_dsmap.SetAt(0x0004b464, &GSRasterizer::DrawScanlineEx<0x0004b464>);
+ m_dsmap.SetAt(0x511b0224, &GSRasterizer::DrawScanlineEx<0x511b0224>);
+ m_dsmap.SetAt(0x52131c04, &GSRasterizer::DrawScanlineEx<0x52131c04>);
+ m_dsmap.SetAt(0x0004a264, &GSRasterizer::DrawScanlineEx<0x0004a264>);
+ m_dsmap.SetAt(0x52130c14, &GSRasterizer::DrawScanlineEx<0x52130c14>);
+ m_dsmap.SetAt(0x51131c14, &GSRasterizer::DrawScanlineEx<0x51131c14>);
+ m_dsmap.SetAt(0x5215b464, &GSRasterizer::DrawScanlineEx<0x5215b464>);
+ m_dsmap.SetAt(0x50910224, &GSRasterizer::DrawScanlineEx<0x50910224>);
+ m_dsmap.SetAt(0x52111464, &GSRasterizer::DrawScanlineEx<0x52111464>);
+ m_dsmap.SetAt(0x52131464, &GSRasterizer::DrawScanlineEx<0x52131464>);
+ m_dsmap.SetAt(0x52110264, &GSRasterizer::DrawScanlineEx<0x52110264>);
+ m_dsmap.SetAt(0x00011454, &GSRasterizer::DrawScanlineEx<0x00011454>);
+ m_dsmap.SetAt(0x5115d464, &GSRasterizer::DrawScanlineEx<0x5115d464>);
+ m_dsmap.SetAt(0x6a182204, &GSRasterizer::DrawScanlineEx<0x6a182204>);
// culdcept
- m_dsmap[0x00004400] = &GSRasterizer::DrawScanlineEx<0x00004400>;
- m_dsmap[0x0000714b] = &GSRasterizer::DrawScanlineEx<0x0000714b>;
- m_dsmap[0x0001f84b] = &GSRasterizer::DrawScanlineEx<0x0001f84b>;
- m_dsmap[0x0001d84b] = &GSRasterizer::DrawScanlineEx<0x0001d84b>;
- m_dsmap[0x4459f84b] = &GSRasterizer::DrawScanlineEx<0x4459f84b>;
- m_dsmap[0x0009eacb] = &GSRasterizer::DrawScanlineEx<0x0009eacb>;
- m_dsmap[0x0001ea4b] = &GSRasterizer::DrawScanlineEx<0x0001ea4b>;
- m_dsmap[0x4451c4cb] = &GSRasterizer::DrawScanlineEx<0x4451c4cb>;
- m_dsmap[0x6851c4cb] = &GSRasterizer::DrawScanlineEx<0x6851c4cb>;
- m_dsmap[0x4451e8cb] = &GSRasterizer::DrawScanlineEx<0x4451e8cb>;
- m_dsmap[0x4851c4cb] = &GSRasterizer::DrawScanlineEx<0x4851c4cb>;
- m_dsmap[0x4451c8cb] = &GSRasterizer::DrawScanlineEx<0x4451c8cb>;
- m_dsmap[0x0001c4cb] = &GSRasterizer::DrawScanlineEx<0x0001c4cb>;
- m_dsmap[0x0009f84b] = &GSRasterizer::DrawScanlineEx<0x0009f84b>;
- m_dsmap[0x0000442b] = &GSRasterizer::DrawScanlineEx<0x0000442b>;
- m_dsmap[0x6851eacb] = &GSRasterizer::DrawScanlineEx<0x6851eacb>;
- m_dsmap[0x0009d84b] = &GSRasterizer::DrawScanlineEx<0x0009d84b>;
- m_dsmap[0x00007100] = &GSRasterizer::DrawScanlineEx<0x00007100>;
- m_dsmap[0x0009ea4b] = &GSRasterizer::DrawScanlineEx<0x0009ea4b>;
- m_dsmap[0x4451f84b] = &GSRasterizer::DrawScanlineEx<0x4451f84b>;
- m_dsmap[0x0001eacb] = &GSRasterizer::DrawScanlineEx<0x0001eacb>;
- m_dsmap[0x6451ea4b] = &GSRasterizer::DrawScanlineEx<0x6451ea4b>;
- m_dsmap[0x6851f84b] = &GSRasterizer::DrawScanlineEx<0x6851f84b>;
- m_dsmap[0x4451d84b] = &GSRasterizer::DrawScanlineEx<0x4451d84b>;
- m_dsmap[0xa151eacb] = &GSRasterizer::DrawScanlineEx<0xa151eacb>;
- m_dsmap[0x6851d84b] = &GSRasterizer::DrawScanlineEx<0x6851d84b>;
+ m_dsmap.SetAt(0x00002216, &GSRasterizer::DrawScanlineEx<0x00002216>);
+ m_dsmap.SetAt(0x0000e266, &GSRasterizer::DrawScanlineEx<0x0000e266>);
+ m_dsmap.SetAt(0x0000ec26, &GSRasterizer::DrawScanlineEx<0x0000ec26>);
+ m_dsmap.SetAt(0x0000f526, &GSRasterizer::DrawScanlineEx<0x0000f526>);
+ m_dsmap.SetAt(0x0000f566, &GSRasterizer::DrawScanlineEx<0x0000f566>);
+ m_dsmap.SetAt(0x0000fc26, &GSRasterizer::DrawScanlineEx<0x0000fc26>);
+ m_dsmap.SetAt(0x0004f526, &GSRasterizer::DrawScanlineEx<0x0004f526>);
+ m_dsmap.SetAt(0x0004f566, &GSRasterizer::DrawScanlineEx<0x0004f566>);
+ m_dsmap.SetAt(0x5110e266, &GSRasterizer::DrawScanlineEx<0x5110e266>);
+ m_dsmap.SetAt(0x5110e466, &GSRasterizer::DrawScanlineEx<0x5110e466>);
+ m_dsmap.SetAt(0x5110ec26, &GSRasterizer::DrawScanlineEx<0x5110ec26>);
+ m_dsmap.SetAt(0x5110f466, &GSRasterizer::DrawScanlineEx<0x5110f466>);
+ m_dsmap.SetAt(0x5110fc26, &GSRasterizer::DrawScanlineEx<0x5110fc26>);
+ m_dsmap.SetAt(0x5210e266, &GSRasterizer::DrawScanlineEx<0x5210e266>);
+ m_dsmap.SetAt(0x5a10e266, &GSRasterizer::DrawScanlineEx<0x5a10e266>);
+ m_dsmap.SetAt(0x5a10f566, &GSRasterizer::DrawScanlineEx<0x5a10f566>);
+ m_dsmap.SetAt(0x5a10fc26, &GSRasterizer::DrawScanlineEx<0x5a10fc26>);
+ m_dsmap.SetAt(0x6850f566, &GSRasterizer::DrawScanlineEx<0x6850f566>);
// kingdom hearts
- m_dsmap[0x445968c8] = &GSRasterizer::DrawScanlineEx<0x445968c8>;
- m_dsmap[0x4451a8c8] = &GSRasterizer::DrawScanlineEx<0x4451a8c8>;
- m_dsmap[0x4451a828] = &GSRasterizer::DrawScanlineEx<0x4451a828>;
- m_dsmap[0x4851a8e8] = &GSRasterizer::DrawScanlineEx<0x4851a8e8>;
- m_dsmap[0x00104438] = &GSRasterizer::DrawScanlineEx<0x00104438>;
- m_dsmap[0x4451a8e8] = &GSRasterizer::DrawScanlineEx<0x4451a8e8>;
- m_dsmap[0x4851a868] = &GSRasterizer::DrawScanlineEx<0x4851a868>;
- m_dsmap[0x2a59a8d8] = &GSRasterizer::DrawScanlineEx<0x2a59a8d8>;
- m_dsmap[0x44505828] = &GSRasterizer::DrawScanlineEx<0x44505828>;
- m_dsmap[0x445078a8] = &GSRasterizer::DrawScanlineEx<0x445078a8>;
- m_dsmap[0x4451a868] = &GSRasterizer::DrawScanlineEx<0x4451a868>;
- m_dsmap[0x00107800] = &GSRasterizer::DrawScanlineEx<0x00107800>;
- m_dsmap[0x4458a8c8] = &GSRasterizer::DrawScanlineEx<0x4458a8c8>;
- m_dsmap[0x44506828] = &GSRasterizer::DrawScanlineEx<0x44506828>;
- m_dsmap[0x4459a8c8] = &GSRasterizer::DrawScanlineEx<0x4459a8c8>;
- m_dsmap[0x00007809] = &GSRasterizer::DrawScanlineEx<0x00007809>;
- m_dsmap[0x4859a8e8] = &GSRasterizer::DrawScanlineEx<0x4859a8e8>;
- m_dsmap[0x44507828] = &GSRasterizer::DrawScanlineEx<0x44507828>;
- m_dsmap[0x0009a8c8] = &GSRasterizer::DrawScanlineEx<0x0009a8c8>;
- m_dsmap[0x4851a808] = &GSRasterizer::DrawScanlineEx<0x4851a808>;
- m_dsmap[0x81504408] = &GSRasterizer::DrawScanlineEx<0x81504408>;
- m_dsmap[0x4451a808] = &GSRasterizer::DrawScanlineEx<0x4451a808>;
- m_dsmap[0x00004409] = &GSRasterizer::DrawScanlineEx<0x00004409>;
- m_dsmap[0x00118458] = &GSRasterizer::DrawScanlineEx<0x00118458>;
- m_dsmap[0x4451b808] = &GSRasterizer::DrawScanlineEx<0x4451b808>;
- m_dsmap[0x4251a868] = &GSRasterizer::DrawScanlineEx<0x4251a868>;
- m_dsmap[0x44507028] = &GSRasterizer::DrawScanlineEx<0x44507028>;
- m_dsmap[0x445968d8] = &GSRasterizer::DrawScanlineEx<0x445968d8>;
- m_dsmap[0x445058a8] = &GSRasterizer::DrawScanlineEx<0x445058a8>;
- m_dsmap[0x00007028] = &GSRasterizer::DrawScanlineEx<0x00007028>;
- m_dsmap[0x48505828] = &GSRasterizer::DrawScanlineEx<0x48505828>;
- m_dsmap[0x485078a8] = &GSRasterizer::DrawScanlineEx<0x485078a8>;
- m_dsmap[0x00005808] = &GSRasterizer::DrawScanlineEx<0x00005808>;
- m_dsmap[0x4851a888] = &GSRasterizer::DrawScanlineEx<0x4851a888>;
- m_dsmap[0x44505008] = &GSRasterizer::DrawScanlineEx<0x44505008>;
- m_dsmap[0x4459a8d8] = &GSRasterizer::DrawScanlineEx<0x4459a8d8>;
- m_dsmap[0x4651a8e8] = &GSRasterizer::DrawScanlineEx<0x4651a8e8>;
- m_dsmap[0x00004488] = &GSRasterizer::DrawScanlineEx<0x00004488>;
- m_dsmap[0x445184e8] = &GSRasterizer::DrawScanlineEx<0x445184e8>;
- m_dsmap[0x48504428] = &GSRasterizer::DrawScanlineEx<0x48504428>;
- m_dsmap[0x4251a8e8] = &GSRasterizer::DrawScanlineEx<0x4251a8e8>;
- m_dsmap[0x44507008] = &GSRasterizer::DrawScanlineEx<0x44507008>;
- m_dsmap[0x4859a888] = &GSRasterizer::DrawScanlineEx<0x4859a888>;
- m_dsmap[0x4251a888] = &GSRasterizer::DrawScanlineEx<0x4251a888>;
- m_dsmap[0x4251a808] = &GSRasterizer::DrawScanlineEx<0x4251a808>;
- m_dsmap[0x4451b048] = &GSRasterizer::DrawScanlineEx<0x4451b048>;
- m_dsmap[0x00120408] = &GSRasterizer::DrawScanlineEx<0x00120408>;
- m_dsmap[0x00120448] = &GSRasterizer::DrawScanlineEx<0x00120448>;
- m_dsmap[0x44523808] = &GSRasterizer::DrawScanlineEx<0x44523808>;
- m_dsmap[0x4851b868] = &GSRasterizer::DrawScanlineEx<0x4851b868>;
- m_dsmap[0x4851b8a8] = &GSRasterizer::DrawScanlineEx<0x4851b8a8>;
- m_dsmap[0x8851a8e8] = &GSRasterizer::DrawScanlineEx<0x8851a8e8>;
- m_dsmap[0x4451b8a8] = &GSRasterizer::DrawScanlineEx<0x4451b8a8>;
- m_dsmap[0x44518428] = &GSRasterizer::DrawScanlineEx<0x44518428>;
- m_dsmap[0x485184a8] = &GSRasterizer::DrawScanlineEx<0x485184a8>;
- m_dsmap[0x445184a8] = &GSRasterizer::DrawScanlineEx<0x445184a8>;
- m_dsmap[0x425184a8] = &GSRasterizer::DrawScanlineEx<0x425184a8>;
- m_dsmap[0x4851b828] = &GSRasterizer::DrawScanlineEx<0x4851b828>;
- m_dsmap[0x4451b828] = &GSRasterizer::DrawScanlineEx<0x4451b828>;
- m_dsmap[0x44507808] = &GSRasterizer::DrawScanlineEx<0x44507808>;
- m_dsmap[0x00007808] = &GSRasterizer::DrawScanlineEx<0x00007808>;
+ m_dsmap.SetAt(0x00002205, &GSRasterizer::DrawScanlineEx<0x00002205>);
+ m_dsmap.SetAt(0x00003c04, &GSRasterizer::DrawScanlineEx<0x00003c04>);
+ m_dsmap.SetAt(0x00003c05, &GSRasterizer::DrawScanlineEx<0x00003c05>);
+ m_dsmap.SetAt(0x0004d464, &GSRasterizer::DrawScanlineEx<0x0004d464>);
+ m_dsmap.SetAt(0x40002218, &GSRasterizer::DrawScanlineEx<0x40002218>);
+ m_dsmap.SetAt(0x40003c00, &GSRasterizer::DrawScanlineEx<0x40003c00>);
+ m_dsmap.SetAt(0x4000c228, &GSRasterizer::DrawScanlineEx<0x4000c228>);
+ m_dsmap.SetAt(0x4a94d468, &GSRasterizer::DrawScanlineEx<0x4a94d468>);
+ m_dsmap.SetAt(0x5090c254, &GSRasterizer::DrawScanlineEx<0x5090c254>);
+ m_dsmap.SetAt(0x51103414, &GSRasterizer::DrawScanlineEx<0x51103414>);
+ m_dsmap.SetAt(0x51103c54, &GSRasterizer::DrawScanlineEx<0x51103c54>);
+ m_dsmap.SetAt(0x5110c214, &GSRasterizer::DrawScanlineEx<0x5110c214>);
+ m_dsmap.SetAt(0x5110c254, &GSRasterizer::DrawScanlineEx<0x5110c254>);
+ m_dsmap.SetAt(0x5110d434, &GSRasterizer::DrawScanlineEx<0x5110d434>);
+ m_dsmap.SetAt(0x5110d474, &GSRasterizer::DrawScanlineEx<0x5110d474>);
+ m_dsmap.SetAt(0x5110d824, &GSRasterizer::DrawScanlineEx<0x5110d824>);
+ m_dsmap.SetAt(0x5110dc04, &GSRasterizer::DrawScanlineEx<0x5110dc04>);
+ m_dsmap.SetAt(0x5110dc14, &GSRasterizer::DrawScanlineEx<0x5110dc14>);
+ m_dsmap.SetAt(0x5110dc54, &GSRasterizer::DrawScanlineEx<0x5110dc54>);
+ m_dsmap.SetAt(0x5114b464, &GSRasterizer::DrawScanlineEx<0x5114b464>);
+ m_dsmap.SetAt(0x5114b468, &GSRasterizer::DrawScanlineEx<0x5114b468>);
+ m_dsmap.SetAt(0x5114d464, &GSRasterizer::DrawScanlineEx<0x5114d464>);
+ m_dsmap.SetAt(0x5210c254, &GSRasterizer::DrawScanlineEx<0x5210c254>);
+ m_dsmap.SetAt(0x5210d434, &GSRasterizer::DrawScanlineEx<0x5210d434>);
+ m_dsmap.SetAt(0x5210d474, &GSRasterizer::DrawScanlineEx<0x5210d474>);
+ m_dsmap.SetAt(0x5210dc14, &GSRasterizer::DrawScanlineEx<0x5210dc14>);
+ m_dsmap.SetAt(0x5210dc34, &GSRasterizer::DrawScanlineEx<0x5210dc34>);
+ m_dsmap.SetAt(0x5210dc54, &GSRasterizer::DrawScanlineEx<0x5210dc54>);
+ m_dsmap.SetAt(0x5214d474, &GSRasterizer::DrawScanlineEx<0x5214d474>);
+ m_dsmap.SetAt(0x60502204, &GSRasterizer::DrawScanlineEx<0x60502204>);
// kh2
- m_dsmap[0x2a59a8c8] = &GSRasterizer::DrawScanlineEx<0x2a59a8c8>;
- m_dsmap[0x44505028] = &GSRasterizer::DrawScanlineEx<0x44505028>;
- m_dsmap[0x425078a8] = &GSRasterizer::DrawScanlineEx<0x425078a8>;
- m_dsmap[0x64507009] = &GSRasterizer::DrawScanlineEx<0x64507009>;
- m_dsmap[0x44505889] = &GSRasterizer::DrawScanlineEx<0x44505889>;
- m_dsmap[0x4458e8c8] = &GSRasterizer::DrawScanlineEx<0x4458e8c8>;
- m_dsmap[0xa551a868] = &GSRasterizer::DrawScanlineEx<0xa551a868>;
- m_dsmap[0x44518440] = &GSRasterizer::DrawScanlineEx<0x44518440>;
- m_dsmap[0x0251a868] = &GSRasterizer::DrawScanlineEx<0x0251a868>;
- m_dsmap[0x4859a8c8] = &GSRasterizer::DrawScanlineEx<0x4859a8c8>;
- m_dsmap[0x00007128] = &GSRasterizer::DrawScanlineEx<0x00007128>;
- m_dsmap[0x485184e8] = &GSRasterizer::DrawScanlineEx<0x485184e8>;
- m_dsmap[0x0051a868] = &GSRasterizer::DrawScanlineEx<0x0051a868>;
- m_dsmap[0x4851b808] = &GSRasterizer::DrawScanlineEx<0x4851b808>;
- m_dsmap[0x48507889] = &GSRasterizer::DrawScanlineEx<0x48507889>;
- m_dsmap[0x2651a868] = &GSRasterizer::DrawScanlineEx<0x2651a868>;
- m_dsmap[0x8951a868] = &GSRasterizer::DrawScanlineEx<0x8951a868>;
- m_dsmap[0x4451b800] = &GSRasterizer::DrawScanlineEx<0x4451b800>;
- m_dsmap[0x44507889] = &GSRasterizer::DrawScanlineEx<0x44507889>;
- m_dsmap[0x68507009] = &GSRasterizer::DrawScanlineEx<0x68507009>;
+ m_dsmap.SetAt(0x00003894, &GSRasterizer::DrawScanlineEx<0x00003894>);
+ m_dsmap.SetAt(0x0000dc05, &GSRasterizer::DrawScanlineEx<0x0000dc05>);
+ m_dsmap.SetAt(0x4a94d464, &GSRasterizer::DrawScanlineEx<0x4a94d464>);
+ m_dsmap.SetAt(0x50903c54, &GSRasterizer::DrawScanlineEx<0x50903c54>);
+ m_dsmap.SetAt(0x51102814, &GSRasterizer::DrawScanlineEx<0x51102814>);
+ m_dsmap.SetAt(0x51102c54, &GSRasterizer::DrawScanlineEx<0x51102c54>);
+ m_dsmap.SetAt(0x52102214, &GSRasterizer::DrawScanlineEx<0x52102214>);
+ m_dsmap.SetAt(0x52103c54, &GSRasterizer::DrawScanlineEx<0x52103c54>);
+ m_dsmap.SetAt(0x5210c274, &GSRasterizer::DrawScanlineEx<0x5210c274>);
+ m_dsmap.SetAt(0x5214d464, &GSRasterizer::DrawScanlineEx<0x5214d464>);
+ m_dsmap.SetAt(0x59103805, &GSRasterizer::DrawScanlineEx<0x59103805>);
+ m_dsmap.SetAt(0x5a103805, &GSRasterizer::DrawScanlineEx<0x5a103805>);
+ m_dsmap.SetAt(0x00003c00, &GSRasterizer::DrawScanlineEx<0x00003c00>);
+ m_dsmap.SetAt(0x4010d434, &GSRasterizer::DrawScanlineEx<0x4010d434>);
+ m_dsmap.SetAt(0x4510d434, &GSRasterizer::DrawScanlineEx<0x4510d434>);
+ m_dsmap.SetAt(0x51102c45, &GSRasterizer::DrawScanlineEx<0x51102c45>);
+ m_dsmap.SetAt(0x5110c220, &GSRasterizer::DrawScanlineEx<0x5110c220>);
+ m_dsmap.SetAt(0x5110dc00, &GSRasterizer::DrawScanlineEx<0x5110dc00>);
+ m_dsmap.SetAt(0x51147464, &GSRasterizer::DrawScanlineEx<0x51147464>);
+ m_dsmap.SetAt(0x6090d434, &GSRasterizer::DrawScanlineEx<0x6090d434>);
// resident evil 4
- m_dsmap[0x4851a848] = &GSRasterizer::DrawScanlineEx<0x4851a848>;
- m_dsmap[0x5851a8c8] = &GSRasterizer::DrawScanlineEx<0x5851a8c8>;
- m_dsmap[0x48507808] = &GSRasterizer::DrawScanlineEx<0x48507808>;
- m_dsmap[0x64540428] = &GSRasterizer::DrawScanlineEx<0x64540428>;
- m_dsmap[0x4451a848] = &GSRasterizer::DrawScanlineEx<0x4451a848>;
- m_dsmap[0x64518448] = &GSRasterizer::DrawScanlineEx<0x64518448>;
- m_dsmap[0x64504408] = &GSRasterizer::DrawScanlineEx<0x64504408>;
- m_dsmap[0x44518408] = &GSRasterizer::DrawScanlineEx<0x44518408>;
- m_dsmap[0x68507908] = &GSRasterizer::DrawScanlineEx<0x68507908>;
- m_dsmap[0x2a505908] = &GSRasterizer::DrawScanlineEx<0x2a505908>;
- m_dsmap[0x89504408] = &GSRasterizer::DrawScanlineEx<0x89504408>;
- m_dsmap[0x485384c8] = &GSRasterizer::DrawScanlineEx<0x485384c8>;
- m_dsmap[0x00007800] = &GSRasterizer::DrawScanlineEx<0x00007800>;
- m_dsmap[0x00007108] = &GSRasterizer::DrawScanlineEx<0x00007108>;
- m_dsmap[0x48518448] = &GSRasterizer::DrawScanlineEx<0x48518448>;
- m_dsmap[0x68504448] = &GSRasterizer::DrawScanlineEx<0x68504448>;
- m_dsmap[0x64507908] = &GSRasterizer::DrawScanlineEx<0x64507908>;
- m_dsmap[0x48504408] = &GSRasterizer::DrawScanlineEx<0x48504408>;
- m_dsmap[0x6451a8c8] = &GSRasterizer::DrawScanlineEx<0x6451a8c8>;
- m_dsmap[0x2a507908] = &GSRasterizer::DrawScanlineEx<0x2a507908>;
- m_dsmap[0x4451a888] = &GSRasterizer::DrawScanlineEx<0x4451a888>;
- m_dsmap[0x00005848] = &GSRasterizer::DrawScanlineEx<0x00005848>;
- m_dsmap[0xa4507908] = &GSRasterizer::DrawScanlineEx<0xa4507908>;
- m_dsmap[0x44505908] = &GSRasterizer::DrawScanlineEx<0x44505908>;
- m_dsmap[0x44504408] = &GSRasterizer::DrawScanlineEx<0x44504408>;
- m_dsmap[0x00105908] = &GSRasterizer::DrawScanlineEx<0x00105908>;
- m_dsmap[0x0010590a] = &GSRasterizer::DrawScanlineEx<0x0010590a>;
- m_dsmap[0x00005908] = &GSRasterizer::DrawScanlineEx<0x00005908>;
- m_dsmap[0x00104408] = &GSRasterizer::DrawScanlineEx<0x00104408>;
- m_dsmap[0x4851a8c8] = &GSRasterizer::DrawScanlineEx<0x4851a8c8>;
- m_dsmap[0x00106908] = &GSRasterizer::DrawScanlineEx<0x00106908>;
+ m_dsmap.SetAt(0x00002c24, &GSRasterizer::DrawScanlineEx<0x00002c24>);
+ m_dsmap.SetAt(0x00002c84, &GSRasterizer::DrawScanlineEx<0x00002c84>);
+ m_dsmap.SetAt(0x00003884, &GSRasterizer::DrawScanlineEx<0x00003884>);
+ m_dsmap.SetAt(0x40002c84, &GSRasterizer::DrawScanlineEx<0x40002c84>);
+ m_dsmap.SetAt(0x40003484, &GSRasterizer::DrawScanlineEx<0x40003484>);
+ m_dsmap.SetAt(0x4a902c84, &GSRasterizer::DrawScanlineEx<0x4a902c84>);
+ m_dsmap.SetAt(0x4a903c84, &GSRasterizer::DrawScanlineEx<0x4a903c84>);
+ m_dsmap.SetAt(0x5110c204, &GSRasterizer::DrawScanlineEx<0x5110c204>);
+ m_dsmap.SetAt(0x5110d404, &GSRasterizer::DrawScanlineEx<0x5110d404>);
+ m_dsmap.SetAt(0x5110d444, &GSRasterizer::DrawScanlineEx<0x5110d444>);
+ m_dsmap.SetAt(0x52102204, &GSRasterizer::DrawScanlineEx<0x52102204>);
+ m_dsmap.SetAt(0x52103c04, &GSRasterizer::DrawScanlineEx<0x52103c04>);
+ m_dsmap.SetAt(0x5210c224, &GSRasterizer::DrawScanlineEx<0x5210c224>);
+ m_dsmap.SetAt(0x5210d444, &GSRasterizer::DrawScanlineEx<0x5210d444>);
+ m_dsmap.SetAt(0x5210d464, &GSRasterizer::DrawScanlineEx<0x5210d464>);
+ m_dsmap.SetAt(0x5211c264, &GSRasterizer::DrawScanlineEx<0x5211c264>);
+ m_dsmap.SetAt(0x5610d464, &GSRasterizer::DrawScanlineEx<0x5610d464>);
+ m_dsmap.SetAt(0x59103c84, &GSRasterizer::DrawScanlineEx<0x59103c84>);
+ m_dsmap.SetAt(0x5910c224, &GSRasterizer::DrawScanlineEx<0x5910c224>);
+ m_dsmap.SetAt(0x5910d464, &GSRasterizer::DrawScanlineEx<0x5910d464>);
+ m_dsmap.SetAt(0x59120214, &GSRasterizer::DrawScanlineEx<0x59120214>);
+ m_dsmap.SetAt(0x5a102224, &GSRasterizer::DrawScanlineEx<0x5a102224>);
+ m_dsmap.SetAt(0x5a103c84, &GSRasterizer::DrawScanlineEx<0x5a103c84>);
+ m_dsmap.SetAt(0x62502204, &GSRasterizer::DrawScanlineEx<0x62502204>);
+ m_dsmap.SetAt(0x69103c84, &GSRasterizer::DrawScanlineEx<0x69103c84>);
// dmc (fixme)
- m_dsmap[0x29524438] = &GSRasterizer::DrawScanlineEx<0x29524438>;
- m_dsmap[0x00004438] = &GSRasterizer::DrawScanlineEx<0x00004438>;
- m_dsmap[0x000968d8] = &GSRasterizer::DrawScanlineEx<0x000968d8>;
- m_dsmap[0x44504458] = &GSRasterizer::DrawScanlineEx<0x44504458>;
- m_dsmap[0x0001a8d8] = &GSRasterizer::DrawScanlineEx<0x0001a8d8>;
- m_dsmap[0x00024438] = &GSRasterizer::DrawScanlineEx<0x00024438>;
- m_dsmap[0x44507058] = &GSRasterizer::DrawScanlineEx<0x44507058>;
- m_dsmap[0x62522838] = &GSRasterizer::DrawScanlineEx<0x62522838>;
- m_dsmap[0x6851a8d8] = &GSRasterizer::DrawScanlineEx<0x6851a8d8>;
- m_dsmap[0xa1520478] = &GSRasterizer::DrawScanlineEx<0xa1520478>;
- m_dsmap[0x48516858] = &GSRasterizer::DrawScanlineEx<0x48516858>;
- m_dsmap[0x0009a8d8] = &GSRasterizer::DrawScanlineEx<0x0009a8d8>;
- m_dsmap[0xa1524438] = &GSRasterizer::DrawScanlineEx<0xa1524438>;
- m_dsmap[0x44516858] = &GSRasterizer::DrawScanlineEx<0x44516858>;
- m_dsmap[0x00017838] = &GSRasterizer::DrawScanlineEx<0x00017838>;
- m_dsmap[0x0009a8f8] = &GSRasterizer::DrawScanlineEx<0x0009a8f8>;
- m_dsmap[0x00004418] = &GSRasterizer::DrawScanlineEx<0x00004418>;
- m_dsmap[0x29520478] = &GSRasterizer::DrawScanlineEx<0x29520478>;
+ m_dsmap.SetAt(0x0000bc18, &GSRasterizer::DrawScanlineEx<0x0000bc18>);
+ m_dsmap.SetAt(0x0000d468, &GSRasterizer::DrawScanlineEx<0x0000d468>);
+ m_dsmap.SetAt(0x00012218, &GSRasterizer::DrawScanlineEx<0x00012218>);
+ m_dsmap.SetAt(0x0004b468, &GSRasterizer::DrawScanlineEx<0x0004b468>);
+ m_dsmap.SetAt(0x0004d468, &GSRasterizer::DrawScanlineEx<0x0004d468>);
+ m_dsmap.SetAt(0x0004d478, &GSRasterizer::DrawScanlineEx<0x0004d478>);
+ m_dsmap.SetAt(0x4a510238, &GSRasterizer::DrawScanlineEx<0x4a510238>);
+ m_dsmap.SetAt(0x4a512218, &GSRasterizer::DrawScanlineEx<0x4a512218>);
+ m_dsmap.SetAt(0x51102228, &GSRasterizer::DrawScanlineEx<0x51102228>);
+ m_dsmap.SetAt(0x51103828, &GSRasterizer::DrawScanlineEx<0x51103828>);
+ m_dsmap.SetAt(0x5110bc28, &GSRasterizer::DrawScanlineEx<0x5110bc28>);
+ m_dsmap.SetAt(0x5114d468, &GSRasterizer::DrawScanlineEx<0x5114d468>);
+ m_dsmap.SetAt(0x5210bc28, &GSRasterizer::DrawScanlineEx<0x5210bc28>);
+ m_dsmap.SetAt(0x58911c18, &GSRasterizer::DrawScanlineEx<0x58911c18>);
+ m_dsmap.SetAt(0x5a10d468, &GSRasterizer::DrawScanlineEx<0x5a10d468>);
+ m_dsmap.SetAt(0x68510238, &GSRasterizer::DrawScanlineEx<0x68510238>);
+ m_dsmap.SetAt(0x68512218, &GSRasterizer::DrawScanlineEx<0x68512218>);
// tomoyo after
- m_dsmap[0x445044d8] = &GSRasterizer::DrawScanlineEx<0x445044d8>;
- m_dsmap[0x00004438] = &GSRasterizer::DrawScanlineEx<0x00004438>;
- m_dsmap[0x485058d8] = &GSRasterizer::DrawScanlineEx<0x485058d8>;
- m_dsmap[0x425078d8] = &GSRasterizer::DrawScanlineEx<0x425078d8>;
- m_dsmap[0x445058d8] = &GSRasterizer::DrawScanlineEx<0x445058d8>;
- m_dsmap[0x425044d8] = &GSRasterizer::DrawScanlineEx<0x425044d8>;
- m_dsmap[0x445078d8] = &GSRasterizer::DrawScanlineEx<0x445078d8>;
- m_dsmap[0x545058d8] = &GSRasterizer::DrawScanlineEx<0x545058d8>;
- m_dsmap[0x00007839] = &GSRasterizer::DrawScanlineEx<0x00007839>;
- m_dsmap[0x00004418] = &GSRasterizer::DrawScanlineEx<0x00004418>;
- m_dsmap[0x0000441b] = &GSRasterizer::DrawScanlineEx<0x0000441b>;
- m_dsmap[0x845044d8] = &GSRasterizer::DrawScanlineEx<0x845044d8>;
- m_dsmap[0x00005839] = &GSRasterizer::DrawScanlineEx<0x00005839>;
+ m_dsmap.SetAt(0x0000220a, &GSRasterizer::DrawScanlineEx<0x0000220a>);
+ m_dsmap.SetAt(0x00002c19, &GSRasterizer::DrawScanlineEx<0x00002c19>);
+ m_dsmap.SetAt(0x00003c19, &GSRasterizer::DrawScanlineEx<0x00003c19>);
+ m_dsmap.SetAt(0x50902268, &GSRasterizer::DrawScanlineEx<0x50902268>);
+ m_dsmap.SetAt(0x50903c68, &GSRasterizer::DrawScanlineEx<0x50903c68>);
+ m_dsmap.SetAt(0x51102c68, &GSRasterizer::DrawScanlineEx<0x51102c68>);
+ m_dsmap.SetAt(0x51103c68, &GSRasterizer::DrawScanlineEx<0x51103c68>);
+ m_dsmap.SetAt(0x52102c68, &GSRasterizer::DrawScanlineEx<0x52102c68>);
+ m_dsmap.SetAt(0x55102c68, &GSRasterizer::DrawScanlineEx<0x55102c68>);
// okami
- m_dsmap[0x44504438] = &GSRasterizer::DrawScanlineEx<0x44504438>;
- m_dsmap[0x44507918] = &GSRasterizer::DrawScanlineEx<0x44507918>;
- m_dsmap[0x445984d8] = &GSRasterizer::DrawScanlineEx<0x445984d8>;
- m_dsmap[0x64507118] = &GSRasterizer::DrawScanlineEx<0x64507118>;
- m_dsmap[0x4451a838] = &GSRasterizer::DrawScanlineEx<0x4451a838>;
- m_dsmap[0x445228d8] = &GSRasterizer::DrawScanlineEx<0x445228d8>;
- m_dsmap[0x4851a858] = &GSRasterizer::DrawScanlineEx<0x4851a858>;
- m_dsmap[0x00107918] = &GSRasterizer::DrawScanlineEx<0x00107918>;
- m_dsmap[0x00007918] = &GSRasterizer::DrawScanlineEx<0x00007918>;
- m_dsmap[0x62507918] = &GSRasterizer::DrawScanlineEx<0x62507918>;
- m_dsmap[0x44505818] = &GSRasterizer::DrawScanlineEx<0x44505818>;
- m_dsmap[0x4451b838] = &GSRasterizer::DrawScanlineEx<0x4451b838>;
- m_dsmap[0x00105958] = &GSRasterizer::DrawScanlineEx<0x00105958>;
- m_dsmap[0x4451a858] = &GSRasterizer::DrawScanlineEx<0x4451a858>;
- m_dsmap[0x29505838] = &GSRasterizer::DrawScanlineEx<0x29505838>;
- m_dsmap[0x44504478] = &GSRasterizer::DrawScanlineEx<0x44504478>;
- m_dsmap[0x485a28d8] = &GSRasterizer::DrawScanlineEx<0x485a28d8>;
- m_dsmap[0x00106118] = &GSRasterizer::DrawScanlineEx<0x00106118>;
- m_dsmap[0x00005838] = &GSRasterizer::DrawScanlineEx<0x00005838>;
- m_dsmap[0x44506838] = &GSRasterizer::DrawScanlineEx<0x44506838>;
- m_dsmap[0x64507918] = &GSRasterizer::DrawScanlineEx<0x64507918>;
- m_dsmap[0x89507918] = &GSRasterizer::DrawScanlineEx<0x89507918>;
- m_dsmap[0x54507818] = &GSRasterizer::DrawScanlineEx<0x54507818>;
- m_dsmap[0x68507118] = &GSRasterizer::DrawScanlineEx<0x68507118>;
- m_dsmap[0x00105918] = &GSRasterizer::DrawScanlineEx<0x00105918>;
- m_dsmap[0x0010591a] = &GSRasterizer::DrawScanlineEx<0x0010591a>;
- m_dsmap[0x00005918] = &GSRasterizer::DrawScanlineEx<0x00005918>;
-
// shadow of the colossus
- m_dsmap[0x445398c8] = &GSRasterizer::DrawScanlineEx<0x445398c8>;
- m_dsmap[0x48523828] = &GSRasterizer::DrawScanlineEx<0x48523828>;
- m_dsmap[0x445a68c8] = &GSRasterizer::DrawScanlineEx<0x445a68c8>;
- m_dsmap[0x00021828] = &GSRasterizer::DrawScanlineEx<0x00021828>;
- m_dsmap[0x64520428] = &GSRasterizer::DrawScanlineEx<0x64520428>;
- m_dsmap[0x445328c8] = &GSRasterizer::DrawScanlineEx<0x445328c8>;
- m_dsmap[0x68520448] = &GSRasterizer::DrawScanlineEx<0x68520448>;
- m_dsmap[0x425a28c8] = &GSRasterizer::DrawScanlineEx<0x425a28c8>;
- m_dsmap[0x445238c8] = &GSRasterizer::DrawScanlineEx<0x445238c8>;
- m_dsmap[0x4453b8c8] = &GSRasterizer::DrawScanlineEx<0x4453b8c8>;
- m_dsmap[0x48520428] = &GSRasterizer::DrawScanlineEx<0x48520428>;
- m_dsmap[0x4453a848] = &GSRasterizer::DrawScanlineEx<0x4453a848>;
- m_dsmap[0x44723848] = &GSRasterizer::DrawScanlineEx<0x44723848>;
- m_dsmap[0x485a28c8] = &GSRasterizer::DrawScanlineEx<0x485a28c8>;
- m_dsmap[0x000204a8] = &GSRasterizer::DrawScanlineEx<0x000204a8>;
- m_dsmap[0x449a28c8] = &GSRasterizer::DrawScanlineEx<0x449a28c8>;
- m_dsmap[0x4453b848] = &GSRasterizer::DrawScanlineEx<0x4453b848>;
- m_dsmap[0x445a28c8] = &GSRasterizer::DrawScanlineEx<0x445a28c8>;
- m_dsmap[0x445368c8] = &GSRasterizer::DrawScanlineEx<0x445368c8>;
- m_dsmap[0x44523028] = &GSRasterizer::DrawScanlineEx<0x44523028>;
- m_dsmap[0x00020428] = &GSRasterizer::DrawScanlineEx<0x00020428>;
- m_dsmap[0x44540428] = &GSRasterizer::DrawScanlineEx<0x44540428>;
- m_dsmap[0x00005009] = &GSRasterizer::DrawScanlineEx<0x00005009>;
- m_dsmap[0x00018448] = &GSRasterizer::DrawScanlineEx<0x00018448>;
- m_dsmap[0x00020448] = &GSRasterizer::DrawScanlineEx<0x00020448>;
- m_dsmap[0x54523028] = &GSRasterizer::DrawScanlineEx<0x54523028>;
- m_dsmap[0x44521828] = &GSRasterizer::DrawScanlineEx<0x44521828>;
- m_dsmap[0x445a20c8] = &GSRasterizer::DrawScanlineEx<0x445a20c8>;
- m_dsmap[0x00004420] = &GSRasterizer::DrawScanlineEx<0x00004420>;
- m_dsmap[0x44538848] = &GSRasterizer::DrawScanlineEx<0x44538848>;
- m_dsmap[0x00023829] = &GSRasterizer::DrawScanlineEx<0x00023829>;
- m_dsmap[0x485a69c8] = &GSRasterizer::DrawScanlineEx<0x485a69c8>;
- m_dsmap[0x44539848] = &GSRasterizer::DrawScanlineEx<0x44539848>;
- m_dsmap[0x44520428] = &GSRasterizer::DrawScanlineEx<0x44520428>;
- m_dsmap[0x60527048] = &GSRasterizer::DrawScanlineEx<0x60527048>;
- m_dsmap[0x44523828] = &GSRasterizer::DrawScanlineEx<0x44523828>;
- m_dsmap[0x00023828] = &GSRasterizer::DrawScanlineEx<0x00023828>;
- m_dsmap[0x445204a8] = &GSRasterizer::DrawScanlineEx<0x445204a8>;
- m_dsmap[0x445268a8] = &GSRasterizer::DrawScanlineEx<0x445268a8>;
- m_dsmap[0x48520448] = &GSRasterizer::DrawScanlineEx<0x48520448>;
- m_dsmap[0x4453a8c8] = &GSRasterizer::DrawScanlineEx<0x4453a8c8>;
- m_dsmap[0x445968c8] = &GSRasterizer::DrawScanlineEx<0x445968c8>;
- m_dsmap[0x485b68c8] = &GSRasterizer::DrawScanlineEx<0x485b68c8>;
- m_dsmap[0x445b68c8] = &GSRasterizer::DrawScanlineEx<0x445b68c8>;
- m_dsmap[0x445b44c8] = &GSRasterizer::DrawScanlineEx<0x445b44c8>;
+ m_dsmap.SetAt(0x00002210, &GSRasterizer::DrawScanlineEx<0x00002210>);
+ m_dsmap.SetAt(0x00002805, &GSRasterizer::DrawScanlineEx<0x00002805>);
+ m_dsmap.SetAt(0x00010214, &GSRasterizer::DrawScanlineEx<0x00010214>);
+ m_dsmap.SetAt(0x00010224, &GSRasterizer::DrawScanlineEx<0x00010224>);
+ m_dsmap.SetAt(0x00010254, &GSRasterizer::DrawScanlineEx<0x00010254>);
+ m_dsmap.SetAt(0x00010264, &GSRasterizer::DrawScanlineEx<0x00010264>);
+ m_dsmap.SetAt(0x00011c15, &GSRasterizer::DrawScanlineEx<0x00011c15>);
+ m_dsmap.SetAt(0x50951464, &GSRasterizer::DrawScanlineEx<0x50951464>);
+ m_dsmap.SetAt(0x51111814, &GSRasterizer::DrawScanlineEx<0x51111814>);
+ m_dsmap.SetAt(0x51111c64, &GSRasterizer::DrawScanlineEx<0x51111c64>);
+ m_dsmap.SetAt(0x51119464, &GSRasterizer::DrawScanlineEx<0x51119464>);
+ m_dsmap.SetAt(0x5111cc64, &GSRasterizer::DrawScanlineEx<0x5111cc64>);
+ m_dsmap.SetAt(0x5111dc24, &GSRasterizer::DrawScanlineEx<0x5111dc24>);
+ m_dsmap.SetAt(0x5111dc64, &GSRasterizer::DrawScanlineEx<0x5111dc64>);
+ m_dsmap.SetAt(0x51120214, &GSRasterizer::DrawScanlineEx<0x51120214>);
+ m_dsmap.SetAt(0x51151064, &GSRasterizer::DrawScanlineEx<0x51151064>);
+ m_dsmap.SetAt(0x51153464, &GSRasterizer::DrawScanlineEx<0x51153464>);
+ m_dsmap.SetAt(0x51191c24, &GSRasterizer::DrawScanlineEx<0x51191c24>);
+ m_dsmap.SetAt(0x51251464, &GSRasterizer::DrawScanlineEx<0x51251464>);
+ m_dsmap.SetAt(0x52110214, &GSRasterizer::DrawScanlineEx<0x52110214>);
+ m_dsmap.SetAt(0x52110254, &GSRasterizer::DrawScanlineEx<0x52110254>);
+ m_dsmap.SetAt(0x52111c14, &GSRasterizer::DrawScanlineEx<0x52111c14>);
+ m_dsmap.SetAt(0x52151464, &GSRasterizer::DrawScanlineEx<0x52151464>);
+ m_dsmap.SetAt(0x55111814, &GSRasterizer::DrawScanlineEx<0x55111814>);
+ m_dsmap.SetAt(0x59110214, &GSRasterizer::DrawScanlineEx<0x59110214>);
+ m_dsmap.SetAt(0x5a110224, &GSRasterizer::DrawScanlineEx<0x5a110224>);
// mgs3s1
- m_dsmap[0x2a52102d] = &GSRasterizer::DrawScanlineEx<0x2a52102d>;
- m_dsmap[0x445344c8] = &GSRasterizer::DrawScanlineEx<0x445344c8>;
- m_dsmap[0x48534448] = &GSRasterizer::DrawScanlineEx<0x48534448>;
- m_dsmap[0x64523028] = &GSRasterizer::DrawScanlineEx<0x64523028>;
- m_dsmap[0x2a523028] = &GSRasterizer::DrawScanlineEx<0x2a523028>;
- m_dsmap[0x4452a848] = &GSRasterizer::DrawScanlineEx<0x4452a848>;
- m_dsmap[0x44534448] = &GSRasterizer::DrawScanlineEx<0x44534448>;
- m_dsmap[0x0002383a] = &GSRasterizer::DrawScanlineEx<0x0002383a>;
- m_dsmap[0x44535848] = &GSRasterizer::DrawScanlineEx<0x44535848>;
- m_dsmap[0x6a520468] = &GSRasterizer::DrawScanlineEx<0x6a520468>;
- m_dsmap[0x44560428] = &GSRasterizer::DrawScanlineEx<0x44560428>;
- m_dsmap[0x48537848] = &GSRasterizer::DrawScanlineEx<0x48537848>;
- m_dsmap[0x44536848] = &GSRasterizer::DrawScanlineEx<0x44536848>;
- m_dsmap[0x64563068] = &GSRasterizer::DrawScanlineEx<0x64563068>;
- m_dsmap[0x44537848] = &GSRasterizer::DrawScanlineEx<0x44537848>;
-
// 12riven
- m_dsmap[0x44505898] = &GSRasterizer::DrawScanlineEx<0x44505898>;
- m_dsmap[0x44507818] = &GSRasterizer::DrawScanlineEx<0x44507818>;
- m_dsmap[0x44504498] = &GSRasterizer::DrawScanlineEx<0x44504498>;
- m_dsmap[0x64505818] = &GSRasterizer::DrawScanlineEx<0x64505818>;
- m_dsmap[0x44504418] = &GSRasterizer::DrawScanlineEx<0x44504418>;
+ m_dsmap.SetAt(0x51102208, &GSRasterizer::DrawScanlineEx<0x51102208>);
+ m_dsmap.SetAt(0x51102c08, &GSRasterizer::DrawScanlineEx<0x51102c08>);
+ m_dsmap.SetAt(0x51102c48, &GSRasterizer::DrawScanlineEx<0x51102c48>);
+ m_dsmap.SetAt(0x51103c08, &GSRasterizer::DrawScanlineEx<0x51103c08>);
// persona 3 fes
- m_dsmap[0x445868d8] = &GSRasterizer::DrawScanlineEx<0x445868d8>;
- m_dsmap[0x445244d8] = &GSRasterizer::DrawScanlineEx<0x445244d8>;
- m_dsmap[0x6a536898] = &GSRasterizer::DrawScanlineEx<0x6a536898>;
- m_dsmap[0x445b68d8] = &GSRasterizer::DrawScanlineEx<0x445b68d8>;
- m_dsmap[0x000244d8] = &GSRasterizer::DrawScanlineEx<0x000244d8>;
- m_dsmap[0x4453a8d8] = &GSRasterizer::DrawScanlineEx<0x4453a8d8>;
- m_dsmap[0x00124438] = &GSRasterizer::DrawScanlineEx<0x00124438>;
- m_dsmap[0x44536898] = &GSRasterizer::DrawScanlineEx<0x44536898>;
- m_dsmap[0x58536898] = &GSRasterizer::DrawScanlineEx<0x58536898>;
- m_dsmap[0x445f68d8] = &GSRasterizer::DrawScanlineEx<0x445f68d8>;
- m_dsmap[0x445348d8] = &GSRasterizer::DrawScanlineEx<0x445348d8>;
- m_dsmap[0x44520898] = &GSRasterizer::DrawScanlineEx<0x44520898>;
- m_dsmap[0x48522898] = &GSRasterizer::DrawScanlineEx<0x48522898>;
- m_dsmap[0x445a44d8] = &GSRasterizer::DrawScanlineEx<0x445a44d8>;
- m_dsmap[0x445368d8] = &GSRasterizer::DrawScanlineEx<0x445368d8>;
- m_dsmap[0x44524498] = &GSRasterizer::DrawScanlineEx<0x44524498>;
- m_dsmap[0x42520498] = &GSRasterizer::DrawScanlineEx<0x42520498>;
- m_dsmap[0x00024498] = &GSRasterizer::DrawScanlineEx<0x00024498>;
- m_dsmap[0x485228d8] = &GSRasterizer::DrawScanlineEx<0x485228d8>;
- m_dsmap[0x48520498] = &GSRasterizer::DrawScanlineEx<0x48520498>;
- m_dsmap[0x44534898] = &GSRasterizer::DrawScanlineEx<0x44534898>;
- m_dsmap[0x685868d8] = &GSRasterizer::DrawScanlineEx<0x685868d8>;
- m_dsmap[0x00304498] = &GSRasterizer::DrawScanlineEx<0x00304498>;
- m_dsmap[0x445c28d8] = &GSRasterizer::DrawScanlineEx<0x445c28d8>;
- m_dsmap[0x00034498] = &GSRasterizer::DrawScanlineEx<0x00034498>;
+ m_dsmap.SetAt(0x00002248, &GSRasterizer::DrawScanlineEx<0x00002248>);
+ m_dsmap.SetAt(0x00002268, &GSRasterizer::DrawScanlineEx<0x00002268>);
+ m_dsmap.SetAt(0x0001a228, &GSRasterizer::DrawScanlineEx<0x0001a228>);
+ m_dsmap.SetAt(0x4001a22b, &GSRasterizer::DrawScanlineEx<0x4001a22b>);
+ m_dsmap.SetAt(0x51110448, &GSRasterizer::DrawScanlineEx<0x51110448>);
+ m_dsmap.SetAt(0x51111468, &GSRasterizer::DrawScanlineEx<0x51111468>);
+ m_dsmap.SetAt(0x5111a068, &GSRasterizer::DrawScanlineEx<0x5111a068>);
+ m_dsmap.SetAt(0x5111a0e8, &GSRasterizer::DrawScanlineEx<0x5111a0e8>);
+ m_dsmap.SetAt(0x5111a168, &GSRasterizer::DrawScanlineEx<0x5111a168>);
// bully
- m_dsmap[0x00024408] = &GSRasterizer::DrawScanlineEx<0x00024408>;
- m_dsmap[0x00007828] = &GSRasterizer::DrawScanlineEx<0x00007828>;
- m_dsmap[0x44537808] = &GSRasterizer::DrawScanlineEx<0x44537808>;
- m_dsmap[0x445244c8] = &GSRasterizer::DrawScanlineEx<0x445244c8>;
- m_dsmap[0x445b48c8] = &GSRasterizer::DrawScanlineEx<0x445b48c8>;
- m_dsmap[0x00107108] = &GSRasterizer::DrawScanlineEx<0x00107108>;
- m_dsmap[0x00024488] = &GSRasterizer::DrawScanlineEx<0x00024488>;
- m_dsmap[0x68537808] = &GSRasterizer::DrawScanlineEx<0x68537808>;
- m_dsmap[0x44537888] = &GSRasterizer::DrawScanlineEx<0x44537888>;
- m_dsmap[0x8859a8c8] = &GSRasterizer::DrawScanlineEx<0x8859a8c8>;
- m_dsmap[0xa4504409] = &GSRasterizer::DrawScanlineEx<0xa4504409>;
- m_dsmap[0x485368c8] = &GSRasterizer::DrawScanlineEx<0x485368c8>;
- m_dsmap[0x000244c8] = &GSRasterizer::DrawScanlineEx<0x000244c8>;
- m_dsmap[0x68537848] = &GSRasterizer::DrawScanlineEx<0x68537848>;
- m_dsmap[0x54507908] = &GSRasterizer::DrawScanlineEx<0x54507908>;
- m_dsmap[0x68507108] = &GSRasterizer::DrawScanlineEx<0x68507108>;
- m_dsmap[0xa850590b] = &GSRasterizer::DrawScanlineEx<0xa850590b>;
- m_dsmap[0x4a524428] = &GSRasterizer::DrawScanlineEx<0x4a524428>;
- m_dsmap[0x68537888] = &GSRasterizer::DrawScanlineEx<0x68537888>;
- m_dsmap[0x00124408] = &GSRasterizer::DrawScanlineEx<0x00124408>;
- m_dsmap[0x685378c8] = &GSRasterizer::DrawScanlineEx<0x685378c8>;
- m_dsmap[0x68536888] = &GSRasterizer::DrawScanlineEx<0x68536888>;
- m_dsmap[0x00124428] = &GSRasterizer::DrawScanlineEx<0x00124428>;
- m_dsmap[0x61504408] = &GSRasterizer::DrawScanlineEx<0x61504408>;
- m_dsmap[0x44524408] = &GSRasterizer::DrawScanlineEx<0x44524408>;
- m_dsmap[0x685368c8] = &GSRasterizer::DrawScanlineEx<0x685368c8>;
- m_dsmap[0x48505008] = &GSRasterizer::DrawScanlineEx<0x48505008>;
- m_dsmap[0x00140469] = &GSRasterizer::DrawScanlineEx<0x00140469>;
- m_dsmap[0x44524488] = &GSRasterizer::DrawScanlineEx<0x44524488>;
- m_dsmap[0x00007808] = &GSRasterizer::DrawScanlineEx<0x00007808>;
-
// nfs mw
- m_dsmap[0x445168d2] = &GSRasterizer::DrawScanlineEx<0x445168d2>;
- m_dsmap[0x445168d8] = &GSRasterizer::DrawScanlineEx<0x445168d8>;
- m_dsmap[0x64507818] = &GSRasterizer::DrawScanlineEx<0x64507818>;
- m_dsmap[0x6450781b] = &GSRasterizer::DrawScanlineEx<0x6450781b>;
- m_dsmap[0x64507018] = &GSRasterizer::DrawScanlineEx<0x64507018>;
- m_dsmap[0x585068c8] = &GSRasterizer::DrawScanlineEx<0x585068c8>;
- m_dsmap[0x00120418] = &GSRasterizer::DrawScanlineEx<0x00120418>;
- m_dsmap[0x585068d8] = &GSRasterizer::DrawScanlineEx<0x585068d8>;
- m_dsmap[0x40521818] = &GSRasterizer::DrawScanlineEx<0x40521818>;
- m_dsmap[0x0a51a8d2] = &GSRasterizer::DrawScanlineEx<0x0a51a8d2>;
- m_dsmap[0x49507808] = &GSRasterizer::DrawScanlineEx<0x49507808>;
- m_dsmap[0x00105948] = &GSRasterizer::DrawScanlineEx<0x00105948>;
- m_dsmap[0x00004432] = &GSRasterizer::DrawScanlineEx<0x00004432>;
- m_dsmap[0x585044c8] = &GSRasterizer::DrawScanlineEx<0x585044c8>;
- m_dsmap[0x0000443b] = &GSRasterizer::DrawScanlineEx<0x0000443b>;
- m_dsmap[0x0012191a] = &GSRasterizer::DrawScanlineEx<0x0012191a>;
- m_dsmap[0xa1504418] = &GSRasterizer::DrawScanlineEx<0xa1504418>;
- m_dsmap[0xa150441b] = &GSRasterizer::DrawScanlineEx<0xa150441b>;
- m_dsmap[0x48516848] = &GSRasterizer::DrawScanlineEx<0x48516848>;
- m_dsmap[0x585044d8] = &GSRasterizer::DrawScanlineEx<0x585044d8>;
- m_dsmap[0x54523918] = &GSRasterizer::DrawScanlineEx<0x54523918>;
- m_dsmap[0x68523918] = &GSRasterizer::DrawScanlineEx<0x68523918>;
- m_dsmap[0x00020418] = &GSRasterizer::DrawScanlineEx<0x00020418>;
- m_dsmap[0x44516812] = &GSRasterizer::DrawScanlineEx<0x44516812>;
- m_dsmap[0x68517818] = &GSRasterizer::DrawScanlineEx<0x68517818>;
- m_dsmap[0x89507908] = &GSRasterizer::DrawScanlineEx<0x89507908>;
- m_dsmap[0x44516848] = &GSRasterizer::DrawScanlineEx<0x44516848>;
- m_dsmap[0x485168c8] = &GSRasterizer::DrawScanlineEx<0x485168c8>;
- m_dsmap[0x0a51689b] = &GSRasterizer::DrawScanlineEx<0x0a51689b>;
- m_dsmap[0x485168d2] = &GSRasterizer::DrawScanlineEx<0x485168d2>;
- m_dsmap[0x485168d8] = &GSRasterizer::DrawScanlineEx<0x485168d8>;
- m_dsmap[0x0a5168c8] = &GSRasterizer::DrawScanlineEx<0x0a5168c8>;
- m_dsmap[0x0a5168d2] = &GSRasterizer::DrawScanlineEx<0x0a5168d2>;
- m_dsmap[0x0a5168d8] = &GSRasterizer::DrawScanlineEx<0x0a5168d8>;
- m_dsmap[0x68507818] = &GSRasterizer::DrawScanlineEx<0x68507818>;
- m_dsmap[0x44507898] = &GSRasterizer::DrawScanlineEx<0x44507898>;
- m_dsmap[0x445168c8] = &GSRasterizer::DrawScanlineEx<0x445168c8>;
- m_dsmap[0x585168c8] = &GSRasterizer::DrawScanlineEx<0x585168c8>;
-
// xenosaga
- m_dsmap[0x64510868] = &GSRasterizer::DrawScanlineEx<0x64510868>;
- m_dsmap[0x4450e8c8] = &GSRasterizer::DrawScanlineEx<0x4450e8c8>;
- m_dsmap[0x001068c8] = &GSRasterizer::DrawScanlineEx<0x001068c8>;
- m_dsmap[0x00507828] = &GSRasterizer::DrawScanlineEx<0x00507828>;
- m_dsmap[0x44505868] = &GSRasterizer::DrawScanlineEx<0x44505868>;
- m_dsmap[0x00007868] = &GSRasterizer::DrawScanlineEx<0x00007868>;
- m_dsmap[0x685168c8] = &GSRasterizer::DrawScanlineEx<0x685168c8>;
- m_dsmap[0x445068c8] = &GSRasterizer::DrawScanlineEx<0x445068c8>;
- m_dsmap[0xa9504448] = &GSRasterizer::DrawScanlineEx<0xa9504448>;
- m_dsmap[0x44519828] = &GSRasterizer::DrawScanlineEx<0x44519828>;
- m_dsmap[0x4251a848] = &GSRasterizer::DrawScanlineEx<0x4251a848>;
- m_dsmap[0x44504468] = &GSRasterizer::DrawScanlineEx<0x44504468>;
- m_dsmap[0x44519848] = &GSRasterizer::DrawScanlineEx<0x44519848>;
- m_dsmap[0x00120468] = &GSRasterizer::DrawScanlineEx<0x00120468>;
- m_dsmap[0x00021808] = &GSRasterizer::DrawScanlineEx<0x00021808>;
- m_dsmap[0x44519868] = &GSRasterizer::DrawScanlineEx<0x44519868>;
- m_dsmap[0x685068c8] = &GSRasterizer::DrawScanlineEx<0x685068c8>;
- m_dsmap[0x605184e8] = &GSRasterizer::DrawScanlineEx<0x605184e8>;
- m_dsmap[0x001044c8] = &GSRasterizer::DrawScanlineEx<0x001044c8>;
- m_dsmap[0x00005868] = &GSRasterizer::DrawScanlineEx<0x00005868>;
- m_dsmap[0x68519828] = &GSRasterizer::DrawScanlineEx<0x68519828>;
- m_dsmap[0x445044c8] = &GSRasterizer::DrawScanlineEx<0x445044c8>;
- m_dsmap[0x68520428] = &GSRasterizer::DrawScanlineEx<0x68520428>;
- m_dsmap[0x485184c8] = &GSRasterizer::DrawScanlineEx<0x485184c8>;
- m_dsmap[0x445044e8] = &GSRasterizer::DrawScanlineEx<0x445044e8>;
- m_dsmap[0x445198c8] = &GSRasterizer::DrawScanlineEx<0x445198c8>;
- m_dsmap[0x645068c8] = &GSRasterizer::DrawScanlineEx<0x645068c8>;
- m_dsmap[0x29519828] = &GSRasterizer::DrawScanlineEx<0x29519828>;
- m_dsmap[0x00519828] = &GSRasterizer::DrawScanlineEx<0x00519828>;
- m_dsmap[0x625068c8] = &GSRasterizer::DrawScanlineEx<0x625068c8>;
- m_dsmap[0x89522868] = &GSRasterizer::DrawScanlineEx<0x89522868>;
- m_dsmap[0x685044c8] = &GSRasterizer::DrawScanlineEx<0x685044c8>;
- m_dsmap[0x00519848] = &GSRasterizer::DrawScanlineEx<0x00519848>;
- m_dsmap[0x00020468] = &GSRasterizer::DrawScanlineEx<0x00020468>;
- m_dsmap[0x445184c8] = &GSRasterizer::DrawScanlineEx<0x445184c8>;
- m_dsmap[0x00107868] = &GSRasterizer::DrawScanlineEx<0x00107868>;
- m_dsmap[0x00519868] = &GSRasterizer::DrawScanlineEx<0x00519868>;
- m_dsmap[0x445604c8] = &GSRasterizer::DrawScanlineEx<0x445604c8>;
- m_dsmap[0x00518428] = &GSRasterizer::DrawScanlineEx<0x00518428>;
- m_dsmap[0x64561868] = &GSRasterizer::DrawScanlineEx<0x64561868>;
- m_dsmap[0x001168c8] = &GSRasterizer::DrawScanlineEx<0x001168c8>;
- m_dsmap[0x11519868] = &GSRasterizer::DrawScanlineEx<0x11519868>;
- m_dsmap[0x44507068] = &GSRasterizer::DrawScanlineEx<0x44507068>;
- m_dsmap[0x4451b828] = &GSRasterizer::DrawScanlineEx<0x4451b828>;
+ m_dsmap.SetAt(0x4000b464, &GSRasterizer::DrawScanlineEx<0x4000b464>);
+ m_dsmap.SetAt(0x5a110214, &GSRasterizer::DrawScanlineEx<0x5a110214>);
+ m_dsmap.SetAt(0x00010234, &GSRasterizer::DrawScanlineEx<0x00010234>);
+ m_dsmap.SetAt(0x5210d424, &GSRasterizer::DrawScanlineEx<0x5210d424>);
+ m_dsmap.SetAt(0x4450cc34, &GSRasterizer::DrawScanlineEx<0x4450cc34>);
+ m_dsmap.SetAt(0x5810c274, &GSRasterizer::DrawScanlineEx<0x5810c274>);
+ m_dsmap.SetAt(0x5090d424, &GSRasterizer::DrawScanlineEx<0x5090d424>);
+ m_dsmap.SetAt(0x51103464, &GSRasterizer::DrawScanlineEx<0x51103464>);
+ m_dsmap.SetAt(0x51130264, &GSRasterizer::DrawScanlineEx<0x51130264>);
+ m_dsmap.SetAt(0x4010cc34, &GSRasterizer::DrawScanlineEx<0x4010cc34>);
+ m_dsmap.SetAt(0x51107464, &GSRasterizer::DrawScanlineEx<0x51107464>);
+ m_dsmap.SetAt(0x00002c34, &GSRasterizer::DrawScanlineEx<0x00002c34>);
+ m_dsmap.SetAt(0x5a103464, &GSRasterizer::DrawScanlineEx<0x5a103464>);
+ m_dsmap.SetAt(0x5a102264, &GSRasterizer::DrawScanlineEx<0x5a102264>);
+ m_dsmap.SetAt(0x40003464, &GSRasterizer::DrawScanlineEx<0x40003464>);
+ m_dsmap.SetAt(0x51103834, &GSRasterizer::DrawScanlineEx<0x51103834>);
+ m_dsmap.SetAt(0x40002264, &GSRasterizer::DrawScanlineEx<0x40002264>);
+ m_dsmap.SetAt(0x59108434, &GSRasterizer::DrawScanlineEx<0x59108434>);
+ m_dsmap.SetAt(0x40010234, &GSRasterizer::DrawScanlineEx<0x40010234>);
// mana khemia
- m_dsmap[0x44505819] = &GSRasterizer::DrawScanlineEx<0x44505819>;
- m_dsmap[0x44505839] = &GSRasterizer::DrawScanlineEx<0x44505839>;
- m_dsmap[0x44504419] = &GSRasterizer::DrawScanlineEx<0x44504419>;
- m_dsmap[0x44585819] = &GSRasterizer::DrawScanlineEx<0x44585819>;
- m_dsmap[0x00004439] = &GSRasterizer::DrawScanlineEx<0x00004439>;
- m_dsmap[0x445b7859] = &GSRasterizer::DrawScanlineEx<0x445b7859>;
- m_dsmap[0x44507819] = &GSRasterizer::DrawScanlineEx<0x44507819>;
- m_dsmap[0x445b68d9] = &GSRasterizer::DrawScanlineEx<0x445b68d9>;
- m_dsmap[0x485b68d9] = &GSRasterizer::DrawScanlineEx<0x485b68d9>;
- m_dsmap[0x485b7859] = &GSRasterizer::DrawScanlineEx<0x485b7859>;
- m_dsmap[0x48584899] = &GSRasterizer::DrawScanlineEx<0x48584899>;
- m_dsmap[0x48507819] = &GSRasterizer::DrawScanlineEx<0x48507819>;
- m_dsmap[0x48505819] = &GSRasterizer::DrawScanlineEx<0x48505819>;
-
// Gundam Seed Destiny OMNI VS ZAFT II PLUS
- m_dsmap[0x00024409] = &GSRasterizer::DrawScanlineEx<0x00024409>;
- m_dsmap[0x00024429] = &GSRasterizer::DrawScanlineEx<0x00024429>;
- m_dsmap[0x44506889] = &GSRasterizer::DrawScanlineEx<0x44506889>;
- m_dsmap[0x000b68e9] = &GSRasterizer::DrawScanlineEx<0x000b68e9>;
- m_dsmap[0x485368e9] = &GSRasterizer::DrawScanlineEx<0x485368e9>;
- m_dsmap[0x44535869] = &GSRasterizer::DrawScanlineEx<0x44535869>;
- m_dsmap[0x445368e9] = &GSRasterizer::DrawScanlineEx<0x445368e9>;
- m_dsmap[0x44507809] = &GSRasterizer::DrawScanlineEx<0x44507809>;
- m_dsmap[0x485b68e9] = &GSRasterizer::DrawScanlineEx<0x485b68e9>;
- m_dsmap[0x00035869] = &GSRasterizer::DrawScanlineEx<0x00035869>;
- m_dsmap[0x48506889] = &GSRasterizer::DrawScanlineEx<0x48506889>;
- m_dsmap[0x000368e9] = &GSRasterizer::DrawScanlineEx<0x000368e9>;
- m_dsmap[0x445b68e9] = &GSRasterizer::DrawScanlineEx<0x445b68e9>;
- m_dsmap[0x48504409] = &GSRasterizer::DrawScanlineEx<0x48504409>;
- m_dsmap[0x44505809] = &GSRasterizer::DrawScanlineEx<0x44505809>;
- m_dsmap[0x48537869] = &GSRasterizer::DrawScanlineEx<0x48537869>;
- m_dsmap[0x44504409] = &GSRasterizer::DrawScanlineEx<0x44504409>;
- m_dsmap[0x44504489] = &GSRasterizer::DrawScanlineEx<0x44504489>;
- m_dsmap[0x0010510a] = &GSRasterizer::DrawScanlineEx<0x0010510a>;
- m_dsmap[0x000b6be9] = &GSRasterizer::DrawScanlineEx<0x000b6be9>;
+ m_dsmap.SetAt(0x00012205, &GSRasterizer::DrawScanlineEx<0x00012205>);
+ m_dsmap.SetAt(0x00012215, &GSRasterizer::DrawScanlineEx<0x00012215>);
+ m_dsmap.SetAt(0x0001b475, &GSRasterizer::DrawScanlineEx<0x0001b475>);
+ m_dsmap.SetAt(0x0005b475, &GSRasterizer::DrawScanlineEx<0x0005b475>);
+ m_dsmap.SetAt(0x51102c05, &GSRasterizer::DrawScanlineEx<0x51102c05>);
+ m_dsmap.SetAt(0x51103445, &GSRasterizer::DrawScanlineEx<0x51103445>);
+ m_dsmap.SetAt(0x51103c05, &GSRasterizer::DrawScanlineEx<0x51103c05>);
+ m_dsmap.SetAt(0x5115b475, &GSRasterizer::DrawScanlineEx<0x5115b475>);
+ m_dsmap.SetAt(0x52103445, &GSRasterizer::DrawScanlineEx<0x52103445>);
+ m_dsmap.SetAt(0x5215b475, &GSRasterizer::DrawScanlineEx<0x5215b475>);
// wild arms 5
- m_dsmap[0x485068c8] = &GSRasterizer::DrawScanlineEx<0x485068c8>;
- m_dsmap[0x445f68c8] = &GSRasterizer::DrawScanlineEx<0x445f68c8>;
- m_dsmap[0x4451b848] = &GSRasterizer::DrawScanlineEx<0x4451b848>;
- m_dsmap[0x42505808] = &GSRasterizer::DrawScanlineEx<0x42505808>;
- m_dsmap[0x00507800] = &GSRasterizer::DrawScanlineEx<0x00507800>;
- m_dsmap[0x44506888] = &GSRasterizer::DrawScanlineEx<0x44506888>;
- m_dsmap[0x44504808] = &GSRasterizer::DrawScanlineEx<0x44504808>;
- m_dsmap[0x00107928] = &GSRasterizer::DrawScanlineEx<0x00107928>;
- m_dsmap[0x00104448] = &GSRasterizer::DrawScanlineEx<0x00104448>;
- m_dsmap[0x68563808] = &GSRasterizer::DrawScanlineEx<0x68563808>;
- m_dsmap[0x44505888] = &GSRasterizer::DrawScanlineEx<0x44505888>;
- m_dsmap[0x6851b848] = &GSRasterizer::DrawScanlineEx<0x6851b848>;
- m_dsmap[0x425068c8] = &GSRasterizer::DrawScanlineEx<0x425068c8>;
- m_dsmap[0x44504888] = &GSRasterizer::DrawScanlineEx<0x44504888>;
- m_dsmap[0x465628c8] = &GSRasterizer::DrawScanlineEx<0x465628c8>;
- m_dsmap[0x00105928] = &GSRasterizer::DrawScanlineEx<0x00105928>;
- m_dsmap[0x585628c8] = &GSRasterizer::DrawScanlineEx<0x585628c8>;
- m_dsmap[0x445868c8] = &GSRasterizer::DrawScanlineEx<0x445868c8>;
- m_dsmap[0x44507808] = &GSRasterizer::DrawScanlineEx<0x44507808>;
- m_dsmap[0xa8507808] = &GSRasterizer::DrawScanlineEx<0xa8507808>;
- m_dsmap[0x000868c8] = &GSRasterizer::DrawScanlineEx<0x000868c8>;
- m_dsmap[0x00005924] = &GSRasterizer::DrawScanlineEx<0x00005924>;
- m_dsmap[0x48506888] = &GSRasterizer::DrawScanlineEx<0x48506888>;
- m_dsmap[0x68507808] = &GSRasterizer::DrawScanlineEx<0x68507808>;
- m_dsmap[0x645868c8] = &GSRasterizer::DrawScanlineEx<0x645868c8>;
- m_dsmap[0x44505808] = &GSRasterizer::DrawScanlineEx<0x44505808>;
-
// rouge galaxy
- m_dsmap[0x64507808] = &GSRasterizer::DrawScanlineEx<0x64507808>;
- m_dsmap[0x485968c8] = &GSRasterizer::DrawScanlineEx<0x485968c8>;
- m_dsmap[0x48504488] = &GSRasterizer::DrawScanlineEx<0x48504488>;
- m_dsmap[0x62507808] = &GSRasterizer::DrawScanlineEx<0x62507808>;
- m_dsmap[0x0001b808] = &GSRasterizer::DrawScanlineEx<0x0001b808>;
- m_dsmap[0x42504408] = &GSRasterizer::DrawScanlineEx<0x42504408>;
- m_dsmap[0x00304408] = &GSRasterizer::DrawScanlineEx<0x00304408>;
- m_dsmap[0x88507808] = &GSRasterizer::DrawScanlineEx<0x88507808>;
- m_dsmap[0x445960c8] = &GSRasterizer::DrawScanlineEx<0x445960c8>;
- m_dsmap[0x44517808] = &GSRasterizer::DrawScanlineEx<0x44517808>;
- m_dsmap[0x00107808] = &GSRasterizer::DrawScanlineEx<0x00107808>;
- m_dsmap[0x0010780a] = &GSRasterizer::DrawScanlineEx<0x0010780a>;
- m_dsmap[0x445944c8] = &GSRasterizer::DrawScanlineEx<0x445944c8>;
- m_dsmap[0x00009808] = &GSRasterizer::DrawScanlineEx<0x00009808>;
- m_dsmap[0x00005909] = &GSRasterizer::DrawScanlineEx<0x00005909>;
- m_dsmap[0x88507b08] = &GSRasterizer::DrawScanlineEx<0x88507b08>;
- m_dsmap[0x0010580a] = &GSRasterizer::DrawScanlineEx<0x0010580a>;
- m_dsmap[0x44507048] = &GSRasterizer::DrawScanlineEx<0x44507048>;
- m_dsmap[0x98504408] = &GSRasterizer::DrawScanlineEx<0x98504408>;
- m_dsmap[0x00007008] = &GSRasterizer::DrawScanlineEx<0x00007008>;
- m_dsmap[0x485144c8] = &GSRasterizer::DrawScanlineEx<0x485144c8>;
- m_dsmap[0x445144c8] = &GSRasterizer::DrawScanlineEx<0x445144c8>;
- m_dsmap[0x425144c8] = &GSRasterizer::DrawScanlineEx<0x425144c8>;
- m_dsmap[0x48505808] = &GSRasterizer::DrawScanlineEx<0x48505808>;
- m_dsmap[0x44507848] = &GSRasterizer::DrawScanlineEx<0x44507848>;
- m_dsmap[0x64517808] = &GSRasterizer::DrawScanlineEx<0x64517808>;
-
// tokyo bus guide
- m_dsmap[0x445a68a0] = &GSRasterizer::DrawScanlineEx<0x445a68a0>;
- m_dsmap[0x0009a8e0] = &GSRasterizer::DrawScanlineEx<0x0009a8e0>;
- m_dsmap[0x4451c4e0] = &GSRasterizer::DrawScanlineEx<0x4451c4e0>;
- m_dsmap[0x4459e8e0] = &GSRasterizer::DrawScanlineEx<0x4459e8e0>;
- m_dsmap[0x445228a0] = &GSRasterizer::DrawScanlineEx<0x445228a0>;
- m_dsmap[0x0001c460] = &GSRasterizer::DrawScanlineEx<0x0001c460>;
- m_dsmap[0x64506840] = &GSRasterizer::DrawScanlineEx<0x64506840>;
- m_dsmap[0x445228e0] = &GSRasterizer::DrawScanlineEx<0x445228e0>;
- m_dsmap[0x4451a8e0] = &GSRasterizer::DrawScanlineEx<0x4451a8e0>;
- m_dsmap[0x0009e8e0] = &GSRasterizer::DrawScanlineEx<0x0009e8e0>;
- m_dsmap[0x0001c4e0] = &GSRasterizer::DrawScanlineEx<0x0001c4e0>;
- m_dsmap[0x4451f860] = &GSRasterizer::DrawScanlineEx<0x4451f860>;
- m_dsmap[0x4451e860] = &GSRasterizer::DrawScanlineEx<0x4451e860>;
- m_dsmap[0x4459a8e0] = &GSRasterizer::DrawScanlineEx<0x4459a8e0>;
- m_dsmap[0x44540420] = &GSRasterizer::DrawScanlineEx<0x44540420>;
- m_dsmap[0x4451c460] = &GSRasterizer::DrawScanlineEx<0x4451c460>;
+ m_dsmap.SetAt(0x0000e230, &GSRasterizer::DrawScanlineEx<0x0000e230>);
+ m_dsmap.SetAt(0x0000e270, &GSRasterizer::DrawScanlineEx<0x0000e270>);
+ m_dsmap.SetAt(0x0004d470, &GSRasterizer::DrawScanlineEx<0x0004d470>);
+ m_dsmap.SetAt(0x0004f470, &GSRasterizer::DrawScanlineEx<0x0004f470>);
+ m_dsmap.SetAt(0x5110d470, &GSRasterizer::DrawScanlineEx<0x5110d470>);
+ m_dsmap.SetAt(0x5110e230, &GSRasterizer::DrawScanlineEx<0x5110e230>);
+ m_dsmap.SetAt(0x5110e270, &GSRasterizer::DrawScanlineEx<0x5110e270>);
+ m_dsmap.SetAt(0x5110f430, &GSRasterizer::DrawScanlineEx<0x5110f430>);
+ m_dsmap.SetAt(0x5110fc30, &GSRasterizer::DrawScanlineEx<0x5110fc30>);
+ m_dsmap.SetAt(0x51111450, &GSRasterizer::DrawScanlineEx<0x51111450>);
+ m_dsmap.SetAt(0x51111470, &GSRasterizer::DrawScanlineEx<0x51111470>);
+ m_dsmap.SetAt(0x51120210, &GSRasterizer::DrawScanlineEx<0x51120210>);
+ m_dsmap.SetAt(0x5114f470, &GSRasterizer::DrawScanlineEx<0x5114f470>);
+ m_dsmap.SetAt(0x51153450, &GSRasterizer::DrawScanlineEx<0x51153450>);
+ m_dsmap.SetAt(0x59103c20, &GSRasterizer::DrawScanlineEx<0x59103c20>);
// the punisher
- m_dsmap[0x44578408] = &GSRasterizer::DrawScanlineEx<0x44578408>;
- m_dsmap[0x4457840a] = &GSRasterizer::DrawScanlineEx<0x4457840a>;
- m_dsmap[0x4457aac8] = &GSRasterizer::DrawScanlineEx<0x4457aac8>;
- m_dsmap[0xa857aac8] = &GSRasterizer::DrawScanlineEx<0xa857aac8>;
- m_dsmap[0x4457a8c8] = &GSRasterizer::DrawScanlineEx<0x4457a8c8>;
- m_dsmap[0xa857a8c8] = &GSRasterizer::DrawScanlineEx<0xa857a8c8>;
- m_dsmap[0x4257a8c8] = &GSRasterizer::DrawScanlineEx<0x4257a8c8>;
- m_dsmap[0x68578408] = &GSRasterizer::DrawScanlineEx<0x68578408>;
- m_dsmap[0x4257a0c8] = &GSRasterizer::DrawScanlineEx<0x4257a0c8>;
- m_dsmap[0xa857848a] = &GSRasterizer::DrawScanlineEx<0xa857848a>;
- m_dsmap[0x6857a8c8] = &GSRasterizer::DrawScanlineEx<0x6857a8c8>;
- m_dsmap[0x4857b848] = &GSRasterizer::DrawScanlineEx<0x4857b848>;
- m_dsmap[0x4457abc8] = &GSRasterizer::DrawScanlineEx<0x4457abc8>;
- m_dsmap[0x4457b808] = &GSRasterizer::DrawScanlineEx<0x4457b808>;
- m_dsmap[0x4457b848] = &GSRasterizer::DrawScanlineEx<0x4457b848>;
- m_dsmap[0x4857a888] = &GSRasterizer::DrawScanlineEx<0x4857a888>;
- m_dsmap[0x44579808] = &GSRasterizer::DrawScanlineEx<0x44579808>;
- m_dsmap[0x4857a8c8] = &GSRasterizer::DrawScanlineEx<0x4857a8c8>;
-
// sfex3
- m_dsmap[0x4451abf8] = &GSRasterizer::DrawScanlineEx<0x4451abf8>;
- m_dsmap[0x44505012] = &GSRasterizer::DrawScanlineEx<0x44505012>;
- m_dsmap[0x44505838] = &GSRasterizer::DrawScanlineEx<0x44505838>;
- m_dsmap[0x00007012] = &GSRasterizer::DrawScanlineEx<0x00007012>;
- m_dsmap[0x4851c4f8] = &GSRasterizer::DrawScanlineEx<0x4851c4f8>;
- m_dsmap[0x000184f8] = &GSRasterizer::DrawScanlineEx<0x000184f8>;
- m_dsmap[0x44518bd8] = &GSRasterizer::DrawScanlineEx<0x44518bd8>;
- m_dsmap[0x445068d8] = &GSRasterizer::DrawScanlineEx<0x445068d8>;
- m_dsmap[0x44519838] = &GSRasterizer::DrawScanlineEx<0x44519838>;
- m_dsmap[0x4851a8f8] = &GSRasterizer::DrawScanlineEx<0x4851a8f8>;
- m_dsmap[0x6a504438] = &GSRasterizer::DrawScanlineEx<0x6a504438>;
- m_dsmap[0x00005012] = &GSRasterizer::DrawScanlineEx<0x00005012>;
- m_dsmap[0x4851f878] = &GSRasterizer::DrawScanlineEx<0x4851f878>;
- m_dsmap[0x485044f8] = &GSRasterizer::DrawScanlineEx<0x485044f8>;
- m_dsmap[0x4271c498] = &GSRasterizer::DrawScanlineEx<0x4271c498>;
- m_dsmap[0x44518438] = &GSRasterizer::DrawScanlineEx<0x44518438>;
- m_dsmap[0x00018bd8] = &GSRasterizer::DrawScanlineEx<0x00018bd8>;
- m_dsmap[0xa9518478] = &GSRasterizer::DrawScanlineEx<0xa9518478>;
- m_dsmap[0x44505978] = &GSRasterizer::DrawScanlineEx<0x44505978>;
- m_dsmap[0x000044b8] = &GSRasterizer::DrawScanlineEx<0x000044b8>;
- m_dsmap[0x48506878] = &GSRasterizer::DrawScanlineEx<0x48506878>;
- m_dsmap[0x645044b8] = &GSRasterizer::DrawScanlineEx<0x645044b8>;
- m_dsmap[0x4271cb98] = &GSRasterizer::DrawScanlineEx<0x4271cb98>;
- m_dsmap[0x4851b878] = &GSRasterizer::DrawScanlineEx<0x4851b878>;
+ m_dsmap.SetAt(0x00002200, &GSRasterizer::DrawScanlineEx<0x00002200>);
+ m_dsmap.SetAt(0x00002258, &GSRasterizer::DrawScanlineEx<0x00002258>);
+ m_dsmap.SetAt(0x0000280a, &GSRasterizer::DrawScanlineEx<0x0000280a>);
+ m_dsmap.SetAt(0x0000380a, &GSRasterizer::DrawScanlineEx<0x0000380a>);
+ m_dsmap.SetAt(0x0000c278, &GSRasterizer::DrawScanlineEx<0x0000c278>);
+ m_dsmap.SetAt(0x0000c5e8, &GSRasterizer::DrawScanlineEx<0x0000c5e8>);
+ m_dsmap.SetAt(0x5098e248, &GSRasterizer::DrawScanlineEx<0x5098e248>);
+ m_dsmap.SetAt(0x5098e5c8, &GSRasterizer::DrawScanlineEx<0x5098e5c8>);
+ m_dsmap.SetAt(0x51102218, &GSRasterizer::DrawScanlineEx<0x51102218>);
+ m_dsmap.SetAt(0x5110280a, &GSRasterizer::DrawScanlineEx<0x5110280a>);
+ m_dsmap.SetAt(0x51102c18, &GSRasterizer::DrawScanlineEx<0x51102c18>);
+ m_dsmap.SetAt(0x51102cb8, &GSRasterizer::DrawScanlineEx<0x51102cb8>);
+ m_dsmap.SetAt(0x51103468, &GSRasterizer::DrawScanlineEx<0x51103468>);
+ m_dsmap.SetAt(0x51103c18, &GSRasterizer::DrawScanlineEx<0x51103c18>);
+ m_dsmap.SetAt(0x5110c218, &GSRasterizer::DrawScanlineEx<0x5110c218>);
+ m_dsmap.SetAt(0x5110c5e8, &GSRasterizer::DrawScanlineEx<0x5110c5e8>);
+ m_dsmap.SetAt(0x5110cc18, &GSRasterizer::DrawScanlineEx<0x5110cc18>);
+ m_dsmap.SetAt(0x5110d5f8, &GSRasterizer::DrawScanlineEx<0x5110d5f8>);
+ m_dsmap.SetAt(0x5110dc18, &GSRasterizer::DrawScanlineEx<0x5110dc18>);
+ m_dsmap.SetAt(0x52102278, &GSRasterizer::DrawScanlineEx<0x52102278>);
+ m_dsmap.SetAt(0x52103438, &GSRasterizer::DrawScanlineEx<0x52103438>);
+ m_dsmap.SetAt(0x5210d478, &GSRasterizer::DrawScanlineEx<0x5210d478>);
+ m_dsmap.SetAt(0x5210dc38, &GSRasterizer::DrawScanlineEx<0x5210dc38>);
+ m_dsmap.SetAt(0x5210e278, &GSRasterizer::DrawScanlineEx<0x5210e278>);
+ m_dsmap.SetAt(0x5210fc38, &GSRasterizer::DrawScanlineEx<0x5210fc38>);
+ m_dsmap.SetAt(0x59102258, &GSRasterizer::DrawScanlineEx<0x59102258>);
+ m_dsmap.SetAt(0x5a902218, &GSRasterizer::DrawScanlineEx<0x5a902218>);
+ m_dsmap.SetAt(0x6a50c238, &GSRasterizer::DrawScanlineEx<0x6a50c238>);
// ico
- m_dsmap[0x4453a8c0] = &GSRasterizer::DrawScanlineEx<0x4453a8c0>;
- m_dsmap[0x64904400] = &GSRasterizer::DrawScanlineEx<0x64904400>;
- m_dsmap[0x48504440] = &GSRasterizer::DrawScanlineEx<0x48504440>;
- m_dsmap[0x44505840] = &GSRasterizer::DrawScanlineEx<0x44505840>;
- m_dsmap[0x64507800] = &GSRasterizer::DrawScanlineEx<0x64507800>;
- m_dsmap[0x44504400] = &GSRasterizer::DrawScanlineEx<0x44504400>;
- m_dsmap[0x4471b800] = &GSRasterizer::DrawScanlineEx<0x4471b800>;
- m_dsmap[0x44907800] = &GSRasterizer::DrawScanlineEx<0x44907800>;
- m_dsmap[0x44504420] = &GSRasterizer::DrawScanlineEx<0x44504420>;
- m_dsmap[0x6853a8c0] = &GSRasterizer::DrawScanlineEx<0x6853a8c0>;
- m_dsmap[0x0003a8c0] = &GSRasterizer::DrawScanlineEx<0x0003a8c0>;
- m_dsmap[0x485044c0] = &GSRasterizer::DrawScanlineEx<0x485044c0>;
- m_dsmap[0x68504400] = &GSRasterizer::DrawScanlineEx<0x68504400>;
- m_dsmap[0x68504440] = &GSRasterizer::DrawScanlineEx<0x68504440>;
- m_dsmap[0x48507800] = &GSRasterizer::DrawScanlineEx<0x48507800>;
- m_dsmap[0x4493a8c0] = &GSRasterizer::DrawScanlineEx<0x4493a8c0>;
- m_dsmap[0x6253a8c0] = &GSRasterizer::DrawScanlineEx<0x6253a8c0>;
- m_dsmap[0x64504400] = &GSRasterizer::DrawScanlineEx<0x64504400>;
- m_dsmap[0x00004440] = &GSRasterizer::DrawScanlineEx<0x00004440>;
- m_dsmap[0x4853a840] = &GSRasterizer::DrawScanlineEx<0x4853a840>;
- m_dsmap[0x64907800] = &GSRasterizer::DrawScanlineEx<0x64907800>;
- m_dsmap[0x4490b800] = &GSRasterizer::DrawScanlineEx<0x4490b800>;
- m_dsmap[0x4453b840] = &GSRasterizer::DrawScanlineEx<0x4453b840>;
- m_dsmap[0x44507800] = &GSRasterizer::DrawScanlineEx<0x44507800>;
- m_dsmap[0x4853a8c0] = &GSRasterizer::DrawScanlineEx<0x4853a8c0>;
- m_dsmap[0x68507800] = &GSRasterizer::DrawScanlineEx<0x68507800>;
- m_dsmap[0x48504400] = &GSRasterizer::DrawScanlineEx<0x48504400>;
- m_dsmap[0x00007a00] = &GSRasterizer::DrawScanlineEx<0x00007a00>;
-
// ffx-2
- m_dsmap[0x8851a8c9] = &GSRasterizer::DrawScanlineEx<0x8851a8c9>;
- m_dsmap[0x44521029] = &GSRasterizer::DrawScanlineEx<0x44521029>;
- m_dsmap[0x4851f829] = &GSRasterizer::DrawScanlineEx<0x4851f829>;
- m_dsmap[0x44520429] = &GSRasterizer::DrawScanlineEx<0x44520429>;
- m_dsmap[0x44763028] = &GSRasterizer::DrawScanlineEx<0x44763028>;
- m_dsmap[0x447230a8] = &GSRasterizer::DrawScanlineEx<0x447230a8>;
- m_dsmap[0x44721028] = &GSRasterizer::DrawScanlineEx<0x44721028>;
- m_dsmap[0x64505029] = &GSRasterizer::DrawScanlineEx<0x64505029>;
- m_dsmap[0x4859a8c9] = &GSRasterizer::DrawScanlineEx<0x4859a8c9>;
- m_dsmap[0x44720428] = &GSRasterizer::DrawScanlineEx<0x44720428>;
- m_dsmap[0x4451d829] = &GSRasterizer::DrawScanlineEx<0x4451d829>;
- m_dsmap[0x4451d849] = &GSRasterizer::DrawScanlineEx<0x4451d849>;
- m_dsmap[0x4451f8e9] = &GSRasterizer::DrawScanlineEx<0x4451f8e9>;
- m_dsmap[0x44540429] = &GSRasterizer::DrawScanlineEx<0x44540429>;
- m_dsmap[0x4451c449] = &GSRasterizer::DrawScanlineEx<0x4451c449>;
- m_dsmap[0x4451b009] = &GSRasterizer::DrawScanlineEx<0x4451b009>;
- m_dsmap[0x48504439] = &GSRasterizer::DrawScanlineEx<0x48504439>;
- m_dsmap[0x44505009] = &GSRasterizer::DrawScanlineEx<0x44505009>;
- m_dsmap[0x4451b849] = &GSRasterizer::DrawScanlineEx<0x4451b849>;
- m_dsmap[0xa9504409] = &GSRasterizer::DrawScanlineEx<0xa9504409>;
- m_dsmap[0x00119809] = &GSRasterizer::DrawScanlineEx<0x00119809>;
- m_dsmap[0x00105889] = &GSRasterizer::DrawScanlineEx<0x00105889>;
- m_dsmap[0x00007059] = &GSRasterizer::DrawScanlineEx<0x00007059>;
- m_dsmap[0x44519809] = &GSRasterizer::DrawScanlineEx<0x44519809>;
- m_dsmap[0x48518429] = &GSRasterizer::DrawScanlineEx<0x48518429>;
- m_dsmap[0x4451c4e9] = &GSRasterizer::DrawScanlineEx<0x4451c4e9>;
- m_dsmap[0x485044d9] = &GSRasterizer::DrawScanlineEx<0x485044d9>;
- m_dsmap[0x00119889] = &GSRasterizer::DrawScanlineEx<0x00119889>;
- m_dsmap[0x4851d829] = &GSRasterizer::DrawScanlineEx<0x4851d829>;
- m_dsmap[0x00118489] = &GSRasterizer::DrawScanlineEx<0x00118489>;
- m_dsmap[0x44518889] = &GSRasterizer::DrawScanlineEx<0x44518889>;
- m_dsmap[0x64504429] = &GSRasterizer::DrawScanlineEx<0x64504429>;
- m_dsmap[0x4851b809] = &GSRasterizer::DrawScanlineEx<0x4851b809>;
- m_dsmap[0x48505009] = &GSRasterizer::DrawScanlineEx<0x48505009>;
- m_dsmap[0x4851b849] = &GSRasterizer::DrawScanlineEx<0x4851b849>;
- m_dsmap[0x485244b9] = &GSRasterizer::DrawScanlineEx<0x485244b9>;
- m_dsmap[0x44523839] = &GSRasterizer::DrawScanlineEx<0x44523839>;
- m_dsmap[0x00105009] = &GSRasterizer::DrawScanlineEx<0x00105009>;
+ m_dsmap.SetAt(0x40002805, &GSRasterizer::DrawScanlineEx<0x40002805>);
+ m_dsmap.SetAt(0x5110ec25, &GSRasterizer::DrawScanlineEx<0x5110ec25>);
+ m_dsmap.SetAt(0x5110c245, &GSRasterizer::DrawScanlineEx<0x5110c245>);
+ m_dsmap.SetAt(0x4000c245, &GSRasterizer::DrawScanlineEx<0x4000c245>);
+ m_dsmap.SetAt(0x59102215, &GSRasterizer::DrawScanlineEx<0x59102215>);
+ m_dsmap.SetAt(0x5110e225, &GSRasterizer::DrawScanlineEx<0x5110e225>);
+ m_dsmap.SetAt(0x5110ec55, &GSRasterizer::DrawScanlineEx<0x5110ec55>);
+ m_dsmap.SetAt(0x5110c445, &GSRasterizer::DrawScanlineEx<0x5110c445>);
+ m_dsmap.SetAt(0x5210dc05, &GSRasterizer::DrawScanlineEx<0x5210dc05>);
+ m_dsmap.SetAt(0x5110d805, &GSRasterizer::DrawScanlineEx<0x5110d805>);
+ m_dsmap.SetAt(0x6210d065, &GSRasterizer::DrawScanlineEx<0x6210d065>);
+ m_dsmap.SetAt(0x5110d065, &GSRasterizer::DrawScanlineEx<0x5110d065>);
+ m_dsmap.SetAt(0x5090d425, &GSRasterizer::DrawScanlineEx<0x5090d425>);
+ m_dsmap.SetAt(0x51110215, &GSRasterizer::DrawScanlineEx<0x51110215>);
+ m_dsmap.SetAt(0x5110d815, &GSRasterizer::DrawScanlineEx<0x5110d815>);
+ m_dsmap.SetAt(0x51120215, &GSRasterizer::DrawScanlineEx<0x51120215>);
+ m_dsmap.SetAt(0x5110cc05, &GSRasterizer::DrawScanlineEx<0x5110cc05>);
+ m_dsmap.SetAt(0x4000cc05, &GSRasterizer::DrawScanlineEx<0x4000cc05>);
+ m_dsmap.SetAt(0x5210dc25, &GSRasterizer::DrawScanlineEx<0x5210dc25>);
+ m_dsmap.SetAt(0x5210ec15, &GSRasterizer::DrawScanlineEx<0x5210ec15>);
+ m_dsmap.SetAt(0x5110fc75, &GSRasterizer::DrawScanlineEx<0x5110fc75>);
+ m_dsmap.SetAt(0x5210c215, &GSRasterizer::DrawScanlineEx<0x5210c215>);
+ m_dsmap.SetAt(0x5214d465, &GSRasterizer::DrawScanlineEx<0x5214d465>);
+ m_dsmap.SetAt(0x51102215, &GSRasterizer::DrawScanlineEx<0x51102215>);
+ m_dsmap.SetAt(0x40002c45, &GSRasterizer::DrawScanlineEx<0x40002c45>);
+ m_dsmap.SetAt(0x6210d465, &GSRasterizer::DrawScanlineEx<0x6210d465>);
+ m_dsmap.SetAt(0x59102815, &GSRasterizer::DrawScanlineEx<0x59102815>);
+ m_dsmap.SetAt(0x5210fc15, &GSRasterizer::DrawScanlineEx<0x5210fc15>);
+ m_dsmap.SetAt(0x5210c225, &GSRasterizer::DrawScanlineEx<0x5210c225>);
+ m_dsmap.SetAt(0x5090d465, &GSRasterizer::DrawScanlineEx<0x5090d465>);
+ m_dsmap.SetAt(0x5110dc25, &GSRasterizer::DrawScanlineEx<0x5110dc25>);
+ m_dsmap.SetAt(0x5110ec15, &GSRasterizer::DrawScanlineEx<0x5110ec15>);
+ m_dsmap.SetAt(0x4000cc45, &GSRasterizer::DrawScanlineEx<0x4000cc45>);
+ m_dsmap.SetAt(0x51102805, &GSRasterizer::DrawScanlineEx<0x51102805>);
+ m_dsmap.SetAt(0x40102806, &GSRasterizer::DrawScanlineEx<0x40102806>);
+ m_dsmap.SetAt(0x0000b464, &GSRasterizer::DrawScanlineEx<0x0000b464>);
+ m_dsmap.SetAt(0x0004a464, &GSRasterizer::DrawScanlineEx<0x0004a464>);
+ m_dsmap.SetAt(0x51103054, &GSRasterizer::DrawScanlineEx<0x51103054>);
+ m_dsmap.SetAt(0x51103474, &GSRasterizer::DrawScanlineEx<0x51103474>);
+ m_dsmap.SetAt(0x5111b464, &GSRasterizer::DrawScanlineEx<0x5111b464>);
+ m_dsmap.SetAt(0x51131454, &GSRasterizer::DrawScanlineEx<0x51131454>);
+ m_dsmap.SetAt(0x51143064, &GSRasterizer::DrawScanlineEx<0x51143064>);
+ m_dsmap.SetAt(0x51151464, &GSRasterizer::DrawScanlineEx<0x51151464>);
+ m_dsmap.SetAt(0x5115a264, &GSRasterizer::DrawScanlineEx<0x5115a264>);
+ m_dsmap.SetAt(0x5115a464, &GSRasterizer::DrawScanlineEx<0x5115a464>);
+ m_dsmap.SetAt(0x52103454, &GSRasterizer::DrawScanlineEx<0x52103454>);
+ m_dsmap.SetAt(0x5211b464, &GSRasterizer::DrawScanlineEx<0x5211b464>);
// God of War
- m_dsmap[0x445768c8] = &GSRasterizer::DrawScanlineEx<0x445768c8>;
- m_dsmap[0x68504448] = &GSRasterizer::DrawScanlineEx<0x68504448>;
- m_dsmap[0x44504428] = &GSRasterizer::DrawScanlineEx<0x44504428>;
- m_dsmap[0x015768c8] = &GSRasterizer::DrawScanlineEx<0x015768c8>;
- m_dsmap[0x00504428] = &GSRasterizer::DrawScanlineEx<0x00504428>;
- m_dsmap[0x00504408] = &GSRasterizer::DrawScanlineEx<0x00504408>;
- m_dsmap[0x44576bc8] = &GSRasterizer::DrawScanlineEx<0x44576bc8>;
- m_dsmap[0x485768c8] = &GSRasterizer::DrawScanlineEx<0x485768c8>;
- m_dsmap[0x445044c8] = &GSRasterizer::DrawScanlineEx<0x445044c8>;
- m_dsmap[0x445068c8] = &GSRasterizer::DrawScanlineEx<0x445068c8>;
- m_dsmap[0x0010590a] = &GSRasterizer::DrawScanlineEx<0x0010590a>;
- m_dsmap[0x00120409] = &GSRasterizer::DrawScanlineEx<0x00120409>;
- m_dsmap[0x00123808] = &GSRasterizer::DrawScanlineEx<0x00123808>;
- m_dsmap[0xa4504409] = &GSRasterizer::DrawScanlineEx<0xa4504409>;
- m_dsmap[0x425768c8] = &GSRasterizer::DrawScanlineEx<0x425768c8>;
- m_dsmap[0x00123809] = &GSRasterizer::DrawScanlineEx<0x00123809>;
- m_dsmap[0x0051b828] = &GSRasterizer::DrawScanlineEx<0x0051b828>;
- m_dsmap[0x00504448] = &GSRasterizer::DrawScanlineEx<0x00504448>;
-
// dbzbt2
- m_dsmap[0x64507008] = &GSRasterizer::DrawScanlineEx<0x64507008>;
- m_dsmap[0x625069c8] = &GSRasterizer::DrawScanlineEx<0x625069c8>;
- m_dsmap[0x44577808] = &GSRasterizer::DrawScanlineEx<0x44577808>;
- m_dsmap[0x48505908] = &GSRasterizer::DrawScanlineEx<0x48505908>;
- m_dsmap[0x6451f908] = &GSRasterizer::DrawScanlineEx<0x6451f908>;
- m_dsmap[0x4451f808] = &GSRasterizer::DrawScanlineEx<0x4451f808>;
- m_dsmap[0x64505008] = &GSRasterizer::DrawScanlineEx<0x64505008>;
- m_dsmap[0x52504408] = &GSRasterizer::DrawScanlineEx<0x52504408>;
- m_dsmap[0x447068c8] = &GSRasterizer::DrawScanlineEx<0x447068c8>;
- m_dsmap[0x54507108] = &GSRasterizer::DrawScanlineEx<0x54507108>;
- m_dsmap[0x4450590a] = &GSRasterizer::DrawScanlineEx<0x4450590a>;
- m_dsmap[0x44505108] = &GSRasterizer::DrawScanlineEx<0x44505108>;
- m_dsmap[0x6450440a] = &GSRasterizer::DrawScanlineEx<0x6450440a>;
- m_dsmap[0x44505968] = &GSRasterizer::DrawScanlineEx<0x44505968>;
- m_dsmap[0x585069c8] = &GSRasterizer::DrawScanlineEx<0x585069c8>;
- m_dsmap[0x58507808] = &GSRasterizer::DrawScanlineEx<0x58507808>;
- m_dsmap[0xa171c8c8] = &GSRasterizer::DrawScanlineEx<0xa171c8c8>;
- m_dsmap[0x44573808] = &GSRasterizer::DrawScanlineEx<0x44573808>;
- m_dsmap[0x64504488] = &GSRasterizer::DrawScanlineEx<0x64504488>;
- m_dsmap[0x64505908] = &GSRasterizer::DrawScanlineEx<0x64505908>;
- m_dsmap[0x4451f908] = &GSRasterizer::DrawScanlineEx<0x4451f908>;
- m_dsmap[0x44707808] = &GSRasterizer::DrawScanlineEx<0x44707808>;
- m_dsmap[0x44506848] = &GSRasterizer::DrawScanlineEx<0x44506848>;
- m_dsmap[0x54507008] = &GSRasterizer::DrawScanlineEx<0x54507008>;
- m_dsmap[0x68507008] = &GSRasterizer::DrawScanlineEx<0x68507008>;
- m_dsmap[0x6250590a] = &GSRasterizer::DrawScanlineEx<0x6250590a>;
- m_dsmap[0x68504408] = &GSRasterizer::DrawScanlineEx<0x68504408>;
- m_dsmap[0x48507828] = &GSRasterizer::DrawScanlineEx<0x48507828>;
- m_dsmap[0x48506848] = &GSRasterizer::DrawScanlineEx<0x48506848>;
- m_dsmap[0x54507808] = &GSRasterizer::DrawScanlineEx<0x54507808>;
-
// dbzbt3
- m_dsmap[0x48704408] = &GSRasterizer::DrawScanlineEx<0x48704408>;
- m_dsmap[0x44507108] = &GSRasterizer::DrawScanlineEx<0x44507108>;
- m_dsmap[0x5451b848] = &GSRasterizer::DrawScanlineEx<0x5451b848>;
- m_dsmap[0x485044c8] = &GSRasterizer::DrawScanlineEx<0x485044c8>;
- m_dsmap[0x4471c8c8] = &GSRasterizer::DrawScanlineEx<0x4471c8c8>;
- m_dsmap[0x48707808] = &GSRasterizer::DrawScanlineEx<0x48707808>;
- m_dsmap[0x495068c8] = &GSRasterizer::DrawScanlineEx<0x495068c8>;
+ m_dsmap.SetAt(0x40002c86, &GSRasterizer::DrawScanlineEx<0x40002c86>);
+ m_dsmap.SetAt(0x51102204, &GSRasterizer::DrawScanlineEx<0x51102204>);
+ m_dsmap.SetAt(0x51102884, &GSRasterizer::DrawScanlineEx<0x51102884>);
+ m_dsmap.SetAt(0x51102c84, &GSRasterizer::DrawScanlineEx<0x51102c84>);
+ m_dsmap.SetAt(0x51102c86, &GSRasterizer::DrawScanlineEx<0x51102c86>);
+ m_dsmap.SetAt(0x51102cb4, &GSRasterizer::DrawScanlineEx<0x51102cb4>);
+ m_dsmap.SetAt(0x51103804, &GSRasterizer::DrawScanlineEx<0x51103804>);
+ m_dsmap.SetAt(0x51103884, &GSRasterizer::DrawScanlineEx<0x51103884>);
+ m_dsmap.SetAt(0x51103c04, &GSRasterizer::DrawScanlineEx<0x51103c04>);
+ m_dsmap.SetAt(0x5110b464, &GSRasterizer::DrawScanlineEx<0x5110b464>);
+ m_dsmap.SetAt(0x5110fc84, &GSRasterizer::DrawScanlineEx<0x5110fc84>);
+ m_dsmap.SetAt(0x51183464, &GSRasterizer::DrawScanlineEx<0x51183464>);
+ m_dsmap.SetAt(0x5118e464, &GSRasterizer::DrawScanlineEx<0x5118e464>);
+ m_dsmap.SetAt(0x52102264, &GSRasterizer::DrawScanlineEx<0x52102264>);
+ m_dsmap.SetAt(0x52102c84, &GSRasterizer::DrawScanlineEx<0x52102c84>);
+ m_dsmap.SetAt(0x54902204, &GSRasterizer::DrawScanlineEx<0x54902204>);
+ m_dsmap.SetAt(0x55103804, &GSRasterizer::DrawScanlineEx<0x55103804>);
+ m_dsmap.SetAt(0x561034e4, &GSRasterizer::DrawScanlineEx<0x561034e4>);
+ m_dsmap.SetAt(0x58902c86, &GSRasterizer::DrawScanlineEx<0x58902c86>);
+ m_dsmap.SetAt(0x589034e4, &GSRasterizer::DrawScanlineEx<0x589034e4>);
+ m_dsmap.SetAt(0x59102204, &GSRasterizer::DrawScanlineEx<0x59102204>);
+ m_dsmap.SetAt(0x59102206, &GSRasterizer::DrawScanlineEx<0x59102206>);
+ m_dsmap.SetAt(0x59102244, &GSRasterizer::DrawScanlineEx<0x59102244>);
+ m_dsmap.SetAt(0x59103464, &GSRasterizer::DrawScanlineEx<0x59103464>);
+ m_dsmap.SetAt(0x59103804, &GSRasterizer::DrawScanlineEx<0x59103804>);
+ m_dsmap.SetAt(0x5910fc84, &GSRasterizer::DrawScanlineEx<0x5910fc84>);
+ m_dsmap.SetAt(0x5a103804, &GSRasterizer::DrawScanlineEx<0x5a103804>);
// suikoden 5
- m_dsmap[0x485068d8] = &GSRasterizer::DrawScanlineEx<0x485068d8>;
- m_dsmap[0x00024418] = &GSRasterizer::DrawScanlineEx<0x00024418>;
- m_dsmap[0x445244b8] = &GSRasterizer::DrawScanlineEx<0x445244b8>;
- m_dsmap[0x48536898] = &GSRasterizer::DrawScanlineEx<0x48536898>;
- m_dsmap[0x68506898] = &GSRasterizer::DrawScanlineEx<0x68506898>;
- m_dsmap[0x485868d8] = &GSRasterizer::DrawScanlineEx<0x485868d8>;
- m_dsmap[0x0a536898] = &GSRasterizer::DrawScanlineEx<0x0a536898>;
- m_dsmap[0x685068d8] = &GSRasterizer::DrawScanlineEx<0x685068d8>;
- m_dsmap[0x025068d8] = &GSRasterizer::DrawScanlineEx<0x025068d8>;
- m_dsmap[0x42536898] = &GSRasterizer::DrawScanlineEx<0x42536898>;
- m_dsmap[0x44534858] = &GSRasterizer::DrawScanlineEx<0x44534858>;
- m_dsmap[0x025868d8] = &GSRasterizer::DrawScanlineEx<0x025868d8>;
- m_dsmap[0x0a524498] = &GSRasterizer::DrawScanlineEx<0x0a524498>;
-
// disgaea 2
- m_dsmap[0x4453a0c8] = &GSRasterizer::DrawScanlineEx<0x4453a0c8>;
- m_dsmap[0x44504448] = &GSRasterizer::DrawScanlineEx<0x44504448>;
- m_dsmap[0x4451b8c8] = &GSRasterizer::DrawScanlineEx<0x4451b8c8>;
- m_dsmap[0x2a51a8e8] = &GSRasterizer::DrawScanlineEx<0x2a51a8e8>;
- m_dsmap[0x6251a8c8] = &GSRasterizer::DrawScanlineEx<0x6251a8c8>;
+ m_dsmap.SetAt(0x0000c224, &GSRasterizer::DrawScanlineEx<0x0000c224>);
+ m_dsmap.SetAt(0x4a90d474, &GSRasterizer::DrawScanlineEx<0x4a90d474>);
+ m_dsmap.SetAt(0x51102224, &GSRasterizer::DrawScanlineEx<0x51102224>);
+ m_dsmap.SetAt(0x5110c224, &GSRasterizer::DrawScanlineEx<0x5110c224>);
+ m_dsmap.SetAt(0x5110d464, &GSRasterizer::DrawScanlineEx<0x5110d464>);
+ m_dsmap.SetAt(0x5110dc24, &GSRasterizer::DrawScanlineEx<0x5110dc24>);
+ m_dsmap.SetAt(0x5110dc64, &GSRasterizer::DrawScanlineEx<0x5110dc64>);
+ m_dsmap.SetAt(0x5111d064, &GSRasterizer::DrawScanlineEx<0x5111d064>);
+ m_dsmap.SetAt(0x5111d464, &GSRasterizer::DrawScanlineEx<0x5111d464>);
+ m_dsmap.SetAt(0x5890d464, &GSRasterizer::DrawScanlineEx<0x5890d464>);
+ m_dsmap.SetAt(0x6a102224, &GSRasterizer::DrawScanlineEx<0x6a102224>);
+ m_dsmap.SetAt(0x6a10c224, &GSRasterizer::DrawScanlineEx<0x6a10c224>);
// dq8
- m_dsmap[0x2a505808] = &GSRasterizer::DrawScanlineEx<0x2a505808>;
- m_dsmap[0x44504488] = &GSRasterizer::DrawScanlineEx<0x44504488>;
- m_dsmap[0x46507808] = &GSRasterizer::DrawScanlineEx<0x46507808>;
- m_dsmap[0x48507848] = &GSRasterizer::DrawScanlineEx<0x48507848>;
-
// xenosaga 2
- m_dsmap[0x000844c8] = &GSRasterizer::DrawScanlineEx<0x000844c8>;
- m_dsmap[0x4a526808] = &GSRasterizer::DrawScanlineEx<0x4a526808>;
- m_dsmap[0x64507828] = &GSRasterizer::DrawScanlineEx<0x64507828>;
- m_dsmap[0x5851a848] = &GSRasterizer::DrawScanlineEx<0x5851a848>;
- m_dsmap[0x5451a848] = &GSRasterizer::DrawScanlineEx<0x5451a848>;
- m_dsmap[0x68504428] = &GSRasterizer::DrawScanlineEx<0x68504428>;
- m_dsmap[0x00320408] = &GSRasterizer::DrawScanlineEx<0x00320408>;
- m_dsmap[0x5251a848] = &GSRasterizer::DrawScanlineEx<0x5251a848>;
- m_dsmap[0x00020408] = &GSRasterizer::DrawScanlineEx<0x00020408>;
- m_dsmap[0x64504428] = &GSRasterizer::DrawScanlineEx<0x64504428>;
- m_dsmap[0x00086888] = &GSRasterizer::DrawScanlineEx<0x00086888>;
- m_dsmap[0x895068c8] = &GSRasterizer::DrawScanlineEx<0x895068c8>;
- m_dsmap[0x00084488] = &GSRasterizer::DrawScanlineEx<0x00084488>;
- m_dsmap[0x4451b868] = &GSRasterizer::DrawScanlineEx<0x4451b868>;
- m_dsmap[0x000068c8] = &GSRasterizer::DrawScanlineEx<0x000068c8>;
- m_dsmap[0x0051b868] = &GSRasterizer::DrawScanlineEx<0x0051b868>;
- m_dsmap[0x4450a8c8] = &GSRasterizer::DrawScanlineEx<0x4450a8c8>;
- m_dsmap[0x62504428] = &GSRasterizer::DrawScanlineEx<0x62504428>;
- m_dsmap[0x54507828] = &GSRasterizer::DrawScanlineEx<0x54507828>;
+ m_dsmap.SetAt(0x5a102214, &GSRasterizer::DrawScanlineEx<0x5a102214>);
+ m_dsmap.SetAt(0x52102c14, &GSRasterizer::DrawScanlineEx<0x52102c14>);
+ m_dsmap.SetAt(0x00011c04, &GSRasterizer::DrawScanlineEx<0x00011c04>);
+ m_dsmap.SetAt(0x00042244, &GSRasterizer::DrawScanlineEx<0x00042244>);
+ m_dsmap.SetAt(0x52103464, &GSRasterizer::DrawScanlineEx<0x52103464>);
+ m_dsmap.SetAt(0x5510d424, &GSRasterizer::DrawScanlineEx<0x5510d424>);
+ m_dsmap.SetAt(0x59103c14, &GSRasterizer::DrawScanlineEx<0x59103c14>);
+ m_dsmap.SetAt(0x52103c14, &GSRasterizer::DrawScanlineEx<0x52103c14>);
+ m_dsmap.SetAt(0x00010204, &GSRasterizer::DrawScanlineEx<0x00010204>);
+ m_dsmap.SetAt(0x00042264, &GSRasterizer::DrawScanlineEx<0x00042264>);
+ m_dsmap.SetAt(0x5490d424, &GSRasterizer::DrawScanlineEx<0x5490d424>);
+ m_dsmap.SetAt(0x00003464, &GSRasterizer::DrawScanlineEx<0x00003464>);
+ m_dsmap.SetAt(0x59102214, &GSRasterizer::DrawScanlineEx<0x59102214>);
+ m_dsmap.SetAt(0x5110d424, &GSRasterizer::DrawScanlineEx<0x5110d424>);
+ m_dsmap.SetAt(0x00043444, &GSRasterizer::DrawScanlineEx<0x00043444>);
+ m_dsmap.SetAt(0x62503464, &GSRasterizer::DrawScanlineEx<0x62503464>);
+ m_dsmap.SetAt(0x51102c14, &GSRasterizer::DrawScanlineEx<0x51102c14>);
+ m_dsmap.SetAt(0x40003c04, &GSRasterizer::DrawScanlineEx<0x40003c04>);
+ m_dsmap.SetAt(0x52913404, &GSRasterizer::DrawScanlineEx<0x52913404>);
+ m_dsmap.SetAt(0x51103c14, &GSRasterizer::DrawScanlineEx<0x51103c14>);
+ m_dsmap.SetAt(0x00043464, &GSRasterizer::DrawScanlineEx<0x00043464>);
+ m_dsmap.SetAt(0x40002204, &GSRasterizer::DrawScanlineEx<0x40002204>);
+ m_dsmap.SetAt(0x51143464, &GSRasterizer::DrawScanlineEx<0x51143464>);
+ m_dsmap.SetAt(0x51105464, &GSRasterizer::DrawScanlineEx<0x51105464>);
+ m_dsmap.SetAt(0x5a103c04, &GSRasterizer::DrawScanlineEx<0x5a103c04>);
+ m_dsmap.SetAt(0x5610d424, &GSRasterizer::DrawScanlineEx<0x5610d424>);
+ m_dsmap.SetAt(0x51102234, &GSRasterizer::DrawScanlineEx<0x51102234>);
+ m_dsmap.SetAt(0x40090204, &GSRasterizer::DrawScanlineEx<0x40090204>);
+ m_dsmap.SetAt(0x51145464, &GSRasterizer::DrawScanlineEx<0x51145464>);
+ m_dsmap.SetAt(0x4010dc34, &GSRasterizer::DrawScanlineEx<0x4010dc34>);
// persona 4
- m_dsmap[0x685840d8] = &GSRasterizer::DrawScanlineEx<0x685840d8>;
- m_dsmap[0x48522098] = &GSRasterizer::DrawScanlineEx<0x48522098>;
- m_dsmap[0x485a44d8] = &GSRasterizer::DrawScanlineEx<0x485a44d8>;
- m_dsmap[0x44522898] = &GSRasterizer::DrawScanlineEx<0x44522898>;
- m_dsmap[0x58522098] = &GSRasterizer::DrawScanlineEx<0x58522098>;
- m_dsmap[0x6451e8d8] = &GSRasterizer::DrawScanlineEx<0x6451e8d8>;
- m_dsmap[0x001044b8] = &GSRasterizer::DrawScanlineEx<0x001044b8>;
- m_dsmap[0x58562898] = &GSRasterizer::DrawScanlineEx<0x58562898>;
- m_dsmap[0x545068d8] = &GSRasterizer::DrawScanlineEx<0x545068d8>;
- m_dsmap[0x001044d8] = &GSRasterizer::DrawScanlineEx<0x001044d8>;
- m_dsmap[0x4451a8d8] = &GSRasterizer::DrawScanlineEx<0x4451a8d8>;
- m_dsmap[0x445044b8] = &GSRasterizer::DrawScanlineEx<0x445044b8>;
- m_dsmap[0x425a44d8] = &GSRasterizer::DrawScanlineEx<0x425a44d8>;
- m_dsmap[0x4451a0d8] = &GSRasterizer::DrawScanlineEx<0x4451a0d8>;
- m_dsmap[0x54504498] = &GSRasterizer::DrawScanlineEx<0x54504498>;
- m_dsmap[0x52562898] = &GSRasterizer::DrawScanlineEx<0x52562898>;
- m_dsmap[0x00004498] = &GSRasterizer::DrawScanlineEx<0x00004498>;
- m_dsmap[0x58560498] = &GSRasterizer::DrawScanlineEx<0x58560498>;
- m_dsmap[0x425a28d8] = &GSRasterizer::DrawScanlineEx<0x425a28d8>;
- m_dsmap[0x585184d8] = &GSRasterizer::DrawScanlineEx<0x585184d8>;
- m_dsmap[0x44534498] = &GSRasterizer::DrawScanlineEx<0x44534498>;
- m_dsmap[0x000044d8] = &GSRasterizer::DrawScanlineEx<0x000044d8>;
- m_dsmap[0x445344d8] = &GSRasterizer::DrawScanlineEx<0x445344d8>;
- m_dsmap[0x485244d8] = &GSRasterizer::DrawScanlineEx<0x485244d8>;
- m_dsmap[0x445b44d8] = &GSRasterizer::DrawScanlineEx<0x445b44d8>;
- m_dsmap[0x000a44d8] = &GSRasterizer::DrawScanlineEx<0x000a44d8>;
-
-/*
- CAtlMap dsmap;
-
- POSITION pos = m_dsmap.GetStartPosition();
-
- while(pos)
- {
- CAtlMap::CPair* pair = m_dsmap.GetNext(pos);
-
- ScanlineSelector sel = *(ScanlineSelector*)&pair->m_key;
-
- if(sel.tfx == 4)
- {
- sel.tcc = 0;
- sel.fst = 0;
- sel.ltf = 0;
- }
-
- if(sel.atst == 1)
- {
- sel.afail = 0;
- }
-
- ASSERT(!sel.date || sel.rfb);
- ASSERT(!sel.abe || sel.rfb);
-
- if(!sel.rfb)
- {
- sel.date = 0;
- sel.abe = 0;
- }
-
- if(!sel.abe)
- {
- sel.abea = sel.abeb = sel.abec = sel.abed = 0;
- }
-
- dsmap[sel] = true;
- }
-
- TRACE(_T("%d %d\n"), m_dsmap.GetCount(), dsmap.GetCount());
-*/
+ m_dsmap.SetAt(0x5a143468, &GSRasterizer::DrawScanlineEx<0x5a143468>);
+ m_dsmap.SetAt(0x52142268, &GSRasterizer::DrawScanlineEx<0x52142268>);
+ m_dsmap.SetAt(0x51102268, &GSRasterizer::DrawScanlineEx<0x51102268>);
+ m_dsmap.SetAt(0x52151468, &GSRasterizer::DrawScanlineEx<0x52151468>);
+ m_dsmap.SetAt(0x5111a448, &GSRasterizer::DrawScanlineEx<0x5111a448>);
+ m_dsmap.SetAt(0x5111a268, &GSRasterizer::DrawScanlineEx<0x5111a268>);
+ m_dsmap.SetAt(0x00042268, &GSRasterizer::DrawScanlineEx<0x00042268>);
+ m_dsmap.SetAt(0x5111a468, &GSRasterizer::DrawScanlineEx<0x5111a468>);
+ m_dsmap.SetAt(0x51142268, &GSRasterizer::DrawScanlineEx<0x51142268>);
+ m_dsmap.SetAt(0x00002208, &GSRasterizer::DrawScanlineEx<0x00002208>);
+ m_dsmap.SetAt(0x52111048, &GSRasterizer::DrawScanlineEx<0x52111048>);
+ m_dsmap.SetAt(0x52110248, &GSRasterizer::DrawScanlineEx<0x52110248>);
+ m_dsmap.SetAt(0x40082248, &GSRasterizer::DrawScanlineEx<0x40082248>);
+ m_dsmap.SetAt(0x5111b468, &GSRasterizer::DrawScanlineEx<0x5111b468>);
+ m_dsmap.SetAt(0x00002218, &GSRasterizer::DrawScanlineEx<0x00002218>);
+ m_dsmap.SetAt(0x5a142068, &GSRasterizer::DrawScanlineEx<0x5a142068>);
+ m_dsmap.SetAt(0x50951468, &GSRasterizer::DrawScanlineEx<0x50951468>);
+ m_dsmap.SetAt(0x51143468, &GSRasterizer::DrawScanlineEx<0x51143468>);
+ m_dsmap.SetAt(0x5110d468, &GSRasterizer::DrawScanlineEx<0x5110d468>);
+ m_dsmap.SetAt(0x5115b468, &GSRasterizer::DrawScanlineEx<0x5115b468>);
+ m_dsmap.SetAt(0x5111d468, &GSRasterizer::DrawScanlineEx<0x5111d468>);
+ m_dsmap.SetAt(0x52102268, &GSRasterizer::DrawScanlineEx<0x52102268>);
+ m_dsmap.SetAt(0x5117b468, &GSRasterizer::DrawScanlineEx<0x5117b468>);
+ m_dsmap.SetAt(0x50910248, &GSRasterizer::DrawScanlineEx<0x50910248>);
+ m_dsmap.SetAt(0x0001a248, &GSRasterizer::DrawScanlineEx<0x0001a248>);
+ m_dsmap.SetAt(0x52111468, &GSRasterizer::DrawScanlineEx<0x52111468>);
+ m_dsmap.SetAt(0x51102248, &GSRasterizer::DrawScanlineEx<0x51102248>);
}
template
void GSRasterizer::DrawScanlineEx(int top, int left, int right, const Vertex& v)
{
- const DWORD ztst = (sel >> 5) & 3;
- const DWORD iip = (sel >> 7) & 1;
- const DWORD tfx = (sel >> 8) & 7;
- const DWORD tcc = (sel >> 11) & 1;
- const DWORD fst = (sel >> 12) & 1;
- const DWORD ltf = (sel >> 13) & 1;
- const DWORD atst = (sel >> 14) & 7;
- const DWORD afail = (sel >> 17) & 3;
- const DWORD fge = (sel >> 19) & 1;
- const DWORD rfb = (sel >> 20) & 1;
- const DWORD date = (sel >> 21) & 1;
- const DWORD abe = (sel >> 22) & 3;
- const DWORD abea = (sel >> 24) & 3;
- const DWORD abeb = (sel >> 26) & 3;
- const DWORD abec = (sel >> 28) & 3;
- const DWORD abed = (sel >> 30) & 3;
-
- int fpsm = GSUtil::DecodeFPSM(((sel >> 0) & 7));
- int zpsm = GSUtil::DecodeZPSM(((sel >> 3) & 3));
+ const DWORD fpsm = (sel >> 0) & 3;
+ const DWORD zpsm = (sel >> 2) & 3;
+ const DWORD ztst = (sel >> 4) & 3;
+ const DWORD iip = (sel >> 6) & 1;
+ const DWORD tfx = (sel >> 7) & 7;
+ const DWORD tcc = (sel >> 10) & 1;
+ const DWORD fst = (sel >> 11) & 1;
+ const DWORD ltf = (sel >> 12) & 1;
+ const DWORD atst = (sel >> 13) & 7;
+ const DWORD afail = (sel >> 16) & 3;
+ const DWORD fge = (sel >> 18) & 1;
+ const DWORD date = (sel >> 19) & 1;
+ const DWORD abe = (sel >> 20) & 3;
+ const DWORD abea = (sel >> 22) & 3;
+ const DWORD abeb = (sel >> 24) & 3;
+ const DWORD abec = (sel >> 26) & 3;
+ const DWORD abed = (sel >> 28) & 3;
+ const DWORD rfb = (sel >> 30) & 1;
GSVector4i fa_base = m_slenv.fbco[top];
GSVector4i* fa_offset = (GSVector4i*)&m_slenv.fo[left];
@@ -1094,18 +623,24 @@ void GSRasterizer::DrawScanlineEx(int top, int left, int right, const Vertex& v)
GSVector4i test = GSVector4i::zero();
GSVector4i zs = (GSVector4i(z * 0.5f) << 1) | (GSVector4i(z) & GSVector4i::one());
- GSVector4i zd;
if(ztst > 1)
{
- zd = m_state->m_mem.ReadZBufX(zpsm, za);
+ GSVector4i zd = m_state->m_mem.ReadZBufX(zpsm, za);
- GSVector4i offset = GSVector4i::x80000000();
+ GSVector4i zso = zs;
+ GSVector4i zdo = zd;
+
+ if(zpsm == 0)
+ {
+ zso = zs - GSVector4i::x80000000();
+ zdo = zd - GSVector4i::x80000000();
+ }
switch(ztst)
{
- case 2: test = (zs - offset) < (zd - offset); break; // ge
- case 3: test = (zs - offset) <= (zd - offset); break; // g
+ case 2: test = zso < zdo; break; // ge
+ case 3: test = zso <= zdo; break; // g
default: __assume(0);
}
diff --git a/gsdx/GSRenderer.h b/gsdx/GSRenderer.h
index cf913c9..ba98582 100644
--- a/gsdx/GSRenderer.h
+++ b/gsdx/GSRenderer.h
@@ -441,7 +441,7 @@ public:
fn.Format(_T("%s_%s"), path, CTime::GetCurrentTime().Format(_T("%Y%m%d%H%M%S")));
- if((::GetAsyncKeyState(VK_SHIFT) & 0x8000) && !m_dump && m_field == 0)
+ if((::GetAsyncKeyState(VK_SHIFT) & 0x8000) && !m_dump)
{
freezeData fd;
fd.size = 0;
diff --git a/gsdx/GSRendererHW10.cpp b/gsdx/GSRendererHW10.cpp
index 2c3ba68..9d439c1 100644
--- a/gsdx/GSRendererHW10.cpp
+++ b/gsdx/GSRendererHW10.cpp
@@ -34,6 +34,19 @@ GSRendererHW10::GSRendererHW10(BYTE* base, bool mt, void (*irq)(), int nloophack
{
m_fpDrawingKickHandlers[i] = (DrawingKickHandler)&GSRendererHW10::DrawingKick;
}
+
+ m_fpDrawingKickHandlers[GS_POINTLIST] = (DrawingKickHandler)&GSRendererHW10::DrawingKickPoint;
+
+ #if _M_SSE >= 0x401
+
+ m_fpDrawingKickHandlers[GS_LINELIST] = (DrawingKickHandler)&GSRendererHW10::DrawingKickLine;
+ m_fpDrawingKickHandlers[GS_LINESTRIP] = (DrawingKickHandler)&GSRendererHW10::DrawingKickLine;
+ m_fpDrawingKickHandlers[GS_TRIANGLELIST] = (DrawingKickHandler)&GSRendererHW10::DrawingKickTriangle;
+ m_fpDrawingKickHandlers[GS_TRIANGLESTRIP] = (DrawingKickHandler)&GSRendererHW10::DrawingKickTriangle;
+ m_fpDrawingKickHandlers[GS_TRIANGLEFAN] = (DrawingKickHandler)&GSRendererHW10::DrawingKickTriangle;
+ m_fpDrawingKickHandlers[GS_SPRITE] = (DrawingKickHandler)&GSRendererHW10::DrawingKickSprite;
+
+ #endif
}
bool GSRendererHW10::Create(LPCTSTR title)
@@ -120,10 +133,82 @@ void GSRendererHW10::VertexKick(bool skip)
__super::VertexKick(skip);
}
+int GSRendererHW10::ScissorTest(const GSVector4i& p0, const GSVector4i& p1)
+{
+ GSVector4i scissor = m_context->scissor.dx10;
+
+ GSVector4i v0 = p0 < scissor;
+ GSVector4i v1 = p1 > scissor.zwxy();
+
+ return (v0 | v1).mask() & 0xff;
+}
+
+void GSRendererHW10::DrawingKickPoint(GSVertexHW10* v, int& count)
+{
+ GSVector4i v0 = GSVector4i::load((int)v[0].p.xy).upl16();
+
+ GSVector4i p0 = v0;
+ GSVector4i p1 = v0;
+
+ if(ScissorTest(p0, p1))
+ {
+ count = 0;
+ return;
+ }
+}
+
+#if _M_SSE >= 0x401
+
+void GSRendererHW10::DrawingKickLine(GSVertexHW10* v, int& count)
+{
+ GSVector4i v0 = GSVector4i::load((int)v[0].p.xy);
+ GSVector4i v1 = GSVector4i::load((int)v[1].p.xy);
+
+ GSVector4i p0 = v0.max_u16(v1).upl16();
+ GSVector4i p1 = v0.min_u16(v1).upl16();
+
+ if(ScissorTest(p0, p1))
+ {
+ count = 0;
+ return;
+ }
+}
+
+void GSRendererHW10::DrawingKickTriangle(GSVertexHW10* v, int& count)
+{
+ GSVector4i v0 = GSVector4i::load((int)v[0].p.xy);
+ GSVector4i v1 = GSVector4i::load((int)v[1].p.xy);
+ GSVector4i v2 = GSVector4i::load((int)v[2].p.xy);
+
+ GSVector4i p0 = v0.max_u16(v1).max_u16(v2).upl16();
+ GSVector4i p1 = v0.min_u16(v1).min_u16(v2).upl16();
+
+ if(ScissorTest(p0, p1))
+ {
+ count = 0;
+ return;
+ }
+}
+
+void GSRendererHW10::DrawingKickSprite(GSVertexHW10* v, int& count)
+{
+ GSVector4i v0 = GSVector4i::load((int)v[0].p.xy);
+ GSVector4i v1 = GSVector4i::load((int)v[1].p.xy);
+
+ GSVector4i p0 = v0.max_u16(v1).upl16();
+ GSVector4i p1 = v0.min_u16(v1).upl16();
+
+ if(ScissorTest(p0, p1))
+ {
+ count = 0;
+ return;
+ }
+}
+
+#endif
+
void GSRendererHW10::DrawingKick(GSVertexHW10* v, int& count)
{
- // TODO
-
GSVector4i scissor = m_context->scissor.dx10;
switch(count)
diff --git a/gsdx/GSRendererHW10.h b/gsdx/GSRendererHW10.h
index 0954674..4e0e57b 100644
--- a/gsdx/GSRendererHW10.h
+++ b/gsdx/GSRendererHW10.h
@@ -35,6 +35,18 @@ protected:
void Draw();
bool WrapZ(DWORD maxz);
+ __forceinline int ScissorTest(const GSVector4i& p0, const GSVector4i& p1);
+
+ void DrawingKickPoint(GSVertexHW10* v, int& count);
+
+ #if _M_SSE >= 0x401
+
+ void DrawingKickLine(GSVertexHW10* v, int& count);
+ void DrawingKickTriangle(GSVertexHW10* v, int& count);
+ void DrawingKickSprite(GSVertexHW10* v, int& count);
+
+ #endif
+
struct
{
CComPtr dss;
diff --git a/gsdx/GSState.cpp b/gsdx/GSState.cpp
index 4fe9bd7..986792c 100644
--- a/gsdx/GSState.cpp
+++ b/gsdx/GSState.cpp
@@ -115,8 +115,6 @@ GSState::GSState(BYTE* base, bool mt, void (*irq)(), int nloophack)
m_maxbytes = 1024 * 1024 * 4;
m_buff = (BYTE*)_aligned_malloc(m_maxbytes, 16);
- m_path = (GIFPath*)_aligned_malloc(sizeof(m_path[0]) * 3, 16);
-
Reset();
ResetHandlers();
@@ -125,7 +123,6 @@ GSState::GSState(BYTE* base, bool mt, void (*irq)(), int nloophack)
GSState::~GSState()
{
_aligned_free(m_buff);
- _aligned_free(m_path);
}
void GSState::Reset()
@@ -597,23 +594,19 @@ template void GSState::GIFRegHandlerTEX0(GIFReg* r)
m_env.CTXT[i].TEX0 = r->TEX0;
- // ASSERT(m_env.CTXT[i].TEX0.TW <= 10 && m_env.CTXT[i].TEX0.TH <= 10 && (m_env.CTXT[i].TEX0.CPSM & ~0xa) == 0);
-
if(m_env.CTXT[i].TEX0.TW > 10) m_env.CTXT[i].TEX0.TW = 10;
if(m_env.CTXT[i].TEX0.TH > 10) m_env.CTXT[i].TEX0.TH = 10;
m_env.CTXT[i].TEX0.CPSM &= 0xa; // 1010b
- m_env.CTXT[i].ttbl = &GSLocalMemory::m_psm[m_env.CTXT[i].TEX0.PSM];
-
- FlushWrite();
-
- m_mem.m_clut.Write(r->TEX0, m_env.TEXCLUT, &m_mem);
-
if((m_env.CTXT[i].TEX0.TBW & 1) && (m_env.CTXT[i].TEX0.PSM == PSM_PSMT8 || m_env.CTXT[i].TEX0.PSM == PSM_PSMT4))
{
- m_env.CTXT[i].TEX0.TBW &= ~1;
+ m_env.CTXT[i].TEX0.TBW &= ~1; // GS User 2.6
}
+
+ m_env.CTXT[i].ttbl = &GSLocalMemory::m_psm[m_env.CTXT[i].TEX0.PSM];
+
+ m_mem.m_clut.Write(m_env.CTXT[i].TEX0, m_env.TEXCLUT, &m_mem);
}
template void GSState::GIFRegHandlerCLAMP(GIFReg* r)
@@ -1257,7 +1250,7 @@ template void GSState::Transfer(BYTE* mem, UINT32 size)
if(path.tag.PRE)
{
- ASSERT(path.tag.FLG != GIF_FLG_IMAGE); // kingdom hearts
+ ASSERT(path.tag.FLG != GIF_FLG_IMAGE); // kingdom hearts, ffxii
if((path.tag.FLG & 2) == 0)
{
@@ -2092,6 +2085,24 @@ bool GSC_GiTS(const GSFrameInfo& fi, int& skip)
return true;
}
+bool GSC_Onimusha3(const GSFrameInfo& fi, int& skip)
+{
+ if(skip == 0)
+ {
+ if(fi.TME && (fi.FBP == 0x00e00 && fi.TBP0 == 0x00700 /*|| fi.FBP == 0x01000 && fi.TBP0 == 0x00e00*/))
+ {
+// skip = 1000;
+ }
+ }
+
+ if(fi.TME && (fi.FBP == 0x00700 && fi.TBP0 == 0x00e00 /*|| fi.FBP == 0x00e00 && fi.TBP0 == 0x01000*/))
+ {
+// skip = 1;
+ }
+
+ return true;
+}
+
bool GSState::IsBadFrame(int& skip)
{
GSFrameInfo fi;
@@ -2102,10 +2113,15 @@ bool GSState::IsBadFrame(int& skip)
fi.TBP0 = m_context->TEX0.TBP0;
fi.TPSM = m_context->TEX0.PSM;
- static CAtlMap map;
+ static GetSkipCount map[CRC::TitleCount];
+ static bool inited = false;
- if(map.IsEmpty())
+ if(!inited)
{
+ inited = true;
+
+ memset(map, 0, sizeof(map));
+
map[CRC::Okami] = GSC_Okami;
map[CRC::MetalGearSolid3] = GSC_MetalGearSolid3;
map[CRC::DBZBT2] = GSC_DBZBT2;
@@ -2129,14 +2145,14 @@ bool GSState::IsBadFrame(int& skip)
map[CRC::GodOfWar] = GSC_GodOfWar;
map[CRC::GodOfWar2] = GSC_GodOfWar;
map[CRC::GiTS] = GSC_GiTS;
+ map[CRC::Onimusha3] = GSC_Onimusha3;
}
- if(CAtlMap::CPair* pair = map.Lookup(m_game.title))
+ GetSkipCount gsc = map[m_game.title];
+
+ if(gsc && !gsc(fi, skip))
{
- if(!pair->m_value(fi, skip))
- {
- return false;
- }
+ return false;
}
if(skip == 0)
diff --git a/gsdx/GSState.h b/gsdx/GSState.h
index ed4be23..068dbe9 100644
--- a/gsdx/GSState.h
+++ b/gsdx/GSState.h
@@ -141,7 +141,7 @@ public:
GSRegBUSDIR* BUSDIR;
GSRegSIGLBLID* SIGLBLID;
- GIFPath* m_path;
+ GIFPath m_path[3];
GSLocalMemory m_mem;
GSDrawingEnvironment m_env;
GSDrawingContext* m_context;
diff --git a/gsdx/GSTextureCache.h b/gsdx/GSTextureCache.h
index a1b376b..fb8f624 100644
--- a/gsdx/GSTextureCache.h
+++ b/gsdx/GSTextureCache.h
@@ -107,12 +107,12 @@ public:
class GSTexture : public GSSurface
{
protected:
- bool GetDirtyRect(CRect& r)
+ bool GetDirtyRect(CRect& rr)
{
int w = 1 << m_TEX0.TW;
int h = 1 << m_TEX0.TH;
- r = CRect(0, 0, w, h);
+ CRect r(0, 0, w, h);
POSITION pos = m_dirty.GetHeadPosition();
@@ -172,7 +172,14 @@ public:
r |= m_valid;
}
- return !r.IsRectEmpty();
+ if(r.IsRectEmpty())
+ {
+ return false;
+ }
+
+ rr = r;
+
+ return true;
}
public:
diff --git a/gsdx/GSUtil.h b/gsdx/GSUtil.h
index d89739b..f95432e 100644
--- a/gsdx/GSUtil.h
+++ b/gsdx/GSUtil.h
@@ -67,65 +67,24 @@ public:
static bool IsRectInRectH(const CRect& inner, const CRect& outer);
static bool IsRectInRectV(const CRect& inner, const CRect& outer);
- static int EncodeFPSM(int psm)
+ static int EncodePSM(int psm)
{
switch(psm)
{
- case PSM_PSMCT32: return 0;
- case PSM_PSMCT24: return 1;
- case PSM_PSMCT16: return 2;
- case PSM_PSMCT16S: return 3;
- case PSM_PSMZ32: return 4;
- case PSM_PSMZ24: return 5;
- case PSM_PSMZ16: return 6;
- case PSM_PSMZ16S: return 7;
+ case PSM_PSMCT32:
+ case PSM_PSMZ32:
+ return 0;
+ case PSM_PSMCT24:
+ case PSM_PSMZ24:
+ return 1;
+ case PSM_PSMCT16:
+ case PSM_PSMCT16S:
+ case PSM_PSMZ16:
+ case PSM_PSMZ16S:
+ return 2;
+ default:
+ return 3;
}
-
- return -1;
}
-
- static int DecodeFPSM(int index)
- {
- switch(index)
- {
- case 0: return PSM_PSMCT32;
- case 1: return PSM_PSMCT24;
- case 2: return PSM_PSMCT16;
- case 3: return PSM_PSMCT16S;
- case 4: return PSM_PSMZ32;
- case 5: return PSM_PSMZ24;
- case 6: return PSM_PSMZ16;
- case 7: return PSM_PSMZ16S;
- }
-
- return -1;
- }
-
- static int EncodeZPSM(int psm)
- {
- switch(psm)
- {
- case PSM_PSMZ32: return 0;
- case PSM_PSMZ24: return 1;
- case PSM_PSMZ16: return 2;
- case PSM_PSMZ16S: return 3;
- }
-
- return -1;
- }
-
- static int DecodeZPSM(int index)
- {
- switch(index)
- {
- case 0: return PSM_PSMZ32;
- case 1: return PSM_PSMZ24;
- case 2: return PSM_PSMZ16;
- case 3: return PSM_PSMZ16S;
- }
-
- return -1;
- }
-
};
diff --git a/gsdx/GSVector.h b/gsdx/GSVector.h
index 96940d3..50f74ed 100644
--- a/gsdx/GSVector.h
+++ b/gsdx/GSVector.h
@@ -250,6 +250,78 @@ public:
#endif
+ #if _M_SSE >= 0x401
+
+ GSVector4i min_i8(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epi8(m, a));
+ }
+
+ GSVector4i max_i8(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epi8(m, a));
+ }
+
+ #endif
+
+ GSVector4i min_i16(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epi16(m, a));
+ }
+
+ GSVector4i max_i16(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epi16(m, a));
+ }
+
+ #if _M_SSE >= 0x401
+
+ GSVector4i min_i32(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epi32(m, a));
+ }
+
+ GSVector4i max_i32(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epi32(m, a));
+ }
+
+ #endif
+
+ GSVector4i min_u8(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epu8(m, a));
+ }
+
+ GSVector4i max_u8(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epu8(m, a));
+ }
+
+ #if _M_SSE >= 0x401
+
+ GSVector4i min_u16(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epu16(m, a));
+ }
+
+ GSVector4i max_u16(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epu16(m, a));
+ }
+
+ GSVector4i min_u32(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_min_epu32(m, a));
+ }
+
+ GSVector4i max_u32(const GSVector4i& a) const
+ {
+ return GSVector4i(_mm_max_epu32(m, a));
+ }
+
+ #endif
+
GSVector4i blend8(const GSVector4i& a, const GSVector4i& mask) const
{
return GSVector4i(_mm_blendv_epi8(m, a, mask));
diff --git a/gsdx/GSVertexHW.h b/gsdx/GSVertexHW.h
index 08a39a7..07c0738 100644
--- a/gsdx/GSVertexHW.h
+++ b/gsdx/GSVertexHW.h
@@ -57,7 +57,7 @@ __declspec(align(16)) union GSVertexHW10
union
{
- struct {WORD x, y; DWORD z;} p;
+ struct {union {struct {WORD x, y;}; DWORD xy;}; DWORD z;} p;
GIFRegXYZ XYZ;
};
diff --git a/gsdx/GSdx.cpp b/gsdx/GSdx.cpp
index 65d03c0..d0e201a 100644
--- a/gsdx/GSdx.cpp
+++ b/gsdx/GSdx.cpp
@@ -26,6 +26,7 @@
#include "GSRendererSW.h"
#include "GSRendererNull.h"
#include "GSSettingsDlg.h"
+#include "svnrev.h"
//
// Note!
@@ -139,7 +140,11 @@ EXPORT_C_(UINT32) PS2EgetLibType()
EXPORT_C_(char*) PS2EgetLibName()
{
- CString str = _T("GSdx");
+ CString str;
+
+ str.Format(_T("GSdx %d"), SVN_REV);
+
+ if(SVN_MODS) str += _T("m");
#if _M_AMD64
str += _T(" 64-bit");
diff --git a/gsdx/GSdx_vs2008.vcproj b/gsdx/GSdx_vs2008.vcproj
index bce6ac9..afad4cb 100644
--- a/gsdx/GSdx_vs2008.vcproj
+++ b/gsdx/GSdx_vs2008.vcproj
@@ -1781,6 +1781,10 @@
RelativePath=".\stdafx.h"
>
+
+
+
+